From patchwork Wed Jun 17 14:41:11 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Derek Buitenhuis X-Patchwork-Id: 20436 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id E495F44BD36 for ; Wed, 17 Jun 2020 17:41:36 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A72D968B095; Wed, 17 Jun 2020 17:41:36 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f67.google.com (mail-wr1-f67.google.com [209.85.221.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 81E1668A107 for ; Wed, 17 Jun 2020 17:41:29 +0300 (EEST) Received: by mail-wr1-f67.google.com with SMTP id l11so2642750wru.0 for ; Wed, 17 Jun 2020 07:41: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:mime-version :content-transfer-encoding; bh=sBPHdSbrzeQxWhB5LWlk7XfVgA16BZEBWDIMSj4YxwQ=; b=Futn8PV7/uqBxeMFr3O420otuVQ14Qsv2nLqRbvSMDDmkQ3oUIX0G/TeyJq8j01amb hEtWbO0rhluJ3joUzgVyAwCCrCqegLnZZzzLvW0QE0U7kNzbCK+eDhEi24ZU7R9M/ucA N9NR+txvihLrnNDZ1Q1H1Idnz9g1BFH3HQEjmOl1SN6FBexhvLEeZHZkpZICB8A3jloF /7DYAxDukI9tidF8Vh4YCzjijyy3pqU91BxtO6MGK3g5k/o8ZeG6aWYHn/mg+EvfNz0E 4BlJ+Q6RJu+s9FqRwNfVv/xHS6XS7oD3Dh6v/SyIDCpvp+wM4z/diXQ3dYBf85R5IT9c N/sQ== 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:mime-version :content-transfer-encoding; bh=sBPHdSbrzeQxWhB5LWlk7XfVgA16BZEBWDIMSj4YxwQ=; b=jkcKbxbfRxUQXzWSYb/FR8OYGcJ9ksCIYB7bm8v0lVdR5O5/uFWpT8gY5jEptnAPq7 YxKBGHhV+vTYGBCMeWl5Nr+UUEbIwQ5kdnS5OIJEzOZfkOPO9qyxPOvY3axNu+1UmSwB F4pdqgVyBRzFCy8AQT91MeIdtU/jSd9uS+hTaxKi1lk6Q0MTsWvVpaC1NhX+9lgAEXGj l47aE6EtPB0JeVQGnRr0lRmtOk/o/omwHhW5mWIbsJyvSgKgPrHB4n5aIQne3QUH2tjJ FFvWFEhEp/5X8D3WAuEtlxVevlH+9ZYrHu3vJISW1SCmp4gSFlJuzOZnGNgP3JQjg4mF qLIg== X-Gm-Message-State: AOAM533DlXYQorBS4C/OPdJR2AZdK6udr0fgI7EAzpSzn4HtKIY9l8GM WQy+oXijLo3X7BivCh3AOjFsYKYq X-Google-Smtp-Source: ABdhPJyYvyDv055xHGbugU1ZuRAMXuLOp1PQl8zbmvFitKJtg4xQt/Dr3jyYlNNX4AWCjJvjRZyLbg== X-Received: by 2002:adf:fe85:: with SMTP id l5mr485963wrr.333.1592404888726; Wed, 17 Jun 2020 07:41:28 -0700 (PDT) Received: from localhost.localdomain ([82.129.83.65]) by smtp.gmail.com with ESMTPSA id x13sm6519489wre.83.2020.06.17.07.41.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Jun 2020 07:41:28 -0700 (PDT) From: Derek Buitenhuis To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 Jun 2020 15:41:11 +0100 Message-Id: <20200617144111.183041-1-derek.buitenhuis@gmail.com> X-Mailer: git-send-email 2.27.0.rc2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2] avformat/movenc: Write 'av01' as a compatible brand when muxing AV1 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" This is a requirement of the AV1-ISOBMFF spec. Section 2.1. General Requirements & Brands states: * It SHALL have the av01 brand among the compatible brands array of the FileTypeBox Signed-off-by: Derek Buitenhuis --- Changes * Updated FATE refs. * Moved the write to be for all mode == mp4. --- libavformat/movenc.c | 6 +++++- tests/ref/lavf-fate/av1.mp4 | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 520aaafb74..60e20bcacc 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -4875,7 +4875,7 @@ static int mov_write_ftyp_tag(AVIOContext *pb, AVFormatContext *s) { MOVMuxContext *mov = s->priv_data; int64_t pos = avio_tell(pb); - int has_h264 = 0, has_video = 0; + int has_h264 = 0, has_av1 = 0, has_video = 0; int i; for (i = 0; i < s->nb_streams; i++) { @@ -4886,6 +4886,8 @@ static int mov_write_ftyp_tag(AVIOContext *pb, AVFormatContext *s) has_video = 1; if (st->codecpar->codec_id == AV_CODEC_ID_H264) has_h264 = 1; + if (st->codecpar->codec_id == AV_CODEC_ID_AV1) + has_av1 = 1; } avio_wb32(pb, 0); /* size */ @@ -4905,6 +4907,8 @@ static int mov_write_ftyp_tag(AVIOContext *pb, AVFormatContext *s) // brand, if not already the major brand. This is compatible with users that // don't understand tfdt. if (mov->mode == MODE_MP4) { + if (has_av1) + ffio_wfourcc(pb, "av01"); if (mov->flags & FF_MOV_FLAG_CMAF) ffio_wfourcc(pb, "cmfc"); if (mov->flags & FF_MOV_FLAG_FRAGMENT && !(mov->flags & FF_MOV_FLAG_NEGATIVE_CTS_OFFSETS)) diff --git a/tests/ref/lavf-fate/av1.mp4 b/tests/ref/lavf-fate/av1.mp4 index 38d2a80afe..c8dc8e9a1a 100644 --- a/tests/ref/lavf-fate/av1.mp4 +++ b/tests/ref/lavf-fate/av1.mp4 @@ -1,3 +1,3 @@ -0388467214421a19ba65d10a74dc35c0 *tests/data/lavf-fate/lavf.av1.mp4 -55936 tests/data/lavf-fate/lavf.av1.mp4 +4eed679a1d3e18edfd95b268167d8060 *tests/data/lavf-fate/lavf.av1.mp4 +55940 tests/data/lavf-fate/lavf.av1.mp4 tests/data/lavf-fate/lavf.av1.mp4 CRC=0x7c27cc15