From patchwork Mon Aug 15 20:02:14 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thilo Borgmann X-Patchwork-Id: 37297 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3d0d:b0:8d:a68e:8a0e with SMTP id y13csp1468098pzi; Mon, 15 Aug 2022 13:02:30 -0700 (PDT) X-Google-Smtp-Source: AA6agR69hmSV1ij8/sgpgFwP87/L1DKPIuxdyHqsqGTcdzPuCccApXOmmkuQiDxeL5grCS0OJfB8 X-Received: by 2002:a05:6402:3506:b0:43e:954b:bc8a with SMTP id b6-20020a056402350600b0043e954bbc8amr16194362edd.266.1660593750296; Mon, 15 Aug 2022 13:02:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1660593750; cv=none; d=google.com; s=arc-20160816; b=lAMIOUYexN3qfeW/vehsqqnUuqHysTqIrUsTjx/8/g7gWmXwoEdom+iHKPx0AVH+lB PglCVY4fZ3kRvvUxwfdqGSOZYs67OnzFt7bEWsP2f0S24vDiqZXAYQIYVUUcC6gYelLe 6+ojf6VmiTLG0TWtg1E/hrb1dN1STuLmIFb94T7MXvCEomuNHHdYUbBo3YfRdILEj/6z uzWQWvXGKxuwnkAFlvz4WqkO1Zk+Miix1Bz0YQrm6M8dMyOBDvQOVXm3htF3G7FI/xXd TIs0eP+u4Z3O+97epLGjfjPFdQBPvFLXougAkcFa+8ToRtsWXH48SU6vuGKUkgp2sqDb lsRg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject :in-reply-to:from:references:to:content-language:mime-version:date :message-id:dkim-signature:delivered-to; bh=InctAgg5ZFkejmzIEMNTOj90hHNo/jv18kI5MxZtEqs=; b=x3+iESgf0CIk0+gUnWnnWSyt5snqZ5toy+V5xa0FCv1/WlEmffofMVE2JJZcvRo7qq gU2KqZI4Hh1C5doZItN3mmQv0abeZDPCdc0hbPmWJ1lVXmqBU5m/lW6HjkmV3bLEBr0Z 1bnNQ9dj58n01h3LoJ+j86w86UTyFcqf3j+N8Lryljl1SOoOV33ATW1GhHnXsKbw3M4p MVmaBEM8e+GYmRGgifGYLVHx/4VSUsxqGqL6T5gYP68/UfoL/q4FY/TJvoeqxJ6AT5WV y9PF9rYLvsmiPBmHtOXi6KwsLUAvMgz+BV6IDQWte1q9/FWVYKkDQL1G0El7C9Hxkp5g k+tg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@mail.de header.s=mailde202009 header.b=B2Uk2tlM; 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 z3-20020a170906668300b00733187684e7si7643304ejo.409.2022.08.15.13.02.28; Mon, 15 Aug 2022 13:02:30 -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=B2Uk2tlM; 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 2613768B976; Mon, 15 Aug 2022 23:02:22 +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 2314A68B96D for ; Mon, 15 Aug 2022 23:02:16 +0300 (EEST) Received: from postfix03.mail.de (postfix03.bt.mail.de [10.0.121.127]) by shout01.mail.de (Postfix) with ESMTP id C21E9A0911 for ; Mon, 15 Aug 2022 22:02:15 +0200 (CEST) Received: from smtp02.mail.de (smtp02.bt.mail.de [10.0.121.212]) by postfix03.mail.de (Postfix) with ESMTP id A726B80297 for ; Mon, 15 Aug 2022 22:02:15 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=mail.de; s=mailde202009; t=1660593735; bh=vkXmEPXNvhHweG++mg/7VwSTEc/2c4rUU7oTMCLWarI=; h=Message-ID:Date:Subject:To:From:From:To:CC:Subject:Reply-To; b=B2Uk2tlMkTMO7HUzmtEmWYWK0mTy95g5+XsdzicSbnUboZkZHNOREIuFF25NlIpKm 7AEI8WVOrHtvEPV0uLVnT4CUYEpskGQ4fxI4SUFakWCowmupXcUqHYduUlobBT2o3L dn/+lfybc/ksqxRXqKd1H0NPiuoN6VAKY9yihVRMOeCSOzzaE5PbulxRNehYZeVwbn PSHkQR9jmTAdUAdli5L/cd73QUmYGElBNudwN8sLrfok4NDf0RonkdZpEOB2zddF1s UHmRQQ0DDg660OkHNdB1Rw3beCEcFmcZ1rTsVqEShy/+6egbPBnnzYe6Yd/JvH3zqN 4w2NTCnCMRL/A== Received: from [127.0.0.1] (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by smtp02.mail.de (Postfix) with ESMTPSA id 75C92A04B6 for ; Mon, 15 Aug 2022 22:02:15 +0200 (CEST) Message-ID: <16f3b7f9-2296-d459-9135-8e6e86e8e3de@mail.de> Date: Mon, 15 Aug 2022 22:02:14 +0200 MIME-Version: 1.0 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: From: Thilo Borgmann In-Reply-To: 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: 5353 X-purgate-ID: 154282::1660593735-0000737C-24970BA7/0/0 Subject: [FFmpeg-devel] [PATCH v2 3/4] 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: aCwkfnpUA5OY $subject -Thilo From 2c556c126b77b7bc90749096f858daa6124cf097 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Ekstr=C3=B6m?= Date: Mon, 15 Aug 2022 20:58:05 +0200 Subject: [PATCH v2 3/4] ffmpeg: Deprecate display rotation override with a metadata key 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); }