From patchwork Wed Sep 6 00:10:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul B Mahol X-Patchwork-Id: 43573 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4f16:b0:149:dfde:5c0a with SMTP id gi22csp2189662pzb; Tue, 5 Sep 2023 17:03:25 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHSUp1hUctHe69MWXjemniYwjCrPb50IKvGcz20lhQF/p2sThmLg9YxDvPH28kJfb7QYadv X-Received: by 2002:a17:906:10ca:b0:9a5:cf23:de5a with SMTP id v10-20020a17090610ca00b009a5cf23de5amr835367ejv.45.1693958605082; Tue, 05 Sep 2023 17:03:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1693958605; cv=none; d=google.com; s=arc-20160816; b=Qe5l6A0Il3m4gijms0itXAdCMQUKsVlZTlMy9Jb2Hgs4fuICx1U92m0JHKDulfaMmO wRrN2rV8JiHvu7m8YJnRSQ/LsQnbtVUvorCskvvQl+SJUEM/1lgDfbh8bbxfMq5w5Ohu ktavZy5h8vGp35KGC/Kkdf7727ivNFI8Qr2f4ymjSNLswN5/FMQvffqfU4Ksz+D9SjGr N7B1uKIYHnCz9BIPeU1xXCJK6+k9/dxxOs+g2dvdzrSQcKev9mYctaWg4MPf5Q2/F8t7 L8dieEOQXljG5a89ee2SvyHUelACRawW0esj9hOWW53jsb7hRz7N8Jv9IE3wPN8jlJeY 97kQ== 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:to :message-id:date:from:mime-version:dkim-signature:delivered-to; bh=ZrSnncdDQEGqRKkOWLT9L1abcKSEzC3ZlMyabKRENlE=; fh=e5zN9xSzcxLA6bGo3lF+CqTbY/oLwzApV03EO/RBfgQ=; b=OHfMqiBRC2Q+opKLjty5z+g7eLvqxELrn0jcpWkmZRau58xUxrtqdRLiONUrxIP7J6 f/QDwpVIdbo+9X2+SMz4jYzSTl8sib/vegdBlxYSwF5GZOYDWdWbLd9C8B4JfXwBEjFg z7czFNk6egWf1sKxS0AhhN4qFKzQxs9BhMCa5Mlzw/tRUH/70ZYqY7fkstccyeRnIrjt phFy1Q/vpJHziEIB9hC0xonj4peGlzYDIhRFHA943iX4PolD3S+AHrcA7I0lJTzulJdy QcQCXrlNus6Z9zefiLMWkKjIzzYr+ca6J0dTiwoZ0/d4/2pCBGCHWMyvP8LQlbxdDf52 lt5w== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=APt9ssyc; 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 ti7-20020a170907c20700b009a18d8a64e9si8401996ejc.774.2023.09.05.17.03.22; Tue, 05 Sep 2023 17:03:25 -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=20221208 header.b=APt9ssyc; 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 0ED1568C21B; Wed, 6 Sep 2023 03:03:19 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-vs1-f53.google.com (mail-vs1-f53.google.com [209.85.217.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 14F8F68C7C2 for ; Wed, 6 Sep 2023 03:03:12 +0300 (EEST) Received: by mail-vs1-f53.google.com with SMTP id ada2fe7eead31-44d4d997dcfso1268427137.0 for ; Tue, 05 Sep 2023 17:03:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693958590; x=1694563390; darn=ffmpeg.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=51LJELMa/CQDzXRGVKNZZVZZ2BTsUse3PnU8E8G8VtE=; b=APt9ssyc7UFOgH48+G+1sF9+Oiu5bFMGntU+nWiQyk38O/Mvjt4Eg4ZLw+oT3DL1IC 86sAk/tkaj+ixsfb2gscRr5y5CUOwA36JelYkbIiuPgEkteYz1I+XOfyM4rHSV8uaB/R ejYoFT1YXophLxlWxV3x+Q4G0EktViRRW13d3sspATR4a8oWyQEKG++lGFjgEALaqvQw tSuVfVZiueiMbtMo3FIS/l9elCOP0a8Qv51s0PDTBWMws8Eea0sm/9GHNWyY45Gu8jXv yVDZ0WAdTd/i+/zcizi50ZnXHyDmnhnxIXTXGZd5oJ/tZ5YTwlXU7GBxcs3HXDzUWx5b gm2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693958590; x=1694563390; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=51LJELMa/CQDzXRGVKNZZVZZ2BTsUse3PnU8E8G8VtE=; b=PMtMfR5O0VYJQi17TJ3SfkaP24cKAg3MoqfO6VOAcsLK4o7ZJw/3igV3bsAcpHMpUj lN/v3ThqGDXo5uu7PHPOjUQVX/gzaOV2ONC9EAdR/2v2+dTkUhjuB6MiUnbJBwuur7/x Ybq5Hu64T8ZX6eq0bHS6IwTh3k1w2j5nY/4O1yxtS++/ns17h0IfLbNpIvb/2+MFNocD A7NSkQrVRd8bBtCxLclC/qBmAQj94cEIYDjCK4IHqtM4kl+vBM2FKpIXAC/3FeD6ASQB wijzHSZriJlhvKVfuSMFgTR+gDhtVp82vqBKapnu7YaVx+5o5Q+cBMoq6+mpMuOqHfEp oBaA== X-Gm-Message-State: AOJu0YyHr0r1dJLx87+6QBOFJgZsD9393sQ7y+gMCILhqfc/kQvg/wSt zQNkkXWWp1/Rq5KCT63NXeeSLB4by6ytx1a+cbYd30lK9oY= X-Received: by 2002:a05:6102:7c5:b0:44d:4b34:af92 with SMTP id y5-20020a05610207c500b0044d4b34af92mr1510761vsg.7.1693958590553; Tue, 05 Sep 2023 17:03:10 -0700 (PDT) MIME-Version: 1.0 From: Paul B Mahol Date: Wed, 6 Sep 2023 02:10:29 +0200 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] [PATCH] avformat/flacdec: set time base for headerless flac 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: c0UvIok9TqVk Attached. From dea5517ee383b4133a11137b99b27ba389e04a47 Mon Sep 17 00:00:00 2001 From: Paul B Mahol Date: Wed, 6 Sep 2023 02:04:10 +0200 Subject: [PATCH] avformat/flacdec: set time base for headerless flac Fixes #6396. Signed-off-by: Paul B Mahol --- libavformat/flacdec.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/libavformat/flacdec.c b/libavformat/flacdec.c index b58ec03963..5104f23110 100644 --- a/libavformat/flacdec.c +++ b/libavformat/flacdec.c @@ -46,11 +46,16 @@ static void reset_index_position(int64_t metadata_head_size, AVStream *st) sti->index_entries[i].pos += metadata_head_size; } +static const uint16_t sr_table[16] = { + 0, 1764, 3528, 3840, 160, 320, 441, 480, 640, 882, 960, 1920, 0, 0, 0, 0 +}; + static int flac_read_header(AVFormatContext *s) { int ret, metadata_last=0, metadata_type, metadata_size, found_streaminfo=0; uint8_t header[4]; uint8_t *buffer=NULL; + uint32_t marker; FLACDecContext *flac = s->priv_data; AVStream *st = avformat_new_stream(s, NULL); if (!st) @@ -61,7 +66,11 @@ static int flac_read_header(AVFormatContext *s) /* the parameters will be extracted from the compressed bitstream */ /* if fLaC marker is not found, assume there is no header */ - if (avio_rl32(s->pb) != MKTAG('f','L','a','C')) { + marker = avio_rl32(s->pb); + if (marker != MKTAG('f','L','a','C')) { + const int sample_rate = 50 * sr_table[(marker >> 16) & 0xF]; + if (sample_rate) + avpriv_set_pts_info(st, 64, 1, sample_rate); avio_seek(s->pb, -4, SEEK_CUR); return 0; } -- 2.39.1