From patchwork Sat May 27 22:00:51 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 3750 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.10.2 with SMTP id 2csp863191vsk; Sat, 27 May 2017 15:01:40 -0700 (PDT) X-Received: by 10.28.68.195 with SMTP id r186mr5418590wma.22.1495922500398; Sat, 27 May 2017 15:01:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1495922500; cv=none; d=google.com; s=arc-20160816; b=wdI2nIZ5zasbg/d1cD2OQg9NnyFNC8ctMxwDwMhfXc3GN13uzoHt3PQjbmJPZK1lgR fE8Z98s0z2HkF1eCBQWtlUAbx/0QpPkF3K9QpIJmLkrZJiNS/eH9uNqd2sk+WFwem8y5 3CaHYwVSOUs6dPLv6UE0q2dv1aLfJCLFhS79dpFiXXdEYuX7x46Lr5SkABzMmkFgtYuh e97hFjluvypmF6HGvVosHwUuFtAoqker4RU+FrDdHerisfETDhRb5OI4sHWdLhNbKZ/+ SxXYAmXfCYJGNhK19AKiJ+hTv2Y2nVPE/nUDtWoABbK+SMVETTpQpMgmX4W+KhpImOTd xzDg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:dkim-signature :delivered-to:arc-authentication-results; bh=9qVHGObRLUQLZ3CPCsJsZkt2oNrJPkZpoc72H7ZXSk0=; b=MLfeQppkoTR1x27DCcmu+aHcqO5CZ1x7xr2y3tGmobwAOeM7vM2osN1gulEBWaAZzd gVdbaaSeKpWwGkkmjlLf++f24Ne9++11H+3dj/mBA+N9gVQ/QHEUHRSjQfOaBuARPLN2 ajBN7hR6q1U0/9PSnFpe1JUpufwzSkfvHFoHEDTnYu16qAQVvxq0XNYvWu0YETPx8Mje ES3cNDML1Nn+9vfS8G5W9ThyqOI6Up0CELBGiQcSN1smBC7tYuXV4GLA9oKQVt2ZuovH x8TU128z6bbE4sYRDfxaf3MY5p+Z7xaFzeosVJa83uoW/AZkOrhj19ZzFG57sVJ/ApRv sf7w== ARC-Authentication-Results: i=1; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id y20si5485819wrd.81.2017.05.27.15.01.39; Sat, 27 May 2017 15:01: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 889B368975D; Sun, 28 May 2017 01:01:32 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt0-f182.google.com (mail-qt0-f182.google.com [209.85.216.182]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9A4C768836D for ; Sun, 28 May 2017 01:01:25 +0300 (EEST) Received: by mail-qt0-f182.google.com with SMTP id f55so30113773qta.3 for ; Sat, 27 May 2017 15:01:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id; bh=WjuJAsbcGNVPQ3U9J+f945yxMJXqkkK50qocpWzIfHA=; b=uVG4GhbrWyihylkUUM0F3eOaw2ycghIPy0RJjliwBi/ipKkRGr1Y7qt3vNB4ADH4XY GFuacljx4yCJ8bpoCFvC8TAljiWrTl9Kpf95QZuyWXKBBSl6WpexSRSsVD5ptIXtAocJ TSxsWom5CYtxNqYqnKSIb2Y09peTqiBveccGOu6UL0OVFxejmiDcOH5pQhLk+rp9+Re0 950CXcCQlmG1ex/4wDGIrlnsPA1W/zsYbo9e6H+hQ2htODdhXXWmF4JTpjvwy9El0kcN p5FBOyricCGaPIwCIiUks5T7ZthXL99PPXocUzqURl0AJ5G1tMvke+ycmYcRwy0s2SYq MBtQ== 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; bh=WjuJAsbcGNVPQ3U9J+f945yxMJXqkkK50qocpWzIfHA=; b=F/14rOFckJqAYxIgBOVsTVM2zMBjSjZYXaT3OM7QXznyE6iFtxY3hv1urpf8UxMsvQ /RidhAKbJ9Qq3r0nAluPS4gA8FuAfG8qs4ZsTmtWafBhIrDSyB1QxlI8U9Vp3a8D1FWN pwAS1P2ZhqqfNDzJ4LwT581ol1IvlWVWEhIUoul0hHTjaBUEWXHPECOvjWMcjypPunLo XbhfJmRhJPixNlxmTYQDx1a3GMiQN2RotYZ//jvttrulOasihU352O9q08bB5vbG+r65 chtPrLIIfLUUpcYUNuA8d6q8OazE6AjWejrmI59MFxHmdm26V0gY8jSqhot2WZrOprFQ DKaw== X-Gm-Message-State: AODbwcCgXQyV5QWLVnYcf04qGrZIoQHhemLl0cAWydCNtXKeCrTRND4w I4R1g32VytvrDPP6 X-Received: by 10.200.46.239 with SMTP id i44mr10568366qta.89.1495922487676; Sat, 27 May 2017 15:01:27 -0700 (PDT) Received: from localhost.localdomain ([181.231.116.134]) by smtp.gmail.com with ESMTPSA id n3sm2417507qkd.21.2017.05.27.15.01.26 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sat, 27 May 2017 15:01:26 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Sat, 27 May 2017 19:00:51 -0300 Message-Id: <20170527220051.2432-1-jamrial@gmail.com> X-Mailer: git-send-email 2.12.1 Subject: [FFmpeg-devel] [PATCH] avformat/mov: add support for reading VP Codec Configuration Box 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" As defined in "VP Codec ISO Media File Format Binding v1.0" https://github.com/webmproject/vp9-dash/blob/master/VPCodecISOMediaFileFormatBinding.md Signed-off-by: James Almer --- libavformat/mov.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/libavformat/mov.c b/libavformat/mov.c index 3845e63b53..628ed853ac 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -4612,6 +4612,50 @@ static int mov_read_tmcd(MOVContext *c, AVIOContext *pb, MOVAtom atom) return 0; } +static int mov_read_vpcc(MOVContext *c, AVIOContext *pb, MOVAtom atom) +{ + AVStream *st; + int version, color_range, color_primaries, color_trc, color_space; + + if (c->fc->nb_streams < 1) + return 0; + st = c->fc->streams[c->fc->nb_streams - 1]; + + if (atom.size < 5) { + av_log(c->fc, AV_LOG_ERROR, "Empty VP Codec Configuration box\n"); + return AVERROR_INVALIDDATA; + } + + version = avio_r8(pb); + if (version != 1) { + av_log(c->fc, AV_LOG_WARNING, "Unsupported VP Codec Configuration box version %d\n", version); + return 0; + } + avio_skip(pb, 3); /* flags */ + + avio_skip(pb, 2); /* profile + level */ + color_range = avio_r8(pb); /* bitDepth, chromaSubsampling, videoFullRangeFlag */ + color_primaries = avio_r8(pb); + color_trc = avio_r8(pb); + color_space = avio_r8(pb); + if (avio_rb16(pb)) /* codecIntializationDataSize */ + return AVERROR_INVALIDDATA; + + if (!av_color_primaries_name(color_primaries)) + color_primaries = AVCOL_PRI_UNSPECIFIED; + if (!av_color_transfer_name(color_trc)) + color_trc = AVCOL_TRC_UNSPECIFIED; + if (!av_color_space_name(color_space)) + color_space = AVCOL_SPC_UNSPECIFIED; + + st->codecpar->color_range = (color_range & 1) ? AVCOL_RANGE_JPEG : AVCOL_RANGE_MPEG; + st->codecpar->color_primaries = color_primaries; + st->codecpar->color_trc = color_trc; + st->codecpar->color_space = color_space; + + return 0; +} + static int mov_read_smdm(MOVContext *c, AVIOContext *pb, MOVAtom atom) { MOVStreamContext *sc; @@ -5478,6 +5522,7 @@ static const MOVParseTableEntry mov_default_parse_table[] = { { MKTAG('d','O','p','s'), mov_read_dops }, { MKTAG('S','m','D','m'), mov_read_smdm }, { MKTAG('C','o','L','L'), mov_read_coll }, +{ MKTAG('v','p','c','C'), mov_read_vpcc }, { 0, NULL } };