On 04.08.2015 07:57, Reimar Döffinger wrote: > I do have on more proposal, but the problem is it needs someone to do the > work. > For each removed feature, prepare documentation "a monkey could follow" on how > to replace it (you could call it a transition guide). > Even better, a script that automates it where reasonable.
I think this is a very good idea. > In some cases it is just a matter of copy-pasting some existing wrapper code, > particularly if we remove that wrapper code it is useful if people still have > it available in the new release. > If it's just a few hours of someone's time who even doesn't need to understand > the code, I think we can very confidently say "not really our problem" if some > applications still use it. Agreed. > If we that way find out that there are non-trivial cases or cases where the > code > gets a lot more complicated it might be a hint the new API is still crap and > we > maybe should come up with something better first. A more complete usage list for the deprecated APIs is: FF_API_PIX_FMT: 71 amide avbin avifile bino blender chromium-browser dff dolphin-emu dvbcut dvswitch ffdiaporama ffmpeg2theora ffmpegthumbnailer ffmpegthumbs ffms2 fuse-emulator-utils gazebo gmerlin-avdecoder gmerlin-encoders gnash gpac gst-libav1.0 guvcview harvid hedgewars info-beamer jugglemaster karlyriceditor kino kodi lightspark lebiniou libam7xxx libavg libde265 libextractor libquicktime linphone lives lynkeos.app mlt mplayer mplayer2 mrpt opal opencv openmw openscenegraph ovito paraview performous pjproject qutecom rbdoom3bfg renpy shotdetect sflphone strigi survex transcode vcmi vlc vtk vtk6 vxl wxsvg x264 xjadeo xpra yorick-av zoneminder FF_API_AVFRAME_LAVC: 53 alsa-plugins amarok aubio avbin blender chromaprint dff dolphin-emu dvbcut ffdiaporama ffmpegthumbnailer ffmpegthumbs fuse-emulator-utils gazebo gmerlin-avdecoder gmerlin-encoders goldendict gpac gst-libav1.0 hedgewars info-beamer jugglemaster kino libavg libextractor libquicktime lightspark linphone mplayer mplayer2 mrpt opal opencv openscenegraph ovito paraview performous pianopar qutecom renpy shotdetect spek squeezelite transcode vcmi vlc vtk vtk6 vxl xine-lib-1.2 xpra yorick-av zoneminder FF_API_GET_BUFFER: 9 avifile dvswitch gmerlin-avdecoder gst-libav1.0 libavg mplayer mplayer2 openmw openscenegraph FF_API_AUDIOCONVERT: 7 alsa-plugins cantata ffdiaporama moc mplayer2 mpv vlc FF_API_SWS_CPU_CAPS: 6 fuse-emulator-utils kodi mlt mplayer2 vlc zoneminder FF_API_DEINTERLACE: 5 blender dff ffmpegthumbnailer ffmpegthumbs vxl FF_API_AVFRAME_LAVC(qscale): 3 ffmpeg2theora kodi xine-lib-1.2 FF_API_CODEC_ID: 3 chromium-browser dvswitch ffms2 FF_API_CONTEXT_SIZE: 3 mplayer mplayer2 xine-lib-1.2 FF_API_REQUEST_CHANNELS: 3 mplayer mplayer2 renpy FF_API_AV_REVERSE: 2 mplayer mplayer2 FF_API_AVCODEC_RESAMPLE: 2 mlt mplayer FF_API_DESTRUCT_PACKET: 2 lives openmw FF_API_AVFILTERBUFFER: 2 ffdiaporama pianobar FF_API_AVFILTERPAD_PUBLIC: 1 mplayer FF_API_VIMA_DECODER: 1 mplayer FF_API_PIX_FMT and FF_API_AVFRAME_LAVC are still widely used, but the "patch-monkey" could deal with the changes and also with FF_API_AUDIOCONVERT, FF_API_SWS_CPU_CAPS, FF_API_CODEC_ID, FF_API_CONTEXT_SIZE, FF_API_REQUEST_CHANNELS and FF_API_VIMA_DECODER. Regarding FF_API_GET_BUFFER, get_buffer should be replaced with get_buffer2, but it's not clear how release_buffer/reget_buffer should be replaced. Can someone explain/document this? To get rid of FF_API_DEINTERLACE, one should 'use yadif (in libavfilter) instead'. Well, ... how? Then, as part of FF_API_AVFRAME_LAVC(qscale), the fields qscale_table, qstride and qscale_type of AVFrame are to be removed, but (at least in FFmpeg) these are used by the not deprecated functions av_frame_set_qp_table and av_frame_get_qp_table, so they shouldn't be removed. Anyway it's not clear how to replace their usage. Why is FF_API_AV_REVERSE deprecated? It is used in FFmpeg's libavutil/eval.c. One should 'use libswresample instead' of FF_API_AVCODEC_RESAMPLE. A more detailed explanation would be good. Same holds for FF_API_DESTRUCT_PACKET, where one should 'use the AVBuffer API instead'. For FF_API_AVFILTERBUFFER no replacement is documented. FF_API_AVFILTERPAD_PUBLIC should be replaced by avfilter_pad_get_name and avfilter_pad_get_type, but it seems that mplayer also uses others. Better documentation would surely be helpful. > Btw. the magic option to enable compatibility is still somewhat useful as it > lists > and allows testing the specific changes that are coming up. But I agree it's > only > a minor help. The problem with such a magic option is that it combines the disadvantages of removing and not removing: Programs using the old API get broken by default and the deprecated functionality remains in the code base. Best regards, Andreas _______________________________________________ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel