diff mbox series

[FFmpeg-devel] lavc: deprecate avcodec_dct, av_fft, av_dct, av_rdft and av_mdct

Message ID NOVI8Wy--3-9@lynne.ee
State New
Headers show
Series [FFmpeg-devel] lavc: deprecate avcodec_dct, av_fft, av_dct, av_rdft and av_mdct | expand

Checks

Context Check Description
yinshiyou/configure_loongarch64 warning Failed to apply patch
andriy/make_fate_x86 success Make fate finished
andriy/make_x86 warning New warnings during build

Commit Message

Lynne Feb. 17, 2023, 4:54 p.m. UTC
This reverts commit 26cb36f35746fe6ef53688b119852bfa6d555f62.

All filters and all codecs (except wmavoice) have been ported for the
lavu/tx API.

The noise should be minimal.

Patch attached.

Comments

James Almer Feb. 17, 2023, 5:08 p.m. UTC | #1
On 2/17/2023 1:54 PM, Lynne wrote:
> This reverts commit 26cb36f35746fe6ef53688b119852bfa6d555f62.
> 
> All filters and all codecs (except wmavoice) have been ported for the
> lavu/tx API.
> 
> The noise should be minimal.

It isn't. I'm getting more than two thousand lines of warnings after 
applying this patch from

libavfilter/vf_spp.c
libavfilter/x86/vf_spp.c
libavcodec/asvenc.c
libavcodec/avdct.c
libavcodec/avfft.c
libavcodec/dct.c
libavcodec/fdctdsp.c
libavcodec/fft_float.c
libavcodec/fft_init_table.c
libavcodec/idctdsp.c
libavcodec/jfdctfst.c
libavcodec/jfdctint.c
libavcodec/jrevdct.c
libavcodec/mpegaudiodsp.c
libavcodec/mpegvideo_enc.c
libavcodec/rdft.c
libavcodec/wmavoice.c
libavcodec/x86/dct_init.c
libavcodec/x86/fft_init.c
libavcodec/x86/mpegvideoenc.c

It's not just wmavoice, there's also mpeg and jpeg stuff, and one 
filter. For the actual fft/dct/rdft/mdct source files, you should use 
the deprecation warning pragmas to silence them, but the other modules 
need to be ported.
This patch is also missing the schedule FF_API deprecation wrapper.

> 
> Patch attached.
> 
> 
> _______________________________________________
> 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".
Lynne Feb. 17, 2023, 6:45 p.m. UTC | #2
Feb 17, 2023, 18:08 by jamrial@gmail.com:

> On 2/17/2023 1:54 PM, Lynne wrote:
>
>> This reverts commit 26cb36f35746fe6ef53688b119852bfa6d555f62.
>>
>> All filters and all codecs (except wmavoice) have been ported for the
>> lavu/tx API.
>>
>> The noise should be minimal.
>>
>
> It isn't. I'm getting more than two thousand lines of warnings after applying this patch from
>
> libavfilter/vf_spp.c
> libavfilter/x86/vf_spp.c
> libavcodec/asvenc.c
> libavcodec/avdct.c
> libavcodec/avfft.c
> libavcodec/dct.c
> libavcodec/fdctdsp.c
> libavcodec/fft_float.c
> libavcodec/fft_init_table.c
> libavcodec/idctdsp.c
> libavcodec/jfdctfst.c
> libavcodec/jfdctint.c
> libavcodec/jrevdct.c
> libavcodec/mpegaudiodsp.c
> libavcodec/mpegvideo_enc.c
> libavcodec/rdft.c
> libavcodec/wmavoice.c
> libavcodec/x86/dct_init.c
> libavcodec/x86/fft_init.c
> libavcodec/x86/mpegvideoenc.c
>
> It's not just wmavoice, there's also mpeg and jpeg stuff, and one filter. For the actual fft/dct/rdft/mdct source files, you should use the deprecation warning pragmas to silence them, but the other modules need to be ported.
> This patch is also missing the schedule FF_API deprecation wrapper.
>

Is the noise acceptable if I just deprecate the functions?
It wasn't before, but it should be much less now.
Hendrik Leppkes Feb. 17, 2023, 11:59 p.m. UTC | #3
On Fri, Feb 17, 2023 at 7:45 PM Lynne <dev@lynne.ee> wrote:
>
> Feb 17, 2023, 18:08 by jamrial@gmail.com:
>
> > On 2/17/2023 1:54 PM, Lynne wrote:
> >
> >> This reverts commit 26cb36f35746fe6ef53688b119852bfa6d555f62.
> >>
> >> All filters and all codecs (except wmavoice) have been ported for the
> >> lavu/tx API.
> >>
> >> The noise should be minimal.
> >>
> >
> > It isn't. I'm getting more than two thousand lines of warnings after applying this patch from
> >
> > libavfilter/vf_spp.c
> > libavfilter/x86/vf_spp.c
> > libavcodec/asvenc.c
> > libavcodec/avdct.c
> > libavcodec/avfft.c
> > libavcodec/dct.c
> > libavcodec/fdctdsp.c
> > libavcodec/fft_float.c
> > libavcodec/fft_init_table.c
> > libavcodec/idctdsp.c
> > libavcodec/jfdctfst.c
> > libavcodec/jfdctint.c
> > libavcodec/jrevdct.c
> > libavcodec/mpegaudiodsp.c
> > libavcodec/mpegvideo_enc.c
> > libavcodec/rdft.c
> > libavcodec/wmavoice.c
> > libavcodec/x86/dct_init.c
> > libavcodec/x86/fft_init.c
> > libavcodec/x86/mpegvideoenc.c
> >
> > It's not just wmavoice, there's also mpeg and jpeg stuff, and one filter. For the actual fft/dct/rdft/mdct source files, you should use the deprecation warning pragmas to silence them, but the other modules need to be ported.
> > This patch is also missing the schedule FF_API deprecation wrapper.
> >
>
> Is the noise acceptable if I just deprecate the functions?
> It wasn't before, but it should be much less now.

