When compiling for iOS, protoc is usually found in PATH but PATH is
defined by the build script, which mean only `protoc` will be stored in
the PROTOC variable. When recompiling using `make`, the PATH is not
defined anymore and it will fail running the command.
There's two solutions for this issue:
- add extra/tools in the look-up path when calling AC_CHECK_PROGS
instead of exporting it in PATH
- use absolute path
The first option doesn't work because extra/tools is always in path in
the configure script or in the compile script, but is not when using
make directly.
The second option will work for this, and additionally will prevent
using the extra/tools one in a project that has been configured with the
system one for example.
Expose a separate filter_t for the OpenGL yadif filter so that it can be
enabled automatically in the static part of the filter chain if the
video is interlaced.
The yadif filter requires 3 frames to operate:
- next: the frame received during the draw call
- cur: the frame received during the previous draw call
- prev: the frame received two draw calls before
This causes a problem for the two first frames.
To mitigate the problem, assign the existing frames to several of the 3
required frames:
frame | prev cur next
0 | *0* *0* 0 /* "prev" and "cur" use the "next" frame */
1 | *0* 0 1 /* "prev" use the "cur" frame" */
2 | 0 1 2
3 | 1 2 3
4 | 2 3 4
That way, for the first frames, the yadif filter will operate as if
successive frames were the same, so only spatial differences will matter
(there will no be temporal differences).
Add an OpenGL filter applying a yadif deinterlace on each input plane.
The fragment shader is inspired from the C implementation of the yadif
filter in:
- modules/video_filter/deinterlace/algo_yadif.c
- modules/video_filter/deinterlace/yadif.h
For now, it can be run manually as follow:
./vlc --deinterlace=0 --gl-filters=yadif interlaced.mkv
Replace a bidimensional array of chars by an array of const strings.
This is less error-prone when adding a new mode (which could overflow
the hardcoded array length).
The viewport, viewpoint and aspect-ratio are requested after the vout is
created.
In the OpenGL vout, they are applied to the "filters" and "renderer"
components. On vout format change, these components will be re-created,
so these states will have to be applied to the new instances.
Some encoders, like MediaCodec, provide SPS/PPS packets only when
decoding is started (in pf_encode_video). This is too late, because the
muxer is already open.
To avoid the problem, add the stream only when the encoder output format
is known.
Reset main clocks before unselecting every ESes. This will speed up
audio and video output termination. Indeed, they won't wait for a
specific PTS conversion. This may also unblock outputs in case of a
corrupted sample with a PTS very far in the future.
such strings are supposed to be translated JIT for display by interfaces.
this mistake causes a secondary translation to occur at an earlier and
incorrect time - in execution of the plugin descriptor.
such strings are supposed to be translated JIT for display by interfaces.
this mistake causes a secondary translation to occur at an earlier and
incorrect time - in execution of the plugin descriptor.