Coverage Report

Created: 2025-07-11 07:16

/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
cc.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 */