From patchwork Wed Mar 18 01:16:30 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Carl Eugen Hoyos X-Patchwork-Id: 18278 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 038B044B48B for ; Wed, 18 Mar 2020 03:16:50 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D0D0068B50D; Wed, 18 Mar 2020 03:16:49 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-io1-f46.google.com (mail-io1-f46.google.com [209.85.166.46]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A563068AE14 for ; Wed, 18 Mar 2020 03:16:42 +0200 (EET) Received: by mail-io1-f46.google.com with SMTP id h8so23219140iob.2 for ; Tue, 17 Mar 2020 18:16:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=UJx2mjEf9WZ69RTnhO6qPmfEAhhLFql034qwN9Be8bc=; b=Z9QeIc6wMbD0Gh/T4l+3IvesMoDfJH/3g21D6cYyz/EnPPcfPsp+aOp+swN/UYFpgw h/2Y9XXlIt08Jpud9A2HQL6+X/3/aA8nmIkeZ+r2Ja8u1i+x7TMhhRDJCnaC/8pdRiFi R5Ih4lARZfJGsUR7Ic6eWFJTu3Bz4/UztGLqwVgtMhE3YIzspNHmPAN8B21MF80GJwyV lEwQE5icG9L95C73S7GF5G/zdxZUJZjPzpAzQbFGSncNh3SJdv2RyOdNRYeF+BRKlEzd maqkQYb4KD1S1Wz79mNH9pTBur14ro5xYDPqEC2aJW+JXg9V0hp12GpXE6eMKPxLL3Q5 7wKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=UJx2mjEf9WZ69RTnhO6qPmfEAhhLFql034qwN9Be8bc=; b=lJXBKA2I9GRohiICR+FtvfPZXpnziREejLXGDnEYi3+QBV+a7CysnFSciZsO217O2L nZPUt7M7/MBHZ/ZVqDrh95Zvl+CqdJyhZuN/6CDzIFn4b3FAMI1BJP3TPd4jhu3iyxf0 5FvIwDmy5jZ0lFq6AnV80dVBqGHLElWpXFp4qIWsfU9GfnnmlOA12+/wJqwmR+H9H2zq XWP3PxNjCQRO3WUTbyw+PRzimUGVw4jTVEXm0RejDAQ4UykZkBi2PAWWC7t9lYOLBC/K pclugyjT/gtnAN5YyrF7bNdFznzTGNkOFM4UubIeOVEtbXqP1EmfcFVBNIeQnPSvrAa9 vVkA== X-Gm-Message-State: ANhLgQ2N64qEQqpxDUzjvulFWrOvoZCJy+Ed8WUT4f3qEVX9YYopmzvT NjtsDsVHX0eyomR/7ywV8TD85VUjKhIxemO6PncfXA== X-Google-Smtp-Source: ADFU+vvoaUv+W3wDT5q2VXi+/VSllCTxpiVknRwdxo2HWpidLqdl3rhnEasDuSxs7ECG3n+F6jDjofK9oxXcHsNq+0Q= X-Received: by 2002:a02:cc12:: with SMTP id n18mr1978236jap.68.1584494201262; Tue, 17 Mar 2020 18:16:41 -0700 (PDT) MIME-Version: 1.0 From: Carl Eugen Hoyos Date: Wed, 18 Mar 2020 02:16:30 +0100 Message-ID: To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH]lavf/subviewerdec: Support higher sub-second precision X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" Hi! Attached patch fixes ticket #8575 for me, Google describes such files. Please comment, Carl Eugen From 39d0748782bb3e37fb2f92c679ffa58b239374c7 Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos Date: Wed, 18 Mar 2020 02:11:33 +0100 Subject: [PATCH] lavf/subviewerdec: Support higher sub-second precision. Fixes ticket #8575. --- libavformat/subviewerdec.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/libavformat/subviewerdec.c b/libavformat/subviewerdec.c index 06b827b70f..ed48b3388d 100644 --- a/libavformat/subviewerdec.c +++ b/libavformat/subviewerdec.c @@ -56,11 +56,15 @@ static int read_ts(const char *s, int64_t *start, int *duration) int64_t end; int hh1, mm1, ss1, ms1; int hh2, mm2, ss2, ms2; + int multiplier = 1; + if (sscanf(s, "%u:%u:%u.%2u,%u:%u:%u.%2u", + &hh1, &mm1, &ss1, &ms1, &hh2, &mm2, &ss2, &ms2) == 8) + multiplier = 10; if (sscanf(s, "%u:%u:%u.%u,%u:%u:%u.%u", &hh1, &mm1, &ss1, &ms1, &hh2, &mm2, &ss2, &ms2) == 8) { - end = (hh2*3600LL + mm2*60LL + ss2) * 100LL + ms2; - *start = (hh1*3600LL + mm1*60LL + ss1) * 100LL + ms1; + end = (hh2*3600LL + mm2*60LL + ss2) * 1000LL + ms2 * multiplier; + *start = (hh1*3600LL + mm1*60LL + ss1) * 1000LL + ms1 * multiplier; *duration = end - *start; return 0; } @@ -84,7 +88,7 @@ static int subviewer_read_header(AVFormatContext *s) return res; if (avio_rb24(s->pb) != 0xefbbbf) avio_seek(s->pb, -3, SEEK_CUR); - avpriv_set_pts_info(st, 64, 1, 100); + avpriv_set_pts_info(st, 64, 1, 1000); st->codecpar->codec_type = AVMEDIA_TYPE_SUBTITLE; st->codecpar->codec_id = AV_CODEC_ID_SUBVIEWER; -- 2.24.1