--- a/mdfdevvideoextensions/nga_mdf_postprocessor/src/NGAPostProcHwDevice.cpp Sat Feb 20 00:20:15 2010 +0200
+++ b/mdfdevvideoextensions/nga_mdf_postprocessor/src/NGAPostProcHwDevice.cpp Fri Mar 12 15:50:33 2010 +0200
@@ -55,27 +55,27 @@
CMMFVideoPostProcHwDevice* CNGAPostProcHwDevice::NewL()
{
- PP_DEBUG(_L("CNGAPostProcHwDevice:NewL() ++"));
+ PP_DEBUG(_L("CNGAPostProcHwDevice::NewL() ++"));
CNGAPostProcHwDevice* self = new (ELeave) CNGAPostProcHwDevice;
CleanupStack::PushL(self);
self->ConstructL();
CleanupStack::Pop();
- PP_DEBUG(_L("CNGAPostProcHwDevice:NewL() --"));
+ PP_DEBUG(_L("CNGAPostProcHwDevice::NewL() --"));
return (CMMFVideoPostProcHwDevice*)self;
}
void CNGAPostProcHwDevice::ConstructL()
{
- PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:ConstructL() ++"), this);
+ PP_DEBUG(_L("CNGAPostProcHwDevice[%x]::ConstructL() ++"), this);
// support for VBM buffer interface
iVBMBufferOptions.iNumInputBuffers = KMaxVBMBuffers;
iVBMBufferOptions.iBufferSize = TSize(KMaxVBMInputWidth, KMaxVBMInputHeight);
iPostingTimer = CNGAPostProcTimer::NewL(*this);
iWsSession.Connect();
- PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:ConstructL() --"), this);
+ PP_DEBUG(_L("CNGAPostProcHwDevice[%x]::ConstructL() --"), this);
}
CNGAPostProcHwDevice::CNGAPostProcHwDevice()
@@ -106,14 +106,13 @@
iKeyFrameMode(EFalse),
iFPObserver(NULL)
{
- iRedrawSurfaceId = TSurfaceId::CreateNullId();
iSurfaceId = TSurfaceId::CreateNullId();
iAttributes().iPixelFormat = EUidPixelFormatYUV_422Interleaved;
}
CNGAPostProcHwDevice::~CNGAPostProcHwDevice()
{
- PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:~() ++"), this);
+ PP_DEBUG(_L("CNGAPostProcHwDevice[%x]::~CNGAPostProcHwDevice() ++"), this);
if (iSessionManager)
{
iSessionManager->CancelUpdate();
@@ -655,7 +654,7 @@
void CNGAPostProcHwDevice::MmavsoSetAllowedOutputL(TUint aAllowedOutputMask)
{
- PP_DEBUG(_L("CNGAPostProcHwDevice[%x]::MmavsoSetAllowedOutputL aAllowedOutputMask=%d ++"), this,aAllowedOutputMask);
+ PP_DEBUG(_L("CNGAPostProcHwDevice[%x]::MmavsoSetAllowedOutputL aAllowedOutputMask=0x%08x ++"), this,aAllowedOutputMask);
TInt err = KErrNone;
iSurfaceMask = surfaceHints::EAllowInternalOnly;
if (aAllowedOutputMask == EVideoAllowAll)
@@ -816,6 +815,14 @@
TInt err = KErrNone;
if(iResourceLost)
{
+ err = AddHints();
+ if (err != KErrNone)
+ {
+ PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:MmvroResourcesLost -- failed to AddHints %d"),
+ this, err);
+ iProxy->MdvppFatalError(this, err);
+ return;
+ }
err = RegisterSurface(iSurfaceId);
if (err != KErrNone)
{
@@ -826,19 +833,12 @@
iProxy->MdvppFatalError(this, err);
return;
}
- err = AddHints();
- if (err != KErrNone)
- {
- PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:MmvroResourcesLost -- failed to AddHints %d"),
- this, err);
- iProxy->MdvppFatalError(this, err);
- return;
- }
- iSessionManager->PostPicture(iSurfaceId, 0, 1, EFalse);
- PublishSurfaceCreated();
- iResourceLost = EFalse;
- }
- PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:Redraw --"), this);
+
+ iSessionManager->PostPicture(iSurfaceId, 0, 1, EFalse);
+ PublishSurfaceCreated();
+ iResourceLost = EFalse;
+ }
+ PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:Redraw --"), this);
}
void CNGAPostProcHwDevice::Start()
@@ -1274,16 +1274,11 @@
void CNGAPostProcHwDevice::MmvssSurfaceRemovedL(const TSurfaceId& aSurfaceId)
{
PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:MmvssSurfaceRemovedL()++"), this);
- if(iSurfaceId == aSurfaceId && !aSurfaceId.IsNull())
+ if(!aSurfaceId.IsNull())
{
- if(iInfo().iBuffers > 1) // No need to return temprory redraw surface buffer to decoder
- {
- ReleaseProcessQ();
- }
PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:MmvssSurfaceRemovedL(): UnregisterSurface ID = 0x%x"), this, aSurfaceId );
- iWsSession.UnregisterSurface(0, iSurfaceId);
- iSurfaceHandler->DestroySurface(iSurfaceId);
- iSurfaceId = TSurfaceId::CreateNullId();
+ iWsSession.UnregisterSurface(0, aSurfaceId);
+ iSurfaceHandler->DestroySurface(aSurfaceId);
}
PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:MmvssSurfaceRemovedL() --"), this);
@@ -1318,21 +1313,12 @@
void CNGAPostProcHwDevice::MmvroResourcesLost(TUid )
{
PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:MmvroResourcesLost ++"), this);
- if(!iRedrawSurfaceId.IsNull())
- {
- iResourceLost = ETrue;
- Pause();
- ReleaseInputQ();
- iSessionManager->CancelUpdate();
- ReleaseProcessQ();
- iWsSession.UnregisterSurface(0, iRedrawSurfaceId);
- iSurfaceHandler->DestroySurface(iRedrawSurfaceId);
- iRedrawSurfaceId = TSurfaceId::CreateNullId();
- }
- else
- {
- PP_DEBUG(_L("CNGAPostProcHwDevice[%x]::MmvroResourcesLost ERROR iRedrawSurfaceId NULL"), this);
- }
+ iResourceLost = ETrue;
+ Pause();
+ ReleaseInputQ();
+ iSessionManager->CancelUpdate();
+ ReleaseProcessQ();
+ iVideoSurfaceObserver->MmvsoRemoveSurface();
PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:MmvroResourcesLost --"), this);
}
@@ -1382,8 +1368,6 @@
TInt err = KErrNone;
SetSurfaceAttributes(surfaceSize, 1);
- iRedrawSurfaceId = iSurfaceId;
-
err = iSurfaceHandler->CreateSurface(iAttributes, iSurfaceId);
if (err != KErrNone)
{
@@ -1438,8 +1422,7 @@
if(!iSurfaceId.IsNull())
{
PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:SetupExternalSurface Cleaning ReDraw Surface"), this);
- iWsSession.UnregisterSurface(0, iSurfaceId);
- iSurfaceHandler->DestroySurface(iSurfaceId);
+ iVideoSurfaceObserver->MmvsoRemoveSurface();
}
iSurfaceId = aSurfaceID;
@@ -1464,6 +1447,13 @@
this, err);
return err;
}
+ err = AddHints();
+ if (err != KErrNone)
+ {
+ PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:SetupExternalSurface -- failed to AddHints %d"),
+ this, err);
+ return err;
+ }
err = RegisterSurface(iSurfaceId);
if (err != KErrNone)
{
@@ -1473,21 +1463,15 @@
iSurfaceId = TSurfaceId::CreateNullId();
return err;
}
- err = AddHints();
- if (err != KErrNone)
- {
- PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:SetupExternalSurface -- failed to AddHints %d"),
- this, err);
- return err;
- }
- err = iSurfaceHandler->SurfaceInfo(iSurfaceId, iInfo);
- if (err != KErrNone)
- {
- PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:SetupExternalSurface -- failed to get Surface info %d"),
- this, err);
- return err;
- }
-
+
+ err = iSurfaceHandler->SurfaceInfo(iSurfaceId, iInfo);
+ if (err != KErrNone)
+ {
+ PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:SetupExternalSurface -- failed to get Surface info %d"),
+ this, err);
+ return err;
+ }
+
PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:SetupExternalSurface err=%d"), this, err);
return err;
}
@@ -1790,20 +1774,21 @@
iSurfaceId = TSurfaceId::CreateNullId();
return err;
}
- err = RegisterSurface(iSurfaceId);
- if (err != KErrNone)
- {
- PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:Initialize -- failed to RegisterSurface %d"), this, err);
- iSurfaceHandler->DestroySurface(iSurfaceId);
- iSurfaceId = TSurfaceId::CreateNullId();
- return err;
- }
- err = AddHints();
- if (err != KErrNone)
- {
- PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:Initialize -- failed to AddHints %d"), this, err);
- return err;
- }
+ err = AddHints();
+ if (err != KErrNone)
+ {
+ PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:Initialize -- failed to AddHints %d"), this, err);
+ return err;
+ }
+ err = RegisterSurface(iSurfaceId);
+ if (err != KErrNone)
+ {
+ PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:Initialize -- failed to RegisterSurface %d"), this, err);
+ iSurfaceHandler->DestroySurface(iSurfaceId);
+ iSurfaceId = TSurfaceId::CreateNullId();
+ return err;
+ }
+
}
return err;
}
@@ -2087,7 +2072,7 @@
TInt CNGAPostProcHwDevice::AddHints()
{
- PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:AddHints ++"), this);
+ PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:AddHints iSurfaceMask 0x%08x ++"), this, iSurfaceMask);
TInt err = KErrNone;
iHint.Set(iSurfaceKey,iSurfaceMask,ETrue);
err = iSurfaceHandler->AddSurfaceHint(iSurfaceId,iHint);