An API we still use internally doesn't seem very deprecated to me.
Should get rid of it, then there won't be any warnings.

- Hendrik
Lynne Feb. 18, 2023, 11:52 a.m. UTC | #4
Feb 18, 2023, 01:00 by h.leppkes@gmail.com:

> On Fri, Feb 17, 2023 at 7:45 PM Lynne <dev@lynne.ee> wrote:
>
>>
>> Feb 17, 2023, 18:08 by jamrial@gmail.com:
>>
>> > On 2/17/2023 1:54 PM, Lynne wrote:
>> >
>> >> This reverts commit 26cb36f35746fe6ef53688b119852bfa6d555f62.
>> >>
>> >> All filters and all codecs (except wmavoice) have been ported for the
>> >> lavu/tx API.
>> >>
>> >> The noise should be minimal.
>> >>
>> >
>> > It isn't. I'm getting more than two thousand lines of warnings after applying this patch from
>> >
>> > libavfilter/vf_spp.c
>> > libavfilter/x86/vf_spp.c
>> > libavcodec/asvenc.c
>> > libavcodec/avdct.c
>> > libavcodec/avfft.c
>> > libavcodec/dct.c
>> > libavcodec/fdctdsp.c
>> > libavcodec/fft_float.c
>> > libavcodec/fft_init_table.c
>> > libavcodec/idctdsp.c
>> > libavcodec/jfdctfst.c
>> > libavcodec/jfdctint.c
>> > libavcodec/jrevdct.c
>> > libavcodec/mpegaudiodsp.c
>> > libavcodec/mpegvideo_enc.c
>> > libavcodec/rdft.c
>> > libavcodec/wmavoice.c
>> > libavcodec/x86/dct_init.c
>> > libavcodec/x86/fft_init.c
>> > libavcodec/x86/mpegvideoenc.c
>> >
>> > It's not just wmavoice, there's also mpeg and jpeg stuff, and one filter. For the actual fft/dct/rdft/mdct source files, you should use the deprecation warning pragmas to silence them, but the other modules need to be ported.
>> > This patch is also missing the schedule FF_API deprecation wrapper.
>> >
>>
>> Is the noise acceptable if I just deprecate the functions?
>> It wasn't before, but it should be much less now.
>>
>
> An API we still use internally doesn't seem very deprecated to me.
> Should get rid of it, then there won't be any warnings.
>

git grep av_fft_init | cut -d ':' -f 1 | uniq
libavcodec/avfft.c
libavcodec/avfft.h
libavcodec/tests/fft.c

git grep av_dct_init | cut -d ':' -f 1 | uniq
libavcodec/avfft.c
libavcodec/avfft.h
libavcodec/tests/fft.c

git grep av_rdft_init | cut -d ':' -f 1 | uniq
fftools/ffplay.c
libavcodec/avfft.c
libavcodec/avfft.h
libavcodec/tests/fft.c

git grep av_mdct_init | cut -d ':' -f 1 | uniq
libavcodec/avfft.c
libavcodec/avfft.h
libavcodec/tests/fft.c

git grep av_tx_init | cut -d ':' -f 1 | uniq
libavcodec/aacdec_template.c
libavcodec/aacenc.c
libavcodec/aacsbr_template.c
libavcodec/ac3dec.c
libavcodec/ac3enc_fixed.c
libavcodec/ac3enc_float.c
libavcodec/atrac1.c
libavcodec/atrac3.c
libavcodec/atrac3plusdec.c
libavcodec/atrac9dec.c
libavcodec/binkaudio.c
libavcodec/cook.c
libavcodec/dca_core.c
libavcodec/dca_lbr.c
libavcodec/dcaenc.c
libavcodec/dolby_e.c
libavcodec/hcadec.c
libavcodec/imc.c
libavcodec/nellymoserdec.c
libavcodec/nellymoserenc.c
libavcodec/on2avc.c
libavcodec/opusdec_celt.c
libavcodec/opusenc.c
libavcodec/opusenc_psy.c
libavcodec/qdm2.c
libavcodec/qdmc.c
libavcodec/siren.c
libavcodec/twinvq.c
libavcodec/vorbisdec.c
libavcodec/vorbisenc.c
libavcodec/wmadec.c
libavcodec/wmaenc.c
libavcodec/wmaprodec.c
libavfilter/af_adrc.c
libavfilter/af_afftdn.c
libavfilter/af_afftfilt.c
libavfilter/af_afir.c
libavfilter/af_apsyclip.c
libavfilter/af_arnndn.c
libavfilter/af_aspectralstats.c
libavfilter/af_atempo.c
libavfilter/af_dialoguenhance.c
libavfilter/af_firequalizer.c
libavfilter/af_headphone.c
libavfilter/af_sofalizer.c
libavfilter/af_superequalizer.c
libavfilter/af_surround.c
libavfilter/afir_template.c
libavfilter/asrc_afirsrc.c
libavfilter/asrc_sinc.c
libavfilter/avf_showcqt.c
libavfilter/avf_showcwt.c
libavfilter/avf_showfreqs.c
libavfilter/avf_showspatial.c
libavfilter/avf_showspectrum.c
libavfilter/vaf_spectrumsynth.c
libavfilter/vf_bm3d.c
libavfilter/vf_convolve.c
libavfilter/vf_fftdnoiz.c
libavfilter/vf_fftfilt.c
libavutil/tx.c
libavutil/tx.h
tests/checkasm/av_tx.c
tests/checkasm/synth_filter.c

