List Info

Thread: CR-Client: fix in ASF packetization




CR-Client: fix in ASF packetization
user name
2006-10-30 20:07:45
Description
------------------------------------------
After seeking, we want to start packetizing with the *first*
packet of a keyframe. Currently, the packetizer will accept
the first payload it sees which is a part of a keyframe.
However,
if the first ASF packet seen after a seek contains the final
fragment
of a keyframe followed by the first fragment of a keyframe,
then
currently we will put the last fragment of the keyframe on
the
partial payload queue. Later this lone fragment will be
detected
as loss, even though no loss occurred.

The fix is to only start packetizing when we see the
*first* payload of a keyframe. This will cause us to
properly ignore the final fragment of a keyframe in the
first ASF packet following a seek.

Files Modified
---------------------------------------
datatype/wm/fileformat/asf_packetizer.cpp

Branches
---------------------------------------
HEAD only

Testing
---------------------------------------
Observed loss-packet generation from logs before this
fix on a particular .wmv clip. After this fix, no
loss-packet
generation occurred after a seek to the same place on the
same clip.

Index: asf_depacketizer.cpp
============================================================
=======
RCS file:
/cvsroot/datatype/wm/fileformat/asf_depacketizer.cpp,v
retrieving revision 1.4
diff -u -w -r1.4 asf_depacketizer.cpp
--- asf_depacketizer.cpp        15 Sep 2006 02:47:37 -0000  
   1.4
+++ asf_depacketizer.cpp        30 Oct 2006 19:23:58 -0000
 -186,7
+186,7 
                     //
                     // Do we have a requirement to wait
until we see a
keyframe for this stream?
                     if
(!m_pStreamInfo[ulHXStreamNum].m_pWMStreamInfo[ulHXSubStream
Num].m_bNeedsKeyFrame
||
-                         pPayload->m_bKeyFrame)
+                        (pPayload->m_bKeyFrame
&&
pPayload->m_ulOffsetIntoMediaObject == 0))
                     {
                         // Clear the keyframe-required flag
                        
m_pStreamInfo[ulHXStreamNum].m_pWMStreamInfo[ulHXSubStreamNu
m].m_bNeedsKeyFrame
= FALSE;



=======================================
Eric Hyche (ehychereal.com)
Technical Lead
RealNetworks, Inc.

_______________________________________________
Datatype-dev mailing list
Datatype-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/da
tatype-dev
[1]

about | contact  Other archives ( Real Estate discussion Medical topics )