Based on recent ITU-T H.265 and ANSI/CTA 861-G.
0 values are official values to say a value is not set (unknown).
Co-authored-by: Thomas Guillem <thomas@gllm.fr>
On OS/2, symbols are exported by .def when using libtool. So exporting
them with a modifier such as __declspec(dllexport) causes a linker to
complain about it.
* Create a preparser IPC (preparser request and response) to send
preparser requests to another process and receive the preparsed
media in return.
* Implement a de/serialization module capable of serializing and
deserializing preparser messages (requests and responses).
* Create a function to Update input item from an other one. This function
updates the value: `psz_name`, `psz_uri`, `i_duration`, `es_vec` and
`p_meta`.
Add `decoder_prevframe.c` that handle most of the previous-frame logic:
trigger a seek to `current_frame - n` (n is 1 at the start).
Store 1 decoded frame until we reach the current frame. When the
previous frame is found, return it and trigger another seek when needed.
In case the seek missed the current frame, increase n and trigger
another seek.
This solution doesn't require more memory, it is able to play backward
"in real-time" (when pressing the previous-frame key) most of 1080p
videos.
It is also able to play 4K 60FPS videos with few slow-downs (when seeking).
Fixes#10252
Previously, on_stopping_current_media was emitted only when
the user stopped the media.
The callback notification is moved into vlc_player_input_HandleState,
ensuring it is reported when media reaches EOS, errors out,
or is stopped by the user.
Add struct vlc_preparser_cbs. The vlc_preparser_req* is now
exposed to identify the request associated with each callback.
It will also be used by the upcoming vlc_preparser_req_Release
API in the next commit.
input_item_t* argument is removed as it can be retrieved using
vlc_preparser_req_GetItem.
This is the only use left. Most outbound TCP connections are made with
ad-hoc code in underlying library outside of VLC or with the newer
`vlc_tls_SocketOpenTCP()`. Notably FTP and HTTP modules use the
`vlc_tls_t` abstraction to support both unencrypted TCP and TLS over TCP.
The schedule feature was essentially just for fun at the ECP campus and
never really worked. In practice people do (or at least did) schedule
broadcasts with VLC, but they that with soem kind of higher-level
management process starting and stopping VLC (and/or sending VLM broadcast
commands) - not with VLM schedules.
Note that this does _not_ remove VLM broadcasts. That code is still
required to support the streaming output bridge and mosaic bridge or simply
to test multiple inputs in a single process. Whilst #27733 implies that
VLM broadcasts are not currently working either, they are outside the
scope of this changeset either way.
Known problems with the schedules:
- Neither daylight saving and time zones are not supported so this fails
at least twice a year if you have daylight savings.
- (Day of) Month-based scheduling actually worked (the calculation was
just plain wrong).
- Clock adjustments broke it.
- It required realtime clock-based condition variable sleep which most
operating systems don't support.
Closes#25063, #25064, #25065, #25066, #25067, #25068, #25069, #25070.