[prev in list] [next in list] [prev in thread] [next in thread] 

List:       helix-datatype-cvs
Subject:    [Datatype-cvs] mp4/payload pcmpyld.cpp,1.1.4.3,1.1.4.4
From:       tianguan () helixcommunity ! org
Date:       2013-08-08 7:32:54
[Download RAW message or body]

Update of /cvsroot/datatype/mp4/payload
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv10418/payload

Modified Files:
      Tag: hxclient_3_1_0_atlas
	pcmpyld.cpp 
Log Message:
Summary: [RPD-850][RP_jupiter_Playback]: Pop up AutoUpdate then nothing output for \
                someone mov (H264_BP+PCM) clip
Bug: NA
Review: Y

Popup AU and cannot play mov files with sowt pcm audio, this mov is generated by some \
dv device

Root cause:
1.	Assume the opaque data in file header is 44 bytes long, but it is not true, the \
length is not fixed, we should count it from the "size" field. 2.	The sample size \
calculated by parsing 'stsd' or 'sdsz' atom is not accurate or reliable.

Index: pcmpyld.cpp
===================================================================
RCS file: /cvsroot/datatype/mp4/payload/pcmpyld.cpp,v
retrieving revision 1.1.4.3
retrieving revision 1.1.4.4
diff -u -d -r1.1.4.3 -r1.1.4.4
--- pcmpyld.cpp	7 May 2010 04:16:02 -0000	1.1.4.3
+++ pcmpyld.cpp	8 Aug 2013 07:32:31 -0000	1.1.4.4
@@ -104,9 +104,15 @@
         res  = pHeader->GetPropertyBuffer("OpaqueData", pBuffer);
         if (SUCCEEDED(res ))
         {
-            if (pBuffer->GetSize() == WAVOPAQUEHEADER::static_size())
+            ULONG32 ulBufferSize = pBuffer->GetSize();
+            m_OpaqueDataWavHeader.unpack(pBuffer->GetBuffer(), ulBufferSize);
+            //the data before usSize is 8 bytes, refer to WAVOPAQUEHEADER in \
pcmpyld.h +            //    UINT8 usVersion;            1 byte
+            //    UINT8 usFlags[3];           3 bytes
+            //    UINT32 usEntriesCount;      4 bytes
+            //then    UINT32 usSize;          totaly 8 bytes before usSize
+            if((m_OpaqueDataWavHeader.usSize + 8) == ulBufferSize)
             {
-                m_OpaqueDataWavHeader.unpack(pBuffer->GetBuffer(), \
pBuffer->GetSize());  res  = HXR_OK;
                 if (m_OpaqueDataWavHeader.usDataFormat != WAV_FOURCC('a', 'l', 'a', \
                'w') &&
                         m_OpaqueDataWavHeader.usDataFormat != WAV_FOURCC('u', 'l', \
'a', 'w'))


_______________________________________________
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