[FFmpeg-devel] [PATCH] libavcodec/exr.c : A new exr lossy compression technique B44 is added

greeshma greeshmabalabadra at gmail.com
Thu Mar 26 09:27:28 CET 2015


Greeshma


On Wed, Mar 25, 2015 at 10:32 PM, Michael Niedermayer <michaelni at gmx.at>
wrote:

> On Tue, Mar 24, 2015 at 04:07:01PM +0530, greeshma wrote:
> > The patch is made and FATE tests are done.It accepted, will submit with
> the
> > copyrights  and signature.The code is written based on openEXR algorithm
> of
> > B44 lossy compression and modified according to the FFmpeg code.
> >
> >
> > From 9670e283f38b71c06457c976f3f2040c8d38bbd9 Mon Sep 17 00:00:00 2001
> > From: greeshmab <greeshmabalabadra at gmail.com>
> > Date: Tue, 24 Mar 2015 12:36:21 +0530
> > Subject: [PATCH] A new exr lossy compression technique B44 is added
> >
> > ---
> >  libavcodec/exr.c | 121
> > +++++++++++++++++++++++++++++++++++++++++++++++++++++++
> >  1 file changed, 121 insertions(+)
> >
> > diff --git a/libavcodec/exr.c b/libavcodec/exr.c
> > index 6251fb7..b7114be 100644
> > --- a/libavcodec/exr.c
> > +++ b/libavcodec/exr.c
> > @@ -770,6 +770,124 @@ static int piz_uncompress(EXRContext *s, const
> > uint8_t *src, int ssize,
> >      return 0;
> >  }
> >
> > +
> > +static void B44_unpack14 ( GetByteContext *gb, uint16_t out[16]){
> > +    uint16_t shift;
> > +    const uint8_t *r = gb->buffer;
> > +    av_assert0(r[2] != 0xfc);
> > +    out[0] = (r[0] << 8) | r[1];
> > +    shift = (r[2] >> 2);
> > +    out[ 1] = out[ 0] + ((r[ 5] >> 2) << shift);
> > +    out[ 2] = out[ 1] + ((r[ 8] >> 2) << shift);
> > +    out[ 3] = out[ 2] + ((r[11] >> 2) << shift);
> > +    out[ 4] = out[ 0] + (((r[ 2] << 4) | (r[ 3] >> 4)) << shift);
> > +    out[ 5] = out[ 4] + (((r[ 5] << 4) | (r[ 6] >> 4)) << shift);
> > +    out[ 6] = out[ 5] + (((r[ 8] << 4) | (r[ 9] >> 4)) << shift);
> > +    out[ 7] = out[ 6] + (((r[11] << 4) | (r[12] >> 4)) << shift);
> > +    out[ 8] = out[ 4] + (((r[ 3] << 2) | (r[ 4] >> 6)) << shift);
> > +    out[ 9] = out[ 8] + (((r[ 6] << 2) | (r[ 7] >> 6)) << shift);
> > +    out[10] = out[ 9] + (((r[ 9] << 2) | (r[10] >> 6)) << shift);
> > +    out[11] = out[10] + (((r[12] << 2) | (r[13] >> 6)) << shift);
> > +    out[12] = out[ 8] + (r[ 4]  << shift);
> > +    out[13] = out[12] + (r[ 7]  << shift);
> > +    out[14] = out[13] + (r[10]  << shift);
> > +    out[15] = out[14] + (r[13]  << shift);
> > +    for (int i = 0; i < 16; ++i) {              //if any out value
> exceeds
> > 16bits
> > +        if (out[i] & 0x8000)
>
> the patch is corrupted by linebreaks, please make sure you attach
> the patch if you do not use "git send-email -1"
>

The linebreaks are modified.

>
> also, if the code is based on some other implementtaton this should
> be mentioned in the commit message, you can edit the last commit
> message with git commit --amend
>
> The commit message is changed accordingly


> also it may be needed to add a copyright statement if code has been
> used from elsewhere
>
> The code is not entirely taken from openEXR.I have just used the algorithm
they used to compress and wrote unpack technique accordingly.Does this
require copyright statement for openEXR?

The patch is attached.PFA.

Thanks.

Thanks
>
> [...]
> --
> Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> You can kill me, but you cannot change the truth.
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-exr-lossy-compression-B44-based-on-OpenEXR-code.patch
Type: text/x-patch
Size: 6003 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20150326/e10d1ed7/attachment.bin>


More information about the ffmpeg-devel mailing list