From patchwork Tue Mar 19 19:16:39 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Niklas Haas X-Patchwork-Id: 47228 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:958e:b0:1a3:31a3:7958 with SMTP id iu14csp1880792pzb; Tue, 19 Mar 2024 12:17:07 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUgm1l5t5rmGzRiB7aAnqdt4KIn1iZSmrT457543OlyThPGDYcDWY/4XZb6pdBMvmvnz1rsv2pW8sS7rVq1Nbca+xbGZBXc3aIiYQ== X-Google-Smtp-Source: AGHT+IGL3DldvranxIM02U8p3uJMsLEskzKYylOheTux+/e37qcLE+M1KSBbj3Cqg5ejb4s/eJ1O X-Received: by 2002:a2e:80c2:0:b0:2d4:76d6:e9ca with SMTP id r2-20020a2e80c2000000b002d476d6e9camr10864796ljg.28.1710875827065; Tue, 19 Mar 2024 12:17:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1710875827; cv=none; d=google.com; s=arc-20160816; b=nOaHH7Z3HwYbooVyxw3p//D2iKk1ptYgbjznFBw64u1cH1k5RmUkNJOmvqlfXUMF3f MVgRL5mBChZ9vr4UE3ws/e4/t0vXtW4q2zZv9wHD8DC+bPxEmzezgpMct3r6rXVm2X/7 FYaj+B3dMj/4LmnCXnmhosAW4lHbT2n8G1zKh+U4SCc+KqAUsxFGmGUTyS3rjBpI0BUK YObyJxfQ4RnkNlDb6Xy7kDSHf7HDg+Pln0SV1ziyZz378uCVx2SW2qpHn5L0XUJy7pBt 7oLO+sARrLe3v9pQgjlReilgXXyRbTAvhyqrcT8Qe3SVOfgKEs5Bmy3Cm7LCYj+7r4yz q/bA== 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:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=fMt8vc8soBCROrzUEbttHpHscy1zvM3KFXjFvNIpkqk=; fh=xmAeKtysnShNOmkhiJmYkS30uw4Fu2hvBJ7qlIwukxQ=; b=lVw11lolR3oBp+LuER0VKgw7wmfNb9Py0GwGzDXyPsW7A/wAVeq8OVn+puBsGYtYhY 4Oelm1/YPFSAE9mtjYE1ESD147EwljgiGt3vkkcwMhF/Y1wDgHE87QB6gV2MIwcL2/sZ 1vddBl/DumghhjP2ePu2kxq0XtotIudJd+oqE0uLhuHL71aDzCHtGMawmC+vKtlthQsX SUucP0l+PE+3wa8+q+GbcknZygyEt3PJK4E8kSR37QDt3t15Disf24/ddBmF22YXfbY0 fd7LCIY4e4Xq7B0VsQv/1j5roY+rDFWNXqbsPTi9id/+vsj6riINeni5vyLUzeN2CVmE o4AQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@haasn.xyz header.s=mail header.b=d+Fxc57q; 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 p7-20020a056402500700b0056739aba263si5725349eda.440.2024.03.19.12.17.06; Tue, 19 Mar 2024 12:17:07 -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=@haasn.xyz header.s=mail header.b=d+Fxc57q; 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 C775968D2E9; Tue, 19 Mar 2024 21:16:55 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from haasn.dev (haasn.dev [78.46.187.166]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 12FDA68D2E9 for ; Tue, 19 Mar 2024 21:16:48 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=haasn.xyz; s=mail; t=1710875807; bh=o8sHkckAWoYsTvDu7nJczWp5oVH/hYNUAOvDwpIMDus=; h=From:To:Cc:Subject:Date:From; b=d+Fxc57q39BZSdKOIab+FG9os9HFnfJdzcu1QvXCCOjrxxHzz7D0HFVoim4paA4FY ZdVu1erF6p9QtRrO3Vzb1ENoPPJRjnwJeS+mlHB9SD2Uh+5J4iD2W1XV6s/LyorNGe 4Pdi9ByXSr0Vumo05CPfKOrKjR0sSJWwB5rdsTqY= Received: from haasn.dev (unknown [10.30.0.2]) by haasn.dev (Postfix) with ESMTP id 8CD9A40292; Tue, 19 Mar 2024 20:16:47 +0100 (CET) From: Niklas Haas To: ffmpeg-devel@ffmpeg.org Date: Tue, 19 Mar 2024 20:16:39 +0100 Message-ID: <20240319191642.95217-1-ffmpeg@haasn.xyz> X-Mailer: git-send-email 2.44.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/4] fftools/ffmpeg_enc: strip DOVI config record for AV1 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: Niklas Haas Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 6QdIp4NLhimc From: Niklas Haas AV1 streams don't use configuration records, so delete them when encoding to AV1. Ideally this would be, as the comment suggests, handled at the frame-level (and stripped by the av1 encoder), but given the status quo of copying the packet-level data here directly, we should definitely make an effort to strip it. --- fftools/ffmpeg_enc.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/fftools/ffmpeg_enc.c b/fftools/ffmpeg_enc.c index c9a12af1393..0c21acfafc6 100644 --- a/fftools/ffmpeg_enc.c +++ b/fftools/ffmpeg_enc.c @@ -354,17 +354,20 @@ int enc_open(void *opaque, const AVFrame *frame) */ if (ist) { for (int i = 0; i < ist->st->codecpar->nb_coded_side_data; i++) { - AVPacketSideData *sd_src = &ist->st->codecpar->coded_side_data[i]; - if (sd_src->type != AV_PKT_DATA_CPB_PROPERTIES) { - AVPacketSideData *sd_dst = av_packet_side_data_new(&ost->par_in->coded_side_data, - &ost->par_in->nb_coded_side_data, - sd_src->type, sd_src->size, 0); - if (!sd_dst) - return AVERROR(ENOMEM); - memcpy(sd_dst->data, sd_src->data, sd_src->size); - if (ist->autorotate && sd_src->type == AV_PKT_DATA_DISPLAYMATRIX) - av_display_rotation_set((int32_t *)sd_dst->data, 0); - } + AVPacketSideData *sd_src, *sd_dst; + sd_src = &ist->st->codecpar->coded_side_data[i]; + if (sd_src->type == AV_PKT_DATA_CPB_PROPERTIES) + continue; + if (sd_src->type == AV_PKT_DATA_DOVI_CONF && enc->id == AV_CODEC_ID_AV1) + continue; /* AV1 doesn't use DOVI configuration records */ + sd_dst = av_packet_side_data_new(&ost->par_in->coded_side_data, + &ost->par_in->nb_coded_side_data, + sd_src->type, sd_src->size, 0); + if (!sd_dst) + return AVERROR(ENOMEM); + memcpy(sd_dst->data, sd_src->data, sd_src->size); + if (ist->autorotate && sd_src->type == AV_PKT_DATA_DISPLAYMATRIX) + av_display_rotation_set((int32_t *)sd_dst->data, 0); } }