summaryrefslogtreecommitdiff
path: root/libavcodec/dpcm.c
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2023-01-21 14:07:48 +0100
committerPaul B Mahol <onemda@gmail.com>2023-01-24 16:58:01 +0100
commit3110e2845636aaab32c426c25790c7ead2878fde (patch)
tree8f888bb07249650c0ad0b8ad20f07e6c1ada9663 /libavcodec/dpcm.c
parentb8640bfc99d6fe32890a721b4a837bc6672af6f4 (diff)
avcodec/dpcm: add .flush
Otherwise after seek, DC offset for audio samples might be big.
Diffstat (limited to 'libavcodec/dpcm.c')
-rw-r--r--libavcodec/dpcm.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/libavcodec/dpcm.c b/libavcodec/dpcm.c
index 2420647bc0..86cb9134f8 100644
--- a/libavcodec/dpcm.c
+++ b/libavcodec/dpcm.c
@@ -448,6 +448,13 @@ static int dpcm_decode_frame(AVCodecContext *avctx, AVFrame *frame,
return avpkt->size;
}
+static void dpcm_flush(AVCodecContext *avctx)
+{
+ DPCMContext *s = avctx->priv_data;
+
+ s->sample[0] = s->sample[1] = 0;
+}
+
#define DPCM_DECODER(id_, name_, long_name_) \
const FFCodec ff_ ## name_ ## _decoder = { \
.p.name = #name_, \
@@ -457,6 +464,7 @@ const FFCodec ff_ ## name_ ## _decoder = { \
.p.capabilities = AV_CODEC_CAP_DR1, \
.priv_data_size = sizeof(DPCMContext), \
.init = dpcm_decode_init, \
+ .flush = dpcm_flush, \
FF_CODEC_DECODE_CB(dpcm_decode_frame), \
}