From patchwork Mon Apr 19 14:09:40 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 27044 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:5014:0:0:0:0:0 with SMTP id e20csp560036iob; Mon, 19 Apr 2021 07:16:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy64hj4rgN7n9LCCfj68y6OOjRRLnBs9gHM/V8SL5pRAOsEjnHhrBNHlO1kLc/8M8E0bhxF X-Received: by 2002:a17:906:7d82:: with SMTP id v2mr22684483ejo.524.1618841803142; Mon, 19 Apr 2021 07:16:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1618841803; cv=none; d=google.com; s=arc-20160816; b=sJI+u/LuY6Z9CtY/uajPJ0FlHFj+lljCPZOuFdtSCQhgzUvAbmBeCYKm7F78y0fPI6 g2iRFS+nA3U6SJhb4DUWIxDa0oFAIyhiMijBPYoFtoOd3abjYdzPanxYM0Wuwko1hnkV Lrw1FU8pdv63Knpaj3W9TYeoGgvR4UV+N78BdAGK8T8ifb26k7oEirBd4RpqqaNgEcah 7hTz775+2TSOELl5uRK0YJ2/v20FdPOzxjzkaQwhR/JqzwfE6yAvP1Juk9BaUO5NIO8B d8EK7VQXeGljk7NtXMAV6ROWv5eopnVXpwZ9O95emlbLUQJqEH9ft5pjL0yvmhHb/Rgi jaIQ== 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=USMix0pAUuyxoAxG5ZlauzivE4xcjuVHGdYP7CcYIpY=; b=ZtMofmpfcNQReZ6n/DGxKf3Z5mtLCuO0i5n3LA3hrvQ8NhRSedMG5RnGu62XG5zu6e AUKVIcJztoy5qZjJr+IN874vldTS7+we4ZjVbBSjf/W0Xzo9GSZ7Z0quaT0vg8BmWllW USQVI7ttxF6omW+wncKLW32zdfPC8nCv+XMSV9Vi/j7ZjlUqSs5dg2g55yEWcDwKSX5c qbzyk8vv/PNnADlbikgEHhuyRcyUtsk3rdwebyXfjhcZzkgGXS3xU3A+mZhmy68v3Scg QO+2cUwLaadJigfmlW60Yra/Xu2wp6/68Jn7w03NqRRwDnyy0g/fVZyubkRdk61sVjlG MSmQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=qJiC3+XB; 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 zm17si13284426ejb.350.2021.04.19.07.16.42; Mon, 19 Apr 2021 07:16:43 -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=20161025 header.b=qJiC3+XB; 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 6C9F0689829; Mon, 19 Apr 2021 17:12:00 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f177.google.com (mail-qk1-f177.google.com [209.85.222.177]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 366C26882E9 for ; Mon, 19 Apr 2021 17:11:55 +0300 (EEST) Received: by mail-qk1-f177.google.com with SMTP id t17so7380961qkg.4 for ; Mon, 19 Apr 2021 07:11:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=US8Ib/j20S5jUy/2CnFqlFI3X6lB8HOM2GfiQD77LYk=; b=qJiC3+XB7wGhc/f00KnRMA33F5p+o562PkL1EQGRS/Uup4jT/r3UgTgrNTSQCIuGlj 2lSK5ZN77X1HBPOm3SkVhmNwUjYKVLMncsDRCcPrfOuHwhn77u3/g8gtYv/qR8JIoNcE 8Uw5uR0WTcCLH+DFVj2veBgDgSBHHognNHI7PGeYo2F/TKuNIdQJCCKuD5VOBuR33eu1 3BRqfKqPyqkMe2aOjmEXVHWAB/ZnbOEiZhh2flJsQUMY+yMnn2xzsHq+qC/MmbZfOVOz Z494BqYboNXcj9818fl7GuncoqB4YE7cpg6VI9FD9CN6+mnsL6J0IGwx9ZlA7AspsZzd ugag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=US8Ib/j20S5jUy/2CnFqlFI3X6lB8HOM2GfiQD77LYk=; b=N77F55i+M3yeh8PTMhaL6y74yP47xTat9/I8KZdYdHGay50o4MiLVWArkB3KGVpXIJ JTK88qsWgIXtWn3BhDuYgqQWW+sqxLRIMWo6qG/cQq49MjTb16KD/8d8+JD2NFQkW286 Eb2yoodibilIl9rE2dN1/dghCeZBb0A6FZq1VbaYdppvvcutR8KZIrL9QvtHls1M3cpQ /vD5I8+dg2yggoC6UUW9GGZjXd7wyYWBGJa5xtwng98ShvziVdm2uCzXJyx0DOYZzl1h R7sHitch8kQUNxCJJ8MzC3HTeEp01pT0M+UwXjN18s0TeZQmyC2p3jSVjKOCpMzzV17d sYYQ== X-Gm-Message-State: AOAM5305bW+1REh6VMVfIoXtL6p2AsXa6MCHiz214d0LKfmBGLIVdslt vgRUO0wNVLCdkink7Hikr8nyBpgkiko= X-Received: by 2002:a37:2ec4:: with SMTP id u187mr12418639qkh.472.1618841513665; Mon, 19 Apr 2021 07:11:53 -0700 (PDT) Received: from localhost.localdomain ([191.83.209.133]) by smtp.gmail.com with ESMTPSA id f7sm2049494qtv.53.2021.04.19.07.11.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Apr 2021 07:11:53 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Mon, 19 Apr 2021 11:09:40 -0300 Message-Id: <20210419141024.8174-44-jamrial@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210419141024.8174-1-jamrial@gmail.com> References: <20210419141024.8174-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 43/87] avformat/mov, movenc: Enc exporting rotation via metadata 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: DkDvhZQwuSmR From: Andreas Rheinhardt Deprecated in ddef3d902f0e4cbd6be6b3e5df7ec158ce51488b. (The reference file of the mov-zombie test needed to be updated, because a rotate metadata tag is no longer exported; the side-data is of course still present.) Signed-off-by: Andreas Rheinhardt Signed-off-by: Andreas Rheinhardt --- libavformat/mov.c | 14 -------------- libavformat/movenc.c | 15 --------------- libavformat/version.h | 3 --- tests/ref/fate/mov-zombie | 2 +- 4 files changed, 1 insertion(+), 33 deletions(-) ons=0|disposition:descriptions=0|disposition:metadata=0|disposition:dependent=0|disposition:still_image=0|tag:creation_time=2008-05-12T20:59:27.000000Z|tag:language=eng|tag:handler_name=Apple Video Media Handler|tag:vendor_id=appl|tag:encoder=H.264 side_data|side_data_type=Display Matrix|displaymatrix=\n00000000: 131072 0 0\n00000001: 0 65536 0\n00000002: 0 0 1073741824\n|rotation=0 diff --git a/libavformat/mov.c b/libavformat/mov.c index 9ca1ac89a8..8b3371abe6 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -4582,8 +4582,6 @@ static int mov_read_tkhd(MOVContext *c, AVIOContext *pb, MOVAtom atom) // save the matrix when it is not the default identity if (!IS_MATRIX_IDENT(res_display_matrix)) { - double rotate; - av_freep(&sc->display_matrix); sc->display_matrix = av_malloc(sizeof(int32_t) * 9); if (!sc->display_matrix) @@ -4592,18 +4590,6 @@ static int mov_read_tkhd(MOVContext *c, AVIOContext *pb, MOVAtom atom) for (i = 0; i < 3; i++) for (j = 0; j < 3; j++) sc->display_matrix[i * 3 + j] = res_display_matrix[i][j]; - -#if FF_API_OLD_ROTATE_API - rotate = av_display_rotation_get(sc->display_matrix); - if (!isnan(rotate)) { - char rotate_buf[64]; - rotate = -rotate; - if (rotate < 0) // for backward compatibility - rotate += 360; - snprintf(rotate_buf, sizeof(rotate_buf), "%g", rotate); - av_dict_set(&st->metadata, "rotate", rotate_buf, 0); - } -#endif } // transform the display width/height according to the matrix diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 8e6ed817d8..b15ecbe713 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -3043,7 +3043,6 @@ static int mov_write_tkhd_tag(AVIOContext *pb, MOVMuxContext *mov, AV_ROUND_UP); int version = duration < INT32_MAX ? 0 : 1; int flags = MOV_TKHD_FLAG_IN_MOVIE; - int rotation = 0; int group = 0; uint32_t *display_matrix = NULL; @@ -3100,23 +3099,9 @@ static int mov_write_tkhd_tag(AVIOContext *pb, MOVMuxContext *mov, avio_wb16(pb, 0); /* reserved */ /* Matrix structure */ -#if FF_API_OLD_ROTATE_API - if (st && st->metadata) { - AVDictionaryEntry *rot = av_dict_get(st->metadata, "rotate", NULL, 0); - rotation = (rot && rot->value) ? atoi(rot->value) : 0; - } -#endif if (display_matrix) { for (i = 0; i < 9; i++) avio_wb32(pb, display_matrix[i]); -#if FF_API_OLD_ROTATE_API - } else if (rotation == 90) { - write_matrix(pb, 0, 1, -1, 0, track->par->height, 0); - } else if (rotation == 180) { - write_matrix(pb, -1, 0, 0, -1, track->par->width, track->par->height); - } else if (rotation == 270) { - write_matrix(pb, 0, -1, 1, 0, 0, track->par->width); -#endif } else { write_matrix(pb, 1, 0, 0, 1, 0, 0); } diff --git a/libavformat/version.h b/libavformat/version.h index 7108482624..4c186f2915 100644 --- a/libavformat/version.h +++ b/libavformat/version.h @@ -58,9 +58,6 @@ #ifndef FF_API_LAVF_AVCTX #define FF_API_LAVF_AVCTX (LIBAVFORMAT_VERSION_MAJOR < 59) #endif -#ifndef FF_API_OLD_ROTATE_API -#define FF_API_OLD_ROTATE_API (LIBAVFORMAT_VERSION_MAJOR < 59) -#endif #ifndef FF_API_OLD_AVIO_EOF_0 #define FF_API_OLD_AVIO_EOF_0 (LIBAVFORMAT_VERSION_MAJOR < 59) #endif diff --git a/tests/ref/fate/mov-zombie b/tests/ref/fate/mov-zombie index 7b417e59dd..3001c6daa2 100644 --- a/tests/ref/fate/mov-zombie +++ b/tests/ref/fate/mov-zombie @@ -194,5 +194,5 @@ frame|media_type=video|stream_index=0|key_frame=0|pkt_pts=188623|pkt_pts_time=2. packet|codec_type=video|stream_index=0|pts=197632|pts_time=2.195911|dts=191625|dts_time=2.129167|duration=3003|duration_time=0.033367|size=580|pos=101820|flags=__ frame|media_type=video|stream_index=0|key_frame=0|pkt_pts=191626|pkt_pts_time=2.129178|pkt_dts=N/A|pkt_dts_time=N/A|best_effort_timestamp=191626|best_effort_timestamp_time=2.129178|pkt_duration=3003|pkt_duration_time=0.033367|pkt_pos=99180|pkt_size=1666|width=160|height=240|pix_fmt=yuv420p|sample_aspect_ratio=2:1|pict_type=P|coded_picture_number=63|display_picture_number=0|interlaced_frame=0|top_field_first=0|repeat_pict=0|color_range=tv|color_space=smpte170m|color_primaries=smpte170m|color_transfer=bt709|chroma_location=topleftside_data|side_data_type=H.26[45] User Data Unregistered SEI message -stream|index=0|codec_name=h264|profile=77|codec_type=video|codec_tag_string=avc1|codec_tag=0x31637661|width=160|height=240|coded_width=160|coded_height=240|closed_captions=0|has_b_frames=1|sample_aspect_ratio=2:1|display_aspect_ratio=4:3|pix_fmt=yuv420p|level=12|color_range=tv|color_space=smpte170m|color_transfer=bt709|color_primaries=smpte170m|chroma_location=topleft|field_order=unknown|refs=2|is_avc=true|nal_length_size=4|id=N/A|r_frame_rate=30000/1001|avg_frame_rate=6372000/212521|time_base=1/90000|start_pts=0|start_time=0.000000|duration_ts=2125200|duration=23.613333|bit_rate=333874|max_bit_rate=N/A|bits_per_raw_sample=8|nb_frames=708|nb_read_frames=65|nb_read_packets=66|disposition:default=1|disposition:dub=0|disposition:original=0|disposition:comment=0|disposition:lyrics=0|disposition:karaoke=0|disposition:forced=0|disposition:hearing_impaired=0|disposition:visual_impaired=0|disposition:clean_effects=0|disposition:attached_pic=0|disposition:timed_thumbnails=0|disposition:capti ons=0|disposition:descriptions=0|disposition:metadata=0|disposition:dependent=0|disposition:still_image=0|tag:rotate=0|tag:creation_time=2008-05-12T20:59:27.000000Z|tag:language=eng|tag:handler_name=Apple Video Media Handler|tag:vendor_id=appl|tag:encoder=H.264 +stream|index=0|codec_name=h264|profile=77|codec_type=video|codec_tag_string=avc1|codec_tag=0x31637661|width=160|height=240|coded_width=160|coded_height=240|closed_captions=0|has_b_frames=1|sample_aspect_ratio=2:1|display_aspect_ratio=4:3|pix_fmt=yuv420p|level=12|color_range=tv|color_space=smpte170m|color_transfer=bt709|color_primaries=smpte170m|chroma_location=topleft|field_order=unknown|refs=2|is_avc=true|nal_length_size=4|id=N/A|r_frame_rate=30000/1001|avg_frame_rate=6372000/212521|time_base=1/90000|start_pts=0|start_time=0.000000|duration_ts=2125200|duration=23.613333|bit_rate=333874|max_bit_rate=N/A|bits_per_raw_sample=8|nb_frames=708|nb_read_frames=65|nb_read_packets=66|disposition:default=1|disposition:dub=0|disposition:original=0|disposition:comment=0|disposition:lyrics=0|disposition:karaoke=0|disposition:forced=0|disposition:hearing_impaired=0|disposition:visual_impaired=0|disposition:clean_effects=0|disposition:attached_pic=0|disposition:timed_thumbnails=0|disposition:capti