From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 68AE4443BB for ; Thu, 8 Sep 2022 08:26:04 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6890368B9BA; Thu, 8 Sep 2022 11:26:01 +0300 (EEST) 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: 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 = { -- 2.37.2.windows.2 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".