test: modules: add transcoder test
A unit-test for the transcoder code currently is hard to achieve, as it involves decoders, encoders, filters, sout_stream_t object, and general transcode code. This commit introduces an integration test which mocks the extern components (filters, decoders, encoders) used by the transcode pipeline and starts this pipeline using the usual input item properties. The main end goals are to: - check whether no part of the stream is dropped. - check whether push model with video context is supported everywhere. - check the different kind of decoder behaviour, in particular those for which decode is asynchronous with the decoder_QueueVideo call, those for which Open() is asynchronous with the decoder_UpdateVideo* call and their synchronous variants. - check memory leaks and use-after-free in the pipeline (through asan). - check threading within the pipeline (through tsan). - check decoder, encoder and filter loading failure. - check format adaptation through filters before the encoder. - check format conversion (called final_conv_static) before the encoder, needed for encoders requesting a conversion. It's currently written in an asynchronous state way spread across multiple feature functions to handle the different stage of the pipeline without interaction, like it was done for the video output test, but we might want to find a way to rewrite those tests in a more sequential way if it were to get more complex even.
Loading
Please register or sign in to comment