#include <vlc_block.h>
#include <vlc_es.h>
+#include <vlc_picture.h>
+#include <vlc_subpicture.h>
/**
* \file
es_format_t fmt_out;
/* Some decoders only accept packetized data (ie. not truncated) */
- bool b_need_packetized;
+ bool b_need_packetized;
/* Tell the decoder if it is allowed to drop frames */
- bool b_pace_control;
+ bool b_pace_control;
/* */
picture_t * ( * pf_decode_video )( decoder_t *, block_t ** );
* globaly, not necessary for the current packet */
block_t * ( * pf_get_cc ) ( decoder_t *, bool pb_present[4] );
- /*
- * Buffers allocation
+ /* Meta data at codec level
+ * The decoder owner set it back to NULL once it has retreived what it needs.
+ * The decoder owner is responsible of its release except when you overwrite it.
*/
-
- /* Video output callbacks */
- picture_t * ( * pf_vout_buffer_new) ( decoder_t * );
- void ( * pf_vout_buffer_del) ( decoder_t *, picture_t * );
- void ( * pf_picture_link) ( decoder_t *, picture_t * );
- void ( * pf_picture_unlink) ( decoder_t *, picture_t * );
+ vlc_meta_t *p_description;
/*
* Owner fields
+ * XXX You MUST not use them directly.
*/
+ /* Video output callbacks
+ * XXX use decoder_NewPicture/decoder_DeletePicture
+ * and decoder_LinkPicture/decoder_UnlinkPicture */
+ picture_t *(*pf_vout_buffer_new)( decoder_t * );
+ void (*pf_vout_buffer_del)( decoder_t *, picture_t * );
+ void (*pf_picture_link) ( decoder_t *, picture_t * );
+ void (*pf_picture_unlink) ( decoder_t *, picture_t * );
+
/* Audio output callbacks
* XXX use decoder_NewAudioBuffer/decoder_DeleteAudioBuffer */
- aout_buffer_t * ( * pf_aout_buffer_new) ( decoder_t *, int );
- void ( * pf_aout_buffer_del) ( decoder_t *, aout_buffer_t * );
+ aout_buffer_t *(*pf_aout_buffer_new)( decoder_t *, int );
+ void (*pf_aout_buffer_del)( decoder_t *, aout_buffer_t * );
/* SPU output callbacks
* XXX use decoder_NewSubpicture and decoder_DeleteSubpicture */
- subpicture_t *(*pf_spu_buffer_new) ( decoder_t * );
- void (*pf_spu_buffer_del) ( decoder_t *, subpicture_t * );
+ subpicture_t *(*pf_spu_buffer_new)( decoder_t *, const subpicture_updater_t * );
+ void (*pf_spu_buffer_del)( decoder_t *, subpicture_t * );
/* Input attachments
* XXX use decoder_GetInputAttachments */
/* Private structure for the owner of the decoder */
decoder_owner_sys_t *p_owner;
+
+ bool b_error;
};
/**
*/
/**
- * \defgroup decoder Encoder
+ * \defgroup encoder Encoder
*
* The structure describing a Encoder
*
*/
+/**
+ * This function will return a new picture usable by a decoder as an output
+ * buffer. You have to release it using decoder_DeletePicture or by returning
+ * it to the caller as a pf_decode_video return value.
+ */
+VLC_EXPORT( picture_t *, decoder_NewPicture, ( decoder_t * ) LIBVLC_USED );
+
+/**
+ * This function will release a picture create by decoder_NewPicture.
+ */
+VLC_EXPORT( void, decoder_DeletePicture, ( decoder_t *, picture_t *p_picture ) );
+
+/**
+ * This function will increase the picture reference count.
+ * (picture_Hold is not usable.)
+ */
+VLC_EXPORT( void, decoder_LinkPicture, ( decoder_t *, picture_t * ) );
+
+/**
+ * This function will decrease the picture reference count.
+ * (picture_Release is not usable.)
+ */
+VLC_EXPORT( void, decoder_UnlinkPicture, ( decoder_t *, picture_t * ) );
+
/**
* This function will return a new audio buffer usable by a decoder as an
* output buffer. You have to release it using decoder_DeleteAudioBuffer
* or by returning it to the caller as a pf_decode_audio return value.
*/
-VLC_EXPORT( aout_buffer_t *, decoder_NewAudioBuffer, ( decoder_t *, int i_size ) );
+VLC_EXPORT( aout_buffer_t *, decoder_NewAudioBuffer, ( decoder_t *, int i_size ) LIBVLC_USED );
/**
* This function will release a audio buffer created by decoder_NewAudioBuffer.
* buffer. You have to release it using decoder_DeleteSubpicture or by returning
* it to the caller as a pf_decode_sub return value.
*/
-VLC_EXPORT( subpicture_t *, decoder_NewSubpicture, ( decoder_t * ) );
+VLC_EXPORT( subpicture_t *, decoder_NewSubpicture, ( decoder_t *, const subpicture_updater_t * ) LIBVLC_USED );
/**
* This function will release a subpicture created by decoder_NewSubicture.
* This function returns the current input rate.
* You MUST use it *only* for gathering statistics about speed.
*/
-VLC_EXPORT( int, decoder_GetDisplayRate, ( decoder_t * ) );
+VLC_EXPORT( int, decoder_GetDisplayRate, ( decoder_t * ) LIBVLC_USED );
#endif /* _VLC_CODEC_H */