From patchwork Mon Sep 19 23:03:36 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vignesh Venkat X-Patchwork-Id: 38063 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3b1c:b0:96:9ee8:5cfd with SMTP id c28csp1551107pzh; Mon, 19 Sep 2022 16:03:57 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5N0daIz2LjGMsNsnx8VzA+qS9wkQrlZUGchdG0xcBmeW5SoMk+dt9BVDgujLZ+l7noYqh+ X-Received: by 2002:a17:907:1de6:b0:77a:c72a:b853 with SMTP id og38-20020a1709071de600b0077ac72ab853mr13897691ejc.353.1663628636864; Mon, 19 Sep 2022 16:03:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1663628636; cv=none; d=google.com; s=arc-20160816; b=coNXIfYf5Fr9gd4IS4AlZ58f+7/28BqpwgJP04DwpzFOXI6QpBq+HFSdUOC9F77CFW IpK6rQbMo1Qz2Y1ndz2g+U4TCIlzuFLVNOeghCNt290K3zltge10j7u9w/ls7LxcCUOJ O7HjmQ1XPMq3kUM2tkA+z4yj2dh4H20s9A9U5caM96j3ylu599Z0tI0bxl08TKJiOTrf cNPJuUV/oP8au0Q5UJ8p7k9sUzlhUhLk0NDg0At2PiNRZRmQWO7ChBqe0h1eTgGDASnG 3le8b9WPfEa6Pqv1yClu7bPYqo0gGrYMDU46VmEbxY7OBDilIv2QFOiEzJ0/eto93NMX 8W+g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:to:from:message-id:mime-version:date :dkim-signature:delivered-to; bh=qfm0zVTG/Du34DpS8ZuF30zUTFzik26OUxQCBlARFwY=; b=Lsl2zLqsGUcWgV5BGr3tcSiYq9XC8HyFRXz3Rpg5v5qj+lrwTKJbICUzSvqdjDesFI Swue/J9tkjHnn4n43tmNxSjYPCuJKOWmcSOzFVVUhtuQPaex7dfAW63bxxc6khjpx9X9 wnDySNU82S/NmPUOKELEEqQLcjoHWB9kcJf0PFQHmg9Rrs4QB2Kkopix9dLgIOwMh76P IGPY7kxIO4oz4zlw+JzAqQMDk9ud6QNvsR4n+tftlp+eK07JYn/aH7Gep6IUfcPX+8xH B/UXy8vhKfJua1XVwcGxvkl1cfOn7B+0Y3N5s/n1/70brRnyUiqZAx85SGCxOy8rJffX lWGA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@google.com header.s=20210112 header.b=QyawqhX7; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id gs37-20020a1709072d2500b00770d9e664f8si30008636ejc.152.2022.09.19.16.03.55; Mon, 19 Sep 2022 16:03:56 -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=@google.com header.s=20210112 header.b=QyawqhX7; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3F14668BA12; Tue, 20 Sep 2022 02:03:52 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-yb1-f201.google.com (mail-yb1-f201.google.com [209.85.219.201]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0173C68B981 for ; Tue, 20 Sep 2022 02:03:45 +0300 (EEST) Received: by mail-yb1-f201.google.com with SMTP id i201-20020a253bd2000000b006b28b887dbaso552294yba.13 for ; Mon, 19 Sep 2022 16:03:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date; bh=/C3UHBZ0e55vQjeQuYlZkLnOX4im54V5uy8lo/KJTkI=; b=QyawqhX7dOLj5B8JPW0FY99Ci2rfLIZJWDvbgXC8jg6Y9Wf6vTZtx5b/vCE49J8Iiq YPFrzdYlvl5UQmwMkWdqodYO07tTJB+piPyjEoa6BbNWHXLEbnVlCvHwdJM14NUgfmmZ NeFZayFhRjkArMXrl/2lBRcogwjw+YM8HBPbaR3iDkrwXpysA65t5Ky87gQxhxA4TRhb KY4SooEXSvrpFwBpphfqnNUBEjm635u3V+hA0a4Ol9e/1U5r+Uay2YCuD1w4P9DE/mtz mcAJE22uWeod25juhkyiZiOhchQIYpzZABw2pLQw74dPZmfeEFsRTZTBRJxXZZL+fXLP wuow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date; bh=/C3UHBZ0e55vQjeQuYlZkLnOX4im54V5uy8lo/KJTkI=; b=Xv6FdC2Qc4AAuqz5zEvwSLKgGINz5gRWD6kt0p5OiWYvkPajrcxNmQtQAHZgtMH4j8 DzqTp3Jg5VsBYCfEiDdiwkJzET0iqG4oQVfZmwBGyw7WWylDARYHTnbb2Q7orXTKLrMx /TbxKAZOZywqQWcpccpWCoVeVDab5Txa15J2E1VW7ux03WoQlOkfKzLvDYcjJAJEM8sJ I3BmGgTLWK7oh5GovmaJgI3KxneEPQ7dOL3LNjp9NBs/IX5djZI8qES+zl+7ujQXSIJY OkLQpR03upD7JVjcHBE70G1ol+SNqAuvOAqg4xNaQwiMYmdZgjGFaa9Gs0ei8louVqzW 4NIA== X-Gm-Message-State: ACrzQf3QH2ninoNxp/sATfNJvYktdbptrJQyLqzwrivYLihHMA4o6ENE K9VjUebJ0cbRQ20wsWNH85iWTXkGsKPfg1U0nAbmUoN2tegLnrST4tMmLJfSLGjE8Lxe9+R6ZMe e+YvPxz2X1dTtKY01OEGLyNLfja6cGU6YKZFEAuPfjDVL9jt4f1NYUYccoPsWhUzvOpHm X-Received: from vigneshv3.mtv.corp.google.com ([2620:0:1000:2511:daef:a873:fa7b:499]) (user=vigneshv job=sendgmr) by 2002:a81:91c2:0:b0:345:41a:4967 with SMTP id i185-20020a8191c2000000b00345041a4967mr16851068ywg.28.1663628624045; Mon, 19 Sep 2022 16:03:44 -0700 (PDT) Date: Mon, 19 Sep 2022 16:03:36 -0700 Mime-Version: 1.0 X-Mailer: git-send-email 2.37.3.968.ga6b4b080e4-goog Message-ID: <20220919230336.366882-1-vigneshv@google.com> From: Vignesh Venkatasubramanian To: ffmpeg-devel@ffmpeg.org Subject: [FFmpeg-devel] [PATCH] avformat/movenc: Write auxi box for animated AVIF with alpha X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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 Cc: Vignesh Venkatasubramanian Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: jULxY1wE9i2r According to the HEIF specification Section 7.5.3.1, tracks with handler_type 'auxv' must contain a 'auxi' box in its SampleEntry to notify the nature of the auxiliary track to the decoder. The content is the same as the 'auxC' box. So paramterize and re-use the existing function. Signed-off-by: Vignesh Venkatasubramanian --- libavformat/movenc.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index c8b2e141cb..754f95912a 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -2179,6 +2179,16 @@ static int mov_write_ccst_tag(AVIOContext *pb) return update_size(pb, pos); } +static int mov_write_aux_tag(AVIOContext *pb, const char *aux_type) +{ + int64_t pos = avio_tell(pb); + avio_wb32(pb, 0); /* size */ + ffio_wfourcc(pb, aux_type); + avio_wb32(pb, 0); /* Version & flags */ + avio_write(pb, "urn:mpeg:mpegB:cicp:systems:auxiliary:alpha\0", 44); + return update_size(pb, pos); +} + static int mov_write_video_tag(AVFormatContext *s, AVIOContext *pb, MOVMuxContext *mov, MOVTrack *track) { int ret = AVERROR_BUG; @@ -2363,8 +2373,11 @@ static int mov_write_video_tag(AVFormatContext *s, AVIOContext *pb, MOVMuxContex if (avid) avio_wb32(pb, 0); - if (track->mode == MODE_AVIF) + if (track->mode == MODE_AVIF) { mov_write_ccst_tag(pb); + if (s->nb_streams > 0 && track == &mov->tracks[1]) + mov_write_aux_tag(pb, "auxi"); + } return update_size(pb, pos); } @@ -3044,16 +3057,6 @@ static int mov_write_pixi_tag(AVIOContext *pb, MOVMuxContext *mov, AVFormatConte return update_size(pb, pos); } -static int mov_write_auxC_tag(AVIOContext *pb) -{ - int64_t pos = avio_tell(pb); - avio_wb32(pb, 0); /* size */ - ffio_wfourcc(pb, "auxC"); - avio_wb32(pb, 0); /* Version & flags */ - avio_write(pb, "urn:mpeg:mpegB:cicp:systems:auxiliary:alpha\0", 44); - return update_size(pb, pos); -} - static int mov_write_ipco_tag(AVIOContext *pb, MOVMuxContext *mov, AVFormatContext *s) { int64_t pos = avio_tell(pb); @@ -3066,7 +3069,7 @@ static int mov_write_ipco_tag(AVIOContext *pb, MOVMuxContext *mov, AVFormatConte if (!i) mov_write_colr_tag(pb, &mov->tracks[0], 0); else - mov_write_auxC_tag(pb); + mov_write_aux_tag(pb, "auxC"); } return update_size(pb, pos); }