...I rest my case. This is getting deprecated as soon as we reach a consensus
on what to mark as deprecated.
Lynne Feb. 18, 2023, 12:49 p.m. UTC | #5
Feb 17, 2023, 19:45 by dev@lynne.ee:

> Feb 17, 2023, 18:08 by jamrial@gmail.com:
>
>> On 2/17/2023 1:54 PM, Lynne wrote:
>>
>>> This reverts commit 26cb36f35746fe6ef53688b119852bfa6d555f62.
>>>
>>> All filters and all codecs (except wmavoice) have been ported for the
>>> lavu/tx API.
>>>
>>> The noise should be minimal.
>>>
>>
>> It isn't. I'm getting more than two thousand lines of warnings after applying this patch from
>>
>> libavfilter/vf_spp.c
>> libavfilter/x86/vf_spp.c
>> libavcodec/asvenc.c
>> libavcodec/avdct.c
>> libavcodec/avfft.c
>> libavcodec/dct.c
>> libavcodec/fdctdsp.c
>> libavcodec/fft_float.c
>> libavcodec/fft_init_table.c
>> libavcodec/idctdsp.c
>> libavcodec/jfdctfst.c
>> libavcodec/jfdctint.c
>> libavcodec/jrevdct.c
>> libavcodec/mpegaudiodsp.c
>> libavcodec/mpegvideo_enc.c
>> libavcodec/rdft.c
>> libavcodec/wmavoice.c
>> libavcodec/x86/dct_init.c
>> libavcodec/x86/fft_init.c
>> libavcodec/x86/mpegvideoenc.c
>>
>> It's not just wmavoice, there's also mpeg and jpeg stuff, and one filter. For the actual fft/dct/rdft/mdct source files, you should use the deprecation warning pragmas to silence them, but the other modules need to be ported.
>> This patch is also missing the schedule FF_API deprecation wrapper.
>>
>
> Is the noise acceptable if I just deprecate the functions?
> It wasn't before, but it should be much less now.
>

Version 2 attached.
Deprecates only the init functions (which must always be used, therefore
the entire API is deprecated).
Included FF_API defines, and bumped minor.
James Almer Feb. 18, 2023, 1:15 p.m. UTC | #6
On 2/18/2023 8:52 AM, Lynne wrote:
> Feb 18, 2023, 01:00 by h.leppkes@gmail.com:
> 
>> On Fri, Feb 17, 2023 at 7:45 PM Lynne <dev@lynne.ee> wrote:
>>
>>>
>>> Feb 17, 2023, 18:08 by jamrial@gmail.com:
>>>
>>>> On 2/17/2023 1:54 PM, Lynne wrote:
>>>>
>>>>> This reverts commit 26cb36f35746fe6ef53688b119852bfa6d555f62.
>>>>>
>>>>> All filters and all codecs (except wmavoice) have been ported for the
>>>>> lavu/tx API.
>>>>>
>>>>> The noise should be minimal.
>>>>>
>>>>
>>>> It isn't. I'm getting more than two thousand lines of warnings after applying this patch from
>>>>
>>>> libavfilter/vf_spp.c
>>>> libavfilter/x86/vf_spp.c
>>>> libavcodec/asvenc.c
>>>> libavcodec/avdct.c
>>>> libavcodec/avfft.c
>>>> libavcodec/dct.c
>>>> libavcodec/fdctdsp.c
>>>> libavcodec/fft_float.c
>>>> libavcodec/fft_init_table.c
>>>> libavcodec/idctdsp.c
>>>> libavcodec/jfdctfst.c
>>>> libavcodec/jfdctint.c
>>>> libavcodec/jrevdct.c
>>>> libavcodec/mpegaudiodsp.c
>>>> libavcodec/mpegvideo_enc.c
>>>> libavcodec/rdft.c
>>>> libavcodec/wmavoice.c
>>>> libavcodec/x86/dct_init.c
>>>> libavcodec/x86/fft_init.c
>>>> libavcodec/x86/mpegvideoenc.c
>>>>
>>>> It's not just wmavoice, there's also mpeg and jpeg stuff, and one filter. For the actual fft/dct/rdft/mdct source files, you should use the deprecation warning pragmas to silence them, but the other modules need to be ported.
>>>> This patch is also missing the schedule FF_API deprecation wrapper.
>>>>
>>>
>>> Is the noise acceptable if I just deprecate the functions?
>>> It wasn't before, but it should be much less now.
>>>
>>
>> An API we still use internally doesn't seem very deprecated to me.
>> Should get rid of it, then there won't be any warnings.
>>
> 
> git grep av_fft_init | cut -d ':' -f 1 | uniq
> libavcodec/avfft.c
> libavcodec/avfft.h
> libavcodec/tests/fft.c
> 
> git grep av_dct_init | cut -d ':' -f 1 | uniq
> libavcodec/avfft.c
> libavcodec/avfft.h
> libavcodec/tests/fft.c
> 
> git grep av_rdft_init | cut -d ':' -f 1 | uniq
> fftools/ffplay.c
> libavcodec/avfft.c
> libavcodec/avfft.h
> libavcodec/tests/fft.c
> 
> git grep av_mdct_init | cut -d ':' -f 1 | uniq
> libavcodec/avfft.c
> libavcodec/avfft.h
> libavcodec/tests/fft.c
> 
> git grep av_tx_init | cut -d ':' -f 1 | uniq
> libavcodec/aacdec_template.c
> libavcodec/aacenc.c
> libavcodec/aacsbr_template.c
> libavcodec/ac3dec.c
> libavcodec/ac3enc_fixed.c
> libavcodec/ac3enc_float.c
> libavcodec/atrac1.c
> libavcodec/atrac3.c
> libavcodec/atrac3plusdec.c
> libavcodec/atrac9dec.c
> libavcodec/binkaudio.c
> libavcodec/cook.c
> libavcodec/dca_core.c
> libavcodec/dca_lbr.c
> libavcodec/dcaenc.c
> libavcodec/dolby_e.c
> libavcodec/hcadec.c
> libavcodec/imc.c
> libavcodec/nellymoserdec.c
> libavcodec/nellymoserenc.c
> libavcodec/on2avc.c
> libavcodec/opusdec_celt.c
> libavcodec/opusenc.c
> libavcodec/opusenc_psy.c
> libavcodec/qdm2.c
> libavcodec/qdmc.c
> libavcodec/siren.c
> libavcodec/twinvq.c
> libavcodec/vorbisdec.c
> libavcodec/vorbisenc.c
> libavcodec/wmadec.c
> libavcodec/wmaenc.c
> libavcodec/wmaprodec.c
> libavfilter/af_adrc.c
> libavfilter/af_afftdn.c
> libavfilter/af_afftfilt.c
> libavfilter/af_afir.c
> libavfilter/af_apsyclip.c
> libavfilter/af_arnndn.c
> libavfilter/af_aspectralstats.c
> libavfilter/af_atempo.c
> libavfilter/af_dialoguenhance.c
> libavfilter/af_firequalizer.c
> libavfilter/af_headphone.c
> libavfilter/af_sofalizer.c
> libavfilter/af_superequalizer.c
> libavfilter/af_surround.c
> libavfilter/afir_template.c
> libavfilter/asrc_afirsrc.c
> libavfilter/asrc_sinc.c
> libavfilter/avf_showcqt.c
> libavfilter/avf_showcwt.c
> libavfilter/avf_showfreqs.c
> libavfilter/avf_showspatial.c
> libavfilter/avf_showspectrum.c
> libavfilter/vaf_spectrumsynth.c
> libavfilter/vf_bm3d.c
> libavfilter/vf_convolve.c
> libavfilter/vf_fftdnoiz.c
> libavfilter/vf_fftfilt.c
> libavutil/tx.c
> libavutil/tx.h
> tests/checkasm/av_tx.c
> tests/checkasm/synth_filter.c
> 
> ...I rest my case. This is getting deprecated as soon as we reach a consensus
> on what to mark as deprecated.

