diff mbox series

[FFmpeg-devel] avfilter/fifo: Remove (a)fifo filters

Message ID AS8P250MB0744135912D00BC22B7B79158F402@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM
State Accepted
Commit f6ec01147f7fdb429495b7bd7f25c208208f39a3
Headers show
Series [FFmpeg-devel] avfilter/fifo: Remove (a)fifo filters | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Andreas Rheinhardt Feb. 4, 2024, 1:51 p.m. UTC
Obsolete since 4ca1fb9d2a91757c8c4c34dd456abf340e3f765f.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
---
 doc/filters.texi         |   9 ---
 libavfilter/Makefile     |   1 -
 libavfilter/allfilters.c |   2 -
 libavfilter/fifo.c       | 165 ---------------------------------------
 4 files changed, 177 deletions(-)
 delete mode 100644 libavfilter/fifo.c

Comments

Andreas Rheinhardt Feb. 6, 2024, 9 a.m. UTC | #1
Andreas Rheinhardt:
> Obsolete since 4ca1fb9d2a91757c8c4c34dd456abf340e3f765f.
> 
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
> ---
>  doc/filters.texi         |   9 ---
>  libavfilter/Makefile     |   1 -
>  libavfilter/allfilters.c |   2 -
>  libavfilter/fifo.c       | 165 ---------------------------------------
>  4 files changed, 177 deletions(-)
>  delete mode 100644 libavfilter/fifo.c
> 

Will apply in a few days unless there are objections.

- Andreas
Muhammad Faiz March 8, 2024, 8:46 a.m. UTC | #2
On Tue, Feb 6, 2024 at 3:58 PM Andreas Rheinhardt <
andreas.rheinhardt@outlook.com> wrote:

> Andreas Rheinhardt:
> > Obsolete since 4ca1fb9d2a91757c8c4c34dd456abf340e3f765f.
> >
> > Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
> > ---
> >  doc/filters.texi         |   9 ---
> >  libavfilter/Makefile     |   1 -
> >  libavfilter/allfilters.c |   2 -
> >  libavfilter/fifo.c       | 165 ---------------------------------------
> >  4 files changed, 177 deletions(-)
> >  delete mode 100644 libavfilter/fifo.c
> >
>
> Will apply in a few days unless there are objections.
>
> - Andreas
>
>
This breaks backward compatibility.

Please revert.

Thank's.
Andreas Rheinhardt March 8, 2024, 10:40 a.m. UTC | #3
Muhammad Faiz:
> On Tue, Feb 6, 2024 at 3:58 PM Andreas Rheinhardt <
> andreas.rheinhardt@outlook.com> wrote:
> 
>> Andreas Rheinhardt:
>>> Obsolete since 4ca1fb9d2a91757c8c4c34dd456abf340e3f765f.
>>>
>>> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
>>> ---
>>>  doc/filters.texi         |   9 ---
>>>  libavfilter/Makefile     |   1 -
>>>  libavfilter/allfilters.c |   2 -
>>>  libavfilter/fifo.c       | 165 ---------------------------------------
>>>  4 files changed, 177 deletions(-)
>>>  delete mode 100644 libavfilter/fifo.c
>>>
>>
>> Will apply in a few days unless there are objections.
>>
>> - Andreas
>>
>>
> This breaks backward compatibility.
> 
> Please revert.
> 
> Thank's.

What breaks that can't simply be fixed by removing the (a)fifo filter
from the filterchain?

- Andreas
Muhammad Faiz March 8, 2024, 3:18 p.m. UTC | #4
On Fri, Mar 8, 2024 at 5:40 PM Andreas Rheinhardt <
andreas.rheinhardt@outlook.com> wrote:

