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

List:       helix-datatype-dev
Subject:    COMMIT: RE: [datatype-dev] RESEND: CR: Add PlayReady Support.
From:       <ext-sanket.lopes () nokia ! com>
Date:       2010-02-24 22:22:06
Message-ID: 89F9BF23C080784180D44D7A8FEBA4291C840AD96E () NOK-EUMSG-03 ! mgdnok ! nokia ! com
[Download RAW message or body]


Thanks Sheldon.
Committed to 210_cays

Br,
Sanekt

-----Original Message-----
From: ext Sheldon Fu [mailto:sfu@real.com]
Sent: Wednesday, February 24, 2010 10:48 AM
To: Lopes Sanket (EXT-Infovision/Dallas)
Cc: nokia-private-dev@helixcommunity.org; datatype-dev@helixcommunity.org
Subject: Re: [datatype-dev] RESEND: CR: Add PlayReady Support.

Looks ok for 210Cayennes branch.

You probably know that Helix has its own DRM architecture, which has the DRM plugin \
loaded and used by the engine core, instead of by file format. This is so that the \
core can be aware of protected content playback and enable some security features.

I don't know what Nokia's plan for atlas and beyond is and the reason it was \
originally decided to have your own 'DRM plugin' loaded by file format but moving \
forward you may want to consider leveraging the Helix DRM architecture.

fxd

