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 ESMTPS id 3D1CB4C2F0 for ; Thu, 6 Feb 2025 16:05:59 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0A36068BC60; Thu, 6 Feb 2025 18:05:57 +0200 (EET) Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4386E68B874 for ; Thu, 6 Feb 2025 18:05:50 +0200 (EET) Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-21f49bd087cso5412935ad.0 for ; Thu, 06 Feb 2025 08:05:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738857948; x=1739462748; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=wJj9xOktcNZEX3+9x84IlkTdFLr1CScUVh1keKVk+dY=; b=ETtIT8KbyNo/32Fa7J6g/dK/mTm5GW5q6TOaZVqEtSONa3cnthRvbT5oR6ULtmTffJ Wny/x0isZi4u9iwByRoxa+OoVkY0hjjL/PnNzoGwJW4eqcfMKfXcCx+P6Bn552SSx9u+ wE3/OuyqTyUoq+B3eiz9Y369IqOMJzaojJ2DbwFNoJap53TjfRnBoZ5In8QVP9O1eBxy SlNRDGfePOfBd1f+uZV4pjCVJlvmjRvJ6fhtrPL836SwWQUAYwTDeUK/Sy+HOyPq1SO/ 1hsx6O1hk0jqyzOS6sVgFa7lO8f0laqob7mgxVR1pfW+cvGUULk5+ouWYqVJIwMFRr1I FFMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738857948; x=1739462748; 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=wJj9xOktcNZEX3+9x84IlkTdFLr1CScUVh1keKVk+dY=; b=ezjJIJjcDDyWgyrZe0a7F1uJ0ZpPn6Oz2c56OAeidMeaxgZ+8L+p4SMWGspgMQJi4M tCd/80oJCmmooNCeB+T25nOQyyX4VTZQAv4c/ebxIwLxFlNiz6oMUplvQieNmNM3yevK bvh46cP7ZHtWa4L8P6DvonsadROhT9isKt91/6LqmV6qamnpbSE+Uw4jYzRumfo2Tv2Q 9rv9w4iOe13xtgZIQJIVdAPvjM/VFrJUyiICO2c9UEjQBuPf/GZB0RDh5m3HQvPA6Iws uKqQHZeuVsdKcmMud/1kaABlOkXFiN5OZN9l8DuyR0g3dohkq1qCUKZMx6QRGO/+ede8 mZTQ== X-Gm-Message-State: AOJu0Yxl1f7VqT3LW4+Q5BaIdnndwPA328wF37SFJoLva2n6tH+lZHzv 4VyRp6DHwwr6MUT9lDz1tjtAxXNs1eNPAjJp5WjGrbMyIrcQbF1I/Zo+0hYv X-Gm-Gg: ASbGnctc2n2bUnK2Tm/kZEkxFviCIEd+/qg0H0PF74+KO9odlFbrbPhxijpedN03QYB mPQmhASOV5TOpI/Iwm+owE4jZSh4k8Ky1Vw22UX6QXkXEYTz7xg6w0s0TbDtQhNnJa0H8mYlOIq NZJb6wM1B3UWOEMfmtz64k160A7eUyj/JNUKk04umlCSy81/sRTsDYv5WwkMXePoibHMF0ubnD8 7NZKH1DbovhP7Mrcq10INrfC1tg2HhWpC1yuU3e3x+WPhBhiEaYXyC5MbnjEeG4qnUqrioMVGuC 274MnkiPRlH/9A4olbb/pT2Yz6F3218= X-Google-Smtp-Source: AGHT+IFoonDhewKkdvLiZ2TlsV1JBxeUuj47XOk1bo1vUPpLOlhWPyhNuDYItABN1Ce3J0rGlC7ngA== X-Received: by 2002:a05:6a21:999d:b0:1e6:50a0:bbc5 with SMTP id adf61e73a8af0-1ede884623emr14639963637.21.1738857947982; Thu, 06 Feb 2025 08:05:47 -0800 (PST) Received: from localhost.localdomain ([2800:2121:b040:c:c05d:8929:1e3d:9951]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-ad51af7a22dsm1464553a12.69.2025.02.06.08.05.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Feb 2025 08:05:47 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 6 Feb 2025 13:05:17 -0300 Message-ID: <20250206160517.9746-1-jamrial@gmail.com> X-Mailer: git-send-email 2.48.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avcodec/ac3dec: add a flush callback for the eac3 decoder 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 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: Fixes ticket #10732 Signed-off-by: James Almer --- libavcodec/ac3dec.c | 10 ++++++++++ libavcodec/ac3dec.h | 38 ++++++++++++++++++++++---------------- libavcodec/ac3dec_fixed.c | 1 + libavcodec/ac3dec_float.c | 1 + 4 files changed, 34 insertions(+), 16 deletions(-) diff --git a/libavcodec/ac3dec.c b/libavcodec/ac3dec.c index ff8cbfb0b4..2cf82abc19 100644 --- a/libavcodec/ac3dec.c +++ b/libavcodec/ac3dec.c @@ -252,6 +252,16 @@ static av_cold int ac3_decode_init(AVCodecContext *avctx) return 0; } +static av_cold void ac3_decode_flush(AVCodecContext *avctx) +{ + AC3DecodeContext *s = avctx->priv_data; + + memset(&s->frame_type, 0, sizeof(*s) - offsetof(AC3DecodeContext, frame_type)); + + AC3_RENAME(ff_kbd_window_init)(s->window, 5.0, 256); + av_lfg_init(&s->dith_state, 0); +} + /** * Parse the 'sync info' and 'bit stream info' from the AC-3 bitstream. * GetBitContext within AC3DecodeContext must point to diff --git a/libavcodec/ac3dec.h b/libavcodec/ac3dec.h index 98de7b5abf..cfaad446ab 100644 --- a/libavcodec/ac3dec.h +++ b/libavcodec/ac3dec.h @@ -75,8 +75,29 @@ typedef struct AC3DecodeContext { AVCodecContext *avctx; ///< parent context GetBitContext gbc; ///< bitstream reader + AVTXContext *tx_128, *tx_256; + av_tx_fn tx_fn_128, tx_fn_256; + +///@name Optimization + BswapDSPContext bdsp; +#if USE_FIXED + AVFixedDSPContext *fdsp; +#else + AVFloatDSPContext *fdsp; +#endif + AC3DSPContext ac3dsp; + FmtConvertContext fmt_conv; ///< optimized conversion functions +///@} + + INTFLOAT *xcfptr[AC3_MAX_CHANNELS]; + INTFLOAT *dlyptr[AC3_MAX_CHANNELS]; + + AVChannelLayout downmix_layout; + +// Start of flushable fields ///@name Bit stream information ///@{ + // frame_type must be first int frame_type; ///< frame type (strmtyp) int substreamid; ///< substream identification int superframe_size; ///< current superframe size, in bytes @@ -222,24 +243,9 @@ typedef struct AC3DecodeContext { ///@name IMDCT int block_switch[AC3_MAX_CHANNELS]; ///< block switch flags (blksw) - AVTXContext *tx_128, *tx_256; - av_tx_fn tx_fn_128, tx_fn_256; -///@} - -///@name Optimization - BswapDSPContext bdsp; -#if USE_FIXED - AVFixedDSPContext *fdsp; -#else - AVFloatDSPContext *fdsp; -#endif - AC3DSPContext ac3dsp; - FmtConvertContext fmt_conv; ///< optimized conversion functions ///@} SHORTFLOAT *outptr[AC3_MAX_CHANNELS]; - INTFLOAT *xcfptr[AC3_MAX_CHANNELS]; - INTFLOAT *dlyptr[AC3_MAX_CHANNELS]; ///@name Aligned arrays DECLARE_ALIGNED(16, int, fixed_coeffs)[AC3_MAX_CHANNELS][AC3_MAX_COEFS]; ///< fixed-point transform coefficients @@ -252,7 +258,7 @@ typedef struct AC3DecodeContext { DECLARE_ALIGNED(32, SHORTFLOAT, output_buffer)[EAC3_MAX_CHANNELS][AC3_BLOCK_SIZE * 6]; ///< final output buffer ///@} - AVChannelLayout downmix_layout; +// End of flushable fields } AC3DecodeContext; /** diff --git a/libavcodec/ac3dec_fixed.c b/libavcodec/ac3dec_fixed.c index e0db9b2260..e284140e74 100644 --- a/libavcodec/ac3dec_fixed.c +++ b/libavcodec/ac3dec_fixed.c @@ -181,6 +181,7 @@ const FFCodec ff_ac3_fixed_decoder = { .p.priv_class = &ac3_decoder_class, .priv_data_size = sizeof (AC3DecodeContext), .init = ac3_decode_init, + .flush = ac3_decode_flush, .close = ac3_decode_end, FF_CODEC_DECODE_CB(ac3_decode_frame), .p.capabilities = AV_CODEC_CAP_CHANNEL_CONF | diff --git a/libavcodec/ac3dec_float.c b/libavcodec/ac3dec_float.c index 53d9d472c4..aed34ec2e9 100644 --- a/libavcodec/ac3dec_float.c +++ b/libavcodec/ac3dec_float.c @@ -88,6 +88,7 @@ const FFCodec ff_eac3_decoder = { .p.id = AV_CODEC_ID_EAC3, .priv_data_size = sizeof (AC3DecodeContext), .init = ac3_decode_init, + .flush = ac3_decode_flush, .close = ac3_decode_end, FF_CODEC_DECODE_CB(ac3_decode_frame), .p.capabilities = AV_CODEC_CAP_CHANNEL_CONF | -- 2.48.1 _______________________________________________ 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".