/src/vlc/include/vlc_codec.h
Line | Count | Source (jump to first uncovered line) |
1 | | /***************************************************************************** |
2 | | * vlc_codec.h: Definition of the decoder and encoder structures |
3 | | ***************************************************************************** |
4 | | * Copyright (C) 1999-2003 VLC authors and VideoLAN |
5 | | * |
6 | | * Authors: Gildas Bazin <gbazin@netcourrier.com> |
7 | | * |
8 | | * This program is free software; you can redistribute it and/or modify it |
9 | | * under the terms of the GNU Lesser General Public License as published by |
10 | | * the Free Software Foundation; either version 2.1 of the License, or |
11 | | * (at your option) any later version. |
12 | | * |
13 | | * This program is distributed in the hope that it will be useful, |
14 | | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 | | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
16 | | * GNU Lesser General Public License for more details. |
17 | | * |
18 | | * You should have received a copy of the GNU Lesser General Public License |
19 | | * along with this program; if not, write to the Free Software Foundation, |
20 | | * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. |
21 | | *****************************************************************************/ |
22 | | |
23 | | #ifndef VLC_CODEC_H |
24 | | #define VLC_CODEC_H 1 |
25 | | |
26 | | #include <assert.h> |
27 | | |
28 | | #include <vlc_block.h> |
29 | | #include <vlc_es.h> |
30 | | #include <vlc_window.h> |
31 | | #include <vlc_picture.h> |
32 | | #include <vlc_subpicture.h> |
33 | | |
34 | | /** |
35 | | * \defgroup decoder Decoder |
36 | | * \ingroup input |
37 | | * Audio, video and text decoders |
38 | | * @{ |
39 | | * |
40 | | * \file |
41 | | * Decoder and encoder modules interface |
42 | | */ |
43 | | |
44 | | typedef struct decoder_cc_desc_t decoder_cc_desc_t; |
45 | | |
46 | | struct decoder_owner_callbacks |
47 | | { |
48 | | union |
49 | | { |
50 | | struct |
51 | | { |
52 | | vlc_decoder_device * (*get_device)( decoder_t * ); |
53 | | int (*format_update)( decoder_t *, vlc_video_context * ); |
54 | | |
55 | | /* cf. decoder_NewPicture, can be called from any decoder thread */ |
56 | | picture_t* (*buffer_new)( decoder_t * ); |
57 | | /* cf.decoder_QueueVideo */ |
58 | | void (*queue)( decoder_t *, picture_t * ); |
59 | | /* cf.decoder_QueueCC */ |
60 | | void (*queue_cc)( decoder_t *, vlc_frame_t *, |
61 | | const decoder_cc_desc_t * ); |
62 | | |
63 | | /* Display date |
64 | | * cf. decoder_GetDisplayDate */ |
65 | | vlc_tick_t (*get_display_date)( decoder_t *, vlc_tick_t, vlc_tick_t ); |
66 | | /* Display rate |
67 | | * cf. decoder_GetDisplayRate */ |
68 | | float (*get_display_rate)( decoder_t * ); |
69 | | } video; |
70 | | struct |
71 | | { |
72 | | int (*format_update)( decoder_t * ); |
73 | | |
74 | | /* cf.decoder_QueueAudio */ |
75 | | void (*queue)( decoder_t *, vlc_frame_t * ); |
76 | | } audio; |
77 | | struct |
78 | | { |
79 | | /* cf. decoder_NewSubpicture */ |
80 | | subpicture_t* (*buffer_new)( decoder_t *, |
81 | | const subpicture_updater_t * ); |
82 | | |
83 | | /* cf.decoder_QueueSub */ |
84 | | void (*queue)( decoder_t *, subpicture_t *); |
85 | | } spu; |
86 | | }; |
87 | | |
88 | | /* Input attachments |
89 | | * cf. decoder_GetInputAttachments */ |
90 | | int (*get_attachments)( decoder_t *p_dec, |
91 | | input_attachment_t ***ppp_attachment, |
92 | | int *pi_attachment ); |
93 | | }; |
94 | | |
95 | | /* |
96 | | * BIG FAT WARNING : the code relies in the first 3 members of filter_t |
97 | | * and decoder_t to be the same, so if you have anything to add, do it |
98 | | * at the end of the structure. |
99 | | */ |
100 | | struct decoder_t |
101 | | { |
102 | | struct vlc_object_t obj; |
103 | | |
104 | | /* Module properties */ |
105 | | module_t * p_module; |
106 | | void *p_sys; |
107 | | |
108 | | /* Input format ie from demuxer (XXX: a lot of fields could be invalid), |
109 | | cannot be NULL */ |
110 | | const es_format_t *fmt_in; |
111 | | |
112 | | /* Output format of decoder/packetizer */ |
113 | | es_format_t fmt_out; |
114 | | |
115 | | /* Tell the decoder if it is allowed to drop frames */ |
116 | | bool b_frame_drop_allowed; |
117 | | |
118 | | /** |
119 | | * Number of extra (ie in addition to the DPB) picture buffers |
120 | | * needed for decoding. |
121 | | */ |
122 | | int i_extra_picture_buffers; |
123 | | |
124 | | union |
125 | | { |
126 | 67.4M | # define VLCDEC_SUCCESS VLC_SUCCESS |
127 | 30.9M | # define VLCDEC_ECRITICAL VLC_EGENERIC |
128 | 0 | # define VLCDEC_RELOAD (-100) |
129 | | /* This function is called to decode one packetized block. |
130 | | * |
131 | | * The module implementation will own the input block (p_block) and should |
132 | | * process and release it. Depending of the decoder type, the module should |
133 | | * send output frames/blocks via decoder_QueueVideo(), decoder_QueueAudio() |
134 | | * or decoder_QueueSub(). |
135 | | * |
136 | | * If frame is NULL, the decoder asks the module to drain itself. The |
137 | | * module should return all available output frames/block via the queue |
138 | | * functions. |
139 | | * |
140 | | * Return values can be: |
141 | | * VLCDEC_SUCCESS: pf_decode will be called again |
142 | | * VLCDEC_ECRITICAL: in case of critical error, pf_decode won't be called |
143 | | * again. |
144 | | * VLCDEC_RELOAD: Request that the decoder should be reloaded. The current |
145 | | * module will be unloaded. Reloading a module may cause a loss of frames. |
146 | | * When returning this status, the implementation shouldn't release or |
147 | | * modify the frame in argument (The same frame will be feed to the |
148 | | * next decoder module). |
149 | | */ |
150 | | int ( * pf_decode ) ( decoder_t *, vlc_frame_t *frame ); |
151 | | |
152 | | /* This function is called in a loop with the same pp_block argument until |
153 | | * it returns NULL. This allows a module implementation to return more than |
154 | | * one output blocks for one input block. |
155 | | * |
156 | | * pp_block or *pp_block can be NULL. |
157 | | * |
158 | | * If pp_block and *pp_block are not NULL, the module implementation will |
159 | | * own the input block (*pp_block) and should process and release it. The |
160 | | * module can also process a part of the block. In that case, it should |
161 | | * modify (*ppframe)->p_buffer/i_buffer accordingly and return a valid |
162 | | * output block. The module can also set *ppframe to NULL when the input |
163 | | * block is consumed. |
164 | | * |
165 | | * If ppframe is not NULL but *ppframe is NULL, a previous call of the pf |
166 | | * function has set the *ppframe to NULL. Here, the module can return new |
167 | | * output block for the same, already processed, input block (the |
168 | | * pf_packetize function will be called as long as the module return an |
169 | | * output block). |
170 | | * |
171 | | * When the pf function returns NULL, the next call to this function will |
172 | | * have a new a valid ppframe (if the packetizer is not drained). |
173 | | * |
174 | | * If ppframe is NULL, the packetizer asks the module to drain itself. In |
175 | | * that case, the module has to return all output frames available (the |
176 | | * pf_packetize function will be called as long as the module return an |
177 | | * output block). |
178 | | */ |
179 | | vlc_frame_t * ( * pf_packetize )( decoder_t *, vlc_frame_t **ppframe ); |
180 | | }; |
181 | | |
182 | | /* */ |
183 | | void ( * pf_flush ) ( decoder_t * ); |
184 | | |
185 | | /* Closed Caption (CEA 608/708) extraction. |
186 | | * If set, it *may* be called after pf_packetize returned data. It should |
187 | | * return CC for the pictures returned by the last pf_packetize call only, |
188 | | * channel bitmaps will be used to known which cc channel are present (but |
189 | | * globally, not necessary for the current packet. Video decoders should use |
190 | | * the decoder_QueueCc() function to pass closed captions. */ |
191 | | vlc_frame_t * ( * pf_get_cc ) ( decoder_t *, decoder_cc_desc_t * ); |
192 | | |
193 | | /* Meta data at codec level |
194 | | * The decoder owner set it back to NULL once it has retrieved what it needs. |
195 | | * The decoder owner is responsible of its release except when you overwrite it. |
196 | | */ |
197 | | vlc_meta_t *p_description; |
198 | | |
199 | | /* Private structure for the owner of the decoder */ |
200 | | const struct decoder_owner_callbacks *cbs; |
201 | | }; |
202 | | |
203 | | /* struct for packetizer get_cc polling/decoder queue_cc |
204 | | * until we have a proper metadata way */ |
205 | | struct decoder_cc_desc_t |
206 | | { |
207 | | uint8_t i_608_channels; /* 608 channels bitmap */ |
208 | | uint64_t i_708_channels; /* 708 */ |
209 | | int i_reorder_depth; /* reorder depth, -1 for no reorder, 0 for old P/B flag based */ |
210 | | }; |
211 | | |
212 | | /** |
213 | | * @} |
214 | | */ |
215 | | |
216 | | struct encoder_owner_callbacks |
217 | | { |
218 | | struct |
219 | | { |
220 | | vlc_decoder_device *(*get_device)( encoder_t * ); |
221 | | } video; |
222 | | }; |
223 | | |
224 | | /** |
225 | | * Creates/Updates the output decoder device. |
226 | | * |
227 | | * \note |
228 | | * This function is not reentrant. |
229 | | * |
230 | | * @return the held decoder device, NULL if none should be used |
231 | | */ |
232 | | VLC_API vlc_decoder_device *vlc_encoder_GetDecoderDevice( encoder_t * ); |
233 | | |
234 | | |
235 | | /** |
236 | | * \defgroup encoder Encoder |
237 | | * \ingroup sout |
238 | | * Audio, video and text encoders |
239 | | * @{ |
240 | | */ |
241 | | |
242 | | struct vlc_encoder_operations |
243 | | { |
244 | | void (*close)(encoder_t *); |
245 | | |
246 | | union { |
247 | | block_t * (*encode_video)(encoder_t *, picture_t *); |
248 | | block_t * (*encode_audio)(encoder_t *, block_t *); |
249 | | block_t * (*encode_sub)(encoder_t *, subpicture_t *); |
250 | | }; |
251 | | }; |
252 | | |
253 | | struct encoder_t |
254 | | { |
255 | | struct vlc_object_t obj; |
256 | | |
257 | | /* Module properties */ |
258 | | module_t * p_module; |
259 | | void *p_sys; |
260 | | |
261 | | /* Properties of the input data fed to the encoder */ |
262 | | es_format_t fmt_in; |
263 | | vlc_video_context *vctx_in; /* for video */ |
264 | | |
265 | | /* Properties of the output of the encoder */ |
266 | | es_format_t fmt_out; |
267 | | |
268 | | /* Common encoder options */ |
269 | | int i_threads; /* Number of threads to use during encoding */ |
270 | | int i_iframes; /* One I frame per i_iframes */ |
271 | | int i_bframes; /* One B frame per i_bframes */ |
272 | | int i_tolerance; /* Bitrate tolerance */ |
273 | | |
274 | | /* Encoder config */ |
275 | | config_chain_t *p_cfg; |
276 | | |
277 | | /* Private structure for the owner of the encoder */ |
278 | | const struct vlc_encoder_operations *ops; |
279 | | const struct encoder_owner_callbacks *cbs; |
280 | | }; |
281 | | |
282 | | VLC_API void vlc_encoder_Destroy(encoder_t *encoder); |
283 | | |
284 | | static inline block_t * |
285 | | vlc_encoder_EncodeVideo(encoder_t *encoder, picture_t *pic) |
286 | 0 | { |
287 | 0 | assert(encoder->fmt_in.i_cat == VIDEO_ES); |
288 | 0 | return encoder->ops->encode_video(encoder, pic); |
289 | 0 | } Unexecuted instantiation: decoder.c:vlc_encoder_EncodeVideo Unexecuted instantiation: es.c:vlc_encoder_EncodeVideo Unexecuted instantiation: flac.c:vlc_encoder_EncodeVideo Unexecuted instantiation: h26x.c:vlc_encoder_EncodeVideo Unexecuted instantiation: essetup.c:vlc_encoder_EncodeVideo Unexecuted instantiation: tta.c:vlc_encoder_EncodeVideo Unexecuted instantiation: encttml.c:vlc_encoder_EncodeVideo Unexecuted instantiation: substtml.c:vlc_encoder_EncodeVideo Unexecuted instantiation: ty.c:vlc_encoder_EncodeVideo Unexecuted instantiation: encvtt.c:vlc_encoder_EncodeVideo Unexecuted instantiation: webvtt.c:vlc_encoder_EncodeVideo Unexecuted instantiation: subsvtt.c:vlc_encoder_EncodeVideo Unexecuted instantiation: a52.c:vlc_encoder_EncodeVideo Unexecuted instantiation: copy.c:vlc_encoder_EncodeVideo Unexecuted instantiation: dts.c:vlc_encoder_EncodeVideo Unexecuted instantiation: h264.c:vlc_encoder_EncodeVideo Unexecuted instantiation: hxxx_common.c:vlc_encoder_EncodeVideo Unexecuted instantiation: hevc.c:vlc_encoder_EncodeVideo Unexecuted instantiation: mlp.c:vlc_encoder_EncodeVideo Unexecuted instantiation: mpeg4audio.c:vlc_encoder_EncodeVideo Unexecuted instantiation: mpeg4video.c:vlc_encoder_EncodeVideo Unexecuted instantiation: mpegaudio.c:vlc_encoder_EncodeVideo Unexecuted instantiation: mpegvideo.c:vlc_encoder_EncodeVideo Unexecuted instantiation: vc1.c:vlc_encoder_EncodeVideo Unexecuted instantiation: adpcm.c:vlc_encoder_EncodeVideo Unexecuted instantiation: aes3.c:vlc_encoder_EncodeVideo Unexecuted instantiation: araw.c:vlc_encoder_EncodeVideo Unexecuted instantiation: g711.c:vlc_encoder_EncodeVideo Unexecuted instantiation: lpcm.c:vlc_encoder_EncodeVideo Unexecuted instantiation: uleaddvaudio.c:vlc_encoder_EncodeVideo Unexecuted instantiation: rawvideo.c:vlc_encoder_EncodeVideo Unexecuted instantiation: cc.c:vlc_encoder_EncodeVideo Unexecuted instantiation: cea708.c:vlc_encoder_EncodeVideo Unexecuted instantiation: cvdsub.c:vlc_encoder_EncodeVideo Unexecuted instantiation: dvbsub.c:vlc_encoder_EncodeVideo Unexecuted instantiation: scte18.c:vlc_encoder_EncodeVideo Unexecuted instantiation: scte27.c:vlc_encoder_EncodeVideo Unexecuted instantiation: spudec.c:vlc_encoder_EncodeVideo Unexecuted instantiation: parse.c:vlc_encoder_EncodeVideo Unexecuted instantiation: stl.c:vlc_encoder_EncodeVideo Unexecuted instantiation: subsdec.c:vlc_encoder_EncodeVideo Unexecuted instantiation: subsusf.c:vlc_encoder_EncodeVideo Unexecuted instantiation: svcdsub.c:vlc_encoder_EncodeVideo Unexecuted instantiation: textst.c:vlc_encoder_EncodeVideo Unexecuted instantiation: substx3g.c:vlc_encoder_EncodeVideo Unexecuted instantiation: decoder_device.c:vlc_encoder_EncodeVideo Unexecuted instantiation: decoder_helpers.c:vlc_encoder_EncodeVideo Unexecuted instantiation: demux.c:vlc_encoder_EncodeVideo Unexecuted instantiation: player.c:vlc_encoder_EncodeVideo Unexecuted instantiation: resource.c:vlc_encoder_EncodeVideo Unexecuted instantiation: common.c:vlc_encoder_EncodeVideo Unexecuted instantiation: dec.c:vlc_encoder_EncodeVideo Unexecuted instantiation: filters.c:vlc_encoder_EncodeVideo Unexecuted instantiation: meter.c:vlc_encoder_EncodeVideo Unexecuted instantiation: output.c:vlc_encoder_EncodeVideo Unexecuted instantiation: volume.c:vlc_encoder_EncodeVideo Unexecuted instantiation: video_output.c:vlc_encoder_EncodeVideo Unexecuted instantiation: video_widgets.c:vlc_encoder_EncodeVideo Unexecuted instantiation: vout_subpictures.c:vlc_encoder_EncodeVideo Unexecuted instantiation: image.c:vlc_encoder_EncodeVideo Unexecuted instantiation: objects.c:vlc_encoder_EncodeVideo Unexecuted instantiation: filter.c:vlc_encoder_EncodeVideo Unexecuted instantiation: filter_chain.c:vlc_encoder_EncodeVideo Unexecuted instantiation: subpicture.c:vlc_encoder_EncodeVideo Unexecuted instantiation: stream_output.c:vlc_encoder_EncodeVideo Unexecuted instantiation: es_out.c:vlc_encoder_EncodeVideo Unexecuted instantiation: display.c:vlc_encoder_EncodeVideo |
290 | | |
291 | | static inline block_t * |
292 | | vlc_encoder_EncodeAudio(encoder_t *encoder, block_t *audio) |
293 | 0 | { |
294 | 0 | assert(encoder->fmt_in.i_cat == AUDIO_ES); |
295 | 0 | return encoder->ops->encode_audio(encoder, audio); |
296 | 0 | } Unexecuted instantiation: decoder.c:vlc_encoder_EncodeAudio Unexecuted instantiation: es.c:vlc_encoder_EncodeAudio Unexecuted instantiation: flac.c:vlc_encoder_EncodeAudio Unexecuted instantiation: h26x.c:vlc_encoder_EncodeAudio Unexecuted instantiation: essetup.c:vlc_encoder_EncodeAudio Unexecuted instantiation: tta.c:vlc_encoder_EncodeAudio Unexecuted instantiation: encttml.c:vlc_encoder_EncodeAudio Unexecuted instantiation: substtml.c:vlc_encoder_EncodeAudio Unexecuted instantiation: ty.c:vlc_encoder_EncodeAudio Unexecuted instantiation: encvtt.c:vlc_encoder_EncodeAudio Unexecuted instantiation: webvtt.c:vlc_encoder_EncodeAudio Unexecuted instantiation: subsvtt.c:vlc_encoder_EncodeAudio Unexecuted instantiation: a52.c:vlc_encoder_EncodeAudio Unexecuted instantiation: copy.c:vlc_encoder_EncodeAudio Unexecuted instantiation: dts.c:vlc_encoder_EncodeAudio Unexecuted instantiation: h264.c:vlc_encoder_EncodeAudio Unexecuted instantiation: hxxx_common.c:vlc_encoder_EncodeAudio Unexecuted instantiation: hevc.c:vlc_encoder_EncodeAudio Unexecuted instantiation: mlp.c:vlc_encoder_EncodeAudio Unexecuted instantiation: mpeg4audio.c:vlc_encoder_EncodeAudio Unexecuted instantiation: mpeg4video.c:vlc_encoder_EncodeAudio Unexecuted instantiation: mpegaudio.c:vlc_encoder_EncodeAudio Unexecuted instantiation: mpegvideo.c:vlc_encoder_EncodeAudio Unexecuted instantiation: vc1.c:vlc_encoder_EncodeAudio Unexecuted instantiation: adpcm.c:vlc_encoder_EncodeAudio Unexecuted instantiation: aes3.c:vlc_encoder_EncodeAudio Unexecuted instantiation: araw.c:vlc_encoder_EncodeAudio Unexecuted instantiation: g711.c:vlc_encoder_EncodeAudio Unexecuted instantiation: lpcm.c:vlc_encoder_EncodeAudio Unexecuted instantiation: uleaddvaudio.c:vlc_encoder_EncodeAudio Unexecuted instantiation: rawvideo.c:vlc_encoder_EncodeAudio Unexecuted instantiation: cc.c:vlc_encoder_EncodeAudio Unexecuted instantiation: cea708.c:vlc_encoder_EncodeAudio Unexecuted instantiation: cvdsub.c:vlc_encoder_EncodeAudio Unexecuted instantiation: dvbsub.c:vlc_encoder_EncodeAudio Unexecuted instantiation: scte18.c:vlc_encoder_EncodeAudio Unexecuted instantiation: scte27.c:vlc_encoder_EncodeAudio Unexecuted instantiation: spudec.c:vlc_encoder_EncodeAudio Unexecuted instantiation: parse.c:vlc_encoder_EncodeAudio Unexecuted instantiation: stl.c:vlc_encoder_EncodeAudio Unexecuted instantiation: subsdec.c:vlc_encoder_EncodeAudio Unexecuted instantiation: subsusf.c:vlc_encoder_EncodeAudio Unexecuted instantiation: svcdsub.c:vlc_encoder_EncodeAudio Unexecuted instantiation: textst.c:vlc_encoder_EncodeAudio Unexecuted instantiation: substx3g.c:vlc_encoder_EncodeAudio Unexecuted instantiation: decoder_device.c:vlc_encoder_EncodeAudio Unexecuted instantiation: decoder_helpers.c:vlc_encoder_EncodeAudio Unexecuted instantiation: demux.c:vlc_encoder_EncodeAudio Unexecuted instantiation: player.c:vlc_encoder_EncodeAudio Unexecuted instantiation: resource.c:vlc_encoder_EncodeAudio Unexecuted instantiation: common.c:vlc_encoder_EncodeAudio Unexecuted instantiation: dec.c:vlc_encoder_EncodeAudio Unexecuted instantiation: filters.c:vlc_encoder_EncodeAudio Unexecuted instantiation: meter.c:vlc_encoder_EncodeAudio Unexecuted instantiation: output.c:vlc_encoder_EncodeAudio Unexecuted instantiation: volume.c:vlc_encoder_EncodeAudio Unexecuted instantiation: video_output.c:vlc_encoder_EncodeAudio Unexecuted instantiation: video_widgets.c:vlc_encoder_EncodeAudio Unexecuted instantiation: vout_subpictures.c:vlc_encoder_EncodeAudio Unexecuted instantiation: image.c:vlc_encoder_EncodeAudio Unexecuted instantiation: objects.c:vlc_encoder_EncodeAudio Unexecuted instantiation: filter.c:vlc_encoder_EncodeAudio Unexecuted instantiation: filter_chain.c:vlc_encoder_EncodeAudio Unexecuted instantiation: subpicture.c:vlc_encoder_EncodeAudio Unexecuted instantiation: stream_output.c:vlc_encoder_EncodeAudio Unexecuted instantiation: es_out.c:vlc_encoder_EncodeAudio Unexecuted instantiation: display.c:vlc_encoder_EncodeAudio |
297 | | |
298 | | static inline block_t * |
299 | | vlc_encoder_EncodeSub(encoder_t *encoder, subpicture_t *sub) |
300 | 0 | { |
301 | 0 | assert(encoder->fmt_in.i_cat == SPU_ES); |
302 | 0 | return encoder->ops->encode_sub(encoder, sub); |
303 | 0 | } Unexecuted instantiation: decoder.c:vlc_encoder_EncodeSub Unexecuted instantiation: es.c:vlc_encoder_EncodeSub Unexecuted instantiation: flac.c:vlc_encoder_EncodeSub Unexecuted instantiation: h26x.c:vlc_encoder_EncodeSub Unexecuted instantiation: essetup.c:vlc_encoder_EncodeSub Unexecuted instantiation: tta.c:vlc_encoder_EncodeSub Unexecuted instantiation: encttml.c:vlc_encoder_EncodeSub Unexecuted instantiation: substtml.c:vlc_encoder_EncodeSub Unexecuted instantiation: ty.c:vlc_encoder_EncodeSub Unexecuted instantiation: encvtt.c:vlc_encoder_EncodeSub Unexecuted instantiation: webvtt.c:vlc_encoder_EncodeSub Unexecuted instantiation: subsvtt.c:vlc_encoder_EncodeSub Unexecuted instantiation: a52.c:vlc_encoder_EncodeSub Unexecuted instantiation: copy.c:vlc_encoder_EncodeSub Unexecuted instantiation: dts.c:vlc_encoder_EncodeSub Unexecuted instantiation: h264.c:vlc_encoder_EncodeSub Unexecuted instantiation: hxxx_common.c:vlc_encoder_EncodeSub Unexecuted instantiation: hevc.c:vlc_encoder_EncodeSub Unexecuted instantiation: mlp.c:vlc_encoder_EncodeSub Unexecuted instantiation: mpeg4audio.c:vlc_encoder_EncodeSub Unexecuted instantiation: mpeg4video.c:vlc_encoder_EncodeSub Unexecuted instantiation: mpegaudio.c:vlc_encoder_EncodeSub Unexecuted instantiation: mpegvideo.c:vlc_encoder_EncodeSub Unexecuted instantiation: vc1.c:vlc_encoder_EncodeSub Unexecuted instantiation: adpcm.c:vlc_encoder_EncodeSub Unexecuted instantiation: aes3.c:vlc_encoder_EncodeSub Unexecuted instantiation: araw.c:vlc_encoder_EncodeSub Unexecuted instantiation: g711.c:vlc_encoder_EncodeSub Unexecuted instantiation: lpcm.c:vlc_encoder_EncodeSub Unexecuted instantiation: uleaddvaudio.c:vlc_encoder_EncodeSub Unexecuted instantiation: rawvideo.c:vlc_encoder_EncodeSub Unexecuted instantiation: cc.c:vlc_encoder_EncodeSub Unexecuted instantiation: cea708.c:vlc_encoder_EncodeSub Unexecuted instantiation: cvdsub.c:vlc_encoder_EncodeSub Unexecuted instantiation: dvbsub.c:vlc_encoder_EncodeSub Unexecuted instantiation: scte18.c:vlc_encoder_EncodeSub Unexecuted instantiation: scte27.c:vlc_encoder_EncodeSub Unexecuted instantiation: spudec.c:vlc_encoder_EncodeSub Unexecuted instantiation: parse.c:vlc_encoder_EncodeSub Unexecuted instantiation: stl.c:vlc_encoder_EncodeSub Unexecuted instantiation: subsdec.c:vlc_encoder_EncodeSub Unexecuted instantiation: subsusf.c:vlc_encoder_EncodeSub Unexecuted instantiation: svcdsub.c:vlc_encoder_EncodeSub Unexecuted instantiation: textst.c:vlc_encoder_EncodeSub Unexecuted instantiation: substx3g.c:vlc_encoder_EncodeSub Unexecuted instantiation: decoder_device.c:vlc_encoder_EncodeSub Unexecuted instantiation: decoder_helpers.c:vlc_encoder_EncodeSub Unexecuted instantiation: demux.c:vlc_encoder_EncodeSub Unexecuted instantiation: player.c:vlc_encoder_EncodeSub Unexecuted instantiation: resource.c:vlc_encoder_EncodeSub Unexecuted instantiation: common.c:vlc_encoder_EncodeSub Unexecuted instantiation: dec.c:vlc_encoder_EncodeSub Unexecuted instantiation: filters.c:vlc_encoder_EncodeSub Unexecuted instantiation: meter.c:vlc_encoder_EncodeSub Unexecuted instantiation: output.c:vlc_encoder_EncodeSub Unexecuted instantiation: volume.c:vlc_encoder_EncodeSub Unexecuted instantiation: video_output.c:vlc_encoder_EncodeSub Unexecuted instantiation: video_widgets.c:vlc_encoder_EncodeSub Unexecuted instantiation: vout_subpictures.c:vlc_encoder_EncodeSub Unexecuted instantiation: image.c:vlc_encoder_EncodeSub Unexecuted instantiation: objects.c:vlc_encoder_EncodeSub Unexecuted instantiation: filter.c:vlc_encoder_EncodeSub Unexecuted instantiation: filter_chain.c:vlc_encoder_EncodeSub Unexecuted instantiation: subpicture.c:vlc_encoder_EncodeSub Unexecuted instantiation: stream_output.c:vlc_encoder_EncodeSub Unexecuted instantiation: es_out.c:vlc_encoder_EncodeSub Unexecuted instantiation: display.c:vlc_encoder_EncodeSub |
304 | | |
305 | | /** |
306 | | * @} |
307 | | * |
308 | | * \ingroup decoder |
309 | | * @{ |
310 | | */ |
311 | | |
312 | | /** |
313 | | * Creates/Updates the output decoder device. |
314 | | * |
315 | | * This function notifies the video output pipeline of a new video output |
316 | | * format (fmt_out.video). If there was no decoder device so far or a new |
317 | | * decoder device is required, a new decoder device will be set up. |
318 | | * decoder_UpdateVideoOutput() can then be used. |
319 | | * |
320 | | * If the format is unchanged, this function has no effects and returns zero. |
321 | | * |
322 | | * \param dec the decoder object |
323 | | * |
324 | | * \note |
325 | | * This function is not reentrant. |
326 | | * |
327 | | * @return the received of the held decoder device, NULL not to get one |
328 | | */ |
329 | | static inline vlc_decoder_device * decoder_GetDecoderDevice( decoder_t *dec ) |
330 | 0 | { |
331 | 0 | vlc_assert( dec->fmt_in->i_cat == VIDEO_ES && dec->cbs != NULL ); |
332 | 0 | if ( unlikely(dec->fmt_in->i_cat != VIDEO_ES || dec->cbs == NULL ) ) |
333 | 0 | return NULL; |
334 | 0 |
|
335 | 0 | vlc_assert(dec->cbs->video.get_device != NULL); |
336 | 0 | return dec->cbs->video.get_device( dec ); |
337 | 0 | } Unexecuted instantiation: decoder.c:decoder_GetDecoderDevice Unexecuted instantiation: es.c:decoder_GetDecoderDevice Unexecuted instantiation: flac.c:decoder_GetDecoderDevice Unexecuted instantiation: h26x.c:decoder_GetDecoderDevice Unexecuted instantiation: essetup.c:decoder_GetDecoderDevice Unexecuted instantiation: tta.c:decoder_GetDecoderDevice Unexecuted instantiation: encttml.c:decoder_GetDecoderDevice Unexecuted instantiation: substtml.c:decoder_GetDecoderDevice Unexecuted instantiation: ty.c:decoder_GetDecoderDevice Unexecuted instantiation: encvtt.c:decoder_GetDecoderDevice Unexecuted instantiation: webvtt.c:decoder_GetDecoderDevice Unexecuted instantiation: subsvtt.c:decoder_GetDecoderDevice Unexecuted instantiation: a52.c:decoder_GetDecoderDevice Unexecuted instantiation: copy.c:decoder_GetDecoderDevice Unexecuted instantiation: dts.c:decoder_GetDecoderDevice Unexecuted instantiation: h264.c:decoder_GetDecoderDevice Unexecuted instantiation: hxxx_common.c:decoder_GetDecoderDevice Unexecuted instantiation: hevc.c:decoder_GetDecoderDevice Unexecuted instantiation: mlp.c:decoder_GetDecoderDevice Unexecuted instantiation: mpeg4audio.c:decoder_GetDecoderDevice Unexecuted instantiation: mpeg4video.c:decoder_GetDecoderDevice Unexecuted instantiation: mpegaudio.c:decoder_GetDecoderDevice Unexecuted instantiation: mpegvideo.c:decoder_GetDecoderDevice Unexecuted instantiation: vc1.c:decoder_GetDecoderDevice Unexecuted instantiation: adpcm.c:decoder_GetDecoderDevice Unexecuted instantiation: aes3.c:decoder_GetDecoderDevice Unexecuted instantiation: araw.c:decoder_GetDecoderDevice Unexecuted instantiation: g711.c:decoder_GetDecoderDevice Unexecuted instantiation: lpcm.c:decoder_GetDecoderDevice Unexecuted instantiation: uleaddvaudio.c:decoder_GetDecoderDevice Unexecuted instantiation: rawvideo.c:decoder_GetDecoderDevice Unexecuted instantiation: cc.c:decoder_GetDecoderDevice Unexecuted instantiation: cea708.c:decoder_GetDecoderDevice Unexecuted instantiation: cvdsub.c:decoder_GetDecoderDevice Unexecuted instantiation: dvbsub.c:decoder_GetDecoderDevice Unexecuted instantiation: scte18.c:decoder_GetDecoderDevice Unexecuted instantiation: scte27.c:decoder_GetDecoderDevice Unexecuted instantiation: spudec.c:decoder_GetDecoderDevice Unexecuted instantiation: parse.c:decoder_GetDecoderDevice Unexecuted instantiation: stl.c:decoder_GetDecoderDevice Unexecuted instantiation: subsdec.c:decoder_GetDecoderDevice Unexecuted instantiation: subsusf.c:decoder_GetDecoderDevice Unexecuted instantiation: svcdsub.c:decoder_GetDecoderDevice Unexecuted instantiation: textst.c:decoder_GetDecoderDevice Unexecuted instantiation: substx3g.c:decoder_GetDecoderDevice Unexecuted instantiation: decoder_device.c:decoder_GetDecoderDevice Unexecuted instantiation: decoder_helpers.c:decoder_GetDecoderDevice Unexecuted instantiation: demux.c:decoder_GetDecoderDevice Unexecuted instantiation: player.c:decoder_GetDecoderDevice Unexecuted instantiation: resource.c:decoder_GetDecoderDevice Unexecuted instantiation: common.c:decoder_GetDecoderDevice Unexecuted instantiation: dec.c:decoder_GetDecoderDevice Unexecuted instantiation: filters.c:decoder_GetDecoderDevice Unexecuted instantiation: meter.c:decoder_GetDecoderDevice Unexecuted instantiation: output.c:decoder_GetDecoderDevice Unexecuted instantiation: volume.c:decoder_GetDecoderDevice Unexecuted instantiation: video_output.c:decoder_GetDecoderDevice Unexecuted instantiation: video_widgets.c:decoder_GetDecoderDevice Unexecuted instantiation: vout_subpictures.c:decoder_GetDecoderDevice Unexecuted instantiation: image.c:decoder_GetDecoderDevice Unexecuted instantiation: objects.c:decoder_GetDecoderDevice Unexecuted instantiation: filter.c:decoder_GetDecoderDevice Unexecuted instantiation: filter_chain.c:decoder_GetDecoderDevice Unexecuted instantiation: subpicture.c:decoder_GetDecoderDevice Unexecuted instantiation: stream_output.c:decoder_GetDecoderDevice Unexecuted instantiation: es_out.c:decoder_GetDecoderDevice Unexecuted instantiation: display.c:decoder_GetDecoderDevice |
338 | | |
339 | | /** |
340 | | * Creates/Updates the rest of the video output pipeline. |
341 | | * |
342 | | * After a call to decoder_GetDecoderDevice() this function notifies the |
343 | | * video output pipeline of a new video output format (fmt_out.video). If there |
344 | | * was no video output from the decoder so far, a new decoder video output will |
345 | | * be set up. decoder_NewPicture() can then be used to allocate picture buffers. |
346 | | * |
347 | | * If the format is unchanged, this function has no effects and returns zero. |
348 | | * |
349 | | * \note |
350 | | * This function is not reentrant. |
351 | | * |
352 | | * @return 0 if the video output was set up successfully, -1 otherwise. |
353 | | */ |
354 | | VLC_API int decoder_UpdateVideoOutput( decoder_t *dec, vlc_video_context *vctx_out ); |
355 | | |
356 | | /** |
357 | | * Updates the video output format. |
358 | | * |
359 | | * This function notifies the video output pipeline of a new video output |
360 | | * format (fmt_out.video). If there was no video output from the decoder so far |
361 | | * or if the video output format has changed, a new video output will be set |
362 | | * up. decoder_NewPicture() can then be used to allocate picture buffers. |
363 | | * |
364 | | * If the format is unchanged, this function has no effects and returns zero. |
365 | | * |
366 | | * \note |
367 | | * This function is not reentrant. |
368 | | * |
369 | | * @return 0 if the video output was set up successfully, -1 otherwise. |
370 | | */ |
371 | | VLC_API int decoder_UpdateVideoFormat( decoder_t *dec ); |
372 | | |
373 | | /** |
374 | | * Allocates an output picture buffer. |
375 | | * |
376 | | * This function pulls an output picture buffer for the decoder from the |
377 | | * buffer pool of the video output. The picture must be released with |
378 | | * picture_Release() when it is no longer referenced by the decoder. |
379 | | * |
380 | | * \note |
381 | | * This function is reentrant. However, decoder_UpdateVideoFormat() cannot be |
382 | | * used concurrently; the caller is responsible for serialization. |
383 | | * |
384 | | * \warning |
385 | | * The behaviour is undefined if decoder_UpdateVideoFormat() was not called or |
386 | | * if the last call returned an error. |
387 | | * |
388 | | * \return a picture buffer on success, NULL on error |
389 | | */ |
390 | | VLC_API picture_t *decoder_NewPicture( decoder_t *dec ); |
391 | | |
392 | | /** |
393 | | * Initialize a decoder structure before creating the decoder. |
394 | | * |
395 | | * To be used by decoder owners. |
396 | | * By default frame drop is not allowed. |
397 | | * |
398 | | * @param dec the decoder to be initialized |
399 | | * @param fmt_in the es_format_t where the decoder owner stores the input ES format |
400 | | * @param fmt the input es_format_t used to initialize the decoder |
401 | | */ |
402 | | VLC_API void decoder_Init( decoder_t *dec, es_format_t *fmt_in, const es_format_t *fmt ); |
403 | | |
404 | | /** |
405 | | * Load a decoder or packetizer module |
406 | | * |
407 | | * To be used by decoder owners. |
408 | | * @param dec a valid and initialized decoder |
409 | | * @packetizer true if the decoder_t is a packetizer |
410 | | * @use_varoption if true, will try to load the decoder from the corresponding |
411 | | * option (if set by the user) |
412 | | */ |
413 | | VLC_API int decoder_LoadModule(decoder_t *dec, bool packetizer, |
414 | | bool use_varoption); |
415 | | |
416 | | /** |
417 | | * Destroy a decoder and reset the structure. |
418 | | * |
419 | | * To be used by decoder owners. |
420 | | */ |
421 | | VLC_API void decoder_Destroy( decoder_t *p_dec ); |
422 | | |
423 | | /** |
424 | | * Unload a decoder module and reset the input/output formats. |
425 | | * |
426 | | * To be used by decoder owners. |
427 | | */ |
428 | | VLC_API void decoder_Clean( decoder_t *p_dec ); |
429 | | |
430 | | /** |
431 | | * This function queues a single picture to the video output. |
432 | | * |
433 | | * \note |
434 | | * The caller doesn't own the picture anymore after this call (even in case of |
435 | | * error). |
436 | | * FIXME: input_DecoderFrameNext won't work if a module use this function. |
437 | | */ |
438 | | static inline void decoder_QueueVideo( decoder_t *dec, picture_t *p_pic ) |
439 | 573 | { |
440 | 573 | vlc_assert( dec->fmt_in->i_cat == VIDEO_ES && dec->cbs != NULL ); |
441 | 573 | vlc_assert( !picture_HasChainedPics( p_pic ) ); |
442 | 573 | vlc_assert( dec->cbs->video.queue != NULL ); |
443 | 573 | dec->cbs->video.queue( dec, p_pic ); |
444 | 573 | } Unexecuted instantiation: decoder.c:decoder_QueueVideo Unexecuted instantiation: es.c:decoder_QueueVideo Unexecuted instantiation: flac.c:decoder_QueueVideo Unexecuted instantiation: h26x.c:decoder_QueueVideo Unexecuted instantiation: essetup.c:decoder_QueueVideo Unexecuted instantiation: tta.c:decoder_QueueVideo Unexecuted instantiation: encttml.c:decoder_QueueVideo Unexecuted instantiation: substtml.c:decoder_QueueVideo Unexecuted instantiation: ty.c:decoder_QueueVideo Unexecuted instantiation: encvtt.c:decoder_QueueVideo Unexecuted instantiation: webvtt.c:decoder_QueueVideo Unexecuted instantiation: subsvtt.c:decoder_QueueVideo Unexecuted instantiation: a52.c:decoder_QueueVideo Unexecuted instantiation: copy.c:decoder_QueueVideo Unexecuted instantiation: dts.c:decoder_QueueVideo Unexecuted instantiation: h264.c:decoder_QueueVideo Unexecuted instantiation: hxxx_common.c:decoder_QueueVideo Unexecuted instantiation: hevc.c:decoder_QueueVideo Unexecuted instantiation: mlp.c:decoder_QueueVideo Unexecuted instantiation: mpeg4audio.c:decoder_QueueVideo Unexecuted instantiation: mpeg4video.c:decoder_QueueVideo Unexecuted instantiation: mpegaudio.c:decoder_QueueVideo Unexecuted instantiation: mpegvideo.c:decoder_QueueVideo Unexecuted instantiation: vc1.c:decoder_QueueVideo Unexecuted instantiation: adpcm.c:decoder_QueueVideo Unexecuted instantiation: aes3.c:decoder_QueueVideo Unexecuted instantiation: araw.c:decoder_QueueVideo Unexecuted instantiation: g711.c:decoder_QueueVideo Unexecuted instantiation: lpcm.c:decoder_QueueVideo Unexecuted instantiation: uleaddvaudio.c:decoder_QueueVideo rawvideo.c:decoder_QueueVideo Line | Count | Source | 439 | 573 | { | 440 | 573 | vlc_assert( dec->fmt_in->i_cat == VIDEO_ES && dec->cbs != NULL ); | 441 | 573 | vlc_assert( !picture_HasChainedPics( p_pic ) ); | 442 | 573 | vlc_assert( dec->cbs->video.queue != NULL ); | 443 | 573 | dec->cbs->video.queue( dec, p_pic ); | 444 | 573 | } |
Unexecuted instantiation: cc.c:decoder_QueueVideo Unexecuted instantiation: cea708.c:decoder_QueueVideo Unexecuted instantiation: cvdsub.c:decoder_QueueVideo Unexecuted instantiation: dvbsub.c:decoder_QueueVideo Unexecuted instantiation: scte18.c:decoder_QueueVideo Unexecuted instantiation: scte27.c:decoder_QueueVideo Unexecuted instantiation: spudec.c:decoder_QueueVideo Unexecuted instantiation: parse.c:decoder_QueueVideo Unexecuted instantiation: stl.c:decoder_QueueVideo Unexecuted instantiation: subsdec.c:decoder_QueueVideo Unexecuted instantiation: subsusf.c:decoder_QueueVideo Unexecuted instantiation: svcdsub.c:decoder_QueueVideo Unexecuted instantiation: textst.c:decoder_QueueVideo Unexecuted instantiation: substx3g.c:decoder_QueueVideo Unexecuted instantiation: decoder_device.c:decoder_QueueVideo Unexecuted instantiation: decoder_helpers.c:decoder_QueueVideo Unexecuted instantiation: demux.c:decoder_QueueVideo Unexecuted instantiation: player.c:decoder_QueueVideo Unexecuted instantiation: resource.c:decoder_QueueVideo Unexecuted instantiation: common.c:decoder_QueueVideo Unexecuted instantiation: dec.c:decoder_QueueVideo Unexecuted instantiation: filters.c:decoder_QueueVideo Unexecuted instantiation: meter.c:decoder_QueueVideo Unexecuted instantiation: output.c:decoder_QueueVideo Unexecuted instantiation: volume.c:decoder_QueueVideo Unexecuted instantiation: video_output.c:decoder_QueueVideo Unexecuted instantiation: video_widgets.c:decoder_QueueVideo Unexecuted instantiation: vout_subpictures.c:decoder_QueueVideo Unexecuted instantiation: image.c:decoder_QueueVideo Unexecuted instantiation: objects.c:decoder_QueueVideo Unexecuted instantiation: filter.c:decoder_QueueVideo Unexecuted instantiation: filter_chain.c:decoder_QueueVideo Unexecuted instantiation: subpicture.c:decoder_QueueVideo Unexecuted instantiation: stream_output.c:decoder_QueueVideo Unexecuted instantiation: es_out.c:decoder_QueueVideo Unexecuted instantiation: display.c:decoder_QueueVideo |
445 | | |
446 | | /** |
447 | | * This function queues the Closed Captions |
448 | | * |
449 | | * \param dec the decoder object |
450 | | * \param p_cc the closed-caption to queue |
451 | | * \param p_desc decoder_cc_desc_t description structure |
452 | | */ |
453 | | static inline void decoder_QueueCc( decoder_t *dec, vlc_frame_t *p_cc, |
454 | | const decoder_cc_desc_t *p_desc ) |
455 | 0 | { |
456 | 0 | vlc_assert( dec->fmt_in->i_cat == VIDEO_ES && dec->cbs != NULL ); |
457 | 0 |
|
458 | 0 | if( dec->cbs->video.queue_cc == NULL ) |
459 | 0 | block_Release( p_cc ); |
460 | 0 | else |
461 | 0 | dec->cbs->video.queue_cc( dec, p_cc, p_desc ); |
462 | 0 | } Unexecuted instantiation: decoder.c:decoder_QueueCc Unexecuted instantiation: es.c:decoder_QueueCc Unexecuted instantiation: flac.c:decoder_QueueCc Unexecuted instantiation: h26x.c:decoder_QueueCc Unexecuted instantiation: essetup.c:decoder_QueueCc Unexecuted instantiation: tta.c:decoder_QueueCc Unexecuted instantiation: encttml.c:decoder_QueueCc Unexecuted instantiation: substtml.c:decoder_QueueCc Unexecuted instantiation: ty.c:decoder_QueueCc Unexecuted instantiation: encvtt.c:decoder_QueueCc Unexecuted instantiation: webvtt.c:decoder_QueueCc Unexecuted instantiation: subsvtt.c:decoder_QueueCc Unexecuted instantiation: a52.c:decoder_QueueCc Unexecuted instantiation: copy.c:decoder_QueueCc Unexecuted instantiation: dts.c:decoder_QueueCc Unexecuted instantiation: h264.c:decoder_QueueCc Unexecuted instantiation: hxxx_common.c:decoder_QueueCc Unexecuted instantiation: hevc.c:decoder_QueueCc Unexecuted instantiation: mlp.c:decoder_QueueCc Unexecuted instantiation: mpeg4audio.c:decoder_QueueCc Unexecuted instantiation: mpeg4video.c:decoder_QueueCc Unexecuted instantiation: mpegaudio.c:decoder_QueueCc Unexecuted instantiation: mpegvideo.c:decoder_QueueCc Unexecuted instantiation: vc1.c:decoder_QueueCc Unexecuted instantiation: adpcm.c:decoder_QueueCc Unexecuted instantiation: aes3.c:decoder_QueueCc Unexecuted instantiation: araw.c:decoder_QueueCc Unexecuted instantiation: g711.c:decoder_QueueCc Unexecuted instantiation: lpcm.c:decoder_QueueCc Unexecuted instantiation: uleaddvaudio.c:decoder_QueueCc Unexecuted instantiation: rawvideo.c:decoder_QueueCc Unexecuted instantiation: cc.c:decoder_QueueCc Unexecuted instantiation: cea708.c:decoder_QueueCc Unexecuted instantiation: cvdsub.c:decoder_QueueCc Unexecuted instantiation: dvbsub.c:decoder_QueueCc Unexecuted instantiation: scte18.c:decoder_QueueCc Unexecuted instantiation: scte27.c:decoder_QueueCc Unexecuted instantiation: spudec.c:decoder_QueueCc Unexecuted instantiation: parse.c:decoder_QueueCc Unexecuted instantiation: stl.c:decoder_QueueCc Unexecuted instantiation: subsdec.c:decoder_QueueCc Unexecuted instantiation: subsusf.c:decoder_QueueCc Unexecuted instantiation: svcdsub.c:decoder_QueueCc Unexecuted instantiation: textst.c:decoder_QueueCc Unexecuted instantiation: substx3g.c:decoder_QueueCc Unexecuted instantiation: decoder_device.c:decoder_QueueCc Unexecuted instantiation: decoder_helpers.c:decoder_QueueCc Unexecuted instantiation: demux.c:decoder_QueueCc Unexecuted instantiation: player.c:decoder_QueueCc Unexecuted instantiation: resource.c:decoder_QueueCc Unexecuted instantiation: common.c:decoder_QueueCc Unexecuted instantiation: dec.c:decoder_QueueCc Unexecuted instantiation: filters.c:decoder_QueueCc Unexecuted instantiation: meter.c:decoder_QueueCc Unexecuted instantiation: output.c:decoder_QueueCc Unexecuted instantiation: volume.c:decoder_QueueCc Unexecuted instantiation: video_output.c:decoder_QueueCc Unexecuted instantiation: video_widgets.c:decoder_QueueCc Unexecuted instantiation: vout_subpictures.c:decoder_QueueCc Unexecuted instantiation: image.c:decoder_QueueCc Unexecuted instantiation: objects.c:decoder_QueueCc Unexecuted instantiation: filter.c:decoder_QueueCc Unexecuted instantiation: filter_chain.c:decoder_QueueCc Unexecuted instantiation: subpicture.c:decoder_QueueCc Unexecuted instantiation: stream_output.c:decoder_QueueCc Unexecuted instantiation: es_out.c:decoder_QueueCc Unexecuted instantiation: display.c:decoder_QueueCc |
463 | | |
464 | | /** |
465 | | * This function queues a single audio block to the audio output. |
466 | | * |
467 | | * \note |
468 | | * The caller doesn't own the audio block anymore after this call (even in case |
469 | | * of error). |
470 | | */ |
471 | | static inline void decoder_QueueAudio( decoder_t *dec, vlc_frame_t *p_aout_buf ) |
472 | 0 | { |
473 | 0 | vlc_assert( dec->fmt_in->i_cat == AUDIO_ES && dec->cbs != NULL ); |
474 | 0 | vlc_assert( p_aout_buf->p_next == NULL ); |
475 | 0 | vlc_assert( dec->cbs->audio.queue != NULL ); |
476 | 0 | dec->cbs->audio.queue( dec, p_aout_buf ); |
477 | 0 | } Unexecuted instantiation: decoder.c:decoder_QueueAudio Unexecuted instantiation: es.c:decoder_QueueAudio Unexecuted instantiation: flac.c:decoder_QueueAudio Unexecuted instantiation: h26x.c:decoder_QueueAudio Unexecuted instantiation: essetup.c:decoder_QueueAudio Unexecuted instantiation: tta.c:decoder_QueueAudio Unexecuted instantiation: encttml.c:decoder_QueueAudio Unexecuted instantiation: substtml.c:decoder_QueueAudio Unexecuted instantiation: ty.c:decoder_QueueAudio Unexecuted instantiation: encvtt.c:decoder_QueueAudio Unexecuted instantiation: webvtt.c:decoder_QueueAudio Unexecuted instantiation: subsvtt.c:decoder_QueueAudio Unexecuted instantiation: a52.c:decoder_QueueAudio Unexecuted instantiation: copy.c:decoder_QueueAudio Unexecuted instantiation: dts.c:decoder_QueueAudio Unexecuted instantiation: h264.c:decoder_QueueAudio Unexecuted instantiation: hxxx_common.c:decoder_QueueAudio Unexecuted instantiation: hevc.c:decoder_QueueAudio Unexecuted instantiation: mlp.c:decoder_QueueAudio Unexecuted instantiation: mpeg4audio.c:decoder_QueueAudio Unexecuted instantiation: mpeg4video.c:decoder_QueueAudio Unexecuted instantiation: mpegaudio.c:decoder_QueueAudio Unexecuted instantiation: mpegvideo.c:decoder_QueueAudio Unexecuted instantiation: vc1.c:decoder_QueueAudio Unexecuted instantiation: adpcm.c:decoder_QueueAudio Unexecuted instantiation: aes3.c:decoder_QueueAudio Unexecuted instantiation: araw.c:decoder_QueueAudio Unexecuted instantiation: g711.c:decoder_QueueAudio Unexecuted instantiation: lpcm.c:decoder_QueueAudio Unexecuted instantiation: uleaddvaudio.c:decoder_QueueAudio Unexecuted instantiation: rawvideo.c:decoder_QueueAudio Unexecuted instantiation: cc.c:decoder_QueueAudio Unexecuted instantiation: cea708.c:decoder_QueueAudio Unexecuted instantiation: cvdsub.c:decoder_QueueAudio Unexecuted instantiation: dvbsub.c:decoder_QueueAudio Unexecuted instantiation: scte18.c:decoder_QueueAudio Unexecuted instantiation: scte27.c:decoder_QueueAudio Unexecuted instantiation: spudec.c:decoder_QueueAudio Unexecuted instantiation: parse.c:decoder_QueueAudio Unexecuted instantiation: stl.c:decoder_QueueAudio Unexecuted instantiation: subsdec.c:decoder_QueueAudio Unexecuted instantiation: subsusf.c:decoder_QueueAudio Unexecuted instantiation: svcdsub.c:decoder_QueueAudio Unexecuted instantiation: textst.c:decoder_QueueAudio Unexecuted instantiation: substx3g.c:decoder_QueueAudio Unexecuted instantiation: decoder_device.c:decoder_QueueAudio Unexecuted instantiation: decoder_helpers.c:decoder_QueueAudio Unexecuted instantiation: demux.c:decoder_QueueAudio Unexecuted instantiation: player.c:decoder_QueueAudio Unexecuted instantiation: resource.c:decoder_QueueAudio Unexecuted instantiation: common.c:decoder_QueueAudio Unexecuted instantiation: dec.c:decoder_QueueAudio Unexecuted instantiation: filters.c:decoder_QueueAudio Unexecuted instantiation: meter.c:decoder_QueueAudio Unexecuted instantiation: output.c:decoder_QueueAudio Unexecuted instantiation: volume.c:decoder_QueueAudio Unexecuted instantiation: video_output.c:decoder_QueueAudio Unexecuted instantiation: video_widgets.c:decoder_QueueAudio Unexecuted instantiation: vout_subpictures.c:decoder_QueueAudio Unexecuted instantiation: image.c:decoder_QueueAudio Unexecuted instantiation: objects.c:decoder_QueueAudio Unexecuted instantiation: filter.c:decoder_QueueAudio Unexecuted instantiation: filter_chain.c:decoder_QueueAudio Unexecuted instantiation: subpicture.c:decoder_QueueAudio Unexecuted instantiation: stream_output.c:decoder_QueueAudio Unexecuted instantiation: es_out.c:decoder_QueueAudio Unexecuted instantiation: display.c:decoder_QueueAudio |
478 | | |
479 | | /** |
480 | | * This function queues a single subtitle to the video output. |
481 | | * |
482 | | * \note |
483 | | * The caller doesn't own the subtitle anymore after this call (even in case of |
484 | | * error). |
485 | | */ |
486 | | static inline void decoder_QueueSub( decoder_t *dec, subpicture_t *p_spu ) |
487 | 121k | { |
488 | 121k | vlc_assert( dec->fmt_in->i_cat == SPU_ES && dec->cbs != NULL ); |
489 | 121k | vlc_assert( p_spu->p_next == NULL ); |
490 | 121k | vlc_assert( dec->cbs->spu.queue != NULL ); |
491 | 121k | dec->cbs->spu.queue( dec, p_spu ); |
492 | 121k | } Unexecuted instantiation: decoder.c:decoder_QueueSub Unexecuted instantiation: es.c:decoder_QueueSub Unexecuted instantiation: flac.c:decoder_QueueSub Unexecuted instantiation: h26x.c:decoder_QueueSub Unexecuted instantiation: essetup.c:decoder_QueueSub Unexecuted instantiation: tta.c:decoder_QueueSub Unexecuted instantiation: encttml.c:decoder_QueueSub substtml.c:decoder_QueueSub Line | Count | Source | 487 | 9.63k | { | 488 | 9.63k | vlc_assert( dec->fmt_in->i_cat == SPU_ES && dec->cbs != NULL ); | 489 | 9.63k | vlc_assert( p_spu->p_next == NULL ); | 490 | 9.63k | vlc_assert( dec->cbs->spu.queue != NULL ); | 491 | 9.63k | dec->cbs->spu.queue( dec, p_spu ); | 492 | 9.63k | } |
Unexecuted instantiation: ty.c:decoder_QueueSub Unexecuted instantiation: encvtt.c:decoder_QueueSub Unexecuted instantiation: webvtt.c:decoder_QueueSub subsvtt.c:decoder_QueueSub Line | Count | Source | 487 | 10.9k | { | 488 | 10.9k | vlc_assert( dec->fmt_in->i_cat == SPU_ES && dec->cbs != NULL ); | 489 | 10.9k | vlc_assert( p_spu->p_next == NULL ); | 490 | 10.9k | vlc_assert( dec->cbs->spu.queue != NULL ); | 491 | 10.9k | dec->cbs->spu.queue( dec, p_spu ); | 492 | 10.9k | } |
Unexecuted instantiation: a52.c:decoder_QueueSub Unexecuted instantiation: copy.c:decoder_QueueSub Unexecuted instantiation: dts.c:decoder_QueueSub Unexecuted instantiation: h264.c:decoder_QueueSub Unexecuted instantiation: hxxx_common.c:decoder_QueueSub Unexecuted instantiation: hevc.c:decoder_QueueSub Unexecuted instantiation: mlp.c:decoder_QueueSub Unexecuted instantiation: mpeg4audio.c:decoder_QueueSub Unexecuted instantiation: mpeg4video.c:decoder_QueueSub Unexecuted instantiation: mpegaudio.c:decoder_QueueSub Unexecuted instantiation: mpegvideo.c:decoder_QueueSub Unexecuted instantiation: vc1.c:decoder_QueueSub Unexecuted instantiation: adpcm.c:decoder_QueueSub Unexecuted instantiation: aes3.c:decoder_QueueSub Unexecuted instantiation: araw.c:decoder_QueueSub Unexecuted instantiation: g711.c:decoder_QueueSub Unexecuted instantiation: lpcm.c:decoder_QueueSub Unexecuted instantiation: uleaddvaudio.c:decoder_QueueSub Unexecuted instantiation: rawvideo.c:decoder_QueueSub Line | Count | Source | 487 | 1.55k | { | 488 | 1.55k | vlc_assert( dec->fmt_in->i_cat == SPU_ES && dec->cbs != NULL ); | 489 | 1.55k | vlc_assert( p_spu->p_next == NULL ); | 490 | 1.55k | vlc_assert( dec->cbs->spu.queue != NULL ); | 491 | 1.55k | dec->cbs->spu.queue( dec, p_spu ); | 492 | 1.55k | } |
Unexecuted instantiation: cea708.c:decoder_QueueSub Unexecuted instantiation: cvdsub.c:decoder_QueueSub Unexecuted instantiation: dvbsub.c:decoder_QueueSub Unexecuted instantiation: scte18.c:decoder_QueueSub Unexecuted instantiation: scte27.c:decoder_QueueSub Unexecuted instantiation: spudec.c:decoder_QueueSub Unexecuted instantiation: parse.c:decoder_QueueSub Unexecuted instantiation: stl.c:decoder_QueueSub subsdec.c:decoder_QueueSub Line | Count | Source | 487 | 99.3k | { | 488 | 99.3k | vlc_assert( dec->fmt_in->i_cat == SPU_ES && dec->cbs != NULL ); | 489 | 99.3k | vlc_assert( p_spu->p_next == NULL ); | 490 | 99.3k | vlc_assert( dec->cbs->spu.queue != NULL ); | 491 | 99.3k | dec->cbs->spu.queue( dec, p_spu ); | 492 | 99.3k | } |
Unexecuted instantiation: subsusf.c:decoder_QueueSub Unexecuted instantiation: svcdsub.c:decoder_QueueSub Unexecuted instantiation: textst.c:decoder_QueueSub substx3g.c:decoder_QueueSub Line | Count | Source | 487 | 173 | { | 488 | 173 | vlc_assert( dec->fmt_in->i_cat == SPU_ES && dec->cbs != NULL ); | 489 | 173 | vlc_assert( p_spu->p_next == NULL ); | 490 | 173 | vlc_assert( dec->cbs->spu.queue != NULL ); | 491 | 173 | dec->cbs->spu.queue( dec, p_spu ); | 492 | 173 | } |
Unexecuted instantiation: decoder_device.c:decoder_QueueSub Unexecuted instantiation: decoder_helpers.c:decoder_QueueSub Unexecuted instantiation: demux.c:decoder_QueueSub Unexecuted instantiation: player.c:decoder_QueueSub Unexecuted instantiation: resource.c:decoder_QueueSub Unexecuted instantiation: common.c:decoder_QueueSub Unexecuted instantiation: dec.c:decoder_QueueSub Unexecuted instantiation: filters.c:decoder_QueueSub Unexecuted instantiation: meter.c:decoder_QueueSub Unexecuted instantiation: output.c:decoder_QueueSub Unexecuted instantiation: volume.c:decoder_QueueSub Unexecuted instantiation: video_output.c:decoder_QueueSub Unexecuted instantiation: video_widgets.c:decoder_QueueSub Unexecuted instantiation: vout_subpictures.c:decoder_QueueSub Unexecuted instantiation: image.c:decoder_QueueSub Unexecuted instantiation: objects.c:decoder_QueueSub Unexecuted instantiation: filter.c:decoder_QueueSub Unexecuted instantiation: filter_chain.c:decoder_QueueSub Unexecuted instantiation: subpicture.c:decoder_QueueSub Unexecuted instantiation: stream_output.c:decoder_QueueSub Unexecuted instantiation: es_out.c:decoder_QueueSub Unexecuted instantiation: display.c:decoder_QueueSub |
493 | | |
494 | | /** |
495 | | * This function notifies the audio output pipeline of a new audio output |
496 | | * format (fmt_out.audio). If there is currently no audio output or if the |
497 | | * audio output format has changed, a new audio output will be set up. |
498 | | * @return 0 if the audio output is working, -1 if not. */ |
499 | | VLC_USED |
500 | | static inline int decoder_UpdateAudioFormat( decoder_t *dec ) |
501 | 30.0M | { |
502 | 30.0M | vlc_assert( dec->fmt_in->i_cat == AUDIO_ES && dec->cbs != NULL ); |
503 | | |
504 | 30.0M | if( dec->fmt_in->i_cat == AUDIO_ES && dec->cbs->audio.format_update != NULL ) |
505 | 0 | return dec->cbs->audio.format_update( dec ); |
506 | 30.0M | else |
507 | 30.0M | return -1; |
508 | 30.0M | } Unexecuted instantiation: decoder.c:decoder_UpdateAudioFormat Unexecuted instantiation: es.c:decoder_UpdateAudioFormat Unexecuted instantiation: flac.c:decoder_UpdateAudioFormat Unexecuted instantiation: h26x.c:decoder_UpdateAudioFormat Unexecuted instantiation: essetup.c:decoder_UpdateAudioFormat Unexecuted instantiation: tta.c:decoder_UpdateAudioFormat Unexecuted instantiation: encttml.c:decoder_UpdateAudioFormat Unexecuted instantiation: substtml.c:decoder_UpdateAudioFormat Unexecuted instantiation: ty.c:decoder_UpdateAudioFormat Unexecuted instantiation: encvtt.c:decoder_UpdateAudioFormat Unexecuted instantiation: webvtt.c:decoder_UpdateAudioFormat Unexecuted instantiation: subsvtt.c:decoder_UpdateAudioFormat Unexecuted instantiation: a52.c:decoder_UpdateAudioFormat Unexecuted instantiation: copy.c:decoder_UpdateAudioFormat Unexecuted instantiation: dts.c:decoder_UpdateAudioFormat Unexecuted instantiation: h264.c:decoder_UpdateAudioFormat Unexecuted instantiation: hxxx_common.c:decoder_UpdateAudioFormat Unexecuted instantiation: hevc.c:decoder_UpdateAudioFormat Unexecuted instantiation: mlp.c:decoder_UpdateAudioFormat Unexecuted instantiation: mpeg4audio.c:decoder_UpdateAudioFormat Unexecuted instantiation: mpeg4video.c:decoder_UpdateAudioFormat Unexecuted instantiation: mpegaudio.c:decoder_UpdateAudioFormat Unexecuted instantiation: mpegvideo.c:decoder_UpdateAudioFormat Unexecuted instantiation: vc1.c:decoder_UpdateAudioFormat adpcm.c:decoder_UpdateAudioFormat Line | Count | Source | 501 | 289k | { | 502 | 289k | vlc_assert( dec->fmt_in->i_cat == AUDIO_ES && dec->cbs != NULL ); | 503 | | | 504 | 289k | if( dec->fmt_in->i_cat == AUDIO_ES && dec->cbs->audio.format_update != NULL ) | 505 | 0 | return dec->cbs->audio.format_update( dec ); | 506 | 289k | else | 507 | 289k | return -1; | 508 | 289k | } |
Unexecuted instantiation: aes3.c:decoder_UpdateAudioFormat araw.c:decoder_UpdateAudioFormat Line | Count | Source | 501 | 26.4M | { | 502 | 26.4M | vlc_assert( dec->fmt_in->i_cat == AUDIO_ES && dec->cbs != NULL ); | 503 | | | 504 | 26.4M | if( dec->fmt_in->i_cat == AUDIO_ES && dec->cbs->audio.format_update != NULL ) | 505 | 0 | return dec->cbs->audio.format_update( dec ); | 506 | 26.4M | else | 507 | 26.4M | return -1; | 508 | 26.4M | } |
g711.c:decoder_UpdateAudioFormat Line | Count | Source | 501 | 3.27M | { | 502 | 3.27M | vlc_assert( dec->fmt_in->i_cat == AUDIO_ES && dec->cbs != NULL ); | 503 | | | 504 | 3.27M | if( dec->fmt_in->i_cat == AUDIO_ES && dec->cbs->audio.format_update != NULL ) | 505 | 0 | return dec->cbs->audio.format_update( dec ); | 506 | 3.27M | else | 507 | 3.27M | return -1; | 508 | 3.27M | } |
lpcm.c:decoder_UpdateAudioFormat Line | Count | Source | 501 | 10.1k | { | 502 | 10.1k | vlc_assert( dec->fmt_in->i_cat == AUDIO_ES && dec->cbs != NULL ); | 503 | | | 504 | 10.1k | if( dec->fmt_in->i_cat == AUDIO_ES && dec->cbs->audio.format_update != NULL ) | 505 | 0 | return dec->cbs->audio.format_update( dec ); | 506 | 10.1k | else | 507 | 10.1k | return -1; | 508 | 10.1k | } |
uleaddvaudio.c:decoder_UpdateAudioFormat Line | Count | Source | 501 | 14.5k | { | 502 | 14.5k | vlc_assert( dec->fmt_in->i_cat == AUDIO_ES && dec->cbs != NULL ); | 503 | | | 504 | 14.5k | if( dec->fmt_in->i_cat == AUDIO_ES && dec->cbs->audio.format_update != NULL ) | 505 | 0 | return dec->cbs->audio.format_update( dec ); | 506 | 14.5k | else | 507 | 14.5k | return -1; | 508 | 14.5k | } |
Unexecuted instantiation: rawvideo.c:decoder_UpdateAudioFormat Unexecuted instantiation: cc.c:decoder_UpdateAudioFormat Unexecuted instantiation: cea708.c:decoder_UpdateAudioFormat Unexecuted instantiation: cvdsub.c:decoder_UpdateAudioFormat Unexecuted instantiation: dvbsub.c:decoder_UpdateAudioFormat Unexecuted instantiation: scte18.c:decoder_UpdateAudioFormat Unexecuted instantiation: scte27.c:decoder_UpdateAudioFormat Unexecuted instantiation: spudec.c:decoder_UpdateAudioFormat Unexecuted instantiation: parse.c:decoder_UpdateAudioFormat Unexecuted instantiation: stl.c:decoder_UpdateAudioFormat Unexecuted instantiation: subsdec.c:decoder_UpdateAudioFormat Unexecuted instantiation: subsusf.c:decoder_UpdateAudioFormat Unexecuted instantiation: svcdsub.c:decoder_UpdateAudioFormat Unexecuted instantiation: textst.c:decoder_UpdateAudioFormat Unexecuted instantiation: substx3g.c:decoder_UpdateAudioFormat Unexecuted instantiation: decoder_device.c:decoder_UpdateAudioFormat Unexecuted instantiation: decoder_helpers.c:decoder_UpdateAudioFormat Unexecuted instantiation: demux.c:decoder_UpdateAudioFormat Unexecuted instantiation: player.c:decoder_UpdateAudioFormat Unexecuted instantiation: resource.c:decoder_UpdateAudioFormat Unexecuted instantiation: common.c:decoder_UpdateAudioFormat Unexecuted instantiation: dec.c:decoder_UpdateAudioFormat Unexecuted instantiation: filters.c:decoder_UpdateAudioFormat Unexecuted instantiation: meter.c:decoder_UpdateAudioFormat Unexecuted instantiation: output.c:decoder_UpdateAudioFormat Unexecuted instantiation: volume.c:decoder_UpdateAudioFormat Unexecuted instantiation: video_output.c:decoder_UpdateAudioFormat Unexecuted instantiation: video_widgets.c:decoder_UpdateAudioFormat Unexecuted instantiation: vout_subpictures.c:decoder_UpdateAudioFormat Unexecuted instantiation: image.c:decoder_UpdateAudioFormat Unexecuted instantiation: objects.c:decoder_UpdateAudioFormat Unexecuted instantiation: filter.c:decoder_UpdateAudioFormat Unexecuted instantiation: filter_chain.c:decoder_UpdateAudioFormat Unexecuted instantiation: subpicture.c:decoder_UpdateAudioFormat Unexecuted instantiation: stream_output.c:decoder_UpdateAudioFormat Unexecuted instantiation: es_out.c:decoder_UpdateAudioFormat Unexecuted instantiation: display.c:decoder_UpdateAudioFormat |
509 | | |
510 | | /** |
511 | | * This function will return a new audio buffer usable by a decoder as an |
512 | | * output buffer. It must be released with block_Release() or returned it to |
513 | | * the caller as a decoder_QueueAudio parameter. |
514 | | */ |
515 | | VLC_API vlc_frame_t * decoder_NewAudioBuffer( decoder_t *, int i_nb_samples ) VLC_USED; |
516 | | |
517 | | /** |
518 | | * This function will return a new subpicture usable by a decoder as an output |
519 | | * buffer. You have to release it using subpicture_Delete() or by returning |
520 | | * it to the caller as a decoder_QueueSub parameter. |
521 | | */ |
522 | | VLC_USED |
523 | | static inline subpicture_t *decoder_NewSubpicture( decoder_t *dec, |
524 | | const subpicture_updater_t *p_dyn ) |
525 | 121k | { |
526 | 121k | vlc_assert( dec->fmt_in->i_cat == SPU_ES && dec->cbs != NULL ); |
527 | | |
528 | 121k | subpicture_t *p_subpicture = dec->cbs->spu.buffer_new( dec, p_dyn ); |
529 | 121k | if( !p_subpicture ) |
530 | 121k | msg_Warn( dec, "can't get output subpicture" ); |
531 | 121k | else |
532 | 121k | p_subpicture->b_subtitle = true; |
533 | 121k | return p_subpicture; |
534 | 121k | } Unexecuted instantiation: decoder.c:decoder_NewSubpicture Unexecuted instantiation: es.c:decoder_NewSubpicture Unexecuted instantiation: flac.c:decoder_NewSubpicture Unexecuted instantiation: h26x.c:decoder_NewSubpicture Unexecuted instantiation: essetup.c:decoder_NewSubpicture Unexecuted instantiation: tta.c:decoder_NewSubpicture Unexecuted instantiation: encttml.c:decoder_NewSubpicture substtml.c:decoder_NewSubpicture Line | Count | Source | 525 | 9.63k | { | 526 | 9.63k | vlc_assert( dec->fmt_in->i_cat == SPU_ES && dec->cbs != NULL ); | 527 | | | 528 | 9.63k | subpicture_t *p_subpicture = dec->cbs->spu.buffer_new( dec, p_dyn ); | 529 | 9.63k | if( !p_subpicture ) | 530 | 9.63k | msg_Warn( dec, "can't get output subpicture" ); | 531 | 9.63k | else | 532 | 9.63k | p_subpicture->b_subtitle = true; | 533 | 9.63k | return p_subpicture; | 534 | 9.63k | } |
Unexecuted instantiation: ty.c:decoder_NewSubpicture Unexecuted instantiation: encvtt.c:decoder_NewSubpicture Unexecuted instantiation: webvtt.c:decoder_NewSubpicture subsvtt.c:decoder_NewSubpicture Line | Count | Source | 525 | 10.9k | { | 526 | 10.9k | vlc_assert( dec->fmt_in->i_cat == SPU_ES && dec->cbs != NULL ); | 527 | | | 528 | 10.9k | subpicture_t *p_subpicture = dec->cbs->spu.buffer_new( dec, p_dyn ); | 529 | 10.9k | if( !p_subpicture ) | 530 | 10.9k | msg_Warn( dec, "can't get output subpicture" ); | 531 | 10.9k | else | 532 | 10.9k | p_subpicture->b_subtitle = true; | 533 | 10.9k | return p_subpicture; | 534 | 10.9k | } |
Unexecuted instantiation: a52.c:decoder_NewSubpicture Unexecuted instantiation: copy.c:decoder_NewSubpicture Unexecuted instantiation: dts.c:decoder_NewSubpicture Unexecuted instantiation: h264.c:decoder_NewSubpicture Unexecuted instantiation: hxxx_common.c:decoder_NewSubpicture Unexecuted instantiation: hevc.c:decoder_NewSubpicture Unexecuted instantiation: mlp.c:decoder_NewSubpicture Unexecuted instantiation: mpeg4audio.c:decoder_NewSubpicture Unexecuted instantiation: mpeg4video.c:decoder_NewSubpicture Unexecuted instantiation: mpegaudio.c:decoder_NewSubpicture Unexecuted instantiation: mpegvideo.c:decoder_NewSubpicture Unexecuted instantiation: vc1.c:decoder_NewSubpicture Unexecuted instantiation: adpcm.c:decoder_NewSubpicture Unexecuted instantiation: aes3.c:decoder_NewSubpicture Unexecuted instantiation: araw.c:decoder_NewSubpicture Unexecuted instantiation: g711.c:decoder_NewSubpicture Unexecuted instantiation: lpcm.c:decoder_NewSubpicture Unexecuted instantiation: uleaddvaudio.c:decoder_NewSubpicture Unexecuted instantiation: rawvideo.c:decoder_NewSubpicture cc.c:decoder_NewSubpicture Line | Count | Source | 525 | 1.55k | { | 526 | 1.55k | vlc_assert( dec->fmt_in->i_cat == SPU_ES && dec->cbs != NULL ); | 527 | | | 528 | 1.55k | subpicture_t *p_subpicture = dec->cbs->spu.buffer_new( dec, p_dyn ); | 529 | 1.55k | if( !p_subpicture ) | 530 | 1.55k | msg_Warn( dec, "can't get output subpicture" ); | 531 | 1.55k | else | 532 | 1.55k | p_subpicture->b_subtitle = true; | 533 | 1.55k | return p_subpicture; | 534 | 1.55k | } |
Unexecuted instantiation: cea708.c:decoder_NewSubpicture Unexecuted instantiation: cvdsub.c:decoder_NewSubpicture Unexecuted instantiation: dvbsub.c:decoder_NewSubpicture Unexecuted instantiation: scte18.c:decoder_NewSubpicture Unexecuted instantiation: scte27.c:decoder_NewSubpicture Unexecuted instantiation: spudec.c:decoder_NewSubpicture Unexecuted instantiation: parse.c:decoder_NewSubpicture Unexecuted instantiation: stl.c:decoder_NewSubpicture subsdec.c:decoder_NewSubpicture Line | Count | Source | 525 | 99.3k | { | 526 | 99.3k | vlc_assert( dec->fmt_in->i_cat == SPU_ES && dec->cbs != NULL ); | 527 | | | 528 | 99.3k | subpicture_t *p_subpicture = dec->cbs->spu.buffer_new( dec, p_dyn ); | 529 | 99.3k | if( !p_subpicture ) | 530 | 99.3k | msg_Warn( dec, "can't get output subpicture" ); | 531 | 99.3k | else | 532 | 99.3k | p_subpicture->b_subtitle = true; | 533 | 99.3k | return p_subpicture; | 534 | 99.3k | } |
Unexecuted instantiation: subsusf.c:decoder_NewSubpicture Unexecuted instantiation: svcdsub.c:decoder_NewSubpicture Unexecuted instantiation: textst.c:decoder_NewSubpicture substx3g.c:decoder_NewSubpicture Line | Count | Source | 525 | 173 | { | 526 | 173 | vlc_assert( dec->fmt_in->i_cat == SPU_ES && dec->cbs != NULL ); | 527 | | | 528 | 173 | subpicture_t *p_subpicture = dec->cbs->spu.buffer_new( dec, p_dyn ); | 529 | 173 | if( !p_subpicture ) | 530 | 173 | msg_Warn( dec, "can't get output subpicture" ); | 531 | 173 | else | 532 | 173 | p_subpicture->b_subtitle = true; | 533 | 173 | return p_subpicture; | 534 | 173 | } |
Unexecuted instantiation: decoder_device.c:decoder_NewSubpicture Unexecuted instantiation: decoder_helpers.c:decoder_NewSubpicture Unexecuted instantiation: demux.c:decoder_NewSubpicture Unexecuted instantiation: player.c:decoder_NewSubpicture Unexecuted instantiation: resource.c:decoder_NewSubpicture Unexecuted instantiation: common.c:decoder_NewSubpicture Unexecuted instantiation: dec.c:decoder_NewSubpicture Unexecuted instantiation: filters.c:decoder_NewSubpicture Unexecuted instantiation: meter.c:decoder_NewSubpicture Unexecuted instantiation: output.c:decoder_NewSubpicture Unexecuted instantiation: volume.c:decoder_NewSubpicture Unexecuted instantiation: video_output.c:decoder_NewSubpicture Unexecuted instantiation: video_widgets.c:decoder_NewSubpicture Unexecuted instantiation: vout_subpictures.c:decoder_NewSubpicture Unexecuted instantiation: image.c:decoder_NewSubpicture Unexecuted instantiation: objects.c:decoder_NewSubpicture Unexecuted instantiation: filter.c:decoder_NewSubpicture Unexecuted instantiation: filter_chain.c:decoder_NewSubpicture Unexecuted instantiation: subpicture.c:decoder_NewSubpicture Unexecuted instantiation: stream_output.c:decoder_NewSubpicture Unexecuted instantiation: es_out.c:decoder_NewSubpicture Unexecuted instantiation: display.c:decoder_NewSubpicture |
535 | | |
536 | | /** |
537 | | * This function gives all input attachments at once. |
538 | | * |
539 | | * You MUST release the returned values |
540 | | */ |
541 | | static inline int decoder_GetInputAttachments( decoder_t *dec, |
542 | | input_attachment_t ***ppp_attachment, |
543 | | int *pi_attachment ) |
544 | 0 | { |
545 | 0 | vlc_assert( dec->cbs != NULL ); |
546 | | |
547 | 0 | if( !dec->cbs->get_attachments ) |
548 | 0 | return VLC_EGENERIC; |
549 | | |
550 | 0 | return dec->cbs->get_attachments( dec, ppp_attachment, pi_attachment ); |
551 | 0 | } Unexecuted instantiation: decoder.c:decoder_GetInputAttachments Unexecuted instantiation: es.c:decoder_GetInputAttachments Unexecuted instantiation: flac.c:decoder_GetInputAttachments Unexecuted instantiation: h26x.c:decoder_GetInputAttachments Unexecuted instantiation: essetup.c:decoder_GetInputAttachments Unexecuted instantiation: tta.c:decoder_GetInputAttachments Unexecuted instantiation: encttml.c:decoder_GetInputAttachments Unexecuted instantiation: substtml.c:decoder_GetInputAttachments Unexecuted instantiation: ty.c:decoder_GetInputAttachments Unexecuted instantiation: encvtt.c:decoder_GetInputAttachments Unexecuted instantiation: webvtt.c:decoder_GetInputAttachments Unexecuted instantiation: subsvtt.c:decoder_GetInputAttachments Unexecuted instantiation: a52.c:decoder_GetInputAttachments Unexecuted instantiation: copy.c:decoder_GetInputAttachments Unexecuted instantiation: dts.c:decoder_GetInputAttachments Unexecuted instantiation: h264.c:decoder_GetInputAttachments Unexecuted instantiation: hxxx_common.c:decoder_GetInputAttachments Unexecuted instantiation: hevc.c:decoder_GetInputAttachments Unexecuted instantiation: mlp.c:decoder_GetInputAttachments Unexecuted instantiation: mpeg4audio.c:decoder_GetInputAttachments Unexecuted instantiation: mpeg4video.c:decoder_GetInputAttachments Unexecuted instantiation: mpegaudio.c:decoder_GetInputAttachments Unexecuted instantiation: mpegvideo.c:decoder_GetInputAttachments Unexecuted instantiation: vc1.c:decoder_GetInputAttachments Unexecuted instantiation: adpcm.c:decoder_GetInputAttachments Unexecuted instantiation: aes3.c:decoder_GetInputAttachments Unexecuted instantiation: araw.c:decoder_GetInputAttachments Unexecuted instantiation: g711.c:decoder_GetInputAttachments Unexecuted instantiation: lpcm.c:decoder_GetInputAttachments Unexecuted instantiation: uleaddvaudio.c:decoder_GetInputAttachments Unexecuted instantiation: rawvideo.c:decoder_GetInputAttachments Unexecuted instantiation: cc.c:decoder_GetInputAttachments Unexecuted instantiation: cea708.c:decoder_GetInputAttachments Unexecuted instantiation: cvdsub.c:decoder_GetInputAttachments Unexecuted instantiation: dvbsub.c:decoder_GetInputAttachments Unexecuted instantiation: scte18.c:decoder_GetInputAttachments Unexecuted instantiation: scte27.c:decoder_GetInputAttachments Unexecuted instantiation: spudec.c:decoder_GetInputAttachments Unexecuted instantiation: parse.c:decoder_GetInputAttachments Unexecuted instantiation: stl.c:decoder_GetInputAttachments Unexecuted instantiation: subsdec.c:decoder_GetInputAttachments Unexecuted instantiation: subsusf.c:decoder_GetInputAttachments Unexecuted instantiation: svcdsub.c:decoder_GetInputAttachments Unexecuted instantiation: textst.c:decoder_GetInputAttachments Unexecuted instantiation: substx3g.c:decoder_GetInputAttachments Unexecuted instantiation: decoder_device.c:decoder_GetInputAttachments Unexecuted instantiation: decoder_helpers.c:decoder_GetInputAttachments Unexecuted instantiation: demux.c:decoder_GetInputAttachments Unexecuted instantiation: player.c:decoder_GetInputAttachments Unexecuted instantiation: resource.c:decoder_GetInputAttachments Unexecuted instantiation: common.c:decoder_GetInputAttachments Unexecuted instantiation: dec.c:decoder_GetInputAttachments Unexecuted instantiation: filters.c:decoder_GetInputAttachments Unexecuted instantiation: meter.c:decoder_GetInputAttachments Unexecuted instantiation: output.c:decoder_GetInputAttachments Unexecuted instantiation: volume.c:decoder_GetInputAttachments Unexecuted instantiation: video_output.c:decoder_GetInputAttachments Unexecuted instantiation: video_widgets.c:decoder_GetInputAttachments Unexecuted instantiation: vout_subpictures.c:decoder_GetInputAttachments Unexecuted instantiation: image.c:decoder_GetInputAttachments Unexecuted instantiation: objects.c:decoder_GetInputAttachments Unexecuted instantiation: filter.c:decoder_GetInputAttachments Unexecuted instantiation: filter_chain.c:decoder_GetInputAttachments Unexecuted instantiation: subpicture.c:decoder_GetInputAttachments Unexecuted instantiation: stream_output.c:decoder_GetInputAttachments Unexecuted instantiation: es_out.c:decoder_GetInputAttachments Unexecuted instantiation: display.c:decoder_GetInputAttachments |
552 | | |
553 | | /** |
554 | | * This function converts a decoder timestamp into a display date comparable |
555 | | * to vlc_tick_now(). |
556 | | * You MUST use it *only* for gathering statistics about speed. |
557 | | */ |
558 | | VLC_USED |
559 | | static inline vlc_tick_t decoder_GetDisplayDate( decoder_t *dec, |
560 | | vlc_tick_t system_now, |
561 | | vlc_tick_t i_ts ) |
562 | 0 | { |
563 | 0 | vlc_assert( dec->fmt_in->i_cat == VIDEO_ES && dec->cbs != NULL ); |
564 | 0 |
|
565 | 0 | if( !dec->cbs->video.get_display_date ) |
566 | 0 | return VLC_TICK_INVALID; |
567 | 0 |
|
568 | 0 | return dec->cbs->video.get_display_date( dec, system_now, i_ts ); |
569 | 0 | } Unexecuted instantiation: decoder.c:decoder_GetDisplayDate Unexecuted instantiation: es.c:decoder_GetDisplayDate Unexecuted instantiation: flac.c:decoder_GetDisplayDate Unexecuted instantiation: h26x.c:decoder_GetDisplayDate Unexecuted instantiation: essetup.c:decoder_GetDisplayDate Unexecuted instantiation: tta.c:decoder_GetDisplayDate Unexecuted instantiation: encttml.c:decoder_GetDisplayDate Unexecuted instantiation: substtml.c:decoder_GetDisplayDate Unexecuted instantiation: ty.c:decoder_GetDisplayDate Unexecuted instantiation: encvtt.c:decoder_GetDisplayDate Unexecuted instantiation: webvtt.c:decoder_GetDisplayDate Unexecuted instantiation: subsvtt.c:decoder_GetDisplayDate Unexecuted instantiation: a52.c:decoder_GetDisplayDate Unexecuted instantiation: copy.c:decoder_GetDisplayDate Unexecuted instantiation: dts.c:decoder_GetDisplayDate Unexecuted instantiation: h264.c:decoder_GetDisplayDate Unexecuted instantiation: hxxx_common.c:decoder_GetDisplayDate Unexecuted instantiation: hevc.c:decoder_GetDisplayDate Unexecuted instantiation: mlp.c:decoder_GetDisplayDate Unexecuted instantiation: mpeg4audio.c:decoder_GetDisplayDate Unexecuted instantiation: mpeg4video.c:decoder_GetDisplayDate Unexecuted instantiation: mpegaudio.c:decoder_GetDisplayDate Unexecuted instantiation: mpegvideo.c:decoder_GetDisplayDate Unexecuted instantiation: vc1.c:decoder_GetDisplayDate Unexecuted instantiation: adpcm.c:decoder_GetDisplayDate Unexecuted instantiation: aes3.c:decoder_GetDisplayDate Unexecuted instantiation: araw.c:decoder_GetDisplayDate Unexecuted instantiation: g711.c:decoder_GetDisplayDate Unexecuted instantiation: lpcm.c:decoder_GetDisplayDate Unexecuted instantiation: uleaddvaudio.c:decoder_GetDisplayDate Unexecuted instantiation: rawvideo.c:decoder_GetDisplayDate Unexecuted instantiation: cc.c:decoder_GetDisplayDate Unexecuted instantiation: cea708.c:decoder_GetDisplayDate Unexecuted instantiation: cvdsub.c:decoder_GetDisplayDate Unexecuted instantiation: dvbsub.c:decoder_GetDisplayDate Unexecuted instantiation: scte18.c:decoder_GetDisplayDate Unexecuted instantiation: scte27.c:decoder_GetDisplayDate Unexecuted instantiation: spudec.c:decoder_GetDisplayDate Unexecuted instantiation: parse.c:decoder_GetDisplayDate Unexecuted instantiation: stl.c:decoder_GetDisplayDate Unexecuted instantiation: subsdec.c:decoder_GetDisplayDate Unexecuted instantiation: subsusf.c:decoder_GetDisplayDate Unexecuted instantiation: svcdsub.c:decoder_GetDisplayDate Unexecuted instantiation: textst.c:decoder_GetDisplayDate Unexecuted instantiation: substx3g.c:decoder_GetDisplayDate Unexecuted instantiation: decoder_device.c:decoder_GetDisplayDate Unexecuted instantiation: decoder_helpers.c:decoder_GetDisplayDate Unexecuted instantiation: demux.c:decoder_GetDisplayDate Unexecuted instantiation: player.c:decoder_GetDisplayDate Unexecuted instantiation: resource.c:decoder_GetDisplayDate Unexecuted instantiation: common.c:decoder_GetDisplayDate Unexecuted instantiation: dec.c:decoder_GetDisplayDate Unexecuted instantiation: filters.c:decoder_GetDisplayDate Unexecuted instantiation: meter.c:decoder_GetDisplayDate Unexecuted instantiation: output.c:decoder_GetDisplayDate Unexecuted instantiation: volume.c:decoder_GetDisplayDate Unexecuted instantiation: video_output.c:decoder_GetDisplayDate Unexecuted instantiation: video_widgets.c:decoder_GetDisplayDate Unexecuted instantiation: vout_subpictures.c:decoder_GetDisplayDate Unexecuted instantiation: image.c:decoder_GetDisplayDate Unexecuted instantiation: objects.c:decoder_GetDisplayDate Unexecuted instantiation: filter.c:decoder_GetDisplayDate Unexecuted instantiation: filter_chain.c:decoder_GetDisplayDate Unexecuted instantiation: subpicture.c:decoder_GetDisplayDate Unexecuted instantiation: stream_output.c:decoder_GetDisplayDate Unexecuted instantiation: es_out.c:decoder_GetDisplayDate Unexecuted instantiation: display.c:decoder_GetDisplayDate |
570 | | |
571 | | /** |
572 | | * This function returns the current input rate. |
573 | | * You MUST use it *only* for gathering statistics about speed. |
574 | | */ |
575 | | VLC_USED |
576 | | static inline float decoder_GetDisplayRate( decoder_t *dec ) |
577 | 0 | { |
578 | 0 | vlc_assert( dec->fmt_in->i_cat == VIDEO_ES && dec->cbs != NULL ); |
579 | 0 |
|
580 | 0 | if( !dec->cbs->video.get_display_rate ) |
581 | 0 | return 1.f; |
582 | 0 |
|
583 | 0 | return dec->cbs->video.get_display_rate( dec ); |
584 | 0 | } Unexecuted instantiation: decoder.c:decoder_GetDisplayRate Unexecuted instantiation: es.c:decoder_GetDisplayRate Unexecuted instantiation: flac.c:decoder_GetDisplayRate Unexecuted instantiation: h26x.c:decoder_GetDisplayRate Unexecuted instantiation: essetup.c:decoder_GetDisplayRate Unexecuted instantiation: tta.c:decoder_GetDisplayRate Unexecuted instantiation: encttml.c:decoder_GetDisplayRate Unexecuted instantiation: substtml.c:decoder_GetDisplayRate Unexecuted instantiation: ty.c:decoder_GetDisplayRate Unexecuted instantiation: encvtt.c:decoder_GetDisplayRate Unexecuted instantiation: webvtt.c:decoder_GetDisplayRate Unexecuted instantiation: subsvtt.c:decoder_GetDisplayRate Unexecuted instantiation: a52.c:decoder_GetDisplayRate Unexecuted instantiation: copy.c:decoder_GetDisplayRate Unexecuted instantiation: dts.c:decoder_GetDisplayRate Unexecuted instantiation: h264.c:decoder_GetDisplayRate Unexecuted instantiation: hxxx_common.c:decoder_GetDisplayRate Unexecuted instantiation: hevc.c:decoder_GetDisplayRate Unexecuted instantiation: mlp.c:decoder_GetDisplayRate Unexecuted instantiation: mpeg4audio.c:decoder_GetDisplayRate Unexecuted instantiation: mpeg4video.c:decoder_GetDisplayRate Unexecuted instantiation: mpegaudio.c:decoder_GetDisplayRate Unexecuted instantiation: mpegvideo.c:decoder_GetDisplayRate Unexecuted instantiation: vc1.c:decoder_GetDisplayRate Unexecuted instantiation: adpcm.c:decoder_GetDisplayRate Unexecuted instantiation: aes3.c:decoder_GetDisplayRate Unexecuted instantiation: araw.c:decoder_GetDisplayRate Unexecuted instantiation: g711.c:decoder_GetDisplayRate Unexecuted instantiation: lpcm.c:decoder_GetDisplayRate Unexecuted instantiation: uleaddvaudio.c:decoder_GetDisplayRate Unexecuted instantiation: rawvideo.c:decoder_GetDisplayRate Unexecuted instantiation: cc.c:decoder_GetDisplayRate Unexecuted instantiation: cea708.c:decoder_GetDisplayRate Unexecuted instantiation: cvdsub.c:decoder_GetDisplayRate Unexecuted instantiation: dvbsub.c:decoder_GetDisplayRate Unexecuted instantiation: scte18.c:decoder_GetDisplayRate Unexecuted instantiation: scte27.c:decoder_GetDisplayRate Unexecuted instantiation: spudec.c:decoder_GetDisplayRate Unexecuted instantiation: parse.c:decoder_GetDisplayRate Unexecuted instantiation: stl.c:decoder_GetDisplayRate Unexecuted instantiation: subsdec.c:decoder_GetDisplayRate Unexecuted instantiation: subsusf.c:decoder_GetDisplayRate Unexecuted instantiation: svcdsub.c:decoder_GetDisplayRate Unexecuted instantiation: textst.c:decoder_GetDisplayRate Unexecuted instantiation: substx3g.c:decoder_GetDisplayRate Unexecuted instantiation: decoder_device.c:decoder_GetDisplayRate Unexecuted instantiation: decoder_helpers.c:decoder_GetDisplayRate Unexecuted instantiation: demux.c:decoder_GetDisplayRate Unexecuted instantiation: player.c:decoder_GetDisplayRate Unexecuted instantiation: resource.c:decoder_GetDisplayRate Unexecuted instantiation: common.c:decoder_GetDisplayRate Unexecuted instantiation: dec.c:decoder_GetDisplayRate Unexecuted instantiation: filters.c:decoder_GetDisplayRate Unexecuted instantiation: meter.c:decoder_GetDisplayRate Unexecuted instantiation: output.c:decoder_GetDisplayRate Unexecuted instantiation: volume.c:decoder_GetDisplayRate Unexecuted instantiation: video_output.c:decoder_GetDisplayRate Unexecuted instantiation: video_widgets.c:decoder_GetDisplayRate Unexecuted instantiation: vout_subpictures.c:decoder_GetDisplayRate Unexecuted instantiation: image.c:decoder_GetDisplayRate Unexecuted instantiation: objects.c:decoder_GetDisplayRate Unexecuted instantiation: filter.c:decoder_GetDisplayRate Unexecuted instantiation: filter_chain.c:decoder_GetDisplayRate Unexecuted instantiation: subpicture.c:decoder_GetDisplayRate Unexecuted instantiation: stream_output.c:decoder_GetDisplayRate Unexecuted instantiation: es_out.c:decoder_GetDisplayRate Unexecuted instantiation: display.c:decoder_GetDisplayRate |
585 | | |
586 | | /** @} */ |
587 | | |
588 | | /** |
589 | | * \defgroup decoder_device Decoder hardware device |
590 | | * \ingroup input |
591 | | * @{ |
592 | | */ |
593 | | |
594 | | /** Decoder device type */ |
595 | | enum vlc_decoder_device_type |
596 | | { |
597 | | VLC_DECODER_DEVICE_VAAPI, |
598 | | VLC_DECODER_DEVICE_VDPAU, |
599 | | VLC_DECODER_DEVICE_DXVA2, |
600 | | VLC_DECODER_DEVICE_D3D11VA, |
601 | | VLC_DECODER_DEVICE_VIDEOTOOLBOX, |
602 | | VLC_DECODER_DEVICE_AWINDOW, |
603 | | VLC_DECODER_DEVICE_NVDEC, |
604 | | VLC_DECODER_DEVICE_MMAL, |
605 | | VLC_DECODER_DEVICE_GSTDECODE, |
606 | | }; |
607 | | |
608 | | struct vlc_decoder_device_operations |
609 | | { |
610 | | void (*close)(struct vlc_decoder_device *); |
611 | | }; |
612 | | |
613 | | /** |
614 | | * Decoder context struct |
615 | | */ |
616 | | typedef struct vlc_decoder_device |
617 | | { |
618 | | struct vlc_object_t obj; |
619 | | |
620 | | const struct vlc_decoder_device_operations *ops; |
621 | | |
622 | | /** Private context that could be used by the "decoder device" module |
623 | | * implementation */ |
624 | | void *sys; |
625 | | |
626 | | /** Must be set from the "decoder device" module open entry point */ |
627 | | enum vlc_decoder_device_type type; |
628 | | |
629 | | /** |
630 | | * Could be set from the "decoder device" module open entry point and will |
631 | | * be used by hardware decoder modules. |
632 | | * |
633 | | * The type of pointer will depend of the type: |
634 | | * VAAPI: VADisplay |
635 | | * VDPAU: vdp_t * |
636 | | * DXVA2: d3d9_decoder_device_t* |
637 | | * D3D11VA: d3d11_decoder_device_t* |
638 | | * VIDEOTOOLBOX: NULL |
639 | | * AWindow: android AWindowHandler* |
640 | | * NVDEC: decoder_device_nvdec_t* |
641 | | * MMAL: MMAL_PORT_T* |
642 | | */ |
643 | | void *opaque; |
644 | | } vlc_decoder_device; |
645 | | |
646 | | /** |
647 | | * "decoder device" module open entry point |
648 | | * |
649 | | * @param device the "decoder device" structure to initialize |
650 | | * @param window pointer to a window to help device initialization (can be NULL) |
651 | | **/ |
652 | | typedef int (*vlc_decoder_device_Open)(vlc_decoder_device *device, |
653 | | vlc_window_t *window); |
654 | | |
655 | | #define set_callback_dec_device(activate, priority) \ |
656 | | { \ |
657 | | vlc_decoder_device_Open open__ = activate; \ |
658 | | (void) open__; \ |
659 | | set_callback(activate) \ |
660 | | } \ |
661 | | set_capability( "decoder device", priority ) |
662 | | |
663 | | |
664 | | /** |
665 | | * Create a decoder device from a window |
666 | | * |
667 | | * This function will be hidden in the future. It is now used by opengl vout |
668 | | * module as a transition. |
669 | | */ |
670 | | VLC_API vlc_decoder_device * |
671 | | vlc_decoder_device_Create(vlc_object_t *, vlc_window_t *window) VLC_USED; |
672 | | |
673 | | /** |
674 | | * Hold a decoder device |
675 | | */ |
676 | | VLC_API vlc_decoder_device * |
677 | | vlc_decoder_device_Hold(vlc_decoder_device *device); |
678 | | |
679 | | /** |
680 | | * Release a decoder device |
681 | | */ |
682 | | VLC_API void |
683 | | vlc_decoder_device_Release(vlc_decoder_device *device); |
684 | | |
685 | | /** @} */ |
686 | | #endif /* _VLC_CODEC_H */ |