From patchwork Tue Aug 16 13:30:44 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Thilo Borgmann X-Patchwork-Id: 37315 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3d0d:b0:8d:a68e:8a0e with SMTP id y13csp1868091pzi; Tue, 16 Aug 2022 06:31:24 -0700 (PDT) X-Google-Smtp-Source: AA6agR5I2pXjeAXriUpyitAufw95nHUu6XovrXYM1HYNR35IDb2ZHPUUWxoSj2UN0RTM45Yalz89 X-Received: by 2002:a17:907:d07:b0:72e:ec79:ad0f with SMTP id gn7-20020a1709070d0700b0072eec79ad0fmr13758744ejc.296.1660656684579; Tue, 16 Aug 2022 06:31:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1660656684; cv=none; d=google.com; s=arc-20160816; b=rrzi8krFkEErsgoAiG3nEAiS4SARS/iV1C5FLUXMLkCBEgcsW+Q6MIQ8vdEycROAvq px9g+/6CIaFXT0bYoF4B7v9nfbD0QcRlr5u0EdIBrE/GMNeHZdtgqU6sKZbQf8HMx+tO DaQjjKhSLW3itX+s8+/HaLEs8wmbAcTSE0mTsu6e7Udn8+K3gNTfXM5JSgHR+g4N0Qj1 i3qVmvIV6sKY8Poe43SCv/b/+1EbI6s8BBYiVH6VLrbubnh4wYhP6ttwfaJozXUmrto4 F3Xp7zBfjKZKXhEg2wZuSgLsGKig7IwJj+7aAI2uhjvpJsYS2VpLc6p3wvl57/2UymVN n98g== 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:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=hdKxkcYyudJO3xVaibTXM7B2Zokx8/zeLWFRplZ0fP0=; b=Bmv1Ss8rWyUoHvzHST3FPHN+MP/vv5epjM8t6ADVsOQ7W79ZFqY+S6NnRuyhkTAP7N kT10bzFZcccG21badhjW2EhPSMmD5ixK/kNgBjCzemvB6XsnBdcXZHOM0tXoGmaJKRFl n38+zBo2bHoINPxPuAzzJyWLq+aC9BROmvhmlQG0tpDkfBQ8BdOrc8mgKpcGnot/nRqH trpHTB89BHJRolkKxfjvNRAzuAB9mIqXP6q5G5Ktuys3jO9S0edeYAsqb+JYBy/lyayJ 0YSbVw5f6GO0q+j+PybDho1lPWDqxPNz/ZyJKq4lqPDLQ+Gsk4cdWdTiOtB/naYJvXH7 S/Wg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@mail.de header.s=mailde202009 header.b=WR7qD5D2; 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=NONE dis=NONE) header.from=mail.de Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id p27-20020a1709060e9b00b00730d106e832si8729479ejf.248.2022.08.16.06.31.23; Tue, 16 Aug 2022 06:31:24 -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=@mail.de header.s=mailde202009 header.b=WR7qD5D2; 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=NONE dis=NONE) header.from=mail.de Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CAD1768B8E0; Tue, 16 Aug 2022 16:31:00 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from shout01.mail.de (shout01.mail.de [62.201.172.24]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A79B368B205 for ; Tue, 16 Aug 2022 16:30:52 +0300 (EEST) Received: from postfix03.mail.de (postfix03.bt.mail.de [10.0.121.127]) by shout01.mail.de (Postfix) with ESMTP id 539E0A0940; Tue, 16 Aug 2022 15:30:52 +0200 (CEST) Received: from smtp04.mail.de (smtp04.bt.mail.de [10.0.121.214]) by postfix03.mail.de (Postfix) with ESMTP id 384B580127; Tue, 16 Aug 2022 15:30:52 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=mail.de; s=mailde202009; t=1660656652; bh=k1u15UryNV8eawtG67y7rzGAt1E/8HFtrk4hHBYICzc=; h=From:To:Cc:Subject:Date:Message-Id:From:To:CC:Subject:Reply-To; b=WR7qD5D2egpAnIpMp4bFbhGUuRisGussjE5GGhqYBtVqckHryDQ+7oNjalPboU2ZF UepltKiYe3HuhB3c6gczZrxlc22mjInssTbkiXVT1yLWky/ua10xC71Yi9igROVtvD w3Z6bh0DWUvCSX4GeJws0yqh342m+9X27rwRiT56NFnb4Mi15WSFXhjwya1AgNyewX dZ6TQpSEU4cqGVSud6tGjnwe9jsa/lpMjLeS/ymEMZdOwRCdmB1vQngbW9NoGSvb2f 1KXSyXP43bwctD9++nkjITku8WepSwzxniDHwaMyAxqkS+j/wLX7sy7M62EncI9ANV RXSdmVlUCtG+A== Received: from [127.0.0.1] (localhost [127.0.0.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp04.mail.de (Postfix) with ESMTPSA id E334DC1338; Tue, 16 Aug 2022 15:30:51 +0200 (CEST) From: Thilo Borgmann To: ffmpeg-devel@ffmpeg.org Date: Tue, 16 Aug 2022 15:30:44 +0200 Message-Id: <20220816133046.70846-3-thilo.borgmann@mail.de> In-Reply-To: <20220816133046.70846-1-thilo.borgmann@mail.de> References: <20220816133046.70846-1-thilo.borgmann@mail.de> MIME-Version: 1.0 X-purgate: clean X-purgate: This mail is considered clean (visit http://www.eleven.de for further information) X-purgate-type: clean X-purgate-Ad: Categorized by eleven eXpurgate (R) http://www.eleven.de X-purgate: This mail is considered clean (visit http://www.eleven.de for further information) X-purgate: clean X-purgate-size: 3371 X-purgate-ID: 154282::1660656652-000016C9-BE6E54EA/0/0 Subject: [FFmpeg-devel] [PATCH 3/5] ffmpeg: Deprecate display rotation override with a metadata key 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: =?utf-8?q?Jan_Ekstr=C3=B6m?= Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: aysDra5O9Wyc From: Jan Ekström Now that we have proper options for defining display matrix overrides, this should no longer be required. fftools does not have its own versioning, so for now the define is just set to 1 and disables the functionality if set to zero. --- fftools/ffmpeg.c | 2 ++ fftools/ffmpeg.h | 5 +++++ fftools/ffmpeg_opt.c | 10 ++++++++++ 3 files changed, 17 insertions(+) diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c index 8eb7759392..b0a8839129 100644 --- a/fftools/ffmpeg.c +++ b/fftools/ffmpeg.c @@ -2824,12 +2824,14 @@ static int init_output_stream_streamcopy(OutputStream *ost) } } +#if FFMPEG_ROTATION_METADATA if (ost->rotate_overridden) { uint8_t *sd = av_stream_new_side_data(ost->st, AV_PKT_DATA_DISPLAYMATRIX, sizeof(int32_t) * 9); if (sd) av_display_rotation_set((int32_t *)sd, -ost->rotate_override_value); } +#endif switch (par->codec_type) { case AVMEDIA_TYPE_AUDIO: diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h index 0ea730fd42..12125ac006 100644 --- a/fftools/ffmpeg.h +++ b/fftools/ffmpeg.h @@ -53,6 +53,7 @@ #define FFMPEG_OPT_PSNR 1 #define FFMPEG_OPT_MAP_CHANNEL 1 #define FFMPEG_OPT_MAP_SYNC 1 +#define FFMPEG_ROTATION_METADATA 1 enum VideoSyncMethod { VSYNC_AUTO = -1, @@ -520,11 +521,15 @@ typedef struct OutputStream { const char *fps_mode; int force_fps; int top_field_first; +#if FFMPEG_ROTATION_METADATA int rotate_overridden; +#endif int autoscale; int bitexact; int bits_per_raw_sample; +#if FFMPEG_ROTATION_METADATA double rotate_override_value; +#endif AVRational frame_aspect_ratio; diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c index e184b4239c..f6551621c3 100644 --- a/fftools/ffmpeg_opt.c +++ b/fftools/ffmpeg_opt.c @@ -2930,16 +2930,26 @@ static void of_add_metadata(AVFormatContext *oc, const OptionsContext *o) for (int j = 0; j < oc->nb_streams; j++) { OutputStream *ost = output_streams[nb_output_streams - oc->nb_streams + j]; if ((ret = check_stream_specifier(oc, oc->streams[j], stream_spec)) > 0) { +#if FFMPEG_ROTATION_METADATA if (!strcmp(o->metadata[i].u.str, "rotate")) { char *tail; double theta = av_strtod(val, &tail); if (!*tail) { ost->rotate_overridden = 1; ost->rotate_override_value = theta; + + av_log(NULL, AV_LOG_WARNING, + "Conversion of a 'rotate' metadata key to a " + "proper display matrix rotation is deprecated. " + "See -display_matrix for setting rotation " + "instead."); } } else { +#endif av_dict_set(&oc->streams[j]->metadata, o->metadata[i].u.str, *val ? val : NULL, 0); +#if FFMPEG_ROTATION_METADATA } +#endif } else if (ret < 0) exit_program(1); }