diff mbox

[FFmpeg-devel,GSOC,2/3] lavc/cfhd:corrected decompanding for table 9 used in cfhd

Message ID CAOi=zRvP2yKApfcsCSeprj76Sfcb_cHSssM+4UPwM7xLQByb7Q@mail.gmail.com
State Superseded
Headers show

Commit Message

Gagandeep Singh Aug. 14, 2018, 7:43 a.m. UTC
Second patch for fixing decompanding in table 9.

Gagandeep Singh

Comments

Kieran Kunhya Aug. 15, 2018, 9:01 p.m. UTC | #1
On Tue, 14 Aug 2018 at 08:43 Gagandeep Singh <deepgagan231197@gmail.com>
wrote:

> Second patch for fixing decompanding in table 9.
>
> Gagandeep Singh
>

Seems ok

Kieran
Gagandeep Singh Aug. 17, 2018, 6:04 a.m. UTC | #2
On Thu, Aug 16, 2018 at 2:37 AM Kieran Kunhya <kierank@obe.tv> wrote:

> On Tue, 14 Aug 2018 at 08:43 Gagandeep Singh <deepgagan231197@gmail.com>
> wrote:
>
> > Second patch for fixing decompanding in table 9.
> >
> > Gagandeep Singh
> >
>
> Seems ok
>
> Kieran
>

Thanks!!

Gagandeep Singh

> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
diff mbox

Patch

From d6ac8a4ee2f08a6d3cab7e7500d740c661062c9f Mon Sep 17 00:00:00 2001
From: Gagandeep Singh <deepgagan231197@gmail.com>
Date: Tue, 14 Aug 2018 00:20:06 +0530
Subject: [GSOC][FFmpeg-devel][PATCH 2/3] lavc/cfhd:corrected decompanding for table 9 used in cfhd

---
 libavcodec/cfhd.c | 25 ++++++++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)

diff --git a/libavcodec/cfhd.c b/libavcodec/cfhd.c
index 3906d7a86d..2c538f0bbd 100644
--- a/libavcodec/cfhd.c
+++ b/libavcodec/cfhd.c
@@ -114,7 +114,30 @@  static inline int dequant_and_decompand(int level, int quantisation, int codeboo
 {
     if (lossless)
         return level;
-    if (codebook == 0 || codebook == 1) {
+    if (codebook == 0) {
+        if (level >= 40 && level < 264) {
+            if (level >= 54) {
+                level  -= 54;
+                level <<= 2;
+                level  += 54;
+            }
+            level  -= 40;
+            level <<= 2;
+            level  += 40;
+        } else if (level <= -40) {
+            level = -level;
+            if (level >= 54) {
+                level  -= 54;
+                level <<= 2;
+                level  += 54;
+            }
+            level  -= 40;
+            level <<= 2;
+            level  += 40;
+            level   = -level;
+        }
+        return level * quantisation;
+    } else if (codebook == 1) {
         int64_t abslevel = abs(level);
         if (level < 264)
             return (abslevel + ((768 * abslevel * abslevel * abslevel) / (255 * 255 * 255))) *
-- 
2.17.1