FFmpeg/doc
Marth64 3525544e48 libavformat: add RCWT closed caption muxex
Signed-off-by: Marth64 <marth64@proxyid.net>

Raw Captions With Time (RCWT) is a format native to ccextractor, a commonly
used open source tool for processing 608/708 closed caption (CC) sources.
It can be used to archive the original, raw CC bitstream and to produce
a source file file for later CC processing or conversion. As a result,
it also allows for interopability with ccextractor for processing CC data
extracted via ffmpeg. The format is simple to parse and can be used
to retain all lines and variants of CC.

A free specification of RCWT can be found here:
https://github.com/CCExtractor/ccextractor/blob/master/docs/BINARY_FILE_FORMAT.TXT
This muxer implements the specification as of 01/05/2024, which has
been stable and unchanged for 10 years as of this writing.

This muxer will have some nuances from the way that ccextractor muxes RCWT.
No compatibility issues when processing the output with ccextractor
have been observed as a result of this so far, but mileage may vary
and outputs will not be a bit-exact match.

Specifically, the differences are:
(1)  This muxer will identify as "FF" as the writing program identifier, so
as to be honest about the output's origin.

(2)  ffmpeg's MPEG-1/2, H264, HEVC, etc. decoders extract closed captioning
data differently than ccextractor from embedded SEI/user data.
For example, DVD captioning bytes will be translated to ATSC A53 format.
This allows ffmpeg to handle 608/708 in a consistant way downstream.
This is a lossless conversion and the meaningful data is retained.

(3)  This muxer will not alter the extracted data except to remove invalid
packets in between valid CC blocks. On the other hand, ccextractor
will by default remove mid-stream padding, and add padding at the end
of the stream (in order to convey the end time of the source video).
2024-01-14 14:49:12 +01:00
..
doxy
examples doc/examples/qsv_transcode: EINVAL is more appropriate and ENAVAIL will fail build with visual studio 2023-12-18 09:39:24 +08:00
.gitignore
APIchanges doc/APIchanges: document newly added buffersrc field 2024-01-11 07:05:55 +01:00
authors.texi Use https for repository links 2023-03-01 21:59:10 +01:00
bitstream_filters.texi doc/bitstream_filters: add setts example 2023-12-10 01:44:38 +01:00
bootstrap.min.css doc/html: fix styling issue with Texinfo 7.0 2023-11-08 23:54:23 +01:00
build_system.txt
codecs.texi doc/codecs: add missing comma to introduction 2024-01-04 01:10:25 +01:00
community.texi doc/community: improve wording 2023-11-08 17:01:50 +01:00
decoders.texi avcodec/evc_decoder: Provided support for EVC decoder 2023-11-20 11:55:51 -03:00
default.css
demuxers.texi apply spelling fixes 2023-11-18 19:55:42 +01:00
developer.texi doc/developer: require asm for RISC-V 2023-12-05 14:44:18 +01:00
devices.texi
doxy-wrapper.sh doc: fix generating doxy with out-of-tree builds 2021-06-11 19:28:27 +02:00
Doxyfile doc/Doxyfile: Add FF_PAD_STRUCTURE to PREDEFINED 2022-10-17 09:55:19 +02:00
encoders.texi doc/encoders/opus: fix typo 2024-01-07 15:42:40 +01:00
errno.txt
faq.texi doc/faq: use texi's @tie instead of 0xA0 for non-breaking space 2024-01-10 19:52:23 +01:00
fate_config.sh.template fate: Allow running multiple rounds of tests with differing settings 2023-12-19 13:34:25 +02:00
fate.texi tests/fate-run: add testing with a random number of threads 2023-07-11 19:19:32 +02:00
ffmpeg-bitstream-filters.texi
ffmpeg-codecs.texi
ffmpeg-devices.texi
ffmpeg-filters.texi
ffmpeg-formats.texi
ffmpeg-protocols.texi
ffmpeg-resampler.texi
ffmpeg-scaler.texi
ffmpeg-utils.texi
ffmpeg.texi doc/ffmpeg: add missing comma 2024-01-04 01:08:51 +01:00
ffmpeg.txt
ffplay.texi fftools/ffplay: add hwaccel decoding support 2023-11-15 01:20:11 +08:00
ffprobe.texi ffprobe: add -output_format as an alias of -of 2023-10-20 18:42:41 +02:00
ffprobe.xsd ffprobe: print the non-diegetic stream disposition flag 2023-10-25 21:55:01 -03:00
fftools-common-opts.texi avformat: introduce AVStreamGroup 2023-12-18 15:18:05 -03:00
filter_design.txt
filters.texi doc/filters/idet: add example 2024-01-07 15:42:54 +01:00
formats.texi
general_contents.texi avcodec/evc_decoder: Provided support for EVC decoder 2023-11-20 11:55:51 -03:00
general.texi
git-howto.texi doc/git-howto: use less weird username for git URL 2023-11-22 10:21:50 +01:00
indevs.texi gdigrab: allow capturing a window by its handle 2023-12-17 19:14:08 +01:00
issue_tracker.txt
lexicon
libav-merge.txt
libavcodec.texi
libavdevice.texi
libavfilter.texi
libavformat.texi
libavutil.texi
libswresample.texi
libswscale.texi
mailing-list-faq.texi doc: Merge doc/dev_community/* and Code of Conduct into a seperate file 2023-03-01 00:30:59 +01:00
Makefile doc: Merge doc/dev_community/* and Code of Conduct into a seperate file 2023-03-01 00:30:59 +01:00
metadata.texi
mips.txt avcodec: Remove DCT, FFT, MDCT and RDFT 2023-10-01 02:25:09 +02:00
multithreading.txt avcodec/pthread_frame: Remove ff_thread_release_buffer() 2023-10-22 22:09:59 +02:00
muxers.texi libavformat: add RCWT closed caption muxex 2024-01-14 14:49:12 +01:00
nut.texi
optimization.txt doc: reference the RISC-V specification 2022-09-13 16:50:43 -03:00
outdevs.texi avdevice/decklink_enc: add support for SMPTE 2038 VANC packet output 2023-07-02 19:57:45 +02:00
patchwork
platform.texi doc/platform: drop reference to ffmpeg.zeranoe.com 2023-04-02 16:28:54 +02:00
print_options.c
protocols.texi avformat/rtmpproto: support enhanced rtmp 2023-09-05 09:14:18 +08:00
rate_distortion.txt
resampler.texi swresample/swresample: add a used channel layout option using the new API 2023-02-19 18:28:45 -03:00
scaler.texi
snow.txt
style.min.css
swresample.txt
swscale.txt
t2h.init
t2h.pm doc/html: support texinfo 7.0 2023-11-08 23:53:19 +01:00
tablegen.txt
texi2pod.pl
texidep.pl
transforms.md x86/tx_float: add 15xN PFA FFT AVX SIMD 2022-09-23 12:35:27 +02:00
undefined.txt
utils.texi lavu/eval: add randomi function to compute random value in interval 2024-01-01 20:12:52 +01:00
writing_filters.txt Update missed irc links 2021-06-18 18:58:25 +02:00