git grep avcodec_dct_init | cut -d ':' -f 1 | uniq
doc/APIchanges
libavcodec/avdct.c
libavcodec/avdct.h
libavfilter/vf_spp.c

Also, just deprecate the functions, not the structs. Said structs are 
being used in places like wmavoice and mpegaudiodsp using the internal 
versions of this API. so if you intention is to remove the entire 
fft/dct/rdft/mdct code from lavc, not just the public interface, then 
they need to be ported to lavu tx eventually.
You also need to silence the warnings in the tests with the 
FF_{ENA,DISA}BLE_DEPRECATION_WARNINGS pragmas, and add a new FF_API_ 
deprecation wrapper where corresponds.
James Almer Feb. 18, 2023, 1:32 p.m. UTC | #7
On 2/18/2023 9:49 AM, Lynne wrote:
> Feb 17, 2023, 19:45 by dev@lynne.ee:
> 
>> Feb 17, 2023, 18:08 by jamrial@gmail.com:
>>
>>> On 2/17/2023 1:54 PM, Lynne wrote:
>>>
>>>> This reverts commit 26cb36f35746fe6ef53688b119852bfa6d555f62.
>>>>
>>>> All filters and all codecs (except wmavoice) have been ported for the
>>>> lavu/tx API.
>>>>
>>>> The noise should be minimal.
>>>>
>>>
>>> It isn't. I'm getting more than two thousand lines of warnings after applying this patch from
>>>
>>> libavfilter/vf_spp.c
>>> libavfilter/x86/vf_spp.c
>>> libavcodec/asvenc.c
>>> libavcodec/avdct.c
>>> libavcodec/avfft.c
>>> libavcodec/dct.c
>>> libavcodec/fdctdsp.c
>>> libavcodec/fft_float.c
>>> libavcodec/fft_init_table.c
>>> libavcodec/idctdsp.c
>>> libavcodec/jfdctfst.c
>>> libavcodec/jfdctint.c
>>> libavcodec/jrevdct.c
>>> libavcodec/mpegaudiodsp.c
>>> libavcodec/mpegvideo_enc.c
>>> libavcodec/rdft.c
>>> libavcodec/wmavoice.c
>>> libavcodec/x86/dct_init.c
>>> libavcodec/x86/fft_init.c
>>> libavcodec/x86/mpegvideoenc.c
>>>
>>> It's not just wmavoice, there's also mpeg and jpeg stuff, and one filter. For the actual fft/dct/rdft/mdct source files, you should use the deprecation warning pragmas to silence them, but the other modules need to be ported.
>>> This patch is also missing the schedule FF_API deprecation wrapper.
>>>
>>
>> Is the noise acceptable if I just deprecate the functions?
>> It wasn't before, but it should be much less now.
>>
> 
> Version 2 attached.
> Deprecates only the init functions (which must always be used, therefore
> the entire API is deprecated).

You should deprecate all the functions, not just the init ones, even if 
the rest depend on them. And add a "@deprecated use AVTXContext from 
libavutil/tx.h" line or similar in the doxy for at least the init or 
alloc functions to point library users to the replacement API.

> Included FF_API defines, and bumped minor.
> 
> 
> _______________________________________________
> 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".
Lynne Feb. 18, 2023, 1:45 p.m. UTC | #8
Feb 18, 2023, 14:32 by jamrial@gmail.com:

