[FFmpeg-devel] [PATCH] avcodec/dpxenc: stop hardcoding color trc/primaries

Paul B Mahol onemda at gmail.com
Thu Oct 8 00:02:40 EEST 2020


Signed-off-by: Paul B Mahol <onemda at gmail.com>
---
 libavcodec/dpxenc.c | 36 ++++++++++++++++++++++++++++++++++--
 tests/ref/lavf/dpx  |  2 +-
 2 files changed, 35 insertions(+), 3 deletions(-)

diff --git a/libavcodec/dpxenc.c b/libavcodec/dpxenc.c
index a5960334d5..56840a8d33 100644
--- a/libavcodec/dpxenc.c
+++ b/libavcodec/dpxenc.c
@@ -173,6 +173,38 @@ static void encode_gbrp12(AVCodecContext *avctx, const AVFrame *pic, uint16_t *d
     }
 }
 
+static int get_dpx_pri(int color_pri)
+{
+    switch (color_pri) {
+    case AVCOL_PRI_BT709:
+        return 6;
+    case AVCOL_PRI_SMPTE240M:
+    case AVCOL_PRI_SMPTE170M:
+        return 9;
+    case AVCOL_PRI_BT470BG:
+        return 10;
+    default:
+        return 0;
+    }
+}
+
+static int get_dpx_trc(int color_trc)
+{
+    switch (color_trc) {
+    case AVCOL_TRC_LINEAR:
+        return 2;
+    case AVCOL_TRC_BT709:
+        return 6;
+    case AVCOL_TRC_SMPTE240M:
+    case AVCOL_TRC_SMPTE170M:
+        return 9;
+    case AVCOL_TRC_GAMMA22:
+        return 10;
+    default:
+        return 0;
+    }
+}
+
 static int encode_frame(AVCodecContext *avctx, AVPacket *pkt,
                         const AVFrame *frame, int *got_packet)
 {
@@ -218,8 +250,8 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt,
     write32(buf + 772, avctx->width);
     write32(buf + 776, avctx->height);
     buf[800] = s->descriptor;
-    buf[801] = 2; /* linear transfer */
-    buf[802] = 2; /* linear colorimetric */
+    buf[801] = get_dpx_trc(avctx->color_trc);
+    buf[802] = get_dpx_pri(avctx->color_primaries);
     buf[803] = s->bits_per_component;
     write16(buf + 804, (s->bits_per_component == 10 || s->bits_per_component == 12) ?
                        1 : 0); /* packing method */
diff --git a/tests/ref/lavf/dpx b/tests/ref/lavf/dpx
index 68fe25afcd..39e513430a 100644
--- a/tests/ref/lavf/dpx
+++ b/tests/ref/lavf/dpx
@@ -1,3 +1,3 @@
-4c8880d5835ffb5fe37c1ed8c8d404de *tests/data/images/dpx/02.dpx
+233e219cbfa61e0b77f8e4fad05b2404 *tests/data/images/dpx/02.dpx
 tests/data/images/dpx/%02d.dpx CRC=0x6da01946
 305792 tests/data/images/dpx/02.dpx
-- 
2.17.1



More information about the ffmpeg-devel mailing list