From 7a00bbad2100367481240e62876b941b5c4befdc Mon Sep 17 00:00:00 2001 From: Thilo Borgmann Date: Tue, 7 Apr 2009 15:59:50 +0000 Subject: [PATCH] Implement avcodec_decode_video2(), _audio3() and _subtitle2() which takes an AVPacket argument rather than a const uint8_t *buf + int buf_size. This allows passing of packet-specific flags from demuxer to decoder, such as the keyframe flag, which appears necessary to playback corePNG P-frames. Patch by Thilo Borgmann thilo.borgmann googlemail com, see also the thread "Google Summer of Code participation" on the mailinglist. Originally committed as revision 18351 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/4xm.c | 4 +- libavcodec/8bps.c | 4 +- libavcodec/8svx.c | 4 +- libavcodec/aac.c | 4 +- libavcodec/aasc.c | 4 +- libavcodec/ac3dec.c | 4 +- libavcodec/adpcm.c | 4 +- libavcodec/adxdec.c | 4 +- libavcodec/alac.c | 4 +- libavcodec/apedec.c | 4 +- libavcodec/asv1.c | 4 +- libavcodec/atrac3.c | 4 +- libavcodec/avcodec.h | 92 ++++++++++++++++++++++++++------- libavcodec/avs.c | 4 +- libavcodec/bethsoftvideo.c | 4 +- libavcodec/bfi.c | 5 +- libavcodec/bmp.c | 4 +- libavcodec/c93.c | 4 +- libavcodec/cavsdec.c | 4 +- libavcodec/cinepak.c | 4 +- libavcodec/cljr.c | 4 +- libavcodec/cook.c | 4 +- libavcodec/cscd.c | 4 +- libavcodec/cyuv.c | 4 +- libavcodec/dca.c | 4 +- libavcodec/dnxhddec.c | 4 +- libavcodec/dpcm.c | 4 +- libavcodec/dsicinav.c | 8 ++- libavcodec/dv.c | 4 +- libavcodec/dvbsubdec.c | 4 +- libavcodec/dvdsubdec.c | 4 +- libavcodec/dxa.c | 4 +- libavcodec/eacmv.c | 4 +- libavcodec/eatgq.c | 4 +- libavcodec/eatgv.c | 4 +- libavcodec/eatqi.c | 4 +- libavcodec/escape124.c | 4 +- libavcodec/ffv1.c | 4 +- libavcodec/flacdec.c | 4 +- libavcodec/flashsv.c | 4 +- libavcodec/flicvideo.c | 4 +- libavcodec/fraps.c | 4 +- libavcodec/g726.c | 4 +- libavcodec/gifdec.c | 4 +- libavcodec/h261dec.c | 4 +- libavcodec/h263dec.c | 4 +- libavcodec/h264.c | 4 +- libavcodec/huffyuv.c | 4 +- libavcodec/idcinvideo.c | 4 +- libavcodec/imc.c | 4 +- libavcodec/indeo2.c | 4 +- libavcodec/indeo3.c | 4 +- libavcodec/interplayvideo.c | 4 +- libavcodec/kmvc.c | 5 +- libavcodec/lcldec.c | 4 +- libavcodec/libamr.c | 8 ++- libavcodec/libdiracdec.c | 4 +- libavcodec/libfaad.c | 4 +- libavcodec/libgsm.c | 4 +- libavcodec/libopenjpeg.c | 4 +- libavcodec/libschroedingerdec.c | 4 +- libavcodec/libspeexdec.c | 4 +- libavcodec/loco.c | 4 +- libavcodec/mace.c | 4 +- libavcodec/mdec.c | 4 +- libavcodec/mimic.c | 4 +- libavcodec/mjpegbdec.c | 4 +- libavcodec/mjpegdec.c | 4 +- libavcodec/mjpegdec.h | 2 +- libavcodec/mlpdec.c | 4 +- libavcodec/mmvideo.c | 4 +- libavcodec/motionpixels.c | 4 +- libavcodec/mpc7.c | 4 +- libavcodec/mpc8.c | 4 +- libavcodec/mpeg12.c | 4 +- libavcodec/mpegaudiodec.c | 12 +++-- libavcodec/mpegvideo.h | 2 +- libavcodec/msrle.c | 4 +- libavcodec/msvideo1.c | 4 +- libavcodec/nellymoserdec.c | 4 +- libavcodec/nuv.c | 4 +- libavcodec/pcm.c | 4 +- libavcodec/pcx.c | 4 +- libavcodec/pngdec.c | 4 +- libavcodec/pnmenc.c | 4 +- libavcodec/ptx.c | 4 +- libavcodec/qcelpdec.c | 4 +- libavcodec/qdm2.c | 4 +- libavcodec/qdrw.c | 4 +- libavcodec/qpeg.c | 4 +- libavcodec/qtrle.c | 4 +- libavcodec/ra144.c | 4 +- libavcodec/ra288.c | 5 +- libavcodec/rawdec.c | 4 +- libavcodec/rl2.c | 4 +- libavcodec/roqvideodec.c | 4 +- libavcodec/rpza.c | 4 +- libavcodec/rv10.c | 4 +- libavcodec/rv34.c | 4 +- libavcodec/rv34.h | 2 +- libavcodec/sgidec.c | 4 +- libavcodec/shorten.c | 4 +- libavcodec/smacker.c | 8 ++- libavcodec/smc.c | 4 +- libavcodec/snow.c | 4 +- libavcodec/sonic.c | 4 +- libavcodec/sp5xdec.c | 10 +++- libavcodec/sunrast.c | 4 +- libavcodec/svq1dec.c | 4 +- libavcodec/svq3.c | 4 +- libavcodec/targa.c | 4 +- libavcodec/tiertexseqv.c | 4 +- libavcodec/tiff.c | 4 +- libavcodec/truemotion1.c | 4 +- libavcodec/truemotion2.c | 4 +- libavcodec/truespeech.c | 4 +- libavcodec/tscc.c | 4 +- libavcodec/tta.c | 4 +- libavcodec/txd.c | 4 +- libavcodec/ulti.c | 4 +- libavcodec/utils.c | 54 ++++++++++++++++--- libavcodec/vb.c | 4 +- libavcodec/vc1.c | 4 +- libavcodec/vcr1.c | 4 +- libavcodec/vmdav.c | 8 ++- libavcodec/vmnc.c | 4 +- libavcodec/vorbis_dec.c | 4 +- libavcodec/vp3.c | 4 +- libavcodec/vqavideo.c | 4 +- libavcodec/wavpack.c | 4 +- libavcodec/wmadec.c | 4 +- libavcodec/wnv1.c | 4 +- libavcodec/ws-snd1.c | 4 +- libavcodec/xan.c | 4 +- libavcodec/xl.c | 4 +- libavcodec/xsubdec.c | 4 +- libavcodec/zmbv.c | 4 +- 137 files changed, 541 insertions(+), 172 deletions(-) diff --git a/libavcodec/4xm.c b/libavcodec/4xm.c index 5c96baaf3f..dd7daa5add 100644 --- a/libavcodec/4xm.c +++ b/libavcodec/4xm.c @@ -677,8 +677,10 @@ static int decode_i_frame(FourXContext *f, const uint8_t *buf, int length){ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; FourXContext * const f = avctx->priv_data; AVFrame *picture = data; AVFrame *p, temp; diff --git a/libavcodec/8bps.c b/libavcodec/8bps.c index 03b7ffd419..47c90c9fe2 100644 --- a/libavcodec/8bps.c +++ b/libavcodec/8bps.c @@ -58,8 +58,10 @@ typedef struct EightBpsContext { * Decode a frame * */ -static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, const uint8_t *buf, int buf_size) +static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; EightBpsContext * const c = avctx->priv_data; const unsigned char *encoded = buf; unsigned char *pixptr, *pixptr_end; diff --git a/libavcodec/8svx.c b/libavcodec/8svx.c index 3a69f3d747..c139e5d40b 100644 --- a/libavcodec/8svx.c +++ b/libavcodec/8svx.c @@ -42,8 +42,10 @@ static const int16_t exponential[16] = { -128<<8, -64<<8, -32<<8, -16<<8, -8<<8, /** decode a frame */ static int eightsvx_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; EightSvxContext *esc = avctx->priv_data; int16_t *out_data = data; int consumed = buf_size; diff --git a/libavcodec/aac.c b/libavcodec/aac.c index dcd560d0cc..7ba3d946fc 100644 --- a/libavcodec/aac.c +++ b/libavcodec/aac.c @@ -1604,7 +1604,9 @@ static int parse_adts_frame_header(AACContext * ac, GetBitContext * gb) { return size; } -static int aac_decode_frame(AVCodecContext * avccontext, void * data, int * data_size, const uint8_t * buf, int buf_size) { +static int aac_decode_frame(AVCodecContext * avccontext, void * data, int * data_size, AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; AACContext * ac = avccontext->priv_data; ChannelElement * che = NULL; GetBitContext gb; diff --git a/libavcodec/aasc.c b/libavcodec/aasc.c index 1f66780154..daabb2cd30 100644 --- a/libavcodec/aasc.c +++ b/libavcodec/aasc.c @@ -59,8 +59,10 @@ static av_cold int aasc_decode_init(AVCodecContext *avctx) static int aasc_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; AascContext *s = avctx->priv_data; int compr, i, stride; diff --git a/libavcodec/ac3dec.c b/libavcodec/ac3dec.c index 766b262e49..854a38f32b 100644 --- a/libavcodec/ac3dec.c +++ b/libavcodec/ac3dec.c @@ -1226,8 +1226,10 @@ static int decode_audio_block(AC3DecodeContext *s, int blk) * Decode a single AC-3 frame. */ static int ac3_decode_frame(AVCodecContext * avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; AC3DecodeContext *s = avctx->priv_data; int16_t *out_samples = (int16_t *)data; int blk, ch, err; diff --git a/libavcodec/adpcm.c b/libavcodec/adpcm.c index 994c0c6865..7ddd72375a 100644 --- a/libavcodec/adpcm.c +++ b/libavcodec/adpcm.c @@ -877,8 +877,10 @@ static void xa_decode(short *out, const unsigned char *in, static int adpcm_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; ADPCMContext *c = avctx->priv_data; ADPCMChannelStatus *cs; int n, m, channel, i; diff --git a/libavcodec/adxdec.c b/libavcodec/adxdec.c index 0af26013bb..94ee793cfa 100644 --- a/libavcodec/adxdec.c +++ b/libavcodec/adxdec.c @@ -104,8 +104,10 @@ static int adx_decode_header(AVCodecContext *avctx,const unsigned char *buf,size static int adx_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf0, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf0 = avpkt->data; + int buf_size = avpkt->size; ADXContext *c = avctx->priv_data; short *samples = data; const uint8_t *buf = buf0; diff --git a/libavcodec/alac.c b/libavcodec/alac.c index 436329f560..b9715eef85 100644 --- a/libavcodec/alac.c +++ b/libavcodec/alac.c @@ -400,8 +400,10 @@ static void reconstruct_stereo_16(int32_t *buffer[MAX_CHANNELS], static int alac_decode_frame(AVCodecContext *avctx, void *outbuffer, int *outputsize, - const uint8_t *inbuffer, int input_buffer_size) + AVPacket *avpkt) { + const uint8_t *inbuffer = avpkt->data; + int input_buffer_size = avpkt->size; ALACContext *alac = avctx->priv_data; int channels; diff --git a/libavcodec/apedec.c b/libavcodec/apedec.c index 59be99694e..0305d7b4ec 100644 --- a/libavcodec/apedec.c +++ b/libavcodec/apedec.c @@ -806,8 +806,10 @@ static void ape_unpack_stereo(APEContext * ctx, int count) static int ape_decode_frame(AVCodecContext * avctx, void *data, int *data_size, - const uint8_t * buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; APEContext *s = avctx->priv_data; int16_t *samples = data; int nblocks; diff --git a/libavcodec/asv1.c b/libavcodec/asv1.c index 7626873133..81dc18dacc 100644 --- a/libavcodec/asv1.c +++ b/libavcodec/asv1.c @@ -387,8 +387,10 @@ static inline void dct_get(ASV1Context *a, int mb_x, int mb_y){ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; ASV1Context * const a = avctx->priv_data; AVFrame *picture = data; AVFrame * const p= (AVFrame*)&a->picture; diff --git a/libavcodec/atrac3.c b/libavcodec/atrac3.c index bdb8a8a8d4..811dc4fe0c 100644 --- a/libavcodec/atrac3.c +++ b/libavcodec/atrac3.c @@ -878,7 +878,9 @@ static int decodeFrame(ATRAC3Context *q, const uint8_t* databuf) static int atrac3_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) { + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; ATRAC3Context *q = avctx->priv_data; int result = 0, i; const uint8_t* databuf; diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 1414c945b1..1d1b9310f6 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -2429,8 +2429,7 @@ typedef struct AVCodec { int (*init)(AVCodecContext *); int (*encode)(AVCodecContext *, uint8_t *buf, int buf_size, void *data); int (*close)(AVCodecContext *); - int (*decode)(AVCodecContext *, void *outdata, int *outdata_size, - const uint8_t *buf, int buf_size); + int (*decode)(AVCodecContext *, void *outdata, int *outdata_size, AVPacket *avpkt); /** * Codec capabilities. * see CODEC_CAP_* @@ -3020,26 +3019,45 @@ int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, v */ int avcodec_open(AVCodecContext *avctx, AVCodec *codec); +#if LIBAVCODEC_VERSION_MAJOR < 53 /** * Decodes an audio frame from \p buf into \p samples. - * The avcodec_decode_audio2() function decodes an audio frame from the input - * buffer \p buf of size \p buf_size. To decode it, it makes use of the + * Wrapper function which calls avcodec_decode_audio3. + * + * @deprecated Use avcodec_decode_audio3 instead. + * @param avctx the codec context + * @param[out] samples the output buffer + * @param[in,out] frame_size_ptr the output buffer size in bytes + * @param[in] buf the input buffer + * @param[in] buf_size the input buffer size in bytes + * @return On error a negative value is returned, otherwise the number of bytes + * used or zero if no frame could be decompressed. + */ +attribute_deprecated int avcodec_decode_audio2(AVCodecContext *avctx, int16_t *samples, + int *frame_size_ptr, + const uint8_t *buf, int buf_size); +#endif + +/** + * Decodes an audio frame from \p avpkt->data into \p samples. + * The avcodec_decode_audio3() function decodes an audio frame from the input + * buffer \p avpkt->data of size \p avpkt->size. To decode it, it makes use of the * audio codec which was coupled with \p avctx using avcodec_open(). The * resulting decoded frame is stored in output buffer \p samples. If no frame * could be decompressed, \p frame_size_ptr is zero. Otherwise, it is the * decompressed frame size in \e bytes. * * @warning You \e must set \p frame_size_ptr to the allocated size of the - * output buffer before calling avcodec_decode_audio2(). + * output buffer before calling avcodec_decode_audio3(). * * @warning The input buffer must be \c FF_INPUT_BUFFER_PADDING_SIZE larger than * the actual read bytes because some optimized bitstream readers read 32 or 64 * bits at once and could read over the end. * - * @warning The end of the input buffer \p buf should be set to 0 to ensure that + * @warning The end of the input buffer \p avpkt->data should be set to 0 to ensure that * no overreading happens for damaged MPEG streams. * - * @note You might have to align the input buffer \p buf and output buffer \p + * @note You might have to align the input buffer \p avpkt->data and output buffer \p * samples. The alignment requirements depend on the CPU: On some CPUs it isn't * necessary at all, on others it won't work at all if not aligned and on others * it will work but it will have an impact on performance. In practice, the @@ -3051,19 +3069,37 @@ int avcodec_open(AVCodecContext *avctx, AVCodec *codec); * @param avctx the codec context * @param[out] samples the output buffer * @param[in,out] frame_size_ptr the output buffer size in bytes - * @param[in] buf the input buffer - * @param[in] buf_size the input buffer size in bytes + * @param[in] avpkt The input AVPacket containing the input buffer. * @return On error a negative value is returned, otherwise the number of bytes * used or zero if no frame could be decompressed. */ -int avcodec_decode_audio2(AVCodecContext *avctx, int16_t *samples, +int avcodec_decode_audio3(AVCodecContext *avctx, int16_t *samples, int *frame_size_ptr, - const uint8_t *buf, int buf_size); + AVPacket *avpkt); +#if LIBAVCODEC_VERSION_MAJOR < 53 /** * Decodes a video frame from \p buf into \p picture. - * The avcodec_decode_video() function decodes a video frame from the input - * buffer \p buf of size \p buf_size. To decode it, it makes use of the + * Wrapper function which calls avcodec_decode_video2. + * + * @deprecated Use avcodec_decode_video2 instead. + * @param avctx the codec context + * @param[out] picture The AVFrame in which the decoded video frame will be stored. + * @param[in] buf the input buffer + * @param[in] buf_size the size of the input buffer in bytes + * @param[in,out] got_picture_ptr Zero if no frame could be decompressed, otherwise, it is nonzero. + * @return On error a negative value is returned, otherwise the number of bytes + * used or zero if no frame could be decompressed. + */ +attribute_deprecated int avcodec_decode_video(AVCodecContext *avctx, AVFrame *picture, + int *got_picture_ptr, + const uint8_t *buf, int buf_size); +#endif + +/** + * Decodes a video frame from \p avpkt->data into \p picture. + * The avcodec_decode_video2() function decodes a video frame from the input + * buffer \p avpkt->data of size \p avpkt->size. To decode it, it makes use of the * video codec which was coupled with \p avctx using avcodec_open(). The * resulting decoded frame is stored in \p picture. * @@ -3074,7 +3110,7 @@ int avcodec_decode_audio2(AVCodecContext *avctx, int16_t *samples, * @warning The end of the input buffer \p buf should be set to 0 to ensure that * no overreading happens for damaged MPEG streams. * - * @note You might have to align the input buffer \p buf and output buffer \p + * @note You might have to align the input buffer \p avpkt->data and output buffer \p * samples. The alignment requirements depend on the CPU: on some CPUs it isn't * necessary at all, on others it won't work at all if not aligned and on others * it will work but it will have an impact on performance. In practice, the @@ -3084,26 +3120,42 @@ int avcodec_decode_audio2(AVCodecContext *avctx, int16_t *samples, * start of the buffer to 16. * * @note Some codecs have a delay between input and output, these need to be - * feeded with buf=NULL, buf_size=0 at the end to return the remaining frames. + * feeded with avpkt->data=NULL, avpkt->size=0 at the end to return the remaining frames. * * @param avctx the codec context * @param[out] picture The AVFrame in which the decoded video frame will be stored. - * @param[in] buf the input buffer - * @param[in] buf_size the size of the input buffer in bytes + * @param[in] avpkt The input AVpacket containing the input buffer. * @param[in,out] got_picture_ptr Zero if no frame could be decompressed, otherwise, it is nonzero. * @return On error a negative value is returned, otherwise the number of bytes * used or zero if no frame could be decompressed. */ -int avcodec_decode_video(AVCodecContext *avctx, AVFrame *picture, +int avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture, int *got_picture_ptr, - const uint8_t *buf, int buf_size); + AVPacket *avpkt); +#if LIBAVCODEC_VERSION_MAJOR < 53 /* Decode a subtitle message. Return -1 if error, otherwise return the * number of bytes used. If no subtitle could be decompressed, * got_sub_ptr is zero. Otherwise, the subtitle is stored in *sub. */ -int avcodec_decode_subtitle(AVCodecContext *avctx, AVSubtitle *sub, +attribute_deprecated int avcodec_decode_subtitle(AVCodecContext *avctx, AVSubtitle *sub, int *got_sub_ptr, const uint8_t *buf, int buf_size); +#endif + +/** + * Decodes a subtitle message. + * Returns -1 if error, otherwise returns the number of bytes used. + * If no subtitle could be decompressed, \p got_sub_ptr is zero. + * Otherwise, the subtitle is stored in \p *sub. + * + * @param avctx the codec context + * @param[out] sub The AVSubtitle in which the decoded subtitle will be stored. + * @param[in,out] got_sub_ptr Zero if no subtitle could be decompressed, otherwise, it is nonzero. + * @param[in] avpkt The input AVPacket containing the input buffer. + */ +int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub, + int *got_sub_ptr, + AVPacket *avpkt); int avcodec_parse_frame(AVCodecContext *avctx, uint8_t **pdata, int *data_size_ptr, uint8_t *buf, int buf_size); diff --git a/libavcodec/avs.c b/libavcodec/avs.c index 3b29c853b4..c00ff5eaf5 100644 --- a/libavcodec/avs.c +++ b/libavcodec/avs.c @@ -44,8 +44,10 @@ typedef enum { static int avs_decode_frame(AVCodecContext * avctx, - void *data, int *data_size, const uint8_t * buf, int buf_size) + void *data, int *data_size, AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; AvsContext *const avs = avctx->priv_data; AVFrame *picture = data; AVFrame *const p = (AVFrame *) & avs->picture; diff --git a/libavcodec/bethsoftvideo.c b/libavcodec/bethsoftvideo.c index 54bc46c555..92de25777a 100644 --- a/libavcodec/bethsoftvideo.c +++ b/libavcodec/bethsoftvideo.c @@ -58,8 +58,10 @@ static void set_palette(AVFrame * frame, const uint8_t * palette_buffer) static int bethsoftvid_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; BethsoftvidContext * vid = avctx->priv_data; char block_type; uint8_t * dst; diff --git a/libavcodec/bfi.c b/libavcodec/bfi.c index d611144df3..aaadb2f41e 100644 --- a/libavcodec/bfi.c +++ b/libavcodec/bfi.c @@ -45,9 +45,10 @@ static av_cold int bfi_decode_init(AVCodecContext * avctx) } static int bfi_decode_frame(AVCodecContext * avctx, void *data, - int *data_size, const uint8_t * buf, - int buf_size) + int *data_size, AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; BFIContext *bfi = avctx->priv_data; uint8_t *dst = bfi->dst; uint8_t *src, *dst_offset, colour1, colour2; diff --git a/libavcodec/bmp.c b/libavcodec/bmp.c index 5de1c46b13..735c085273 100644 --- a/libavcodec/bmp.c +++ b/libavcodec/bmp.c @@ -35,8 +35,10 @@ static av_cold int bmp_decode_init(AVCodecContext *avctx){ static int bmp_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; BMPContext *s = avctx->priv_data; AVFrame *picture = data; AVFrame *p = &s->picture; diff --git a/libavcodec/c93.c b/libavcodec/c93.c index 18ed7afcb4..0e362cad98 100644 --- a/libavcodec/c93.c +++ b/libavcodec/c93.c @@ -113,8 +113,10 @@ static inline void draw_n_color(uint8_t *out, int stride, int width, } static int decode_frame(AVCodecContext *avctx, void *data, - int *data_size, const uint8_t * buf, int buf_size) + int *data_size, AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; C93DecoderContext * const c93 = avctx->priv_data; AVFrame * const newpic = &c93->pictures[c93->currentpic]; AVFrame * const oldpic = &c93->pictures[c93->currentpic^1]; diff --git a/libavcodec/cavsdec.c b/libavcodec/cavsdec.c index a1895bcb88..c04cc39982 100644 --- a/libavcodec/cavsdec.c +++ b/libavcodec/cavsdec.c @@ -625,7 +625,9 @@ static void cavs_flush(AVCodecContext * avctx) { } static int cavs_decode_frame(AVCodecContext * avctx,void *data, int *data_size, - const uint8_t * buf, int buf_size) { + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; AVSContext *h = avctx->priv_data; MpegEncContext *s = &h->s; int input_size; diff --git a/libavcodec/cinepak.c b/libavcodec/cinepak.c index d0f5adb7fc..5030165bd0 100644 --- a/libavcodec/cinepak.c +++ b/libavcodec/cinepak.c @@ -411,8 +411,10 @@ static av_cold int cinepak_decode_init(AVCodecContext *avctx) static int cinepak_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; CinepakContext *s = avctx->priv_data; s->data = buf; diff --git a/libavcodec/cljr.c b/libavcodec/cljr.c index 9f7ab61efd..9157b00137 100644 --- a/libavcodec/cljr.c +++ b/libavcodec/cljr.c @@ -42,8 +42,10 @@ typedef struct CLJRContext{ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; CLJRContext * const a = avctx->priv_data; AVFrame *picture = data; AVFrame * const p= (AVFrame*)&a->picture; diff --git a/libavcodec/cook.c b/libavcodec/cook.c index cee69fe14a..9dd13bfef8 100644 --- a/libavcodec/cook.c +++ b/libavcodec/cook.c @@ -979,7 +979,9 @@ static int decode_subpacket(COOKContext *q, const uint8_t *inbuffer, static int cook_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) { + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; COOKContext *q = avctx->priv_data; if (buf_size < avctx->block_align) diff --git a/libavcodec/cscd.c b/libavcodec/cscd.c index 9379b2c7f3..5fe097712d 100644 --- a/libavcodec/cscd.c +++ b/libavcodec/cscd.c @@ -135,7 +135,9 @@ static void add_frame_32(AVFrame *f, const uint8_t *src, #endif static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) { + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; CamStudioContext *c = avctx->priv_data; AVFrame *picture = data; diff --git a/libavcodec/cyuv.c b/libavcodec/cyuv.c index 2b15814b31..944d778198 100644 --- a/libavcodec/cyuv.c +++ b/libavcodec/cyuv.c @@ -60,8 +60,10 @@ static av_cold int cyuv_decode_init(AVCodecContext *avctx) static int cyuv_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; CyuvDecodeContext *s=avctx->priv_data; unsigned char *y_plane; diff --git a/libavcodec/dca.c b/libavcodec/dca.c index 3bc895bc16..8dfec8e9a9 100644 --- a/libavcodec/dca.c +++ b/libavcodec/dca.c @@ -1209,8 +1209,10 @@ static int dca_convert_bitstream(const uint8_t * src, int src_size, uint8_t * ds */ static int dca_decode_frame(AVCodecContext * avctx, void *data, int *data_size, - const uint8_t * buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; int i; int16_t *samples = data; diff --git a/libavcodec/dnxhddec.c b/libavcodec/dnxhddec.c index 861a0301de..2d3762b396 100644 --- a/libavcodec/dnxhddec.c +++ b/libavcodec/dnxhddec.c @@ -278,8 +278,10 @@ static int dnxhd_decode_macroblocks(DNXHDContext *ctx, const uint8_t *buf, int b } static int dnxhd_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; DNXHDContext *ctx = avctx->priv_data; AVFrame *picture = data; int first_field = 1; diff --git a/libavcodec/dpcm.c b/libavcodec/dpcm.c index daa21cd09e..69c7002ad7 100644 --- a/libavcodec/dpcm.c +++ b/libavcodec/dpcm.c @@ -161,8 +161,10 @@ static av_cold int dpcm_decode_init(AVCodecContext *avctx) static int dpcm_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; DPCMContext *s = avctx->priv_data; int in, out = 0; int predictor[2]; diff --git a/libavcodec/dsicinav.c b/libavcodec/dsicinav.c index f8093fccf2..6e5ff12446 100644 --- a/libavcodec/dsicinav.c +++ b/libavcodec/dsicinav.c @@ -195,8 +195,10 @@ static void cin_decode_rle(const unsigned char *src, int src_size, unsigned char static int cinvideo_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; CinVideoContext *cin = avctx->priv_data; int i, y, palette_type, palette_colors_count, bitmap_frame_type, bitmap_frame_size; @@ -312,8 +314,10 @@ static av_cold int cinaudio_decode_init(AVCodecContext *avctx) static int cinaudio_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; CinAudioContext *cin = avctx->priv_data; const uint8_t *src = buf; int16_t *samples = (int16_t *)data; diff --git a/libavcodec/dv.c b/libavcodec/dv.c index 59ebb088e6..31325f6809 100644 --- a/libavcodec/dv.c +++ b/libavcodec/dv.c @@ -1111,8 +1111,10 @@ static int dv_encode_video_segment(AVCodecContext *avctx, void *arg) 144000 bytes for PAL - or twice those for 50Mbps) */ static int dvvideo_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; DVVideoContext *s = avctx->priv_data; s->sys = dv_frame_profile(buf); diff --git a/libavcodec/dvbsubdec.c b/libavcodec/dvbsubdec.c index 2a05390d39..a10f97bb2f 100644 --- a/libavcodec/dvbsubdec.c +++ b/libavcodec/dvbsubdec.c @@ -1345,8 +1345,10 @@ static int dvbsub_display_end_segment(AVCodecContext *avctx, const uint8_t *buf, static int dvbsub_decode(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; DVBSubContext *ctx = (DVBSubContext*) avctx->priv_data; AVSubtitle *sub = (AVSubtitle*) data; const uint8_t *p, *p_end; diff --git a/libavcodec/dvdsubdec.c b/libavcodec/dvdsubdec.c index 9691e384f4..ba1738089d 100644 --- a/libavcodec/dvdsubdec.c +++ b/libavcodec/dvdsubdec.c @@ -475,8 +475,10 @@ static void ppm_save(const char *filename, uint8_t *bitmap, int w, int h, static int dvdsub_decode(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; AVSubtitle *sub = (void *)data; int is_menu; diff --git a/libavcodec/dxa.c b/libavcodec/dxa.c index e415da7187..5339580c02 100644 --- a/libavcodec/dxa.c +++ b/libavcodec/dxa.c @@ -188,8 +188,10 @@ static int decode_13(AVCodecContext *avctx, DxaDecContext *c, uint8_t* dst, uint return 0; } -static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, const uint8_t *buf, int buf_size) +static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; DxaDecContext * const c = avctx->priv_data; uint8_t *outptr, *srcptr, *tmpptr; unsigned long dsize; diff --git a/libavcodec/eacmv.c b/libavcodec/eacmv.c index 18321aada5..3de08cc1a0 100644 --- a/libavcodec/eacmv.c +++ b/libavcodec/eacmv.c @@ -144,8 +144,10 @@ static void cmv_process_header(CmvContext *s, const uint8_t *buf, const uint8_t static int cmv_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; CmvContext *s = avctx->priv_data; const uint8_t *buf_end = buf + buf_size; diff --git a/libavcodec/eatgq.c b/libavcodec/eatgq.c index dd833f52c9..05f03e7b05 100644 --- a/libavcodec/eatgq.c +++ b/libavcodec/eatgq.c @@ -190,7 +190,9 @@ static void tgq_calculate_qtable(TgqContext *s, int quant){ static int tgq_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size){ + AVPacket *avpkt){ + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; const uint8_t *buf_start = buf; const uint8_t *buf_end = buf + buf_size; TgqContext *s = avctx->priv_data; diff --git a/libavcodec/eatgv.c b/libavcodec/eatgv.c index 90e3ebf489..93a722ff25 100644 --- a/libavcodec/eatgv.c +++ b/libavcodec/eatgv.c @@ -237,8 +237,10 @@ static void cond_release_buffer(AVFrame *pic) static int tgv_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; TgvContext *s = avctx->priv_data; const uint8_t *buf_end = buf + buf_size; int chunk_type; diff --git a/libavcodec/eatqi.c b/libavcodec/eatqi.c index 66123a2aae..3b6b8ebf9d 100644 --- a/libavcodec/eatqi.c +++ b/libavcodec/eatqi.c @@ -101,8 +101,10 @@ static void tqi_calculate_qtable(MpegEncContext *s, int quant) static int tqi_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; const uint8_t *buf_end = buf+buf_size; TqiContext *t = avctx->priv_data; MpegEncContext *s = &t->s; diff --git a/libavcodec/escape124.c b/libavcodec/escape124.c index 90ba4795eb..7f22b84c67 100644 --- a/libavcodec/escape124.c +++ b/libavcodec/escape124.c @@ -206,8 +206,10 @@ static const uint16_t mask_matrix[] = {0x1, 0x2, 0x10, 0x20, */ static int escape124_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; Escape124Context *s = avctx->priv_data; GetBitContext gb; diff --git a/libavcodec/ffv1.c b/libavcodec/ffv1.c index 72c5fbd881..570999a32f 100644 --- a/libavcodec/ffv1.c +++ b/libavcodec/ffv1.c @@ -936,7 +936,9 @@ static av_cold int decode_init(AVCodecContext *avctx) return 0; } -static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, const uint8_t *buf, int buf_size){ +static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPacket *avpkt){ + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; FFV1Context *f = avctx->priv_data; RangeCoder * const c= &f->c; const int width= f->width; diff --git a/libavcodec/flacdec.c b/libavcodec/flacdec.c index 04e81c6faa..e6b52c7d1b 100644 --- a/libavcodec/flacdec.c +++ b/libavcodec/flacdec.c @@ -636,8 +636,10 @@ static int decode_frame(FLACContext *s) static int flac_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; FLACContext *s = avctx->priv_data; int i, j = 0, input_buf_size = 0, bytes_read = 0; int16_t *samples_16 = data; diff --git a/libavcodec/flashsv.c b/libavcodec/flashsv.c index 7937efce25..91c04996eb 100644 --- a/libavcodec/flashsv.c +++ b/libavcodec/flashsv.c @@ -102,8 +102,10 @@ static av_cold int flashsv_decode_init(AVCodecContext *avctx) static int flashsv_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; FlashSVContext *s = avctx->priv_data; int h_blocks, v_blocks, h_part, v_part, i, j; GetBitContext gb; diff --git a/libavcodec/flicvideo.c b/libavcodec/flicvideo.c index 2261c40524..37bed0a0de 100644 --- a/libavcodec/flicvideo.c +++ b/libavcodec/flicvideo.c @@ -701,8 +701,10 @@ static int flic_decode_frame_24BPP(AVCodecContext *avctx, static int flic_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; if (avctx->pix_fmt == PIX_FMT_PAL8) { return flic_decode_frame_8BPP(avctx, data, data_size, buf, buf_size); diff --git a/libavcodec/fraps.c b/libavcodec/fraps.c index 14da1a0b61..6fac1680a7 100644 --- a/libavcodec/fraps.c +++ b/libavcodec/fraps.c @@ -130,8 +130,10 @@ static int fraps2_decode_plane(FrapsContext *s, uint8_t *dst, int stride, int w, */ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; FrapsContext * const s = avctx->priv_data; AVFrame *frame = data; AVFrame * const f = (AVFrame*)&s->frame; diff --git a/libavcodec/g726.c b/libavcodec/g726.c index fe1cc3d6f2..ea72d39885 100644 --- a/libavcodec/g726.c +++ b/libavcodec/g726.c @@ -363,8 +363,10 @@ static int g726_encode_frame(AVCodecContext *avctx, static int g726_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; G726Context *c = avctx->priv_data; short *samples = data; GetBitContext gb; diff --git a/libavcodec/gifdec.c b/libavcodec/gifdec.c index d24550c846..137e7b2c23 100644 --- a/libavcodec/gifdec.c +++ b/libavcodec/gifdec.c @@ -282,8 +282,10 @@ static av_cold int gif_decode_init(AVCodecContext *avctx) return 0; } -static int gif_decode_frame(AVCodecContext *avctx, void *data, int *data_size, const uint8_t *buf, int buf_size) +static int gif_decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; GifState *s = avctx->priv_data; AVFrame *picture = data; int ret; diff --git a/libavcodec/h261dec.c b/libavcodec/h261dec.c index 70542869c5..3509e9f171 100644 --- a/libavcodec/h261dec.c +++ b/libavcodec/h261dec.c @@ -543,8 +543,10 @@ static int get_consumed_bytes(MpegEncContext *s, int buf_size){ static int h261_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; H261Context *h= avctx->priv_data; MpegEncContext *s = &h->s; int ret; diff --git a/libavcodec/h263dec.c b/libavcodec/h263dec.c index 4d03223856..2f57573394 100644 --- a/libavcodec/h263dec.c +++ b/libavcodec/h263dec.c @@ -331,8 +331,10 @@ static int decode_slice(MpegEncContext *s){ int ff_h263_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; MpegEncContext *s = avctx->priv_data; int ret; AVFrame *pict = data; diff --git a/libavcodec/h264.c b/libavcodec/h264.c index 8ae3256108..1b5aeb2ceb 100644 --- a/libavcodec/h264.c +++ b/libavcodec/h264.c @@ -7618,8 +7618,10 @@ static int get_consumed_bytes(MpegEncContext *s, int pos, int buf_size){ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; H264Context *h = avctx->priv_data; MpegEncContext *s = &h->s; AVFrame *pict = data; diff --git a/libavcodec/huffyuv.c b/libavcodec/huffyuv.c index 237b05fa94..e02bea2be8 100644 --- a/libavcodec/huffyuv.c +++ b/libavcodec/huffyuv.c @@ -942,7 +942,9 @@ static void draw_slice(HYuvContext *s, int y){ s->last_slice_end= y + h; } -static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, const uint8_t *buf, int buf_size){ +static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPacket *avpkt){ + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; HYuvContext *s = avctx->priv_data; const int width= s->width; const int width2= s->width>>1; diff --git a/libavcodec/idcinvideo.c b/libavcodec/idcinvideo.c index 63123663c0..05a3088852 100644 --- a/libavcodec/idcinvideo.c +++ b/libavcodec/idcinvideo.c @@ -209,8 +209,10 @@ static void idcin_decode_vlcs(IdcinContext *s) static int idcin_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; IdcinContext *s = avctx->priv_data; AVPaletteControl *palette_control = avctx->palctrl; diff --git a/libavcodec/imc.c b/libavcodec/imc.c index e8d43e6b08..ff50d4b59b 100644 --- a/libavcodec/imc.c +++ b/libavcodec/imc.c @@ -639,8 +639,10 @@ static int imc_get_coeffs (IMCContext* q) { static int imc_decode_frame(AVCodecContext * avctx, void *data, int *data_size, - const uint8_t * buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; IMCContext *q = avctx->priv_data; diff --git a/libavcodec/indeo2.c b/libavcodec/indeo2.c index 40c561a559..75b9ee9836 100644 --- a/libavcodec/indeo2.c +++ b/libavcodec/indeo2.c @@ -136,8 +136,10 @@ static int ir2_decode_plane_inter(Ir2Context *ctx, int width, int height, uint8_ static int ir2_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; Ir2Context * const s = avctx->priv_data; AVFrame *picture = data; AVFrame * const p= (AVFrame*)&s->picture; diff --git a/libavcodec/indeo3.c b/libavcodec/indeo3.c index 915bceed65..b5a9a4dba7 100644 --- a/libavcodec/indeo3.c +++ b/libavcodec/indeo3.c @@ -1062,8 +1062,10 @@ static int iv_decode_frame(Indeo3DecodeContext *s, static int indeo3_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; Indeo3DecodeContext *s=avctx->priv_data; uint8_t *src, *dest; int y; diff --git a/libavcodec/interplayvideo.c b/libavcodec/interplayvideo.c index 50db2e95da..51ee759ead 100644 --- a/libavcodec/interplayvideo.c +++ b/libavcodec/interplayvideo.c @@ -639,8 +639,10 @@ static av_cold int ipvideo_decode_init(AVCodecContext *avctx) static int ipvideo_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; IpvideoContext *s = avctx->priv_data; AVPaletteControl *palette_control = avctx->palctrl; diff --git a/libavcodec/kmvc.c b/libavcodec/kmvc.c index 30939ab411..a3389da1ad 100644 --- a/libavcodec/kmvc.c +++ b/libavcodec/kmvc.c @@ -224,9 +224,10 @@ static void kmvc_decode_inter_8x8(KmvcContext * ctx, const uint8_t * src, int w, } } -static int decode_frame(AVCodecContext * avctx, void *data, int *data_size, const uint8_t * buf, - int buf_size) +static int decode_frame(AVCodecContext * avctx, void *data, int *data_size, AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; KmvcContext *const ctx = avctx->priv_data; uint8_t *out, *src; int i; diff --git a/libavcodec/lcldec.c b/libavcodec/lcldec.c index 026be4f0b0..9c0d8d75d6 100644 --- a/libavcodec/lcldec.c +++ b/libavcodec/lcldec.c @@ -161,8 +161,10 @@ static unsigned int mszh_decomp(unsigned char * srcptr, int srclen, unsigned cha * Decode a frame * */ -static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, const uint8_t *buf, int buf_size) +static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; LclDecContext * const c = avctx->priv_data; unsigned char *encoded = (unsigned char *)buf; unsigned int pixel_ptr; diff --git a/libavcodec/libamr.c b/libavcodec/libamr.c index 6a9de50fdc..29325c9140 100644 --- a/libavcodec/libamr.c +++ b/libavcodec/libamr.c @@ -245,8 +245,10 @@ static av_cold int amr_nb_decode_close(AVCodecContext * avctx) static int amr_nb_decode_frame(AVCodecContext * avctx, void *data, int *data_size, - const uint8_t * buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; AMRContext *s = avctx->priv_data; const uint8_t*amrData=buf; int offset=0; @@ -654,8 +656,10 @@ static int amr_wb_decode_init(AVCodecContext * avctx) static int amr_wb_decode_frame(AVCodecContext * avctx, void *data, int *data_size, - const uint8_t * buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; AMRWBContext *s = avctx->priv_data; const uint8_t*amrData=buf; int mode; diff --git a/libavcodec/libdiracdec.c b/libavcodec/libdiracdec.c index 2c484a410c..9050f8829c 100644 --- a/libavcodec/libdiracdec.c +++ b/libavcodec/libdiracdec.c @@ -77,8 +77,10 @@ static av_cold int libdirac_decode_init(AVCodecContext *avccontext) static int libdirac_decode_frame(AVCodecContext *avccontext, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; FfmpegDiracDecoderParams *p_dirac_params = avccontext->priv_data; AVPicture *picture = data; diff --git a/libavcodec/libfaad.c b/libavcodec/libfaad.c index 3746886237..953c2a1ed2 100644 --- a/libavcodec/libfaad.c +++ b/libavcodec/libfaad.c @@ -149,8 +149,10 @@ static av_cold int faac_init_mp4(AVCodecContext *avctx) static int faac_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; FAACContext *s = avctx->priv_data; #ifndef FAAD2_VERSION unsigned long bytesconsumed; diff --git a/libavcodec/libgsm.c b/libavcodec/libgsm.c index e036afd3c4..7dc2af8405 100644 --- a/libavcodec/libgsm.c +++ b/libavcodec/libgsm.c @@ -138,7 +138,9 @@ AVCodec libgsm_ms_encoder = { static int libgsm_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - uint8_t *buf, int buf_size) { + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; *data_size = 0; /* In case of error */ if(buf_size < avctx->block_align) return -1; switch(avctx->codec_id) { diff --git a/libavcodec/libopenjpeg.c b/libavcodec/libopenjpeg.c index 70581ee73c..a3035fd290 100644 --- a/libavcodec/libopenjpeg.c +++ b/libavcodec/libopenjpeg.c @@ -58,8 +58,10 @@ static av_cold int libopenjpeg_decode_init(AVCodecContext *avctx) static int libopenjpeg_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; LibOpenJPEGContext *ctx = avctx->priv_data; AVFrame *picture = &ctx->image, *output = data; opj_dinfo_t *dec; diff --git a/libavcodec/libschroedingerdec.c b/libavcodec/libschroedingerdec.c index 1512ec79fc..3985a1ca2d 100644 --- a/libavcodec/libschroedingerdec.c +++ b/libavcodec/libschroedingerdec.c @@ -207,8 +207,10 @@ static void libschroedinger_handle_first_access_unit(AVCodecContext *avccontext) static int libschroedinger_decode_frame(AVCodecContext *avccontext, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; FfmpegSchroDecoderParams *p_schro_params = avccontext->priv_data; SchroDecoder *decoder = p_schro_params->decoder; diff --git a/libavcodec/libspeexdec.c b/libavcodec/libspeexdec.c index d44466b841..8c3dc293df 100644 --- a/libavcodec/libspeexdec.c +++ b/libavcodec/libspeexdec.c @@ -90,8 +90,10 @@ static av_cold int libspeex_decode_init(AVCodecContext *avctx) static int libspeex_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; LibSpeexContext *s = avctx->priv_data; int16_t *output = data, *end; int i, num_samples; diff --git a/libavcodec/loco.c b/libavcodec/loco.c index 64b718fb81..fc7b44075f 100644 --- a/libavcodec/loco.c +++ b/libavcodec/loco.c @@ -158,8 +158,10 @@ static int loco_decode_plane(LOCOContext *l, uint8_t *data, int width, int heigh static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; LOCOContext * const l = avctx->priv_data; AVFrame * const p= (AVFrame*)&l->pic; int decoded; diff --git a/libavcodec/mace.c b/libavcodec/mace.c index d26164706a..ae7b4dc833 100644 --- a/libavcodec/mace.c +++ b/libavcodec/mace.c @@ -236,8 +236,10 @@ static av_cold int mace_decode_init(AVCodecContext * avctx) static int mace_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; int16_t *samples = data; MACEContext *ctx = avctx->priv_data; int i, j, k, l; diff --git a/libavcodec/mdec.c b/libavcodec/mdec.c index ccde88df7d..ad998649ed 100644 --- a/libavcodec/mdec.c +++ b/libavcodec/mdec.c @@ -154,8 +154,10 @@ static inline void idct_put(MDECContext *a, int mb_x, int mb_y){ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; MDECContext * const a = avctx->priv_data; AVFrame *picture = data; AVFrame * const p= &a->picture; diff --git a/libavcodec/mimic.c b/libavcodec/mimic.c index a6ab090e2d..da5bba3c2e 100644 --- a/libavcodec/mimic.c +++ b/libavcodec/mimic.c @@ -274,8 +274,10 @@ static void prepare_avpic(MimicContext *ctx, AVPicture *dst, AVPicture *src) } static int mimic_decode_frame(AVCodecContext *avctx, void *data, - int *data_size, const uint8_t *buf, int buf_size) + int *data_size, AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; MimicContext *ctx = avctx->priv_data; int is_pframe; int width, height; diff --git a/libavcodec/mjpegbdec.c b/libavcodec/mjpegbdec.c index 62b29e0623..04ad6c106c 100644 --- a/libavcodec/mjpegbdec.c +++ b/libavcodec/mjpegbdec.c @@ -31,8 +31,10 @@ static int mjpegb_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; MJpegDecodeContext *s = avctx->priv_data; const uint8_t *buf_end, *buf_ptr; AVFrame *picture = data; diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c index 145719c16e..1463d115d3 100644 --- a/libavcodec/mjpegdec.c +++ b/libavcodec/mjpegdec.c @@ -1258,8 +1258,10 @@ found: int ff_mjpeg_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; MJpegDecodeContext *s = avctx->priv_data; const uint8_t *buf_end, *buf_ptr; int start_code; diff --git a/libavcodec/mjpegdec.h b/libavcodec/mjpegdec.h index ab034d79ba..a0974201d2 100644 --- a/libavcodec/mjpegdec.h +++ b/libavcodec/mjpegdec.h @@ -106,7 +106,7 @@ int ff_mjpeg_decode_init(AVCodecContext *avctx); int ff_mjpeg_decode_end(AVCodecContext *avctx); int ff_mjpeg_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size); + AVPacket *avpkt); int ff_mjpeg_decode_dqt(MJpegDecodeContext *s); int ff_mjpeg_decode_dht(MJpegDecodeContext *s); int ff_mjpeg_decode_sof(MJpegDecodeContext *s); diff --git a/libavcodec/mlpdec.c b/libavcodec/mlpdec.c index 9642104a5f..ba374c9dfa 100644 --- a/libavcodec/mlpdec.c +++ b/libavcodec/mlpdec.c @@ -904,8 +904,10 @@ static int output_data(MLPDecodeContext *m, unsigned int substr, * otherwise returns the number of bytes consumed. */ static int read_access_unit(AVCodecContext *avctx, void* data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; MLPDecodeContext *m = avctx->priv_data; GetBitContext gb; unsigned int length, substr; diff --git a/libavcodec/mmvideo.c b/libavcodec/mmvideo.c index 238b991a8d..6dc95589c6 100644 --- a/libavcodec/mmvideo.c +++ b/libavcodec/mmvideo.c @@ -159,8 +159,10 @@ static void mm_decode_inter(MmContext * s, int half_horiz, int half_vert, const static int mm_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; MmContext *s = avctx->priv_data; const uint8_t *buf_end = buf+buf_size; int type; diff --git a/libavcodec/motionpixels.c b/libavcodec/motionpixels.c index f69dcf95fe..02ea04986a 100644 --- a/libavcodec/motionpixels.c +++ b/libavcodec/motionpixels.c @@ -281,8 +281,10 @@ static void mp_decode_frame_helper(MotionPixelsContext *mp, GetBitContext *gb) static int mp_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; MotionPixelsContext *mp = avctx->priv_data; GetBitContext gb; int i, count1, count2, sz; diff --git a/libavcodec/mpc7.c b/libavcodec/mpc7.c index 7362a19192..8bc05d5375 100644 --- a/libavcodec/mpc7.c +++ b/libavcodec/mpc7.c @@ -156,8 +156,10 @@ static inline void idx_to_quant(MPCContext *c, GetBitContext *gb, int idx, int * static int mpc7_decode_frame(AVCodecContext * avctx, void *data, int *data_size, - const uint8_t * buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; MPCContext *c = avctx->priv_data; GetBitContext gb; uint8_t *bits; diff --git a/libavcodec/mpc8.c b/libavcodec/mpc8.c index ff7d5e5805..d72e36f306 100644 --- a/libavcodec/mpc8.c +++ b/libavcodec/mpc8.c @@ -180,8 +180,10 @@ static av_cold int mpc8_decode_init(AVCodecContext * avctx) static int mpc8_decode_frame(AVCodecContext * avctx, void *data, int *data_size, - const uint8_t * buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; MPCContext *c = avctx->priv_data; GetBitContext gb2, *gb = &gb2; int i, j, k, ch, cnt, res, t; diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c index b353b88f4c..f4e4958bfa 100644 --- a/libavcodec/mpeg12.c +++ b/libavcodec/mpeg12.c @@ -2260,8 +2260,10 @@ static int decode_chunks(AVCodecContext *avctx, /* handle buffering and image synchronisation */ static int mpeg_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; Mpeg1Context *s = avctx->priv_data; AVFrame *picture = data; MpegEncContext *s2 = &s->mpeg_enc_ctx; diff --git a/libavcodec/mpegaudiodec.c b/libavcodec/mpegaudiodec.c index ce0066bbf7..8c052a4d5d 100644 --- a/libavcodec/mpegaudiodec.c +++ b/libavcodec/mpegaudiodec.c @@ -2258,8 +2258,10 @@ static int mp_decode_frame(MPADecodeContext *s, static int decode_frame(AVCodecContext * avctx, void *data, int *data_size, - const uint8_t * buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; MPADecodeContext *s = avctx->priv_data; uint32_t header; int out_size; @@ -2315,8 +2317,10 @@ static void flush(AVCodecContext *avctx){ #if CONFIG_MP3ADU_DECODER static int decode_frame_adu(AVCodecContext * avctx, void *data, int *data_size, - const uint8_t * buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; MPADecodeContext *s = avctx->priv_data; uint32_t header; int len, out_size; @@ -2459,8 +2463,10 @@ static av_cold int decode_close_mp3on4(AVCodecContext * avctx) static int decode_frame_mp3on4(AVCodecContext * avctx, void *data, int *data_size, - const uint8_t * buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; MP3On4DecodeContext *s = avctx->priv_data; MPADecodeContext *m; int fsize, len = buf_size, out_size = 0; diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h index 615c0faf22..10dd48ca1e 100644 --- a/libavcodec/mpegvideo.h +++ b/libavcodec/mpegvideo.h @@ -795,7 +795,7 @@ int ff_h261_get_picture_format(int width, int height); int ff_h263_decode_init(AVCodecContext *avctx); int ff_h263_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size); + AVPacket *avpkt); int ff_h263_decode_end(AVCodecContext *avctx); void h263_encode_mb(MpegEncContext *s, DCTELEM block[6][64], diff --git a/libavcodec/msrle.c b/libavcodec/msrle.c index 2b477d9427..0d77e30c5e 100644 --- a/libavcodec/msrle.c +++ b/libavcodec/msrle.c @@ -63,8 +63,10 @@ static av_cold int msrle_decode_init(AVCodecContext *avctx) static int msrle_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; MsrleContext *s = avctx->priv_data; s->buf = buf; diff --git a/libavcodec/msvideo1.c b/libavcodec/msvideo1.c index 4b27b42ed1..78d358ed32 100644 --- a/libavcodec/msvideo1.c +++ b/libavcodec/msvideo1.c @@ -294,8 +294,10 @@ static void msvideo1_decode_16bit(Msvideo1Context *s) static int msvideo1_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; Msvideo1Context *s = avctx->priv_data; s->buf = buf; diff --git a/libavcodec/nellymoserdec.c b/libavcodec/nellymoserdec.c index ff70854800..5ea2547a76 100644 --- a/libavcodec/nellymoserdec.c +++ b/libavcodec/nellymoserdec.c @@ -153,7 +153,9 @@ static av_cold int decode_init(AVCodecContext * avctx) { static int decode_tag(AVCodecContext * avctx, void *data, int *data_size, - const uint8_t * buf, int buf_size) { + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; NellyMoserDecodeContext *s = avctx->priv_data; int blocks, i; int16_t* samples; diff --git a/libavcodec/nuv.c b/libavcodec/nuv.c index a89953c29c..4f049baf90 100644 --- a/libavcodec/nuv.c +++ b/libavcodec/nuv.c @@ -128,7 +128,9 @@ static int codec_reinit(AVCodecContext *avctx, int width, int height, int qualit } static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) { + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; NuvContext *c = avctx->priv_data; AVFrame *picture = data; int orig_size = buf_size; diff --git a/libavcodec/pcm.c b/libavcodec/pcm.c index e8d6a79834..b30e2fe70b 100644 --- a/libavcodec/pcm.c +++ b/libavcodec/pcm.c @@ -323,8 +323,10 @@ static av_cold int pcm_decode_init(AVCodecContext * avctx) static int pcm_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; PCMDecode *s = avctx->priv_data; int sample_size, c, n; short *samples; diff --git a/libavcodec/pcx.c b/libavcodec/pcx.c index bf80e437fe..23a808d633 100644 --- a/libavcodec/pcx.c +++ b/libavcodec/pcx.c @@ -70,7 +70,9 @@ static void pcx_palette(const uint8_t **src, uint32_t *dst, unsigned int pallen) } static int pcx_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) { + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; PCXContext * const s = avctx->priv_data; AVFrame *picture = data; AVFrame * const p = &s->picture; diff --git a/libavcodec/pngdec.c b/libavcodec/pngdec.c index a3431525b6..fadbcd07c9 100644 --- a/libavcodec/pngdec.c +++ b/libavcodec/pngdec.c @@ -379,8 +379,10 @@ static int png_decode_idat(PNGDecContext *s, int length) static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; PNGDecContext * const s = avctx->priv_data; AVFrame *picture = data; AVFrame * const p= &s->picture; diff --git a/libavcodec/pnmenc.c b/libavcodec/pnmenc.c index 69e6bed657..2619d90c85 100644 --- a/libavcodec/pnmenc.c +++ b/libavcodec/pnmenc.c @@ -34,8 +34,10 @@ static av_cold int common_init(AVCodecContext *avctx){ static int pnm_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; PNMContext * const s = avctx->priv_data; AVFrame *picture = data; AVFrame * const p= (AVFrame*)&s->picture; diff --git a/libavcodec/ptx.c b/libavcodec/ptx.c index 2ab45b08a7..67799fac9e 100644 --- a/libavcodec/ptx.c +++ b/libavcodec/ptx.c @@ -36,7 +36,9 @@ static av_cold int ptx_init(AVCodecContext *avctx) { } static int ptx_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) { + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; PTXContext * const s = avctx->priv_data; AVFrame *picture = data; AVFrame * const p = &s->picture; diff --git a/libavcodec/qcelpdec.c b/libavcodec/qcelpdec.c index 9bef200670..516965c7cf 100644 --- a/libavcodec/qcelpdec.c +++ b/libavcodec/qcelpdec.c @@ -729,8 +729,10 @@ static void warn_insufficient_frame_quality(AVCodecContext *avctx, } static int qcelp_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; QCELPContext *q = avctx->priv_data; float *outbuffer = data; int i; diff --git a/libavcodec/qdm2.c b/libavcodec/qdm2.c index a3373a16d9..6dafd0aabd 100644 --- a/libavcodec/qdm2.c +++ b/libavcodec/qdm2.c @@ -1968,8 +1968,10 @@ static void qdm2_decode (QDM2Context *q, const uint8_t *in, int16_t *out) static int qdm2_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; QDM2Context *s = avctx->priv_data; if(!buf) diff --git a/libavcodec/qdrw.c b/libavcodec/qdrw.c index 4349e168e0..0f9609159c 100644 --- a/libavcodec/qdrw.c +++ b/libavcodec/qdrw.c @@ -34,8 +34,10 @@ typedef struct QdrawContext{ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; QdrawContext * const a = avctx->priv_data; AVFrame * const p= (AVFrame*)&a->pic; uint8_t* outdata; diff --git a/libavcodec/qpeg.c b/libavcodec/qpeg.c index aa8f69c0cf..64ab74b2b2 100644 --- a/libavcodec/qpeg.c +++ b/libavcodec/qpeg.c @@ -248,8 +248,10 @@ static void qpeg_decode_inter(const uint8_t *src, uint8_t *dst, int size, static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; QpegContext * const a = avctx->priv_data; AVFrame * const p= (AVFrame*)&a->pic; uint8_t* outdata; diff --git a/libavcodec/qtrle.c b/libavcodec/qtrle.c index d535c38dd9..998ba702d8 100644 --- a/libavcodec/qtrle.c +++ b/libavcodec/qtrle.c @@ -424,8 +424,10 @@ static av_cold int qtrle_decode_init(AVCodecContext *avctx) static int qtrle_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; QtrleContext *s = avctx->priv_data; int header, start_line; int stream_ptr, height, row_ptr; diff --git a/libavcodec/ra144.c b/libavcodec/ra144.c index 5126b07bdc..a4e4943952 100644 --- a/libavcodec/ra144.c +++ b/libavcodec/ra144.c @@ -287,8 +287,10 @@ static int interp(RA144Context *ractx, int16_t *out, int a, /** Uncompress one block (20 bytes -> 160*2 bytes). */ static int ra144_decode_frame(AVCodecContext * avctx, void *vdata, - int *data_size, const uint8_t *buf, int buf_size) + int *data_size, AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; static const uint8_t sizes[10] = {6, 5, 5, 4, 4, 3, 3, 3, 3, 2}; unsigned int refl_rms[4]; // RMS of the reflection coefficients uint16_t block_coefs[4][30]; // LPC coefficients of each sub-block diff --git a/libavcodec/ra288.c b/libavcodec/ra288.c index 746075e972..437adb355b 100644 --- a/libavcodec/ra288.c +++ b/libavcodec/ra288.c @@ -160,9 +160,10 @@ static void backward_filter(float *hist, float *rec, const float *window, } static int ra288_decode_frame(AVCodecContext * avctx, void *data, - int *data_size, const uint8_t * buf, - int buf_size) + int *data_size, AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; float *out = data; int i, j; RA288Context *ractx = avctx->priv_data; diff --git a/libavcodec/rawdec.c b/libavcodec/rawdec.c index 963e148aa1..25f5c91aa7 100644 --- a/libavcodec/rawdec.c +++ b/libavcodec/rawdec.c @@ -100,8 +100,10 @@ static void flip(AVCodecContext *avctx, AVPicture * picture){ static int raw_decode(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; RawVideoContext *context = avctx->priv_data; AVFrame * frame = (AVFrame *) data; diff --git a/libavcodec/rl2.c b/libavcodec/rl2.c index 7cbaca077c..afef8a77e8 100644 --- a/libavcodec/rl2.c +++ b/libavcodec/rl2.c @@ -181,8 +181,10 @@ static av_cold int rl2_decode_init(AVCodecContext *avctx) */ static int rl2_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; Rl2Context *s = avctx->priv_data; if(s->frame.data[0]) diff --git a/libavcodec/roqvideodec.c b/libavcodec/roqvideodec.c index c9daec729f..64924a5ce6 100644 --- a/libavcodec/roqvideodec.c +++ b/libavcodec/roqvideodec.c @@ -169,8 +169,10 @@ static av_cold int roq_decode_init(AVCodecContext *avctx) static int roq_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; RoqContext *s = avctx->priv_data; int copy= !s->current_frame->data[0]; diff --git a/libavcodec/rpza.c b/libavcodec/rpza.c index 27ed71f937..ba276c55e0 100644 --- a/libavcodec/rpza.c +++ b/libavcodec/rpza.c @@ -241,8 +241,10 @@ static av_cold int rpza_decode_init(AVCodecContext *avctx) static int rpza_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; RpzaContext *s = avctx->priv_data; s->buf = buf; diff --git a/libavcodec/rv10.c b/libavcodec/rv10.c index 71a25d650f..99fb904417 100644 --- a/libavcodec/rv10.c +++ b/libavcodec/rv10.c @@ -727,8 +727,10 @@ static int get_slice_offset(AVCodecContext *avctx, const uint8_t *buf, int n) static int rv10_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; MpegEncContext *s = avctx->priv_data; int i; AVFrame *pict = data; diff --git a/libavcodec/rv34.c b/libavcodec/rv34.c index 66036414d5..0e83f77ff5 100644 --- a/libavcodec/rv34.c +++ b/libavcodec/rv34.c @@ -1370,8 +1370,10 @@ static int get_slice_offset(AVCodecContext *avctx, const uint8_t *buf, int n) int ff_rv34_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; RV34DecContext *r = avctx->priv_data; MpegEncContext *s = &r->s; AVFrame *pict = data; diff --git a/libavcodec/rv34.h b/libavcodec/rv34.h index b14ba828dd..a4f768eb2a 100644 --- a/libavcodec/rv34.h +++ b/libavcodec/rv34.h @@ -123,7 +123,7 @@ typedef struct RV34DecContext{ */ int ff_rv34_get_start_offset(GetBitContext *gb, int blocks); int ff_rv34_decode_init(AVCodecContext *avctx); -int ff_rv34_decode_frame(AVCodecContext *avctx, void *data, int *data_size, const uint8_t *buf, int buf_size); +int ff_rv34_decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPacket *avpkt); int ff_rv34_decode_end(AVCodecContext *avctx); #endif /* AVCODEC_RV34_H */ diff --git a/libavcodec/sgidec.c b/libavcodec/sgidec.c index f6ca7438ee..dadbc19d22 100644 --- a/libavcodec/sgidec.c +++ b/libavcodec/sgidec.c @@ -147,8 +147,10 @@ static int read_uncompressed_sgi(unsigned char* out_buf, uint8_t* out_end, static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *in_buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *in_buf = avpkt->data; + int buf_size = avpkt->size; SgiState *s = avctx->priv_data; AVFrame *picture = data; AVFrame *p = &s->picture; diff --git a/libavcodec/shorten.c b/libavcodec/shorten.c index 053f5c2ed1..8f7149af0a 100644 --- a/libavcodec/shorten.c +++ b/libavcodec/shorten.c @@ -269,8 +269,10 @@ static void decode_subframe_lpc(ShortenContext *s, int channel, int residual_siz static int shorten_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; ShortenContext *s = avctx->priv_data; int i, input_buf_size = 0; int16_t *samples = data; diff --git a/libavcodec/smacker.c b/libavcodec/smacker.c index ad5827ea22..ac638f8522 100644 --- a/libavcodec/smacker.c +++ b/libavcodec/smacker.c @@ -345,8 +345,10 @@ static av_always_inline int smk_get_code(GetBitContext *gb, int *recode, int *la return v; } -static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, const uint8_t *buf, int buf_size) +static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; SmackVContext * const smk = avctx->priv_data; uint8_t *out; uint32_t *pal; @@ -565,8 +567,10 @@ static av_cold int smka_decode_init(AVCodecContext *avctx) /** * Decode Smacker audio data */ -static int smka_decode_frame(AVCodecContext *avctx, void *data, int *data_size, const uint8_t *buf, int buf_size) +static int smka_decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; GetBitContext gb; HuffContext h[4]; VLC vlc[4]; diff --git a/libavcodec/smc.c b/libavcodec/smc.c index d0102eaa9c..75ecd4f186 100644 --- a/libavcodec/smc.c +++ b/libavcodec/smc.c @@ -441,8 +441,10 @@ static av_cold int smc_decode_init(AVCodecContext *avctx) static int smc_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; SmcContext *s = avctx->priv_data; s->buf = buf; diff --git a/libavcodec/snow.c b/libavcodec/snow.c index ca85ad676d..a8de940949 100644 --- a/libavcodec/snow.c +++ b/libavcodec/snow.c @@ -4483,7 +4483,9 @@ static av_cold int decode_init(AVCodecContext *avctx) return 0; } -static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, const uint8_t *buf, int buf_size){ +static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPacket *avpkt){ + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; SnowContext *s = avctx->priv_data; RangeCoder * const c= &s->c; int bytes_read; diff --git a/libavcodec/sonic.c b/libavcodec/sonic.c index 14e19ad639..7db8b3c957 100644 --- a/libavcodec/sonic.c +++ b/libavcodec/sonic.c @@ -851,8 +851,10 @@ static av_cold int sonic_decode_close(AVCodecContext *avctx) static int sonic_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; SonicContext *s = avctx->priv_data; GetBitContext gb; int i, quant, ch, j; diff --git a/libavcodec/sp5xdec.c b/libavcodec/sp5xdec.c index 920b32d8cd..62214aadd3 100644 --- a/libavcodec/sp5xdec.c +++ b/libavcodec/sp5xdec.c @@ -32,8 +32,11 @@ static int sp5x_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; + AVPacket avpkt_recoded; #if 0 MJpegDecodeContext *s = avctx->priv_data; #endif @@ -89,7 +92,10 @@ static int sp5x_decode_frame(AVCodecContext *avctx, recoded[j++] = 0xD9; avctx->flags &= ~CODEC_FLAG_EMU_EDGE; - i = ff_mjpeg_decode_frame(avctx, data, data_size, recoded, j); + av_init_packet(&avpkt_recoded); + avpkt_recoded.data = recoded; + avpkt_recoded.size = j; + i = ff_mjpeg_decode_frame(avctx, data, data_size, &avpkt_recoded); av_free(recoded); diff --git a/libavcodec/sunrast.c b/libavcodec/sunrast.c index f7a7f9c6c0..8a78f1aab4 100644 --- a/libavcodec/sunrast.c +++ b/libavcodec/sunrast.c @@ -43,7 +43,9 @@ static av_cold int sunrast_init(AVCodecContext *avctx) { } static int sunrast_decode_frame(AVCodecContext *avctx, void *data, - int *data_size, const uint8_t *buf, int buf_size) { + int *data_size, AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; SUNRASTContext * const s = avctx->priv_data; AVFrame *picture = data; AVFrame * const p = &s->picture; diff --git a/libavcodec/svq1dec.c b/libavcodec/svq1dec.c index 7fef10bb99..225c9e8c4d 100644 --- a/libavcodec/svq1dec.c +++ b/libavcodec/svq1dec.c @@ -642,8 +642,10 @@ static int svq1_decode_frame_header (GetBitContext *bitbuf,MpegEncContext *s) { static int svq1_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; MpegEncContext *s=avctx->priv_data; uint8_t *current, *previous; int result, i, x, y, width, height; diff --git a/libavcodec/svq3.c b/libavcodec/svq3.c index bef7075a26..28dacf79a2 100644 --- a/libavcodec/svq3.c +++ b/libavcodec/svq3.c @@ -889,8 +889,10 @@ static av_cold int svq3_decode_init(AVCodecContext *avctx) static int svq3_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; MpegEncContext *const s = avctx->priv_data; H264Context *const h = avctx->priv_data; int m, mb_type; diff --git a/libavcodec/targa.c b/libavcodec/targa.c index 56a6876ec4..10b1aa47f2 100644 --- a/libavcodec/targa.c +++ b/libavcodec/targa.c @@ -91,8 +91,10 @@ static void targa_decode_rle(AVCodecContext *avctx, TargaContext *s, const uint8 static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; TargaContext * const s = avctx->priv_data; AVFrame *picture = data; AVFrame * const p= (AVFrame*)&s->picture; diff --git a/libavcodec/tiertexseqv.c b/libavcodec/tiertexseqv.c index fdf635864e..0970370713 100644 --- a/libavcodec/tiertexseqv.c +++ b/libavcodec/tiertexseqv.c @@ -187,8 +187,10 @@ static av_cold int seqvideo_decode_init(AVCodecContext *avctx) static int seqvideo_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; SeqVideoContext *seq = avctx->priv_data; diff --git a/libavcodec/tiff.c b/libavcodec/tiff.c index 503f8312f0..78051933c9 100644 --- a/libavcodec/tiff.c +++ b/libavcodec/tiff.c @@ -404,8 +404,10 @@ static int tiff_decode_tag(TiffContext *s, const uint8_t *start, const uint8_t * static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; TiffContext * const s = avctx->priv_data; AVFrame *picture = data; AVFrame * const p= (AVFrame*)&s->picture; diff --git a/libavcodec/truemotion1.c b/libavcodec/truemotion1.c index 1cf56ed3dd..303dfb5c15 100644 --- a/libavcodec/truemotion1.c +++ b/libavcodec/truemotion1.c @@ -846,8 +846,10 @@ static void truemotion1_decode_24bit(TrueMotion1Context *s) static int truemotion1_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; TrueMotion1Context *s = avctx->priv_data; s->buf = buf; diff --git a/libavcodec/truemotion2.c b/libavcodec/truemotion2.c index 6349565f2d..b3289162ee 100644 --- a/libavcodec/truemotion2.c +++ b/libavcodec/truemotion2.c @@ -763,8 +763,10 @@ static const int tm2_stream_order[TM2_NUM_STREAMS] = { static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; TM2Context * const l = avctx->priv_data; AVFrame * const p= (AVFrame*)&l->pic; int i, skip, t; diff --git a/libavcodec/truespeech.c b/libavcodec/truespeech.c index df5d57bbcc..598d414832 100644 --- a/libavcodec/truespeech.c +++ b/libavcodec/truespeech.c @@ -332,8 +332,10 @@ static void truespeech_save_prevvec(TSContext *c) static int truespeech_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; TSContext *c = avctx->priv_data; int i, j; diff --git a/libavcodec/tscc.c b/libavcodec/tscc.c index 0ffb1644ba..8e5edbd608 100644 --- a/libavcodec/tscc.c +++ b/libavcodec/tscc.c @@ -67,8 +67,10 @@ typedef struct TsccContext { * Decode a frame * */ -static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, const uint8_t *buf, int buf_size) +static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; CamtasiaContext * const c = avctx->priv_data; const unsigned char *encoded = buf; unsigned char *outptr; diff --git a/libavcodec/tta.c b/libavcodec/tta.c index 5536aa4cd9..3ab31e6629 100644 --- a/libavcodec/tta.c +++ b/libavcodec/tta.c @@ -287,8 +287,10 @@ static av_cold int tta_decode_init(AVCodecContext * avctx) static int tta_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; TTAContext *s = avctx->priv_data; int i; diff --git a/libavcodec/txd.c b/libavcodec/txd.c index 44bbad4cab..d2c743feed 100644 --- a/libavcodec/txd.c +++ b/libavcodec/txd.c @@ -39,7 +39,9 @@ static av_cold int txd_init(AVCodecContext *avctx) { } static int txd_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) { + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; TXDContext * const s = avctx->priv_data; AVFrame *picture = data; AVFrame * const p = &s->picture; diff --git a/libavcodec/ulti.c b/libavcodec/ulti.c index efc05924c3..31649f8658 100644 --- a/libavcodec/ulti.c +++ b/libavcodec/ulti.c @@ -200,8 +200,10 @@ static void ulti_grad(AVFrame *frame, int x, int y, uint8_t *Y, int chroma, int static int ulti_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; UltimotionDecodeContext *s=avctx->priv_data; int modifier = 0; int uniq = 0; diff --git a/libavcodec/utils.c b/libavcodec/utils.c index 4113382997..f39b49d511 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -524,18 +524,32 @@ int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size, return ret; } +#if LIBAVCODEC_VERSION_MAJOR < 53 int attribute_align_arg avcodec_decode_video(AVCodecContext *avctx, AVFrame *picture, int *got_picture_ptr, const uint8_t *buf, int buf_size) +{ + AVPacket avpkt; + av_init_packet(&avpkt); + avpkt.data = buf; + avpkt.size = buf_size; + + return avcodec_decode_video2(avctx, picture, got_picture_ptr, &avpkt); +} +#endif + +int attribute_align_arg avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture, + int *got_picture_ptr, + AVPacket *avpkt) { int ret; *got_picture_ptr= 0; if((avctx->coded_width||avctx->coded_height) && avcodec_check_dimensions(avctx,avctx->coded_width,avctx->coded_height)) return -1; - if((avctx->codec->capabilities & CODEC_CAP_DELAY) || buf_size){ + if((avctx->codec->capabilities & CODEC_CAP_DELAY) || avpkt->size){ ret = avctx->codec->decode(avctx, picture, got_picture_ptr, - buf, buf_size); + avpkt); emms_c(); //needed to avoid an emms_c() call before every return; @@ -547,13 +561,27 @@ int attribute_align_arg avcodec_decode_video(AVCodecContext *avctx, AVFrame *pic return ret; } +#if LIBAVCODEC_VERSION_MAJOR < 53 int attribute_align_arg avcodec_decode_audio2(AVCodecContext *avctx, int16_t *samples, int *frame_size_ptr, const uint8_t *buf, int buf_size) +{ + AVPacket avpkt; + av_init_packet(&avpkt); + avpkt.data = buf; + avpkt.size = buf_size; + + return avcodec_decode_audio3(avctx, samples, frame_size_ptr, &avpkt); +} +#endif + +int attribute_align_arg avcodec_decode_audio3(AVCodecContext *avctx, int16_t *samples, + int *frame_size_ptr, + AVPacket *avpkt) { int ret; - if((avctx->codec->capabilities & CODEC_CAP_DELAY) || buf_size){ + if((avctx->codec->capabilities & CODEC_CAP_DELAY) || avpkt->size){ //FIXME remove the check below _after_ ensuring that all audio check that the available space is enough if(*frame_size_ptr < AVCODEC_MAX_AUDIO_FRAME_SIZE){ av_log(avctx, AV_LOG_ERROR, "buffer smaller than AVCODEC_MAX_AUDIO_FRAME_SIZE\n"); @@ -565,8 +593,7 @@ int attribute_align_arg avcodec_decode_audio2(AVCodecContext *avctx, int16_t *sa return -1; } - ret = avctx->codec->decode(avctx, samples, frame_size_ptr, - buf, buf_size); + ret = avctx->codec->decode(avctx, samples, frame_size_ptr, avpkt); avctx->frame_number++; }else{ ret= 0; @@ -575,15 +602,28 @@ int attribute_align_arg avcodec_decode_audio2(AVCodecContext *avctx, int16_t *sa return ret; } +#if LIBAVCODEC_VERSION_MAJOR < 53 int avcodec_decode_subtitle(AVCodecContext *avctx, AVSubtitle *sub, int *got_sub_ptr, const uint8_t *buf, int buf_size) +{ + AVPacket avpkt; + av_init_packet(&avpkt); + avpkt.data = buf; + avpkt.size = buf_size; + + return avcodec_decode_subtitle2(avctx, sub, got_sub_ptr, &avpkt); +} +#endif + +int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub, + int *got_sub_ptr, + AVPacket *avpkt) { int ret; *got_sub_ptr = 0; - ret = avctx->codec->decode(avctx, sub, got_sub_ptr, - buf, buf_size); + ret = avctx->codec->decode(avctx, sub, got_sub_ptr, avpkt); if (*got_sub_ptr) avctx->frame_number++; return ret; diff --git a/libavcodec/vb.c b/libavcodec/vb.c index 4c92788897..b95fa1a9c7 100644 --- a/libavcodec/vb.c +++ b/libavcodec/vb.c @@ -173,8 +173,10 @@ static int vb_decode_framedata(VBDecContext *c, const uint8_t *buf, int offset) return 0; } -static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, const uint8_t *buf, int buf_size) +static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; VBDecContext * const c = avctx->priv_data; uint8_t *outptr, *srcptr; int i, j; diff --git a/libavcodec/vc1.c b/libavcodec/vc1.c index 3c391c678a..f3d3cd4ed1 100644 --- a/libavcodec/vc1.c +++ b/libavcodec/vc1.c @@ -4136,8 +4136,10 @@ static av_cold int vc1_decode_init(AVCodecContext *avctx) */ static int vc1_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; VC1Context *v = avctx->priv_data; MpegEncContext *s = &v->s; AVFrame *pict = data; diff --git a/libavcodec/vcr1.c b/libavcodec/vcr1.c index 21136289d5..6218c7c634 100644 --- a/libavcodec/vcr1.c +++ b/libavcodec/vcr1.c @@ -43,8 +43,10 @@ typedef struct VCR1Context{ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; VCR1Context * const a = avctx->priv_data; AVFrame *picture = data; AVFrame * const p= (AVFrame*)&a->picture; diff --git a/libavcodec/vmdav.c b/libavcodec/vmdav.c index 1921c81ca2..2c24355a5f 100644 --- a/libavcodec/vmdav.c +++ b/libavcodec/vmdav.c @@ -366,8 +366,10 @@ static av_cold int vmdvideo_decode_init(AVCodecContext *avctx) static int vmdvideo_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; VmdVideoContext *s = avctx->priv_data; s->buf = buf; @@ -521,8 +523,10 @@ static int vmdaudio_loadsound(VmdAudioContext *s, unsigned char *data, static int vmdaudio_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; VmdAudioContext *s = avctx->priv_data; unsigned char *output_samples = (unsigned char *)data; diff --git a/libavcodec/vmnc.c b/libavcodec/vmnc.c index c7efaf8a2f..fb78449d28 100644 --- a/libavcodec/vmnc.c +++ b/libavcodec/vmnc.c @@ -284,8 +284,10 @@ static int decode_hextile(VmncContext *c, uint8_t* dst, const uint8_t* src, int return src - ssrc; } -static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, const uint8_t *buf, int buf_size) +static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; VmncContext * const c = avctx->priv_data; uint8_t *outptr; const uint8_t *src = buf; diff --git a/libavcodec/vorbis_dec.c b/libavcodec/vorbis_dec.c index 6ca8763bb3..77dbfa2e93 100644 --- a/libavcodec/vorbis_dec.c +++ b/libavcodec/vorbis_dec.c @@ -1560,8 +1560,10 @@ static int vorbis_parse_audio_packet(vorbis_context *vc) { static int vorbis_decode_frame(AVCodecContext *avccontext, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; vorbis_context *vc = avccontext->priv_data ; GetBitContext *gb = &(vc->gb); const float *channel_ptrs[vc->audio_channels]; diff --git a/libavcodec/vp3.c b/libavcodec/vp3.c index 64901616cc..33d6c8f74b 100644 --- a/libavcodec/vp3.c +++ b/libavcodec/vp3.c @@ -1800,8 +1800,10 @@ static av_cold int vp3_decode_init(AVCodecContext *avctx) */ static int vp3_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; Vp3DecodeContext *s = avctx->priv_data; GetBitContext gb; static int counter = 0; diff --git a/libavcodec/vqavideo.c b/libavcodec/vqavideo.c index 00df736d3b..5026989070 100644 --- a/libavcodec/vqavideo.c +++ b/libavcodec/vqavideo.c @@ -565,8 +565,10 @@ static void vqa_decode_chunk(VqaContext *s) static int vqa_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; VqaContext *s = avctx->priv_data; s->buf = buf; diff --git a/libavcodec/wavpack.c b/libavcodec/wavpack.c index 12eac33fe7..1c1406f8c7 100644 --- a/libavcodec/wavpack.c +++ b/libavcodec/wavpack.c @@ -476,8 +476,10 @@ static av_cold int wavpack_decode_init(AVCodecContext *avctx) static int wavpack_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; WavpackContext *s = avctx->priv_data; int16_t *samples = data; int samplecount; diff --git a/libavcodec/wmadec.c b/libavcodec/wmadec.c index e7936ce49f..323f69d303 100644 --- a/libavcodec/wmadec.c +++ b/libavcodec/wmadec.c @@ -752,8 +752,10 @@ static int wma_decode_frame(WMACodecContext *s, int16_t *samples) static int wma_decode_superframe(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; WMACodecContext *s = avctx->priv_data; int nb_frames, bit_offset, i, pos, len; uint8_t *q; diff --git a/libavcodec/wnv1.c b/libavcodec/wnv1.c index 7c0105f1ef..fa3a308dc0 100644 --- a/libavcodec/wnv1.c +++ b/libavcodec/wnv1.c @@ -58,8 +58,10 @@ static inline int wnv1_get_code(WNV1Context *w, int base_value) static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; WNV1Context * const l = avctx->priv_data; AVFrame * const p= (AVFrame*)&l->pic; unsigned char *Y,*U,*V; diff --git a/libavcodec/ws-snd1.c b/libavcodec/ws-snd1.c index b27b155135..85e04f55d4 100644 --- a/libavcodec/ws-snd1.c +++ b/libavcodec/ws-snd1.c @@ -48,8 +48,10 @@ static av_cold int ws_snd_decode_init(AVCodecContext * avctx) static int ws_snd_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; // WSSNDContext *c = avctx->priv_data; int in_size, out_size; diff --git a/libavcodec/xan.c b/libavcodec/xan.c index e269c2fcf6..65c65283b1 100644 --- a/libavcodec/xan.c +++ b/libavcodec/xan.c @@ -405,8 +405,10 @@ static void xan_wc4_decode_frame(XanContext *s) { static int xan_decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; XanContext *s = avctx->priv_data; AVPaletteControl *palette_control = avctx->palctrl; diff --git a/libavcodec/xl.c b/libavcodec/xl.c index ccff40e17a..fb4241f255 100644 --- a/libavcodec/xl.c +++ b/libavcodec/xl.c @@ -40,8 +40,10 @@ static const int xl_table[32] = { static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; VideoXLContext * const a = avctx->priv_data; AVFrame * const p= (AVFrame*)&a->pic; uint8_t *Y, *U, *V; diff --git a/libavcodec/xsubdec.c b/libavcodec/xsubdec.c index 35b00a54b4..942db0cd1b 100644 --- a/libavcodec/xsubdec.c +++ b/libavcodec/xsubdec.c @@ -44,7 +44,9 @@ static uint64_t parse_timecode(const uint8_t *buf) { } static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) { + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; AVSubtitle *sub = data; const uint8_t *buf_end = buf + buf_size; uint8_t *bitmap; diff --git a/libavcodec/zmbv.c b/libavcodec/zmbv.c index 33c1087e2d..7b3c7dd3f6 100644 --- a/libavcodec/zmbv.c +++ b/libavcodec/zmbv.c @@ -392,8 +392,10 @@ static int zmbv_decode_intra(ZmbvContext *c) return 0; } -static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, const uint8_t *buf, int buf_size) +static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; ZmbvContext * const c = avctx->priv_data; uint8_t *outptr; int zret = Z_OK; // Zlib return code