Sebastien Daloz
2005-Sep-21 02:40 UTC
[Theora-dev] Theora freezes when with multiple video screens
Hello. I have a problem with theora when using 2 video screens. The second is connected to the dvi output of the video card. When I watch the video, I move the renderer to the other screen and video still remains black, or freezes, for a while. Considerer this test : construct a graph DirectShow using GraphEdit like this : - Webcam filter - Theora Encoder - Theora Decoder - Video Renderer Run the graph on the first screen, that looks greats. Move the renderer to the other screen, video is black. When video is displayed few times later, moving renderer to the first screen make the video freeze once again. Now, make another graph : - Webcam filter - Theora Encoder - Ogg Muxer Save the video in an ogg file. Play the video with this graph : - Ogg Demuxer - Theora Decoder - Video Renderer Move the renderer to the other screen while graph is running, video doesn't freeze. Does anyone know where is the problem ? Sebastien
illiminable
2005-Sep-21 10:18 UTC
[Theora-dev] Theora freezes when with multiple video screens
I'm not sure what the problem is... but i'm pretty sure when you move the video from one screen to the other, windows is probebly trying to send the filter a signal (which it's not handling correctly) to say, "Hey i'm using a different buffer now!!" One thing to try is using the VMR9 filter (Video Mixing Renderer 9) as your video renderer, and see if that works better. As to the screen going black... that's somewhat common, my bought TV Tuner software also exhibits this problem. It in fact will only play on the screen it starts on. Why it possibly occurs in a live situation and not a playback one, is that possibly the buffers are filling up. Try watching the memory consumption in task manager when this happens and see if it perhaps goes up wildly ! I'd have to take a closer look to figure it out. Zen. ----- Original Message ----- From: "Sebastien Daloz" <sebastien.daloz@gmail.com> To: <theora-dev@xiph.org> Sent: Wednesday, September 21, 2005 5:40 PM Subject: [Theora-dev] Theora freezes when with multiple video screens Hello. I have a problem with theora when using 2 video screens. The second is connected to the dvi output of the video card. When I watch the video, I move the renderer to the other screen and video still remains black, or freezes, for a while. Considerer this test : construct a graph DirectShow using GraphEdit like this : - Webcam filter - Theora Encoder - Theora Decoder - Video Renderer Run the graph on the first screen, that looks greats. Move the renderer to the other screen, video is black. When video is displayed few times later, moving renderer to the first screen make the video freeze once again. Now, make another graph : - Webcam filter - Theora Encoder - Ogg Muxer Save the video in an ogg file. Play the video with this graph : - Ogg Demuxer - Theora Decoder - Video Renderer Move the renderer to the other screen while graph is running, video doesn't freeze. Does anyone know where is the problem ? Sebastien _______________________________________________ Theora-dev mailing list Theora-dev@xiph.org http://lists.xiph.org/mailman/listinfo/theora-dev
Sebastien Daloz
2005-Sep-22 03:03 UTC
[Theora-dev] Theora freezes when with multiple video screens
I tried the VMR9 filter and the problem persists. The problem is certainly due to Theora decode filter because I used a graph without Theora Encoder (data are first compressed with the encoder in a graph, and a second graph take them somewhere and decode the video to display it with the Video Renderer). So the problem appears in a graph that only use the Decoder, so the decoder may be the problem. When changing display screen, DirectShow make a dynamic renegociation on the filters (ImediaSample->getMediaType() is not null). CTransformFilter->DecideBufferSize is called and succeeded (I have activated logs in the filter, and DecideBufferSize ends with ***SUCCESS***). Another thing : I know that changing display screen make all filters to be paused. Maybe this is the problem ? The problem is not the video card, because using another encoder (XviD) works fine. Memory is OK and CPU is not overloaded, problem is something else. Note that is I add sound filters in the graph, sound is playing while video is black. So graph is not paused but running.