From patchwork Mon Jul 9 18:26:53 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 9659 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:104:0:0:0:0:0 with SMTP id c4-v6csp2802855jad; Mon, 9 Jul 2018 11:35:25 -0700 (PDT) X-Google-Smtp-Source: AAOMgpcWAcVcqfxpjT1lDSj6CiItDPQaMx5cFj8jLvv/97QKZzM+EQ89HArTIKnktzdzfCvj4xbH X-Received: by 2002:a1c:55c8:: with SMTP id j191-v6mr12430967wmb.67.1531161325739; Mon, 09 Jul 2018 11:35:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1531161325; cv=none; d=google.com; s=arc-20160816; b=fBqkBOPcbIIqfzbpfgXcrbJY1jLyP8MAbxAxPcpnkX6zBZCZQZXVCwfEImCDbjJoUh O4nNd5Bqc3bIdzVtzyVO8jR5HXmRysJrr/uwDuEN98KIGxH4Wpfxhjk69sdKtYHsL/4y WIgXLMECmPG9RC3Js+MQfnd+iRm4hvMWrypHALjxZPxFrFOv05oDjvifWXQpUrSjT1IJ JHpobe/2gbrgnRMY3B08gvTExnulqJk3VWIuzNsnIzxW4oHcX8haBNTlsSd1ISc3IPAP uTMgCqKm7Cpi+xJj4LZ6cuhZhEbkst6OnxWu9uvJsd+XJz1pUCGu/Ho1oB43c8Mj+5Bp hmEw== 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:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=LzD24Unc1hYUyxGDhP4QYdAIiHoPYGou5IioabNQkN0=; b=L81kzQvJYEfZ65orRniDiRiAiSLScpTWmonwPMqB02IGUDA75u69J6AsrD6E3xS2bf uf4XDL2XmstQAbM3OMHJgosdidUiLGAsnX4PTeXYQjDSrwO0D97r6A6ZWSsHEtNflSlf 4D2qj7kg6DO2prXH3s0+6X86ycTGzPQKMsqXH3THBNRlXIR792tCsjjcbVZs/bocZf/h PHHv6gjJgcEEXK5FUg0xvbMnvcYKCgC4FjTFOKSxhYZaDOJMpXTSvVg0Z3YCv3KZwAK4 A9SwWxN+okQ/5i3qBdt7VYd98A8pjxFgsax9VU+UZBgsG/2hi7r08iRg7220RCriGNak mtKw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=A11kaeY3; 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=QUARANTINE 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 e6-v6si13615803wrs.301.2018.07.09.11.35.25; Mon, 09 Jul 2018 11:35:25 -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 header.s=20161025 header.b=A11kaeY3; 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=QUARANTINE 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 9B6E168A4EE; Mon, 9 Jul 2018 21:35:17 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk0-f174.google.com (mail-qk0-f174.google.com [209.85.220.174]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A5E3468A4D6 for ; Mon, 9 Jul 2018 21:35:10 +0300 (EEST) Received: by mail-qk0-f174.google.com with SMTP id z74-v6so10211162qkb.10 for ; Mon, 09 Jul 2018 11:35:17 -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=y3YK6Sfvrf8Ssu+hKBXteDA4rqhwtrSalr2nCudIN9k=; b=A11kaeY3EgLOhSM1i6STmiNbdHRF7DASi56MAblVdOvZnrFSdlZqaFtGBFNpzgTNm6 q8jOoc8GeB9CVfjuHKpyvVzyNI5UDyKJhmGvruuBjv/+faG3RGRVGbIXt02X9YjNILgj eCoRPTdubr3PZwbFUM9Omh0jfnes1XNR5TGHrPPVerjCi7GLRQ9rM/wvs6CbRDwABgvE IfuNyxPIeEVReDNQuAIhDr4n5p9o6lrXLOaY+ztDSyS+V6U50VU+qC58gytYVBAWUs/a yLkqm0TbGBDAIeUR5WJMUTU2mWI8BBEjwzkGvadSPx7sUEsxhmHSELruSqJynMIQauyT FcoA== 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=y3YK6Sfvrf8Ssu+hKBXteDA4rqhwtrSalr2nCudIN9k=; b=czZC7UAY1vuZTgsNnUjdGJKNCABDLASB2ehGtfFXsDI0yy5f1EQMTZjZAcndI26VGL LmN+4US8/+aqHreMZcdfJ75bCiQjYLRQXkgiKaQaT/uaaqKGORXl5kyUKRq4mXg5EP9k HKSYSR0iVmgr5nhyjJCu53x2AR0QPzYXNRDctHv6TEPIHeeisjMbqXa9H5eIU1Rqv88i hCNGvQsVdvTbOVC8ZBPZGbRQ1l0vFaCI4+GCBZdy1cCGvV7EvojOLORXQvJNRA0bLKY6 r8LwxKWuWTZZrmchNMU5WB6cj153AfMBPvxNi/0PUJY1CYj537ib2/PIE0DlkOmEb8nN 3v7g== X-Gm-Message-State: APt69E1oMntMMgIjqLc3AP4/rQZUdfoJ/IIWxJoSeM5LWYWq1iIUSc2F MQylq8ND2rMYwfhf3bHlsRU6HA== X-Received: by 2002:a37:5b83:: with SMTP id p125-v6mr18885017qkb.196.1531160969717; Mon, 09 Jul 2018 11:29:29 -0700 (PDT) Received: from localhost.localdomain ([190.188.171.140]) by smtp.gmail.com with ESMTPSA id f3-v6sm13138260qtf.61.2018.07.09.11.29.28 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 09 Jul 2018 11:29:29 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Mon, 9 Jul 2018 15:26:53 -0300 Message-Id: <20180709182654.9996-5-jamrial@gmail.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180709182654.9996-1-jamrial@gmail.com> References: <20180709182654.9996-1-jamrial@gmail.com> Subject: [FFmpeg-devel] [PATCH 4/5] avformat/mov: add support for AV1 streams 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" Signed-off-by: James Almer --- libavformat/isom.c | 1 + libavformat/mov.c | 31 +++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/libavformat/isom.c b/libavformat/isom.c index 2792371c25..ce66d1bcd4 100644 --- a/libavformat/isom.c +++ b/libavformat/isom.c @@ -188,6 +188,7 @@ const AVCodecTag ff_codec_movvideo_tags[] = { { AV_CODEC_ID_VP8, MKTAG('v', 'p', '0', '8') }, /* VP8 */ { AV_CODEC_ID_VP9, MKTAG('v', 'p', '0', '9') }, /* VP9 */ + { AV_CODEC_ID_AV1, MKTAG('a', 'v', '0', '1') }, /* AV1 */ { AV_CODEC_ID_MPEG1VIDEO, MKTAG('m', '1', 'v', ' ') }, { AV_CODEC_ID_MPEG1VIDEO, MKTAG('m', '1', 'v', '1') }, /* Apple MPEG-1 Camcorder */ diff --git a/libavformat/mov.c b/libavformat/mov.c index 1346ffe480..e8f9b5fede 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -5182,6 +5182,36 @@ static int mov_read_tmcd(MOVContext *c, AVIOContext *pb, MOVAtom atom) return 0; } +static int mov_read_av1c(MOVContext *c, AVIOContext *pb, MOVAtom atom) +{ + AVStream *st; + int ret, version; + + 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 AV1 Codec Configuration Box\n"); + return AVERROR_INVALIDDATA; + } + + version = avio_r8(pb); + if (version != 0) { + av_log(c->fc, AV_LOG_WARNING, "Unknown AV1 Codec Configuration Box version %d\n", version); + return 0; + } + avio_skip(pb, 3); /* flags */ + + avio_skip(pb, 1); /* reserved, initial_presentation_delay_present, initial_presentation_delay_minus_one */ + + ret = ff_get_extradata(c->fc, st->codecpar, pb, atom.size - 5); + if (ret < 0) + return ret; + + return 0; +} + static int mov_read_vpcc(MOVContext *c, AVIOContext *pb, MOVAtom atom) { AVStream *st; @@ -6619,6 +6649,7 @@ static const MOVParseTableEntry mov_default_parse_table[] = { { MKTAG('A','A','L','P'), mov_read_avid }, { MKTAG('A','R','E','S'), mov_read_ares }, { MKTAG('a','v','s','s'), mov_read_avss }, +{ MKTAG('a','v','1','C'), mov_read_av1c }, { MKTAG('c','h','p','l'), mov_read_chpl }, { MKTAG('c','o','6','4'), mov_read_stco }, { MKTAG('c','o','l','r'), mov_read_colr },