[FFmpeg-devel] [PATCH 3/4] Implement dynamic memory allocation for MJPEG's picture
Anatoly Nenashev
anatoly.nenashev
Wed Feb 16 23:02:13 CET 2011
On 17.02.2011 00:38, M?ns Rullg?rd wrote:
> Anatoly Nenashev<anatoly.nenashev at ovsoft.ru> writes:
>
>
>> From 38608bf9c49c2ce2c7b3edbfb4d4641ca160a990 Mon Sep 17 00:00:00 2001
>> From: anatoly<anatoly.nenashev at ovsoft.ru>
>> Date: Tue, 15 Feb 2011 11:33:56 +0300
>> Subject: [PATCH 3/4] Implement dynamic memory allocation for MJPEG's picture
>>
>> ---
>> libavcodec/jpeglsdec.c | 18 +++++++++---------
>> libavcodec/mjpegbdec.c | 2 +-
>> libavcodec/mjpegdec.c | 44 +++++++++++++++++++++++++++-----------------
>> libavcodec/mjpegdec.h | 2 +-
>> 4 files changed, 38 insertions(+), 28 deletions(-)
>>
> [...]
>
>
>> diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c
>> index 9792616..2db6760 100644
>> --- a/libavcodec/mjpegdec.c
>> +++ b/libavcodec/mjpegdec.c
>> @@ -81,6 +81,13 @@ av_cold int ff_mjpeg_decode_init(AVCodecContext *avctx)
>> {
>> MJpegDecodeContext *s = avctx->priv_data;
>>
>> + if (!s->picture_ptr) {
>> + s->picture_ptr = av_mallocz(sizeof(AVFrame));
>> + if (!s->picture_ptr)
>> + return AVERROR(ENOMEM);
>> + s->picture_ptr->reference = 0;
>> + }
>> +
>> s->avctx = avctx;
>> dsputil_init(&s->dsp, avctx);
>> ff_init_scantable(s->dsp.idct_permutation,&s->scantable, ff_zigzag_direct);
>>
> [...]
>
>
>> diff --git a/libavcodec/mjpegdec.h b/libavcodec/mjpegdec.h
>> index 9c78ab2..a1dee59 100644
>> --- a/libavcodec/mjpegdec.h
>> +++ b/libavcodec/mjpegdec.h
>> @@ -80,7 +80,7 @@ typedef struct MJpegDecodeContext {
>> int h_max, v_max; /* maximum h and v counts */
>> int quant_index[4]; /* quant table index for each component */
>> int last_dc[MAX_COMPONENTS]; /* last DEQUANTIZED dc (XXX: am I right to do that ?) */
>> - AVFrame picture; /* picture structure */
>> + AVFrame *picture_ptr; /* pointer to picture structure */
>> int got_picture; ///< we found a SOF and picture is valid, too.
>> int linesize[MAX_COMPONENTS]; ///< linesize<< interlaced
>> int8_t *qscale_table;
>> --
>>
> Why don't you simply make an array: AVFrame picture[2]?
>
>
Because in this case this isn't enough. I should also add
"picture_index" field and implement switching between pictures. I don't
think this must be done in this file.
More information about the ffmpeg-devel
mailing list