From patchwork Mon Jan 31 22:24:25 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bryce Newman X-Patchwork-Id: 33959 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2c4e:0:0:0:0 with SMTP id x14csp99264iov; Mon, 31 Jan 2022 14:24:46 -0800 (PST) X-Google-Smtp-Source: ABdhPJwXRCc/i8PGpqQP+0irCEQuFk9j73VKm193H7tOJDnC3818FZIUZNLNL289UbNXeCiyvVHA X-Received: by 2002:a17:906:1d14:: with SMTP id n20mr18671080ejh.714.1643667885975; Mon, 31 Jan 2022 14:24:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643667885; cv=none; d=google.com; s=arc-20160816; b=o7MM9GljNYm/BSY4MaQZzhJ/LaqnTfzLA4KYPWZvPJH6pxXoSYnJSMSwszfX0Nkf2N VPp9u/udn0SRfCe47VwZmOOaDhYrbgm6l//NUcCLgvXga9Uw7qXaS0R/KScrgKiS0NXh tsUvbCxTPD6v53Mjhv7gYi9zljW5JsPNd7S5VWC4Yt1lwIE9wyBgyfb+GlY6tKpU95oK chLLh6aCNFXiMxKHoyv1/iHa0VfZwr8sDhxpYn8BG/CN39JAF8klFru3EHL5oCuj+z2B i09ER+LlDKi2yKh/Ib8NnDnJdkLsaGvnYbGg/b6PyB9+gZEiS4GKN+xhqgeH48uRI+sG O7Ww== 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=ZAARWYqZqdozNtWx5e9lgrB8qnz5WhBqkmPN1KyoJpg=; b=b9yoK1TxDmnVzMY4lWzTjiIGOoM3a1DH2Qs8y1NlKfntuxorkSnz+lYRwFkcrYAzFA k2ppYTFuVs6XcpY4Mw/kFkQ0CmmWnUFa5PC9rkw2sEUWQUaajhdT4hBbE8jq0iXrCyec eKe+fYmwJ3ZFT3TRxEYfUVnrELBwskukZVaLCqVMOB7PVdFGdFTHA8CR8YoNgXdoRaSU O+4i4Y1xhQguj2izfML42FB76lHZd3n/akrqvB8fHc6zHemWnGzuVubBmN8bZgQEaa6U 3/AZT9E6DwkPTdu5YdMWvxb5mR4y6p4YgoWuWyY0BDtGg2QM9UqP6tgiZsTzJFI2xsov gDEA== 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 f18si8246398ejl.181.2022.01.31.14.24.45; Mon, 31 Jan 2022 14:24:45 -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 2A34868B143; Tue, 1 Feb 2022 00:24:41 +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 3045E68AC9C for ; Tue, 1 Feb 2022 00:24:34 +0200 (EET) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2171.outbound.protection.outlook.com [104.47.59.171]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-490-k-0WjY9sOVuFrXaGCT8bNg-1; Mon, 31 Jan 2022 17:24:29 -0500 X-MC-Unique: k-0WjY9sOVuFrXaGCT8bNg-1 Received: from SN6PR08MB6079.namprd08.prod.outlook.com (2603:10b6:805:fc::10) by BN7PR08MB4275.namprd08.prod.outlook.com (2603:10b6:406:f4::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.15; Mon, 31 Jan 2022 22:24:26 +0000 Received: from SN6PR08MB6079.namprd08.prod.outlook.com ([fe80::896e:3bcf:8367:3e14]) by SN6PR08MB6079.namprd08.prod.outlook.com ([fe80::896e:3bcf:8367:3e14%6]) with mapi id 15.20.4930.022; Mon, 31 Jan 2022 22:24:26 +0000 From: Bryce Newman To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [PATCH] libavformat/mov: Expose Quicktime poster_time value as metadata TAG. Thread-Index: AQHYFvEtzBP6JDZPiUS0CRwxIl8MOQ== Date: Mon, 31 Jan 2022 22:24:25 +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: 84fa2615-2387-48e6-2184-08d9e508708b x-ms-traffictypediagnostic: BN7PR08MB4275: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: tLosS7vfJeq5hfvNR+TvZXmm1/VWfl7vyd1JDkWZbrQPmOerGw3QUEMaNQP5lPAYPtGkN23OP6r/MpqIy71f6fYljJ6pyVWmY38AgZJc4/IL7LeLUBi6RY1347kujrav8EpwH4VT/fEYFw+Dz9wkwzJ5RSRV6mvnFa+n9uNPW4S36lLMXtoHI+dcn4nSe5+NL8KGcZs3PWU5lm1fXHQgYYZfly3KSL4XCfYIYRTgZaq9Aae9X+drJiTxmLmkat2yQWRZ6AE22Xb3A+CuhzjxKfjMQwb+J7s3lYoUuPq9B0oG31hT22U965/SkT+bLpn9hrpp0wGKwjlkewNPlP/WaxTLWofOOdNg/cpT88Nd7GAg+myFWTx6QKN82TfJFWzskV1wIHkH5LdJj61HUs9i3oCB9HUWXhGXErOuuzjnoJ5TWqq5oHaF42UqGvLW3mIqKaS1p5ilGWLGC3orWZig9C/Pp/dCq/w3cwNzgwVSueCF+aS8qCP/DgV8uX2IZ9f0WvUN1JeKvOvwX2iN/XSMnkJEenZDNzem/Sdu93zYpaywOTqQN/v/pMtV0aMLLaLhhDm50AMxiE5KVVMeb+N9fj5lqZnYxqsc44ZJ5oOUfppHPLPKJLVjWv6DF3wAQc2JRhLXO1lJIL1E8uHjjKP7FGtBkrQm/w0x+DyEMVf+r7uUaQibItv0Vzr3JJJOrOnRhUHQavBGUNSFy0hFxJJdcgDQiXFoaKM/Cg4ZaHN7BWqRjibtYMCt8lY4XXDnQ4dPHwo9altTI6q5kuWcCT1NIQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN6PR08MB6079.namprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(8676002)(8936002)(66556008)(2906002)(66446008)(86362001)(55016003)(66946007)(38100700002)(83380400001)(66476007)(122000001)(38070700005)(64756008)(6506007)(91956017)(6916009)(76116006)(44832011)(52536014)(7696005)(9686003)(966005)(33656002)(5660300002)(316002)(26005)(508600001)(186003)(71200400001)(20210929001); DIR:OUT; SFP:1102 x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: cKDBRNAPq9UBloTsh3hR3hn6ehlcRdc5sX7OMt539BbdbqRHkNi1paypZRfqg1zPayqDGo5eH9+7KZxUXJFIeZZPulOAZXneic42WvCS5wanWrOkGQMo0QG9+0LykPu1uXJCEfOaOf1WpPteVNmXytFr+2NAk2q/zl6tdtYzDMLdwp7tC7i5S6sl5bKzQeB1p8Ax921OpYdvr9exn/e2VbBp5u6RoQ8V545PXP1dj9hQUXm07AjmxUPeYwtlqKPiInsgQBNSeNNdMjND3o/juaik11iWw8WfzJUxberP007FTXncMjzNAZiD8SJ9VS7vOeEUaVN3DU2CYXJDok5Koxj6RipY19mc7vlJTA4gjDpvTj5p4MMrvdLJtm2ME0Er9TRu9Id1TtSNp1ME3KCqB2V++0ToHq/HLrOQBe+/VYO2vnCl3sikwcdAVCs/bJNCx3iPO4FQiKaIviJmGT5CDbz5tOdl4M1nxBj1AHAD7QovX83FnY9UQcU2TWsvmkmj8hOMonxxlqT9WctvElERD48T52uWZ+vNK6HthXgv5lyCDXysQ2NSugNvnycZaE0zae0W4Kh5ddLfbfF/qFlPor2o4IHjXEOauJ1iat+hmZrZicNmYfu1Eqt/y1wmNEzUmDRxI3p3JIERf0zIDNZVWQOzVtcwbbYFFVHueWu1jAGPTIxjUPslS3xVemb4CTV/K20Y0Xaxqv7Nr/ZApRvKoz1hJekHTDMWbDcOewh3A/Y61jEOdq/Gp1XKlss01zr9+PvboKdHQl+4lLETF+r1xIrbTgxYRzCpFbmdU02IAxXro7ePvmQ+R61CSwXLkLW+zLy5TLWcRKq5PzIUtGpEDoU/Xi5k6GinCYqjwBUZMUNtDKlAsSGUpjhGpOdWVdzd0Q9YHeCYMSy7kvPzo8ejz+7/nuPlyB6u6wTd2+4XZp6rbfwQwfR4LuRxthlwpjSfbFd1nk+g8idYtyvycej2W42AQ2/8ulwMk5Z4w3wkqSMoi2aTpBonrcdernYuZIWK903oJX+pCUG+ADXhW/pAAxztaTnkJ1R+bKwwd2yoh5P42Qbr4GC7oM+g8/W4SW+tBOVyi7GbKdm1qLk6/0T71dwOwYFsxPSh3Mt34sn65AXxdo1MwZteCHZp5W53IZCXvA+f9P4WEr8iSnBwQZUp3DodH7PA7X3TpDTtqAFj00+woQ6HqiNKZ3Ta6Z5QpxUqP7gv7bD1R22O4pEOzmE9cOkFcyz44GV+dv9MYUy6b7QqZyTg7OD86B40kXQEDFg1V5fBtks4PPxu/1GF4UKIOiQ4dYnnn/HAxL2kWH+1fBJ0bA7iDsfTre2t9qk1Ex9cCrJocevziA7MskdnUxBjEUOB0gwN7g1ER6xmEAh5lw7mTXTXEkzyZhCBKuZcsfm2EqOrocAJ1BO7abrDjilNpelwi4UfMqcgQDRdE9Io8Mts4OARDTTqzuw9TdzCT9vtVhPNBHUe4RPnTTHSxyFcn5ichdWjFBrlXgFF7NyANpNb8OsbmiBfNzQSX/4C/MkjGjLqR4fZk0mlqdOfdoL/+3dQUQxqbPAQY+kTYevKO0RI+rNaatbqSNrcsYoaueFZmFv0JJuGJdarsUdU37D7uQYMMEGu9njIOiHILC52yF00kWmQUILJ6m/LS5AvzKDxBC2EuQ2V17GsNh4MYDc0KPHKt+K7fZiZFNig5tJCdCA= MIME-Version: 1.0 X-OriginatorOrg: gettyimages.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN6PR08MB6079.namprd08.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 84fa2615-2387-48e6-2184-08d9e508708b X-MS-Exchange-CrossTenant-originalarrivaltime: 31 Jan 2022 22:24:25.9519 (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: xpQZDYE7SWwrs56mfYN1ivIGaY2JYy41DwuSovOnDYmk62axCF8sbcH4FwP6yMPD4l5hfmVhUYUN/PTze8Jcp65Gt99GY1RESk9AdCv1DZk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN7PR08MB4275 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] libavformat/mov: 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: 1cdw/3Rra6P6 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 1437d160f8..c4fe8ad996 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -1487,6 +1487,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 */ @@ -1525,12 +1526,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; }