[FFmpeg-devel] [PATCH 4/4] Add MxPEG decoder

Anatoly Nenashev anatoly.nenashev at ovsoft.ru
Thu Mar 31 14:55:04 CEST 2011


On 31.03.2011 04:41, Michael Niedermayer wrote:
> On Mon, Mar 28, 2011 at 12:03:58AM +0400, Anatoly Nenashev wrote:
>    
>>      
>    
>>   Makefile    |    1
>>   allcodecs.c |    1
>>   mxpegdec.c  |  331 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>   3 files changed, 333 insertions(+)
>> f93a443bb32785eb87051e3922ab1be311cb0a41  0004-Add-MxPEG-decoder.patch
>>  From 91ec98dfacc4e3e46d05cc63da256eea17ee2a80 Mon Sep 17 00:00:00 2001
>> From: anatoly<anatoly.nenashev at ovsoft.ru>
>> Date: Thu, 24 Feb 2011 12:22:52 +0300
>> Subject: [PATCH 4/4] Add MxPEG decoder
>>
>> ---
>>   libavcodec/Makefile    |    1 +
>>   libavcodec/allcodecs.c |    1 +
>>   libavcodec/mxpegdec.c  |  331 ++++++++++++++++++++++++++++++++++++++++++++++++
>>   3 files changed, 333 insertions(+), 0 deletions(-)
>>   create mode 100644 libavcodec/mxpegdec.c
>>
>> diff --git a/libavcodec/Makefile b/libavcodec/Makefile
>> index ef91ee3..67fe868 100644
>> --- a/libavcodec/Makefile
>> +++ b/libavcodec/Makefile
>> @@ -271,6 +271,7 @@ OBJS-$(CONFIG_MSMPEG4V3_ENCODER)       += msmpeg4.o msmpeg4data.o h263dec.o \
>>   OBJS-$(CONFIG_MSRLE_DECODER)           += msrle.o msrledec.o
>>   OBJS-$(CONFIG_MSVIDEO1_DECODER)        += msvideo1.o
>>   OBJS-$(CONFIG_MSZH_DECODER)            += lcldec.o
>> +OBJS-$(CONFIG_MXPEG_DECODER)           += mxpegdec.o
>>   OBJS-$(CONFIG_NELLYMOSER_DECODER)      += nellymoserdec.o nellymoser.o
>>   OBJS-$(CONFIG_NELLYMOSER_ENCODER)      += nellymoserenc.o nellymoser.o
>>   OBJS-$(CONFIG_NUV_DECODER)             += nuv.o rtjpeg.o
>> diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c
>> index 861f8c7..c60bccd 100644
>> --- a/libavcodec/allcodecs.c
>> +++ b/libavcodec/allcodecs.c
>> @@ -156,6 +156,7 @@ void avcodec_register_all(void)
>>       REGISTER_DECODER (MSRLE, msrle);
>>       REGISTER_DECODER (MSVIDEO1, msvideo1);
>>       REGISTER_DECODER (MSZH, mszh);
>> +    REGISTER_DECODER (MXPEG, mxpeg);
>>       REGISTER_DECODER (NUV, nuv);
>>       REGISTER_ENCDEC  (PAM, pam);
>>       REGISTER_ENCDEC  (PBM, pbm);
>> diff --git a/libavcodec/mxpegdec.c b/libavcodec/mxpegdec.c
>> new file mode 100644
>> index 0000000..ba0c23d
>> --- /dev/null
>> +++ b/libavcodec/mxpegdec.c
>> @@ -0,0 +1,331 @@
>> +/*
>> + * MxPEG decoder
>> + * Copyright (c) 2011 Anatoly Nenashev
>> + *
>> + * This file is part of FFmpeg.
>> + *
>> + * FFmpeg is free software; you can redistribute it and/or
>> + * modify it under the terms of the GNU Lesser General Public
>> + * License as published by the Free Software Foundation; either
>> + * version 2.1 of the License, or (at your option) any later version.
>> + *
>> + * FFmpeg is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with FFmpeg; if not, write to the Free Software
>> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
>> + */
>> +
>> +
>> +/**
>> + * @file
>> + * MxPEG decoder.
>> + */
>> +
>> +#include "mjpeg.h"
>> +#include "mjpegdec.h"
>> +
>>      
>    
>> +int ff_mxpeg_decode_init(AVCodecContext *avctx);
>> +int ff_mxpeg_decode_end(AVCodecContext *avctx);
>> +int ff_mxpeg_decode_frame(AVCodecContext *avctx,
>> +                          void *data, int *data_size,
>> +                          AVPacket *avpkt);
>>      
> these 3 should be removed, they are unneeded, the functions should be
> static
>
>
>    

These changes are done by commiter to libav (Anton Khirnov).

>> +
>> +typedef struct MXpegDecodeContext {
>> +    MJpegDecodeContext jpg;
>> +    AVFrame picture[2]; /* pictures array */
>> +    int picture_index; /* index of current picture */
>> +    int got_sof_data; /* true if SOF data successfully parsed */
>> +    int got_mxm_bitmask; /* true if MXM bitmask available */
>> +    uint8_t *mxm_bitmask; /* bitmask buffer */
>> +    unsigned bitmask_size; /* size of bitmask */
>> +    int has_complete_frame; /* true if has complete frame */
>> +    uint8_t *completion_bitmask; /* completion bitmask of macroblocks */
>> +    unsigned mb_width, mb_height; /* size of picture in MB's from MXM header */
>> +} MXpegDecodeContext;
>>      
> The comments should be made doxygen compatible (///<  ...)
>    
> for example see:
> http://ffmpeg.org/doxygen/trunk/
> for our daily generated doxygen docs from trunk (there are of course
> also ones for the releases)
>    

Ok. I'll correct these comments.

> ill try to review the rest of this patch in the next days
> i sadly dont have the time ATM
>
>    

Ok, thank you. I will make these and other changes but MxPEG patch is 
just pushed to Libav so I don't want to support two versions of patch.
Do you know any solution for this situation?

Anatoly.






More information about the ffmpeg-devel mailing list