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

Michael Niedermayer michaelni at gmx.at
Wed Mar 25 18:02:01 CET 2015


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"

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

also it may be needed to add a copyright statement if code has been
used from elsewhere

Thanks

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

You can kill me, but you cannot change the truth.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20150325/9e92531b/attachment.asc>


More information about the ffmpeg-devel mailing list