The preprocessor definition FFMPEG_VERSION cannot be used to determine whether
the libav* header are provided by the FFmpeg or libav project. Therefore an own
proprocessor definition is needed to make the differentiatiion.
IS_FFMPEG_PROJECT should be set by configure instead of hard-coding it in
FFmpeg.h.
Some parameters of libav functions have no 'const' flag in contrast to their
FFmpeg counterparts. Assume that the headers come from FFmpeg if FFMPEG_VERSION
is defined. Otherwise assume that the headers come from libav.
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>
It can be 0 in case of variable frame size support.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: Benjamin Drung <bdrung@debian.org>
This allows selecting the intended codec when there are multiple with the same
codec_id
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: Benjamin Drung <bdrung@debian.org>
After reporting the crash to the kn0ck0ut LV2 maintainer, he pointed out that
Audacity wasn't connecting to all required LV2 ports. In this case it was the
latency port. This corrects that oversight.
In addition, since I was fiddling with the latency port, I figured I might as
well go ahead and add the necessary code to compensate for it.
Bugs fixed:
1) When scanning for VSTs on Mac, bogus lines could show up in the list if the .vst
file had more than one Info.plist in the bungle. GRM and TAL plugins exhibited
this issue.
2) When scanning for VSTs on Mac, reuse of a variable caused the plugin to be
accepted even though it was a synth. So it would show up in the Generate menu.
3) I recently disabled the the plugin list dialog once the OK button was clicked
to prevent clicking it again. This was overkill and prevented clicking Cancel
while the scan was running. So, changed it to only disable the OK button.
4) The new Settings dialog would save the settings even if you clicked Cancel.
5) Detecing the overlay window on Mac didn't work in all cases. Did more research
and I believe the revised method is correct. (Window list is z-order sorted)
6) When changing the preset from the top combo, the return value from the
plugin was not check when getting the current preset (program). It assumed
that there was always an active program. This is not at all correct.
Most of the new additions are an attempt to be more compatible with more plugins.
I have not found any plugins that crash Audacity anymore, so I'm not sure how to
really give these changes a good workout. However, Guitar Rig 5 and Reaktor 5
are now quite usable since one of the additions was window resizing.
1) Refreshed the aeffectx.h header from the LMSS project and merged in some
additional changes from Ardour.
2) Changed the method prototypes to reflect the new aeffectx.h header.
3) Plugin scan dialog now has a "Select All" and "Clear All" buttons. (On a
personal note, this was a major boon while testing...way easier to include
a single VST.)
4) Uses a timer now instead of the wxIdleEvent to send effIdle messages to the
plugin. Idle could be all many times more than was necessary.
5) Process level is now reported when requested by the plugin. Don't know how
useful it is, but many plugins request it.
6) Two new events are sent to the dialog from the audioMaster callback to support
window updating and resizing. Figured it was safer this way since the callback
"might" be called from a different thread (as far as I could figure out anyway).
7) Current sample rate is now returned to the plugin when requested.
8) The dialog now resizes when the plugin informs us of a size change to its window.
This was one of the major drawbacks to using Guitar Rig and Reaktor as their
window would resize and pretty much be useless since the dialog didn't adjust to
the new size. Kontakt was another that even includes a draggable resizer in the
bottom right corner which the dialog supports just fine now. (Not that Kontakt
is actually supported though.)
9) The preset bar is now updated when the plugin informs us of "major" changes with
the UpdateDisplay opcode. I noticed that when changing presets within Guitar
Rig, the preset bar didn't change.
Discovered limitation:
Guitar Rig and, it seems, other plugins will only report a maximum of 128 presets (or
rather programs) even if they support more. I'd figure out a way to populate the
combo with all of the presets via some major hackage, but it didn't do any good since
Guitar Rig simply refused to set any program number above 128.
Not much can be done about this...just a heads up.