avcodec: set skip_samples in generic code

Decoders should only worry about exporting AVCodeContext->delay during init.

Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
James Almer
2026-02-10 11:30:32 -03:00
parent e1484a30e5
commit ff98352c3d
5 changed files with 4 additions and 5 deletions

View File

@@ -354,6 +354,8 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code
if (!avctx->bit_rate)
avctx->bit_rate = get_bit_rate(avctx);
avci->skip_samples = avctx->delay;
/* validate channel layout from the decoder */
if ((avctx->ch_layout.nb_channels && !av_channel_layout_check(&avctx->ch_layout)) ||
avctx->ch_layout.nb_channels > FF_SANE_NB_CHANNELS) {

View File

@@ -87,7 +87,6 @@ static av_cold int liblc3_decode_init(AVCodecContext *avctx)
avctx->delay = lc3_hr_delay_samples(
liblc3->hr_mode, liblc3->frame_us, liblc3->srate_hz);
avctx->internal->skip_samples = avctx->delay;
return 0;
}

View File

@@ -139,7 +139,7 @@ static av_cold int libopus_decode_init(AVCodecContext *avc)
#endif
/* Decoder delay (in samples) at 48kHz */
avc->delay = avc->internal->skip_samples = opus->pre_skip;
avc->delay = opus->pre_skip;
return 0;
}

View File

@@ -321,8 +321,6 @@ av_cold int ff_opus_parse_extradata(AVCodecContext *avctx,
}
avctx->delay = AV_RL16(extradata + 10);
if (avctx->internal)
avctx->internal->skip_samples = avctx->delay;
channels = avctx->extradata ? extradata[9] : (channels == 1) ? 1 : 2;
if (!channels) {

View File

@@ -140,7 +140,7 @@ static av_cold int wma_decode_init(AVCodecContext *avctx)
avctx->sample_fmt = AV_SAMPLE_FMT_FLTP;
avctx->internal->skip_samples = s->frame_len * 2;
avctx->delay = s->frame_len * 2;
return 0;
}