From patchwork Sun Sep 5 16:56:36 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul B Mahol X-Patchwork-Id: 30007 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2a4a:0:0:0:0 with SMTP id k10csp3069831iov; Sun, 5 Sep 2021 09:56:56 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwREV39282ZxFkALlejnZpPHFJN4zVznxSvrhPJJazUAKhy0BUdij9OJFjd6X4lpGEXdH5h X-Received: by 2002:a17:906:4fd6:: with SMTP id i22mr9682463ejw.92.1630861015971; Sun, 05 Sep 2021 09:56:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1630861015; cv=none; d=google.com; s=arc-20160816; b=ixWI6rKzgsqBDINQzoE+v68G9sZ8bEDoTKlXutbcgUDGa+4cie3GDvRbMtooFiFPm2 qRLBTONl7RqkDDFKsymBZlI2NxIkjLJ0k+Ivv3lsuuRAhDgYhdEp8f6W0paCL7yHVIRT eU0x1VXFj6WlRci5P6sw3raNr5OV4WJMQVWfg8iCC00GZT3zzf7SpWZbSwoTsbxoSJ6u uZx20MaWqq3FUrGuwTiNEFuWuv8+WYdqR6f4Qfx7kFESs8OaoM1RsJp/k5zuBuZKBPei ZLrJdM7RDpzqqu5X7i+JJGE329lkHHqiI1VlzXPCIzNLz5IEjdLLDjKgBB/wOz7Im8rH 3+Mw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:dkim-signature :delivered-to; bh=iRLQ41Rpi3MQB6ngiJcVcsSpIxNKUKAmmJyslgLxuwc=; b=lk09etSakoDrwSgh9pPuM0NSBL0iF3bR+Zt//Rnc9wMkt6dzQNypRYQ7bvOhtpk5Oo etTp0YSJb0jNiuwbl3fsf3OIZiszvhX8QV6bjl9kGyoKFIwCQtsmyt6qzwsYSen6IklA dWy8VjRRveS3RjCHCCEy0Z0CQSEM/7DzuM4ccKRZovjWdR+5o6kCu0YE9OtQr1f5bm/1 tBcNSbTyiGZzTYKNVjsVGKNcOJBx/x7Bg+TXeVQ+twjuHDGJVaClSrt2loQn2PPaVY+H t8Y+KD+KQfmnRx/2jFbrohMf2+d1mcsQu0XCRbvAtkhRsl9roC0GvDqis5S2Av+MOvXE mNWw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=MTDjakqF; 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 q18si7542111edi.368.2021.09.05.09.56.55; Sun, 05 Sep 2021 09:56:55 -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=20210112 header.b=MTDjakqF; 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 CAFE568A618; Sun, 5 Sep 2021 19:56:51 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ed1-f44.google.com (mail-ed1-f44.google.com [209.85.208.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5318B68A4DB for ; Sun, 5 Sep 2021 19:56:45 +0300 (EEST) Received: by mail-ed1-f44.google.com with SMTP id i6so6020564edu.1 for ; Sun, 05 Sep 2021 09:56:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id; bh=gk0IO+mv4r3gMhBM9OeaUaKqUDg/gV4hMAqx7fQ1hHM=; b=MTDjakqFz1TrzWg+KUkDYKw9VjA2wAZIOgWAB9eCpnEL6laycDVtde7t7ER9P3sm4w YuA8MkEA3IpL7NELzRrLsZfUxfPvjerYZ7fH+DXqFFhLPUoE+U8+DLmOHBDWKrobMQo5 doRzWk9BIQZaciztvBLLM+F8PyM8TtfnqPfEPK2edvrefUxbyas1e/5cmZ3/6MdvVttg 2SZdBwurcK0wd/mACOhmBHzVJCAJSJKAuK8eYxajGUIHYrxrFH9ua6k2C6tXJHuJKOuh nUvwevZEBaQl3C8ost/iembXbrfWapBDl8q94gHPa3ejJXW8lmP/XigXyAdUDSkopdAM NalA== 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; bh=gk0IO+mv4r3gMhBM9OeaUaKqUDg/gV4hMAqx7fQ1hHM=; b=iPV4WQUV2bCX/AGtlu+Lj8U7VHVLCzgX8p444tjhUNGpufmQAvBr6woBsHP3Aw6Z6T CGziAl5MJIoDdcVRREozPU1mclXVNkrQf2B0qAouqVXrHsOFjoMhlpjM5Lks3ZpUlpNJ arEUbIJ4nTAxY9S6WE8wxW6YI6SzrWUyD2qH2Vra4gGNpO4VmXFM4YDgsh5Tt/QlFv0x MV7jjGceebM5qapyBZKEp5K0osoL8eyvqfiYYbBV1mOW+aX9JZPK1PNJeqi2429t9IGO s96g0qivzQf8gq/c7OZa5gFibR04LALJcefEY7QefyiPrI+NIzmmA7jvsy35zXm0klxu dQSg== X-Gm-Message-State: AOAM533ug+Hrf6c1SzDhJTpkM4GaIFrKSuuO9Oa9fy8Ill4+bNTdYyzZ fWd3Nh9rRZIxhc3oluKlAMbc9ehHUXU= X-Received: by 2002:aa7:d157:: with SMTP id r23mr9269920edo.322.1630861004727; Sun, 05 Sep 2021 09:56:44 -0700 (PDT) Received: from localhost.localdomain ([95.168.120.22]) by smtp.gmail.com with ESMTPSA id s26sm3113517edt.41.2021.09.05.09.56.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Sep 2021 09:56:44 -0700 (PDT) From: Paul B Mahol To: ffmpeg-devel@ffmpeg.org Date: Sun, 5 Sep 2021 18:56:36 +0200 Message-Id: <20210905165636.18823-1-onemda@gmail.com> X-Mailer: git-send-email 2.17.1 Subject: [FFmpeg-devel] [PATCH] avformat/mlpdec: fix time_base for packet timestamps 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: TbdR5n7gfkp6 Signed-off-by: Paul B Mahol --- libavformat/mlpdec.c | 43 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/libavformat/mlpdec.c b/libavformat/mlpdec.c index 8f0aabb510..f0996fef31 100644 --- a/libavformat/mlpdec.c +++ b/libavformat/mlpdec.c @@ -22,8 +22,12 @@ */ #include "avformat.h" +#include "avio_internal.h" +#include "internal.h" #include "rawdec.h" #include "libavutil/intreadwrite.h" +#include "libavcodec/mlp.h" +#include "libavcodec/mlp_parse.h" static int av_always_inline mlp_thd_probe(const AVProbeData *p, uint32_t sync) { @@ -50,6 +54,40 @@ static int av_always_inline mlp_thd_probe(const AVProbeData *p, uint32_t sync) return 0; } +static int mlp_read_header(AVFormatContext *s) +{ + int ret = ff_raw_audio_read_header(s); + + if (ret < 0) + return ret; + + ret = ffio_ensure_seekback(s->pb, 10); + if (ret == 0) { + uint8_t buffer[10]; + int read, sample_rate = 0; + + read = avio_read(s->pb, buffer, 10); + if (read == 10) { + switch (buffer[7]) { + case SYNC_TRUEHD: + sample_rate = mlp_samplerate(buffer[8] >> 4); + break; + case SYNC_MLP: + sample_rate = mlp_samplerate(buffer[9] >> 4); + break; + } + + if (sample_rate) + avpriv_set_pts_info(s->streams[0], 64, 1, sample_rate); + } + + if (read > 0) + avio_seek(s->pb, -read, SEEK_CUR); + } + + return 0; +} + #if CONFIG_MLP_DEMUXER static int mlp_probe(const AVProbeData *p) { @@ -60,7 +98,7 @@ const AVInputFormat ff_mlp_demuxer = { .name = "mlp", .long_name = NULL_IF_CONFIG_SMALL("raw MLP"), .read_probe = mlp_probe, - .read_header = ff_raw_audio_read_header, + .read_header = mlp_read_header, .read_packet = ff_raw_read_partial_packet, .flags = AVFMT_GENERIC_INDEX | AVFMT_NOTIMESTAMPS, .extensions = "mlp", @@ -80,7 +118,7 @@ const AVInputFormat ff_truehd_demuxer = { .name = "truehd", .long_name = NULL_IF_CONFIG_SMALL("raw TrueHD"), .read_probe = thd_probe, - .read_header = ff_raw_audio_read_header, + .read_header = mlp_read_header, .read_packet = ff_raw_read_partial_packet, .flags = AVFMT_GENERIC_INDEX | AVFMT_NOTIMESTAMPS, .extensions = "thd", @@ -89,4 +127,3 @@ const AVInputFormat ff_truehd_demuxer = { .priv_class = &ff_raw_demuxer_class, }; #endif -