[prev in list] [next in list] [prev in thread] [next in thread]
List: helix-datatype-cvs
Subject: [Datatype-cvs] avi/fileformat avistrm.cpp,1.49,1.50
From: ching_li () helixcommunity ! org
Date: 2011-02-18 7:57:50
Message-ID: 201102180758.p1I7w0CR012758 () mailer ! progressive-comp ! com
[Download RAW message or body]
Update of /cvsroot/datatype/avi/fileformat
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv19272
Modified Files:
avistrm.cpp
Log Message:
Fix bug 12720: A damaged AVI content caused all thumbnails can not be displayed.
Index: avistrm.cpp
===================================================================
RCS file: /cvsroot/datatype/avi/fileformat/avistrm.cpp,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -d -r1.49 -r1.50
--- avistrm.cpp 18 Jan 2011 02:13:00 -0000 1.49
+++ avistrm.cpp 18 Feb 2011 07:57:47 -0000 1.50
@@ -84,6 +84,7 @@
#define MAX_VIDEO_PREROLL 30000
#define MIN_AUDIO_PREROLL 750
#define MAX_AUDIO_PREROLL 30000
+#define MAX_FRAMERATE 120
#ifdef NET_ENDIAN
@@ -720,6 +721,9 @@
return HXR_OUTOFMEMORY;
}
+ UINT32 ulPreroll = 0;
+ ULONG32 ulAverageBitrate = 0;
+
if ( (HXR_OK == m_pCommonClassFactory->CreateInstance(CLSID_IHXBuffer,
(void**)&pMTBuf)) &&
(HXR_OK == m_pCommonClassFactory->CreateInstance(CLSID_IHXBuffer,
@@ -736,8 +740,6 @@
ulMaxPacketSize = DEFAULT_NON_LOCAL_PACKET_SIZE;
}
- HX_RESULT result = HXR_OK;
-
switch (m_header.ulType)
{
case AVI_VIDS_TYPE:
@@ -784,10 +786,8 @@
m_pPayloadFormatter = new JPEGPayloadFormat();
if (!m_pPayloadFormatter)
{
- HX_RELEASE(pOpaqueData);
- HX_RELEASE(pSNBuf);
- HX_RELEASE(pMTBuf);
- return HXR_OUTOFMEMORY;
+ result = HXR_OUTOFMEMORY;
+ goto On_Error;
}
HX_ADDREF(m_pPayloadFormatter);
m_pPayloadFormatter->Init(m_pContext, TRUE);
@@ -875,6 +875,11 @@
}
m_fChunksPerSecond = (double) m_header.ulRate / m_header.ulScale;
+ if (m_fChunksPerSecond > MAX_FRAMERATE)
+ {
+ result = HXR_UNEXPECTED;
+ goto On_Error;
+ }
m_fSamplesPerSecond = m_fChunksPerSecond;
INT32 ulMaxChunkSize = 0;
@@ -1130,10 +1135,8 @@
break;
}
default:
- HX_RELEASE(pOpaqueData);
- HX_RELEASE(pSNBuf);
- HX_RELEASE(pMTBuf);
- return HXR_OUTOFMEMORY;
+ result = HXR_OUTOFMEMORY;
+ goto On_Error;
}
// Set opaque data:
@@ -1208,7 +1211,7 @@
// Averate bit rate:
- ULONG32 ulAverageBitrate = (ULONG32) (8 * m_ulAvgChunkSize * m_fChunksPerSecond);
+ ulAverageBitrate = (ULONG32) (8 * m_ulAvgChunkSize * m_fChunksPerSecond);
pHeader->SetPropertyULONG32("AvgBitRate", ulAverageBitrate);
HXLOGL4(HXLOG_AVIX,"\t\tAvgBitRate:\t%lu", ulAverageBitrate);
@@ -1225,7 +1228,7 @@
}
// Preroll:
- UINT32 ulPreroll = (UINT32) (((double) m_ulMaxByteDeflict / ulAverageBitrate) * 1000);
+ ulPreroll = (UINT32) (((double) m_ulMaxByteDeflict / ulAverageBitrate) * 1000);
if (IsAudio())
{
@@ -1274,10 +1277,8 @@
m_pPayloadFormatter = new SimpleSegmentPayloadFormat();
if (!m_pPayloadFormatter)
{
- HX_RELEASE(pOpaqueData);
- HX_RELEASE(pSNBuf);
- HX_RELEASE(pMTBuf);
- return HXR_OUTOFMEMORY;
+ result = HXR_OUTOFMEMORY;
+ goto On_Error;
}
HX_ADDREF(m_pPayloadFormatter);
m_pPayloadFormatter->Init(m_pContext, TRUE);
@@ -1298,6 +1299,7 @@
break;
}
+On_Error:
HX_RELEASE(pOpaqueData);
HX_RELEASE(pSNBuf);
HX_RELEASE(pMTBuf);
_______________________________________________
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