The new ES string ID was added initially in the core for playback
scenario allowing the user to have a readable and guaranteed unique
representation of each ES.
Introducing it in stream output will allow users to specify ESes to
stream out filters with more precision than with legacy ES ID.
ES ID has the disadvantage to only be unique per demux, hence, a
multiple demux scenario often provided multiple ES with the same ID.
Strings ID are guaranteed to be unique, regardless of the number of
demuxes the input manages.
This patch only prepare the `Add` wrapper to properly split the addition
of the unique and **non-null** string to the `pf_add` callback. This is
done in that order mainly not to break bisect in the next patches that
implement the ID forwarding logic for stream out filters.
Simply forward the PCR value for now. It would be best to also trace and
include the PCR to the stat output but the current GNUPlot format is
specifically made for frame timestamps and PCR won't satisfy a lot of
the output columns.
This is the first step for the `SetPCR` implementation in stream output.
These callbacks will allow stream outputs to have precise information
about the stream time advancement.
This patchset only provides the basis for now, a correct implementation
for all stream filters will come in a separate merge request.
Refs #27050
Co-authored-by: Alexandre Janniaux <ajanni@videolabs.io>
see e967f81f6a.
note, this does **not** affect cat-based module selection items
(of which there are just three in use by the core), since that
mechanism uses subcats not cats.
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.
where identical to shorttext, or near enough.
bad because:
- wastes resources.
- useless tooltips in prefs GUI (poor UX) - tooltip longtext should add
something of value.
- useless repetition of text in certain help output.
in some cases they differed only in full-stop, creating unnecessary extra
burden on translators.
This removes the "sout stream" capability, and adds two new ones instead:
- "sout output" for final nodes in the sout chain, and
- "sout filter" for non-final nodes in the sout chain.
This is mainly to prevent impossible / non-working chain constructs.
Note: In practice, only "cycle" and "stats" plugins supported both modes
in any meaningful mannter. They are split into two submodules each.
Remove the sout_stream_id_sys_t typedef in vlc_common.h (for ODR).
This implies to replace sout_stream_id_sys_t* by void* in the
sout_stream_t functions.
See #17078 and #18033
Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
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>
Prints dts, segment number, length, difference to previous dts and md5
of block.
with prefix-option you can give prefix to print in stats-line, so you can
add stats module multiple times with different prefixes. Output to file
is given with output parameter.
Re-license almost all the streaming modules to LGPLv2.1+ with
authorization from their respective contributors
After access_output, this includes stream_out and mux.
The duplicate and rtp modules are not concerned by this relicensing
because of unreachable authors. Notably:
- An L. Ber (dedd7cd2)
- Andy chenee (5caa2ba)
Thanks to everyone for their help and answers in due time
Cool hints:
- If your header doesn't match "Lesser" 3 times, you are not good
- If you use LGPLv2, you are not good
- If you use the old FSF address, you are not good
The stream_out_t chain creation is modified: all modules are created by
the core (or by stream_out_duplicate) instead of being created by the
previous module.
sout_StreamChain{New,Delete} replace sout_Stream{New,Delete} to handle
modules chains instead of individual modules
sout_Stream{New,Delete} are still used by those new functions but made
static inside stream_output.c
Remove now unneeded psz_chain from struct sout_instance_t
Replace pointer to chain of next module by pointer to next module in
struct sout_stream_t
Example use:
vlc --sout-all input.mp4 --sout
"#duplicate{dst=transcode{vcodec=mp2v},select=es=0,dst=transcode,select=es=1}:std{...}"
(dst=transcode without acodec/vcodec is a hack to pass the encoded stream to
stream_out_standard without transcoding)
Missing some cases that I could not test.
Also ffmpeg/chroma.c is locked, so I can but leave it broken.
Fix is for the remaining modules is obvious and the issue is easy to detect.