Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Robby_S
New Contributor I
27 Views

Multi-channel transcoding questions

Greetings,

So I got my multi-channel video surveillance system running. Below is what it looks like, where each channel is an MSDKThread and an MFX session. 

                             stage 0           stage 1                  stage 2                       stage 3                     stage 4                         stage 5
Channel 0:        Bit-stream file -> Decode -> Video Pre-processing -> Activity detection -> (if detected) Encode -> Output bit-stream file
                ...
Channel (N-1):  Bit-stream file -> Decode -> Video Pre-processing -> Activity detection -> (if detected) Encode -> Output bit-stream file

Both the decoders and encoders are MFX_CODEC_AVC and implemented with MSDK calls. Each channel has its own surface frame buffers.

There is one bug that puzzles me. 

In single channel tests, if I test with channel 0, which has activities, the output bit-stream file records the scenes where activities happen, as expected. If I test with channel 1, which has no activity, the output bit-stream file is empty, as expected. 

However, if I test with two channels simultaneously, channel 0's output bit-stream is not identical to that generated in the single channel test. Moreover, channel 1's output-stream file is no longer empty, but contains some seemingly random background.

Unfortunately, the two channels have the same background, so I can't easily tell whether channel 1 falsely records some frames from its own, or from channel 0.

Obviously, I need to test with two channels that have different backgrounds to confirm. But for saving time's sake, I am also posting my questions here: Is it possible, that after stage 1, channel 0's surface frame buffers could somehow get sent to channel 1, or vice versa? If so, what I need to do to prevent this from happening?

Thanks,

Robby

0 Kudos
1 Reply
27 Views

Hello Robby - If each of your channel is implemented as a separate session, such pollution should not occur. To ensure that, can you remove the activity detection stage from your pipeline and ensure each channel's output is correct when run concurrently?