aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThilo Borgmann <thilo.borgmann@googlemail.com>2009-04-07 15:59:50 +0000
committerRonald S. Bultje <rsbultje@gmail.com>2009-04-07 15:59:50 +0000
commit7a00bbad2100367481240e62876b941b5c4befdc (patch)
tree33b1fddad2133b281b84dfbd48248b15e096a281
parent18c915eef4ddc2441d00608edf691a2425ba51de (diff)
downloadffmpeg-7a00bbad2100367481240e62876b941b5c4befdc.tar.gz
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
-rw-r--r--libavcodec/4xm.c4
-rw-r--r--libavcodec/8bps.c4
-rw-r--r--libavcodec/8svx.c4
-rw-r--r--libavcodec/aac.c4
-rw-r--r--libavcodec/aasc.c4
-rw-r--r--libavcodec/ac3dec.c4
-rw-r--r--libavcodec/adpcm.c4
-rw-r--r--libavcodec/adxdec.c4
-rw-r--r--libavcodec/alac.c4
-rw-r--r--libavcodec/apedec.c4
-rw-r--r--libavcodec/asv1.c4
-rw-r--r--libavcodec/atrac3.c4
-rw-r--r--libavcodec/avcodec.h92
-rw-r--r--libavcodec/avs.c4
-rw-r--r--libavcodec/bethsoftvideo.c4
-rw-r--r--libavcodec/bfi.c5
-rw-r--r--libavcodec/bmp.c4
-rw-r--r--libavcodec/c93.c4
-rw-r--r--libavcodec/cavsdec.c4
-rw-r--r--libavcodec/cinepak.c4
-rw-r--r--libavcodec/cljr.c4
-rw-r--r--libavcodec/cook.c4
-rw-r--r--libavcodec/cscd.c4
-rw-r--r--libavcodec/cyuv.c4
-rw-r--r--libavcodec/dca.c4
-rw-r--r--libavcodec/dnxhddec.c4
-rw-r--r--libavcodec/dpcm.c4
-rw-r--r--libavcodec/dsicinav.c8
-rw-r--r--libavcodec/dv.c4
-rw-r--r--libavcodec/dvbsubdec.c4
-rw-r--r--libavcodec/dvdsubdec.c4
-rw-r--r--libavcodec/dxa.c4
-rw-r--r--libavcodec/eacmv.c4
-rw-r--r--libavcodec/eatgq.c4
-rw-r--r--libavcodec/eatgv.c4
-rw-r--r--libavcodec/eatqi.c4
-rw-r--r--libavcodec/escape124.c4
-rw-r--r--libavcodec/ffv1.c4
-rw-r--r--libavcodec/flacdec.c4
-rw-r--r--libavcodec/flashsv.c4
-rw-r--r--libavcodec/flicvideo.c4
-rw-r--r--libavcodec/fraps.c4
-rw-r--r--libavcodec/g726.c4
-rw-r--r--libavcodec/gifdec.c4
-rw-r--r--libavcodec/h261dec.c4
-rw-r--r--libavcodec/h263dec.c4
-rw-r--r--libavcodec/h264.c4
-rw-r--r--libavcodec/huffyuv.c4
-rw-r--r--libavcodec/idcinvideo.c4
-rw-r--r--libavcodec/imc.c4
-rw-r--r--libavcodec/indeo2.c4
-rw-r--r--libavcodec/indeo3.c4
-rw-r--r--libavcodec/interplayvideo.c4
-rw-r--r--libavcodec/kmvc.c5
-rw-r--r--libavcodec/lcldec.c4
-rw-r--r--libavcodec/libamr.c8
-rw-r--r--libavcodec/libdiracdec.c4
-rw-r--r--libavcodec/libfaad.c4
-rw-r--r--libavcodec/libgsm.c4
-rw-r--r--libavcodec/libopenjpeg.c4
-rw-r--r--libavcodec/libschroedingerdec.c4
-rw-r--r--libavcodec/libspeexdec.c4
-rw-r--r--libavcodec/loco.c4
-rw-r--r--libavcodec/mace.c4
-rw-r--r--libavcodec/mdec.c4
-rw-r--r--libavcodec/mimic.c4
-rw-r--r--libavcodec/mjpegbdec.c4
-rw-r--r--libavcodec/mjpegdec.c4
-rw-r--r--libavcodec/mjpegdec.h2
-rw-r--r--libavcodec/mlpdec.c4
-rw-r--r--libavcodec/mmvideo.c4
-rw-r--r--libavcodec/motionpixels.c4
-rw-r--r--libavcodec/mpc7.c4
-rw-r--r--libavcodec/mpc8.c4
-rw-r--r--libavcodec/mpeg12.c4
-rw-r--r--libavcodec/mpegaudiodec.c12
-rw-r--r--libavcodec/mpegvideo.h2
-rw-r--r--libavcodec/msrle.c4
-rw-r--r--libavcodec/msvideo1.c4
-rw-r--r--libavcodec/nellymoserdec.c4
-rw-r--r--libavcodec/nuv.c4
-rw-r--r--libavcodec/pcm.c4
-rw-r--r--libavcodec/pcx.c4
-rw-r--r--libavcodec/pngdec.c4
-rw-r--r--libavcodec/pnmenc.c4
-rw-r--r--libavcodec/ptx.c4
-rw-r--r--libavcodec/qcelpdec.c4
-rw-r--r--libavcodec/qdm2.c4
-rw-r--r--libavcodec/qdrw.c4
-rw-r--r--libavcodec/qpeg.c4
-rw-r--r--libavcodec/qtrle.c4
-rw-r--r--libavcodec/ra144.c4
-rw-r--r--libavcodec/ra288.c5
-rw-r--r--libavcodec/rawdec.c4
-rw-r--r--libavcodec/rl2.c4
-rw-r--r--libavcodec/roqvideodec.c4
-rw-r--r--libavcodec/rpza.c4
-rw-r--r--libavcodec/rv10.c4
-rw-r--r--libavcodec/rv34.c4
-rw-r--r--libavcodec/rv34.h2
-rw-r--r--libavcodec/sgidec.c4
-rw-r--r--libavcodec/shorten.c4
-rw-r--r--libavcodec/smacker.c8
-rw-r--r--libavcodec/smc.c4
-rw-r--r--libavcodec/snow.c4
-rw-r--r--libavcodec/sonic.c4
-rw-r--r--libavcodec/sp5xdec.c10
-rw-r--r--libavcodec/sunrast.c4
-rw-r--r--libavcodec/svq1dec.c4
-rw-r--r--libavcodec/svq3.c4
-rw-r--r--libavcodec/targa.c4
-rw-r--r--libavcodec/tiertexseqv.c4
-rw-r--r--libavcodec/tiff.c4
-rw-r--r--libavcodec/truemotion1.c4
-rw-r--r--libavcodec/truemotion2.c4
-rw-r--r--libavcodec/truespeech.c4
-rw-r--r--libavcodec/tscc.c4
-rw-r--r--libavcodec/tta.c4
-rw-r--r--libavcodec/txd.c4
-rw-r--r--libavcodec/ulti.c4
-rw-r--r--libavcodec/utils.c54
-rw-r--r--libavcodec/vb.c4
-rw-r--r--libavcodec/vc1.c4
-rw-r--r--libavcodec/vcr1.c4
-rw-r--r--libavcodec/vmdav.c8
-rw-r--r--libavcodec/vmnc.c4
-rw-r--r--libavcodec/vorbis_dec.c4
-rw-r--r--libavcodec/vp3.c4
-rw-r--r--libavcodec/vqavideo.c4
-rw-r--r--libavcodec/wavpack.c4
-rw-r--r--libavcodec/wmadec.c4
-rw-r--r--libavcodec/wnv1.c4
-rw-r--r--libavcodec/ws-snd1.c4
-rw-r--r--libavcodec/xan.c4
-rw-r--r--libavcodec/xl.c4
-rw-r--r--libavcodec/xsubdec.c4
-rw-r--r--libavcodec/zmbv.c4
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