I have a bit of a weird problem, and I’m wondering if anyone could help. My company has written an application that connects to IP cameras on the network (using RTSP) and decodes H.264 streams based on Intel’s IPP samples. To support this, there are multiple UMC::H264VideoDecoder objects created per IP camera connection. Each time a video view is dropped its associated H264 decoder is freed, and a new instance will be created on next selected camera view. The weird problem is, when closing a view and releasing associated H.264 decoder 1 of the other active stream’s image freezes on 1 frame, while other active stream’s images continue working without issue. Then if a new camera view is connected the frozen image picks back up displaying current time images, meaning the frozen image does not unfreeze, but skips a head to current time and continues to play without issue.
While in this weird state, I captured the raw compress data, by writing it to files, just before passing it to decoder, and captured the resulting YUY2 frame returned by the decoder. Playing the captured data back, the location where the image is frozen in the application plays properly from the raw compressed data, but the YUY2 data demonstrates like the application, proving that the problem is somehow related to the decoder. Furthermore, this state only happens with 1 particular network camera. It does not matter the order or when a camera view is dropped. This 1 camera view always freezes on 1 frame.
I edited the application where the UMC::H264VideoDecoder instance is not freed, and this problem does to happen. Why would closing a one instance effect another instance? I’m unsure what more information I can provide to the Forum. Any thoughts or advice is appreciated.
Visual studio 2008
IPP version 220.127.116.11_ia32.
samples used are w_ipp-samples_p_7.0.4.054
m_pvidDecoder = NULL;
Thanks a lot for the updating. Just guess, some bug fix in H.264 happen to fix your problem too.
Here is IPP 7.0 bug list, http://software.intel.com/en-us/articles/intel-ipp-70-library-bug-fixes,
the related bug is like DPD200215155 UMC H.264 codec hangs when closing (many iteration of open and close) A race condition causes a wrong attempt to signal and use Event Objects before event initialization is completed when the H264 thread initialization is called.