> Muhammad Faiz:
> > On Tue, Feb 6, 2024 at 3:58 PM Andreas Rheinhardt <
> > andreas.rheinhardt@outlook.com> wrote:
> >
> >> Andreas Rheinhardt:
> >>> Obsolete since 4ca1fb9d2a91757c8c4c34dd456abf340e3f765f.
> >>>
> >>> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
> >>> ---
> >>>  doc/filters.texi         |   9 ---
> >>>  libavfilter/Makefile     |   1 -
> >>>  libavfilter/allfilters.c |   2 -
> >>>  libavfilter/fifo.c       | 165 ---------------------------------------
> >>>  4 files changed, 177 deletions(-)
> >>>  delete mode 100644 libavfilter/fifo.c
> >>>
> >>
> >> Will apply in a few days unless there are objections.
> >>
> >> - Andreas
> >>
> >>
> > This breaks backward compatibility.
> >
> > Please revert.
> >
> > Thank's.
>
> What breaks that can't simply be fixed by removing the (a)fifo filter
> from the filterchain?
>
> - Andreas
>
>
I use afifo to optimize memory usage.
And backward incompatible change should only be allowed with deprecation
periods and major version bump.

Thank's
Paul B Mahol March 8, 2024, 3:29 p.m. UTC | #5
On Fri, Mar 8, 2024 at 4:18 PM Muhammad Faiz <mfcc64@gmail.com> wrote:

> On Fri, Mar 8, 2024 at 5:40 PM Andreas Rheinhardt <
> andreas.rheinhardt@outlook.com> wrote:
>
> > Muhammad Faiz:
> > > On Tue, Feb 6, 2024 at 3:58 PM Andreas Rheinhardt <
> > > andreas.rheinhardt@outlook.com> wrote:
> > >
> > >> Andreas Rheinhardt:
> > >>> Obsolete since 4ca1fb9d2a91757c8c4c34dd456abf340e3f765f.
> > >>>
> > >>> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
> > >>> ---
> > >>>  doc/filters.texi         |   9 ---
> > >>>  libavfilter/Makefile     |   1 -
> > >>>  libavfilter/allfilters.c |   2 -
> > >>>  libavfilter/fifo.c       | 165
> ---------------------------------------
> > >>>  4 files changed, 177 deletions(-)
> > >>>  delete mode 100644 libavfilter/fifo.c
> > >>>
> > >>
> > >> Will apply in a few days unless there are objections.
> > >>
> > >> - Andreas
> > >>
> > >>
> > > This breaks backward compatibility.
> > >
> > > Please revert.
> > >
> > > Thank's.
> >
> > What breaks that can't simply be fixed by removing the (a)fifo filter
> > from the filterchain?
> >
> > - Andreas
> >
> >
> I use afifo to optimize memory usage.
>

That statement sync with reality is questionable, fifo filters were mainly
used before .activate was added,
for cases filters used >1 inputs. Now they should be irrelevant, unless
there are bugs in code than this filters just hide more bugs.


> And backward incompatible change should only be allowed with deprecation
> periods and major version bump.
>
> Thank's
> _______________________________________________
> 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".
>
Andreas Rheinhardt March 8, 2024, 3:31 p.m. UTC | #6
Muhammad Faiz:
> On Fri, Mar 8, 2024 at 5:40 PM Andreas Rheinhardt <
> andreas.rheinhardt@outlook.com> wrote:
> 
>> Muhammad Faiz:
>>> On Tue, Feb 6, 2024 at 3:58 PM Andreas Rheinhardt <
>>> andreas.rheinhardt@outlook.com> wrote:
>>>
>>>> Andreas Rheinhardt:
>>>>> Obsolete since 4ca1fb9d2a91757c8c4c34dd456abf340e3f765f.
>>>>>
>>>>> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
>>>>> ---
>>>>>  doc/filters.texi         |   9 ---
>>>>>  libavfilter/Makefile     |   1 -
>>>>>  libavfilter/allfilters.c |   2 -
>>>>>  libavfilter/fifo.c       | 165 ---------------------------------------
>>>>>  4 files changed, 177 deletions(-)
>>>>>  delete mode 100644 libavfilter/fifo.c
>>>>>
>>>>
>>>> Will apply in a few days unless there are objections.
>>>>
>>>> - Andreas
>>>>
>>>>
>>> This breaks backward compatibility.
>>>
>>> Please revert.
>>>
>>> Thank's.
>>
>> What breaks that can't simply be fixed by removing the (a)fifo filter
>> from the filterchain?
>>
>> - Andreas
>>
>>
> I use afifo to optimize memory usage.
> And backward incompatible change should only be allowed with deprecation
> periods and major version bump.
> 

