The config "advanced" flag was unused and has been removed by
6a7a137f7b.
It has been removed from many add_*() macros, but not all. Remove it
from the remaining macros.
In many cases we don't know the value so it's better to use UNDEF.
A boolean also prevents from overwriting a value only when it's undefined.
The es_out display now separates the color space and the color range. One may
be known without the other.
Do not declare *_sys_t typedefs globally in vlc_common.h. Instead,
declare them locally in each module that provides a definition.
This paves the way to move C++ definitions into anonymous namespaces in
order to respect C++ ODR.
The picture_resource_t and sout_stream_id_sys_t typedefs will be handled
separately, since they require specific additional changes.
See #18033
Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
They are not allowed per §6.7.9 of the 2011 ISO C Standard:
initializer:
assignment-expression
{ initializer-list }
{ initializer-list , }
initializer-list:
designation(opt) initializer
initializer-list , designation(opt) initializer
This replaces the decoder_t->b_error boolean.
For now, only decoders that were setting b_error return VLCDEC_ECRITICAL, but a
lot more decoders should use this value since critical errors are often ignored.
Use only one callback for every decoder types:
int (*pf_decode)(decoder_t *, block_t *p_block);
There is now only one way to send output frames/blocks from a decoder module:
using decoder_QueueVideo(), decoder_QueueAudio() and decoder_QueueSub()
functions.
This fixes transcoding not receiving any output when a decoder used
decoder_Queue*() function.
The pf_packetize callback is kept unchanged. A packetizer shouldn't be
asynchronous at all (and this simplify the locking for decoder core).
The pf_decode callback returns, for now, only one value: SUCCESS. This will
allow a module to send more status.
Since commit 0bceaf96 ("vpx: increase decoder capability (refs #16836)")
made libvpx the default this has broken the default playback of VP8/9
video where the sample aspect ratio (SAR) is not equal to one. e.g
Given a video like
vp8, yuv420p, 720x576, SAR 64:45 DAR 16:9, 25 fps
which is meant to be played back at 1024x576, will playback at 720x576
due to not passing the SAR value through.
I have many such videos as encoded from PAL DVD's. Another example is
vp8, yuv420p, 720x576, SAR 16:15 DAR 4:3, 25 fps
this should actually playback at 768x576.
So this commit simply passes the SAR values through. Without this
passing --codec=ffmpeg or --codec=avcodec also restores previous
behaviour.
Signed-off-by: Andrew Clayton <andrew@digital-domain.net>
Signed-off-by: Tristan Matthews <tmatth@videolan.org>
Otherwise it will keep trying to decode blocks that the library is
incapable of decoding (e.g., 10-bit without --enable-vp9-highbitdepth).
Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
The codec capabilities were only used to check for high bit depth
support, but the provided symbol only works for encoders. So just
gracefully fail to decode frames in case the library has no support.
Decoder modules are now responsible for calling decoder_UpdateVideoFormat()
before decoder_NewPicture().
In a lot of modules, decoder_UpdateVideoFormat() could be called in a better
place. Just after dec->fmt_out is updated for example.