From patchwork Wed Jul 3 21:26:44 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 50313 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:cc64:0:b0:482:c625:d099 with SMTP id k4csp3359653vqv; Wed, 3 Jul 2024 15:04:19 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXwE8al0QLOEieWKmnXxg6eOW/1mir7JiuTbn7UqV6jqgyVE40PcqJ6OR77JH2u8BbHEow+dM5veg8wazreTugrH8pygDu7+966Tw== X-Google-Smtp-Source: AGHT+IExY6hnbAUDkFfxv5E/4B6XlajYUM/Yc6cgcfI1U8ZsOWz21C+HOjjSYp+qVGtCNqZ2tlgZ X-Received: by 2002:a17:907:86a0:b0:a5c:eafb:5288 with SMTP id a640c23a62f3a-a751448a596mr1133222066b.31.1720044259077; Wed, 03 Jul 2024 15:04:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1720044259; cv=none; d=google.com; s=arc-20160816; b=fvL8IdvRq3SHWBE4IlAl8yrREJvJlZZeaymZysbxzQ10LbLukAOBnoUlDRyXbpKLsZ u4Q8Wb9eDMZG0aQezA2IzP5nA05w3I5UDrxkQw9+Lyn8N2eEC4XzXsEKPi4OGmKDvfPo 5h7RUovRKweZnDg9K4/jSzkVSs32jjZ/SG1U16CCwD3EZ34QpbvI70S30szoA+GCyyAM 6LE6ILshA7HrK8SmPalyS1dh5IvQD6Q2jVzmcuHbEizOTEejDGZ+ETOmlZ0DygLmvlpP RAKr6ThsPTshUYIMuuRlGXFGR4bj4Q67e6MCLCCtNLTi9wo+n4rVVaRMPYFDutJBiu7r Qdmw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=Fena0D/UTYqGc835PoQAzejbwWJpKOeseJ2ENSaeH78=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=bn6T7NkLZLnEX5zLT3ybmlnbJYO9QE5WrCT7FEIgscOHBDZVxH+TAzWCorkGNSDXVS QhbqKTbqhGaAcQgj9oCYjjUGFYMaMMlW3hnANny1qaU4VptZvDL/zYVNUFV/RHC34Xr0 oF9BSaFI2fJWe77zTs2ygo1w0N8Y7baG+iUuF9bZEcagmQVMq+xn9NqsQpCeckbKaRQ/ J3+xR3o30Zo8onuoYGErNPgrGrge1unh3qNdi92+nbqBuYM13TWgcAecENCfq5nLdiwf OXQeRixbomirMSSPkBq4qd3eF4O+JgM7NgizzZUTbImhjkZs8EA9fAaFuauaJ/9VY/4W uwAg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=gj++zi4F; 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 a640c23a62f3a-a72ab04aa14si626812066b.319.2024.07.03.15.04.18; Wed, 03 Jul 2024 15:04:19 -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=20230601 header.b=gj++zi4F; 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 48AF468D9FA; Thu, 4 Jul 2024 00:26:55 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f41.google.com (mail-pj1-f41.google.com [209.85.216.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 251BB68D9DE for ; Thu, 4 Jul 2024 00:26:47 +0300 (EEST) Received: by mail-pj1-f41.google.com with SMTP id 98e67ed59e1d1-2c983d8bdc7so24339a91.0 for ; Wed, 03 Jul 2024 14:26:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1720042006; x=1720646806; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=NV2xm4pqRWwpFVp7aW8CInV4e2ZHgAAXcqMVGVnmP78=; b=gj++zi4FLdqW9JAYaEw54Hr2kjntAaXAWycTVA2483WJZPQtccNQheeKMaWZ/ZTzKj IlpE2gOr2Th0pfo6uGDKdTPVTC/f0zusLH0lKfuRp/OGrC0C4D0MzdIwaRnBRYjEycHf ShIZJCsb8IXQtWtxP7ipOgY+AymD2qoQ3D+mRqxRqHZvZdUqfkOuwGkbmiFx22wWbq7y qN7qO3z9WrbHj5/rTKyKbEKvAHHvVe4rFqvDoR2P+CY5dp6p9gT4yedPyddrcJLWPeQz mrVghSwdzRTKoAF7UuH42yTi9aEzoRQ8uTZdFydDJ9k57eJawbHFbeyroi0H2tke9FRp n6vA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720042006; x=1720646806; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=NV2xm4pqRWwpFVp7aW8CInV4e2ZHgAAXcqMVGVnmP78=; b=Sa6nLnsKuG/ZCrAjt3lP/sbLMAoRfjUDWgFPxttK+ph+yCl3HCUYcO5K3aZXunElEA r8DOhrp2hd9IO0o1YtOBfnuZbhhuzHuw6h+AZQp47QcZXpmgXt3qvLlcTbFt7PUERriN 6DNMRoLcKzTW8VZg1MZXcTb95PpOw+kqkqHuD0lmKi4ss468BIwbu4Q6HIYJwc6wI9M8 lIDsHJdRBR1eTyBcENHKQZ/X7sksRqRg0HuuT4TFaq9dT1EKQl0gCXcloTPMrEcDnurf VQVOERo4ogdg0Nc4PAoJ9FaGbUOGnhHl0x/U5C2wcenMRc+8pNm+DMFlKWrXmKgKF7fe mrKA== X-Gm-Message-State: AOJu0Yw3DJOqlxtPMpqBwsJek3z2t6pdwMbCFAMjXP4BzBqFRht7BKqx j1C46nzc/0nxh7j4dzg3us6m6cLKH+anU0V+dwM92oJvCW1IEme6YxP+5A== X-Received: by 2002:a17:90a:55c2:b0:2c7:c788:d34d with SMTP id 98e67ed59e1d1-2c93d76508emr10537190a91.38.1720042005762; Wed, 03 Jul 2024 14:26:45 -0700 (PDT) Received: from localhost.localdomain ([190.194.167.233]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2c91ce58877sm11370560a91.24.2024.07.03.14.26.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Jul 2024 14:26:45 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Wed, 3 Jul 2024 18:26:44 -0300 Message-ID: <20240703212648.48483-9-jamrial@gmail.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240703212648.48483-1-jamrial@gmail.com> References: <20240703212648.48483-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 09/11] avformat/movenc: add support for writing lhvC boxes 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 3NA6oJLo3Oc5 Signed-off-by: James Almer --- libavformat/movenc.c | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index f8eb6fadf7..26a67e6e47 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -1557,6 +1557,26 @@ static int mov_write_hvcc_tag(AVIOContext *pb, MOVTrack *track) return update_size(pb, pos); } +static int mov_write_lhvc_tag(AVIOContext *pb, MOVTrack *track) +{ + int64_t pos = avio_tell(pb); + int ret; + + avio_wb32(pb, 0); + ffio_wfourcc(pb, "lhvC"); + if (track->tag == MKTAG('h','v','c','1')) + ret = ff_isom_write_lhvc(pb, track->vos_data, track->vos_len, 1); + else + ret = ff_isom_write_lhvc(pb, track->vos_data, track->vos_len, 0); + + if (ret < 0) { + avio_seek(pb, pos, SEEK_SET); + return ret; + } + + return update_size(pb, pos); +} + static int mov_write_evcc_tag(AVIOContext *pb, MOVTrack *track) { int64_t pos = avio_tell(pb); @@ -2523,9 +2543,14 @@ static int mov_write_video_tag(AVFormatContext *s, AVIOContext *pb, MOVMuxContex } else if (track->par->codec_id == AV_CODEC_ID_DNXHD) { mov_write_avid_tag(pb, track); avid = 1; - } else if (track->par->codec_id == AV_CODEC_ID_HEVC) + } else if (track->par->codec_id == AV_CODEC_ID_HEVC) { mov_write_hvcc_tag(pb, track); - else if (track->par->codec_id == AV_CODEC_ID_VVC) + if (track->st->disposition & AV_DISPOSITION_MULTILAYER) { + ret = mov_write_lhvc_tag(pb, track); + if (ret < 0) + av_log(mov->fc, AV_LOG_WARNING, "Not writing 'lhvC' atom for multilayer stream.\n"); + } + } else if (track->par->codec_id == AV_CODEC_ID_VVC) mov_write_vvcc_tag(pb, track); else if (track->par->codec_id == AV_CODEC_ID_H264 && !TAG_IS_AVCI(track->tag)) { mov_write_avcc_tag(pb, track);