X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_codec.h;h=1e7c8a6f160cd27fc3123abf64c62a52b62f5111;hb=1285807fbfccbbf0eb0792296c37ce309c4b1c41;hp=0237aa4447fed2f8eae051a766d34c916e68587d;hpb=36ab287e77e9df059f261ed1cfb13fc4674182ec;p=vlc diff --git a/include/vlc_codec.h b/include/vlc_codec.h index 0237aa4447..1e7c8a6f16 100644 --- a/include/vlc_codec.h +++ b/include/vlc_codec.h @@ -71,7 +71,7 @@ struct decoder_t /* */ picture_t * ( * pf_decode_video )( decoder_t *, block_t ** ); - aout_buffer_t * ( * pf_decode_audio )( decoder_t *, block_t ** ); + block_t * ( * pf_decode_audio )( decoder_t *, block_t ** ); subpicture_t * ( * pf_decode_sub) ( decoder_t *, block_t ** ); block_t * ( * pf_packetize ) ( decoder_t *, block_t ** ); @@ -102,9 +102,14 @@ struct decoder_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 ); + /** + * Number of extra (ie in addition to the DPB) picture buffers + * needed for decoding. + */ + int i_extra_picture_buffers; + + /* Audio output callbacks */ + int (*pf_aout_format_update)( decoder_t * ); /* SPU output callbacks * XXX use decoder_NewSubpicture and decoder_DeleteSubpicture */ @@ -156,7 +161,7 @@ struct encoder_t es_format_t fmt_out; block_t * ( * pf_encode_video )( encoder_t *, picture_t * ); - block_t * ( * pf_encode_audio )( encoder_t *, aout_buffer_t * ); + block_t * ( * pf_encode_audio )( encoder_t *, block_t * ); block_t * ( * pf_encode_sub )( encoder_t *, subpicture_t * ); /* Common encoder options */ @@ -198,12 +203,25 @@ VLC_API void decoder_LinkPicture( decoder_t *, picture_t * ); */ VLC_API void decoder_UnlinkPicture( decoder_t *, picture_t * ); +/** + * 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. + * @return 0 if the audio output is working, -1 if not. */ +static inline int decoder_UpdateAudioFormat( decoder_t *dec ) +{ + if( dec->pf_aout_format_update != NULL ) + return dec->pf_aout_format_update( dec ); + else + return -1; +} + /** * 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_API aout_buffer_t * decoder_NewAudioBuffer( decoder_t *, int i_size ) VLC_USED; +VLC_API block_t * decoder_NewAudioBuffer( decoder_t *, int i_size ) VLC_USED; /** * This function will return a new subpicture usable by a decoder as an output