[FFmpeg-devel] [PATCH] swresample fixes
Michael Niedermayer
michael at niedermayer.cc
Thu Jan 5 22:59:47 EET 2023
On Thu, Jan 05, 2023 at 09:44:46PM +0100, Paul B Mahol wrote:
> On Thu, Jan 5, 2023 at 9:34 PM Michael Niedermayer <michael at niedermayer.cc>
> wrote:
>
> > On Wed, Jan 04, 2023 at 05:59:14PM +0100, Paul B Mahol wrote:
> > > Patches attached.
> >
> > > af_aresample.c | 6 ++++++
> > > 1 file changed, 6 insertions(+)
> > > 94dacb46103e2bb9fbb6e1ca40675243d15069cd
> > 0003-avfilter-af_aresample-if-frame-parameters-change-upd.patch
> > > From 3959bcb707f52339bac41acc9aec856cad3aced1 Mon Sep 17 00:00:00 2001
> > > From: Paul B Mahol <onemda at gmail.com>
> > > Date: Wed, 4 Jan 2023 17:55:10 +0100
> > > Subject: [PATCH 3/3] avfilter/af_aresample: if frame parameters change
> > update
> > > swr context
> > >
> > > Signed-off-by: Paul B Mahol <onemda at gmail.com>
> > > ---
> > > libavfilter/af_aresample.c | 6 ++++++
> > > 1 file changed, 6 insertions(+)
> > >
> > > diff --git a/libavfilter/af_aresample.c b/libavfilter/af_aresample.c
> > > index 7923377c8c..2744388f75 100644
> > > --- a/libavfilter/af_aresample.c
> > > +++ b/libavfilter/af_aresample.c
> > > @@ -209,8 +209,14 @@ FF_ENABLE_DEPRECATION_WARNINGS
> > > } else {
> > > outsamplesref->pts = AV_NOPTS_VALUE;
> > > }
> > > +again:
> > > ret = swr_convert_frame(aresample->swr, outsamplesref,
> > > (void *)insamplesref);
> > > + if (ret & (AVERROR_INPUT_CHANGED | AVERROR_OUTPUT_CHANGED)) {
> > > + swr_close(aresample->swr);
> > > + goto again;
> > > + }
> > > +
> > > if (ret < 0) {
> > > av_frame_free(&outsamplesref);
> > > av_frame_free(&insamplesref);
> >
> > Are you sure this is not missing some flushing of internal samples ?
> >
>
> Nope, point is not to flush all internal samples at all, just enough so
> clicks do not happen.
If there is 123ms audio in then there should be 123ms audio out
That is for the whole file. individual frames can differ due to buffering.
But if the buffers are discarded then i would expect that overall samples
are lost. This can cause problems with AV sync and timestamps too
> Clicks happen anyway so need to check why.
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Awnsering whenever a program halts or runs forever is
On a turing machine, in general impossible (turings halting problem).
On any real computer, always possible as a real computer has a finite number
of states N, and will either halt in less than N cycles or never halt.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20230105/8f1f6e0f/attachment.sig>
More information about the ffmpeg-devel
mailing list