[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