vpx: Support color range
authorLuca Barbato <lu_zero@gentoo.org>
Fri, 22 Jul 2016 07:33:04 +0000 (09:33 +0200)
committerLuca Barbato <lu_zero@gentoo.org>
Sat, 23 Jul 2016 06:27:29 +0000 (08:27 +0200)
The range field has been introduced in version 1.6.0

libavcodec/libvpxdec.c
libavcodec/libvpxenc.c

index 28b7733..93a720f 100644 (file)
@@ -99,6 +99,16 @@ static int vp8_decode(AVCodecContext *avctx,
             return ret;
         av_image_copy(picture->data, picture->linesize, img->planes,
                       img->stride, avctx->pix_fmt, img->d_w, img->d_h);
+#if VPX_IMAGE_ABI_VERSION >= 4
+        switch (img->range) {
+        case VPX_CR_STUDIO_RANGE:
+            picture->color_range = AVCOL_RANGE_MPEG;
+            break;
+        case VPX_CR_FULL_RANGE:
+            picture->color_range = AVCOL_RANGE_JPEG;
+            break;
+        }
+#endif
         *got_frame           = 1;
     }
     return avpkt->size;
index 26afaf5..bb4c98f 100644 (file)
@@ -552,6 +552,16 @@ static int vp8_encode(AVCodecContext *avctx, AVPacket *pkt,
         rawimg->stride[VPX_PLANE_U] = frame->linesize[1];
         rawimg->stride[VPX_PLANE_V] = frame->linesize[2];
         timestamp                   = frame->pts;
+#if VPX_IMAGE_ABI_VERSION >= 4
+        switch (frame->color_range) {
+        case AVCOL_RANGE_MPEG:
+            rawimg->range = VPX_CR_STUDIO_RANGE;
+            break;
+        case AVCOL_RANGE_JPEG:
+            rawimg->range = VPX_CR_FULL_RANGE;
+            break;
+        }
+#endif
         if (frame->pict_type == AV_PICTURE_TYPE_I)
             flags |= VPX_EFLAG_FORCE_KF;
     }