> On 2/18/2023 9:49 AM, Lynne wrote:
>
>> Feb 17, 2023, 19:45 by dev@lynne.ee:
>>
>>> Feb 17, 2023, 18:08 by jamrial@gmail.com:
>>>
>>>> On 2/17/2023 1:54 PM, Lynne wrote:
>>>>
>>>>> This reverts commit 26cb36f35746fe6ef53688b119852bfa6d555f62.
>>>>>
>>>>> All filters and all codecs (except wmavoice) have been ported for the
>>>>> lavu/tx API.
>>>>>
>>>>> The noise should be minimal.
>>>>>
>>>>
>>>> It isn't. I'm getting more than two thousand lines of warnings after applying this patch from
>>>>
>>>> libavfilter/vf_spp.c
>>>> libavfilter/x86/vf_spp.c
>>>> libavcodec/asvenc.c
>>>> libavcodec/avdct.c
>>>> libavcodec/avfft.c
>>>> libavcodec/dct.c
>>>> libavcodec/fdctdsp.c
>>>> libavcodec/fft_float.c
>>>> libavcodec/fft_init_table.c
>>>> libavcodec/idctdsp.c
>>>> libavcodec/jfdctfst.c
>>>> libavcodec/jfdctint.c
>>>> libavcodec/jrevdct.c
>>>> libavcodec/mpegaudiodsp.c
>>>> libavcodec/mpegvideo_enc.c
>>>> libavcodec/rdft.c
>>>> libavcodec/wmavoice.c
>>>> libavcodec/x86/dct_init.c
>>>> libavcodec/x86/fft_init.c
>>>> libavcodec/x86/mpegvideoenc.c
>>>>
>>>> It's not just wmavoice, there's also mpeg and jpeg stuff, and one filter. For the actual fft/dct/rdft/mdct source files, you should use the deprecation warning pragmas to silence them, but the other modules need to be ported.
>>>> This patch is also missing the schedule FF_API deprecation wrapper.
>>>>
>>>
>>> Is the noise acceptable if I just deprecate the functions?
>>> It wasn't before, but it should be much less now.
>>>
>>
>> Version 2 attached.
>> Deprecates only the init functions (which must always be used, therefore
>> the entire API is deprecated).
>>
>
> You should deprecate all the functions, not just the init ones, even if the rest depend on them. And add a "@deprecated use AVTXContext from libavutil/tx.h" line or similar in the doxy for at least the init or alloc functions to point library users to the replacement API.
>

Fair enough, deprecated all functions, added disable/enable warnings to tests
and vf_spp, and added the doxy note.
Attached v3.
James Almer Feb. 18, 2023, 1:58 p.m. UTC | #9
On 2/18/2023 10:45 AM, Lynne wrote:
> Feb 18, 2023, 14:32 by jamrial@gmail.com:
> 
>> On 2/18/2023 9:49 AM, Lynne wrote:
>>
>>> Feb 17, 2023, 19:45 by dev@lynne.ee:
>>>
>>>> Feb 17, 2023, 18:08 by jamrial@gmail.com:
>>>>
>>>>> On 2/17/2023 1:54 PM, Lynne wrote:
>>>>>
>>>>>> This reverts commit 26cb36f35746fe6ef53688b119852bfa6d555f62.
>>>>>>
>>>>>> All filters and all codecs (except wmavoice) have been ported for the
>>>>>> lavu/tx API.
>>>>>>
>>>>>> The noise should be minimal.
>>>>>>
>>>>>
>>>>> It isn't. I'm getting more than two thousand lines of warnings after applying this patch from
>>>>>
>>>>> libavfilter/vf_spp.c
>>>>> libavfilter/x86/vf_spp.c
>>>>> libavcodec/asvenc.c
>>>>> libavcodec/avdct.c
>>>>> libavcodec/avfft.c
>>>>> libavcodec/dct.c
>>>>> libavcodec/fdctdsp.c
>>>>> libavcodec/fft_float.c
>>>>> libavcodec/fft_init_table.c
>>>>> libavcodec/idctdsp.c
>>>>> libavcodec/jfdctfst.c
>>>>> libavcodec/jfdctint.c
>>>>> libavcodec/jrevdct.c
>>>>> libavcodec/mpegaudiodsp.c
>>>>> libavcodec/mpegvideo_enc.c
>>>>> libavcodec/rdft.c
>>>>> libavcodec/wmavoice.c
>>>>> libavcodec/x86/dct_init.c
>>>>> libavcodec/x86/fft_init.c
>>>>> libavcodec/x86/mpegvideoenc.c
>>>>>
>>>>> It's not just wmavoice, there's also mpeg and jpeg stuff, and one filter. For the actual fft/dct/rdft/mdct source files, you should use the deprecation warning pragmas to silence them, but the other modules need to be ported.
>>>>> This patch is also missing the schedule FF_API deprecation wrapper.
>>>>>
>>>>
>>>> Is the noise acceptable if I just deprecate the functions?
>>>> It wasn't before, but it should be much less now.
>>>>
>>>
>>> Version 2 attached.
>>> Deprecates only the init functions (which must always be used, therefore
>>> the entire API is deprecated).
>>>
>>
>> You should deprecate all the functions, not just the init ones, even if the rest depend on them. And add a "@deprecated use AVTXContext from libavutil/tx.h" line or similar in the doxy for at least the init or alloc functions to point library users to the replacement API.
>>
> 
> Fair enough, deprecated all functions, added disable/enable warnings to tests
> and vf_spp, and added the doxy note.
> Attached v3.

vf_spp should be ported to tx, not the avdct functions silenced. You're 
just scheduling a compilation failure as is.

