From patchwork Thu Sep 8 08:25:05 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jyrki Vesterinen X-Patchwork-Id: 37754 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp140402pzh; Thu, 8 Sep 2022 01:26:06 -0700 (PDT) X-Google-Smtp-Source: AA6agR57a+ttWyKbn/URRFa/s8154VprsSA9bECBxESBQzNt1CzdUEfcQtELGmSR6+YKpXTaN0N5 X-Received: by 2002:a17:907:70a:b0:741:78ab:dce5 with SMTP id xb10-20020a170907070a00b0074178abdce5mr5441254ejb.527.1662625566167; Thu, 08 Sep 2022 01:26:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1662625566; cv=none; d=google.com; s=arc-20160816; b=Dc6n8MNcfWD7tt4fFvBuyv9/iRgqgy54p0LSxnFz4myqQkPahRwQuXle62dduTdxpZ UjVgJsT5ygSYzyAutbBGgqtCVtPvBB+fXJVLc/jEPOY3Y1CGQgLblBdXzyQMO/0cgHv6 qudm/0zge5h135IQVE8DYTFcRKEbQICN0/9yk5+O305tYXqmtFclVo2XulNl0L/FivV2 5xxMorLcA4rCxsYlVKu3nXBJ8Q7gmQsJ+ZdYkGSCnJQmz6aRYrHcqjimpFaURMCjSrtB agub/DeWR1bVi0DB76O4WAs2piZjsvUzpmZrm0eMVLmiKyFTfaK+0J4x4qGGskVcNnH5 JqHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=GOETaAUkY41H1PJQRg6s15y0fGV8ZoyI+NKFMw47gG8=; b=uWXUtb8O/py8K9TBPKCAFyKqATMY7+mHLfxWRgaq/6mvP1aAdl/n3o3A/yNIysBBIM DZapUaXLxJjmqfxBpgUxLqn/cS7sABFMZLHK05nYC2i5vzGe9ACksHCNAsYMJwuS2Yjy g2oGMkab/k7bZFLDOm38HjoC2MiJSfHHQQOb+2YFlObvQGTWPfmBmlzcztZTn1gqTUAo pkh3nSpFCPGHgXZYjapJj+cR9ISfHDJPDfaV7NzFcPal3atZHSZ7k7wKMfK3aCQS/QEB 8qiIayr9bJUcewb+OFORvdJpn3hxIGrp5dgt+BoWuRR4vPRQU2Xw5yH47l43IALqpQf2 mGfw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@nekonyansoft.com header.s=default header.b=A7WcPjs8; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id e23-20020a170906c01700b0073054c63245si1468380ejz.453.2022.09.08.01.26.05; Thu, 08 Sep 2022 01:26:06 -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=@nekonyansoft.com header.s=default header.b=A7WcPjs8; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id AAB8A68B9DD; Thu, 8 Sep 2022 11:26:01 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from delivery25.mailspamprotection.com (delivery25.mailspamprotection.com [185.56.84.23]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A9C5468B3BB for ; Thu, 8 Sep 2022 11:25:54 +0300 (EEST) Received: from 84.179.214.35.bc.googleusercontent.com ([35.214.179.84] helo=c48742.sgvps.net) by se25.mailspamprotection.com with esmtps (TLSv1.2:AES128-GCM-SHA256:128) (Exim 4.92) (envelope-from ) id 1oWCr8-0003JW-ND for ffmpeg-devel@ffmpeg.org; Thu, 08 Sep 2022 03:25:53 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=nekonyansoft.com; s=default; h=Date:Subject:Cc:To:From:list-help: list-unsubscribe:list-subscribe:list-post:list-owner:list-archive; bh=Jkxs/d3omwkUit8DBfbxHf23EjyHq1xUBYw24MiKQDY=; b=A7WcPjs8mdeG8rjpz0zIIarvY8 /4Mqoe9AOoyD8Lmiwpeq3ovniidZEvt9ng0DA4plsxrbVd9ZFFOaRqzrEMjBddDKlufnb5ZHqNtSE ox5jeDTcyL6Qh8buhD43b2y8Phl2WOt8QMrLkJ/4gMtpNi1TdYAuc2CYdUkjKnOcqVx+BJQSkAQoc /lkPXcw37B6RqMLoxarv+V1INT+Y0yuAkP/m1VaUfgSLBh87616PW1luGVg8WWXqfB6Q66hjclUC0 iLmUy28nzsq/4I8VczNPWpBr47qYU4AnhSKujc9tphPZX/gVMfh6DnPyzC0cOwyXMuCEMnUqaKhMd EJx+cqmQ==; Received: from [91.155.28.235] (port=11251 helo=localhost.localdomain) by c48742.sgvps.net with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1oWCr7-000CIY-09; Thu, 08 Sep 2022 08:25:49 +0000 From: jyrkive@nekonyansoft.com To: ffmpeg-devel@ffmpeg.org Date: Thu, 8 Sep 2022 11:25:05 +0300 Message-Id: <20220908082505.953-1-jyrkive@nekonyansoft.com> X-Mailer: git-send-email 2.37.2.windows.2 MIME-Version: 1.0 X-Originating-IP: 35.214.179.84 X-SpamExperts-Domain: c48742.sgvps.net X-SpamExperts-Username: 35.214.179.84 Authentication-Results: mailspamprotection.com; auth=pass smtp.auth=35.214.179.84@c48742.sgvps.net X-SpamExperts-Outgoing-Class: ham X-SpamExperts-Outgoing-Evidence: Combined (0.01) X-Recommended-Action: accept X-Filter-ID: Pt3MvcO5N4iKaDQ5O6lkdGlMVN6RH8bjRMzItlySaT+SM7XqCAHoybLV/dHPTRq7PUtbdvnXkggZ 3YnVId/Y5jcf0yeVQAvfjHznO7+bT5wGCFY+AjIRjB/MjRwOktyH1tEYR2R5SyiZFi8HY1udE+fH zJ6mVE7ewsipSVIfs4YUWAozogvlwoPw9Q131DL6ABHVTw1lV42ob3hDgXVUNQA9aWzfhGZBVqCj 3n5LjLrsoSGHtY2FCzlTS6F/+Ijn9pP2iGeMkOesmXeAAVAJRungggsTCr1Q2fZdAqMwzJaU/xXC AhbcQGlvnWB9Qx3YX7FmoqNk/FPN9ta8ZcqdCU2znmgwNPolqJQG3AxT/YPw4NFIHfIpz8O/5qlP IqvrpUPbMf9O8CgYeYyUnjcYmFE5ZCSoHa/7LfX2bMD5xLt03qfAvdYY4Q+cvDw4EdcHTcWsqU26 dvDcYIYzaKVPzmqo+CiEiEUieTH4xPDmrp2RMmGH+05pSN4hHKlyuAOtQoRzEBwjBFk1/RxIcEj+ PzEpfpnr9DPXDtMT9vPdg9HiqWHpandwa23xIBX/5QDWmB6IPkXGG9JgOfqy+Vn9+5T/zr5V4dB8 Q9/PdhQwyoGpIgYBLmDpKhyS0/odHZXU+CVXdHN1bSKPWxkzREEPoP2HO9wL1YdN0vbLSQ8oWxB4 DqxxlnCnOQKjhagEKuLSiuSXBd2CBcz1/u+XSOBm0rNud3PgzKGZ88iododq/YfVWMlHoWh7YJ70 YBk8N5yx6J1fhOzjF0b4LXcjJZ5lov7IuKUFI1rNdGuRU+QK/r/VyUFeCbPKrY9t7uzygwJZ4AqF SgIef+Zanr9W/5ncMiHEMxgabFKWAk0qbg4xF5OubFUTSgmQvM2wwA2N1lLwmCf40DP7fUpdGPkD VnZ/0BviJrmvASFqxVI3/k3WX0IBMqCL7ngrrCWwfJd+J5Mkd5XdG63CgJuXpt48NSiQMfXSYsX9 IJeeONzwvHSvYu8kirV0RfQbEQPtodyeTd8rjCZiW1ze03mTt2jY7BPeqfNt9IbwDC2r4A7aAE8F Q6v4qd4j+Vii5V7sjgkXsAgTIIVGLAOfyPfJYYe0zvB1GpaqOkwy9Jyrck7zWm9LMpNevBwAjY8J qKr79rTDuFP0JMM3jWjklyHcQsG10XPaXngOrHGWcKc5AqOFqAQq4tK9gThRk31TRgf1b+pEf0gQ 48umeGTtUYgaYAiJrfPfnj0YZ98JAql4N45mx63C+H0= X-Report-Abuse-To: spam@quarantine1.mailspamprotection.com Subject: [FFmpeg-devel] [PATCH] avcodec: Vorbis decode: don't use a flag to determine if frames have been output 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 Cc: Jyrki Vesterinen Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 2h+OL2tQqCr/ From: Jyrki Vesterinen If a developer using FFmpeg libraries seeks into an earlier position and calls avcodec_flush_buffers() afterwards as recommended, the Vorbis decoder will drop the next frame, since buffer flushing clears the first_frame flag. As a result, the audio samples the calling code receives may be ahead of the requested seek position, which is unacceptable in some use cases such as playing a looping sound effect. This commit removes the first_frame flag entirely and instead uses the presentation timestamp to determine if it's the first frame. --- libavcodec/vorbisdec.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/libavcodec/vorbisdec.c b/libavcodec/vorbisdec.c index 4d03947c49..d4b030d7b9 100644 --- a/libavcodec/vorbisdec.c +++ b/libavcodec/vorbisdec.c @@ -130,7 +130,6 @@ typedef struct vorbis_context_s { AVFloatDSPContext *fdsp; FFTContext mdct[2]; - uint8_t first_frame; uint32_t version; uint8_t audio_channels; uint32_t audio_samplerate; @@ -1845,8 +1844,7 @@ static int vorbis_decode_frame(AVCodecContext *avctx, AVFrame *frame, if ((len = vorbis_parse_audio_packet(vc, channel_ptrs)) <= 0) return len; - if (!vc->first_frame) { - vc->first_frame = 1; + if (frame->pts < 0) { *got_frame_ptr = 0; av_frame_unref(frame); return buf_size; @@ -1881,7 +1879,6 @@ static av_cold void vorbis_decode_flush(AVCodecContext *avctx) sizeof(*vc->saved)); } vc->previous_window = -1; - vc->first_frame = 0; } const FFCodec ff_vorbis_decoder = {