From patchwork Tue Apr 18 14:58:27 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hendrik Leppkes X-Patchwork-Id: 3444 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.3.129 with SMTP id 123csp1752931vsd; Tue, 18 Apr 2017 07:58:40 -0700 (PDT) X-Received: by 10.28.132.134 with SMTP id g128mr9745620wmd.106.1492527520646; Tue, 18 Apr 2017 07:58:40 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 200si16431583wmg.4.2017.04.18.07.58.40; Tue, 18 Apr 2017 07:58:40 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2C3DE680C06; Tue, 18 Apr 2017 17:58:29 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm0-f52.google.com (mail-wm0-f52.google.com [74.125.82.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 50D1C680C06 for ; Tue, 18 Apr 2017 17:58:22 +0300 (EEST) Received: by mail-wm0-f52.google.com with SMTP id w64so58710250wma.0 for ; Tue, 18 Apr 2017 07:58:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=653+xNV2n4EVF9igaP6mqrNnLG5AYlf2ilsOElT151o=; b=YB/GL4erfS8bVazBbV88I3r50FO+DlaMYJR/51LXh50BAbppjjWk9XgVxe3PHkiHRH 138451yU31LPtdtlotlESUDvJr7/N6LEMu4gnQ29U1v8AdUNHmM1nVaUOU36ezK44mVC 6SO1MrcpzTzgHEVyJEeR8fuGas2N0QUy6pnxHcE4zT0db+9O/HGQoFYxRFZT4WT+hR8n mdSg8IQubcFrWnn7njxRlT21wnxBaoCO1zJyC9cCZN7WWKRJf+RM3JXvOi78IJlznPL0 XaWBMwbHwHDBMr51pA4gURQd/hlYp5W/4FwjqMePS/zdhO8GhnXaOcIFZ553OfW55XPL 3qFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=653+xNV2n4EVF9igaP6mqrNnLG5AYlf2ilsOElT151o=; b=OQLnqRd3pd0sw8w9dfAl4go8a/3pLOeGK09utCmUla5rErwjZ/e6x8ZXT8CZQosUuR 5FUOpuaKm9LAoNDXMOR+lhNHZQ6cjly+tJKJLD41njHt9gcD6XmjE7+DmULZWoz7h8m2 v7rglk/YCoyDEeZJg48XM1Yje7cxkwDeBqEpfRghJJqNB384zLxjn+rAU/JeQ2Bkuk2D dCjAU3TDuMhlNO3yFZ1yBlGenfqKVdOqb25qXQhA6YyyriO+5g4LZgSc18S8ssA4aPDa qpSBJQkDScJI05FqbexvVbycZ7JDjolwseG8SnvgdaHXeUpqUu5LT1LQZpQLml3VQmBc 9nOA== X-Gm-Message-State: AN3rC/6WvvpzqWCNzuCswImtV3FctK+KubxtCJ/83ff8l6M86Z2Y/YEA GauoHcy0aTkA2B4grqw= X-Received: by 10.28.109.81 with SMTP id i78mr12874978wmc.127.1492527509860; Tue, 18 Apr 2017 07:58:29 -0700 (PDT) Received: from localhost (p4FC4F5F1.dip0.t-ipconnect.de. [79.196.245.241]) by smtp.gmail.com with ESMTPSA id m83sm15347021wmc.7.2017.04.18.07.58.28 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 18 Apr 2017 07:58:29 -0700 (PDT) From: Hendrik Leppkes To: ffmpeg-devel@ffmpeg.org Date: Tue, 18 Apr 2017 16:58:27 +0200 Message-Id: <20170418145827.14968-1-h.leppkes@gmail.com> X-Mailer: git-send-email 2.12.2.windows.2 In-Reply-To: <20170418143012.5372-1-h.leppkes@gmail.com> References: <20170418143012.5372-1-h.leppkes@gmail.com> Subject: [FFmpeg-devel] [PATCH] movenc/isom: update vpcC box to the latest draft specification X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" This brings our generation of the vpcC box up to date to the latest draft version of the VP Codec ISO Media File Format Binding. Specifically, color/transfer properties are now written with values based on ISO/IEC 23001-8, which is the same reference specification the AVColor* enumerations are based on. --- libavformat/vpcc.c | 55 +++++------------------------------------------------- 1 file changed, 5 insertions(+), 50 deletions(-) diff --git a/libavformat/vpcc.c b/libavformat/vpcc.c index 2390e1711c..df08de59a6 100644 --- a/libavformat/vpcc.c +++ b/libavformat/vpcc.c @@ -23,44 +23,6 @@ #include "libavutil/pixfmt.h" #include "vpcc.h" -enum VpxColorSpace -{ - VPX_COLOR_SPACE_UNSPECIFIED = 0, - VPX_COLOR_SPACE_BT601 = 1, - VPX_COLOR_SPACE_BT709 = 2, - VPX_COLOR_SPACE_SMPTE_170 = 3, - VPX_COLOR_SPACE_SMPTE_240 = 4, - VPX_COLOR_SPACE_BT2020_NCL = 5, - VPX_COLOR_SPACE_BT2020_CL = 6, - VPX_COLOR_SPACE_RGB = 7, -}; - -static int get_vpx_color_space(AVFormatContext *s, - enum AVColorSpace color_space) -{ - switch (color_space) { - case AVCOL_SPC_RGB: - return VPX_COLOR_SPACE_RGB; - case AVCOL_SPC_BT709: - return VPX_COLOR_SPACE_BT709; - case AVCOL_SPC_UNSPECIFIED: - return VPX_COLOR_SPACE_UNSPECIFIED; - case AVCOL_SPC_BT470BG: - return VPX_COLOR_SPACE_BT601; - case AVCOL_SPC_SMPTE170M: - return VPX_COLOR_SPACE_SMPTE_170; - case AVCOL_SPC_SMPTE240M: - return VPX_COLOR_SPACE_SMPTE_240; - case AVCOL_SPC_BT2020_NCL: - return VPX_COLOR_SPACE_BT2020_NCL; - case AVCOL_SPC_BT2020_CL: - return VPX_COLOR_SPACE_BT2020_CL; - default: - av_log(s, AV_LOG_ERROR, "Unsupported color space (%d)\n", color_space); - return -1; - } -} - enum VPX_CHROMA_SUBSAMPLING { VPX_SUBSAMPLING_420_VERTICAL = 0, @@ -100,12 +62,6 @@ static int get_bit_depth(AVFormatContext *s, enum AVPixelFormat pixel_format) return desc->comp[0].depth; } -static int get_vpx_transfer_function( - enum AVColorTransferCharacteristic transfer) -{ - return transfer == AVCOL_TRC_SMPTEST2084; -} - static int get_vpx_video_full_range_flag(enum AVColorRange color_range) { return color_range == AVCOL_RANGE_JPEG; @@ -117,14 +73,12 @@ int ff_isom_write_vpcc(AVFormatContext *s, AVIOContext *pb, int profile = par->profile; int level = par->level == FF_LEVEL_UNKNOWN ? 0 : par->level; int bit_depth = get_bit_depth(s, par->format); - int vpx_color_space = get_vpx_color_space(s, par->color_space); int vpx_chroma_subsampling = get_vpx_chroma_subsampling(s, par->format, par->chroma_location); - int vpx_transfer_function = get_vpx_transfer_function(par->color_trc); int vpx_video_full_range_flag = get_vpx_video_full_range_flag(par->color_range); - if (bit_depth < 0 || vpx_color_space < 0 || vpx_chroma_subsampling < 0) + if (bit_depth < 0 || vpx_chroma_subsampling < 0) return AVERROR_INVALIDDATA; if (profile == FF_PROFILE_UNKNOWN) { @@ -138,9 +92,10 @@ int ff_isom_write_vpcc(AVFormatContext *s, AVIOContext *pb, avio_w8(pb, profile); avio_w8(pb, level); - avio_w8(pb, (bit_depth << 4) | vpx_color_space); - avio_w8(pb, (vpx_chroma_subsampling << 4) | (vpx_transfer_function << 1) | - vpx_video_full_range_flag); + avio_w8(pb, (bit_depth << 4) | (vpx_chroma_subsampling << 1) | vpx_video_full_range_flag); + avio_w8(pb, par->color_primaries); + avio_w8(pb, par->color_trc); + avio_w8(pb, par->color_space); // vp9 does not have codec initialization data. avio_wb16(pb, 0);