What is the plan for the internal version of all this lavc code? Is it 
going to be removed and wmavoice/mpegaudiodsp/etc ported to tx? Because 
it depends on structs defined in the public headers you're scheduling to 
be removed.
Lynne Feb. 18, 2023, 2:53 p.m. UTC | #10
Feb 18, 2023, 14:58 by jamrial@gmail.com:

> On 2/18/2023 10:45 AM, Lynne wrote:
>
>> Feb 18, 2023, 14:32 by jamrial@gmail.com:
>>
>>> On 2/18/2023 9:49 AM, Lynne wrote:
>>>
>>>> Feb 17, 2023, 19:45 by dev@lynne.ee:
>>>>
>>>>> Feb 17, 2023, 18:08 by jamrial@gmail.com:
>>>>>
>>>>>> On 2/17/2023 1:54 PM, Lynne wrote:
>>>>>>
>>>>>>> This reverts commit 26cb36f35746fe6ef53688b119852bfa6d555f62.
>>>>>>>
>>>>>>> All filters and all codecs (except wmavoice) have been ported for the
>>>>>>> lavu/tx API.
>>>>>>>
>>>>>>> The noise should be minimal.
>>>>>>>
>>>>>>
>>>>>> It isn't. I'm getting more than two thousand lines of warnings after applying this patch from
>>>>>>
>>>>>> libavfilter/vf_spp.c
>>>>>> libavfilter/x86/vf_spp.c
>>>>>> libavcodec/asvenc.c
>>>>>> libavcodec/avdct.c
>>>>>> libavcodec/avfft.c
>>>>>> libavcodec/dct.c
>>>>>> libavcodec/fdctdsp.c
>>>>>> libavcodec/fft_float.c
>>>>>> libavcodec/fft_init_table.c
>>>>>> libavcodec/idctdsp.c
>>>>>> libavcodec/jfdctfst.c
>>>>>> libavcodec/jfdctint.c
>>>>>> libavcodec/jrevdct.c
>>>>>> libavcodec/mpegaudiodsp.c
>>>>>> libavcodec/mpegvideo_enc.c
>>>>>> libavcodec/rdft.c
>>>>>> libavcodec/wmavoice.c
>>>>>> libavcodec/x86/dct_init.c
>>>>>> libavcodec/x86/fft_init.c
>>>>>> libavcodec/x86/mpegvideoenc.c
>>>>>>
>>>>>> It's not just wmavoice, there's also mpeg and jpeg stuff, and one filter. For the actual fft/dct/rdft/mdct source files, you should use the deprecation warning pragmas to silence them, but the other modules need to be ported.
>>>>>> This patch is also missing the schedule FF_API deprecation wrapper.
>>>>>>
>>>>>
>>>>> Is the noise acceptable if I just deprecate the functions?
>>>>> It wasn't before, but it should be much less now.
>>>>>
>>>>
>>>> Version 2 attached.
>>>> Deprecates only the init functions (which must always be used, therefore
>>>> the entire API is deprecated).
>>>>
>>>
>>> You should deprecate all the functions, not just the init ones, even if the rest depend on them. And add a "@deprecated use AVTXContext from libavutil/tx.h" line or similar in the doxy for at least the init or alloc functions to point library users to the replacement API.
>>>
>>
>> Fair enough, deprecated all functions, added disable/enable warnings to tests
>> and vf_spp, and added the doxy note.
>> Attached v3.
>>
>
> vf_spp should be ported to tx, not the avdct functions silenced. You're just scheduling a compilation failure as is.
>

There's enough time to port it, a whole year in fact.


> What is the plan for the internal version of all this lavc code? Is it going to be removed and wmavoice/mpegaudiodsp/etc ported to tx? Because it depends on structs defined in the public headers you're scheduling to be removed.
>

Yes, all internals will be removed when I port wmavoice.
I have a DST-I and a DCT-I ready, but they're naive.
They're still fast enough for wmavoice, but I went down
looking for a faster way...
Lynne Feb. 19, 2023, 6:47 p.m. UTC | #11
Feb 18, 2023, 15:53 by dev@lynne.ee:

