0

I have a client application which is using VMR9 to play an online movie streamed over the network. Whenever the stream stops due to a problem, the player freezes displaying the last received frame. Is there any way to detect such a state in client side? I checked the windows messages sent by VMR9 to my ContainerForm.:

protected override void WndProc(ref Message m)
{
    if (m.Msg == PlayerMessageValue)
    {
        Program.log.AppendLine(string.Format("msg {0} {1} {2}", m.LParam, m.WParam, Environment.TickCount));
    }
    base.WndProc(ref m);
}

The player is incrementing the time and the player sends messages on expected intervals but nothing is received actually. here is the log:

msg 0 0 1316437
msg 0 0 1316515
msg 0 0 1317515
msg 0 0 1318515
msg 0 0 1319515
msg 0 0 1320515
msg 0 0 1321531
msg 0 0 1322531
msg 0 0 1323531
msg 0 0 1324531
msg 0 0 1325531
msg 0 0 1326546
msg 0 0 1327546
msg 0 0 1328546
msg 0 0 1329546

some time passed, from now on the stream is stopped, but nothing changed in behavior of VMR:

msg 0 0 1351593
msg 0 0 1352593
msg 0 0 1353593
msg 0 0 1354593
msg 0 0 1355593
msg 0 0 1356609
msg 0 0 1357609
msg 0 0 1358609
msg 0 0 1359609
msg 0 0 1360609
msg 0 0 1361625
msg 0 0 1362625
msg 0 0 1363625
msg 0 0 1364625
msg 0 0 1365625
msg 0 0 1366640
msg 0 0 1367640
msg 0 0 1368640
msg 0 0 1369640
msg 0 0 1370640

closing...1371796

Is there any other part of the graph which I should check for graph activity? (although the graph is running)

4

1 回答 1

0

No window messages are expected to indicate unexpected behavior. Instead, there are filter graph events you should be checking with IMediaEvent::GetEvent. Additionally, to address specific issues you might be checking media samples (e.g. time stamps) or validate data (such as H.264 bitstream).

于 2012-07-02T11:01:54.210 回答