"Nokia submits this code under the terms of a commercial contribution agreement 
with RealNetworks, and I am authorized to contribute this code under said 
agreement."

Modified by:  [email protected]

Reviewed by:

Date: 08/11/2009

Project: SymbianMmf_wm

ErrorId: N/A

Synopsis:  Update 2 for SUB 417-21335 - use CConfigurationComponentsFactory to 
create CRestrictedAudioOutput

Overview:  The preferred method to create CRestrictedAudioOutput is to via 
CConfigurationComponentsFactory interface instead of using NewL() directly.

Solution:  Used CConfigurationComponentsFactory to create 
CRestrictedAudioOutput; consolidated code that handles CRestrictedAudioOutput 
into CHXAudioOutputConfigUtil::ConfigureRestrictedOutput() function;
Also due to missing adaptation on WINSCW emulator, 
CHXAudioOutputConfigUtil::ConfigureOutputRestrictions() will now return HXR_OK 
for plain media files on WINSCW.

Files Added:
None.

Files Modified:
/audio/device/platform/symbian/common/CHXAudioOutputConfigUtil.cpp
/audio/device/pub/platform/symbian/CHXAudioOutputConfigUtil.h
/client/core/clntcoredll_symbian.pcf
/datatype/mdf/audio/dsp/Umakefil



Image Size and Heap Use impact: minor

Module Release testing (STIF) :  MRT subset passed on 
helix-client-s60-50-mmf-mdf-dsp.

Test case(s) Added  :  No.

Memory leak check performed : Yes. No new leaks introduced

Platforms and Profiles Build Verified: helix-client-s60-50-mmf-mdf-dsp,
helix-client-s60-50-mmf-mdf-arm

Platforms and Profiles Functionality verified: armv5, winscw

Branch: 210CayS, HEAD





Index: audio/device/platform/symbian/common/CHXAudioOutputConfigUtil.cpp
===================================================================
RCS file: 
/cvsroot/audio/device/platform/symbian/common/CHXAudioOutputConfigUtil.cpp,v
retrieving revision 1.1.2.1
diff -u -w -r1.1.2.1 CHXAudioOutputConfigUtil.cpp
--- audio/device/platform/symbian/common/CHXAudioOutputConfigUtil.cpp   28 Jul 
2009 20:58:38 -0000      1.1.2.1
+++ audio/device/platform/symbian/common/CHXAudioOutputConfigUtil.cpp   11 Aug 
2009 18:37:32 -0000
@@ -175,14 +175,18 @@
 }
 
 
-TInt CHXAudioOutputConfigUtil::SetAllowedOutputs(const TUint 
aDrmAllowedOutputs, CMMFDevSound& aDevsound)
+TInt CHXAudioOutputConfigUtil::ConfigureRestrictedOutput(const TUint 
aDrmAllowedOutputs, CMMFDevSound& aDevsound)
 {
     TInt hxr = HXR_OK;
 
-    HXLOGL2(HXLOG_ADEV, "CHXAudioOutputConfigUtil::SetAllowedOutputs(): 
aDrmAllowedOutputs = 0x%08x", aDrmAllowedOutputs);
-    // try CRestrictedAudioOutput first
+    HXLOGL2(HXLOG_ADEV, 
"CHXAudioOutputConfigUtil::ConfigureRestrictedOutput(): aDrmAllowedOutputs = 
0x%08x", aDrmAllowedOutputs);
+    CConfigurationComponentsFactory* pFactory = NULL;
     CRestrictedAudioOutput* pRestrictedAudioOutput = NULL;
-    TRAPD(Err, pRestrictedAudioOutput = (CRestrictedAudioOutput*) 
CRestrictedAudioOutputProxy::NewL(aDevsound));
+    
+    TRAPD(Err, CConfigurationComponentsFactory::CreateFactoryL(pFactory));
+    if(Err == KErrNone)
+    {
+        Err = pFactory->CreateRestrictedAudioOutput(aDevsound, 
pRestrictedAudioOutput);
     if (Err == KErrNone)
     {
         //map drm enums to valid CRestrictedAudioOutput enums
@@ -196,25 +200,57 @@
             {
                 hxr = KErrNotSupported;
                 HXLOGL2(HXLOG_ADEV, 
-                "CHXAudioOutputConfigUtil::SetAllowedOutputs(): can't add 
output pref %d",m_AllowedOutputPrefsList[index]);
-                HX_DELETE(pRestrictedAudioOutput);
-                return hxr; // or should we keep going?        
+                    "CHXAudioOutputConfigUtil::ConfigureRestrictedOutput: 
can't add output pref %d", m_AllowedOutputPrefsList[index]);
+                    // bail out of the loop
+                    break;
             }
             HXLOGL2(HXLOG_ADEV, 
-                    "CHXAudioOutputConfigUtil::SetAllowedOutputs(): added 
output pref %d",m_AllowedOutputPrefsList[index]);
+                "CHXAudioOutputConfigUtil::ConfigureRestrictedOutput: added 
output pref %d", m_AllowedOutputPrefsList[index]);
         }
                        
-        // commit
+            // commit output prefs...
+            if (hxr == HXR_OK)
+            {
         Err = pRestrictedAudioOutput->Commit();
         if ( Err != KErrNone)
         {
             hxr = KErrNotSupported;
-            HXLOGL2(HXLOG_ADEV, 
"CHXAudioOutputConfigUtil::SetAllowedOutputs(): can't commit output prefs");
+                    HXLOGL2(HXLOG_ADEV, 
"CHXAudioOutputConfigUtil::ConfigureRestrictedOutput: can't commit output 
prefs");
+                }
+            } 
+            HX_DELETE(pRestrictedAudioOutput);
+        }
+        else
+        {
+            // we couldn't create CRestrictedAudioOutput
+            hxr = KErrNotSupported;
+            HXLOGL2(HXLOG_ADEV, 
"CHXAudioOutputConfigUtil::ConfigureRestrictedOutput(): failed to create 
CRestrictedAudioOutput"); 
         } 
+        HX_DELETE(pFactory);
     }
     else
     {
-        // there was some problem instantiating CRestrictedAudioOutput, 
+        // we couldn't create factory
+        hxr = KErrNotSupported;
+        HXLOGL2(HXLOG_ADEV, 
"CHXAudioOutputConfigUtil::ConfigureRestrictedOutput(): failed to create 
factory"); 
+    }
+    
+    HXLOGL2(HXLOG_ADEV, 
"CHXAudioOutputConfigUtil::ConfigureRestrictedOutput(): Ret Err %d hxr %d", 
Err, hxr);  
+    return hxr;
+}
+
+
+TInt CHXAudioOutputConfigUtil::SetAllowedOutputs(const TUint 
aDrmAllowedOutputs, CMMFDevSound& aDevsound)
+{
+    TInt hxr = HXR_OK;
+
+    HXLOGL2(HXLOG_ADEV, "CHXAudioOutputConfigUtil::SetAllowedOutputs(): 
aDrmAllowedOutputs = 0x%08x", aDrmAllowedOutputs);
+    // try CRestrictedAudioOutput first
+    hxr = ConfigureRestrictedOutput(aDrmAllowedOutputs, aDevsound);
+    
+    if(hxr == KErrNotSupported)
+    {
+        // there was some problem with CRestrictedAudioOutput, 
         // fallback to using CAudioOutput
         HXBOOL bSecureAudio = FALSE;
         if (aDrmAllowedOutputs == EDrmAllowAll)
@@ -229,8 +265,7 @@
         hxr = SetSecureOutput(bSecureAudio,aDevsound);
     }
     
-    HX_DELETE(pRestrictedAudioOutput);
-    HXLOGL2(HXLOG_ADEV, "CHXAudioOutputConfigUtil::SetAllowedOutputs(): Ret 
Err %d hxr %d", Err, hxr);   
+    HXLOGL2(HXLOG_ADEV, "CHXAudioOutputConfigUtil::SetAllowedOutputs(): Ret 
hxr %d", hxr);   
 
     return hxr;  
 } 
@@ -240,18 +275,25 @@
 TInt CHXAudioOutputConfigUtil::ConfigureOutputRestrictions(const TUint 
allowedOutputsMask, CMMFDevSound& aDevsound)
 {
     TInt hxr = HXR_OK;
+    HXBOOL bSecureAudio = FALSE;
+    
 #if defined(HELIX_FEATURE_SYMBIAN_ADVANCED_SECURE_OUTPUT)
     hxr = SetAllowedOutputs(allowedOutputsMask, aDevsound);
+    if (allowedOutputsMask != EDrmAllowAll)
+    {
+        bSecureAudio = TRUE;
+    }
 #else
     // we're in True/False land here...
-    HXBOOL bSecureAudio = allowedOutputsMask & 0x1;
-
+    bSecureAudio = allowedOutputsMask & 0x1;
     hxr = SetSecureOutput(bSecureAudio, aDevsound);
- 
 #endif
 
 #if defined(__WINSCW__)
+    if (bSecureAudio == FALSE)
+    {
     hxr = HXR_OK;
+    }    
 #endif    
 
     HXLOGL2(HXLOG_ADEV, 
"CHXAudioOutputConfigUtil::ConfigureOutputRestrictions(): hxr %d", hxr);  
     
     
Index: audio/device/pub/platform/symbian/CHXAudioOutputConfigUtil.h
===================================================================
RCS file: 
/cvsroot/audio/device/pub/platform/symbian/CHXAudioOutputConfigUtil.h,v
retrieving revision 1.1.2.1
diff -u -w -r1.1.2.1 CHXAudioOutputConfigUtil.h
--- audio/device/pub/platform/symbian/CHXAudioOutputConfigUtil.h        4 Aug 
2009 14:28:30 -0000       1.1.2.1
+++ audio/device/pub/platform/symbian/CHXAudioOutputConfigUtil.h        11 Aug 
2009 18:37:32 -0000
@@ -67,7 +67,8 @@
 #include <e32cmn.h> // RArray
 #include <drmagents.h>
 using namespace DRM;
-#include <RestrictedAudioOutputProxy.h>
+#include <RestrictedAudioOutput.h>
+#include <ConfigurationComponentsFactory.h>
 #endif
 
 
@@ -78,16 +79,15 @@
     virtual ~CHXAudioOutputConfigUtil();
 
     TInt SetSecureOutput(HXBOOL bSecureAudio, CMMFDevSound& aDevsound);
-#if defined(HELIX_FEATURE_SYMBIAN_ADVANCED_SECURE_OUTPUT)    
-    TInt SetAllowedOutputs(const TUint allowedOutputsMask, CMMFDevSound& 
aDevsound);
-    void GetAllowedOutputPrefs(const TUint aDrmAllowedOutputs);
-#endif
     TInt ConfigureOutputRestrictions(const TUint allowedOutputsMask, 
CMMFDevSound& aDevsound);
 protected:
 #if defined(HELIX_FEATURE_SYMBIAN_ADVANCED_SECURE_OUTPUT)  
+    void GetAllowedOutputPrefs(const TUint aDrmAllowedOutputs);
+    TInt ConfigureRestrictedOutput(const TUint allowedOutputsMask, 
CMMFDevSound& aDevsound); 
+    TInt SetAllowedOutputs(const TUint allowedOutputsMask, CMMFDevSound& 
aDevsound);
+    
     RArray<CRestrictedAudioOutput::TAllowedOutputPreference> 
m_AllowedOutputPrefsList;   
 #endif
-  
 };
 
 
Index: client/core/clntcoredll_symbian.pcf
===================================================================
RCS file: /cvsroot/client/core/clntcoredll_symbian.pcf,v
retrieving revision 1.11.2.3
diff -u -w -r1.11.2.3 clntcoredll_symbian.pcf
--- client/core/clntcoredll_symbian.pcf 23 Jul 2009 14:55:09 -0000      1.11.2.3
+++ client/core/clntcoredll_symbian.pcf 11 Aug 2009 18:37:37 -0000
@@ -63,8 +63,8 @@
     project.AddSystemLibraries("AudioOutputRouting.lib")
     
 if project.IsDefined('HELIX_FEATURE_SYMBIAN_ADVANCED_SECURE_OUTPUT'):
+    project.AddSystemLibraries("ConfigurationComponentsFactory.lib")
     project.AddSystemLibraries("RestrictedAudioOutput.lib")
-    project.AddSystemLibraries("RestrictedAudioOutputProxy.lib")
     
 if (not project.IsDefined('_SYMBIAN_61_')):
     project.AddSystemLibraries('connmon.lib')

Index: datatype/mdf/audio/dsp/Umakefil
===================================================================
RCS file: /cvsroot/datatype/mdf/audio/dsp/Umakefil,v
retrieving revision 1.2.2.13
diff -u -w -r1.2.2.13 Umakefil
--- datatype/mdf/audio/dsp/Umakefil     23 Jul 2009 15:01:50 -0000      1.2.2.13
+++ datatype/mdf/audio/dsp/Umakefil     11 Aug 2009 18:38:12 -0000
@@ -115,8 +115,8 @@
     project.AddSystemLibraries("AudioOutputRouting.lib")
 
 if project.IsDefined('HELIX_FEATURE_SYMBIAN_ADVANCED_SECURE_OUTPUT'):
+    project.AddSystemLibraries("ConfigurationComponentsFactory.lib")
     project.AddSystemLibraries("RestrictedAudioOutput.lib")
-    project.AddSystemLibraries("RestrictedAudioOutputProxy.lib")
     
 project.ExportFunction("RACreateDecoderInstance",
                        "const CLSID &clsid, IUnknown** ppUnknown")
_______________________________________________
Audio-dev mailing list
[email protected]
http://lists.helixcommunity.org/mailman/listinfo/audio-dev

Reply via email to