> Feb 18, 2023, 14:58 by jamrial@gmail.com:
>
>> On 2/18/2023 10:45 AM, Lynne wrote:
>>
>>> Feb 18, 2023, 14:32 by jamrial@gmail.com:
>>>
>>>> On 2/18/2023 9:49 AM, Lynne wrote:
>>>>
>>>>> Feb 17, 2023, 19:45 by dev@lynne.ee:
>>>>>
>>>>>> Feb 17, 2023, 18:08 by jamrial@gmail.com:
>>>>>>
>>>>>>> On 2/17/2023 1:54 PM, Lynne wrote:
>>>>>>>
>>>>>>>> This reverts commit 26cb36f35746fe6ef53688b119852bfa6d555f62.
>>>>>>>>
>>>>>>>> All filters and all codecs (except wmavoice) have been ported for the
>>>>>>>> lavu/tx API.
>>>>>>>>
>>>>>>>> The noise should be minimal.
>>>>>>>>
>>>>>>>
>>>>>>> It isn't. I'm getting more than two thousand lines of warnings after applying this patch from
>>>>>>>
>>>>>>> libavfilter/vf_spp.c
>>>>>>> libavfilter/x86/vf_spp.c
>>>>>>> libavcodec/asvenc.c
>>>>>>> libavcodec/avdct.c
>>>>>>> libavcodec/avfft.c
>>>>>>> libavcodec/dct.c
>>>>>>> libavcodec/fdctdsp.c
>>>>>>> libavcodec/fft_float.c
>>>>>>> libavcodec/fft_init_table.c
>>>>>>> libavcodec/idctdsp.c
>>>>>>> libavcodec/jfdctfst.c
>>>>>>> libavcodec/jfdctint.c
>>>>>>> libavcodec/jrevdct.c
>>>>>>> libavcodec/mpegaudiodsp.c
>>>>>>> libavcodec/mpegvideo_enc.c
>>>>>>> libavcodec/rdft.c
>>>>>>> libavcodec/wmavoice.c
>>>>>>> libavcodec/x86/dct_init.c
>>>>>>> libavcodec/x86/fft_init.c
>>>>>>> libavcodec/x86/mpegvideoenc.c
>>>>>>>
>>>>>>> It's not just wmavoice, there's also mpeg and jpeg stuff, and one filter. For the actual fft/dct/rdft/mdct source files, you should use the deprecation warning pragmas to silence them, but the other modules need to be ported.
>>>>>>> This patch is also missing the schedule FF_API deprecation wrapper.
>>>>>>>
>>>>>>
>>>>>> Is the noise acceptable if I just deprecate the functions?
>>>>>> It wasn't before, but it should be much less now.
>>>>>>
>>>>>
>>>>> Version 2 attached.
>>>>> Deprecates only the init functions (which must always be used, therefore
>>>>> the entire API is deprecated).
>>>>>
>>>>
>>>> You should deprecate all the functions, not just the init ones, even if the rest depend on them. And add a "@deprecated use AVTXContext from libavutil/tx.h" line or similar in the doxy for at least the init or alloc functions to point library users to the replacement API.
>>>>
>>>
>>> Fair enough, deprecated all functions, added disable/enable warnings to tests
>>> and vf_spp, and added the doxy note.
>>> Attached v3.
>>>
>>
>> vf_spp should be ported to tx, not the avdct functions silenced. You're just scheduling a compilation failure as is.
>>
>
> There's enough time to port it, a whole year in fact.
>
>
>> What is the plan for the internal version of all this lavc code? Is it going to be removed and wmavoice/mpegaudiodsp/etc ported to tx? Because it depends on structs defined in the public headers you're scheduling to be removed.
>>
>
> Yes, all internals will be removed when I port wmavoice.
> I have a DST-I and a DCT-I ready, but they're naive.
> They're still fast enough for wmavoice, but I went down
> looking for a faster way...
>

Ping. This should go in before the bump.
Anton Khirnov Feb. 20, 2023, 3:34 p.m. UTC | #12
Quoting Lynne (2023-02-18 15:53:32)
> Feb 18, 2023, 14:58 by jamrial@gmail.com:
> > vf_spp should be ported to tx, not the avdct functions silenced. You're just scheduling a compilation failure as is.
> There's enough time to port it, a whole year in fact.

Past experience shows that it never works like this. It's either ported
now or you're forcing somebody else to do it before the next bump.
I vastly prefer the former.
Lynne Feb. 20, 2023, 5:18 p.m. UTC | #13
Feb 20, 2023, 16:34 by anton@khirnov.net:

> Quoting Lynne (2023-02-18 15:53:32)
>
>> Feb 18, 2023, 14:58 by jamrial@gmail.com:
>> > vf_spp should be ported to tx, not the avdct functions silenced. You're just scheduling a compilation failure as is.
>> There's enough time to port it, a whole year in fact.
>>
>
> Past experience shows that it never works like this. It's either ported
> now or you're forcing somebody else to do it before the next bump.
> I vastly prefer the former.
>

You haven't even looked at the API, have you?
I'm going to be the one to fix it.
I still intend to push this before the release is made.
Anton Khirnov Feb. 20, 2023, 5:22 p.m. UTC | #14
Quoting Lynne (2023-02-20 18:18:40)
> Feb 20, 2023, 16:34 by anton@khirnov.net:
> 
> > Quoting Lynne (2023-02-18 15:53:32)
> >
> >> Feb 18, 2023, 14:58 by jamrial@gmail.com:
> >> > vf_spp should be ported to tx, not the avdct functions silenced. You're just scheduling a compilation failure as is.
> >> There's enough time to port it, a whole year in fact.
> >>
> >
> > Past experience shows that it never works like this. It's either ported
> > now or you're forcing somebody else to do it before the next bump.
> > I vastly prefer the former.
> >
> 
> You haven't even looked at the API, have you?
> I'm going to be the one to fix it.
> I still intend to push this before the release is made.

The release was branched already. No API changes can be made in the
release branch.
Lynne Feb. 20, 2023, 5:35 p.m. UTC | #15
Feb 20, 2023, 18:23 by anton@khirnov.net:

> Quoting Lynne (2023-02-20 18:18:40)
>
>> Feb 20, 2023, 16:34 by anton@khirnov.net:
>>
>> > Quoting Lynne (2023-02-18 15:53:32)
>> >
>> >> Feb 18, 2023, 14:58 by jamrial@gmail.com:
>> >> > vf_spp should be ported to tx, not the avdct functions silenced. You're just scheduling a compilation failure as is.
>> >> There's enough time to port it, a whole year in fact.
>> >>
>> >
>> > Past experience shows that it never works like this. It's either ported
>> > now or you're forcing somebody else to do it before the next bump.
>> > I vastly prefer the former.
>> >
>>
>> You haven't even looked at the API, have you?
>> I'm going to be the one to fix it.
>> I still intend to push this before the release is made.
>>
>
> The release was branched already. No API changes can be made in the
> release branch.
>

It's a deprecation, not an API change, Michael already said it's fine.
diff mbox series

Patch

From 5459ae39a729c69939de65392373d4f9cdf47246 Mon Sep 17 00:00:00 2001
From: Lynne <dev@lynne.ee>
Date: Fri, 17 Feb 2023 17:51:51 +0100
Subject: [PATCH] lavc: deprecate avcodec_dct, av_fft, av_dct, av_rdft and
 av_mdct