Deprecation periods etc. are only common for API breaks; we do not
guarantee that any particular filter etc. stays available and therefore
occasionally remove them without deprecation. Examples of this are the
removal of libopenjpeg in 60ccb3fe787, the removal of libwavpackenc in
45070eec4c or the removal of the XvMC hardware acceleration in
be95df12bb06 (the last commit was accompanied by cefa595361db9 and
b648ece34b6f which deprecated the parts of XvMC that were part of the
public API and therefore subject to the API stability contract).

- Andreas
Muhammad Faiz March 9, 2024, 12:38 a.m. UTC | #7
On Fri, Mar 8, 2024 at 10:46 PM Andreas Rheinhardt <
andreas.rheinhardt@outlook.com> wrote:

> Muhammad Faiz:
> > On Fri, Mar 8, 2024 at 5:40 PM Andreas Rheinhardt <
> > andreas.rheinhardt@outlook.com> wrote:
> >
> >> Muhammad Faiz:
> >>> On Tue, Feb 6, 2024 at 3:58 PM Andreas Rheinhardt <
> >>> andreas.rheinhardt@outlook.com> wrote:
> >>>
> >>>> Andreas Rheinhardt:
> >>>>> Obsolete since 4ca1fb9d2a91757c8c4c34dd456abf340e3f765f.
> >>>>>
> >>>>> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
> >>>>> ---
> >>>>>  doc/filters.texi         |   9 ---
> >>>>>  libavfilter/Makefile     |   1 -
> >>>>>  libavfilter/allfilters.c |   2 -
> >>>>>  libavfilter/fifo.c       | 165
> ---------------------------------------
> >>>>>  4 files changed, 177 deletions(-)
> >>>>>  delete mode 100644 libavfilter/fifo.c
> >>>>>
> >>>>
> >>>> Will apply in a few days unless there are objections.
> >>>>
> >>>> - Andreas
> >>>>
> >>>>
> >>> This breaks backward compatibility.
> >>>
> >>> Please revert.
> >>>
> >>> Thank's.
> >>
> >> What breaks that can't simply be fixed by removing the (a)fifo filter
> >> from the filterchain?
> >>
> >> - Andreas
> >>
> >>
> > I use afifo to optimize memory usage.
> > And backward incompatible change should only be allowed with deprecation
> > periods and major version bump.
> >
>
> Deprecation periods etc. are only common for API breaks; we do not
> guarantee that any particular filter etc. stays available and therefore
> occasionally remove them without deprecation. Examples of this are the
> removal of libopenjpeg in 60ccb3fe787, the removal of libwavpackenc in
> 45070eec4c or the removal of the XvMC hardware acceleration in
> be95df12bb06 (the last commit was accompanied by cefa595361db9 and
> b648ece34b6f which deprecated the parts of XvMC that were part of the
> public API and therefore subject to the API stability contract).
>
> - Andreas
>
>
It seems that all of them are external dependent components. So, I think
that non external dependent components should be treated differently.
Also, what is the urgency of (a)fifo removal?

Thank's
Muhammad Faiz March 9, 2024, 1:08 a.m. UTC | #8
On Fri, Mar 8, 2024 at 10:30 PM Paul B Mahol <onemda@gmail.com> wrote:

