Ensure the input_decoder is flushed before deletion, so that it's not
stuck waiting on the decoder implementation or the output for the ES.
The end goal is to simplify vlc_input_decoder_Delete to ensure it is
either flushed or drained before being deleted, so that the wanted
behaviour is written in the code and frames are neither dropped when
they should have been played, nor drained during interruption, resulting
in increased response time.
Although we set all known usable bits, it seems that leaving reserved bits
"uninitialized" doesn't work in some case. In particular with LLVM builds,
which results in bogus output.
Although we set all known usable bits, it seems that leaving reserved bits
"uninitialized" doesn't work in some case. In particular with LLVM builds,
which results in bogus output.
Co-authored-by: Pierre Lamot <pierre@videolabs.io>
json_parse_ex() now requires the length of the JSON string to parse.
The following changes are integrated:
* 672dd79c40 (int64 on Windows),
* ecb7c84719 (proper include guards),
* c8edcab8cd (null deref),
* 894bab1c0a (fallthrough warning)
The (unused) json_relaxed_commas flag is gone.
We may also use it as a contrib.
TagLib does not provide an union of both ID3v2 and INFO tags via the
usual `File::tag()` method. Their justification lies in the code for
now:
```cpp
/*!
* Returns the ID3v2 Tag for this file.
*
* \note This method does not return all the tags for this file for
* backward compatibility. Will be fixed in TagLib 2.0.
*/
ID3v2::Tag *tag() const;
```
To support WAV files providing RIFF INFO tags, we must specifically
parse them before TagLib 2.0 (not released yet).
Fixes#25690
DynamicsProcessing is used by android/device.c, by audiotrack and by
aaudio and a common vtable is needed as well as the matching JNI helpers
to use the vtable.
The vtable is currently stored in the audiotrack vtable, which is
available in the other plugins in static build. But it leads to
undefined reference errors when compiling a dynamic build of libvlc for
android.
Split the code handling this vtable in a separate convenience library to
address this, which is then linked to every other targets.
Since convenience libraries are playing a different role than static
libraries, and are not linked but merged into the final objects that
will be part of the library output (shared or archive), the symbols are
then available to each of the plugins.
Fixes#27726
Move the AudioFormat vtable to a separate file and convenience library
so as to use the AudioFormat vtable from device.c.
The choice of a convenience library here is to compile the code only
once but be able to use it from different locations, especially since it
needs the vtable filled before using the associated function.
The commit doesn't change audiotrack yet, as the goal is mostly to fix
the dynamic build on Android, and thus duplicates part of the code from
there. Some more changes would be needed to potentially supply the
vtable as parameter and provides what's missing for audiotrack.c to use
this convenience library instead.