From patchwork Mon Dec 13 23:24:16 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bryce Newman X-Patchwork-Id: 32450 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:cd86:0:0:0:0:0 with SMTP id d128csp6122654iog; Mon, 13 Dec 2021 15:24:34 -0800 (PST) X-Google-Smtp-Source: ABdhPJzPFaE5dzyCnVSqUvHuGqDmX9tWQg69nti3Ry5gT124ZZ9W+28tWMGG0Rlggy4nHvT4+VZI X-Received: by 2002:a17:906:bc46:: with SMTP id s6mr1543080ejv.467.1639437874012; Mon, 13 Dec 2021 15:24:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1639437874; cv=none; d=google.com; s=arc-20160816; b=J+heDH+rB+K4cEMVFdaHtL7rrK7w8F0yz+1IbtjK8kSi/SjCl24tPE5A0KwuyfHD2e jB0eioDm2m8jgoi0YoDfpJ0nAG3BgXIpjds+527SShBiil+bP7lwuO6ufzzfZMkdmX/T CH1RxMQQcWV5FtohtrY3T65KSqMJE4Mr5m0S1onfjPlyxAddjtSrmOVQnOMf8t8jq08d kjLgDJNxQpugzmRPqwp/QOnMXXpCikYgylp1B5tnN7k1IZhAOdfYdnJOSZtFFhHjYO5c ir3MOy0Malc9juA2oDS3z1Uifss34Ax2IskZtAdJ77HPgl96Lr8IWr6+3owPwAIH1Z0t 2eNQ== 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 :mime-version:accept-language:message-id:date:thread-index :thread-topic:to:from:delivered-to; bh=HPuCBoua9wR3T+wEPDE2kCT2glGkB8W7PulTqLPun3A=; b=IqJF+9Z+uERAlplN+DI8X+A1GNJOfqgYTHn+qLhO9g5WNM2HVBihQ95A3IBVb9vdiG zK7yL3SemG295mlMr4eINYINbbDLjNyaljpgycjB7324lva3LRM4Ddvm59YeVTMLi1tO lrsHenkl0RaufrldfDUOxUVMYEV+J+EwiwxFCaIs9HgMa6mnWiofsLaeixUsbQ7x80vq e9r1jtEefCLv60jOPKVAtZ6dk70osVehgLjfu1ZCDvmtQHdpGZQtrTvf2ZsjZdcDUg+0 fJCItKf1Ihvw6/jyjtlKqtgJ+fcjtfP7QX0Qd4uucjUhFtxI34m0RSouUn3EkojaMwng J0OA== ARC-Authentication-Results: i=1; mx.google.com; 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=gettyimages.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id g13si22730750ejt.663.2021.12.13.15.24.32; Mon, 13 Dec 2021 15:24:33 -0800 (PST) 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; 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=gettyimages.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D996068AEA6; Tue, 14 Dec 2021 01:24:28 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from us-smtp-delivery-165.mimecast.com (us-smtp-delivery-165.mimecast.com [170.10.133.165]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A6EC668A973 for ; Tue, 14 Dec 2021 01:24:21 +0200 (EET) Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam08lp2046.outbound.protection.outlook.com [104.47.73.46]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-482-2AxnZ320Mu6taPjol3A5tg-1; Mon, 13 Dec 2021 18:24:18 -0500 X-MC-Unique: 2AxnZ320Mu6taPjol3A5tg-1 Received: from DM6PR08MB6073.namprd08.prod.outlook.com (2603:10b6:5:111::23) by DM6PR08MB3899.namprd08.prod.outlook.com (2603:10b6:5:88::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4755.22; Mon, 13 Dec 2021 23:24:16 +0000 Received: from DM6PR08MB6073.namprd08.prod.outlook.com ([fe80::581f:7b36:f8fd:c471]) by DM6PR08MB6073.namprd08.prod.outlook.com ([fe80::581f:7b36:f8fd:c471%3]) with mapi id 15.20.4778.017; Mon, 13 Dec 2021 23:24:16 +0000 From: Bryce Newman To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [PATCH] mov_read_mvhd: Expose Quicktime poster_time value as metadata TAG. Thread-Index: AQHX8HhfQjkkNKzOWEW25Rq4rfeN5g== Date: Mon, 13 Dec 2021 23:24:16 +0000 Message-ID: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 2b0115f3-f333-49c4-4a7a-08d9be8fae48 x-ms-traffictypediagnostic: DM6PR08MB3899:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7219 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0 x-microsoft-antispam-message-info: kvoDLDgfHzddLmpRkIQCN/RBfuRSbQbv8VDYmIk/uHViTCcA4oj861HUcjZpXq5JhcY1ZcaAKuGMpyK4xUKaXTW30Hd2+jECODvPuEyM9mHIES4y0gdcCbUPjAM1vfzfMrblngqAZN6py5VTA7OXeC39ausYhmeNkCQ6Uyp6Cr1Qc+bftuIIgBmcIGz8r/oOJiThRK2R+hb84ZHlEm4ru3HMpiMkoC5ZlSufMJ/iXXxxRuf7IZsfBJ4imRPkCQ95YqyT1NW5fR2CE3zibNV+jCN0wX6sV41rQmPkndA4EyyQcNqBRDy6JeHcgECJqI5SkSxwGrazl/9VLImaH70NFWqIvoreICpPq7a1fvJMiO3bRi1uKnZCxEmkK+tdmsU47r/gRDsDhJHD85fXgMVG7tKUmVbU5QXDId/J2kKQ/Kt7a/VvivJdCiJ0eF5KLxen0nWNQjQUlpWr3NdZL5GCHOkrvgGPSZv/ULKQqWTpIeWwdRK7ti+RxUZTjYGG7cvoJRJIhjoq9Hpi5s0oBN02+R7ePiDf2ms++z3pbmoLRx4G25APJaI/HPUCtKA31B1OIQRNKxTHu+OnzEyQHmRwgkr3PBYtAG8f1kYdneeNdKLXWCszaGFO4mtkWFTrmlIi/mnl93tqIfTd2/lCdoXwpgE/hhe6w0vRamiw1HO37+vpCjdKCJfK7sBPdqvduEYwcyCr1hMd6WRwul97TR0+EB3yGtcZygemskj3RQLQWmj0fNMeKxm7W0uTGbTPa/JwXCdf6FplqnsL1Y9cKJfPRri0sihflTiLW9vkP1bmYHI= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR08MB6073.namprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(2906002)(966005)(508600001)(8676002)(83380400001)(166002)(9686003)(38070700005)(122000001)(66476007)(52536014)(21615005)(64756008)(71200400001)(33656002)(316002)(44832011)(6506007)(66446008)(26005)(186003)(91956017)(66946007)(5660300002)(38100700002)(8936002)(6916009)(66556008)(7696005)(55016003)(76116006)(86362001); DIR:OUT; SFP:1102 x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: KK39QM3K/Du0N+lXXG01vNNk+C0ZoIlwRwEOihNSToAUPVVT/vHWR55gXjoqY8LSM/dhL4aYLWOUyrY5zptAQOdguQVc8urMaUjbLluhgK7eKOYwG2SKC55PQSzpQa/987hv2W63+iJ/8j2XZJHaO30R9LYxAGxr00GhkCaqJKszg4j8Ql9Vyb8NzEjOXPjXVVKpRMm2UaBq9C4dTOPO5whCRYoYIpwsBBXhdMJn7QTHCRShFTRZpqKE/0uQjGgD4cZlhiXOw8htXoj4ONEqru3fxWHvOXx2YIyqDvU7gOcjeIV0IDN+ioOPNpcO0408DVcOchgO8p9fzxvvn80gyTG8gBnmcx6q5TykyQ6hqgie1yZizAz/a5pvSuKMrkzmy0pGmhuaART5trTGrNeWPLr8UHBmMVUF4qvjfyHK8WlW90ysUKckj9Ur20LU8GQiaQTaLemJ71wulz6mPFvURjQhgUCiyi9IKOXGgDShAOzMp7WLspYvDsscYyzq4udu+/DDX1X3Q47e0iUlMqaldOQy2rhRS9vpnRw2WJvB+rw5oc0s26HcGIHP1LPDgpE89PtMfg9o3DYq2N/zfwz3SNxu9OGFLufR8M9peQhlTKewEHuJtslcWKNfB74ZT+LNp1a1ZwTowBGodCJHRV+ssQ5sxwXAlDSnKkw9yAiVxZUra2LMB4Z+y+/eyhCoGtVSvux8IWyqicj6iM7jx6A42WcheJgPATU3NTNBtp/kpr93nZ3ubK5Pn0qm09XAi4puPeHHEwQycIDCsIsrWYv2A/YEyB3M3JFSlpLZy0b9vqdzkWlNoyzLtdgRMk0GOqQ/Zgr9BzAzTpXKsZSSvigyGy6koFlK8acv6AHcT5IVJsutyj0TAf+2kdGqgk3ps4Fy+Jxn3tlpoeDd0GpQojMqP3hkky5lco9UcwXr5k5RcCGRZC23BdpYk0LqgaE9jp8HWRETJU7tjkg00cGo0wyY2rKiCPE4+iExzPWyTGbbjSyWiTFjgvkqK4ztZIBUYIlv7iN/zrcD7s0/y1PrmyfGL4GAahJ981mct9Ic30LGA9O3ZK/9qUDzKQHRmEQwyMntPIz5ebu8kYtWZEZPwWOAxVJTsuYAldtl6u+GvmYiCzcYKRSYaOtzUOb/8KxHPg4md5Si+FWgXHT9EA1GzeLtFH+TqvAoY50qD99aLtJ5IP8Ht5wuVtos+g7bexriGxpDXXD2WVUwPLjHuwhnCnS8hlinlfx0qZGgIUCBq3yuoVPMbxN7viEzJiqpFiwjdbKRc9b9UAEYrgGmtnGl9/THf6acFhIEj3M8NUJkKcWACGIpHqtFstxNojFsIUTlunbSJuwuo2+NOxOVp911x3y9IikdKcfH5IlUqWXXjMwh0/pCeyAP7TBXvX/YgL1mTV5FhblmseqDoso5O8R9q2vBMPQqC/BB2Kqn6UPf4lq0OT/Ukri8GRofo/kTEYpRVJS/LUFysN6c12M1hl9k6MaJg4yvO9AZVxy3IR23CmQzbpTwiupytBYHt3a0du6lzi4rIJElFSXdENildpa4869RM1eVnO2Ynf00wIC+euotjY/P3jk+L01HQNhjXWTIYMyIwe4JolSDbof+67LgkRXyD+PlnwAZnHAwMv58LZwgdWNDEN8XuI88foWkVAnddPuHcb43IuZao4+zvTz12eYwjtmCJV1YzmyBjTP07YcqmsM= MIME-Version: 1.0 X-OriginatorOrg: gettyimages.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR08MB6073.namprd08.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2b0115f3-f333-49c4-4a7a-08d9be8fae48 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Dec 2021 23:24:16.2428 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 789f3470-2a5c-436f-ac2d-dde981d2f3dc X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Yo+c92NUZqt/igUVZTpowILwAZsy1ORcdSkwnaWXyVAxsjXqbqKrbmG6/BElBv1kfM5MBOohcV/GJvqv3ZmHEAxvZ3yd6S9/hiAi36Zh00A= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR08MB3899 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA65A383 smtp.mailfrom=bryce.newman@gettyimages.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: gettyimages.com X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] [PATCH] mov_read_mvhd: Expose Quicktime poster_time value as metadata TAG. 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: ATWScvuVrVTH I need the ability to derive the poster time found in the mvhd, so I can use that value to create a thumbnail from ffmpeg. More details can be found here https://www.mail-archive.com/ffmpeg-user@ffmpeg.org/msg30003.html. Signed-off-by: Bryce Chester Newman > --- libavformat/mov.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) -- 2.34.1 Bryce Chester Newman | Principal Developer p: +12069255045 | diff --git a/libavformat/mov.c b/libavformat/mov.c index 9ebfa0bcc7..67aaeba72a 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -1484,6 +1484,7 @@ static int mov_read_mvhd(MOVContext *c, AVIOContext *pb, MOVAtom atom) { int i; int64_t creation_time; + int32_t poster_time; int version = avio_r8(pb); /* version */ avio_rb24(pb); /* flags */ @@ -1522,12 +1523,21 @@ static int mov_read_mvhd(MOVContext *c, AVIOContext *pb, MOVAtom atom) avio_rb32(pb); /* preview time */ avio_rb32(pb); /* preview duration */ - avio_rb32(pb); /* poster time */ + poster_time = avio_rb32(pb); /* poster time */ avio_rb32(pb); /* selection time */ avio_rb32(pb); /* selection duration */ avio_rb32(pb); /* current time */ avio_rb32(pb); /* next track ID */ + av_log(c->fc, AV_LOG_TRACE, "poster_time = %i, time_scale = %i\n", poster_time, c->time_scale); + if(poster_time && c->time_scale && c->time_scale > 0) { + char buffer[32]; + float poster_time_location = (float)poster_time / c->time_scale; + snprintf(buffer, sizeof(buffer), "%.2f", poster_time_location); + /* This will appear as a TAG in the format section of FFProbe output using -show_format */ + av_dict_set(&c->fc->metadata, "poster_time", buffer, 0); + } + return 0; }