> On Fri, Mar 8, 2024 at 4:18 PM Muhammad Faiz <mfcc64@gmail.com> wrote:
>
> > On Fri, Mar 8, 2024 at 5:40 PM Andreas Rheinhardt <
> > andreas.rheinhardt@outlook.com> wrote:
> >
> > > Muhammad Faiz:
> > > > On Tue, Feb 6, 2024 at 3:58 PM Andreas Rheinhardt <
> > > > andreas.rheinhardt@outlook.com> wrote:
> > > >
> > > >> Andreas Rheinhardt:
> > > >>> Obsolete since 4ca1fb9d2a91757c8c4c34dd456abf340e3f765f.
> > > >>>
> > > >>> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
> > > >>> ---
> > > >>>  doc/filters.texi         |   9 ---
> > > >>>  libavfilter/Makefile     |   1 -
> > > >>>  libavfilter/allfilters.c |   2 -
> > > >>>  libavfilter/fifo.c       | 165
> > ---------------------------------------
> > > >>>  4 files changed, 177 deletions(-)
> > > >>>  delete mode 100644 libavfilter/fifo.c
> > > >>>
> > > >>
> > > >> Will apply in a few days unless there are objections.
> > > >>
> > > >> - Andreas
> > > >>
> > > >>
> > > > This breaks backward compatibility.
> > > >
> > > > Please revert.
> > > >
> > > > Thank's.
> > >
> > > What breaks that can't simply be fixed by removing the (a)fifo filter
> > > from the filterchain?
> > >
> > > - Andreas
> > >
> > >
> > I use afifo to optimize memory usage.
> >
>
> That statement sync with reality is questionable, fifo filters were mainly
> used before .activate was added,
> for cases filters used >1 inputs. Now they should be irrelevant, unless
> there are bugs in code than this filters just hide more bugs.
>

Yes, I've used it before .activate was added, and it worked, and still
works.
Although maybe the bugs have been fixed by .activate, what's wrong if
(a)fifo still exist?

Thank's
Paul B Mahol March 9, 2024, 11:10 a.m. UTC | #9
On Sat, Mar 9, 2024 at 2:09 AM Muhammad Faiz <mfcc64@gmail.com> wrote:

> On Fri, Mar 8, 2024 at 10:30 PM Paul B Mahol <onemda@gmail.com> wrote:
>
> > On Fri, Mar 8, 2024 at 4:18 PM Muhammad Faiz <mfcc64@gmail.com> wrote:
> >
> > > On Fri, Mar 8, 2024 at 5:40 PM Andreas Rheinhardt <
> > > andreas.rheinhardt@outlook.com> wrote:
> > >
> > > > Muhammad Faiz:
> > > > > On Tue, Feb 6, 2024 at 3:58 PM Andreas Rheinhardt <
> > > > > andreas.rheinhardt@outlook.com> wrote:
> > > > >
> > > > >> Andreas Rheinhardt:
> > > > >>> Obsolete since 4ca1fb9d2a91757c8c4c34dd456abf340e3f765f.
> > > > >>>
> > > > >>> Signed-off-by: Andreas Rheinhardt <
> andreas.rheinhardt@outlook.com>
> > > > >>> ---
> > > > >>>  doc/filters.texi         |   9 ---
> > > > >>>  libavfilter/Makefile     |   1 -
> > > > >>>  libavfilter/allfilters.c |   2 -
> > > > >>>  libavfilter/fifo.c       | 165
> > > ---------------------------------------
> > > > >>>  4 files changed, 177 deletions(-)
> > > > >>>  delete mode 100644 libavfilter/fifo.c
> > > > >>>
> > > > >>
> > > > >> Will apply in a few days unless there are objections.
> > > > >>
> > > > >> - Andreas
> > > > >>
> > > > >>
> > > > > This breaks backward compatibility.
> > > > >
> > > > > Please revert.
> > > > >
> > > > > Thank's.
> > > >
> > > > What breaks that can't simply be fixed by removing the (a)fifo filter
> > > > from the filterchain?
> > > >
> > > > - Andreas
> > > >
> > > >
> > > I use afifo to optimize memory usage.
> > >
> >
> > That statement sync with reality is questionable, fifo filters were
> mainly
> > used before .activate was added,
> > for cases filters used >1 inputs. Now they should be irrelevant, unless
> > there are bugs in code than this filters just hide more bugs.
> >
>
> Yes, I've used it before .activate was added, and it worked, and still
> works.
> Although maybe the bugs have been fixed by .activate, what's wrong if
> (a)fifo still exist?
>

