Sorry I did not explain the case clearly. In ipp raw sample code, there are two output components (raw/yuv), and one single process EGLStream facilitates flow of YUV frames from producer to consumer and meanwhile we could save the RAW frames.
Two modifications I have made:
- use cross partition EGLStream, so producer and consumer can run in two shells.
- use another cross partition EGLStream to facilitate flow of RAW frames from producer to consumer
In this case, there are 2 threads, one for yuv producer and the other for RAW producer.
If I terminate the consumer corresponding to yuv producer, yuv producer will know eglstream disconnected through the eglstate and then this yuv producer thread can be terminated. In my understanding, the raw producer thread should continue posting raw frame to its eglstream. But the results show that the raw thread cannot get the RawOutput when we call NvMediaIPPComponentGetOutput function. And in this case, I also found that the eglstream’s state becomes EGL_STREAM_STATE_EMPTY_KHR. So I want to know how does the IPP pipeline work if we terminate only one thread in a multiple thread case. Thanks.