e7d097cab8
Currently the ffmpeg_mpegts_muxer output is integrated with ffmpeg-mux. Both use obs native encoders in contrast with obs-ffmpeg-output which relies on avcodec library. This allowed easy implementation of SRT, RIST & HLS protocols through avformat library. The main drawback is that obs-ffmpeg-mux exe doesn't allow for easy debugging nor logging of the protocols. It was written initially as a separate binary designed for recording so that if obs fails for some reason, the recording can still terminate gracefully. In this commit the ffmpeg_mpegts_muxer is rewritten so that a pipe to the ffmpeg-mux binary is not used any more. The muxing to mpegts is still delegated to avformat. But it can be traced more easily in all its steps. Also the protocol part for SRT & RIST is implemented natively. Custom avio_contexts for SRT & RIST are used to that end. This allows to pass our own implementation of librist and libsrt libraries instead of relying on avformat. This is very advantageous : - this allows better logging. - this allows better bug fixing and maintainance without having to rely on hypothetical upstream fixes. One immediate bonus of native implementation is that fixes bugs which were not previously fixable. Fixes: SRT & RIST auto-reconnect partly broken #6749 Fixes: SRT: OBS unusable and uncloseable after starting stream to invalid srt server #5791 Signed-off-by: pkv <pkv@obsproject.com>