As already wrote, lets repeat it again, hiding real bugs. Hiding is not
correct word,
it just adds yet another layer in filtergraph to accumulate memory/frames,
with extra allocations per each frame for linking between prev and next
frame.
Which is pointless, as libavfilter internal code already have own queue
mechanism.
Check for which filters used after afifo, afifo count of queued frames
reach > 1 than
such filters needs fixing. Personally, my mpv visualizer modified script is
not using afifo filters, and it works fine.


>
> Thank's
> _______________________________________________
> 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".
>
Andreas Rheinhardt March 9, 2024, 11:59 a.m. UTC | #10
Muhammad Faiz:
> On Fri, Mar 8, 2024 at 10:46 PM Andreas Rheinhardt <
> andreas.rheinhardt@outlook.com> wrote:
> 
>> Muhammad Faiz:
>>> On Fri, Mar 8, 2024 at 5:40 PM Andreas Rheinhardt <
>>> andreas.rheinhardt@outlook.com> wrote:
>>>
>>>> Muhammad Faiz:
>>>>> On Tue, Feb 6, 2024 at 3:58 PM Andreas Rheinhardt <
>>>>> andreas.rheinhardt@outlook.com> wrote:
>>>>>
>>>>>> Andreas Rheinhardt:
>>>>>>> Obsolete since 4ca1fb9d2a91757c8c4c34dd456abf340e3f765f.
>>>>>>>
>>>>>>> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
>>>>>>> ---
>>>>>>>  doc/filters.texi         |   9 ---
>>>>>>>  libavfilter/Makefile     |   1 -
>>>>>>>  libavfilter/allfilters.c |   2 -
>>>>>>>  libavfilter/fifo.c       | 165
>> ---------------------------------------
>>>>>>>  4 files changed, 177 deletions(-)
>>>>>>>  delete mode 100644 libavfilter/fifo.c
>>>>>>>
>>>>>>
>>>>>> Will apply in a few days unless there are objections.
>>>>>>
>>>>>> - Andreas
>>>>>>
>>>>>>
>>>>> This breaks backward compatibility.
>>>>>
>>>>> Please revert.
>>>>>
>>>>> Thank's.
>>>>
>>>> What breaks that can't simply be fixed by removing the (a)fifo filter
>>>> from the filterchain?
>>>>
>>>> - Andreas
>>>>
>>>>
>>> I use afifo to optimize memory usage.
>>> And backward incompatible change should only be allowed with deprecation
>>> periods and major version bump.
>>>
>>
>> Deprecation periods etc. are only common for API breaks; we do not
>> guarantee that any particular filter etc. stays available and therefore
>> occasionally remove them without deprecation. Examples of this are the
>> removal of libopenjpeg in 60ccb3fe787, the removal of libwavpackenc in
>> 45070eec4c or the removal of the XvMC hardware acceleration in
>> be95df12bb06 (the last commit was accompanied by cefa595361db9 and
>> b648ece34b6f which deprecated the parts of XvMC that were part of the
>> public API and therefore subject to the API stability contract).
>>
>> - Andreas
>>
>>
> It seems that all of them are external dependent components. So, I think
> that non external dependent components should be treated differently.
> Also, what is the urgency of (a)fifo removal?
> 

The reason for removing these features is that they have outlived their
usefulness; so have the (a)fifo filters.

- Andreas
Muhammad Faiz March 9, 2024, 10:36 p.m. UTC | #11
On Sat, Mar 9, 2024 at 6:59 PM Andreas Rheinhardt <
andreas.rheinhardt@outlook.com> wrote:

