Revision: 201034 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 15 Sep 2010 13:51:05 +0300
branchRCL_3
changeset 55 e51ae4fd18e6
parent 52 613edd2a8a70
child 65 af86cc8a4692
Revision: 201034 Kit: 201036
mdfdevvideoextensions/nga_mdf_postprocessor/src/NGAPostProcHwDevice.cpp
mm_pub/drm_audio_player_api/tsrc/data/mmc/drm/test3gp.dcf
mm_pub/drm_audio_player_api/tsrc/data/mmc/drm/testmp3.dcf
--- a/mdfdevvideoextensions/nga_mdf_postprocessor/src/NGAPostProcHwDevice.cpp	Wed Sep 15 00:15:16 2010 +0300
+++ b/mdfdevvideoextensions/nga_mdf_postprocessor/src/NGAPostProcHwDevice.cpp	Wed Sep 15 13:51:05 2010 +0300
@@ -1550,7 +1550,17 @@
     PP_DEBUG(_L("CNGAPostProcHwDevice[%x]::MmvshcRedrawBufferToSurface -- Creating %d x %d surface"), this, iPicSize.iWidth, iPicSize.iHeight);
 
    	TInt err = KErrNone;
-	SetSurfaceAttributes(iPicSize, 1); 
+	TSize evenSize(iPicSize);
+	if (evenSize.iWidth % 2 != 0)
+		{
+		++evenSize.iWidth;
+		}
+	if (evenSize.iHeight % 2 != 0)
+		{
+		++evenSize.iHeight;
+		}
+
+	SetSurfaceAttributes(evenSize, 1); 
 	
   	err = iSurfaceHandler->CreateSurface(iAttributes, iSurfaceId);
   	if (err != KErrNone)
@@ -1614,7 +1624,20 @@
     PP_DEBUG(_L("CNGAPostProcHwDevice[%x]::MmvshcRedrawBufferToSurface offset = %d"), this, offset);
 
 	lPtr = reinterpret_cast<TUint8*>(iChunk.Base() + offset);
-	memcpy((TAny *)lPtr, (TAny *)aRedrawBuffer.Ptr(), redrawBufferSize);
+
+	if (evenSize.iWidth > iPicSize.iWidth)
+		{
+		TInt redrawLineWidth = redrawBufferSize / iPicSize.iHeight;
+
+		for (TInt i = 0; i < iPicSize.iHeight; ++i)
+			{
+			memcpy((TAny*)(lPtr + (i * iInfo().iStride)), (TAny*)(aRedrawBuffer.Ptr() + (i * redrawLineWidth)), redrawLineWidth);
+			}
+		}
+	else
+		{
+		memcpy((TAny *)lPtr, (TAny *)aRedrawBuffer.Ptr(), redrawBufferSize);
+		}
 
 	iRedrawSurfaceInUse = ETrue;