On Mon, 2010-02-22 at 12:26 -0800, ext-sanket.lopes@nokia.com wrote:
> Hi,
> 
> Any Comments?
> 
> Had attached old version of asffflib_symbian.pcf, here is the new
> file.
> 
> 
> Thanks,
> Sanket
> _____________________________________________
> From:    Lopes Sanket (EXT-Infovision/Dallas)
> Sent:   Friday, February 19, 2010 10:43 AM
> To:     'nokia-private-dev@helixcommunity.org';
> 'datatype-dev@helixcommunity.org'
> Subject:        CR: Add PlayReady Support.
> 
> "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: ext-sanket.lopes@nokia.com
> 
> Reviewed by:
> 
> Date: 02/19/2010
> 
> Project: symbianmmf_wm
> 
> ErrorId: N/A
> 
> Synopsis:  Add PlayReady Support.
> 
> Overview:
> Microsoft PlayReady content access technology is a new content access
> technology designed for digital entertainment services, devices and
> applications. Playready DRM protected files have clear headers only
> the data is encrypted. So Helix needs to recognize the file by
> interpreting the headers correctly, then read the encrypted Data and
> get it decrypted from WmDrmServer and then pass for playing.
> With this CR we are only submitting changes required for Helix to
> Support Playready. WmDrmServer code is not yet available and so this
> Helix implementation is flagged behind
> HELIX_FEATURE_WMDRM_PLAYREADY_SUPPPORTmacro.
> WmDrmServer support is expected by wk13.
> 
> Files Modified:
> common/include/hxpiids.h
> datatype/wm/fileformat/asf_depacketizer.cpp
> datatype/wm/fileformat/asf_file_format_file.cpp
> datatype/wm/fileformat/pub/asf_depacketizer.h
> datatype/wm/fileformat/pub/asf_file_format_file.h
> datatype/wm/common/asf_guid_enum_map.cpp
> datatype/wm/common/parse_asf_objects.cpp
> datatype/wm/common/parse_audio.cpp
> datatype/wm/common/parse_video.cpp
> datatype/wm/common/pub/asf_guid_enums.h
> datatype/wm/common/pub/asf_guids.h
> datatype/wm/common/pub/parse_asf_objects.h
> 
> Files Added:
> Datatype/wm/fileformat/pub/platform/symbian/hxwmplayreadyext.h
> Datatype/wm/fileformat/asffflib_symbian.pcf
> 
> Image Size and Heap Use impact: no major impact
> 
> Module Release testing (STIF) : N/A
> 
> Test case(s) Added  : No
> 
> Memory leak check performed : Yes
> 
> Platforms and Profiles Build Verified: helix-client-s60-52-mmf-mdf
> 
> Platforms and Profiles Functionality verified: armv5, winscw
> 
> Branch: 210 Cayennes
> 
> New files:
> << File: asffflib_symbian.pcf >>    << File: hxwmplayreadyext.h >>
> Diff Files:
> << File: include_diff.txt >>  << File: ff_diff.txt >>  << File:
> comm_diff.txt >>
> 
> Index: hxpiids.h
> ===================================================================
> RCS file: /cvsroot/common/include/hxpiids.h,v
> retrieving revision 1.47.2.5
> diff -u -b -r1.47.2.5 hxpiids.h
> --- hxpiids.h   9 Feb 2010 16:23:32 -0000       1.47.2.5
> +++ hxpiids.h   16 Feb 2010 21:12:50 -0000
> @@ -1158,6 +1158,8 @@
> DEFINE_GUID_ENUM(IID_IHXMMFDataSourceObserver2,
> 0x03060537, 0xa993, 0x43cc, 0xa2, 0xd3, 0xf2, 0x90, 0x08, 0xc8, 0xef,
> 0xff)
> 
> +DEFINE_GUID_ENUM(IID_IHXWMPlayReadyExt, 0x5482e822, 0x7b69, 0x46fe,
> 0x9d,
> +                                              0xb8, 0x3f, 0x99, 0xf4,
> 0x3d, 0x60, 0xe8)
> #endif /* _HXPRIVATEIIDS_H_ */
> 
> Index: asf_depacketizer.cpp
> ===================================================================
> RCS file: /cvsroot/datatype/wm/fileformat/asf_depacketizer.cpp,v
> retrieving revision 1.3.4.2
> diff -u -b -r1.3.4.2 asf_depacketizer.cpp
> --- asf_depacketizer.cpp        22 May 2007 16:32:10 -0000
> 1.3.4.2
> +++ asf_depacketizer.cpp        19 Feb 2010 16:18:56 -0000
> @@ -43,6 +43,8 @@
> #include "pckunpck.h"
> #include "nestbuff.h"
> #include "hxsrcin.h"
> +#include "hxtlogutil.h"
> +#include "hxwmplayreadyext.h"
> 
> // If this is defined, then replicated data // is copied into the
> packet buffer @@ -59,6 +61,7 @@
> , m_pWM2HXSubStreamMap(pWM2HXSubStreamMap)
> , m_ulNumMapEntries(ulNumMapEntries)
> , m_pDrmPlugin(pDrmPlugin)
> +    , m_pWMPlayReadyExt(NULL)
> {
> HX_ADDREF(m_pContext);
> }
> @@ -73,6 +76,8 @@
> HX_DELETE(m_pOutputQueue);
> // Delete the pending payload queue
> HX_DELETE(m_pPendingPayloadQueue);
> +    // Release our ref on the m_pWMPlayReadyExt
> +    HX_RELEASE(m_pWMPlayReadyExt);
> // Release our ref on the context
> HX_RELEASE(m_pContext);
> // XXXMEH - the following members are owned by the fileformat @@
> -219,6 +224,12 @@
> if (SUCCEEDED(retVal))
> {
> // Process this single payload,
> decrypt it needed
> +
> +#if defined(HELIX_FEATURE_WMDRM_PLAYREADY_SUPPPORT)
> +                                           retVal =
> SendReplicatedData(pPayload->m_pASFPacket->GetBuffer() +
> pPayload->m_ulReplicatedDataOffset,
> +
> pPayload->m_ulReplicatedDataLen);
> +#endif
> +
> retVal =
> ProcessCompletePayload(pPayload, ulHXStreamNum, ulHXSubStreamNum,
> TRUE);
> }
> }
> @@ -415,7 +426,13 @@
> ulDstOffset + ulNumBytes <=
> ulPacketBufferSize)
> {
> // Decrypt the payload in place
> +
> +#if defined(HELIX_FEATURE_WMDRM_PLAYREADY_SUPPPORT)
> +                            retVal =
> SendReplicatedData(cTmpPayload.m_pASFPacket->GetBuffer() +
> cTmpPayload.m_ulReplicatedDataOffset,
> +
> cTmpPayload.m_ulReplicatedDataLen);
> +#else
> retVal =
> DecryptPayload(pPayload->m_pASFPacket->GetBuffer() + ulSrcOffset,
> ulNumBytes);
> +#endif
> if (SUCCEEDED(retVal))
> {
> // Copy this payload's data into the
> newly created buffer @@ -462,7 +479,11 @@
> cTmpPayload.m_ulReplicatedDataLen     = 0;
> #endif
> // Now we can call ProcessCompletePayload.
> Decryption is not necessary, it was done earlier
> +#if defined(HELIX_FEATURE_WMDRM_PLAYREADY_SUPPPORT)
> +                        retVal = ProcessCompletePayload(&cTmpPayload,
> ulHXStreamNum, ulHXSubStreamNum, TRUE);
> +#else
> retVal = ProcessCompletePayload(&cTmpPayload,
> ulHXStreamNum, ulHXSubStreamNum, FALSE);
> +#endif
> }
> }
> }
> @@ -730,6 +751,29 @@
> }
> }
> 
> +HX_RESULT CHXASFDepacketizer::SendReplicatedData(BYTE*
> pReplicatedData, UINT32 replicatedDataLen)
> +{
> +    HX_RESULT retVal = HXR_OK;
> +
> +    if( (replicatedDataLen > 8) && m_pDrmPlugin )
> +    {
> +        if (!m_pWMPlayReadyExt)
> +        {
> +            retVal =
> m_pDrmPlugin->QueryInterface(IID_IHXWMPlayReadyExt, (void**)
> &m_pWMPlayReadyExt);
> +        }
> +        if (SUCCEEDED(retVal))
> +        {
> +            // Dump the replicated Data
> +            UINT64 sampleId = 0;
> +            BYTE* pBuff = ( (BYTE*) pReplicatedData ) +
> replicatedDataLen - 8;
> +            UnpackUINT64BE(pBuff ,8, &sampleId);
> +            HXLOGL2(HXLOG_ASFF, "Final Replicated Data:  Sample Id [%
> p%X]",HX_I64d_ARG(sampleId) );
> +            m_pWMPlayReadyExt->SetSampleID(pBuff,replicatedDataLen);
> +        }
> +    }
> +    return retVal;
> +}
> +
> HX_RESULT CHXASFDepacketizer::DecryptPayload(BYTE* pData, UINT32
> length)
> {
> HX_RESULT retVal = HXR_OK;
> Index: asf_file_format_file.cpp
> ===================================================================
> RCS file: /cvsroot/datatype/wm/fileformat/asf_file_format_file.cpp,v
> retrieving revision 1.5.4.14
> diff -u -b -r1.5.4.14 asf_file_format_file.cpp
> --- asf_file_format_file.cpp    15 Oct 2009 20:13:38 -0000
> 1.5.4.14
> +++ asf_file_format_file.cpp    19 Feb 2010 16:18:57 -0000
> @@ -112,6 +112,7 @@
> m_pExtendedContentDescriptionObject = NULL;
> m_pContentProtectionObject          = NULL;
> m_pExtentedContentProtectionObject  = NULL;
> +    m_pProtectionSystemIdentifierObject = NULL;
> m_pDrmPlugin                        = NULL;
> m_pStreamBitratePropertiesObject    = NULL;
> m_pMetadataObject                   = NULL;
> @@ -377,6 +378,7 @@
> HX_RELEASE(m_pContentDescriptionObject);
> HX_RELEASE(m_pExtendedContentDescriptionObject);
> HX_RELEASE(m_pExtentedContentProtectionObject);
> +    HX_RELEASE(m_pProtectionSystemIdentifierObject);
> HX_RELEASE(m_pDrmPlugin);
> HX_RELEASE(m_pStreamBitratePropertiesObject);
> HX_RELEASE(m_pMetadataObject);
> @@ -1544,6 +1546,7 @@
> HX_RELEASE(m_pFilePropertiesObject);
> HX_RELEASE(m_pContentDescriptionObject);
> HX_RELEASE(m_pExtendedContentDescriptionObject);
> +        HX_RELEASE(m_pProtectionSystemIdentifierObject);
> HX_RELEASE(m_pStreamBitratePropertiesObject);
> HX_RELEASE(m_pMetadataObject);
> HX_RELEASE(m_pMetadataLibraryObject);
> @@ -1667,6 +1670,28 @@
> retVal = HXR_FAIL;
> }
> break;
> +#if
> defined(HELIX_FEATURE_WMDRM_PLAYREADY_SUPPPORT)
> +                    case HX_ASF_Protection_System_Identifier_Object:
> +                        if (!m_pProtectionSystemIdentifierObject &&
> m_pDrmPlugin)
> +                        {
> +                            IHXValues* pHeaderObj = NULL;
> +                            IHXBuffer* pBuffer = NULL;
> +                            m_pProtectionSystemIdentifierObject =
> (CHXASFProtectionSystemIdentifierObject*) pObj;
> +
> m_pProtectionSystemIdentifierObject->AddRef();
> +
> m_pCommonClassFactory->CreateInstance(CLSID_IHXValues,
> (void**)&pHeaderObj);
> +
> m_pCommonClassFactory->CreateInstance(CLSID_IHXBuffer,
> (void**)&pBuffer);
> +
> pBuffer->Set(m_pProtectionSystemIdentifierObject->m_pData,
> m_pProtectionSystemIdentifierObject->m_ulDataSize);
> +
> pHeaderObj->SetPropertyBuffer("ExtendedContentEncryptionObject",
> pBuffer);
> +                            retVal =
> m_pDrmPlugin->OnFileHeader(HXR_OK, pHeaderObj);
> +                            HX_RELEASE(pBuffer);
> +                            HX_RELEASE(pHeaderObj);
> +                        }
> +                        else
> +                        {
> +                            retVal = HXR_FAIL;
> +                        }
> +                        break;
> +#endif
> case HX_ASF_Extended_Content_Encryption_Object:
> if (!m_pExtentedContentProtectionObject &&
> m_pDrmPlugin)
> {
> @@ -3300,7 +3325,7 @@
> // Do we have a depacketizer yet?
> if (!m_pASFDepacketizer)
> {
> -                        m_pASFDepacketizer = new
> CHXASFDepacketizer(m_pContext, m_pStreamInfo,
> m_pExtentedContentProtectionObject ? m_pDrmPlugin : NULL,
> m_ulNumHXStreams,
> +                        m_pASFDepacketizer = new
> CHXASFDepacketizer(m_pContext, m_pStreamInfo,
> (m_pExtentedContentProtectionObject ||
> m_pProtectionSystemIdentifierObject) ? m_pDrmPlugin : NULL,
> m_ulNumHXStreams,
> 
> m_pucWM2HXStreamNumberMap, m_pucWM2HXSubStreamIndexMap,
> 
> HX_NUM_STREAM_MAP_ENTRIES);
> }
> Index: pub/asf_depacketizer.h
> ===================================================================
> RCS file: /cvsroot/datatype/wm/fileformat/pub/asf_depacketizer.h,v
> retrieving revision 1.2.4.1
> diff -u -b -r1.2.4.1 asf_depacketizer.h
> --- pub/asf_depacketizer.h      24 Apr 2007 19:42:11 -0000
> 1.2.4.1
> +++ pub/asf_depacketizer.h      19 Feb 2010 16:18:57 -0000
> @@ -40,6 +40,7 @@
> typedef _INTERFACE IHXPacket IHXPacket; typedef _INTERFACE IHXBuffer
> IHXBuffer; typedef _INTERFACE IHXSourceHandler IHXSourceHandler;
> +typedef _INTERFACE IHXWMPlayReadyExt IHXWMPlayReadyExt;
> class CHXStreamInfo;
> class CHXSimpleList;
> class CHXASFPacket;
> @@ -66,6 +67,7 @@
> BYTE*          m_pWM2HXSubStreamMap;
> UINT32         m_ulNumMapEntries;
> IHXSourceHandler* m_pDrmPlugin;
> +    IHXWMPlayReadyExt* m_pWMPlayReadyExt;
> 
> HX_RESULT AddASFPayload(CHXASFPayload* pPayload);
> HX_RESULT AddToPendingPayloadQueue(CHXASFPayload* pPayload); @@
> -81,6 +83,7 @@
> REF(IHXBuffer*) rpBuffer, HXBOOL
> decrypt);
> void      ClearOutputQueue();
> void      ClearPendingPayloadQueue();
> +    HX_RESULT SendReplicatedData(BYTE* pReplicatedData, UINT32
> replicatedDataLen);
> HX_RESULT DecryptPayload(BYTE* pData, UINT32 length); };
> 
> Index: pub/asf_file_format_file.h
> ===================================================================
> RCS file: /cvsroot/datatype/wm/fileformat/pub/asf_file_format_file.h,v
> retrieving revision 1.3.4.7
> diff -u -b -r1.3.4.7 asf_file_format_file.h
> --- pub/asf_file_format_file.h  15 Oct 2009 20:16:53 -0000
> 1.3.4.7
> +++ pub/asf_file_format_file.h  19 Feb 2010 16:18:57 -0000
> @@ -177,6 +177,7 @@
> CHXASFStreamBitratePropertiesObject*
> m_pStreamBitratePropertiesObject;
> CHXASFContentEncryptionObject*
> m_pContentProtectionObject;
> CHXASFExtendedContentEncryptionObject*
> m_pExtentedContentProtectionObject;
> +    CHXASFProtectionSystemIdentifierObject*
> m_pProtectionSystemIdentifierObject;
> CHXASFMetadataObject*                   m_pMetadataObject;
> CHXASFMetadataObject*                   m_pMetadataLibraryObject;
> CHXASFObject**                          m_ppMutualExclusion;
> 
> Index: asf_guid_enum_map.cpp
> ===================================================================
> RCS file: /cvsroot/datatype/wm/common/asf_guid_enum_map.cpp,v
> retrieving revision 1.2
> diff -u -b -r1.2 asf_guid_enum_map.cpp
> --- asf_guid_enum_map.cpp       15 Jun 2006 14:32:05 -0000      1.2
> +++ asf_guid_enum_map.cpp       19 Feb 2010 16:24:59 -0000
> @@ -76,6 +76,7 @@
> { CLSID_HXASF_Timecode_Index_Parameters_Object,
> HX_ASF_Timecode_Index_Parameters_Object    },
> { CLSID_HXASF_Compatibility_Object,
> HX_ASF_Compatibility_Object                },
> { CLSID_HXASF_Advanced_Content_Encryption_Object,
> HX_ASF_Advanced_Content_Encryption_Object  },
> +    { CLSID_HXASF_Protection_System_Identifier_Object,
> HX_ASF_Protection_System_Identifier_Object },
> { HXASFGUID_NULL,
> HX_ASF_Unknown_Object                      }
> };
> 
> Index: parse_asf_objects.cpp
> ===================================================================
> RCS file: /cvsroot/datatype/wm/common/parse_asf_objects.cpp,v
> retrieving revision 1.4.4.5
> diff -u -b -r1.4.4.5 parse_asf_objects.cpp
> --- parse_asf_objects.cpp       18 May 2009 14:36:33 -0000
> 1.4.4.5
> +++ parse_asf_objects.cpp       19 Feb 2010 16:25:00 -0000
> @@ -82,7 +82,8 @@
> "Media Object Index Parameters",
> "Timecode Index Parameters",
> "Compatibility",
> -    "Advanced Content Encryption Object"
> +    "Advanced Content Encryption Object",
> +    "Protection System Identifier Object"
> };
> 
> const char* const
> CHXASFStreamPropertiesObject::m_pszStreamType[HX_ASF_Num_Stream_Types]
> =
> @@ -601,6 +602,11 @@
> case HX_ASF_Advanced_Content_Encryption_Object:
> pRet = new CHXASFAdvancedContentEncryptionObject();
> break;
> +#if defined(HELIX_FEATURE_WMDRM_PLAYREADY_SUPPPORT)
> +                       case
> HX_ASF_Protection_System_Identifier_Object:
> +                               pRet = new
> CHXASFProtectionSystemIdentifierObject();
> +                               break;
> +#endif
> }
> // Did we create it successfully?
> if (pRet)
> @@ -2818,6 +2824,42 @@
> return retVal;
> }
> 
> +CHXASFProtectionSystemIdentifierObject::CHXASFProtectionSystemIdentifierObject()
> +       : m_ulDataSize(0)
> +       , m_SystemVersion(0)
> +    , m_pData(NULL)
> +{
> +       memset(&m_SystemIDGUID, 0, sizeof(HXASFGUID)); }
> +
> +CHXASFProtectionSystemIdentifierObject::~CHXASFProtectionSystemIdenti
> +fierObject()
> +{
> +    HX_VECTOR_DELETE(m_pData);
> +}
> +
> +HX_RESULT CHXASFProtectionSystemIdentifierObject::Unpack(BYTE* pBuf,
> UINT32 ulLen)
> +{
> +       // Unpack the System ID.
> +       // MS Playready System must use
> ASF_Content_Protection_System_Microsoft_PlayReady
> +       HX_RESULT retVal = UnpackGUIDLEInc(&pBuf, &ulLen,
> &m_SystemIDGUID);
> +       if (SUCCEEDED (retVal))
> +       {
> +               // Get the Version Specific to the Content Protection
> System
> +               retVal = UnpackUINT32LEInc(&pBuf, &ulLen,
> &m_SystemVersion);
> +               if (SUCCEEDED (retVal))
> +               {
> +                       // Read the data size
> +                       retVal = UnpackUINT32LEInc(&pBuf, &ulLen,
> &m_ulDataSize);
> +                       if (SUCCEEDED (retVal))
> +                       {
> +                               // Read the content protection system
> init data
> +                               retVal = UnpackBufferInc(&pBuf,
> &ulLen, m_ulDataSize, &m_pData);
> +                       }
> +               }
> +       }
> +       return retVal;
> +}
> +
> CHXASFDataObject::CHXASFDataObject()
> > m_ullTotalDataPackets(0)
> {
> Index: parse_audio.cpp
> ===================================================================
> RCS file: /cvsroot/datatype/wm/common/parse_audio.cpp,v
> retrieving revision 1.2.4.2
> diff -u -b -r1.2.4.2 parse_audio.cpp
> --- parse_audio.cpp     6 Apr 2009 17:07:02 -0000       1.2.4.2
> +++ parse_audio.cpp     19 Feb 2010 16:25:00 -0000
> @@ -127,6 +127,17 @@
> {
> // Parse the codec-specific data differently
> // based on the format type
> +#if defined(HELIX_FEATURE_WMDRM_PLAYREADY_SUPPPORT)
> +                       // If the Format Tag is 0x5052 ASCII "PR" -
> (PlayReady) then actual Format tag is
> +                       // specified in the  2 bytes following the
> CodecSpecificData
> +                       if (pTSD->m_WaveFormatEx.m_usFormatTag ==
> 0x5052)
> +                       {
> +                BYTE* pOrigFormatTag = pBuf +
> pTSD->m_WaveFormatEx.m_usCodecSpecificDataSize - 2;
> +                UINT32 ulTempLen = 2;
> +                // Restore the original Format tag
> +
> UnpackUINT16LE(pOrigFormatTag,2,&pTSD->m_WaveFormatEx.m_usFormatTag);
> +                       }
> +#endif
> if (pTSD->m_WaveFormatEx.m_usFormatTag == 0x0160)
> {
> // Old WMA audio 1
> Index: parse_video.cpp
> ===================================================================
> RCS file: /cvsroot/datatype/wm/common/parse_video.cpp,v
> retrieving revision 1.3
> diff -u -b -r1.3 parse_video.cpp
> --- parse_video.cpp     5 Jul 2006 14:49:56 -0000       1.3
> +++ parse_video.cpp     19 Feb 2010 16:25:00 -0000
> @@ -68,6 +68,17 @@
> {
> pFormat->m_ulCodecSpecificDataOffset = (UINT32) (pBuf -
> pBufStart);
> pFormat->m_ulCodecSpecificDataSize   = ulLen;
> +#if defined(HELIX_FEATURE_WMDRM_PLAYREADY_SUPPPORT)
> +            if(pFormat->m_BitmapInfoHeader.biCompression ==
> 0x59445250 /*PRDY*/)
> +            {
> +                // Play Ready files contain the compression id as
> 0x59445259.
> +                // The actual compression id is stored as the last 4
> bytes of the codec specific data
> +                // Decrement the Codec Specific Data Size by 4. Read
> the last 4 bytes for the correct
> +                // compression Id.
> +                pFormat->m_ulCodecSpecificDataSize -= 4;
> +                UnpackUINT32LE(pBuf +
> pFormat->m_ulCodecSpecificDataSize,4,&pFormat->m_BitmapInfoHeader.biCo
> pFormat->mpression);
> +            }
> +#endif
> }
> }
> 
> Index: pub/asf_guid_enums.h
> ===================================================================
> RCS file: /cvsroot/datatype/wm/common/pub/asf_guid_enums.h,v
> retrieving revision 1.1
> diff -u -b -r1.1 asf_guid_enums.h
> --- pub/asf_guid_enums.h        2 Jun 2006 20:20:40 -0000       1.1
> +++ pub/asf_guid_enums.h        19 Feb 2010 16:25:00 -0000
> @@ -75,6 +75,7 @@
> HX_ASF_Timecode_Index_Parameters_Object,
> HX_ASF_Compatibility_Object,
> HX_ASF_Advanced_Content_Encryption_Object,
> +       HX_ASF_Protection_System_Identifier_Object,
> HX_ASF_Num_ASF_Object_Types  // This should ALWAYS remain last }
> HX_ASF_Object_Type;
> Index: pub/asf_guids.h
> ===================================================================
> RCS file: /cvsroot/datatype/wm/common/pub/asf_guids.h,v
> retrieving revision 1.2
> diff -u -b -r1.2 asf_guids.h
> --- pub/asf_guids.h     15 Jun 2006 14:32:06 -0000      1.2
> +++ pub/asf_guids.h     19 Feb 2010 16:25:00 -0000
> @@ -129,4 +129,8 @@
> DEFINE_HXASFGUID(CLSID_HXASF_Payload_Extension_System_Sample_Duration,
> 0xC6BD9450,0x867F,0x4907,0x83,0xA3,0xC7,0x79,0x21,0xB7,0x33,0xAD);
> DEFINE_HXASFGUID(CLSID_HXASF_Payload_Extension_System_Encryption_Sampl
> e_ID,0x6698B84E,0x0AFA,0x4330,0xAE,0xB2,0x1C,0x0A,0x98,0xD7,0xA4,0x4D)
> ;
> 
> +// Protection System GUIDs
> +DEFINE_HXASFGUID(CLSID_HXASF_Protection_System_Identifier_Object,0x9A
> +04F079,0x9840,0x4286,0xAB,0x92,0xE6,0x5B,0xE0,0x88,0x5F,0x95);
> +DEFINE_HXASFGUID(CLSID_HXASF_Protection_System_PlayReady_Object,0xF46
> +37010,0x03C3,0x42CD,0xB9,0x32,0xB4,0x8A,0xDF,0x3A,0x6A,0x54);
> +
> #endif /* #ifndef ASF_GUIDS_H */
> Index: pub/parse_asf_objects.h
> ===================================================================
> RCS file: /cvsroot/datatype/wm/common/pub/parse_asf_objects.h,v
> retrieving revision 1.3.4.2
> diff -u -b -r1.3.4.2 parse_asf_objects.h
> --- pub/parse_asf_objects.h     7 Aug 2007 21:28:59 -0000
> 1.3.4.2
> +++ pub/parse_asf_objects.h     19 Feb 2010 16:25:00 -0000
> @@ -435,6 +435,21 @@
> BYTE*  m_pData;
> };
> 
> +class CHXASFProtectionSystemIdentifierObject : public CHXASFObject {
> +public:
> +       CHXASFProtectionSystemIdentifierObject();
> +       ~CHXASFProtectionSystemIdentifierObject();
> +
> +
> +       virtual HX_RESULT Unpack(BYTE* pBuf, UINT32 ulLen);
> +
> +       HXASFGUID m_SystemIDGUID;
> +       UINT32    m_SystemVersion;
> +       UINT32    m_ulDataSize;
> +       BYTE*     m_pData;
> +
> +};
> class CHXASFDigitalSignatureObject : public CHXASFObject {
> public:
> 


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


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

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