> Muhammad Faiz:
> > On Fri, Mar 8, 2024 at 10:46 PM Andreas Rheinhardt <
> > andreas.rheinhardt@outlook.com> wrote:
> >
> >> Muhammad Faiz:
> >>> On Fri, Mar 8, 2024 at 5:40 PM Andreas Rheinhardt <
> >>> andreas.rheinhardt@outlook.com> wrote:
> >>>
> >>>> Muhammad Faiz:
> >>>>> On Tue, Feb 6, 2024 at 3:58 PM Andreas Rheinhardt <
> >>>>> andreas.rheinhardt@outlook.com> wrote:
> >>>>>
> >>>>>> Andreas Rheinhardt:
> >>>>>>> Obsolete since 4ca1fb9d2a91757c8c4c34dd456abf340e3f765f.
> >>>>>>>
> >>>>>>> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
> >>>>>>> ---
> >>>>>>>  doc/filters.texi         |   9 ---
> >>>>>>>  libavfilter/Makefile     |   1 -
> >>>>>>>  libavfilter/allfilters.c |   2 -
> >>>>>>>  libavfilter/fifo.c       | 165
> >> ---------------------------------------
> >>>>>>>  4 files changed, 177 deletions(-)
> >>>>>>>  delete mode 100644 libavfilter/fifo.c
> >>>>>>>
> >>>>>>
> >>>>>> Will apply in a few days unless there are objections.
> >>>>>>
> >>>>>> - Andreas
> >>>>>>
> >>>>>>
> >>>>> This breaks backward compatibility.
> >>>>>
> >>>>> Please revert.
> >>>>>
> >>>>> Thank's.
> >>>>
> >>>> What breaks that can't simply be fixed by removing the (a)fifo filter
> >>>> from the filterchain?
> >>>>
> >>>> - Andreas
> >>>>
> >>>>
> >>> I use afifo to optimize memory usage.
> >>> And backward incompatible change should only be allowed with
> deprecation
> >>> periods and major version bump.
> >>>
> >>
> >> Deprecation periods etc. are only common for API breaks; we do not
> >> guarantee that any particular filter etc. stays available and therefore
> >> occasionally remove them without deprecation. Examples of this are the
> >> removal of libopenjpeg in 60ccb3fe787, the removal of libwavpackenc in
> >> 45070eec4c or the removal of the XvMC hardware acceleration in
> >> be95df12bb06 (the last commit was accompanied by cefa595361db9 and
> >> b648ece34b6f which deprecated the parts of XvMC that were part of the
> >> public API and therefore subject to the API stability contract).
> >>
> >> - Andreas
> >>
> >>
> > It seems that all of them are external dependent components. So, I think
> > that non external dependent components should be treated differently.
> > Also, what is the urgency of (a)fifo removal?
> >
>
> The reason for removing these features is that they have outlived their
> usefulness; so have the (a)fifo filters.
>
> - Andreas
>

OK

Thank's
Muhammad Faiz March 9, 2024, 10:37 p.m. UTC | #12
On Sat, Mar 9, 2024 at 6:11 PM Paul B Mahol <onemda@gmail.com> wrote:

