[prev in list] [next in list] [prev in thread] [next in thread]
List: helix-datatype-cvs
Subject: [Datatype-cvs] tools/dtdriver/decoder/video vdecoder.cpp, 1.7.2.3,
From: ehyche () helixcommunity ! org
Date: 2007-04-25 18:50:26
Message-ID: 200704251850.l3PIoZWY003489 () mailer ! progressive-comp ! com
[Download RAW message or body]
Update of /cvsroot/datatype/tools/dtdriver/decoder/video
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv14684
Modified Files:
Tag: hxclient_1_5_0_cayenne
vdecoder.cpp
Log Message:
Description
-------------------------------------------
When transcoding video, dtdrive's current code
will sometimes miss the last few decoded frames
from the renderer. It was calling ForceRedraw()
in a loop and then calling OnEndofPackets().
It should have been calling OnEndofPackets()
first, and then calling OnTimeSync() in a loop
until the renderer stopped bltting.
Files Modified
-------------------------------------------
datatype/tools/dtdriver/decoder/video/vdecoder.cpp
Branches
-------------------------------------------
HEAD, 150Cay, and 204cay
Testing
-------------------------------------------
Was able to get all the frames out of a decoded
video after this change
Index: vdecoder.cpp
===================================================================
RCS file: /cvsroot/datatype/tools/dtdriver/decoder/video/vdecoder.cpp,v
retrieving revision 1.7.2.3
retrieving revision 1.7.2.4
diff -u -d -r1.7.2.3 -r1.7.2.4
--- vdecoder.cpp 17 Apr 2007 21:03:55 -0000 1.7.2.3
+++ vdecoder.cpp 25 Apr 2007 18:50:24 -0000 1.7.2.4
@@ -393,16 +393,25 @@
{
if (m_pRenderer)
{
- // Attempt to flush out the video renderer
- UINT32 ulLastBltCount;
+ // Send the renderer an OnEndofPackets()
+ m_pRenderer->OnEndofPackets();
+ // Call OnTimeSync() to the renderer until it
+ // doesn't blt anymore.
+ UINT32 ulLastBltCount = 0;
do
{
+ // Get the current time
+ UINT32 ulCurrentTime = 0;
+ m_pRenderTimeLine->GetTimeLineValue(ulCurrentTime);
+ // Save the current number of blts
ulLastBltCount = m_ulBltCount;
- m_pSite->ForceRedraw();
- } while( ulLastBltCount != m_ulBltCount );
+ // Call OnTimeSync with 1 millisecond more than the
+ // current time. If there are any more frames to blt
+ // then this should cause them to be bltted
+ m_pRenderer->OnTimeSync(ulCurrentTime + 1);
- // Send the renderer an OnEndofPackets()
- m_pRenderer->OnEndofPackets();
+ }
+ while (ulLastBltCount != m_ulBltCount);
}
}
else
_______________________________________________
Datatype-cvs mailing list
Datatype-cvs@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/datatype-cvs
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic