... This includes failure paths in the initialization if import. Those
resources would have been reclaimed before program exit, but not as soon as
they should have been.
... This also includes certain leaks that would happen every time a file is
successfully imported or exported. We never used avformat_free_context or
av_dict_free as we should have!
... There were also AVPacket objects repeatedly reinitialized without proper
cleanups in between. That might have leaked memory too.
I could see this on windows:
Import a file such as .aiff format, while "Files of type:"
reads "FFmpeg-compatible files".
Leave Audacity running.
Attempt to delete the file in Windows Exploerer.
Get a message from Windows that the file is in use by Audacity and cannot be
deleted.
... Should have no effect on generated code, except perhaps some slight faster
virtual function calls. Mostly useful as documentation of design intent.
Tried to mark every one of our classes that inherits from another, or is a
base for others, or has abstract virtual functions, and a few others besides.
The value in audacity.cfg is now prepended to the PATH
variable instead of appending it, so that directory
should be searched first.
It doesn't do fallback searches if the first attempt
fails.
But, it made another issue visible...several exporters
fail silently and the user may thing the export was
successful when it was not.
Will be hitting that next.
When the avutil_version and avcodec_version symbols are not found, fall back to
guess the filenames of avutil and avcodec (as done in r13195 and previously).
The non-monolithic libavformat is linked against libavcodec and libavutil.
Instead of (falsely) guessing the filenames of libavcodec and libavutil, get the
files that the libavformat library is linked against. This fixes wrong filename
guesses and avoids run-time issues by using incompatible libavcodec/libavutil
version with libavformat.
av_frame_alloc/av_frame_free are defined in avutil, but the deprecated
alternative functions avcodec_alloc_frame/avcodec_free_frame are defined in
avcodec instead. FFMPEG_INITALT needs to be enhanced to support different
library names.
Log level info is the default in FFmpeg and its quite hidden anyway so users
should not see it anyway unless they look/search for it.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: Benjamin Drung <bdrung@debian.org>
This still depends on internal API
And is missing planar Audio support, so not all formats work
also the fixed size audio buffer has to be removed
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: Benjamin Drung <bdrung@debian.org>