> On Sat, Mar 9, 2024 at 2:09 AM Muhammad Faiz <mfcc64@gmail.com> wrote:
>
> > On Fri, Mar 8, 2024 at 10:30 PM Paul B Mahol <onemda@gmail.com> wrote:
> >
> > > On Fri, Mar 8, 2024 at 4:18 PM Muhammad Faiz <mfcc64@gmail.com> wrote:
> > >
> > > > On Fri, Mar 8, 2024 at 5:40 PM Andreas Rheinhardt <
> > > > andreas.rheinhardt@outlook.com> wrote:
> > > >
> > > > > Muhammad Faiz:
> > > > > > On Tue, Feb 6, 2024 at 3:58 PM Andreas Rheinhardt <
> > > > > > andreas.rheinhardt@outlook.com> wrote:
> > > > > >
> > > > > >> Andreas Rheinhardt:
> > > > > >>> Obsolete since 4ca1fb9d2a91757c8c4c34dd456abf340e3f765f.
> > > > > >>>
> > > > > >>> Signed-off-by: Andreas Rheinhardt <
> > andreas.rheinhardt@outlook.com>
> > > > > >>> ---
> > > > > >>>  doc/filters.texi         |   9 ---
> > > > > >>>  libavfilter/Makefile     |   1 -
> > > > > >>>  libavfilter/allfilters.c |   2 -
> > > > > >>>  libavfilter/fifo.c       | 165
> > > > ---------------------------------------
> > > > > >>>  4 files changed, 177 deletions(-)
> > > > > >>>  delete mode 100644 libavfilter/fifo.c
> > > > > >>>
> > > > > >>
> > > > > >> Will apply in a few days unless there are objections.
> > > > > >>
> > > > > >> - Andreas
> > > > > >>
> > > > > >>
> > > > > > This breaks backward compatibility.
> > > > > >
> > > > > > Please revert.
> > > > > >
> > > > > > Thank's.
> > > > >
> > > > > What breaks that can't simply be fixed by removing the (a)fifo
> filter
> > > > > from the filterchain?
> > > > >
> > > > > - Andreas
> > > > >
> > > > >
> > > > I use afifo to optimize memory usage.
> > > >
> > >
> > > That statement sync with reality is questionable, fifo filters were
> > mainly
> > > used before .activate was added,
> > > for cases filters used >1 inputs. Now they should be irrelevant, unless
> > > there are bugs in code than this filters just hide more bugs.
> > >
> >
> > Yes, I've used it before .activate was added, and it worked, and still
> > works.
> > Although maybe the bugs have been fixed by .activate, what's wrong if
> > (a)fifo still exist?
> >
>
> As already wrote, lets repeat it again, hiding real bugs. Hiding is not
> correct word,
> it just adds yet another layer in filtergraph to accumulate memory/frames,
> with extra allocations per each frame for linking between prev and next
> frame.
> Which is pointless, as libavfilter internal code already have own queue
> mechanism.
> Check for which filters used after afifo, afifo count of queued frames
> reach > 1 than
> such filters needs fixing. Personally, my mpv visualizer modified script is
> not using afifo filters, and it works fine.
>
>
OK

Thank's
diff mbox series

Patch

diff --git a/doc/filters.texi b/doc/filters.texi
index b9b539acee..e0436a5755 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -14122,15 +14122,6 @@  For example:
 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
 @end example
 
-@section fifo, afifo
-
-Buffer input images and send them when they are requested.
-
-It is mainly useful when auto-inserted by the libavfilter
-framework.
-
-It does not take parameters.
-
 @section fillborders
 
 Fill borders of the input video, without changing video stream dimensions.
diff --git a/libavfilter/Makefile b/libavfilter/Makefile
index bba0219876..f6c1d641d6 100644
--- a/libavfilter/Makefile
+++ b/libavfilter/Makefile
@@ -16,7 +16,6 @@  OBJS = allfilters.o                                                     \
        colorspace.o                                                     \
        ccfifo.o                                                         \
        drawutils.o                                                      \
-       fifo.o                                                           \
        formats.o                                                        \
        framepool.o                                                      \
        framequeue.o                                                     \
diff --git a/libavfilter/allfilters.c b/libavfilter/allfilters.c
index af84aa3d97..149bf50997 100644
--- a/libavfilter/allfilters.c
+++ b/libavfilter/allfilters.c
@@ -611,8 +611,6 @@  extern  const AVFilter ff_asrc_abuffer;
 extern  const AVFilter ff_vsrc_buffer;
 extern  const AVFilter ff_asink_abuffer;
 extern  const AVFilter ff_vsink_buffer;
-extern const AVFilter ff_af_afifo;
-extern const AVFilter ff_vf_fifo;
 
 #include "libavfilter/filter_list.c"
 
