[prev in list] [next in list] [prev in thread] [next in thread] 

List:       helix-datatype-cvs
Subject:    [Datatype-cvs] mdf/video/renderer mdfvideoadapter.cpp,
From:       balcock () helixcommunity ! org
Date:       2011-08-24 7:52:34
Message-ID: 201108240752.p7O7qtcO022501 () mailer ! progressive-comp ! com
[Download RAW message or body]

Update of /cvsroot/datatype/mdf/video/renderer
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv18569

Modified Files:
      Tag: hxclient_4_2_0_brizo
	mdfvideoadapter.cpp 
Log Message:
"Nokia submits this code under the terms of a commercial contribution agreement with \
Real Networks, and I am authorized to contribute this code under said agreement."

Modified by:  nadeem.wahid@nokia.com

Reviewed by: girish.shetty@nokia.com

RC Id: ou1cimx1#859590
 
Date: 07/15/2011
 
Project: SymbianMmf_wm
 
Synopsis: Ensure that non-DRM content can be mapped onto graphics surfaces
 
Overview:

Presently, Helix always calls \
MMmfAdvancedVideoSecureOutput::MmavsoSetAllowedOutputL() towards MMF to indicate the \
allowed video/audio outputs for the content.  A side effect of calling this API is \
that the content cannot be mapped onto graphics surfaces.  This unnecessarily \
restricts non-DRM content. The semantics of calling this API needs to change such \
that it is only called for DRM content, thus allowing non-DRM content to be mapped.

Fix:    

MmavsoSetAllowedOutputL() should be called for (1) DRM content or (2) non-DRM \
streaming content that can potentially change to DRM.  In the streaming case, once \
the graphics memory is mapped by a call to MmavsoSetAllowedOutputL(), it cannot be \
unmapped.  Consequently, the decision as to whether the API should be called or not \
has to be made upfront before the clip is played and can't be altered mid-stream.

In CXPSFileFormat::InitFileFormat(), set a new MMF.ProtectionVolatile registry \
parameter to 1, so we know that the content comes from XPS and can potentially change \
between DRM and non-DRM. CMdfVideoAdapter::InitL() reads MMF.ProtectionVolatile and \
communicates this to CMDFDevVideoServerSession::CreateDevVideoL() via a new boolean \
CDevVideoInitParams::m_bProtectionVolatile.

CreateDevVideoL() adds an extra check so that SetOutputRestrictions() is only called \
if the content is DRM (allowed outputs != EDrmAllowAll) or comes from XPS \
(m_bProtectionVolatile is true).  
Files modified & changes:

datatype\mdf\video\renderer\mdfdevice\server\CMDFDevVideoServerCmds.h
datatype\mdf\video\renderer\mdfdevice\server\CMDFDevVideoServerSession.cpp
datatype\mdf\video\renderer\mdfvideoadapter.cpp
datatype\xps\fileformat\CXPSFileformat.cpp
 
Image Size and Heap Use impact: Little impact
 
Module Release testing (STIF) : Yes
 
Test case(s) Added : No
 
Platforms and profiles build verified: helix-client-s60-52-mmf-mdf-dsp
 
Platforms and Profiles Functionality verified: armv5
 
Branch: Brizo420, HEAD
  


Index: mdfvideoadapter.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/renderer/mdfvideoadapter.cpp,v
retrieving revision 1.107.2.1.2.18
retrieving revision 1.107.2.1.2.19
diff -u -d -r1.107.2.1.2.18 -r1.107.2.1.2.19
--- mdfvideoadapter.cpp	20 Jul 2011 15:16:58 -0000	1.107.2.1.2.18
+++ mdfvideoadapter.cpp	24 Aug 2011 07:52:31 -0000	1.107.2.1.2.19
@@ -485,6 +485,7 @@
         IHXRegistry* pReg = NULL;
         INT32 lCopyRestricted = 0;
         INT32 prio = 0;
+        INT32 bProtectionVolatile = 0;
 
         // Read in secure output, priority from registry
         // secure output: If it is set, video output needs to be secure (to prevent \
copying/recording). @@ -527,6 +528,8 @@
                     m_pPropWatch->Init(this);
                 }
             }
+            // Retrieve whether the content protection can change mid-stream
+            (void) pReg->GetIntByName("MMF.ProtectionVolatile", \
bProtectionVolatile);  HX_RELEASE(pReg);
         }
 
@@ -536,6 +539,7 @@
         pInitParam->m_pPictureHeader = (TVideoPictureHeader*)m_pPictureHeader;
         pInitParam->m_pMDFEncodedFrameQ = m_pMDFEncodedFrameQ;
         pInitParam->m_lDrmAllowedOutputs = lCopyRestricted;
+        pInitParam->m_bProtectionVolatile = (bProtectionVolatile == 0) ? FALSE : \
TRUE;  pInitParam->m_lResourcePriority = prio;
         pInitParam->m_bReturnPictures = m_bReturnPictures;
         pInitParam->m_bDisablePostProcessor = m_bDisablePostProcessor;


_______________________________________________
Datatype-cvs mailing list
Datatype-cvs@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/datatype-cvs


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic