VLC
4.0.0-dev
|
Audio, video and text decoders. More...
![]() |
Files | |
file | vlc_codec.h |
Decoder and encoder modules interface. | |
Data Structures | |
struct | decoder_owner_callbacks |
struct | decoder_t |
struct | decoder_cc_desc_t |
Typedefs | |
typedef struct decoder_cc_desc_t | decoder_cc_desc_t |
static vlc_decoder_device * | decoder_GetDecoderDevice (decoder_t *dec) |
Creates/Updates the output decoder device. More... | |
int | decoder_UpdateVideoOutput (decoder_t *dec, vlc_video_context *vctx_out) |
Creates/Updates the rest of the video output pipeline. More... | |
int | decoder_UpdateVideoFormat (decoder_t *dec) |
Updates the video output format. More... | |
picture_t * | decoder_NewPicture (decoder_t *dec) |
Allocates an output picture buffer. More... | |
void | decoder_AbortPictures (decoder_t *dec, bool b_abort) |
Abort any calls of decoder_NewPicture. More... | |
void | decoder_Init (decoder_t *dec, const es_format_t *) |
Initialize a decoder structure before creating the decoder. More... | |
void | decoder_Destroy (decoder_t *p_dec) |
Destroy a decoder and reset the structure. More... | |
void | decoder_Clean (decoder_t *p_dec) |
Unload a decoder module and reset the input/output formats. More... | |
static void | decoder_QueueVideo (decoder_t *dec, picture_t *p_pic) |
This function queues a single picture to the video output. More... | |
static void | decoder_QueueCc (decoder_t *dec, block_t *p_cc, const decoder_cc_desc_t *p_desc) |
This function queues the Closed Captions. More... | |
static void | decoder_QueueAudio (decoder_t *dec, block_t *p_aout_buf) |
This function queues a single audio block to the audio output. More... | |
static void | decoder_QueueSub (decoder_t *dec, subpicture_t *p_spu) |
This function queues a single subtitle to the video output. More... | |
static int | decoder_UpdateAudioFormat (decoder_t *dec) |
This function notifies the audio output pipeline of a new audio output format (fmt_out.audio). More... | |
block_t * | decoder_NewAudioBuffer (decoder_t *, int i_nb_samples) |
This function will return a new audio buffer usable by a decoder as an output buffer. More... | |
static subpicture_t * | decoder_NewSubpicture (decoder_t *dec, const subpicture_updater_t *p_dyn) |
This function will return a new subpicture usable by a decoder as an output buffer. More... | |
static int | decoder_GetInputAttachments (decoder_t *dec, input_attachment_t ***ppp_attachment, int *pi_attachment) |
This function gives all input attachments at once. More... | |
static vlc_tick_t | decoder_GetDisplayDate (decoder_t *dec, vlc_tick_t system_now, vlc_tick_t i_ts) |
This function converts a decoder timestamp into a display date comparable to vlc_tick_now(). More... | |
static float | decoder_GetDisplayRate (decoder_t *dec) |
This function returns the current input rate. More... | |
Audio, video and text decoders.
typedef struct decoder_cc_desc_t decoder_cc_desc_t |
void decoder_AbortPictures | ( | decoder_t * | dec, |
bool | b_abort | ||
) |
Abort any calls of decoder_NewPicture.
If b_abort is true, all pending and futures calls of decoder_NewPicture will be aborted. This function can be used by asynchronous video decoders to unblock a thread that is waiting for a picture.
References decoder_t::cbs, decoder_t::fmt_in, es_format_t::i_cat, decoder_owner_callbacks::video, VIDEO_ES, and vlc_assert.
Referenced by decoder_GetDecoderDevice().
void decoder_Clean | ( | decoder_t * | p_dec | ) |
Unload a decoder module and reset the input/output formats.
To be used by decoder owners.
References es_format_Clean(), decoder_t::fmt_in, decoder_t::fmt_out, module_unneed, decoder_t::p_description, decoder_t::p_module, and vlc_meta_Delete().
Referenced by decoder_Destroy(), decoder_GetDecoderDevice(), DecoderThread_Reload(), DeleteDecoder(), and LoadDecoder().
void decoder_Destroy | ( | decoder_t * | p_dec | ) |
Destroy a decoder and reset the structure.
To be used by decoder owners.
References decoder_Clean(), and vlc_object_delete.
Referenced by CreateDecoder(), decoder_GetDecoderDevice(), DeleteDecoder(), image_HandlerDelete(), and ImageRead().
|
inlinestatic |
Creates/Updates the output decoder device.
This function notifies the video output pipeline of a new video output format (fmt_out.video). If there was no decoder device so far or a new decoder device is required, a new decoder device will be set up. decoder_UpdateVideoOutput() can then be used.
If the format is unchanged, this function has no effects and returns zero.
dec | the decoder object |
References decoder_t::cbs, decoder_AbortPictures(), decoder_Clean(), decoder_Destroy(), decoder_Init(), decoder_NewPicture(), decoder_UpdateVideoFormat(), decoder_UpdateVideoOutput(), decoder_t::fmt_in, es_format_t::i_cat, unlikely, decoder_owner_callbacks::video, VIDEO_ES, VLC_API, and vlc_assert.
|
inlinestatic |
This function converts a decoder timestamp into a display date comparable to vlc_tick_now().
You MUST use it only for gathering statistics about speed.
References decoder_t::cbs, decoder_t::fmt_in, es_format_t::i_cat, decoder_owner_callbacks::video, VIDEO_ES, vlc_assert, VLC_TICK_INVALID, and VLC_USED.
|
inlinestatic |
This function returns the current input rate.
You MUST use it only for gathering statistics about speed.
References decoder_t::cbs, decoder_t::fmt_in, es_format_t::i_cat, decoder_owner_callbacks::video, VIDEO_ES, and vlc_assert.
|
inlinestatic |
This function gives all input attachments at once.
You MUST release the returned values
References decoder_t::cbs, decoder_owner_callbacks::get_attachments, vlc_assert, VLC_EGENERIC, and VLC_USED.
void decoder_Init | ( | decoder_t * | dec, |
const es_format_t * | |||
) |
Initialize a decoder structure before creating the decoder.
To be used by decoder owners. By default frame drop is not allowed.
Referenced by decoder_GetDecoderDevice().
This function will return a new audio buffer usable by a decoder as an output buffer.
It must be released with block_Release() or returned it to the caller as a decoder_QueueAudio parameter.
References es_format_t::audio, block_Alloc(), decoder_t::fmt_out, audio_format_t::i_bytes_per_frame, audio_format_t::i_frame_length, block_t::i_length, block_t::i_nb_samples, block_t::i_pts, and likely.
Referenced by decoder_UpdateAudioFormat().
Allocates an output picture buffer.
This function pulls an output picture buffer for the decoder from the buffer pool of the video output. The picture must be released with picture_Release() when it is no longer referenced by the decoder.
References decoder_t::cbs, decoder_t::fmt_in, decoder_t::fmt_out, es_format_t::i_cat, picture_NewFromFormat(), decoder_owner_callbacks::video, es_format_t::video, VIDEO_ES, and vlc_assert.
Referenced by decoder_GetDecoderDevice().
|
inlinestatic |
This function will return a new subpicture usable by a decoder as an output buffer.
You have to release it using subpicture_Delete() or by returning it to the caller as a decoder_QueueSub parameter.
References decoder_t::cbs, decoder_t::fmt_in, es_format_t::i_cat, msg_Warn, decoder_owner_callbacks::spu, SPU_ES, and vlc_assert.
This function queues a single audio block to the audio output.
References decoder_owner_callbacks::audio, AUDIO_ES, decoder_t::cbs, decoder_t::fmt_in, es_format_t::i_cat, block_t::p_next, and vlc_assert.
|
inlinestatic |
This function queues the Closed Captions.
dec | the decoder object |
p_cc | the closed-caption to queue |
p_desc | decoder_cc_desc_t description structure |
References block_Release(), decoder_t::cbs, decoder_t::fmt_in, es_format_t::i_cat, decoder_owner_callbacks::video, VIDEO_ES, and vlc_assert.
|
inlinestatic |
This function queues a single subtitle to the video output.
References decoder_t::cbs, decoder_t::fmt_in, es_format_t::i_cat, subpicture_t::p_next, decoder_owner_callbacks::spu, SPU_ES, vlc_assert, and VLC_USED.
This function queues a single picture to the video output.
References decoder_t::cbs, decoder_t::fmt_in, es_format_t::i_cat, picture_t::p_next, decoder_owner_callbacks::video, VIDEO_ES, and vlc_assert.
|
inlinestatic |
This function notifies the audio output pipeline of a new audio output format (fmt_out.audio).
If there is currently no audio output or if the audio output format has changed, a new audio output will be set up.
References decoder_owner_callbacks::audio, AUDIO_ES, decoder_t::cbs, decoder_NewAudioBuffer(), decoder_t::fmt_in, es_format_t::i_cat, VLC_API, vlc_assert, and VLC_USED.
int decoder_UpdateVideoFormat | ( | decoder_t * | dec | ) |
Updates the video output format.
This function notifies the video output pipeline of a new video output format (fmt_out.video). If there was no video output from the decoder so far or if the video output format has changed, a new video output will be set up. decoder_NewPicture() can then be used to allocate picture buffers.
If the format is unchanged, this function has no effects and returns zero.
References decoder_UpdateVideoOutput().
Referenced by decoder_GetDecoderDevice().
int decoder_UpdateVideoOutput | ( | decoder_t * | dec, |
vlc_video_context * | vctx_out | ||
) |
Creates/Updates the rest of the video output pipeline.
After a call to decoder_GetDecoderDevice() this function notifies the video output pipeline of a new video output format (fmt_out.video). If there was no video output from the decoder so far, a new decoder video output will be set up. decoder_NewPicture() can then be used to allocate picture buffers.
If the format is unchanged, this function has no effects and returns zero.
References decoder_t::cbs, vlc_rational_t::den, decoder_t::fmt_in, decoder_t::fmt_out, vlc_chroma_description_t::h, es_format_t::i_cat, video_format_t::i_chroma, es_format_t::i_codec, video_format_t::i_height, video_format_t::i_sar_den, video_format_t::i_sar_num, video_format_t::i_visible_height, video_format_t::i_visible_width, video_format_t::i_width, video_format_t::i_x_offset, video_format_t::i_y_offset, msg_Warn, vlc_chroma_description_t::p, vlc_chroma_description_t::plane_count, unlikely, var_CreateGetBool(), decoder_owner_callbacks::video, es_format_t::video, VIDEO_ES, video_format_AdjustColorSpace(), vlc_assert, vlc_fourcc_GetChromaDescription(), vlc_fourcc_IsYUV(), vlc_ureduce(), and vlc_chroma_description_t::w.
Referenced by decoder_GetDecoderDevice(), and decoder_UpdateVideoFormat().