diff --git a/libavfilter/fifo.c b/libavfilter/fifo.c
deleted file mode 100644
index 1c7be88ae1..0000000000
--- a/libavfilter/fifo.c
+++ /dev/null
@@ -1,165 +0,0 @@ 
-/*
- * Copyright (c) 2007 Bobby Bingham
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * FFmpeg is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with FFmpeg; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-/**
- * @file
- * FIFO buffering filter
- */
-
-#include "libavutil/common.h"
-#include "libavutil/mathematics.h"
-
-#include "audio.h"
-#include "avfilter.h"
-#include "internal.h"
-
-typedef struct Buf {
-    AVFrame *frame;
-    struct Buf *next;
-} Buf;
-
-typedef struct FifoContext {
-    Buf  root;
-    Buf *last;   ///< last buffered frame
-
-    /**
-     * When a specific number of output samples is requested, the partial
-     * buffer is stored here
-     */
-    AVFrame *out;
-    int allocated_samples;      ///< number of samples out was allocated for
-} FifoContext;
-
-static av_cold int init(AVFilterContext *ctx)
-{
-    FifoContext *s = ctx->priv;
-    s->last = &s->root;
-
-    return 0;
-}
-
-static av_cold void uninit(AVFilterContext *ctx)
-{
-    FifoContext *s = ctx->priv;
-    Buf *buf, *tmp;
-
-    for (buf = s->root.next; buf; buf = tmp) {
-        tmp = buf->next;
-        av_frame_free(&buf->frame);
-        av_free(buf);
-    }
-
-    av_frame_free(&s->out);
-}
-
-static int add_to_queue(AVFilterLink *inlink, AVFrame *frame)
-{
-    FifoContext *s = inlink->dst->priv;
-
-    s->last->next = av_mallocz(sizeof(Buf));
-    if (!s->last->next) {
-        av_frame_free(&frame);
-        return AVERROR(ENOMEM);
-    }
-
-    s->last = s->last->next;
-    s->last->frame = frame;
-
-    return 0;
-}
-
-static void queue_pop(FifoContext *s)
-{
-    Buf *tmp = s->root.next->next;
-    if (s->last == s->root.next)
-        s->last = &s->root;
-    av_freep(&s->root.next);
-    s->root.next = tmp;
-}
-
-static int request_frame(AVFilterLink *outlink)
-{
-    FifoContext *s = outlink->src->priv;
-    int ret = 0;
-
-    if (!s->root.next) {
-        if ((ret = ff_request_frame(outlink->src->inputs[0])) < 0)
-            return ret;
-        if (!s->root.next)
-            return 0;
-    }
-    ret = ff_filter_frame(outlink, s->root.next->frame);
-    queue_pop(s);
-    return ret;
-}
-
-static const AVFilterPad avfilter_vf_fifo_inputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_VIDEO,
-        .filter_frame = add_to_queue,
-    },
-};
-
-static const AVFilterPad avfilter_vf_fifo_outputs[] = {
-    {
-        .name          = "default",
-        .type          = AVMEDIA_TYPE_VIDEO,
-        .request_frame = request_frame,
-    },
-};
-
-const AVFilter ff_vf_fifo = {
-    .name        = "fifo",
-    .description = NULL_IF_CONFIG_SMALL("Buffer input images and send them when they are requested."),
-    .init        = init,
-    .uninit      = uninit,
-    .priv_size   = sizeof(FifoContext),
-    .flags       = AVFILTER_FLAG_METADATA_ONLY,
-    FILTER_INPUTS(avfilter_vf_fifo_inputs),
-    FILTER_OUTPUTS(avfilter_vf_fifo_outputs),
-};
-
-static const AVFilterPad avfilter_af_afifo_inputs[] = {
-    {
-        .name         = "default",
-        .type         = AVMEDIA_TYPE_AUDIO,
-        .filter_frame = add_to_queue,
-    },
-};
-
-static const AVFilterPad avfilter_af_afifo_outputs[] = {
-    {
-        .name          = "default",
-        .type          = AVMEDIA_TYPE_AUDIO,
-        .request_frame = request_frame,
-    },
-};
-
-const AVFilter ff_af_afifo = {
-    .name        = "afifo",
-    .description = NULL_IF_CONFIG_SMALL("Buffer input frames and send them when they are requested."),
-    .init        = init,
-    .uninit      = uninit,
-    .priv_size   = sizeof(FifoContext),
-    .flags       = AVFILTER_FLAG_METADATA_ONLY,
-    FILTER_INPUTS(avfilter_af_afifo_inputs),
-    FILTER_OUTPUTS(avfilter_af_afifo_outputs),
-};