From patchwork Thu Mar 16 17:09:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 40701 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:d046:b0:cd:afd7:272c with SMTP id hv6csp4487700pzb; Thu, 16 Mar 2023 10:10:16 -0700 (PDT) X-Google-Smtp-Source: AK7set85S5yCxnGD4xjY0OOLXjcVUPTFGCabKL6mSj9EBUs+R0qwgmAzXQx5FobghqOKEi41n9iM X-Received: by 2002:a05:6402:44c:b0:4fc:782c:dc9b with SMTP id p12-20020a056402044c00b004fc782cdc9bmr186752edw.40.1678986616384; Thu, 16 Mar 2023 10:10:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1678986616; cv=none; d=google.com; s=arc-20160816; b=Aq3Sq/tQSoan+ukv1ICp3Mi9Q4JHmvToS6w1Uv7a9PCM7egt7FJr8aOBZZaq5oE6US D6XdtTumgZSejZ+4qlMqKMYzrj8gbwdV8I6KSy3RyJ7znPhJl4uni8DIjyDueFof4LEf fM6KdSs+MDs36n3AN7mDc6XCSL9RuA354CYLgn0PzCrPOSVhKuvL4lfDldguro5wf7iB Hj33qtKVRuTEA75hr/ApTtitm+W8I0Dg+ZaEgfX12jJtDQCJ/If4jdXKY738qR4JV9bP QjDaQ0I7I9IbWkJW9dsDE9MBoJQqjD0+cXMcEhb9l3GE1DX5DbIf7HKsY0A8XoQrOfN6 aA8w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding: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=Cnn1W1r7GjFKWcZnnLUGC4r1fdSZpAg9GomJDwGPq1U=; b=v1sq9DjQkIj49zwT/NULnKAMhdKlJomigdRT56A61/98AyTY/tugZmdv8xE7L68UL1 cPuUcfWP66wsZS2KI6ZFSrYJO16wMZrRPTbDIsx6h0vzwirRTtBazDwwvHiNSSrLn3m8 T479FJjoNHAuKHnrmew1Im2G+4LU/17j+Fe16VkBzsnJC9hDuZ32hLShWfXVMdUhNx2p InXTCj8glo3fn4cNXgW+x5Dc6Gw9Bg476ZK5C2IErzMxFyPQcNEtXRe7bLvbc9pTJiWT BHEJtmmYSd+nSU7PRKoIR+FPLNGCM0ALF/pf/L4GQSvCTKQZNGahzE4IK7AR9HRlX38P jyaA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=lGRYV7OO; 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 g15-20020aa7d1cf000000b004fe9656939esi15722edp.385.2023.03.16.10.10.15; Thu, 16 Mar 2023 10:10:16 -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=lGRYV7OO; 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 8AE2268C056; Thu, 16 Mar 2023 19:10:12 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oi1-f177.google.com (mail-oi1-f177.google.com [209.85.167.177]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2E2AA68C036 for ; Thu, 16 Mar 2023 19:10:06 +0200 (EET) Received: by mail-oi1-f177.google.com with SMTP id bp19so1855004oib.4 for ; Thu, 16 Mar 2023 10:10:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1678986604; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=rAFDN0UCed5BELGq3yuesfquUnEdzvf3/6xTLVC8aQc=; b=lGRYV7OOvGuiiZJGAj599XOownYk9NkYnf7qLUNhjsrXhwYG6cGCod9Bjn3Ms7noN6 CIjQcDrCwC4TaZ17BxnlcVEbMNUPAmAbQwq+f/Vr2oS8W3b8z9g2mx+YoH3eqZABDpaL OmSbJjckwIOGE152ITvGgjbe8wYeZxL7qspY/qxbStP+mElmSD+OvUyXFeDEXurSEDHB /MoB4LlUUwGk0m8W1j6xRfhf6KYFUIzBJ/Cc6e6nQ8WnJ98yFXgjnRyhQoOF3bAqAFlc dH5Vg2baGPYLbhpJBnaM8WBLvV6rhsLVQtoGtr2kukMHhRra0Bnve6nGFLpHWqfno/jq 0E/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678986604; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=rAFDN0UCed5BELGq3yuesfquUnEdzvf3/6xTLVC8aQc=; b=0E3QHK2V1wX9VW71cN/MB/QTU24Fb+ym5yUEMSN/LliKKtMOQfDgqIuKjucEXFKRFt CPScM1vs77hkZWzYU3V3SVmn6oDV3CdlYYi8VGwH/Biwqxarern7QHNoLtLZALHBMIAw vIJMrhvHXV2pzEPQfdt3AFg0qSqZ39coWFNSMa4gi1mz8f2P9iTjAGFBtkJpMAxbljjN xe8dPIRAOW57w8hj2H/BejCbxEtmPcqCM750+7/ITgzrqGZJgn6mNrx63moH12Y5vu3l NKOhiXbbRHoCwBh9/7lTGwPuBI3myMZjtP7AuH5LqPsxYJ3s4IyonjZ4QuW0RtsEZeT4 4oaQ== X-Gm-Message-State: AO0yUKUNnG45t51Dr92G8GiQkCc1GyLXpP7izeEiI2Ate1Am8+S4OSLJ Q28FDV5RKhxAVWSoQpZRU2vsSWcwtjs= X-Received: by 2002:a05:6808:2896:b0:384:3e65:d0dd with SMTP id eu22-20020a056808289600b003843e65d0ddmr3296281oib.41.1678986604135; Thu, 16 Mar 2023 10:10:04 -0700 (PDT) Received: from localhost.localdomain (host197.190-225-105.telecom.net.ar. [190.225.105.197]) by smtp.gmail.com with ESMTPSA id s9-20020a0568080b0900b003845f4991c7sm1935069oij.11.2023.03.16.10.10.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Mar 2023 10:10:03 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 16 Mar 2023 14:09:49 -0300 Message-Id: <20230316170949.3782-1-jamrial@gmail.com> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avcodec/vorbisdec: export skip_samples instead of dropping frames 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: rM+2wfVvhMum pts may not be set on input packets, which could result in the entire stream being discarded. This undoes commit 8fc2dedfe6e8fcc58dd052bf3b85cd4754133b17, reintroducing the behavior it replaced but now allowing the caller to manually drop the preroll samples by looking at the skip_samples side data at the start while ignoring it on seek, by setting the skip_manual avctx flag. Suggested-by: Anton Khirnov Signed-off-by: James Almer --- libavcodec/vorbisdec.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/libavcodec/vorbisdec.c b/libavcodec/vorbisdec.c index dd856a6dfe..e9dad4ef4f 100644 --- a/libavcodec/vorbisdec.c +++ b/libavcodec/vorbisdec.c @@ -38,6 +38,7 @@ #include "codec_internal.h" #include "decode.h" #include "get_bits.h" +#include "internal.h" #include "vorbis.h" #include "vorbisdsp.h" #include "vorbis_data.h" @@ -134,7 +135,6 @@ typedef struct vorbis_context_s { av_tx_fn mdct_fn[2]; uint8_t first_frame; - int64_t initial_pts; uint32_t version; uint8_t audio_channels; uint32_t audio_samplerate; @@ -1839,13 +1839,7 @@ static int vorbis_decode_frame(AVCodecContext *avctx, AVFrame *frame, if (!vc->first_frame) { vc->first_frame = 1; - vc->initial_pts = frame->pts; - } - - if (frame->pts == vc->initial_pts) { - *got_frame_ptr = 0; - av_frame_unref(frame); - return buf_size; + avctx->internal->skip_samples = len; } ff_dlog(NULL, "parsed %d bytes %d bits, returned %d samples (*ch*bits) \n", @@ -1877,6 +1871,7 @@ 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 = {