[Datatype-cvs] mdf/video/format/wmv mdfwmvpayloadformat.cpp, 1.1.2.8, 1.1.2.8.2.1
yuryrp at helixcommunity.org yuryrp at helixcommunity.orgUpdate of /cvsroot/datatype/mdf/video/format/wmv
In directory cvs.internal.helixcommunity.org:/tmp/cvs-serv9962
Modified Files:
Tag: hxclient_2_2_1_cayennes
mdfwmvpayloadformat.cpp
Log Message:
Modified by: yury.ramanovich at nokia.com
Reviewed by: vijay.gondi at nokia.com, ehyche at real.com
Date: 05/05/2008
Project: SymbianMmf_wm
ErrorId: ECTN-7CMLEA
Synopsis: phone displayed 'invalid clip' when streaming unsupported wm video and supported wm audio
Overview: currently clip with supported wm audio and unsupported wmv video is not rejected by wm decoder during ConfigureDecoderL call but during actual decoding of a first picture, which causes PlaybackComplete(KErrNotSupported) and "Invalid clip" message displayed to user and audio is Not played. We need to ensure that in this case "Partial playback" message is shown and supported wm audio is played.
Solution: currently only WMV3 fourcc is supported. Get the fourcc code from Bitmap Info Header's Compression ID in Stream Properties Object. Then check the fourcc code of wm video in CWMVPayloadFormatPluginDevice::Init() and if it is not supported, then return HXR_UNSUPPORTED_VIDEO to CMdfVideoAdapter::Init().
Files modified:
/datatype/mdf/video/format/wmv/pub/mdfwmvpayloadformat.h
/datatype/mdf/video/format/wmv/mdfwmvpayloadformat.cpp
Files added:
None
Image Size and Heap Use impact: minor.
Module Release testing (STIF) : Yes, Passed
Test case(s) Added : No
Memory leak check performed : Yes. No new memory leaks introduced.
Platforms and Profiles Build Verified: helix-client-s60-50-mmf-mdf-arm
Platforms and Profiles Functionality verified: armv5, winscw
Branch: Head & 210CayS & 221Cays
Index: mdfwmvpayloadformat.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/wmv/mdfwmvpayloadformat.cpp,v
retrieving revision 1.1.2.8
retrieving revision 1.1.2.8.2.1
diff -u -d -r1.1.2.8 -r1.1.2.8.2.1
--- mdfwmvpayloadformat.cpp 30 Jan 2008 17:17:05 -0000 1.1.2.8
+++ mdfwmvpayloadformat.cpp 5 May 2008 20:25:21 -0000 1.1.2.8.2.1
@@ -77,7 +77,8 @@
const UINT32 RCV_V1_ID = 0x85000000;
const UINT32 RCV_v1_FIELD2 = 0x00000004;
const UINT32 RCV_v1_HDR_LEN = 20;
-const UINT32 RCV_CODECSPEC_DATALEN = 4;
+const UINT32 RCV_CODECSPEC_DATALEN = 4;
+const UINT32 FOURCC_WMV3 = 0x33564D57; // 'W' 'M' 'V' '3'
CWMVPayloadFormatPluginDevice::CWMVPayloadFormatPluginDevice()
: m_pInputAllocator( NULL ),
@@ -141,6 +142,17 @@
if (SUCCEEDED(retVal))
{
+ // only WMV3 is supported
+ if (m_ulCompression != FOURCC_WMV3)
+ {
+ HX_RELEASE(m_pCSDBuffer);
+ retVal = HXR_UNSUPPORTED_VIDEO;
+ MDFVIDEOLOG_WRITE_FORMAT2("Unsupported wmv format: m_ulCompression=0x%08x",m_ulCompression );
+ }
+ }
+
+ if (SUCCEEDED(retVal))
+ {
retVal = CPayloadFormatPluginDevice::Init( pContext, pHeader);
}
}
@@ -199,6 +211,7 @@
UINT32 imgHeight= cTSData.m_ulEncodedImageHeight;
PackUINT32LEInc(&pBuf,&ulLen,imgHeight);
PackUINT32LEInc(&pBuf,&ulLen,imgWidth);
+ m_ulCompression = cTSData.m_BitmapInfoHeader.biCompression;
}
}
}