This reverts commit 26cb36f35746fe6ef53688b119852bfa6d555f62.
---
 doc/APIchanges     |  4 ++++
 libavcodec/avdct.h |  7 ++++++-
 libavcodec/avfft.h | 39 ++++++++++++++++++++++++++++++++-------
 3 files changed, 42 insertions(+), 8 deletions(-)

diff --git a/doc/APIchanges b/doc/APIchanges
index 29161e30bf..6536315fc2 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -2,6 +2,10 @@  The last version increases of all libraries were on 2023-02-09
 
 API changes, most recent first:
 
+2023-02-17 - xxxxxxxxxx - lavc 60.2.100 - avdct.h avfft.h
+  Deprecate avcodec_dct, av_dct, av_rdft, av_fft and av_mdct.
+  Replaced by libavutil/tx.h
+
 2023-02-16 - xxxxxxxxxx - lavf 60.2.100 - avformat.h
   Deprecate AVFormatContext io_close callback.
   The superior io_close2 callback should be used instead.
diff --git a/libavcodec/avdct.h b/libavcodec/avdct.h
index 6411fab6f6..06da0e80d4 100644
--- a/libavcodec/avdct.h
+++ b/libavcodec/avdct.h
@@ -19,6 +19,7 @@ 
 #ifndef AVCODEC_AVDCT_H
 #define AVCODEC_AVDCT_H
 
+#include "libavutil/attributes.h"
 #include "libavutil/opt.h"
 
 /**
@@ -26,7 +27,7 @@ 
  * @note function pointers can be NULL if the specific features have been
  *       disabled at build time.
  */
-typedef struct AVDCT {
+typedef struct attribute_deprecated AVDCT {
     const AVClass *av_class;
 
     void (*idct)(int16_t *block /* align 16 */);
@@ -80,9 +81,13 @@  typedef struct AVDCT {
  *
  * To free it use av_free()
  */
+attribute_deprecated
 AVDCT *avcodec_dct_alloc(void);
+
+attribute_deprecated
 int avcodec_dct_init(AVDCT *);
 
+attribute_deprecated
 const AVClass *avcodec_dct_get_class(void);
 
 #endif /* AVCODEC_AVDCT_H */
diff --git a/libavcodec/avfft.h b/libavcodec/avfft.h
index 0c0f9b8d8d..d49bc98a29 100644
--- a/libavcodec/avfft.h
+++ b/libavcodec/avfft.h
@@ -19,6 +19,8 @@ 
 #ifndef AVCODEC_AVFFT_H
 #define AVCODEC_AVFFT_H
 
+#include "libavutil/attributes.h"
+
 /**
  * @file
  * @ingroup lavc_fft
@@ -32,65 +34,83 @@ 
  * @{
  */
 
-typedef float FFTSample;
+typedef float attribute_deprecated FFTSample;
 
-typedef struct FFTComplex {
+typedef struct attribute_deprecated FFTComplex {
     FFTSample re, im;
 } FFTComplex;
 
-typedef struct FFTContext FFTContext;
+typedef struct attribute_deprecated FFTContext FFTContext;
 
 /**
  * Set up a complex FFT.
  * @param nbits           log2 of the length of the input array
  * @param inverse         if 0 perform the forward transform, if 1 perform the inverse
  */
+attribute_deprecated
 FFTContext *av_fft_init(int nbits, int inverse);
 
 /**
  * Do the permutation needed BEFORE calling ff_fft_calc().
  */
+attribute_deprecated
 void av_fft_permute(FFTContext *s, FFTComplex *z);
 
 /**
  * Do a complex FFT with the parameters defined in av_fft_init(). The
  * input data must be permuted before. No 1.0/sqrt(n) normalization is done.
  */
+attribute_deprecated
 void av_fft_calc(FFTContext *s, FFTComplex *z);
 
+attribute_deprecated
 void av_fft_end(FFTContext *s);
 
+attribute_deprecated
 FFTContext *av_mdct_init(int nbits, int inverse, double scale);
+
+attribute_deprecated
 void av_imdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input);
+
+attribute_deprecated
 void av_imdct_half(FFTContext *s, FFTSample *output, const FFTSample *input);
+
+attribute_deprecated
 void av_mdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input);
+
+attribute_deprecated
 void av_mdct_end(FFTContext *s);
 
 /* Real Discrete Fourier Transform */
 
-enum RDFTransformType {
+enum attribute_deprecated RDFTransformType {
     DFT_R2C,
     IDFT_C2R,
     IDFT_R2C,
     DFT_C2R,
 };
 
-typedef struct RDFTContext RDFTContext;
+typedef struct attribute_deprecated RDFTContext RDFTContext;
 
 /**
  * Set up a real FFT.
  * @param nbits           log2 of the length of the input array
  * @param trans           the type of transform
  */
+attribute_deprecated
 RDFTContext *av_rdft_init(int nbits, enum RDFTransformType trans);
+
+attribute_deprecated
 void av_rdft_calc(RDFTContext *s, FFTSample *data);
+
+attribute_deprecated
 void av_rdft_end(RDFTContext *s);
 
 /* Discrete Cosine Transform */
 
-typedef struct DCTContext DCTContext;
+typedef struct attribute_deprecated DCTContext DCTContext;
 
-enum DCTTransformType {
+enum attribute_deprecated DCTTransformType {
     DCT_II = 0,
     DCT_III,
     DCT_I,
@@ -107,8 +127,13 @@  enum DCTTransformType {
  *
  * @note the first element of the input of DST-I is ignored
  */
+attribute_deprecated
 DCTContext *av_dct_init(int nbits, enum DCTTransformType type);
+
+attribute_deprecated
 void av_dct_calc(DCTContext *s, FFTSample *data);
+
+attribute_deprecated
 void av_dct_end (DCTContext *s);
 
 /**
-- 
2.39.2