From patchwork Mon Jan 31 23:17:15 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bryce Newman X-Patchwork-Id: 33963 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2c4e:0:0:0:0 with SMTP id x14csp129066iov; Mon, 31 Jan 2022 15:17:32 -0800 (PST) X-Google-Smtp-Source: ABdhPJw2S7ifTrJxLHcOizdxGUlgXpe1O7YI1RZqkUd77an9b2J5Isgr8NVNq/ciZd5CeVhc8Ed0 X-Received: by 2002:a17:906:7693:: with SMTP id o19mr18524486ejm.742.1643671051990; Mon, 31 Jan 2022 15:17:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643671051; cv=none; d=google.com; s=arc-20160816; b=dFOR79Gh8oBcDY7IU/2sHA9EeiPd3aADT0tN4JxRHe8zNdZM661lH+VeZeY6R0hlar 138i2mCNTuCq8GAJQsil+LadT82PlGMwQpnqPWElIigULvIzPAZ34xtTMaskzQezNgxA rbc9OAn0wQPklgVsLldy+7GXn+AdV+hItbaf01LoOilBTE8rW4REBf0QFP4DJh9E+QAE AtOA43RgJ7snj0mR4k4katnPlWAo3AYHug7x1W2crHubQz+UUSPaUyBtd1qloGJOFNCe 4lKJ6tEsTYYTcDT71FbeJm4EuX2yj2+umq+q2O11o1N/AZG9c/8tHuEq0cor2zRoA9AQ oIKg== 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=3EY4pmRxMN0jmNsRCIp0HcjBSh0tMqHeUIQReOiacAc=; b=ZvnJs3oRuJiSmkU2P2OS5UtzilUUKhY7i1RbnoZlHNM0lfwdB7l511mvXeTsHRncOf yceU720rk01X/WAbpDr9XE2pvNdlLaTasq4N4dvVTrwWw1SZkKq0NI5oEtNJeZyiLCoo EUju/88jFcrdXNUzjMS/k0BmXD2vb8QN8helqtfx47tyD5BaLLuglun+jVa96Wgf9O2z 70RFzT9tCcDh0AMC3Ikkf4vhalLn00B7ZWllO+I72EXzgC33gOekDlXa3ebmIhEpbKo1 5LGTHTnuyLc/I2V8dMiKKhrdyaNwMZd1wmsQnvzJN1Mpa1V/nmOprirruD6LNnm7fH5e BeLQ== 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 h6si584146ejq.407.2022.01.31.15.17.31; Mon, 31 Jan 2022 15:17:31 -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 CE83368B20C; Tue, 1 Feb 2022 01:17: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 CAFB868B14E for ; Tue, 1 Feb 2022 01:17:21 +0200 (EET) Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam07lp2048.outbound.protection.outlook.com [104.47.51.48]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-528-pFXOpy9iNAq9mvqk1uE0tQ-2; Mon, 31 Jan 2022 18:17:18 -0500 X-MC-Unique: pFXOpy9iNAq9mvqk1uE0tQ-2 Received: from SN6PR08MB6079.namprd08.prod.outlook.com (2603:10b6:805:fc::10) by BN8PR08MB6243.namprd08.prod.outlook.com (2603:10b6:408:d6::9) 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 23:17:16 +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 23:17:15 +0000 From: Bryce Newman To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [PATCH] libavformat/mov: Expose Quicktime poster_time value as metadata TAG. Thread-Index: AQHYFvive/2jbTCQH0aQOuJrLaABxw== Date: Mon, 31 Jan 2022 23:17:15 +0000 Message-ID: <33A46F33-EA2A-4490-B065-9DCBB3F1187C@gettyimages.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3608.120.23.2.4) x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 132186aa-52a5-4eb9-991a-08d9e50fd1d0 x-ms-traffictypediagnostic: BN8PR08MB6243: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: k5fmWRZF3p/iRUKxCOlotJ0HbzEWLpOkXsbs2/Yr5Y2a83aGVN3UNcq5jRWN+XFsuyZdGjaRPq5NlxE9+Bso8dDnRj9VFwEY5vQlKcXwgw+i9R65jAKJc3PR4JiAHwf4oKN7LW28cY4vOPflFLL7oJDcnx73USdivQF59Vzy+WBc8pmCXDhIYDc2WqxVWi6WjMManz0Dgg0Ht+V8PLICfD6dbDB2m7soHt/IU6eRelLBpwyJ4gCGEcrXoM84744D255dr3k2xsja0EkLMAnPHzD1JhrjJYefZLpRZxjJkqJM1wRMo6pF3KLm6DcW6egT96WskjJvrPjR2Gv890+ZliZkkbCUStsqvZFiVTrQ0afOMbd4x0rS1n4YuUPjchnyuevb1B3nzys41Gvi7D3kFlkFEA0icwTPiCRcI4d44/Hud2thEhqXmqvpdKvHsEis/vd/1NSMrcSv2PGEj8coO9JaMpJtuzDWHNqBDwEiVBKhnSIVZBvGIZ0uOd6qnAKKeNLrP31CvtR9kpWSThBZHL3/Uxi8R+y4J8Ar76etBKVOeANim3XzMjQPEQeHywhDXDXYSLBSA5yIfKGMjFlwQbhAF8LG25lTEPi3ZZUlBFc48T63Q7ks19fo7S60JuI7lblfdjzBCdMw9NOkUt3lWiC0OVxtgdeMvmG3s5lZlpIHArRmOFkN3azrgrQeqi2aX9vfLo3o+x1Q46hGHf0h9SWIG5jwSTNkunnvhiD9DlV+e2FVReO0lGVZrWTbJw4l2PcR5IGBrrMmEhHKYS51XlKwgoYQNHKyrx9ynvdV9pECcajKf/G4VwgEUPaMjUzr 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)(38100700002)(91956017)(6486002)(966005)(122000001)(38070700005)(66476007)(8936002)(316002)(86362001)(76116006)(8676002)(36756003)(66556008)(64756008)(66446008)(66946007)(6916009)(71200400001)(508600001)(6506007)(6512007)(26005)(186003)(5660300002)(44832011)(2616005)(2906002)(33656002)(83380400001)(45980500001)(20210929001); DIR:OUT; SFP:1102 x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: 2B0Pv2E/SamU1JVEdlhDzyfTX+P8EosM9o3rbebwN8baOSYgpxrHxc/EKc/gP6fCZ8Eg8EbhOCrkvRjB9iqDVd8sdlQuSvL8iLN20+3I5XFakS1mITH5z58aLEFprpwI+2SpPrOYYVHa3ZKhkqDLpmAFL9Ze0MmX3KYznCPE03g5x38gNMr6cZVx4MwQdJco3xA5WCBHHSe1BiBOlloirJj2NeSp15+zgHw1tsEC3hN28HPuKePWT57eQn7AZ5EVUKwkSbLMBao8UeKWbRp2tTf6TIuAnqTTetMjsPtMenPHTedC9c7/n5mBsmY3V2Gg60CuwkvHZ6N65QszQzOhc1WxacLlqzNAKyAgZB4HQA1TkFAUDq2D7bfdJxDcI6O2lwGxNTEAe10cT76lK7h+Pt4zv8z0hNiXTKgvte1kyNGcrv/1RlcQihRCHMs9zB1yuDxXQjxTrt7XWgE265YCAidUBZL1dazfofaKBlnzszWNXCwqZ4HeBqpJsGfVaASnqF6RB+Kcgn1zZWVLtBOPmUjR1AKgcLCKtSw8fKVEV72ZeS5vFU26yvh5PE2glGhFbBkkks1zERgX2ULufAp/POUUiVdqo0K37QWpZaBy6WDXk/n/HbIdFwkQOaGa72+LwwwUxNVlym5foy163J/F+wZk+gR0uPtBN8WTHz+e848k5hvegHLPz+lj+t0TORtFdQpXTTCDCiJUuzim9b/JPaq5bPN7V2XXcI9kruCXqrY44byK/BTyd4oxWeJbW5LbIoco5TykalO4dYL/phRXIgGk7W8U64PtebvAc79a2fbdGtSEhiUwxgCZrWkMgPdlIopyIpq/QsHOHugn/+Rw2vj5wr/60X7UjohPsXM+ffWoxP2vLC2LJ+tvjU/NMlzEKtla3qEZgGc0m2k8+UZRZJx/5zRn8k/fhMZ7OCHz9/CLMECkb8hh21dy/Nf4YFZ+pTE9pi/90l0iHsvroVGyZRgMjhwFCCqVnzUZWw9b6TOoZf40xYR9xhs/H+f0ETQUmduObcazAp2+mRFQElGUb2WHhutW6j+xUXp5Gw3oJZ6GNVXMhMa0J5z74uqveGQ+7MGk7w/zYIbRPM4ktTOiFGy6dwT+fvdqQrylPKp002E65o8LNU0hxETcMezH3ieGaG/a3U4JGfHFdbHn52C8jRKllPOeli3bftn7hetgyfHM03CP+nh6CQuiG6jrU8xcxq54YWZAwIas/Tgbpb/oA1X2JCY1pymCJiBWDyl0zGiaS3wqe9wbXVta/a5NPp7dVk438agZpiCaw+tDfc0uS/r4olS+st/i+CaaB3VRSrmCm9udLhUAAkkd9XY+Ye/J/2sWG7X4MRrZyyFOBrLfcp84ZqMyVlzFsuZwpomAIuXwtSdqKfmw+fX5uZ/Yy7FyTBnQDEy3vDLpmXWnuQcV2jknESzON98bXcen6exgnEXcK6woqLxvg5DrF5mnd2B7Yi80TodprddkmSSROKSG8vXh+wPWa4A4jHBEMcFlFQGC2kI1chnijxlHOjKTOLGQCsGOA9e06r6aSr3PJ2eJ8Rq6RZhnQxqGeQmezaDZwfmeLCa9lIvqYxDYh7Mc6QglgywoIoZvyGCh2fVqxoJXfePz8fIWDMs+4bgZLes8rEtTZS+g2Vq2HIubRpbhNiU6lEpORfl4CKSwDGd9u7lWtLNaYjJNZoU7y6L+zx2w6ek= 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: 132186aa-52a5-4eb9-991a-08d9e50fd1d0 X-MS-Exchange-CrossTenant-originalarrivaltime: 31 Jan 2022 23:17:15.6233 (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: sVRH30awXTv1EmGPRPeWA+EBiD/J6jMnpZNMJOEtCN9j1d6WDVKJQONKMSxTwgd2JoMTJ1kvmwQWtfxybj0Wb7zquhL06ioxl3A2SfhsxKc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR08MB6243 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: P6zctG6riiSI 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(-) 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; }