locked
why does the client not receive MESessionStarted event after rendering the first frame(such as a menu)? RRS feed

  • Question

  • Hi, all:

      For my application, the first scene is a menu as a video single frame data. when topology was ready, I called IMFMediaSession:: Start(...) to show it. OK, EVR received the single frame data and render it successfully. But the client never received MESessionStarted event from media session, and the clock also never started(I always get time as "0").  As my observation, the MESessionStarted event will not be triggered until second frame flows to evr. 

     

      Why can MESessionStarted event not be triggered after the first frame flows to EVR? 

    Monday, June 18, 2007 8:44 AM

Answers

  • This is something called "prerolling".  When a Media Sink implements IMFMediaSinkPreroll (the EVR does), then the Media Session does not consider this sink to be started until it gets the MEStreamSinkPrerolled event back from it.  It's up to the sink to decide when it's prerolled enough to be happy starting the clock; as you have observed, the EVR usually wants two frames.
    Tuesday, June 19, 2007 7:16 PM