From cdunn at helixcommunity.org  Wed Nov  1 14:35:26 2006
From: cdunn at helixcommunity.org (cdunn@helixcommunity.org)
Date: Wed Nov  1 15:43:27 2006
Subject: [Datatype-cvs] flash/flashhost/pub flash_runtime.h,1.1,1.2
Message-ID: 

Update of /cvsroot/datatype/flash/flashhost/pub
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv7776/pub

Modified Files:
	flash_runtime.h 
Log Message:
Take out printf from get_property

Index: flash_runtime.h
===================================================================
RCS file: /cvsroot/datatype/flash/flashhost/pub/flash_runtime.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- flash_runtime.h	16 Oct 2006 18:34:35 -0000	1.1
+++ flash_runtime.h	1 Nov 2006 22:35:24 -0000	1.2
@@ -71,7 +71,6 @@
 
     static bool NP_GetProperty(NPObject *obj, NPIdentifier property, NPVariant *result)
 	{
-	    printf("Wrapper::NP_GetProperty %s\n", (char*) property);
 	    OBJECT_TO_NPVARIANT(obj, *result);
 	    CFlashGuestPlayer::NPN_RetainObject(obj);
 	    return true;


From kliu at helixcommunity.org  Thu Nov  2 10:27:39 2006
From: kliu at helixcommunity.org (kliu@helixcommunity.org)
Date: Thu Nov  2 11:35:27 2006
Subject: [Datatype-cvs] CVSROOT avail,1.109,1.110
Message-ID: 

Update of /cvsroot/datatype/CVSROOT
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv21164/CVSROOT

Modified Files:
	avail 
Log Message:
granting lovish write access for the datatype project

Index: avail
===================================================================
RCS file: /cvsroot/datatype/CVSROOT/avail,v
retrieving revision 1.109
retrieving revision 1.110
diff -u -d -r1.109 -r1.110
--- avail	26 Oct 2006 04:02:29 -0000	1.109
+++ avail	2 Nov 2006 18:27:36 -0000	1.110
@@ -1,4 +1,5 @@
 unavail
+avail|lovish
 avail|gpai
 avail|moiseankim
 avail|ricardj


From shy_ward at helixcommunity.org  Fri Nov  3 12:19:42 2006
From: shy_ward at helixcommunity.org (shy_ward@helixcommunity.org)
Date: Fri Nov  3 13:27:14 2006
Subject: [Datatype-cvs] mdf/video/renderer mdfvideoadapter.cpp, 1.3.2.40,
	1.3.2.41
Message-ID: 

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

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	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:
    shy.ward@nokia.com

Reviewed by:


Date: 
    Nov-1-2006

Project: 
    Helix plug-in for Symbian

Error ID: 
    HZHO-6TYR5N
    

Synopsis: 
    MDF and the MDF-ARM Post Processor now support a virtual window canvas which can be larger than the screen and/or
    reside out of the viewable area. The specific window calculations are handled in the MDF-ARM Post Processor, these MDF changes
    will simply pass the window down. If the custom interface is not supported the call has no effect.

    The StartDirectScreenAccessL() was modified to pass the clipRect versus the windowRect since the MDF interface spec says the rect must
    be completely within physical screen dimensions and this no longer true with the window rect.

Files Modified: 
    datatype/mdf/video/renderer/mdfvideoadapter.cpp
    datatype/mdf/video/renderer/pub/mdfvideoadapter.h

Files Added:
    None

Image Size and Heap Use impact: 
    none

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

Platforms and Profiles Functionality verified: 
    armv5

Branch: 
    head and hxclient_2_1_0_cayennes 

Index: mdfvideoadapter.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/renderer/mdfvideoadapter.cpp,v
retrieving revision 1.3.2.40
retrieving revision 1.3.2.41
diff -u -d -r1.3.2.40 -r1.3.2.41
--- mdfvideoadapter.cpp	12 Oct 2006 18:03:28 -0000	1.3.2.40
+++ mdfvideoadapter.cpp	3 Nov 2006 20:19:39 -0000	1.3.2.41
@@ -559,7 +559,7 @@
 
         CMMFDevVideoPlay::TPictureCounters pictureCounter;
         m_pDevVideoPlay->GetPictureCounters( pictureCounter );
-        
+
         MDFVIDEOLOG_WRITE_FORMAT1( "    Num of Frames dropped by adapter         :%u", m_ulFramesDroppedByAdapter );
         MDFVIDEOLOG_WRITE_FORMAT1( "    Num of Frames decoded                    :%u", pictureCounter.iPicturesDecoded );
         MDFVIDEOLOG_WRITE_FORMAT1( "    Num of Frames displayed                  :%u", pictureCounter.iPicturesDisplayed );
@@ -668,7 +668,7 @@
             {
                 pStreamHeader = m_pPictureHeader->iOptional;
             }
-            
+
             if( pStreamHeader )
             {
                 ulBufferSize += pStreamHeader->Length();
@@ -871,7 +871,7 @@
     if( m_pBltMediaPacket )
     {
         m_pBltMediaPacket->Clear();
-        HX_DELETE( m_pBltMediaPacket );  
+        HX_DELETE( m_pBltMediaPacket );
     }
     m_bIsLastMediaPacketNull = TRUE;
 
@@ -904,7 +904,7 @@
 void CMdfVideoAdapter::StartDevVideo()
 {
     MDFVIDEOLOG_ENTERFN( "StartDevVideo" );
- 
+
     if ( m_DevVidInitialized == EInitializedSuccess && m_bIsPlayStartReceived && !m_bIsDevVideoStarted)
     {
         HX_ASSERT( m_pDevVideoPlay );
@@ -969,7 +969,7 @@
         if( SUCCEEDED( retVal ) )
         {
             retVal = HXR_FAIL;
-            TRAPD( error, 
+            TRAPD( error,
                 m_pDevVideoPlay->SetScaleOptionsL( m_PostProcessorHwDeviceId, m_scaledSize, m_bAntiAlias );
                 m_pDevVideoPlay->CommitL() ;
                 );
@@ -1266,7 +1266,7 @@
     if( count )
     {
         const TRect* regionlist = m_ClipRegion.RectangleList();
-        
+
         for( TInt j = 0; j < count; j++ )
         {
             const TRect& rect = regionlist[j];
@@ -1275,7 +1275,7 @@
             MDFVIDEOLOG_WRITE_MULTI_FORMAT( "    Rightbottom %d:%d", rect.iBr.iX, rect.iBr.iY );
         }
     }
-    
+
     if (m_DevVidInitialized == EInitializedSuccess )
     {
         if (m_bIsDSAStarted)
@@ -1283,37 +1283,48 @@
             m_pDevVideoPlay->AbortDirectScreenAccess();
             m_bIsDSAStarted = FALSE;
         }
-        
-        if( m_ClipRegion.Count() )
+
+        retVal = HXR_FAIL;
+        MMdfVideoWindowControl* pVirtualDisplay =
+            (MMdfVideoWindowControl *) m_pDevVideoPlay->CustomInterface( m_PostProcessorHwDeviceId, KUidMdfVideoWindowControl );
+        MDFVIDEOLOG_INOUTFN2( "CustomInterface(Virtual Display) does not leave" );
+        if( pVirtualDisplay )
         {
-            retVal = HXR_FAIL;
-            TRAPD(error, m_pDevVideoPlay->StartDirectScreenAccessL(m_windowRect, *m_pFbsScreenDevice, m_ClipRegion));
-            if (error == KErrNone)
+            TRAPD( error, pVirtualDisplay->MmvwcSetLogicalVideoWindow( m_windowRect ) );
+            if ( error != KErrNone )
             {
-                retVal = HXR_OK;
-                m_bIsDSAStarted = TRUE;
-                if( m_bIsScalingCalcNeeded == TRUE )
+                MDFVIDEOLOG_INOUTFN2( "MmvwcSetLogicalVideoWindow failed" );
+                retVal = HXR_FAIL;
+            }
+        }
+
+        TRAPD(error, m_pDevVideoPlay->StartDirectScreenAccessL(m_clipRect, *m_pFbsScreenDevice, m_ClipRegion));
+        if (error == KErrNone)
+        {
+            retVal = HXR_OK;
+            m_bIsDSAStarted = TRUE;
+            if( m_bIsScalingCalcNeeded == TRUE )
+            {
+                retVal = CalculateScaleFactor();
+                if( SUCCEEDED( retVal ) )
                 {
-                    retVal = CalculateScaleFactor();
-                    if( SUCCEEDED( retVal ) )
+                    retVal = HXR_FAIL;
+                    TRAP(error,
+                        m_pDevVideoPlay->SetScaleOptionsL(m_PostProcessorHwDeviceId, m_scaledSize, m_bAntiAlias);
+                        m_pDevVideoPlay->CommitL();
+                    );
+                    if( error == KErrNone )
                     {
-                        retVal = HXR_FAIL;
-                        TRAP(error, 
-                            m_pDevVideoPlay->SetScaleOptionsL(m_PostProcessorHwDeviceId, m_scaledSize, m_bAntiAlias);
-                            m_pDevVideoPlay->CommitL();
-                        );
-                        if( error == KErrNone )
-                        {
-                            retVal = HXR_OK;
-                        }
+                        retVal = HXR_OK;
                     }
-                    m_bIsScalingCalcNeeded = FALSE;
                 }
-                
-                //update last frame to window
-                m_pDevVideoPlay->Redraw();
+                m_bIsScalingCalcNeeded = FALSE;
             }
+
+            //update last frame to window
+            m_pDevVideoPlay->Redraw();
         }
+
     }
 
     MDFVIDEOLOG_RETURNFN( "StartDSA", retVal );
@@ -1323,14 +1334,14 @@
 HX_RESULT CMdfVideoAdapter::CalculateScaleFactor()
 {
     MDFVIDEOLOG_ENTERFN( "CalculateScaleFactor" );
-    
+
     HX_RESULT retVal( HXR_OK );
 
     HXFLOAT factor( 1.0 );
 
     UINT32 width( 0 );
     UINT32 height( 0 );
-    
+
     if( m_bFrameRectValid )
     {
         height = m_frameRect.bottom - m_frameRect.top;
@@ -1371,10 +1382,10 @@
 CMdfVideoAdapter::DirectScreenAccessEvent(HXBOOL bValue)
 {
     MDFVIDEOLOG_ENTERFN( "DirectScreenAccessEvent" );
-    
+
     m_bIsDSAStartedFromClient = bValue;
     HX_RESULT retVal( HXR_FAIL );
-    
+
     if (m_DevVidInitialized == EInitializedSuccess)
     {
         if (bValue)
@@ -1398,7 +1409,7 @@
     MDFVIDEOLOG_ENTERFN( "SetRotation" );
     MDFVIDEOLOG_WRITE_MULTI_FORMAT( "SetRotation[%d]  Current Stored Value[%d]", ulValue, m_rotationValue );
     HX_RESULT retVal( HXR_OK ); //do not use HXR_IGNORE since SUCCEEDED( HXR_IGNORE ) is false
-    
+
     if( m_rotationValue != ulValue && m_DevVidInitialized == EInitializedSuccess )
     {
         m_rotationValue = ulValue;
@@ -1406,27 +1417,27 @@
         TRotationType rotationType( ERotateNone );
         switch (ulValue)
         {
-        case Rotate90: 
-            rotationType = ERotate90Clockwise; 
+        case Rotate90:
+            rotationType = ERotate90Clockwise;
             break;
-        case Rotate270: 
-            rotationType = ERotate90Anticlockwise; 
+        case Rotate270:
+            rotationType = ERotate90Anticlockwise;
             break;
-        case Rotate180: 
-            rotationType = ERotate180; 
+        case Rotate180:
+            rotationType = ERotate180;
             break;
-        case Rotate0: 
-        default: 
-            rotationType = ERotateNone; 
+        case Rotate0:
+        default:
+            rotationType = ERotateNone;
             break;
         }
-        
+
         retVal = CalculateScaleFactor();
         if ( SUCCEEDED( retVal ) )
         {
             retVal = HXR_FAIL;
-            
-            TRAPD(error, 
+
+            TRAPD(error,
                 m_pDevVideoPlay->SetRotateOptionsL(m_PostProcessorHwDeviceId, rotationType);
                 m_pDevVideoPlay->SetScaleOptionsL( m_PostProcessorHwDeviceId, m_scaledSize, m_bAntiAlias );
                 m_pDevVideoPlay->CommitL();
@@ -1454,9 +1465,9 @@
 CMdfVideoAdapter::SetContrast(UINT32 ulValue)
 {
     MDFVIDEOLOG_ENTERFN( "SetContrast" );
-    
+
     HX_RESULT retVal( HXR_OK );
-    
+
     MDFVIDEOLOG_WRITE_FORMAT( "    contrast value: %d", ulValue );
 
     if( m_ulContrast != ulValue )
@@ -1468,11 +1479,11 @@
         contrastOptions.iSaturation = 0;
         contrastOptions.iGamma = 1.0;
         contrastOptions.iDitherType = EDitherNone;
-        
+
         if (m_DevVidInitialized == EInitializedSuccess)
         {
             retVal = HXR_FAIL;
-            TRAPD(error, 
+            TRAPD(error,
                 m_pDevVideoPlay->SetYuvToRgbOptionsL(m_PostProcessorHwDeviceId, contrastOptions);
             m_pDevVideoPlay->CommitL();
             );
@@ -1498,9 +1509,9 @@
 CMdfVideoAdapter::SetFrameRect(HXxRect sValue)
 {
     MDFVIDEOLOG_ENTERFN( "SetFrameRect" );
-    
+
     HX_RESULT retVal( HXR_OK ); //do not use HXR_IGNORE since SUCCEEDED( HXR_IGNORE ) is false
-    
+
     m_bFrameRectValid = TRUE;
     if( m_frameRect != sValue )
     {
@@ -1513,17 +1524,17 @@
             m_frameRect.right = 176;
             m_frameRect.bottom = 144;
         }
-        
+
         retVal = CalculateScaleFactor();
-        
+
         if( SUCCEEDED( retVal ) && ( m_DevVidInitialized == EInitializedSuccess ) )
         {
             retVal = HXR_FAIL;
-            TRAPD( error, 
+            TRAPD( error,
                 m_pDevVideoPlay->SetScaleOptionsL( m_PostProcessorHwDeviceId, m_scaledSize, m_bAntiAlias );
                 m_pDevVideoPlay->CommitL();
                 );
-            
+
             if (error == KErrNone)
             {
                 retVal = HXR_OK;
@@ -1574,8 +1585,8 @@
     if (m_DevVidInitialized == EInitializedSuccess)
     {
         retVal = HXR_FAIL;
-        
-        TRAPD( error, 
+
+        TRAPD( error,
             m_pDevVideoPlay->SetScaleOptionsL( m_PostProcessorHwDeviceId, m_scaledSize, bAntiAlias );
             m_pDevVideoPlay->CommitL();
         );
@@ -1585,7 +1596,7 @@
         }
     }
     MDFVIDEOLOG_RETURNFN( "SetScaling", retVal );
-    return retVal;    
+    return retVal;
 }
 
 STDMETHODIMP
@@ -1658,16 +1669,16 @@
 CMdfVideoAdapter::SetCropRect(HXxRect sValue)
 {
     MDFVIDEOLOG_ENTERFN( "SetCropRect" );
-    
+
     HX_RESULT retVal( HXR_OK ); //do not use HXR_IGNORE since SUCCEEDED( HXR_IGNORE ) is false
-    
+
     if( m_CropRect != sValue )
     {
         if (m_DevVidInitialized == EInitializedSuccess)
         {
             retVal = HXR_FAIL;
             TRect rect(sValue.left, sValue.top, sValue.right, sValue.bottom);
-            TRAPD(error, 
+            TRAPD(error,
                 m_pDevVideoPlay->SetOutputCropOptionsL(m_PostProcessorHwDeviceId, rect);
                 m_pDevVideoPlay->CommitL();
             );
@@ -1730,7 +1741,7 @@
     if( SUCCEEDED( retVal ) )
     {
         retVal = CalculateScaleFactor();  //check if m_bIsScalingCalcNeeded is set to FALSE **********
-        
+
         if(SUCCEEDED( retVal ) && m_bIsScalingCalcNeeded && m_bIsDSAStartedFromClient && (m_DevVidInitialized == EInitializedSuccess) && (!m_bIsPaused) )
         {
             m_bIsScalingCalcNeeded = FALSE;
@@ -1738,7 +1749,7 @@
             if (SUCCEEDED(retVal))
             {
                 retVal = HXR_FAIL;
-                TRAPD(error, 
+                TRAPD(error,
                     m_pDevVideoPlay->SetScaleOptionsL(m_PostProcessorHwDeviceId, m_scaledSize, m_bAntiAlias);
                     m_pDevVideoPlay->CommitL();
                     );
@@ -1749,7 +1760,7 @@
             }
         }
     }
-    
+
     if( retVal == HXR_IGNORE )
     {
         retVal = HXR_OK; //change to HXR_OK since SUCCEEDED( HXR_IGNORE ) is false


From shy_ward at helixcommunity.org  Fri Nov  3 12:20:58 2006
From: shy_ward at helixcommunity.org (shy_ward@helixcommunity.org)
Date: Fri Nov  3 13:28:31 2006
Subject: [Datatype-cvs] mdf/video/renderer/pub mdfvideoadapter.h, 1.3.2.16,
	1.3.2.17
Message-ID: 

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

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfvideoadapter.h 
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:
    shy.ward@nokia.com

Reviewed by:


Date: 
    Nov-1-2006

Project: 
    Helix plug-in for Symbian

Error ID: 
    HZHO-6TYR5N
    

Synopsis: 
    MDF and the MDF-ARM Post Processor now support a virtual window canvas which can be larger than the screen and/or
    reside out of the viewable area. The specific window calculations are handled in the MDF-ARM Post Processor, these MDF changes
    will simply pass the window down. If the custom interface is not supported the call has no effect.

    The StartDirectScreenAccessL() was modified to pass the clipRect versus the windowRect since the MDF interface spec says the rect must
    be completely within physical screen dimensions and this no longer true with the window rect.

Files Modified: 
    datatype/mdf/video/renderer/mdfvideoadapter.cpp
    datatype/mdf/video/renderer/pub/mdfvideoadapter.h

Files Added:
    None

Image Size and Heap Use impact: 
    none

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

Platforms and Profiles Functionality verified: 
    armv5

Branch: 
    head and hxclient_2_1_0_cayennes 

Index: mdfvideoadapter.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/renderer/pub/mdfvideoadapter.h,v
retrieving revision 1.3.2.16
retrieving revision 1.3.2.17
diff -u -d -r1.3.2.16 -r1.3.2.17
--- mdfvideoadapter.h	25 Sep 2006 21:30:13 -0000	1.3.2.16
+++ mdfvideoadapter.h	3 Nov 2006 20:20:56 -0000	1.3.2.17
@@ -78,6 +78,7 @@
 #include "hxsite3.h"
 #include "hxprefs.h"
 #include "hxprefutil.h"
+#include "videowindowcontrol.h"
 
 class CMdfVideoAdapter : public IUnknown,
                          public IHXSurfaceControl,


From shy_ward at helixcommunity.org  Fri Nov  3 12:47:32 2006
From: shy_ward at helixcommunity.org (shy_ward@helixcommunity.org)
Date: Fri Nov  3 13:55:03 2006
Subject: [Datatype-cvs] mdf/video/renderer/pub mdfvideoadapter.h,1.19,1.20
Message-ID: 

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

Modified Files:
	mdfvideoadapter.h 
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:
    shy.ward@nokia.com

Reviewed by:


Date: 
    Nov-1-2006

Project: 
    Helix plug-in for Symbian

Error ID: 
    HZHO-6TYR5N
    

Synopsis: 
    MDF and the MDF-ARM Post Processor now support a virtual window canvas which can be larger than the screen and/or
    reside out of the viewable area. The specific window calculations are handled in the MDF-ARM Post Processor, these MDF changes
    will simply pass the window down. If the custom interface is not supported the call has no effect.

    The StartDirectScreenAccessL() was modified to pass the clipRect versus the windowRect since the MDF interface spec says the rect must
    be completely within physical screen dimensions and this no longer true with the window rect.

Files Modified: 
    datatype/mdf/video/renderer/mdfvideoadapter.cpp
    datatype/mdf/video/renderer/pub/mdfvideoadapter.h

Files Added:
    None

Image Size and Heap Use impact: 
    none

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

Platforms and Profiles Functionality verified: 
    armv5

Branch: 
    head and hxclient_2_1_0_cayennes 

Index: mdfvideoadapter.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/renderer/pub/mdfvideoadapter.h,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- mdfvideoadapter.h	25 Sep 2006 21:29:37 -0000	1.19
+++ mdfvideoadapter.h	3 Nov 2006 20:47:30 -0000	1.20
@@ -78,6 +78,7 @@
 #include "hxsite3.h"
 #include "hxprefs.h"
 #include "hxprefutil.h"
+#include "videowindowcontrol.h"
 
 class CMdfVideoAdapter : public IUnknown,
                          public IHXSurfaceControl,


From shy_ward at helixcommunity.org  Fri Nov  3 12:47:51 2006
From: shy_ward at helixcommunity.org (shy_ward@helixcommunity.org)
Date: Fri Nov  3 13:55:22 2006
Subject: [Datatype-cvs] mdf/video/renderer mdfvideoadapter.cpp,1.44,1.45
Message-ID: 

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

Modified Files:
	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:
    shy.ward@nokia.com

Reviewed by:


Date: 
    Nov-1-2006

Project: 
    Helix plug-in for Symbian

Error ID: 
    HZHO-6TYR5N
    

Synopsis: 
    MDF and the MDF-ARM Post Processor now support a virtual window canvas which can be larger than the screen and/or
    reside out of the viewable area. The specific window calculations are handled in the MDF-ARM Post Processor, these MDF changes
    will simply pass the window down. If the custom interface is not supported the call has no effect.

    The StartDirectScreenAccessL() was modified to pass the clipRect versus the windowRect since the MDF interface spec says the rect must
    be completely within physical screen dimensions and this no longer true with the window rect.

Files Modified: 
    datatype/mdf/video/renderer/mdfvideoadapter.cpp
    datatype/mdf/video/renderer/pub/mdfvideoadapter.h

Files Added:
    None

Image Size and Heap Use impact: 
    none

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

Platforms and Profiles Functionality verified: 
    armv5

Branch: 
    head and hxclient_2_1_0_cayennes 

Index: mdfvideoadapter.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/renderer/mdfvideoadapter.cpp,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -d -r1.44 -r1.45
--- mdfvideoadapter.cpp	12 Oct 2006 18:03:30 -0000	1.44
+++ mdfvideoadapter.cpp	3 Nov 2006 20:47:49 -0000	1.45
@@ -1284,10 +1284,21 @@
             m_bIsDSAStarted = FALSE;
         }
         
-        if( m_ClipRegion.Count() )
+        retVal = HXR_FAIL;
+        MMdfVideoWindowControl* pVirtualDisplay =
+            (MMdfVideoWindowControl *) m_pDevVideoPlay->CustomInterface( m_PostProcessorHwDeviceId, KUidMdfVideoWindowControl );
+        MDFVIDEOLOG_INOUTFN2( "CustomInterface(Virtual Display) does not leave" );
+        if( pVirtualDisplay )
         {
-            retVal = HXR_FAIL;
-            TRAPD(error, m_pDevVideoPlay->StartDirectScreenAccessL(m_windowRect, *m_pFbsScreenDevice, m_ClipRegion));
+            TRAPD( error, pVirtualDisplay->MmvwcSetLogicalVideoWindow( m_windowRect ) );
+            if ( error != KErrNone )
+            {
+                MDFVIDEOLOG_INOUTFN2( "MmvwcSetLogicalVideoWindow failed" );
+                retVal = HXR_FAIL;
+            }
+        }
+
+        TRAPD(error, m_pDevVideoPlay->StartDirectScreenAccessL(m_clipRect, *m_pFbsScreenDevice, m_ClipRegion));
             if (error == KErrNone)
             {
                 retVal = HXR_OK;
@@ -1313,7 +1324,7 @@
                 //update last frame to window
                 m_pDevVideoPlay->Redraw();
             }
-        }
+
     }
 
     MDFVIDEOLOG_RETURNFN( "StartDSA", retVal );


From cdunn at helixcommunity.org  Fri Nov  3 13:00:35 2006
From: cdunn at helixcommunity.org (cdunn@helixcommunity.org)
Date: Fri Nov  3 14:08:08 2006
Subject: [Datatype-cvs] flash/flashhost/pub flash_guest_player.h,1.4,1.5
Message-ID: 

Update of /cvsroot/datatype/flash/flashhost/pub
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv2146/pub

Modified Files:
	flash_guest_player.h 
Log Message:
Fix buffering status, and crash on exit. Added code to extract return values from ActionScript methods and called NPP_Destroy on the instance.

Index: flash_guest_player.h
===================================================================
RCS file: /cvsroot/datatype/flash/flashhost/pub/flash_guest_player.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- flash_guest_player.h	16 Oct 2006 18:34:22 -0000	1.4
+++ flash_guest_player.h	3 Nov 2006 21:00:33 -0000	1.5
@@ -202,8 +202,6 @@
     HXBOOL                      m_bMute;
     double                      m_dPlaybackRate;
 
-    HX_RESULT SetMetaDataProperties(IHXValues* pData, const char* pszName,
-                                    const char* pszValue, IUnknown* pContext);
     HX_RESULT InitNSPlugin();
 
     // PlayerState methods
@@ -213,7 +211,6 @@
     void      SetGuestPlayerStateEnforceTransitions(UINT32 ulNewState);
     void      SetGuestPlayerState(UINT32 ulNewState);
 
-    HXBOOL    IsAllDigits(BYTE* pBuf, UINT32 ulLen);
     IUnknown*	GetContext() { return m_pContext; }
 
 
@@ -232,7 +229,7 @@
     IHXSite* 		m_pSite;
     IHXSiteManager* 	m_pSiteManager;
     CHXString	    	m_pszURL;
-    HXBOOL		m_bWindowless;
+    static const char* const	m_pszFlashMimeType;
     static CHXStringList*	m_pStringIds;
     static CHXSimpleList*	m_pIntIds;
     static CHXString	    	m_pUserAgentStr;


From cdunn at helixcommunity.org  Fri Nov  3 13:00:35 2006
From: cdunn at helixcommunity.org (cdunn@helixcommunity.org)
Date: Fri Nov  3 14:08:08 2006
Subject: [Datatype-cvs] flash/flashhost flash_guest_player.cpp,1.6,1.7
Message-ID: 

Update of /cvsroot/datatype/flash/flashhost
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv2146

Modified Files:
	flash_guest_player.cpp 
Log Message:
Fix buffering status, and crash on exit. Added code to extract return values from ActionScript methods and called NPP_Destroy on the instance.

Index: flash_guest_player.cpp
===================================================================
RCS file: /cvsroot/datatype/flash/flashhost/flash_guest_player.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- flash_guest_player.cpp	27 Oct 2006 01:47:28 -0000	1.6
+++ flash_guest_player.cpp	3 Nov 2006 21:00:33 -0000	1.7
@@ -80,14 +80,16 @@
 #include "npupp.h"	
 #include "npruntime.h"
 
-const char* flashMimeType = "application/x-shockwave-flash";
+
+#define MAX_BUFSIZE 4096
 const UINT32 dWindowWidth=500;
 const UINT32 dWindowHeight=500;
 
 // Static initialization
+const char* const CFlashGuestPlayer::m_pszFlashMimeType = "application/x-shockwave-flash";
 CHXStringList*	CFlashGuestPlayer::m_pStringIds=NULL;
 CHXSimpleList*	CFlashGuestPlayer::m_pIntIds=NULL;
-CHXString	CFlashGuestPlayer::m_pUserAgentStr = "HelixDNA/1.0.0";
+CHXString	CFlashGuestPlayer::m_pUserAgentStr;
 
 NPClass CNPObjectWrapper::m_npclass =
 {
@@ -169,7 +171,7 @@
 	// CFlashGuestPlayer::SendStream
 	// NPP_WriteReady
 	// NPP_Write
-	// NPN_GetURLNotify url=file://c:\src\music\flash\goofy_gopher.swf/music.swf
+	// NPN_GetURLNotify url=file:///c:\src\music\flash\goofy_gopher.swf/music.swf
 //
 
 CFlashGuestPlayer::CFlashGuestPlayer()
@@ -184,7 +186,6 @@
     , m_ulLastPlaybackTime(0)
     , m_ulLastReturnedTime(0)
     , m_ulDuration(0)
-    , m_bWindowless(false)
     , m_usVolume(100)
     , m_bMute(FALSE)
     , m_dPlaybackRate(0.0)
@@ -297,6 +298,7 @@
 	HX_RESULT hr=HXR_OK;
 	//XXXctd TODO Find plugin path
 	CHXString strPluginPath("C:\\Program Files\\Mozilla Firefox\\plugins\\NPSWF32.dll");
+	//CHXString strPluginPath("C:\\flash\\flash8\\NPSWF32.dll");
 	// NOTE: this is the plugin path that Mozilla loads ?
 	//CHXString strPluginPath("C:\\WINDOWS\\system32\\Macromed\\Flash\\NPSWF32.dll");
 
@@ -355,8 +357,6 @@
     m_NPP.pdata = NULL;
     m_NPP.ndata = this;
 
-    // Create a child window to house the plugin
-
     if (m_PluginFuncs.newp)
     {
         NPSavedData *pSaved = NULL;
@@ -368,21 +368,22 @@
 	// attributes link:
 	//http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=tn_12701
 
-	// Tested attributes that work, only for NP_EMBED
 	cNames[i] = new_string("QUALITY");
 	cValues[i++] = new_string("high");	// low, medium or high
+#ifdef DEBUG
 	cNames[i] = new_string("BGCOLOR");
 	cValues[i++] = new_string("#AAAAAA"); // set background color to gray, to show the transparency of the flash
-	cNames[i] = new_string("LOOP");	// Set looping to on, always
+#endif
+	cNames[i] = new_string("LOOP");
+	cValues[i++] = new_string("true");
+	cNames[i] = new_string("MENU");
 	cValues[i++] = new_string("true");
-	cNames[i] = new_string("MENU");	// Turn the menu off, only allow changes in settings and about flash popup
-	cValues[i++] = new_string("false");
 
         // Create the plugin instance
         NPError npres = m_PluginFuncs.newp(
-	        (NPMIMEType) flashMimeType,
+	        (NPMIMEType) m_pszFlashMimeType,
 		&m_NPP,
-		NP_EMBED,
+		NP_EMBED,	// Instance was created by an EMBED tag and shares the browser window with other content.
             	(short) i, // number of args
 		cNames, cValues,
 		pSaved);
@@ -477,6 +478,18 @@
 	b = NPN_HasMethod(&m_NPP, m_psobj, id);
         HXLOGL4(HXLOG_FPHR, "HasMethod %s %s", methods[i], b?"true":"false");
     }
+
+    INT32 dVal;
+    Invoke("FlashVersion", dVal);
+    if (dVal == 589824)
+    {
+	HXLOGL4(HXLOG_FPHR, "FlashVersion = %d, v9", dVal);
+    }
+    else
+    {
+	HXLOGL4(HXLOG_FPHR, "FlashVersion = %d, v?", dVal);
+    }
+
 #endif
 }
 
@@ -551,7 +564,7 @@
 	NPVariant vresult;
 
         memset(&vresult, 0, sizeof(NPVariant));
-        vresult.type = NPVariantType_Void;
+        vresult.type = NPVariantType_Null;
 
 	id = NPN_GetStringIdentifier(methodName);
 	if (NPN_HasMethod(&m_NPP, m_psobj, id) &&
@@ -598,8 +611,6 @@
     return hr;
 }
 
-#define MAX_BUFSIZE 1024
-
 HX_RESULT
 CFlashGuestPlayer::SendStream(NPStream* pNPStream, UINT16 dStreamType)
 {
@@ -649,6 +660,12 @@
 	    }
 	    done = true;
 	}
+
+	/*
+	INT32 dPercentLoaded=0;
+	Invoke("PercentLoaded", dPercentLoaded);
+	printf("PercentLoaded = %d\n", dPercentLoaded);
+	*/
     }
 
     if (dStreamType == NP_ASFILE)
@@ -760,18 +777,34 @@
     HX_RELEASE(m_pNetworkConfig);
     HX_RELEASE(m_pRequest);
 
+    ClearResponseList();
+
     // Tell the plugin we're done
-    if (m_PluginFuncs.setwindow)
+    if (m_PluginFuncs.setwindow && m_NPWindow.window)
     {
         m_NPWindow.window = NULL;
 	m_PluginFuncs.setwindow(&m_NPP, &m_NPWindow);
+    	memset(&m_NPWindow, 0, sizeof(m_NPWindow));
     }
     
     if (m_PluginFuncs.destroystream)
     {
 	m_PluginFuncs.destroystream(&m_NPP, &m_NPStream, NPRES_DONE);
+    	memset(&m_NPStream, 0, sizeof(m_NPStream));
     }
 
+    HX_DELETE(m_pStringIds);
+    HX_DELETE(m_pIntIds);
+
+	 
+    // Destroy the plugin instance
+    if (m_PluginFuncs.destroy)
+    {
+	HXLOGL4(HXLOG_FPHR, "\tcalling NPP_Destroy");
+	m_PluginFuncs.destroy(&m_NPP, NULL);
+    }
+
+    // Shutdown the plugin
     if (m_pDLLAccess && m_pDLLAccess->isOpen())
     {
         NP_PLUGINSHUTDOWN pfnShutdown = (NP_PLUGINSHUTDOWN) m_pDLLAccess->getSymbol("NP_Shutdown");
@@ -782,10 +815,6 @@
 	m_pDLLAccess->close();
     }
     HX_DELETE(m_pDLLAccess);
-    ClearResponseList();
-    HX_DELETE(m_pStringIds);
-    HX_DELETE(m_pIntIds);
-
 
     return HXR_OK;
 }
@@ -910,7 +939,6 @@
     rusStatusCode  = HX_STATUS_INITIALIZING;
     rusPercentDone = 0;
 
-    /*
     HX_RESULT hr=HXR_FAIL;
     INT32 dPercentLoaded;
 
@@ -921,11 +949,8 @@
 	{
 		dPercentLoaded = 100;
 	}
-	rusPercentDone = dPercentLoaded;
+	rusPercentDone = (UINT16) dPercentLoaded;
     }
-    */
-    // TODO get Invoke("PercentLoaded") to work
-    rusPercentDone = 100;
 
     if (rusPercentDone == 100)
     {
@@ -1064,6 +1089,14 @@
 {
     HXLOGL4(HXLOG_FPHR, "CFlashGuestPlayer::DetachWindow()");
     HX_RESULT retVal = HXR_OK;
+    
+    // Tell the plug-in to release the window object
+    if (m_PluginFuncs.setwindow && m_NPWindow.window)
+    {
+        m_NPWindow.window = NULL;
+	m_PluginFuncs.setwindow(&m_NPP, &m_NPWindow);
+    	memset(&m_NPWindow, 0, sizeof(m_NPWindow));
+    }
 
     return retVal;
 }
@@ -1135,7 +1168,7 @@
         SetGuestPlayerState(HXGUEST_STATE_MEDIA_TRANSITIONING);
 
 	// Create a new data stream
-	retVal = NewStream(&m_NPP, m_pszURL, flashMimeType, &m_NPStream, m_dStreamType);
+	retVal = NewStream(&m_NPP, m_pszURL, m_pszFlashMimeType, &m_NPStream, m_dStreamType);
 	if (SUCCEEDED(retVal))
 	{
 	    SetGuestPlayerState(HXGUEST_STATE_MEDIA_INITIALIZED);
@@ -1238,6 +1271,7 @@
 	if (SUCCEEDED(retVal))
 	{
             SetGuestPlayerState(HXGUEST_STATE_MEDIA_PAUSED);
+
 	}
     }
 
@@ -1452,86 +1486,8 @@
     return retVal;
 }
 
-HX_RESULT
-CFlashGuestPlayer::SetMetaDataProperties(IHXValues* pData, const char* pszName,
-                                                 const char* pszValue, IUnknown* pContext)
-{
-    HX_RESULT retVal = HXR_FAIL;
-
-    if (pData && pszName && pszValue && pContext)
-    {
-        if (!strcmp(pszName, "Duration"))
-        {
-            // Duration is double
-            double dDuration = atof(pszValue);
-            // Convert to milliseconds
-            UINT32 ulDuration = (UINT32) (dDuration * 1000.0);
-            // Set the value
-            retVal = pData->SetPropertyULONG32("Duration", ulDuration);
-        }
-        else if (!strcmp(pszName, "Bitrate"))
-        {
-            // Bitrate is in bits per second
-            UINT32 ulBitRate = (UINT32) atol(pszValue);
-            // Set the value
-            retVal = pData->SetPropertyULONG32("AvgBitRate", ulBitRate);
-        }
-        else if (!strcmp(pszName, "SourceURL"))
-        {
-            // XXXMEH - HACK make sure that this is a full URL
-            // (Flash sometimes passes back just the file name
-            // such as c:/path/to/thefile.asf) instead of
-            // a fully qualified URL such as
-            // file:///c:/path/to/thefile.asf).
-            const char* pszTmp = pszValue;
-            CHXString   cTmp;
-            if (((pszValue[0] >= 'c' && pszValue[0] <= 'z') ||
-                 (pszValue[0] >= 'C' && pszValue[0] <= 'Z')) &&
-                pszValue[1] == ':'                           &&
-                (pszValue[2] == '/' || pszValue[2] == '\\'))
-            {
-                // Append file:/// to the beginning
-                cTmp = "file:///";
-                cTmp += pszValue;
-                pszTmp = (const char*) cTmp;
-            }
-            // Change the name to "URL"
-            retVal = SetCStringPropertyCCF(pData, "URL", pszTmp, pContext);
-        }
-        else
-        {
-            // Get the string length
-            UINT32 ulStrLen = (UINT32) strlen(pszValue);
-            // Check if all the characters are digits
-            if (IsAllDigits((BYTE*) pszValue, ulStrLen))
-            {
-                // Convert to UINT32
-                UINT32 ulTmp = (UINT32) strtoul(pszValue, NULL, 10);
-                // Set as a ULONG32 property
-                retVal = pData->SetPropertyULONG32(pszName, ulTmp);
-            }
-            else
-            {
-                // We will normally set these as CString properties, but
-                // for "Title", "Author", and "Copyright" properties,
-                // we will force them to be buffer properties
-                HXBOOL bSetAsBuffer = FALSE;
-                if (!strcmp(pszName, "Title")  ||
-                    !strcmp(pszName, "Author") ||
-                    !strcmp(pszName, "Copyright"))
-                {
-                    bSetAsBuffer = TRUE;
-                }
-                // Set as CString property
-               retVal = SetCStringPropertyCCF(pData, pszName, pszValue, pContext, bSetAsBuffer);
-            }
-        }
-    }
-
-    return retVal;
-}
-
-void CFlashGuestPlayer::ClearResponseList()
+void
+CFlashGuestPlayer::ClearResponseList()
 {
     if (m_pResponseList)
     {
@@ -1544,7 +1500,8 @@
     HX_DELETE(m_pResponseList);
 }
 
-void CFlashGuestPlayer::CallAllResponsePlayerStateChange()
+void
+CFlashGuestPlayer::CallAllResponsePlayerStateChange()
 {
     if (m_pResponseList && m_pResponseList->GetCount() > 0)
     {
@@ -1562,7 +1519,8 @@
     }
 }
 
-void CFlashGuestPlayer::CallAllResponseError(HX_RESULT status, IHXBuffer* pErrStr)
+void
+CFlashGuestPlayer::CallAllResponseError(HX_RESULT status, IHXBuffer* pErrStr)
 {
     if (m_pResponseList && m_pResponseList->GetCount() > 0)
     {
@@ -1580,7 +1538,8 @@
     }
 }
 
-void CFlashGuestPlayer::SetGuestPlayerStateEnforceTransitions(UINT32 ulNewState)
+void
+CFlashGuestPlayer::SetGuestPlayerStateEnforceTransitions(UINT32 ulNewState)
 {
     if (ulNewState != m_ulGuestPlayerState)
     {
@@ -1589,7 +1548,8 @@
     }
 }
 
-void CFlashGuestPlayer::SetGuestPlayerState(UINT32 ulNewState)
+void
+CFlashGuestPlayer::SetGuestPlayerState(UINT32 ulNewState)
 {
     if (ulNewState != m_ulGuestPlayerState)
     {
@@ -1600,31 +1560,6 @@
     }
 }
 
-HXBOOL CFlashGuestPlayer::IsAllDigits(BYTE* pBuf, UINT32 ulLen)
-{
-    HXBOOL bRet = FALSE;
-
-    if (pBuf && ulLen)
-    {
-        // Check for NULL character at end
-        if (pBuf[ulLen - 1] == 0)
-        {
-            // Make sure each character before the last is a digit
-            bRet = TRUE;
-            for (UINT32 i = 0; i < ulLen - 1; i++)
-            {
-                if (!isdigit(pBuf[i]))
-                {
-                    bRet = FALSE;
-                    break;
-                }
-            }
-        }
-    }
-
-    return bRet;
-}
-
 HX_RESULT
 CFlashGuestPlayer::InitPluginCallbacks()
 {
@@ -2132,12 +2067,27 @@
 bool
 CFlashGuestPlayer::NPN_Invoke(NPP npp, NPObject* obj, NPIdentifier methodName, const NPVariant *args, uint32_t argCount, NPVariant *result)
 {
+    bool bRes=false;
     HXLOGL4(HXLOG_FPHR, "NPN_Invoke %s", (char*) methodName);
     if (obj && obj->_class && obj->_class->invoke)
     {
-	return obj->_class->invoke(obj, methodName, args, argCount, result);
+	bRes = obj->_class->invoke(obj, methodName, args, argCount, result);
+	if (bRes)
+    	{
+	    // convert from javascript, in the value union
+	    UINT32 val = (result->value.stringValue.utf8length);
+	    if (NPVARIANT_IS_BOOLEAN(*result))
+	    {
+	      BOOLEAN_TO_NPVARIANT(val, *result);
+	    }
+	    else if (NPVARIANT_IS_INT32(*result))
+	    {
+	      INT32_TO_NPVARIANT(val, *result);
+	    }
+	}
     }
-    return false;
+
+    return bRes;
 }
 
 bool
@@ -2206,12 +2156,13 @@
 bool
 CFlashGuestPlayer::NPN_HasMethod(NPP npp, NPObject *obj, NPIdentifier methodName)
 {
-    HXLOGL4(HXLOG_FPHR, "NPN_HasMethod %s", (char*) methodName);
+    bool bVal=false;
     if (obj && obj->_class && obj->_class->hasMethod)
     {
-	return obj->_class->hasMethod(obj, methodName);
+	bVal = obj->_class->hasMethod(obj, methodName);
     }
-    return false;
+    HXLOGL4(HXLOG_FPHR, "NPN_HasMethod %s: %s", (char*) methodName, bVal?"true":"false");
+    return bVal;
 }
 
 void
@@ -2231,7 +2182,7 @@
     {
 	NPN_ReleaseObject( variant->value.objectValue );
     }
-    variant->type = NPVariantType_Void;
+    variant->type = NPVariantType_Null;
 }
 
 void


From damann at helixcommunity.org  Fri Nov  3 13:15:14 2006
From: damann at helixcommunity.org (damann@helixcommunity.org)
Date: Fri Nov  3 14:22:46 2006
Subject: [Datatype-cvs] mdf/video/renderer mdfvideoadapter.cpp, 1.3.2.41,
	1.3.2.42
Message-ID: 

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

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	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:
    darrin.mann@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    November-2-2006

Project: 
    Helix plug-in for Symbian

Error ID: 
    

Synopsis: 
    The HELIX_FEATURE_REGISTRY feature will be enabled for the Helix MMF-MDF 
    adaptation.   The audio priority and HELIX_FEATURE_DRM_SECURE_OUTPUT 
    features will be modified.  They will stop using the lite prefs to pass
    values from the MMF to the MDF.  The registry will be used to transfer 
    these values.

    A few methods were moved from the audio and video controllers to the base
    controller.  The differences between the methods that were moved are due to 
    the HELIX_FEATURE_S60_PROGDOWN feature.  The video controller implementation 
    of these methods was used since the audio controller has no way to set the 
    progressive download variables. There is no real impact to the audio controller 
    since the progressive download code will never be executed.

Files Modified: 
    audio/device/platform/symbian/audsymbian.cpp

    clientapps/symbianMmf/hxmmfstatectrl.cpp
    clientapps/symbianMmf/hxmmfstatectrl.h
    clientapps/symbianMmf/audiocontroller/controllerdll
    clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.h
    clientapps/symbianMmf/common/Umakefil
    clientapps/symbianMmf/common/hxmmfbasectrl.cpp
    clientapps/symbianMmf/common/hxmmfbasectrl.h
    clientapps/symbianMmf/videocontroller/MmfCtrlDll
    clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.h

    datatype/mdf/audio/dsp/mdfauddevice.cpp
    datatype/mdf/audio/dsp/mdfdevsound.cpp
    datatype/mdf/video/renderer/mdfvideoadapter.cpp

Files Added:
    None

Image Size and Heap Use impact: 
    Minor, the image size increase for the ARMV5 dlls was less than 1% overall

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

Platforms and Profiles Functionality verified: 
    winscw 
    armv5

Branch: 
    head and hxclient_2_1_0_cayennes 


Index: mdfvideoadapter.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/renderer/mdfvideoadapter.cpp,v
retrieving revision 1.3.2.41
retrieving revision 1.3.2.42
diff -u -d -r1.3.2.41 -r1.3.2.42
--- mdfvideoadapter.cpp	3 Nov 2006 20:19:39 -0000	1.3.2.41
+++ mdfvideoadapter.cpp	3 Nov 2006 21:15:11 -0000	1.3.2.42
@@ -55,6 +55,7 @@
 #include "mdfvideoadapter.h"
 #include "hxprefutil.h"
 #include "hxerror.h"
+#include "hxmon.h"
 
 #ifdef _WIN32
 #define DFLT_PRESENT_PRIORITY          THREAD_PRIORITY_ABOVE_NORMAL
@@ -394,24 +395,32 @@
         m_pDevVideoPlay->SetClockSource( m_pClockSource );
 
 #if defined(HELIX_FEATURE_DRM_SECURE_OUTPUT)
-        // Read in OMA DRM version from prefs.
-        // If it's v2, video output needs to be secure (to prevent copying/recording).
+        // Read in secure output flag from registry
+        // If it is set, video output needs to be secure (to prevent copying/recording).
         UINT8 drmVersion(0);
-        HXBOOL bCopyRestricted = FALSE;
-        if( SUCCEEDED( ReadPrefUINT8( m_pContext, "OmaDrmVersion", drmVersion ) ) )
+        INT32 lCopyRestricted = 0;
+
+        //
+        //  Get the IHXRegistry interface from the context
+        //
+        IHXRegistry* pReg = NULL;
+
+        if (m_pContext->QueryInterface(IID_IHXRegistry, (void**)&pReg) == HXR_OK)
         {
-            if( drmVersion == 2 )
-            {
-                bCopyRestricted = TRUE;
-            }
-            MDFVIDEOLOG_WRITE_FORMAT2( "    OMA DRM v%d from prefs", drmVersion );
+            pReg->GetIntByName("MMF.SecureOutput", lCopyRestricted);
+            HX_RELEASE(pReg);
         }
+
+        MDFVIDEOLOG_WRITE_FORMAT2( "    Secure Output %d from registry", lCopyRestricted );
+
         MMmfVideoSecureOutput* pSecureOutput =
             (MMmfVideoSecureOutput *) m_pDevVideoPlay->CustomInterface( m_PostProcessorHwDeviceId, KMmfVideoSecureOutputUid );
+
         MDFVIDEOLOG_INOUTFN( "CustomInterface() does not leave" );
+
         if( pSecureOutput )
         {
-            TRAPD( error, pSecureOutput->MmvsoSetSecureOutputL( bCopyRestricted ) );
+            TRAPD( error, pSecureOutput->MmvsoSetSecureOutputL( (HXBOOL)lCopyRestricted ) );
             if ( error != KErrNone )
             {
                 MDFVIDEOLOG_INOUTFN( "MmvsoSetSecureOutputL failed" );
@@ -1024,7 +1033,7 @@
            //we have no region so make a region == to cliprect
            m_ClipRegion.Clear();
            m_ClipRegion.AddRect(m_clipRect);
-	    }
+        }
         if( SUCCEEDED( retVal ) )
         {
             retVal = StartDSA();


From damann at helixcommunity.org  Fri Nov  3 13:15:13 2006
From: damann at helixcommunity.org (damann@helixcommunity.org)
Date: Fri Nov  3 14:22:47 2006
Subject: [Datatype-cvs] mdf/audio/dsp mdfauddevice.cpp, 1.1.2.9,
	1.1.2.10 mdfdevsound.cpp, 1.1.2.12, 1.1.2.13
Message-ID: 

Update of /cvsroot/datatype/mdf/audio/dsp
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv3986/mdf/audio/dsp

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfauddevice.cpp mdfdevsound.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:
    darrin.mann@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    November-2-2006

Project: 
    Helix plug-in for Symbian

Error ID: 
    

Synopsis: 
    The HELIX_FEATURE_REGISTRY feature will be enabled for the Helix MMF-MDF 
    adaptation.   The audio priority and HELIX_FEATURE_DRM_SECURE_OUTPUT 
    features will be modified.  They will stop using the lite prefs to pass
    values from the MMF to the MDF.  The registry will be used to transfer 
    these values.

    A few methods were moved from the audio and video controllers to the base
    controller.  The differences between the methods that were moved are due to 
    the HELIX_FEATURE_S60_PROGDOWN feature.  The video controller implementation 
    of these methods was used since the audio controller has no way to set the 
    progressive download variables. There is no real impact to the audio controller 
    since the progressive download code will never be executed.

Files Modified: 
    audio/device/platform/symbian/audsymbian.cpp

    clientapps/symbianMmf/hxmmfstatectrl.cpp
    clientapps/symbianMmf/hxmmfstatectrl.h
    clientapps/symbianMmf/audiocontroller/controllerdll
    clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.h
    clientapps/symbianMmf/common/Umakefil
    clientapps/symbianMmf/common/hxmmfbasectrl.cpp
    clientapps/symbianMmf/common/hxmmfbasectrl.h
    clientapps/symbianMmf/videocontroller/MmfCtrlDll
    clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.h

    datatype/mdf/audio/dsp/mdfauddevice.cpp
    datatype/mdf/audio/dsp/mdfdevsound.cpp
    datatype/mdf/video/renderer/mdfvideoadapter.cpp

Files Added:
    None

Image Size and Heap Use impact: 
    Minor, the image size increase for the ARMV5 dlls was less than 1% overall

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

Platforms and Profiles Functionality verified: 
    winscw 
    armv5

Branch: 
    head and hxclient_2_1_0_cayennes 


Index: mdfdevsound.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/audio/dsp/mdfdevsound.cpp,v
retrieving revision 1.1.2.12
retrieving revision 1.1.2.13
diff -u -d -r1.1.2.12 -r1.1.2.13
--- mdfdevsound.cpp	18 Oct 2006 14:47:59 -0000	1.1.2.12
+++ mdfdevsound.cpp	3 Nov 2006 21:15:11 -0000	1.1.2.13
@@ -555,7 +555,7 @@
         if (err == KErrNone)
         {
             TRAP(err, pAudioOutput->SetSecureOutputL(ETrue));
-            HXLOGL4(HXLOG_MDFA, "---devsnd:ConfigDev .. SetSecureOutputL err=%d", err);
+            HXLOGL2(HXLOG_MDFA, "---devsnd:ConfigDev .. SetSecureOutputL err=%d", err);
         }
         if (err != KErrNone)
         {

Index: mdfauddevice.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/audio/dsp/mdfauddevice.cpp,v
retrieving revision 1.1.2.9
retrieving revision 1.1.2.10
diff -u -d -r1.1.2.9 -r1.1.2.10
--- mdfauddevice.cpp	17 Aug 2006 03:00:00 -0000	1.1.2.9
+++ mdfauddevice.cpp	3 Nov 2006 21:15:11 -0000	1.1.2.10
@@ -1,8 +1,8 @@
 /* ***** BEGIN LICENSE BLOCK *****
  * Source last modified: $Id$
- * 
+ *
  * Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
- * 
+ *
  * The contents of this file, and the files included with this file,
  * are subject to the current version of the RealNetworks Public
  * Source License (the "RPSL") available at
@@ -16,7 +16,7 @@
  * to this file, the RCSL.  Please see the applicable RPSL or RCSL for
  * the rights, obligations and limitations governing use of the
  * contents of the file.
- * 
+ *
  * Alternatively, the contents of this file may be used under the
  * terms of the GNU General Public License Version 2 or later (the
  * "GPL") in which case the provisions of the GPL are applicable
@@ -28,30 +28,30 @@
  * the GPL. If you do not delete the provisions above, a recipient may
  * use your version of this file under the terms of any one of the
  * RPSL, the RCSL or the GPL.
- * 
+ *
  * This file is part of the Helix DNA Technology. RealNetworks is the
  * developer of the Original Code and owns the copyrights in the
  * portions it created.
- * 
+ *
  * This file, and the files included with this file, is distributed
  * and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
  * KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
  * ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
  * ENJOYMENT OR NON-INFRINGEMENT.
- * 
+ *
  * Technology Compatibility Kit Test Suite(s) Location:
  *    http://www.helixcommunity.org/content/tck
- * 
+ *
  * Contributor(s):
- * 
+ *
  * ***** END LICENSE BLOCK ***** */
- 
+
 #include "hxassert.h"
 #include "mdfauddevice.h"
 #include "mdfdebug.h"
 #include "hxprefutil.h"
-
+#include "hxmon.h"
 
 
 static UINT32 Scale(UINT32 v, UINT32 f0, UINT32 f1, UINT32 t0, UINT32 t1);
@@ -65,14 +65,14 @@
 CHXMDFAudioDevice::CreateMDFAudioDevice(HXMDFAudioFormat* pAudioFormat)
 {
     CHXMDFAudioDevice* pMdfAudioDev = NULL;
-    
+
     pMdfAudioDev = new CHXMDFAudioDevice(pAudioFormat);
-    
-    if (pMdfAudioDev && HXR_OK != pMdfAudioDev->Construct()) 
+
+    if (pMdfAudioDev && HXR_OK != pMdfAudioDev->Construct())
     {
         HX_DELETE(pMdfAudioDev);
     }
-    
+
     return pMdfAudioDev;
 }
 
@@ -84,13 +84,13 @@
 {
     //- create timer
     TInt err = m_iTimer.CreateLocal();
-    if (err != KErrNone) 
+    if (err != KErrNone)
     {
         HXLOGL1(HXLOG_MDFA,"mdfdev:construct failed to create timer.");
         return HXR_FAIL;
     }
-		
-    //- create devSound 
+
+    //- create devSound
     //m_pDevSound = new CMDFDevSound(m_pAudioFormat, &m_readyList);
     m_pDevSound = CMDFDevSound::CreateMDFDevSound(m_pAudioFormat, &m_readyList);
     if (!m_pDevSound)
@@ -99,7 +99,7 @@
         return HXR_FAIL;
     }
 
-    // To observe devsound status.    
+    // To observe devsound status.
     m_pDevSound->SetAudioDeviceObserver(this);
 
     return HXR_OK;
@@ -128,7 +128,7 @@
 {
     //- activate active object
     CActiveScheduler::Add(this);
-		
+
     //- get device volume range && set initial volume///
     m_nDevMinVolume = 0;
 }
@@ -142,7 +142,7 @@
     HXLOGL4(HXLOG_MDFA,"mdfdev:~mdfdev <");
     Close(TRUE);
     m_iTimer.Close();
-		
+
     // remove this device
     if( m_pContext )
     {
@@ -168,20 +168,20 @@
     }
 
     HX_DELETE(m_pDevSound);
-    
-    while (!m_bufferList.IsEmpty()) 
+
+    while (!m_bufferList.IsEmpty())
     {
         HXMDFAudioData* p = (HXMDFAudioData*)m_bufferList.RemoveHead();
         HX_DELETE(p);
     }
-	
-	while (!m_readyList.IsEmpty()) 
-	{
+
+    while (!m_readyList.IsEmpty())
+    {
         HXMDFAudioData* p = (HXMDFAudioData*)m_readyList.RemoveHead();
         if (!p->m_bMissing) {
             HX_DELETE(p);
         }
-    }	    
+    }
     HXLOGL4(HXLOG_MDFA,"mdfdev:~mdfdev >");
 }
 
@@ -197,7 +197,7 @@
             { GET_IIDHANDLE(IID_IHXTimelineWatcher), (IHXTimelineWatcher*)this },
             { GET_IIDHANDLE(IID_IUnknown), (IUnknown*)(IHXAudioDevice*)this },
         };
-    
+
     return ::QIFind(qiList, QILISTSIZE(qiList), riid, ppvObj);
 }
 
@@ -221,8 +221,8 @@
         return m_ulRefCount;
     }
     delete this;
-    
-    return 0;   
+
+    return 0;
 }
 
 
@@ -267,7 +267,7 @@
                     hxr = HXR_FAIL;
                 }
             }
-            //  else 
+            //  else
             HXLOGL4(HXLOG_MDFA,"mdfdev:init .. replace OK");
             HX_RELEASE(pADM);
         }
@@ -277,20 +277,20 @@
             hxr = HXR_FAIL;
         }
 
-   
+
         // Error report
         HX_RELEASE(m_pErrorMessage);
         m_pContext->QueryInterface(IID_IHXErrorMessages, (void **)&m_pErrorMessage);
 
     }
-    else 
+    else
     {
         HXLOGL2(HXLOG_MDFA,"mdfdev:init .. no Context");
         hxr = HXR_FAIL;
     }
 
     HXLOGL4(HXLOG_MDFA,"mdfdev:init >");
-        
+
     return hxr;
 }
 
@@ -302,9 +302,9 @@
 HX_RESULT CHXMDFAudioDevice::AddAudioData(HXMDFAudioData* pData)
 {
     HX_ASSERT(pData);
-    
+
     HX_RESULT hxr = HXR_OK;
-    
+
     if ( pData )
     {
         if ( !m_bufferList.AddTail(pData) )
@@ -312,7 +312,7 @@
             hxr = HXR_OUTOFMEMORY;
         }
     }
-    
+
     return hxr;
 }
 
@@ -339,7 +339,7 @@
 
         //Set timer for next OnTimeSync callback
         DoSetTimer();
-      
+
     }
     else if (KErrCancel != iStatus.Int())
     {
@@ -378,51 +378,58 @@
         m_pAudioFormat->m_uMaxBlockSize  = pAudioFormat->uMaxBlockSize;
         m_pAudioFormat->UpdateConfig();
     }
-    
+
     //set up DeviceResponse
     if (m_pDeviceResponse)
-    { 
+    {
         HX_RELEASE(m_pDeviceResponse);
     }
-    
+
     if( pDeviceResponse )
     {
         HXLOGL2(HXLOG_MDFA,"mdfdeV:open .. devResp is set!");
         m_pDeviceResponse = pDeviceResponse;
         m_pDeviceResponse->AddRef();
     }
-    else 
+    else
     {
         return HXR_FAIL;
     }
-    
+
     //retrieve Priority Settings from MMF stored in prefs to use in devSound
     GetPrioritySettings();
 
-    //Get drm version from prefs for devsound to set secure output
-    HXBOOL bSecureAudio(FALSE);
+    INT32 lSecureAudio = 0;
+
 #if defined(HELIX_FEATURE_DRM_SECURE_OUTPUT)
-    UINT8 drmVersion(0);
-    if (SUCCEEDED(ReadPrefUINT8(m_pContext, "OmaDrmVersion", drmVersion)))
+    //
+    //  Determine if output must be secure from Registry
+    //
+    if (m_pContext)
     {
-        if (drmVersion == 2)
+        IHXRegistry* pReg = NULL;
+
+        if (m_pContext->QueryInterface(IID_IHXRegistry, (void**)&pReg) == HXR_OK)
         {
-            bSecureAudio = TRUE;
+            pReg->GetIntByName("MMF.SecureOutput", lSecureAudio);
+
+            HX_RELEASE(pReg);
         }
-        HXLOGL2(HXLOG_MDFA, "mdfdev:open .. OMA DRM v%u from prefs", drmVersion);
     }
+
+    HXLOGL2(HXLOG_MDFA, "mdfdev::open() Secure Audio %d", lSecureAudio);
 #endif
 
     //Open and Initialize audio device
     HX_ASSERT(m_pDevSound);
-    hxr = m_pDevSound->Open(m_pAudioFormat, m_pPrioritySettings, bSecureAudio);
+    hxr = m_pDevSound->Open(m_pAudioFormat, m_pPrioritySettings, (HXBOOL)lSecureAudio);
 
     //Initialize DevSound
     if (hxr==HXR_OK)
     {
         m_nDevMaxVolume=m_pDevSound->GetMaxVolume();
         // set the initial volume. If m_CurrentVolume has an invalid value that means
-        // volume is not yet set from client side then 
+        // volume is not yet set from client side then
         // set the volume to half the maximum volume otherwise use the valid value.
         if (m_CurrentVolume == MDFDEVICE_INVALID_VOLUME)
         {
@@ -430,7 +437,7 @@
         }
         m_pDevSound->SetVolume(m_CurrentVolume);
     }
-    
+
     HXLOGL4(HXLOG_MDFA,"mdfdev:open > hxr=%d", hxr);
     return hxr;
 }
@@ -458,7 +465,7 @@
             HX_RELEASE(pADM);
         }
     }
-    
+
     HX_RELEASE(m_pContext);
 
     HXLOGL4(HXLOG_MDFA,"mdfdev:close > flush=%d", bFlush);
@@ -472,14 +479,14 @@
 {
     HXLOGL4(HXLOG_MDFA,"mdfdev:pause <");
     HX_RESULT hxr = HXR_OK;
-    
+
     hxr = m_pDevSound->Pause();
-    
+
     if (hxr==HXR_OK)
     {
-        m_playing= FALSE;        
+        m_playing= FALSE;
     }
-    
+
     if (IsActive())
     {
         Cancel();
@@ -496,7 +503,7 @@
 {
     HXLOGL4(HXLOG_MDFA,"mdfdev:resume <");
     HX_RESULT hxr = HXR_OK;
-    
+
     //Check the time and call OnTimeSync
     if(m_pDeviceResponse)
     {
@@ -506,25 +513,25 @@
     }
 
     hxr = m_pDevSound->Play();
-    
+
     if (hxr==HXR_OK)
     {
         m_playing= TRUE;
     }
-    
+
     DoSetTimer();
-    
+
     HXLOGL4(HXLOG_MDFA,"mdfdev:resume >");
     return hxr;
 }
 
 //
-//  IHXAudioDevice::Write() 
+//  IHXAudioDevice::Write()
 //
 HX_RESULT CHXMDFAudioDevice::Write(const HXAudioData* pHXAudioData)
 {
     HXLOGL4(HXLOG_MDFA,"mdfdev:write <");
-    
+
     INT32 dataSize   = (INT32)pHXAudioData->pData->GetSize();
 
     UINT32 ulLastAudioTime = pHXAudioData->ulAudioTime;
@@ -539,8 +546,8 @@
     while ( m_nBytesPCMToPlay >= m_pAudioFormat->m_uBytesPerFrame )
     {
         //  Ensure there is encoded data and the data is within the time limits
-        if ( !m_bufferList.IsEmpty() && 
-             (pAudioData = (HXMDFAudioData*)m_bufferList.GetHead()) &&  
+        if ( !m_bufferList.IsEmpty() &&
+             (pAudioData = (HXMDFAudioData*)m_bufferList.GetHead()) &&
              ((pAudioData->m_ulAudioTime-m_ulAudioTimeOffset) < ulLastAudioTime) )
         {
             // pass this frame to ready list.
@@ -590,7 +597,7 @@
 
     m_nMinVolume = uMinVolume;
     m_nMaxVolume = uMaxVolume;
-    
+
     /// this has to be called after initializeL
     m_nDevMaxVolume = 100;  //default
     m_nDevMinVolume = 0;
@@ -617,7 +624,7 @@
         m_pDevSound->SetVolume(m_CurrentVolume);
     }
     HXLOGL4(HXLOG_MDFA,"mdfdev:setvol >");
-    
+
     return res;
 }
 
@@ -645,29 +652,29 @@
 {
     HXLOGL4(HXLOG_MDFA,"mdfdev:reset <");
     // stop device.
-    if (m_pDevSound) 
+    if (m_pDevSound)
     {
         m_pDevSound->Reset();
     }
 
     // need to clean data in buffer.
     m_nBytesPCMToPlay = 0;
-    
-    while (!m_bufferList.IsEmpty()) 
+
+    while (!m_bufferList.IsEmpty())
     {
         HXMDFAudioData* p = (HXMDFAudioData*)m_bufferList.RemoveHead();
         ///
         HX_DELETE(p);
     }
 
-    while (!m_readyList.IsEmpty()) 
+    while (!m_readyList.IsEmpty())
     {
         HXMDFAudioData* p = (HXMDFAudioData*)m_readyList.RemoveHead();
         if (!p->m_bMissing) {
             HX_DELETE(p);
         }
-    }    
-    
+    }
+
     // stop active object.
     if (IsActive())
     {
@@ -675,7 +682,7 @@
     }
 
     m_playing= FALSE;
-    
+
     HXLOGL4(HXLOG_MDFA,"mdfdev:reset >");
     return HXR_OK;
 }
@@ -692,7 +699,7 @@
 
 //
 //  IHXAudioDevice::CheckFormat
-//          - This method check the capability of audio device 
+//          - This method check the capability of audio device
 //              for a given audio format
 //          - To be implemented
 //
@@ -723,32 +730,32 @@
 //          - Those methods are used for multiple audio devices, not applicable yet.
 //
 HX_RESULT CHXMDFAudioDevice::OnPause()
-{ 
-	return HXR_OK;
+{
+    return HXR_OK;
 }
 
 HX_RESULT CHXMDFAudioDevice::OnResume()
-{	
-	return HXR_OK;
+{
+    return HXR_OK;
 }
 
 HX_RESULT CHXMDFAudioDevice::OnClose()
-{	
-	return HXR_OK;
+{
+    return HXR_OK;
 }
 
 HX_RESULT CHXMDFAudioDevice::OnTimeSync(UINT32 currentTime)
 {
-	return HXR_OK;
+    return HXR_OK;
 }
 
 //
-// Helpers 
+// Helpers
 //
 void CHXMDFAudioDevice::SetStartTime(UINT32 ulStartTime)
 {
     HXLOGL4(HXLOG_MDFA,"mdfdeV:setStartT <> %d", ulStartTime);
-    
+
     m_ulAudioTimeOffset = ulStartTime;
 }
 
@@ -758,8 +765,8 @@
 void CHXMDFAudioDevice::DoSetTimer()
 {
     HXLOGL4(HXLOG_MDFA,"mdfdeV:dosettimer <");
-    
-	if( !IsActive())
+
+    if( !IsActive())
     {
         //HXLOGL4(HXLOG_MDFA, "mdfdeV:dosettimer .. set timer here. %d", iStatus.Int());
         m_iTimer.After(iStatus, TIMESYNC_CALLBACK_INTERVAL_MS * 1000);
@@ -776,14 +783,14 @@
 {
     HXLOGL4(HXLOG_MDFA, "mdfdeV:OnDeviceError <");
 
-    HX_ASSERT(m_pErrorMessage != NULL);    
-    
+    HX_ASSERT(m_pErrorMessage != NULL);
+
     // Report error to Error Messages
     if(m_pErrorMessage)
     {
         m_pErrorMessage->Report(HXLOG_INFO, hxr, 0, NULL, NULL);
     }
-    
+
     HXLOGL4(HXLOG_MDFA, "mdfdeV:OnDeviceError >");
 }
 
@@ -793,43 +800,46 @@
 void CHXMDFAudioDevice::GetPrioritySettings()
 {
     HXLOGL4(HXLOG_MDFA, "mdfdeV:GetPrioritySettings <");
-    
+
+    INT32 prio = 0;
+    INT32 pref = 0;
+
     if (!m_pPrioritySettings)
     {
         m_pPrioritySettings = new TMMFPrioritySettings;
     }
-    m_pPrioritySettings->iPriority = 0;
-    m_pPrioritySettings->iPref = (TMdaPriorityPreference)0;
-    
+
     if (m_pContext)
     {
-        UINT32 prio = 0, pref = 0;
-        HX_RESULT res = HXR_OK;
+        //
+        //  Get the IHXRegistry interface from the context
+        //
+        IHXRegistry* pReg = NULL;
 
-        // read in audio priority value
-        res = ReadPrefUINT32(m_pContext, "MMFPriority", prio);
-        if (HXR_OK == res)
+        if (m_pContext->QueryInterface(IID_IHXRegistry, (void**)&pReg) == HXR_OK)
         {
-            m_pPrioritySettings->iPriority = prio;
-        }
+            //
+            //  read in audio priority and preference values
+            //
+            pReg->GetIntByName("MMF.Audio.Priority", prio);
+            pReg->GetIntByName("MMF.Audio.PriorityPref", pref);
 
-        // read in audio preference value
-        res = ReadPrefUINT32(m_pContext, "MMFPriorityPref", pref);
-        if (HXR_OK == res)
-        {
-            m_pPrioritySettings->iPref = (TMdaPriorityPreference)pref;
+            HX_RELEASE(pReg);
         }
-
-        HXLOGL4(HXLOG_MDFA, "mdfdeV:GetPrioritySettings (%u, %u) from prefs",
-                m_pPrioritySettings->iPriority, m_pPrioritySettings->iPref);
     }
 
+    m_pPrioritySettings->iPriority = prio;
+    m_pPrioritySettings->iPref = (TMdaPriorityPreference)pref;
+
+    HXLOGL2(HXLOG_MDFA, "mdfdeV:GetPrioritySettings (%d, %d) from registry",
+        m_pPrioritySettings->iPriority, m_pPrioritySettings->iPref);
+
     HXLOGL4(HXLOG_MDFA, "mdfdeV:GetPrioritySettings >");
 }
 
 
 //
-// convenience methods 
+// convenience methods
 //
 UINT32 Scale(UINT32 v, UINT32 f0, UINT32 f1, UINT32 t0, UINT32 t1)
 {


From damann at helixcommunity.org  Fri Nov  3 13:50:52 2006
From: damann at helixcommunity.org (damann@helixcommunity.org)
Date: Fri Nov  3 14:58:26 2006
Subject: [Datatype-cvs] mdf/video/renderer mdfvideoadapter.cpp,1.45,1.46
Message-ID: 

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

Modified Files:
	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:
    darrin.mann@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    November-2-2006

Project: 
    Helix plug-in for Symbian

Error ID: 
    

Synopsis: 
    The HELIX_FEATURE_REGISTRY feature will be enabled for the Helix MMF-MDF 
    adaptation.   The audio priority and HELIX_FEATURE_DRM_SECURE_OUTPUT 
    features will be modified.  They will stop using the lite prefs to pass
    values from the MMF to the MDF.  The registry will be used to transfer 
    these values.

    A few methods were moved from the audio and video controllers to the base
    controller.  The differences between the methods that were moved are due to 
    the HELIX_FEATURE_S60_PROGDOWN feature.  The video controller implementation 
    of these methods was used since the audio controller has no way to set the 
    progressive download variables. There is no real impact to the audio controller 
    since the progressive download code will never be executed.

Files Modified: 
    audio/device/platform/symbian/audsymbian.cpp

    clientapps/symbianMmf/hxmmfstatectrl.cpp
    clientapps/symbianMmf/hxmmfstatectrl.h
    clientapps/symbianMmf/audiocontroller/controllerdll
    clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.h
    clientapps/symbianMmf/common/Umakefil
    clientapps/symbianMmf/common/hxmmfbasectrl.cpp
    clientapps/symbianMmf/common/hxmmfbasectrl.h
    clientapps/symbianMmf/videocontroller/MmfCtrlDll
    clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.h

    datatype/mdf/audio/dsp/mdfauddevice.cpp
    datatype/mdf/audio/dsp/mdfdevsound.cpp
    datatype/mdf/video/renderer/mdfvideoadapter.cpp

Files Added:
    None

Image Size and Heap Use impact: 
    Minor, the image size increase for the ARMV5 dlls was less than 1% overall

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

Platforms and Profiles Functionality verified: 
    winscw 
    armv5

Branch: 
    head and hxclient_2_1_0_cayennes 


Index: mdfvideoadapter.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/renderer/mdfvideoadapter.cpp,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -d -r1.45 -r1.46
--- mdfvideoadapter.cpp	3 Nov 2006 20:47:49 -0000	1.45
+++ mdfvideoadapter.cpp	3 Nov 2006 21:50:50 -0000	1.46
@@ -55,6 +55,7 @@
 #include "mdfvideoadapter.h"
 #include "hxprefutil.h"
 #include "hxerror.h"
+#include "hxmon.h"
 
 #ifdef _WIN32
 #define DFLT_PRESENT_PRIORITY          THREAD_PRIORITY_ABOVE_NORMAL
@@ -394,24 +395,32 @@
         m_pDevVideoPlay->SetClockSource( m_pClockSource );
 
 #if defined(HELIX_FEATURE_DRM_SECURE_OUTPUT)
-        // Read in OMA DRM version from prefs.
-        // If it's v2, video output needs to be secure (to prevent copying/recording).
+        // Read in secure output flag from registry
+        // If it is set, video output needs to be secure (to prevent copying/recording).
         UINT8 drmVersion(0);
-        HXBOOL bCopyRestricted = FALSE;
-        if( SUCCEEDED( ReadPrefUINT8( m_pContext, "OmaDrmVersion", drmVersion ) ) )
+        INT32 lCopyRestricted = 0;
+
+        //
+        //  Get the IHXRegistry interface from the context
+        //
+        IHXRegistry* pReg = NULL;
+
+        if (m_pContext->QueryInterface(IID_IHXRegistry, (void**)&pReg) == HXR_OK)
         {
-            if( drmVersion == 2 )
-            {
-                bCopyRestricted = TRUE;
-            }
-            MDFVIDEOLOG_WRITE_FORMAT2( "    OMA DRM v%d from prefs", drmVersion );
+            pReg->GetIntByName("MMF.SecureOutput", lCopyRestricted);
+            HX_RELEASE(pReg);
         }
+
+        MDFVIDEOLOG_WRITE_FORMAT2( "    Secure Output %d from registry", lCopyRestricted );
+
         MMmfVideoSecureOutput* pSecureOutput =
             (MMmfVideoSecureOutput *) m_pDevVideoPlay->CustomInterface( m_PostProcessorHwDeviceId, KMmfVideoSecureOutputUid );
+
         MDFVIDEOLOG_INOUTFN( "CustomInterface() does not leave" );
+
         if( pSecureOutput )
         {
-            TRAPD( error, pSecureOutput->MmvsoSetSecureOutputL( bCopyRestricted ) );
+            TRAPD( error, pSecureOutput->MmvsoSetSecureOutputL( (HXBOOL)lCopyRestricted ) );
             if ( error != KErrNone )
             {
                 MDFVIDEOLOG_INOUTFN( "MmvsoSetSecureOutputL failed" );
@@ -559,7 +568,7 @@
 
         CMMFDevVideoPlay::TPictureCounters pictureCounter;
         m_pDevVideoPlay->GetPictureCounters( pictureCounter );
-        
+
         MDFVIDEOLOG_WRITE_FORMAT1( "    Num of Frames dropped by adapter         :%u", m_ulFramesDroppedByAdapter );
         MDFVIDEOLOG_WRITE_FORMAT1( "    Num of Frames decoded                    :%u", pictureCounter.iPicturesDecoded );
         MDFVIDEOLOG_WRITE_FORMAT1( "    Num of Frames displayed                  :%u", pictureCounter.iPicturesDisplayed );
@@ -668,7 +677,7 @@
             {
                 pStreamHeader = m_pPictureHeader->iOptional;
             }
-            
+
             if( pStreamHeader )
             {
                 ulBufferSize += pStreamHeader->Length();
@@ -871,7 +880,7 @@
     if( m_pBltMediaPacket )
     {
         m_pBltMediaPacket->Clear();
-        HX_DELETE( m_pBltMediaPacket );  
+        HX_DELETE( m_pBltMediaPacket );
     }
     m_bIsLastMediaPacketNull = TRUE;
 
@@ -904,7 +913,7 @@
 void CMdfVideoAdapter::StartDevVideo()
 {
     MDFVIDEOLOG_ENTERFN( "StartDevVideo" );
- 
+
     if ( m_DevVidInitialized == EInitializedSuccess && m_bIsPlayStartReceived && !m_bIsDevVideoStarted)
     {
         HX_ASSERT( m_pDevVideoPlay );
@@ -969,7 +978,7 @@
         if( SUCCEEDED( retVal ) )
         {
             retVal = HXR_FAIL;
-            TRAPD( error, 
+            TRAPD( error,
                 m_pDevVideoPlay->SetScaleOptionsL( m_PostProcessorHwDeviceId, m_scaledSize, m_bAntiAlias );
                 m_pDevVideoPlay->CommitL() ;
                 );
@@ -1024,7 +1033,7 @@
            //we have no region so make a region == to cliprect
            m_ClipRegion.Clear();
            m_ClipRegion.AddRect(m_clipRect);
-	    }
+        }
         if( SUCCEEDED( retVal ) )
         {
             retVal = StartDSA();
@@ -1266,7 +1275,7 @@
     if( count )
     {
         const TRect* regionlist = m_ClipRegion.RectangleList();
-        
+
         for( TInt j = 0; j < count; j++ )
         {
             const TRect& rect = regionlist[j];
@@ -1275,7 +1284,7 @@
             MDFVIDEOLOG_WRITE_MULTI_FORMAT( "    Rightbottom %d:%d", rect.iBr.iX, rect.iBr.iY );
         }
     }
-    
+
     if (m_DevVidInitialized == EInitializedSuccess )
     {
         if (m_bIsDSAStarted)
@@ -1283,7 +1292,7 @@
             m_pDevVideoPlay->AbortDirectScreenAccess();
             m_bIsDSAStarted = FALSE;
         }
-        
+
         retVal = HXR_FAIL;
         MMdfVideoWindowControl* pVirtualDisplay =
             (MMdfVideoWindowControl *) m_pDevVideoPlay->CustomInterface( m_PostProcessorHwDeviceId, KUidMdfVideoWindowControl );
@@ -1299,32 +1308,32 @@
         }
 
         TRAPD(error, m_pDevVideoPlay->StartDirectScreenAccessL(m_clipRect, *m_pFbsScreenDevice, m_ClipRegion));
-            if (error == KErrNone)
+        if (error == KErrNone)
+        {
+            retVal = HXR_OK;
+            m_bIsDSAStarted = TRUE;
+            if( m_bIsScalingCalcNeeded == TRUE )
             {
-                retVal = HXR_OK;
-                m_bIsDSAStarted = TRUE;
-                if( m_bIsScalingCalcNeeded == TRUE )
+                retVal = CalculateScaleFactor();
+                if( SUCCEEDED( retVal ) )
                 {
-                    retVal = CalculateScaleFactor();
-                    if( SUCCEEDED( retVal ) )
+                    retVal = HXR_FAIL;
+                    TRAP(error,
+                        m_pDevVideoPlay->SetScaleOptionsL(m_PostProcessorHwDeviceId, m_scaledSize, m_bAntiAlias);
+                        m_pDevVideoPlay->CommitL();
+                    );
+                    if( error == KErrNone )
                     {
-                        retVal = HXR_FAIL;
-                        TRAP(error, 
-                            m_pDevVideoPlay->SetScaleOptionsL(m_PostProcessorHwDeviceId, m_scaledSize, m_bAntiAlias);
-                            m_pDevVideoPlay->CommitL();
-                        );
-                        if( error == KErrNone )
-                        {
-                            retVal = HXR_OK;
-                        }
+                        retVal = HXR_OK;
                     }
-                    m_bIsScalingCalcNeeded = FALSE;
                 }
-                
-                //update last frame to window
-                m_pDevVideoPlay->Redraw();
+                m_bIsScalingCalcNeeded = FALSE;
             }
 
+            //update last frame to window
+            m_pDevVideoPlay->Redraw();
+        }
+
     }
 
     MDFVIDEOLOG_RETURNFN( "StartDSA", retVal );
@@ -1334,14 +1343,14 @@
 HX_RESULT CMdfVideoAdapter::CalculateScaleFactor()
 {
     MDFVIDEOLOG_ENTERFN( "CalculateScaleFactor" );
-    
+
     HX_RESULT retVal( HXR_OK );
 
     HXFLOAT factor( 1.0 );
 
     UINT32 width( 0 );
     UINT32 height( 0 );
-    
+
     if( m_bFrameRectValid )
     {
         height = m_frameRect.bottom - m_frameRect.top;
@@ -1382,10 +1391,10 @@
 CMdfVideoAdapter::DirectScreenAccessEvent(HXBOOL bValue)
 {
     MDFVIDEOLOG_ENTERFN( "DirectScreenAccessEvent" );
-    
+
     m_bIsDSAStartedFromClient = bValue;
     HX_RESULT retVal( HXR_FAIL );
-    
+
     if (m_DevVidInitialized == EInitializedSuccess)
     {
         if (bValue)
@@ -1409,7 +1418,7 @@
     MDFVIDEOLOG_ENTERFN( "SetRotation" );
     MDFVIDEOLOG_WRITE_MULTI_FORMAT( "SetRotation[%d]  Current Stored Value[%d]", ulValue, m_rotationValue );
     HX_RESULT retVal( HXR_OK ); //do not use HXR_IGNORE since SUCCEEDED( HXR_IGNORE ) is false
-    
+
     if( m_rotationValue != ulValue && m_DevVidInitialized == EInitializedSuccess )
     {
         m_rotationValue = ulValue;
@@ -1417,27 +1426,27 @@
         TRotationType rotationType( ERotateNone );
         switch (ulValue)
         {
-        case Rotate90: 
-            rotationType = ERotate90Clockwise; 
+        case Rotate90:
+            rotationType = ERotate90Clockwise;
             break;
-        case Rotate270: 
-            rotationType = ERotate90Anticlockwise; 
+        case Rotate270:
+            rotationType = ERotate90Anticlockwise;
             break;
-        case Rotate180: 
-            rotationType = ERotate180; 
+        case Rotate180:
+            rotationType = ERotate180;
             break;
-        case Rotate0: 
-        default: 
-            rotationType = ERotateNone; 
+        case Rotate0:
+        default:
+            rotationType = ERotateNone;
             break;
         }
-        
+
         retVal = CalculateScaleFactor();
         if ( SUCCEEDED( retVal ) )
         {
             retVal = HXR_FAIL;
-            
-            TRAPD(error, 
+
+            TRAPD(error,
                 m_pDevVideoPlay->SetRotateOptionsL(m_PostProcessorHwDeviceId, rotationType);
                 m_pDevVideoPlay->SetScaleOptionsL( m_PostProcessorHwDeviceId, m_scaledSize, m_bAntiAlias );
                 m_pDevVideoPlay->CommitL();
@@ -1465,9 +1474,9 @@
 CMdfVideoAdapter::SetContrast(UINT32 ulValue)
 {
     MDFVIDEOLOG_ENTERFN( "SetContrast" );
-    
+
     HX_RESULT retVal( HXR_OK );
-    
+
     MDFVIDEOLOG_WRITE_FORMAT( "    contrast value: %d", ulValue );
 
     if( m_ulContrast != ulValue )
@@ -1479,11 +1488,11 @@
         contrastOptions.iSaturation = 0;
         contrastOptions.iGamma = 1.0;
         contrastOptions.iDitherType = EDitherNone;
-        
+
         if (m_DevVidInitialized == EInitializedSuccess)
         {
             retVal = HXR_FAIL;
-            TRAPD(error, 
+            TRAPD(error,
                 m_pDevVideoPlay->SetYuvToRgbOptionsL(m_PostProcessorHwDeviceId, contrastOptions);
             m_pDevVideoPlay->CommitL();
             );
@@ -1509,9 +1518,9 @@
 CMdfVideoAdapter::SetFrameRect(HXxRect sValue)
 {
     MDFVIDEOLOG_ENTERFN( "SetFrameRect" );
-    
+
     HX_RESULT retVal( HXR_OK ); //do not use HXR_IGNORE since SUCCEEDED( HXR_IGNORE ) is false
-    
+
     m_bFrameRectValid = TRUE;
     if( m_frameRect != sValue )
     {
@@ -1524,17 +1533,17 @@
             m_frameRect.right = 176;
             m_frameRect.bottom = 144;
         }
-        
+
         retVal = CalculateScaleFactor();
-        
+
         if( SUCCEEDED( retVal ) && ( m_DevVidInitialized == EInitializedSuccess ) )
         {
             retVal = HXR_FAIL;
-            TRAPD( error, 
+            TRAPD( error,
                 m_pDevVideoPlay->SetScaleOptionsL( m_PostProcessorHwDeviceId, m_scaledSize, m_bAntiAlias );
                 m_pDevVideoPlay->CommitL();
                 );
-            
+
             if (error == KErrNone)
             {
                 retVal = HXR_OK;
@@ -1585,8 +1594,8 @@
     if (m_DevVidInitialized == EInitializedSuccess)
     {
         retVal = HXR_FAIL;
-        
-        TRAPD( error, 
+
+        TRAPD( error,
             m_pDevVideoPlay->SetScaleOptionsL( m_PostProcessorHwDeviceId, m_scaledSize, bAntiAlias );
             m_pDevVideoPlay->CommitL();
         );
@@ -1596,7 +1605,7 @@
         }
     }
     MDFVIDEOLOG_RETURNFN( "SetScaling", retVal );
-    return retVal;    
+    return retVal;
 }
 
 STDMETHODIMP
@@ -1669,16 +1678,16 @@
 CMdfVideoAdapter::SetCropRect(HXxRect sValue)
 {
     MDFVIDEOLOG_ENTERFN( "SetCropRect" );
-    
+
     HX_RESULT retVal( HXR_OK ); //do not use HXR_IGNORE since SUCCEEDED( HXR_IGNORE ) is false
-    
+
     if( m_CropRect != sValue )
     {
         if (m_DevVidInitialized == EInitializedSuccess)
         {
             retVal = HXR_FAIL;
             TRect rect(sValue.left, sValue.top, sValue.right, sValue.bottom);
-            TRAPD(error, 
+            TRAPD(error,
                 m_pDevVideoPlay->SetOutputCropOptionsL(m_PostProcessorHwDeviceId, rect);
                 m_pDevVideoPlay->CommitL();
             );
@@ -1741,7 +1750,7 @@
     if( SUCCEEDED( retVal ) )
     {
         retVal = CalculateScaleFactor();  //check if m_bIsScalingCalcNeeded is set to FALSE **********
-        
+
         if(SUCCEEDED( retVal ) && m_bIsScalingCalcNeeded && m_bIsDSAStartedFromClient && (m_DevVidInitialized == EInitializedSuccess) && (!m_bIsPaused) )
         {
             m_bIsScalingCalcNeeded = FALSE;
@@ -1749,7 +1758,7 @@
             if (SUCCEEDED(retVal))
             {
                 retVal = HXR_FAIL;
-                TRAPD(error, 
+                TRAPD(error,
                     m_pDevVideoPlay->SetScaleOptionsL(m_PostProcessorHwDeviceId, m_scaledSize, m_bAntiAlias);
                     m_pDevVideoPlay->CommitL();
                     );
@@ -1760,7 +1769,7 @@
             }
         }
     }
-    
+
     if( retVal == HXR_IGNORE )
     {
         retVal = HXR_OK; //change to HXR_OK since SUCCEEDED( HXR_IGNORE ) is false


From damann at helixcommunity.org  Fri Nov  3 13:50:52 2006
From: damann at helixcommunity.org (damann@helixcommunity.org)
Date: Fri Nov  3 14:58:27 2006
Subject: [Datatype-cvs] mdf/audio/dsp mdfauddevice.cpp, 1.10,
	1.11 mdfdevconfig.cpp, 1.3, 1.4 mdfdevsound.cpp, 1.11, 1.12
Message-ID: 

Update of /cvsroot/datatype/mdf/audio/dsp
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv7637/mdf/audio/dsp

Modified Files:
	mdfauddevice.cpp mdfdevconfig.cpp mdfdevsound.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:
    darrin.mann@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    November-2-2006

Project: 
    Helix plug-in for Symbian

Error ID: 
    

Synopsis: 
    The HELIX_FEATURE_REGISTRY feature will be enabled for the Helix MMF-MDF 
    adaptation.   The audio priority and HELIX_FEATURE_DRM_SECURE_OUTPUT 
    features will be modified.  They will stop using the lite prefs to pass
    values from the MMF to the MDF.  The registry will be used to transfer 
    these values.

    A few methods were moved from the audio and video controllers to the base
    controller.  The differences between the methods that were moved are due to 
    the HELIX_FEATURE_S60_PROGDOWN feature.  The video controller implementation 
    of these methods was used since the audio controller has no way to set the 
    progressive download variables. There is no real impact to the audio controller 
    since the progressive download code will never be executed.

Files Modified: 
    audio/device/platform/symbian/audsymbian.cpp

    clientapps/symbianMmf/hxmmfstatectrl.cpp
    clientapps/symbianMmf/hxmmfstatectrl.h
    clientapps/symbianMmf/audiocontroller/controllerdll
    clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.h
    clientapps/symbianMmf/common/Umakefil
    clientapps/symbianMmf/common/hxmmfbasectrl.cpp
    clientapps/symbianMmf/common/hxmmfbasectrl.h
    clientapps/symbianMmf/videocontroller/MmfCtrlDll
    clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.h

    datatype/mdf/audio/dsp/mdfauddevice.cpp
    datatype/mdf/audio/dsp/mdfdevsound.cpp
    datatype/mdf/video/renderer/mdfvideoadapter.cpp

Files Added:
    None

Image Size and Heap Use impact: 
    Minor, the image size increase for the ARMV5 dlls was less than 1% overall

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

Platforms and Profiles Functionality verified: 
    winscw 
    armv5

Branch: 
    head and hxclient_2_1_0_cayennes 


Index: mdfdevsound.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/audio/dsp/mdfdevsound.cpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- mdfdevsound.cpp	18 Oct 2006 15:32:02 -0000	1.11
+++ mdfdevsound.cpp	3 Nov 2006 21:50:50 -0000	1.12
@@ -51,11 +51,10 @@
 #include 
 #include 
  
-#include 
+
 #include 
 
 #include 
-#include 
 #include 
 #include 
 #if defined(HELIX_FEATURE_DRM_SECURE_OUTPUT)
@@ -556,7 +555,7 @@
         if (err == KErrNone)
         {
             TRAP(err, pAudioOutput->SetSecureOutputL(ETrue));
-            HXLOGL4(HXLOG_MDFA, "---devsnd:ConfigDev .. SetSecureOutputL err=%d", err);
+            HXLOGL2(HXLOG_MDFA, "---devsnd:ConfigDev .. SetSecureOutputL err=%d", err);
         }
         if (err != KErrNone)
         {

Index: mdfauddevice.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/audio/dsp/mdfauddevice.cpp,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- mdfauddevice.cpp	17 Aug 2006 03:09:34 -0000	1.10
+++ mdfauddevice.cpp	3 Nov 2006 21:50:50 -0000	1.11
@@ -1,8 +1,8 @@
 /* ***** BEGIN LICENSE BLOCK *****
  * Source last modified: $Id$
- * 
+ *
  * Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
- * 
+ *
  * The contents of this file, and the files included with this file,
  * are subject to the current version of the RealNetworks Public
  * Source License (the "RPSL") available at
@@ -16,7 +16,7 @@
  * to this file, the RCSL.  Please see the applicable RPSL or RCSL for
  * the rights, obligations and limitations governing use of the
  * contents of the file.
- * 
+ *
  * Alternatively, the contents of this file may be used under the
  * terms of the GNU General Public License Version 2 or later (the
  * "GPL") in which case the provisions of the GPL are applicable
@@ -28,30 +28,30 @@
  * the GPL. If you do not delete the provisions above, a recipient may
  * use your version of this file under the terms of any one of the
  * RPSL, the RCSL or the GPL.
- * 
+ *
  * This file is part of the Helix DNA Technology. RealNetworks is the
  * developer of the Original Code and owns the copyrights in the
  * portions it created.
- * 
+ *
  * This file, and the files included with this file, is distributed
  * and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
  * KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
  * ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
  * ENJOYMENT OR NON-INFRINGEMENT.
- * 
+ *
  * Technology Compatibility Kit Test Suite(s) Location:
  *    http://www.helixcommunity.org/content/tck
- * 
+ *
  * Contributor(s):
- * 
+ *
  * ***** END LICENSE BLOCK ***** */
- 
+
 #include "hxassert.h"
 #include "mdfauddevice.h"
 #include "mdfdebug.h"
 #include "hxprefutil.h"
-
+#include "hxmon.h"
 
 
 static UINT32 Scale(UINT32 v, UINT32 f0, UINT32 f1, UINT32 t0, UINT32 t1);
@@ -65,14 +65,14 @@
 CHXMDFAudioDevice::CreateMDFAudioDevice(HXMDFAudioFormat* pAudioFormat)
 {
     CHXMDFAudioDevice* pMdfAudioDev = NULL;
-    
+
     pMdfAudioDev = new CHXMDFAudioDevice(pAudioFormat);
-    
-    if (pMdfAudioDev && HXR_OK != pMdfAudioDev->Construct()) 
+
+    if (pMdfAudioDev && HXR_OK != pMdfAudioDev->Construct())
     {
         HX_DELETE(pMdfAudioDev);
     }
-    
+
     return pMdfAudioDev;
 }
 
@@ -84,13 +84,13 @@
 {
     //- create timer
     TInt err = m_iTimer.CreateLocal();
-    if (err != KErrNone) 
+    if (err != KErrNone)
     {
         HXLOGL1(HXLOG_MDFA,"mdfdev:construct failed to create timer.");
         return HXR_FAIL;
     }
-		
-    //- create devSound 
+
+    //- create devSound
     //m_pDevSound = new CMDFDevSound(m_pAudioFormat, &m_readyList);
     m_pDevSound = CMDFDevSound::CreateMDFDevSound(m_pAudioFormat, &m_readyList);
     if (!m_pDevSound)
@@ -99,7 +99,7 @@
         return HXR_FAIL;
     }
 
-    // To observe devsound status.    
+    // To observe devsound status.
     m_pDevSound->SetAudioDeviceObserver(this);
 
     return HXR_OK;
@@ -128,7 +128,7 @@
 {
     //- activate active object
     CActiveScheduler::Add(this);
-		
+
     //- get device volume range && set initial volume///
     m_nDevMinVolume = 0;
 }
@@ -142,7 +142,7 @@
     HXLOGL4(HXLOG_MDFA,"mdfdev:~mdfdev <");
     Close(TRUE);
     m_iTimer.Close();
-		
+
     // remove this device
     if( m_pContext )
     {
@@ -168,20 +168,20 @@
     }
 
     HX_DELETE(m_pDevSound);
-    
-    while (!m_bufferList.IsEmpty()) 
+
+    while (!m_bufferList.IsEmpty())
     {
         HXMDFAudioData* p = (HXMDFAudioData*)m_bufferList.RemoveHead();
         HX_DELETE(p);
     }
-	
-	while (!m_readyList.IsEmpty()) 
-	{
+
+    while (!m_readyList.IsEmpty())
+    {
         HXMDFAudioData* p = (HXMDFAudioData*)m_readyList.RemoveHead();
         if (!p->m_bMissing) {
             HX_DELETE(p);
         }
-    }	    
+    }
     HXLOGL4(HXLOG_MDFA,"mdfdev:~mdfdev >");
 }
 
@@ -197,7 +197,7 @@
             { GET_IIDHANDLE(IID_IHXTimelineWatcher), (IHXTimelineWatcher*)this },
             { GET_IIDHANDLE(IID_IUnknown), (IUnknown*)(IHXAudioDevice*)this },
         };
-    
+
     return ::QIFind(qiList, QILISTSIZE(qiList), riid, ppvObj);
 }
 
@@ -221,8 +221,8 @@
         return m_ulRefCount;
     }
     delete this;
-    
-    return 0;   
+
+    return 0;
 }
 
 
@@ -267,7 +267,7 @@
                     hxr = HXR_FAIL;
                 }
             }
-            //  else 
+            //  else
             HXLOGL4(HXLOG_MDFA,"mdfdev:init .. replace OK");
             HX_RELEASE(pADM);
         }
@@ -277,20 +277,20 @@
             hxr = HXR_FAIL;
         }
 
-   
+
         // Error report
         HX_RELEASE(m_pErrorMessage);
         m_pContext->QueryInterface(IID_IHXErrorMessages, (void **)&m_pErrorMessage);
 
     }
-    else 
+    else
     {
         HXLOGL2(HXLOG_MDFA,"mdfdev:init .. no Context");
         hxr = HXR_FAIL;
     }
 
     HXLOGL4(HXLOG_MDFA,"mdfdev:init >");
-        
+
     return hxr;
 }
 
@@ -302,9 +302,9 @@
 HX_RESULT CHXMDFAudioDevice::AddAudioData(HXMDFAudioData* pData)
 {
     HX_ASSERT(pData);
-    
+
     HX_RESULT hxr = HXR_OK;
-    
+
     if ( pData )
     {
         if ( !m_bufferList.AddTail(pData) )
@@ -312,7 +312,7 @@
             hxr = HXR_OUTOFMEMORY;
         }
     }
-    
+
     return hxr;
 }
 
@@ -339,7 +339,7 @@
 
         //Set timer for next OnTimeSync callback
         DoSetTimer();
-      
+
     }
     else if (KErrCancel != iStatus.Int())
     {
@@ -378,51 +378,58 @@
         m_pAudioFormat->m_uMaxBlockSize  = pAudioFormat->uMaxBlockSize;
         m_pAudioFormat->UpdateConfig();
     }
-    
+
     //set up DeviceResponse
     if (m_pDeviceResponse)
-    { 
+    {
         HX_RELEASE(m_pDeviceResponse);
     }
-    
+
     if( pDeviceResponse )
     {
         HXLOGL2(HXLOG_MDFA,"mdfdeV:open .. devResp is set!");
         m_pDeviceResponse = pDeviceResponse;
         m_pDeviceResponse->AddRef();
     }
-    else 
+    else
     {
         return HXR_FAIL;
     }
-    
+
     //retrieve Priority Settings from MMF stored in prefs to use in devSound
     GetPrioritySettings();
 
-    //Get drm version from prefs for devsound to set secure output
-    HXBOOL bSecureAudio(FALSE);
+    INT32 lSecureAudio = 0;
+
 #if defined(HELIX_FEATURE_DRM_SECURE_OUTPUT)
-    UINT8 drmVersion(0);
-    if (SUCCEEDED(ReadPrefUINT8(m_pContext, "OmaDrmVersion", drmVersion)))
+    //
+    //  Determine if output must be secure from Registry
+    //
+    if (m_pContext)
     {
-        if (drmVersion == 2)
+        IHXRegistry* pReg = NULL;
+
+        if (m_pContext->QueryInterface(IID_IHXRegistry, (void**)&pReg) == HXR_OK)
         {
-            bSecureAudio = TRUE;
+            pReg->GetIntByName("MMF.SecureOutput", lSecureAudio);
+
+            HX_RELEASE(pReg);
         }
-        HXLOGL2(HXLOG_MDFA, "mdfdev:open .. OMA DRM v%u from prefs", drmVersion);
     }
+
+    HXLOGL2(HXLOG_MDFA, "mdfdev::open() Secure Audio %d", lSecureAudio);
 #endif
 
     //Open and Initialize audio device
     HX_ASSERT(m_pDevSound);
-    hxr = m_pDevSound->Open(m_pAudioFormat, m_pPrioritySettings, bSecureAudio);
+    hxr = m_pDevSound->Open(m_pAudioFormat, m_pPrioritySettings, (HXBOOL)lSecureAudio);
 
     //Initialize DevSound
     if (hxr==HXR_OK)
     {
         m_nDevMaxVolume=m_pDevSound->GetMaxVolume();
         // set the initial volume. If m_CurrentVolume has an invalid value that means
-        // volume is not yet set from client side then 
+        // volume is not yet set from client side then
         // set the volume to half the maximum volume otherwise use the valid value.
         if (m_CurrentVolume == MDFDEVICE_INVALID_VOLUME)
         {
@@ -430,7 +437,7 @@
         }
         m_pDevSound->SetVolume(m_CurrentVolume);
     }
-    
+
     HXLOGL4(HXLOG_MDFA,"mdfdev:open > hxr=%d", hxr);
     return hxr;
 }
@@ -458,7 +465,7 @@
             HX_RELEASE(pADM);
         }
     }
-    
+
     HX_RELEASE(m_pContext);
 
     HXLOGL4(HXLOG_MDFA,"mdfdev:close > flush=%d", bFlush);
@@ -472,14 +479,14 @@
 {
     HXLOGL4(HXLOG_MDFA,"mdfdev:pause <");
     HX_RESULT hxr = HXR_OK;
-    
+
     hxr = m_pDevSound->Pause();
-    
+
     if (hxr==HXR_OK)
     {
-        m_playing= FALSE;        
+        m_playing= FALSE;
     }
-    
+
     if (IsActive())
     {
         Cancel();
@@ -496,7 +503,7 @@
 {
     HXLOGL4(HXLOG_MDFA,"mdfdev:resume <");
     HX_RESULT hxr = HXR_OK;
-    
+
     //Check the time and call OnTimeSync
     if(m_pDeviceResponse)
     {
@@ -506,25 +513,25 @@
     }
 
     hxr = m_pDevSound->Play();
-    
+
     if (hxr==HXR_OK)
     {
         m_playing= TRUE;
     }
-    
+
     DoSetTimer();
-    
+
     HXLOGL4(HXLOG_MDFA,"mdfdev:resume >");
     return hxr;
 }
 
 //
-//  IHXAudioDevice::Write() 
+//  IHXAudioDevice::Write()
 //
 HX_RESULT CHXMDFAudioDevice::Write(const HXAudioData* pHXAudioData)
 {
     HXLOGL4(HXLOG_MDFA,"mdfdev:write <");
-    
+
     INT32 dataSize   = (INT32)pHXAudioData->pData->GetSize();
 
     UINT32 ulLastAudioTime = pHXAudioData->ulAudioTime;
@@ -539,8 +546,8 @@
     while ( m_nBytesPCMToPlay >= m_pAudioFormat->m_uBytesPerFrame )
     {
         //  Ensure there is encoded data and the data is within the time limits
-        if ( !m_bufferList.IsEmpty() && 
-             (pAudioData = (HXMDFAudioData*)m_bufferList.GetHead()) &&  
+        if ( !m_bufferList.IsEmpty() &&
+             (pAudioData = (HXMDFAudioData*)m_bufferList.GetHead()) &&
              ((pAudioData->m_ulAudioTime-m_ulAudioTimeOffset) < ulLastAudioTime) )
         {
             // pass this frame to ready list.
@@ -590,7 +597,7 @@
 
     m_nMinVolume = uMinVolume;
     m_nMaxVolume = uMaxVolume;
-    
+
     /// this has to be called after initializeL
     m_nDevMaxVolume = 100;  //default
     m_nDevMinVolume = 0;
@@ -617,7 +624,7 @@
         m_pDevSound->SetVolume(m_CurrentVolume);
     }
     HXLOGL4(HXLOG_MDFA,"mdfdev:setvol >");
-    
+
     return res;
 }
 
@@ -645,29 +652,29 @@
 {
     HXLOGL4(HXLOG_MDFA,"mdfdev:reset <");
     // stop device.
-    if (m_pDevSound) 
+    if (m_pDevSound)
     {
         m_pDevSound->Reset();
     }
 
     // need to clean data in buffer.
     m_nBytesPCMToPlay = 0;
-    
-    while (!m_bufferList.IsEmpty()) 
+
+    while (!m_bufferList.IsEmpty())
     {
         HXMDFAudioData* p = (HXMDFAudioData*)m_bufferList.RemoveHead();
         ///
         HX_DELETE(p);
     }
 
-    while (!m_readyList.IsEmpty()) 
+    while (!m_readyList.IsEmpty())
     {
         HXMDFAudioData* p = (HXMDFAudioData*)m_readyList.RemoveHead();
         if (!p->m_bMissing) {
             HX_DELETE(p);
         }
-    }    
-    
+    }
+
     // stop active object.
     if (IsActive())
     {
@@ -675,7 +682,7 @@
     }
 
     m_playing= FALSE;
-    
+
     HXLOGL4(HXLOG_MDFA,"mdfdev:reset >");
     return HXR_OK;
 }
@@ -692,7 +699,7 @@
 
 //
 //  IHXAudioDevice::CheckFormat
-//          - This method check the capability of audio device 
+//          - This method check the capability of audio device
 //              for a given audio format
 //          - To be implemented
 //
@@ -723,32 +730,32 @@
 //          - Those methods are used for multiple audio devices, not applicable yet.
 //
 HX_RESULT CHXMDFAudioDevice::OnPause()
-{ 
-	return HXR_OK;
+{
+    return HXR_OK;
 }
 
 HX_RESULT CHXMDFAudioDevice::OnResume()
-{	
-	return HXR_OK;
+{
+    return HXR_OK;
 }
 
 HX_RESULT CHXMDFAudioDevice::OnClose()
-{	
-	return HXR_OK;
+{
+    return HXR_OK;
 }
 
 HX_RESULT CHXMDFAudioDevice::OnTimeSync(UINT32 currentTime)
 {
-	return HXR_OK;
+    return HXR_OK;
 }
 
 //
-// Helpers 
+// Helpers
 //
 void CHXMDFAudioDevice::SetStartTime(UINT32 ulStartTime)
 {
     HXLOGL4(HXLOG_MDFA,"mdfdeV:setStartT <> %d", ulStartTime);
-    
+
     m_ulAudioTimeOffset = ulStartTime;
 }
 
@@ -758,8 +765,8 @@
 void CHXMDFAudioDevice::DoSetTimer()
 {
     HXLOGL4(HXLOG_MDFA,"mdfdeV:dosettimer <");
-    
-	if( !IsActive())
+
+    if( !IsActive())
     {
         //HXLOGL4(HXLOG_MDFA, "mdfdeV:dosettimer .. set timer here. %d", iStatus.Int());
         m_iTimer.After(iStatus, TIMESYNC_CALLBACK_INTERVAL_MS * 1000);
@@ -776,14 +783,14 @@
 {
     HXLOGL4(HXLOG_MDFA, "mdfdeV:OnDeviceError <");
 
-    HX_ASSERT(m_pErrorMessage != NULL);    
-    
+    HX_ASSERT(m_pErrorMessage != NULL);
+
     // Report error to Error Messages
     if(m_pErrorMessage)
     {
         m_pErrorMessage->Report(HXLOG_INFO, hxr, 0, NULL, NULL);
     }
-    
+
     HXLOGL4(HXLOG_MDFA, "mdfdeV:OnDeviceError >");
 }
 
@@ -793,43 +800,46 @@
 void CHXMDFAudioDevice::GetPrioritySettings()
 {
     HXLOGL4(HXLOG_MDFA, "mdfdeV:GetPrioritySettings <");
-    
+
+    INT32 prio = 0;
+    INT32 pref = 0;
+
     if (!m_pPrioritySettings)
     {
         m_pPrioritySettings = new TMMFPrioritySettings;
     }
-    m_pPrioritySettings->iPriority = 0;
-    m_pPrioritySettings->iPref = (TMdaPriorityPreference)0;
-    
+
     if (m_pContext)
     {
-        UINT32 prio = 0, pref = 0;
-        HX_RESULT res = HXR_OK;
+        //
+        //  Get the IHXRegistry interface from the context
+        //
+        IHXRegistry* pReg = NULL;
 
-        // read in audio priority value
-        res = ReadPrefUINT32(m_pContext, "MMFPriority", prio);
-        if (HXR_OK == res)
+        if (m_pContext->QueryInterface(IID_IHXRegistry, (void**)&pReg) == HXR_OK)
         {
-            m_pPrioritySettings->iPriority = prio;
-        }
+            //
+            //  read in audio priority and preference values
+            //
+            pReg->GetIntByName("MMF.Audio.Priority", prio);
+            pReg->GetIntByName("MMF.Audio.PriorityPref", pref);
 
-        // read in audio preference value
-        res = ReadPrefUINT32(m_pContext, "MMFPriorityPref", pref);
-        if (HXR_OK == res)
-        {
-            m_pPrioritySettings->iPref = (TMdaPriorityPreference)pref;
+            HX_RELEASE(pReg);
         }
-
-        HXLOGL4(HXLOG_MDFA, "mdfdeV:GetPrioritySettings (%u, %u) from prefs",
-                m_pPrioritySettings->iPriority, m_pPrioritySettings->iPref);
     }
 
+    m_pPrioritySettings->iPriority = prio;
+    m_pPrioritySettings->iPref = (TMdaPriorityPreference)pref;
+
+    HXLOGL2(HXLOG_MDFA, "mdfdeV:GetPrioritySettings (%d, %d) from registry",
+        m_pPrioritySettings->iPriority, m_pPrioritySettings->iPref);
+
     HXLOGL4(HXLOG_MDFA, "mdfdeV:GetPrioritySettings >");
 }
 
 
 //
-// convenience methods 
+// convenience methods
 //
 UINT32 Scale(UINT32 v, UINT32 f0, UINT32 f1, UINT32 t0, UINT32 t1)
 {

Index: mdfdevconfig.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/audio/dsp/mdfdevconfig.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- mdfdevconfig.cpp	17 Feb 2006 20:09:13 -0000	1.3
+++ mdfdevconfig.cpp	3 Nov 2006 21:50:50 -0000	1.4
@@ -50,7 +50,6 @@
  
  
 #include 
-#include 
 #include 
 #include 
 


From rrajesh at helixcommunity.org  Fri Nov  3 14:36:12 2006
From: rrajesh at helixcommunity.org (rrajesh@helixcommunity.org)
Date: Fri Nov  3 15:43:44 2006
Subject: [Datatype-cvs] xps/fileformat CXPSFileformat.cpp, 1.1.1.1.2.1,
	1.1.1.1.2.2 CXPSFileformat.h, 1.1.1.1.2.1, 1.1.1.1.2.2
Message-ID: 

Update of /cvsroot/datatype/xps/fileformat
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv22558

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	CXPSFileformat.cpp CXPSFileformat.h 
Log Message:
"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:  rajesh.rathinasamy@nokia.com

Reviewed by:

Date: 01-Nov-2006.

Project: SymbianMmf

ErrorId: ** New Featue **

Synopsis:  CR: Symbian eXternal Packet Source feature II 

	XPS is an eXternal Packet Source for rendering media packets using Helix MMF controller.  
           As the name implies, the media packets are from an external source to Helix MMF controller. 
            Applications could be generating packets from a local source or may be receiving over data connection.  

	Changes included are:
            * Updated error code mapping on file source to propogate access denied error to TLC.
	* Packets pushed onto fileformat Q were not ordered. Changes have been included to re-order packets.
	* Updated the packet's helix time with seek time offset
	* packet restore notifier has to be reset in case of session reset on packet sink which was not done previously.

Pending Changes from earlier CR:
	* Change comment style for Symbian Documentation on PacketSink header ( exported headers)
	* Update PacketSinkObserver header to be system include. ( ie Use <> instead of " ")

Current Status:
	* Feature complete. Working on Test App and testing of the feature.
	* Test module will be checked in two phases. First phase will include the test library for sample usage of XPSPacketSink
         And second phase will include a standalone symbian test application which uses Symbian's CVideoPlayerutility ,  XPSPacketSink lib and xps test lib.

Files Modified: 
===========

Client\core\hxflsrc.cpp

datatype/xps/fileformat/CXPSFileformat.cpp
datatype/xps/fileformat/CXPSFileformat.h

datatype/xps/PacketSink/CXPSDebug.h
datatype/xps/PacketSink/CXPSSession.cpp
datatype/xps/PacketSink/CXPSStream.cpp
datatype/xps/PacketSink/CXPSStream.h

Image Size and Heap Use impact: no major impact

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

Platforms and Profiles Functionality verified: armv5, winscw

     Branch: Helix, 210CayS


Index: CXPSFileformat.cpp
===================================================================
RCS file: /cvsroot/datatype/xps/fileformat/CXPSFileformat.cpp,v
retrieving revision 1.1.1.1.2.1
retrieving revision 1.1.1.1.2.2
diff -u -d -r1.1.1.1.2.1 -r1.1.1.1.2.2
--- CXPSFileformat.cpp	20 Oct 2006 18:29:52 -0000	1.1.1.1.2.1
+++ CXPSFileformat.cpp	3 Nov 2006 22:36:09 -0000	1.1.1.1.2.2
@@ -1,64 +1,64 @@
 /* ***** BEGIN LICENSE BLOCK *****
- *
- * Version: $Id$
- * 
- * Copyright Notices: 
- *  
- * Portions Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved. 
- *  
- * Patent Notices: This file may contain technology protected by one or  
- * more of the patents listed at www.helixcommunity.org 
- *  
- * 1.   The contents of this file, and the files included with this file, 
- * are protected by copyright controlled by RealNetworks and its  
- * licensors, and made available by RealNetworks subject to the current  
- * version of the RealNetworks Public Source License (the "RPSL")  
- * available at  http://www.helixcommunity.org/content/rpsl unless  
- * you have licensed the file under the current version of the  
- * RealNetworks Community Source License (the "RCSL") available at 
- * http://www.helixcommunity.org/content/rcsl, in which case the RCSL 
- * will apply.  You may also obtain the license terms directly from 
- * RealNetworks.  You may not use this file except in compliance with 
- * the RPSL or, if you have a valid RCSL with RealNetworks applicable 
- * to this file, the RCSL.  Please see the applicable RPSL or RCSL for 
- * the rights, obligations and limitations governing use of the 
- * contents of the file. 
- *  
- * 2.  Alternatively, the contents of this file may be used under the 
- * terms of the GNU General Public License Version 2 (the 
- * "GPL") in which case the provisions of the GPL are applicable 
- * instead of those above.  Please note that RealNetworks and its  
- * licensors disclaim any implied patent license under the GPL.   
- * If you wish to allow use of your version of this file only under  
- * the terms of the GPL, and not to allow others 
- * to use your version of this file under the terms of either the RPSL 
- * or RCSL, indicate your decision by deleting Paragraph 1 above 
- * and replace them with the notice and other provisions required by 
- * the GPL. If you do not delete Paragraph 1 above, a recipient may 
- * use your version of this file under the terms of any one of the 
- * RPSL, the RCSL or the GPL. 
- *  
- * This file is part of the Helix DNA Technology.  RealNetworks is the 
- * developer of the Original Code and owns the copyrights in the 
- * portions it created.   Copying, including reproducing, storing,  
- * adapting or translating, any or all of this material other than  
- * pursuant to the license terms referred to above requires the prior  
- * written consent of RealNetworks and its licensors 
- *  
- * This file, and the files included with this file, is distributed 
- * and made available by RealNetworks on an 'AS IS' basis, WITHOUT  
- * WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS  
- * AND ITS LICENSORS HEREBY DISCLAIM  ALL SUCH WARRANTIES, INCLUDING  
- * WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS  
- * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
- *  
- * Technology Compatibility Kit Test Suite(s) Location:  
- *    http://www.helixcommunity.org/content/tck 
- * 
- * Contributors: Nokia Inc
- *
- *
- * ***** END LICENSE BLOCK ***** */
+*
+* Version: $Id$
+* 
+* Copyright Notices: 
+*  
+* Portions Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved. 
+*  
+* Patent Notices: This file may contain technology protected by one or  
+* more of the patents listed at www.helixcommunity.org 
+*  
+* 1.   The contents of this file, and the files included with this file, 
+* are protected by copyright controlled by RealNetworks and its  
+* licensors, and made available by RealNetworks subject to the current  
+* version of the RealNetworks Public Source License (the "RPSL")  
+* available at  http://www.helixcommunity.org/content/rpsl unless  
+* you have licensed the file under the current version of the  
+* RealNetworks Community Source License (the "RCSL") available at 
+* http://www.helixcommunity.org/content/rcsl, in which case the RCSL 
+* will apply.  You may also obtain the license terms directly from 
+* RealNetworks.  You may not use this file except in compliance with 
+* the RPSL or, if you have a valid RCSL with RealNetworks applicable 
+* to this file, the RCSL.  Please see the applicable RPSL or RCSL for 
+* the rights, obligations and limitations governing use of the 
+* contents of the file. 
+*  
+* 2.  Alternatively, the contents of this file may be used under the 
+* terms of the GNU General Public License Version 2 (the 
+* "GPL") in which case the provisions of the GPL are applicable 
+* instead of those above.  Please note that RealNetworks and its  
+* licensors disclaim any implied patent license under the GPL.   
+* If you wish to allow use of your version of this file only under  
+* the terms of the GPL, and not to allow others 
+* to use your version of this file under the terms of either the RPSL 
+* or RCSL, indicate your decision by deleting Paragraph 1 above 
+* and replace them with the notice and other provisions required by 
+* the GPL. If you do not delete Paragraph 1 above, a recipient may 
+* use your version of this file under the terms of any one of the 
+* RPSL, the RCSL or the GPL. 
+*  
+* This file is part of the Helix DNA Technology.  RealNetworks is the 
+* developer of the Original Code and owns the copyrights in the 
+* portions it created.   Copying, including reproducing, storing,  
+* adapting or translating, any or all of this material other than  
+* pursuant to the license terms referred to above requires the prior  
+* written consent of RealNetworks and its licensors 
+*  
+* This file, and the files included with this file, is distributed 
+* and made available by RealNetworks on an 'AS IS' basis, WITHOUT  
+* WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS  
+* AND ITS LICENSORS HEREBY DISCLAIM  ALL SUCH WARRANTIES, INCLUDING  
+* WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS  
+* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
+*  
+* Technology Compatibility Kit Test Suite(s) Location:  
+*    http://www.helixcommunity.org/content/tck 
+* 
+* Contributors: Nokia Inc
+*
+*
+* ***** END LICENSE BLOCK ***** */
 
 #include "CXPSFileformat.h"
 #include "chxpckts.h"
@@ -111,13 +111,13 @@
                 ,m_pClassFactory(NULL)
                 ,m_ppSDPValues(NULL)
                 ,m_uHeaderCnt(0)
-                ,m_pXPSClient(NULL)
                 ,m_ulStreamCount(0)
                 ,m_parrStreams(NULL)
+                ,m_pXPSClient(NULL)
+                ,m_ulSeekOffset(0)
                 ,CHXBaseCountingObject()
 {
     
-    
 }
 
 //
@@ -130,7 +130,7 @@
     
     HX_RELEASE(m_pClassFactory);
     HX_RELEASE(m_pContext);
-
+    
     HXLOGL4(HXLOG_SXPS, "CXPSFileFormat::~CXPSFileFormat -->");
 }
 
@@ -237,8 +237,8 @@
     TInt retval     = KErrNone;
     char* strXPSServer      = NULL;
     IHXBuffer* pNameBuffer  = NULL;
-
-       
+    
+    
     if ((pFileFormatResponse == NULL) ||
         (pRequest == NULL) || (pFileObject != NULL))
     {
@@ -260,22 +260,22 @@
         {
             m_pRequest->AddRef();
         }
-
+        
         // Extract the Server name
         rv = PXUtilities::GetURLParam(m_pRequest, FALSE, m_pContext, "XPSServer", pNameBuffer);
         if(pNameBuffer != NULL)
         {
             strXPSServer = (char*)(pNameBuffer->GetBuffer());
-    
+            
             HX_ASSERT(!m_pXPSClient);
-
+            
             // Create XPSClient
             m_pXPSClient = new CXPSClient((CXPSClientResponse*) this);
             if(m_pXPSClient != NULL)
             {
                 retval = m_pXPSClient->Connect(strXPSServer);
-
-    	
+                
+                
                 if(retval == KErrNone)
                 {
                     retval = m_pXPSClient->GetSessionDescription();
@@ -297,15 +297,15 @@
             {
                 rv = HXR_OUTOFMEMORY;
             }
-
+            
             HX_RELEASE(pNameBuffer);
         }
         else
         {
-           rv = HXR_INVALID_URL_OPTION;
+            rv = HXR_INVALID_URL_OPTION;
         }
     } // End of if(SUCCEEDED(rv))
-
+    
     if(FAILED(rv))
     {
         HXLOGL1(HXLOG_SXPS, "CXPSFileFormat::InitFileFormat rv : %d FAILED", rv );
@@ -322,13 +322,13 @@
 {
     HXLOGL2(HXLOG_SXPS, "CXPSFileFormat::Close");
     ResetHeaders();
-
+    
     if(m_pXPSClient != NULL)
     {
         m_pXPSClient->Disconnect();
         HX_DELETE(m_pXPSClient);
     }
-
+    
     HX_VECTOR_DELETE(m_parrStreams);
     HX_RELEASE(m_pRequest);
     HX_RELEASE(m_pFFResponse);
@@ -367,11 +367,11 @@
         }
         
     } // End of if(m_ulStreamCount > 0)
-
+    
     m_pFFResponse->FileHeaderReady(rv, pFileHeader);
     
     HXLOGL3(HXLOG_SXPS, "CXPSFileFormat::GetFileHeader rv : %d", rv );
-
+    
     return rv;
 }
 
@@ -386,19 +386,19 @@
     if(unStreamNumber + 1 < m_uHeaderCnt)
     {
         rv = m_parrStreams[unStreamNumber].Init(m_pClassFactory, unStreamNumber, 
-                                                m_ppSDPValues[unStreamNumber + 1]);
-
+            m_ppSDPValues[unStreamNumber + 1]);
+        
         m_pFFResponse->StreamHeaderReady(rv, m_ppSDPValues[unStreamNumber + 1]);
     }
     else
     {
         HXLOGL1(HXLOG_SXPS, "CXPSFileFormat::GetStreamHeader StrmNo:%lu rv : HXR_FAILED",
-                            unStreamNumber);
+            unStreamNumber);
         m_pFFResponse->StreamHeaderReady(HXR_FAILED, NULL);
     }
     HXLOGL3(HXLOG_SXPS, "CXPSFileFormat::GetStreamHeader StrmNo:%lu rv : HXR_OK",
-                            unStreamNumber);
-        
+        unStreamNumber);
+    
     return HXR_OK;
 }
 
@@ -419,7 +419,7 @@
     {
         m_pXPSClient->GetPacket(unStreamNumber);    
     }
-        
+    
     return HXR_OK;
 }
 
@@ -435,7 +435,9 @@
     HXLOGL1(HXLOG_SXPS, "CXPSFileFormat::Seek :%lu", ulOffset);
     
     ResetStreams();
-
+    
+    m_ulSeekOffset = ulOffset;
+    
     if(m_pXPSClient != NULL)
     {
         m_pXPSClient->ResetStreams();
@@ -469,20 +471,20 @@
 //
 STDMETHODIMP CXPSFileFormat::GetProperties(REF(IHXValues*) pOptions)
 {
-
+    
     HXLOGL1(HXLOG_SXPS, "CXPSFileFormat::GetProperties");
-
+    
     IHXValues* pProps = NULL;
     CreateValuesCCF(pProps, m_pClassFactory);
     
     if (pProps)
     {
         pOptions = pProps;
-                
+        
         IHXBuffer* pVal = NULL;
-
+        
         CreateStringBufferCCF(pVal, "xps:xps|xps|file:xps",  m_pClassFactory);
-      
+        
         pOptions->SetPropertyCString("ClaimedSchemeExtensionPairs", pVal);
         HX_RELEASE(pVal);
     }
@@ -502,7 +504,7 @@
     UINT16 uIndex = 0;
     
     HXLOGL4(HXLOG_SXPS, "CXPSFileFormat::ResetHeaders");
-
+    
     for(uIndex = 0; uIndex < m_uHeaderCnt; uIndex++)
     {
         HX_RELEASE(m_ppSDPValues[uIndex]);
@@ -526,11 +528,11 @@
     UINT8      uStreamNumber =  aXPSPktHdr.m_uStreamNumber;
     CHXTimestampConverter* pTSConverter = NULL;
     
-
+    
     pTSConverter = m_parrStreams[aXPSPktHdr.m_uStreamNumber].GetTSConverter();
-
+    
     HX_ASSERT(pTSConverter);
-
+    
     TInt lRetval = KErrNoMemory;
     
     rv1 = m_pClassFactory->CreateInstance(CLSID_IHXRTPPacket, (void**)&pPacket);
@@ -539,22 +541,35 @@
     if( SUCCEEDED(rv1) && SUCCEEDED(rv2) )
     {
         pBuffer->Set((UCHAR*)pPyld, aXPSPktHdr.m_uPayloadSize);
-               
+        
         HXLOGL4(HXLOG_SXPS, "CXPSFileFormat::PacketReady Strm:%lu Seq:%lu",
-                            aXPSPktHdr.m_uStreamNumber, aXPSPktHdr.m_uSeqNo);
+            aXPSPktHdr.m_uStreamNumber, aXPSPktHdr.m_uSeqNo);
         
         UINT32 ulTime = pTSConverter->rtp2hxa(aXPSPktHdr.m_uTimeStamp);
         
+        ulTime += m_ulSeekOffset;
+        
         pPacket->SetRTP(pBuffer, ulTime, aXPSPktHdr.m_uTimeStamp, 
             aXPSPktHdr.m_uStreamNumber, (UINT8)(HX_ASM_SWITCH_ON | HX_ASM_SWITCH_OFF), 
             (UINT16)(aXPSPktHdr.m_uMarker ? 1 : 0));
-          
-       
+        
+        
         HX_RELEASE(pBuffer);
         rv1 = m_parrStreams[aXPSPktHdr.m_uStreamNumber].AddPacket(aXPSPktHdr.m_uSeqNo, pPacket);
+        
+        if(rv1 == HXR_OUTOFMEMORY)
+        {
+            IHXErrorMessages* pErrorMsgs = NULL;
+            m_pContext->QueryInterface(IID_IHXErrorMessages, (void**)&pErrorMsgs);
+            if(pErrorMsgs != NULL)
+            {
+                pErrorMsgs->Report(HXLOG_ERR, HXR_OUTOFMEMORY , 0, NULL , NULL);
+                HX_RELEASE(pErrorMsgs);
+            }
+        }
         if(FAILED(rv1))
         {
-           lRetval= KErrWrite; 
+            lRetval= KErrWrite; 
         }
         else
         {
@@ -562,7 +577,7 @@
         }
         DispatchPkt(aXPSPktHdr.m_uStreamNumber);
     } // End of if(SUCCEEDED(rv1) && (SUCCEEDED(rv2) )
-
+    
     HX_RELEASE(pPacket);
     HX_RELEASE(pBuffer);
     return lRetval;
@@ -575,7 +590,7 @@
 void CXPSFileFormat::PacketReady(TUint uStreamNumber, TInt lStatus)
 {
     HXLOGL1(HXLOG_SXPS, "CXPSFileFormat::PacketReady StrmNo:%lu Status:%d ERROR", 
-                        uStreamNumber, lStatus);
+        uStreamNumber, lStatus);
     if(lStatus != KErrNone)
     {
         m_pFFResponse->PacketReady(HXR_READ_ERROR, NULL);
@@ -595,7 +610,7 @@
 void CXPSFileFormat::EndStream(TUint uStreamNumber)
 {
     HXLOGL1(HXLOG_SXPS, "CXPSFileFormat::EndStream StrmNo:%lu",uStreamNumber);
-
+    
     m_parrStreams[uStreamNumber].EndOfStream();
     if(m_parrStreams[uStreamNumber].IsStreamEmpty())
     {
@@ -613,11 +628,11 @@
     IHXBuffer* pBuffer = NULL;    
     
     HXLOGL1(HXLOG_SXPS, "CXPSFileFormat::SDPReady Len:%d", des.Length());
-	
+    
     pSD = HXStreamDescriptionHelper::GetInstance(m_pContext, "application/sdp");
     rv = m_pClassFactory->CreateInstance(IID_IHXBuffer, (void**)&pBuffer);
     
-	HXLOGL1(HXLOG_SXPS, "CXPSFileFormat::SDPReady SD:%x Buffer:%x", pSD, pBuffer );
+    HXLOGL1(HXLOG_SXPS, "CXPSFileFormat::SDPReady SD:%x Buffer:%x", pSD, pBuffer );
     if ( SUCCEEDED(rv) && (pSD != NULL) )
     {
         pBuffer->Set((const unsigned char*)des.PtrZ(), des.Length());
@@ -627,7 +642,7 @@
     }
     else
     {
-	    HXLOGL1(HXLOG_SXPS, "CXPSFileFormat::SDPReady SD:%x Buffer:%x", pSD, pBuffer );
+        HXLOGL1(HXLOG_SXPS, "CXPSFileFormat::SDPReady SD:%x Buffer:%x", pSD, pBuffer );
     }
     
     if(SUCCEEDED(rv))
@@ -635,14 +650,14 @@
         // Find the number of streams
         rv = m_ppSDPValues[0]->GetPropertyULONG32("StreamCount", m_ulStreamCount);
     }
-
+    
     if(FAILED(rv))
     {
         HXLOGL1(HXLOG_SXPS, "CXPSFileFormat::SDPReady SDP Parse FAILURE rv=%d", rv);
     }
-
+    
     m_pFFResponse->InitDone(rv);
-
+    
     HX_RELEASE(pSD);
 }
 
@@ -668,7 +683,7 @@
             
             uOtherStream = GetNextStreamNumber(uStreamid);
             
-            if(m_parrStreams[uOtherStream].IsStreamEmpty() != TRUE)
+            if(m_parrStreams[uOtherStream].IsStreamDone() != TRUE)
             {
                 // Get curr stream's pkt TS
                 ulCurrPktTS = m_parrStreams[uStreamid].GetNextPktTS();
@@ -691,16 +706,17 @@
             m_parrStreams[uStreamid].GetNextPacket(pPacket);
             if(pPacket != NULL)
             {
-                HXLOGL2(HXLOG_SXPS, "CXPSFileFormat::DispatchPkt GetPkt[%lu] TS:%lu", uStreamid, pPacket->GetTime());
+                HXLOGL4(HXLOG_SXPS, "CXPSFileFormat::DispatchPkt GetPkt[%lu] TS:%lu Seq:%lu", 
+                    uStreamid, pPacket->GetTime(), m_parrStreams[uStreamid].GetLastPktSeqNo());
                 m_pFFResponse->PacketReady(HXR_OK, pPacket);
                 m_parrStreams[uStreamid].SetGetPktStatus(FALSE);
-
+                
                 if( (m_parrStreams[uStreamid].IsStreamDone()) && 
                     (m_parrStreams[uStreamid].IsStreamEmpty()) )
                 {
                     m_pFFResponse->StreamDone(uStreamid);
                 }
-
+                
                 HX_RELEASE(pPacket);
                 
             } // End of if(pPacket != NULL)
@@ -719,7 +735,7 @@
     {
         uNextStreamNumber = 0;
     }
-
+    
     return uNextStreamNumber;
 }
 
@@ -737,13 +753,13 @@
 // CMediaStream::CMediaStream()
 //
 CMediaStream::CMediaStream()
-:m_pCCF(NULL)
-,m_pTSConverter(NULL)
-,m_pQue(NULL)
-,m_ulLastPktSeqNoDispatched(MAX_UINT32)
-,m_ulStreamId(0)
-,m_bGetPktPending(FALSE)
-,m_bStreamEnd(FALSE)
+            :m_pCCF(NULL)
+            ,m_pTSConverter(NULL)
+            ,m_pQue(NULL)
+            ,m_ulLastPktSeqNoDispatched(MAX_UINT32)
+            ,m_ulStreamId(0)
+            ,m_bGetPktPending(FALSE)
+            ,m_bStreamEnd(FALSE)
 {
     
 }
@@ -773,13 +789,13 @@
         m_ulStreamId = ulStreamId;
         m_pCCF = pCCF;
         HX_ADDREF(m_pCCF);
-
+        
         rv = pStrmHeader->GetPropertyULONG32("SamplesPerSecond", ulSampleRate);
-
+        
         if(SUCCEEDED(rv))
         {
             m_pTSConverter = new CHXTimestampConverter(CHXTimestampConverter::SAMPLES,
-						                                ulSampleRate);
+                ulSampleRate);
             m_pQue = new HX_deque(MEDIASTREAM_Q_SIZE);
             if( (m_pQue == NULL) || (m_pTSConverter == NULL) )
             {
@@ -796,7 +812,7 @@
     {
         HXLOGL1(HXLOG_SXPS, "CMediaStream::Init rv=%d", rv);
     }
-
+    
     return rv;
 }
 
@@ -827,55 +843,81 @@
 {
     HX_RESULT rv = HXR_OUTOFMEMORY;
     
-    if(m_pQue != NULL)
+    HX_ASSERT(m_pQue);
+    // Drop late packets
+    if((m_ulLastPktSeqNoDispatched != MAX_UINT32) && 
+        (ulSeqNo <= m_ulLastPktSeqNoDispatched) )
     {
-        // Drop late packets
-        if((m_ulLastPktSeqNoDispatched != MAX_UINT32) && 
-            (ulSeqNo <= m_ulLastPktSeqNoDispatched) )
-        {
-            HXLOGL2(HXLOG_SXPS, "CMediaStream[%d]::AddPacket late pkt. LastSeq:%lu CurrSeq:%lu - Dropping",
-                m_ulStreamId, m_ulLastPktSeqNoDispatched, ulSeqNo);
-            rv = HXR_FAIL;
-        }
-        else
+        HXLOGL2(HXLOG_SXPS, "CMediaStream[%d]::AddPacket late pkt. LastSeq:%lu CurrSeq:%lu - Dropping",
+            m_ulStreamId, m_ulLastPktSeqNoDispatched, ulSeqNo);
+        rv = HXR_FAIL;
+    }
+    else
+    {
+        CMediaStreamElem* pElem = new CMediaStreamElem();
+        if(pElem != NULL)
         {
-            CMediaStreamElem* pElem = new CMediaStreamElem();
-            if(pElem != NULL)
+            UINT32 ulInsertIdx = 0;
+            
+            rv = HXR_OK;
+            // Elem set does a ADDREF on packet
+            pElem->Set(ulSeqNo, pRTPPacket);
+            
+            ulInsertIdx = GetInsertIndex(ulSeqNo);
+            
+            HXLOGL4(HXLOG_SXPS, "CMediaStream[%d]::AddPacket Seq:%lu InsertIdx:%lu Q:%lu",
+                m_ulStreamId, ulSeqNo, ulInsertIdx, m_pQue->size());
+            
+            if(m_pQue->size() <= ulInsertIdx)
             {
-                UINT32 ulInsertIdx = 0;
-
-                // Elem set does a ADDREF on packet
-                pElem->Set(ulSeqNo, pRTPPacket);
+                if((ulInsertIdx == 0) || 
+                    (m_pQue->size() == ulInsertIdx) )
+                {
+                    // Add the elem to the back of the Q
+                }
+                else
+                {
+                    // Pkt Seq number gap, add lost packets
+                    UINT32 ulFillerCnt = ulInsertIdx - m_pQue->size();
+                    rv = InsertFillers(ulFillerCnt);
+                }
                 
-                ulInsertIdx = GetInsertIndex(ulSeqNo);
-
-                if(m_pQue->size() <= ulInsertIdx)
+                if(SUCCEEDED(rv))
                 {
                     m_pQue->push_back((void*)pElem);
                 }
+                
+            }
+            else
+            {
+                // Check whether the elem in Q is a filler (lost)
+                CMediaStreamElem* pTempElem = (CMediaStreamElem*)((*m_pQue)[ulInsertIdx]);
+                IHXRTPPacket* pRTPPacket = pTempElem->Pkt();
+                
+                if(pRTPPacket->IsLost())
+                {
+                    // replace the new elem into Q and delete the lost
+                    (*m_pQue)[ulInsertIdx] = (void*) pElem;
+                    HX_DELETE(pTempElem);
+                }
                 else
                 {
-                    if((*m_pQue)[ulInsertIdx] != NULL)
-                    {
-                        HXLOGL2(HXLOG_SXPS, "CMediaStream[%d]::AddPacket dup pkt:%lu ? Dropping"
-                                , m_ulStreamId, ulSeqNo);
-                        HX_DELETE(pElem);
-                        
-                        rv = HXR_FAILED;
-                    }
-                    else
-                    {
-                        (*m_pQue)[ulInsertIdx] = (void*) pElem;
-                    }
+                    rv = HXR_FAILED;
                 }
-                                             
-                rv = HXR_OK;
-            } // End of if(pElem != NULL)
-
-        } // End of if(ulSeqNo <= m_ulLastPktSeqNoDispatched)
-
+                HX_RELEASE(pRTPPacket);
+            } // End of if(m_pQue->size() <= ulInsertIdx)
+            
+            if(FAILED(rv))
+            {
+                HX_DELETE(pElem);
+            }
+            
+            
+        } // End of if(pElem != NULL)
+        
     } // End of if(m_pQue != NULL)
-
+    
+    
     return rv;
 }
 
@@ -888,6 +930,11 @@
     HXLOGL2(HXLOG_SXPS, "CMediaStream[%d]::Reset", m_ulStreamId);
     m_ulLastPktSeqNoDispatched = MAX_UINT32;
     ResetQue();
+    
+    if(m_pTSConverter != NULL)
+    {
+        m_pTSConverter->setAnchor(0,0);
+    }
 }
 
 //
@@ -921,7 +968,8 @@
         }
         else
         {
-            HXLOGL2(HXLOG_SXPS, "CMediaStream[%d]::GetNextPacket Packet Lost LstSeqNo:%lu",m_ulStreamId, m_ulLastPktSeqNoDispatched);
+            HXLOGL2(HXLOG_SXPS, "CMediaStream[%d]::GetNextPacket Packet Lost LstSeqNo:%lu CurrPkt:%lu",
+                m_ulStreamId, m_ulLastPktSeqNoDispatched, pElem->SeqNo());
             // packet missing, generate Lost pkt
             GenerateLostPacket(pRTPPacket);
             m_ulLastPktSeqNoDispatched++;
@@ -958,17 +1006,14 @@
     
     HX_ASSERT(m_pQue);
     
-    if(m_pQue->size() > 0)
+    if(m_ulLastPktSeqNoDispatched != MAX_UINT32)
     {
-        CMediaStreamElem* pElem = NULL;
-        pElem = (CMediaStreamElem*) m_pQue->front();
-        
-        lIndex = ulCurrSeqNo - pElem->SeqNo();
-        
+        UINT32 ulBaseSeq = (m_ulLastPktSeqNoDispatched + 1);
+        lIndex = ulCurrSeqNo - ulBaseSeq;
         if(lIndex < 0)
         {
             // Wrap around (wrap around value 65535)
-            lIndex = (INT32)(WRAP_SEQ_NO - pElem->SeqNo() + ulCurrSeqNo);
+            lIndex = (INT32)(WRAP_SEQ_NO - ulBaseSeq + ulCurrSeqNo);
         }
     }
     
@@ -1011,11 +1056,56 @@
         
         IHXRTPPacket* pPkt = pElem->Pkt();
         ulTS = pPkt->GetTime();
-
+        
         HX_RELEASE(pPkt);
         
-     }
-
+    }
+    
     return ulTS;
 }
 
+//
+//  CMediaStream::InsertFillers()
+//  Adds packets with lost property to the Q
+//
+HX_RESULT CMediaStream::InsertFillers(UINT32 ulFillerCnt)
+{
+    HX_RESULT           rv          = HXR_OK;
+    CMediaStreamElem*   pFillerElem = NULL;
+    IHXRTPPacket*       pRTPPacket  = NULL;
+    UINT16              uFillerIdx;
+    UINT16              ulTailSeqNo;
+    
+    
+    HXLOGL2(HXLOG_SXPS, "CMediaStream[%d]::InsertFillers PACKETS LOST. Gap:%lu",
+        m_ulStreamId, ulFillerCnt);
+    
+    ulTailSeqNo = m_ulLastPktSeqNoDispatched;
+    if(m_pQue->size() > 0)
+    {
+        ulTailSeqNo = ((CMediaStreamElem*)(m_pQue->back()))->SeqNo();
+    }
+    
+    for(uFillerIdx =0; uFillerIdx < ulFillerCnt; uFillerIdx++)
+    {
+        pFillerElem = new CMediaStreamElem();
+        GenerateLostPacket(pRTPPacket);
+        if( (pRTPPacket != NULL) && (pFillerElem != NULL) )
+        {
+            ulTailSeqNo++;
+            pFillerElem->Set(ulTailSeqNo, pRTPPacket);
+            m_pQue->push_back((void*)pFillerElem);
+            HX_RELEASE(pRTPPacket);
+        }
+        else
+        {
+            HX_DELETE(pFillerElem);
+            HX_RELEASE(pRTPPacket);
+            rv = HXR_OUTOFMEMORY;
+            break;
+        }
+        
+    } // End of for
+    
+    return rv;
+}

Index: CXPSFileformat.h
===================================================================
RCS file: /cvsroot/datatype/xps/fileformat/CXPSFileformat.h,v
retrieving revision 1.1.1.1.2.1
retrieving revision 1.1.1.1.2.2
diff -u -d -r1.1.1.1.2.1 -r1.1.1.1.2.2
--- CXPSFileformat.h	20 Oct 2006 18:29:52 -0000	1.1.1.1.2.1
+++ CXPSFileformat.h	3 Nov 2006 22:36:09 -0000	1.1.1.1.2.2
@@ -150,12 +150,14 @@
     inline HXBOOL IsStreamDone() {return m_bStreamEnd;}
     inline UINT32 QSize();
     UINT32 GetNextPktTS();    
+    UINT32 GetLastPktSeqNo(){return m_ulLastPktSeqNoDispatched;}
 
 private:
 
     UINT32 GetInsertIndex(UINT32 ulCurrSeqNo);
     void GenerateLostPacket(IHXRTPPacket*& pRTPPacket);
     void ResetQue();
+    HX_RESULT InsertFillers(UINT32 ulFillerCnt);
 
 private:
     // Data members
@@ -283,6 +285,7 @@
 	CMediaStream* m_parrStreams;
 
     CXPSClient* m_pXPSClient;
+    UINT32      m_ulSeekOffset;
 
     static const char* const zm_pDescription;
     static const char* const zm_pCopyright;


From rrajesh at helixcommunity.org  Fri Nov  3 14:37:45 2006
From: rrajesh at helixcommunity.org (rrajesh@helixcommunity.org)
Date: Fri Nov  3 15:45:16 2006
Subject: [Datatype-cvs] xps/PacketSink CXPSDebug.h, 1.1.1.1.2.1,
	1.1.1.1.2.2 CXPSSession.cpp, 1.1.1.1,
	1.1.1.1.2.1 CXPSStream.cpp, 1.1.1.1.2.1,
	1.1.1.1.2.2 CXPSStream.h, 1.1.1.1.2.1, 1.1.1.1.2.2
Message-ID: 

Update of /cvsroot/datatype/xps/PacketSink
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv24471

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	CXPSDebug.h CXPSSession.cpp CXPSStream.cpp CXPSStream.h 
Log Message:
"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:  rajesh.rathinasamy@nokia.com

Reviewed by:

Date: 01-Nov-2006.

Project: SymbianMmf

ErrorId: ** New Featue **

Synopsis:  CR: Symbian eXternal Packet Source feature II 

	XPS is an eXternal Packet Source for rendering media packets using Helix MMF controller.  
           As the name implies, the media packets are from an external source to Helix MMF controller. 
            Applications could be generating packets from a local source or may be receiving over data connection.  

	Changes included are:
            * Updated error code mapping on file source to propogate access denied error to TLC.
	* Packets pushed onto fileformat Q were not ordered. Changes have been included to re-order packets.
	* Updated the packet's helix time with seek time offset
	* packet restore notifier has to be reset in case of session reset on packet sink which was not done previously.

Pending Changes from earlier CR:
	* Change comment style for Symbian Documentation on PacketSink header ( exported headers)
	* Update PacketSinkObserver header to be system include. ( ie Use <> instead of " ")

Current Status:
	* Feature complete. Working on Test App and testing of the feature.
	* Test module will be checked in two phases. First phase will include the test library for sample usage of XPSPacketSink
         And second phase will include a standalone symbian test application which uses Symbian's CVideoPlayerutility ,  XPSPacketSink lib and xps test lib.

Files Modified: 
===========

Client\core\hxflsrc.cpp

datatype/xps/fileformat/CXPSFileformat.cpp
datatype/xps/fileformat/CXPSFileformat.h

datatype/xps/PacketSink/CXPSDebug.h
datatype/xps/PacketSink/CXPSSession.cpp
datatype/xps/PacketSink/CXPSStream.cpp
datatype/xps/PacketSink/CXPSStream.h

Image Size and Heap Use impact: no major impact

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

Platforms and Profiles Functionality verified: armv5, winscw

     Branch: Helix, 210CayS


Index: CXPSSession.cpp
===================================================================
RCS file: /cvsroot/datatype/xps/PacketSink/CXPSSession.cpp,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.2.1
diff -u -d -r1.1.1.1 -r1.1.1.1.2.1
--- CXPSSession.cpp	4 Oct 2006 15:28:18 -0000	1.1.1.1
+++ CXPSSession.cpp	3 Nov 2006 22:37:43 -0000	1.1.1.1.2.1
@@ -231,9 +231,12 @@
     {
         for(uIndex = 0; uIndex < m_uStreamCnt; uIndex++)
         {
-            m_arrXPSStreams[uIndex].Reset();
+            lRetval = m_arrXPSStreams[uIndex].Reset();
+            if(lRetval != KErrNone)
+            {
+                break;
+            }
         }
-        lRetval = KErrNone;
     }
     
     return lRetval;

Index: CXPSStream.h
===================================================================
RCS file: /cvsroot/datatype/xps/PacketSink/CXPSStream.h,v
retrieving revision 1.1.1.1.2.1
retrieving revision 1.1.1.1.2.2
diff -u -d -r1.1.1.1.2.1 -r1.1.1.1.2.2
--- CXPSStream.h	20 Oct 2006 18:32:08 -0000	1.1.1.1.2.1
+++ CXPSStream.h	3 Nov 2006 22:37:43 -0000	1.1.1.1.2.2
@@ -128,7 +128,7 @@
     TInt AddPacket(CXPSPacket* pPacket);
     TInt StreamEnd();
     TInt SetQSize(TUint uSize);
-    void Reset();
+    TInt Reset();
 
 private:
 

Index: CXPSStream.cpp
===================================================================
RCS file: /cvsroot/datatype/xps/PacketSink/CXPSStream.cpp,v
retrieving revision 1.1.1.1.2.1
retrieving revision 1.1.1.1.2.2
diff -u -d -r1.1.1.1.2.1 -r1.1.1.1.2.2
--- CXPSStream.cpp	20 Oct 2006 18:32:08 -0000	1.1.1.1.2.1
+++ CXPSStream.cpp	3 Nov 2006 22:37:43 -0000	1.1.1.1.2.2
@@ -239,8 +239,9 @@
 //  CXPSStream::Reset
 //  Removes all pkts from the Q
 //
-void CXPSStream::Reset()
+TInt CXPSStream::Reset()
 {
+    TInt lRetval = KErrNotReady;
     XPS_LOG(_L("CXPSStream[%x]::Reset Strm:%d "), this, m_uStreamId);
     if(m_pXPSPktQue != NULL)
     {
@@ -249,9 +250,24 @@
             m_AccessMutex.Wait();
             m_pXPSPktQue->Reset();
             CancelPendingGetPktMsg();
+            
+            delete m_pNotifier;
+            // Creates the active obj on the caller's ActiveScheduler.
+            m_pNotifier = new CXPSPktRestoreNotifier(m_uStreamId, m_pXPSPktSinkObserver);
+            if(m_pNotifier == NULL)
+            {
+                lRetval = KErrNoMemory;
+            }
+            else
+            {
+                lRetval = KErrNone;
+            }
+            
             m_AccessMutex.Signal();
         }
     }
+
+    return lRetval;
 }
 
 
@@ -392,6 +408,11 @@
     ASSERT(m_pXPSPktQue);
     ASSERT(m_pNotifier);
     ASSERT(pPacket);
+
+    if(m_pNotifier == NULL)
+    {
+        return KErrNoMemory;
+    }
     
     m_AccessMutex.Wait();
     if(!m_pNotifier->IsActive())
@@ -481,6 +502,7 @@
     {
         // Error
         lRetval = KErrAlreadyExists;
+        XPS_LOG(_L("CXPSStream[%x]::RegisterPktDryNotification Strm:%d ERROR"), this, m_uStreamId);
     }
        
     return lRetval;

Index: CXPSDebug.h
===================================================================
RCS file: /cvsroot/datatype/xps/PacketSink/CXPSDebug.h,v
retrieving revision 1.1.1.1.2.1
retrieving revision 1.1.1.1.2.2
diff -u -d -r1.1.1.1.2.1 -r1.1.1.1.2.2
--- CXPSDebug.h	20 Oct 2006 18:32:08 -0000	1.1.1.1.2.1
+++ CXPSDebug.h	3 Nov 2006 22:37:43 -0000	1.1.1.1.2.2
@@ -74,7 +74,7 @@
 // forward declaration
 class CXPSDebug;
 
-#ifdef _DEBUG
+#ifndef _DEBUG
 
     #define XPS_LOG		CXPSDebug::NullLog      
 


From rrajesh at helixcommunity.org  Fri Nov  3 14:46:28 2006
From: rrajesh at helixcommunity.org (rrajesh@helixcommunity.org)
Date: Fri Nov  3 15:53:59 2006
Subject: [Datatype-cvs] xps/fileformat CXPSFileformat.cpp, 1.2,
	1.3 CXPSFileformat.h, 1.2, 1.3
Message-ID: 

Update of /cvsroot/datatype/xps/fileformat
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv1721

Modified Files:
	CXPSFileformat.cpp CXPSFileformat.h 
Log Message:
"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:  rajesh.rathinasamy@nokia.com

Reviewed by:

Date: 01-Nov-2006.

Project: SymbianMmf

ErrorId: ** New Featue **

Synopsis:  CR: Symbian eXternal Packet Source feature II 

	XPS is an eXternal Packet Source for rendering media packets using Helix MMF controller.  
           As the name implies, the media packets are from an external source to Helix MMF controller. 
            Applications could be generating packets from a local source or may be receiving over data connection.  

	Changes included are:
            * Updated error code mapping on file source to propogate access denied error to TLC.
	* Packets pushed onto fileformat Q were not ordered. Changes have been included to re-order packets.
	* Updated the packet's helix time with seek time offset
	* packet restore notifier has to be reset in case of session reset on packet sink which was not done previously.

Pending Changes from earlier CR:
	* Change comment style for Symbian Documentation on PacketSink header ( exported headers)
	* Update PacketSinkObserver header to be system include. ( ie Use <> instead of " ")

Current Status:
	* Feature complete. Working on Test App and testing of the feature.
	* Test module will be checked in two phases. First phase will include the test library for sample usage of XPSPacketSink
         And second phase will include a standalone symbian test application which uses Symbian's CVideoPlayerutility ,  XPSPacketSink lib and xps test lib.

Files Modified: 
===========

Client\core\hxflsrc.cpp

datatype/xps/fileformat/CXPSFileformat.cpp
datatype/xps/fileformat/CXPSFileformat.h

datatype/xps/PacketSink/CXPSDebug.h
datatype/xps/PacketSink/CXPSSession.cpp
datatype/xps/PacketSink/CXPSStream.cpp
datatype/xps/PacketSink/CXPSStream.h

Image Size and Heap Use impact: no major impact

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

Platforms and Profiles Functionality verified: armv5, winscw

     Branch: Helix, 210CayS


Index: CXPSFileformat.cpp
===================================================================
RCS file: /cvsroot/datatype/xps/fileformat/CXPSFileformat.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- CXPSFileformat.cpp	20 Oct 2006 19:05:05 -0000	1.2
+++ CXPSFileformat.cpp	3 Nov 2006 22:46:26 -0000	1.3
@@ -111,13 +111,13 @@
                 ,m_pClassFactory(NULL)
                 ,m_ppSDPValues(NULL)
                 ,m_uHeaderCnt(0)
-                ,m_pXPSClient(NULL)
                 ,m_ulStreamCount(0)
                 ,m_parrStreams(NULL)
+                ,m_pXPSClient(NULL)
+                ,m_ulSeekOffset(0)
                 ,CHXBaseCountingObject()
 {
     
-    
 }
 
 //
@@ -436,6 +436,8 @@
     
     ResetStreams();
 
+    m_ulSeekOffset = ulOffset;
+    
     if(m_pXPSClient != NULL)
     {
         m_pXPSClient->ResetStreams();
@@ -545,6 +547,8 @@
         
         UINT32 ulTime = pTSConverter->rtp2hxa(aXPSPktHdr.m_uTimeStamp);
         
+        ulTime += m_ulSeekOffset;
+        
         pPacket->SetRTP(pBuffer, ulTime, aXPSPktHdr.m_uTimeStamp, 
             aXPSPktHdr.m_uStreamNumber, (UINT8)(HX_ASM_SWITCH_ON | HX_ASM_SWITCH_OFF), 
             (UINT16)(aXPSPktHdr.m_uMarker ? 1 : 0));
@@ -552,6 +556,17 @@
        
         HX_RELEASE(pBuffer);
         rv1 = m_parrStreams[aXPSPktHdr.m_uStreamNumber].AddPacket(aXPSPktHdr.m_uSeqNo, pPacket);
+        
+        if(rv1 == HXR_OUTOFMEMORY)
+        {
+            IHXErrorMessages* pErrorMsgs = NULL;
+            m_pContext->QueryInterface(IID_IHXErrorMessages, (void**)&pErrorMsgs);
+            if(pErrorMsgs != NULL)
+            {
+                pErrorMsgs->Report(HXLOG_ERR, HXR_OUTOFMEMORY , 0, NULL , NULL);
+                HX_RELEASE(pErrorMsgs);
+            }
+        }
         if(FAILED(rv1))
         {
            lRetval= KErrWrite; 
@@ -668,7 +683,7 @@
             
             uOtherStream = GetNextStreamNumber(uStreamid);
             
-            if(m_parrStreams[uOtherStream].IsStreamEmpty() != TRUE)
+            if(m_parrStreams[uOtherStream].IsStreamDone() != TRUE)
             {
                 // Get curr stream's pkt TS
                 ulCurrPktTS = m_parrStreams[uStreamid].GetNextPktTS();
@@ -691,7 +706,8 @@
             m_parrStreams[uStreamid].GetNextPacket(pPacket);
             if(pPacket != NULL)
             {
-                HXLOGL2(HXLOG_SXPS, "CXPSFileFormat::DispatchPkt GetPkt[%lu] TS:%lu", uStreamid, pPacket->GetTime());
+                HXLOGL4(HXLOG_SXPS, "CXPSFileFormat::DispatchPkt GetPkt[%lu] TS:%lu Seq:%lu", 
+                    uStreamid, pPacket->GetTime(), m_parrStreams[uStreamid].GetLastPktSeqNo());
                 m_pFFResponse->PacketReady(HXR_OK, pPacket);
                 m_parrStreams[uStreamid].SetGetPktStatus(FALSE);
 
@@ -827,55 +843,81 @@
 {
     HX_RESULT rv = HXR_OUTOFMEMORY;
     
-    if(m_pQue != NULL)
+    HX_ASSERT(m_pQue);
+    // Drop late packets
+    if((m_ulLastPktSeqNoDispatched != MAX_UINT32) && 
+        (ulSeqNo <= m_ulLastPktSeqNoDispatched) )
     {
-        // Drop late packets
-        if((m_ulLastPktSeqNoDispatched != MAX_UINT32) && 
-            (ulSeqNo <= m_ulLastPktSeqNoDispatched) )
-        {
-            HXLOGL2(HXLOG_SXPS, "CMediaStream[%d]::AddPacket late pkt. LastSeq:%lu CurrSeq:%lu - Dropping",
-                m_ulStreamId, m_ulLastPktSeqNoDispatched, ulSeqNo);
-            rv = HXR_FAIL;
-        }
-        else
+        HXLOGL2(HXLOG_SXPS, "CMediaStream[%d]::AddPacket late pkt. LastSeq:%lu CurrSeq:%lu - Dropping",
+            m_ulStreamId, m_ulLastPktSeqNoDispatched, ulSeqNo);
+        rv = HXR_FAIL;
+    }
+    else
+    {
+        CMediaStreamElem* pElem = new CMediaStreamElem();
+        if(pElem != NULL)
         {
-            CMediaStreamElem* pElem = new CMediaStreamElem();
-            if(pElem != NULL)
+            UINT32 ulInsertIdx = 0;
+            
+            rv = HXR_OK;
+            // Elem set does a ADDREF on packet
+            pElem->Set(ulSeqNo, pRTPPacket);
+            
+            ulInsertIdx = GetInsertIndex(ulSeqNo);
+            
+            HXLOGL4(HXLOG_SXPS, "CMediaStream[%d]::AddPacket Seq:%lu InsertIdx:%lu Q:%lu",
+                m_ulStreamId, ulSeqNo, ulInsertIdx, m_pQue->size());
+            
+            if(m_pQue->size() <= ulInsertIdx)
             {
-                UINT32 ulInsertIdx = 0;
-
-                // Elem set does a ADDREF on packet
-                pElem->Set(ulSeqNo, pRTPPacket);
+                if((ulInsertIdx == 0) || 
+                    (m_pQue->size() == ulInsertIdx) )
+                {
+                    // Add the elem to the back of the Q
+                }
+                else
+                {
+                    // Pkt Seq number gap, add lost packets
+                    UINT32 ulFillerCnt = ulInsertIdx - m_pQue->size();
+                    rv = InsertFillers(ulFillerCnt);
+                }
                 
-                ulInsertIdx = GetInsertIndex(ulSeqNo);
-
-                if(m_pQue->size() <= ulInsertIdx)
+                if(SUCCEEDED(rv))
                 {
                     m_pQue->push_back((void*)pElem);
                 }
+                
+            }
+            else
+            {
+                // Check whether the elem in Q is a filler (lost)
+                CMediaStreamElem* pTempElem = (CMediaStreamElem*)((*m_pQue)[ulInsertIdx]);
+                IHXRTPPacket* pRTPPacket = pTempElem->Pkt();
+                
+                if(pRTPPacket->IsLost())
+                {
+                    // replace the new elem into Q and delete the lost
+                    (*m_pQue)[ulInsertIdx] = (void*) pElem;
+                    HX_DELETE(pTempElem);
+                }
                 else
                 {
-                    if((*m_pQue)[ulInsertIdx] != NULL)
-                    {
-                        HXLOGL2(HXLOG_SXPS, "CMediaStream[%d]::AddPacket dup pkt:%lu ? Dropping"
-                                , m_ulStreamId, ulSeqNo);
-                        HX_DELETE(pElem);
-                        
-                        rv = HXR_FAILED;
-                    }
-                    else
-                    {
-                        (*m_pQue)[ulInsertIdx] = (void*) pElem;
-                    }
+                    rv = HXR_FAILED;
                 }
-                                             
-                rv = HXR_OK;
-            } // End of if(pElem != NULL)
-
-        } // End of if(ulSeqNo <= m_ulLastPktSeqNoDispatched)
-
+                HX_RELEASE(pRTPPacket);
+            } // End of if(m_pQue->size() <= ulInsertIdx)
+            
+            if(FAILED(rv))
+            {
+                HX_DELETE(pElem);
+            }
+            
+            
+        } // End of if(pElem != NULL)
+        
     } // End of if(m_pQue != NULL)
-
+    
+    
     return rv;
 }
 
@@ -888,6 +930,11 @@
     HXLOGL2(HXLOG_SXPS, "CMediaStream[%d]::Reset", m_ulStreamId);
     m_ulLastPktSeqNoDispatched = MAX_UINT32;
     ResetQue();
+    
+    if(m_pTSConverter != NULL)
+    {
+        m_pTSConverter->setAnchor(0,0);
+    }
 }
 
 //
@@ -921,7 +968,8 @@
         }
         else
         {
-            HXLOGL2(HXLOG_SXPS, "CMediaStream[%d]::GetNextPacket Packet Lost LstSeqNo:%lu",m_ulStreamId, m_ulLastPktSeqNoDispatched);
+            HXLOGL2(HXLOG_SXPS, "CMediaStream[%d]::GetNextPacket Packet Lost LstSeqNo:%lu CurrPkt:%lu",
+                m_ulStreamId, m_ulLastPktSeqNoDispatched, pElem->SeqNo());
             // packet missing, generate Lost pkt
             GenerateLostPacket(pRTPPacket);
             m_ulLastPktSeqNoDispatched++;
@@ -958,17 +1006,14 @@
     
     HX_ASSERT(m_pQue);
     
-    if(m_pQue->size() > 0)
+    if(m_ulLastPktSeqNoDispatched != MAX_UINT32)
     {
-        CMediaStreamElem* pElem = NULL;
-        pElem = (CMediaStreamElem*) m_pQue->front();
-        
-        lIndex = ulCurrSeqNo - pElem->SeqNo();
-        
+        UINT32 ulBaseSeq = (m_ulLastPktSeqNoDispatched + 1);
+        lIndex = ulCurrSeqNo - ulBaseSeq;
         if(lIndex < 0)
         {
             // Wrap around (wrap around value 65535)
-            lIndex = (INT32)(WRAP_SEQ_NO - pElem->SeqNo() + ulCurrSeqNo);
+            lIndex = (INT32)(WRAP_SEQ_NO - ulBaseSeq + ulCurrSeqNo);
         }
     }
     
@@ -1019,3 +1064,48 @@
     return ulTS;
 }
 
+//
+//  CMediaStream::InsertFillers()
+//  Adds packets with lost property to the Q
+//
+HX_RESULT CMediaStream::InsertFillers(UINT32 ulFillerCnt)
+{
+    HX_RESULT           rv          = HXR_OK;
+    CMediaStreamElem*   pFillerElem = NULL;
+    IHXRTPPacket*       pRTPPacket  = NULL;
+    UINT16              uFillerIdx;
+    UINT16              ulTailSeqNo;
+    
+    
+    HXLOGL2(HXLOG_SXPS, "CMediaStream[%d]::InsertFillers PACKETS LOST. Gap:%lu",
+        m_ulStreamId, ulFillerCnt);
+    
+    ulTailSeqNo = m_ulLastPktSeqNoDispatched;
+    if(m_pQue->size() > 0)
+    {
+        ulTailSeqNo = ((CMediaStreamElem*)(m_pQue->back()))->SeqNo();
+    }
+    
+    for(uFillerIdx =0; uFillerIdx < ulFillerCnt; uFillerIdx++)
+    {
+        pFillerElem = new CMediaStreamElem();
+        GenerateLostPacket(pRTPPacket);
+        if( (pRTPPacket != NULL) && (pFillerElem != NULL) )
+        {
+            ulTailSeqNo++;
+            pFillerElem->Set(ulTailSeqNo, pRTPPacket);
+            m_pQue->push_back((void*)pFillerElem);
+            HX_RELEASE(pRTPPacket);
+        }
+        else
+        {
+            HX_DELETE(pFillerElem);
+            HX_RELEASE(pRTPPacket);
+            rv = HXR_OUTOFMEMORY;
+            break;
+        }
+        
+    } // End of for
+    
+    return rv;
+}

Index: CXPSFileformat.h
===================================================================
RCS file: /cvsroot/datatype/xps/fileformat/CXPSFileformat.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- CXPSFileformat.h	20 Oct 2006 19:05:05 -0000	1.2
+++ CXPSFileformat.h	3 Nov 2006 22:46:26 -0000	1.3
@@ -150,12 +150,14 @@
     inline HXBOOL IsStreamDone() {return m_bStreamEnd;}
     inline UINT32 QSize();
     UINT32 GetNextPktTS();    
+    UINT32 GetLastPktSeqNo(){return m_ulLastPktSeqNoDispatched;}
 
 private:
 
     UINT32 GetInsertIndex(UINT32 ulCurrSeqNo);
     void GenerateLostPacket(IHXRTPPacket*& pRTPPacket);
     void ResetQue();
+    HX_RESULT InsertFillers(UINT32 ulFillerCnt);
 
 private:
     // Data members
@@ -283,6 +285,7 @@
 	CMediaStream* m_parrStreams;
 
     CXPSClient* m_pXPSClient;
+    UINT32      m_ulSeekOffset;
 
     static const char* const zm_pDescription;
     static const char* const zm_pCopyright;


From rrajesh at helixcommunity.org  Fri Nov  3 14:47:48 2006
From: rrajesh at helixcommunity.org (rrajesh@helixcommunity.org)
Date: Fri Nov  3 15:55:18 2006
Subject: [Datatype-cvs] 
	xps/PacketSink CXPSDebug.h, 1.2, 1.3 CXPSSession.cpp,
	1.1.1.1, 1.2 CXPSStream.cpp, 1.2, 1.3 CXPSStream.h, 1.2, 1.3
Message-ID: 

Update of /cvsroot/datatype/xps/PacketSink
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv1837

Modified Files:
	CXPSDebug.h CXPSSession.cpp CXPSStream.cpp CXPSStream.h 
Log Message:
"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:  rajesh.rathinasamy@nokia.com

Reviewed by:

Date: 01-Nov-2006.

Project: SymbianMmf

ErrorId: ** New Featue **

Synopsis:  CR: Symbian eXternal Packet Source feature II 

	XPS is an eXternal Packet Source for rendering media packets using Helix MMF controller.  
           As the name implies, the media packets are from an external source to Helix MMF controller. 
            Applications could be generating packets from a local source or may be receiving over data connection.  

	Changes included are:
            * Updated error code mapping on file source to propogate access denied error to TLC.
	* Packets pushed onto fileformat Q were not ordered. Changes have been included to re-order packets.
	* Updated the packet's helix time with seek time offset
	* packet restore notifier has to be reset in case of session reset on packet sink which was not done previously.

Pending Changes from earlier CR:
	* Change comment style for Symbian Documentation on PacketSink header ( exported headers)
	* Update PacketSinkObserver header to be system include. ( ie Use <> instead of " ")

Current Status:
	* Feature complete. Working on Test App and testing of the feature.
	* Test module will be checked in two phases. First phase will include the test library for sample usage of XPSPacketSink
         And second phase will include a standalone symbian test application which uses Symbian's CVideoPlayerutility ,  XPSPacketSink lib and xps test lib.

Files Modified: 
===========

Client\core\hxflsrc.cpp

datatype/xps/fileformat/CXPSFileformat.cpp
datatype/xps/fileformat/CXPSFileformat.h

datatype/xps/PacketSink/CXPSDebug.h
datatype/xps/PacketSink/CXPSSession.cpp
datatype/xps/PacketSink/CXPSStream.cpp
datatype/xps/PacketSink/CXPSStream.h

Image Size and Heap Use impact: no major impact

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

Platforms and Profiles Functionality verified: armv5, winscw

     Branch: Helix, 210CayS


Index: CXPSSession.cpp
===================================================================
RCS file: /cvsroot/datatype/xps/PacketSink/CXPSSession.cpp,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -d -r1.1.1.1 -r1.2
--- CXPSSession.cpp	4 Oct 2006 15:28:18 -0000	1.1.1.1
+++ CXPSSession.cpp	3 Nov 2006 22:47:46 -0000	1.2
@@ -231,9 +231,12 @@
     {
         for(uIndex = 0; uIndex < m_uStreamCnt; uIndex++)
         {
-            m_arrXPSStreams[uIndex].Reset();
+            lRetval = m_arrXPSStreams[uIndex].Reset();
+            if(lRetval != KErrNone)
+            {
+                break;
+            }
         }
-        lRetval = KErrNone;
     }
     
     return lRetval;

Index: CXPSStream.h
===================================================================
RCS file: /cvsroot/datatype/xps/PacketSink/CXPSStream.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- CXPSStream.h	20 Oct 2006 19:07:57 -0000	1.2
+++ CXPSStream.h	3 Nov 2006 22:47:46 -0000	1.3
@@ -128,7 +128,7 @@
     TInt AddPacket(CXPSPacket* pPacket);
     TInt StreamEnd();
     TInt SetQSize(TUint uSize);
-    void Reset();
+    TInt Reset();
 
 private:
 

Index: CXPSStream.cpp
===================================================================
RCS file: /cvsroot/datatype/xps/PacketSink/CXPSStream.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- CXPSStream.cpp	20 Oct 2006 19:07:57 -0000	1.2
+++ CXPSStream.cpp	3 Nov 2006 22:47:46 -0000	1.3
@@ -239,8 +239,9 @@
 //  CXPSStream::Reset
 //  Removes all pkts from the Q
 //
-void CXPSStream::Reset()
+TInt CXPSStream::Reset()
 {
+    TInt lRetval = KErrNotReady;
     XPS_LOG(_L("CXPSStream[%x]::Reset Strm:%d "), this, m_uStreamId);
     if(m_pXPSPktQue != NULL)
     {
@@ -249,9 +250,24 @@
             m_AccessMutex.Wait();
             m_pXPSPktQue->Reset();
             CancelPendingGetPktMsg();
+            
+            delete m_pNotifier;
+            // Creates the active obj on the caller's ActiveScheduler.
+            m_pNotifier = new CXPSPktRestoreNotifier(m_uStreamId, m_pXPSPktSinkObserver);
+            if(m_pNotifier == NULL)
+            {
+                lRetval = KErrNoMemory;
+            }
+            else
+            {
+                lRetval = KErrNone;
+            }
+            
             m_AccessMutex.Signal();
         }
     }
+
+    return lRetval;
 }
 
 
@@ -392,6 +408,11 @@
     ASSERT(m_pXPSPktQue);
     ASSERT(m_pNotifier);
     ASSERT(pPacket);
+
+    if(m_pNotifier == NULL)
+    {
+        return KErrNoMemory;
+    }
     
     m_AccessMutex.Wait();
     if(!m_pNotifier->IsActive())
@@ -481,6 +502,7 @@
     {
         // Error
         lRetval = KErrAlreadyExists;
+        XPS_LOG(_L("CXPSStream[%x]::RegisterPktDryNotification Strm:%d ERROR"), this, m_uStreamId);
     }
        
     return lRetval;

Index: CXPSDebug.h
===================================================================
RCS file: /cvsroot/datatype/xps/PacketSink/CXPSDebug.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- CXPSDebug.h	20 Oct 2006 19:07:57 -0000	1.2
+++ CXPSDebug.h	3 Nov 2006 22:47:46 -0000	1.3
@@ -74,7 +74,7 @@
 // forward declaration
 class CXPSDebug;
 
-#ifdef _DEBUG
+#ifndef _DEBUG
 
     #define XPS_LOG		CXPSDebug::NullLog      
 


From junhliu at helixcommunity.org  Mon Nov  6 09:28:57 2006
From: junhliu at helixcommunity.org (junhliu@helixcommunity.org)
Date: Mon Nov  6 10:35:47 2006
Subject: [Datatype-cvs] mdf/video/format/h264 mdfh264payloadformat.cpp,
	1.1.2.5, 1.1.2.6
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/h264
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv6748

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfh264payloadformat.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: 
	Junhong.Liu@nokia.com
 
Reviewed by: 
 
Date: 11-02-2006. 

Error ID: EOVL-6TCVUL

Project: Helix plugin for Symbian
 
Synopsis: Crash while trying to play specific clip: ftyp 3gp6 mp42 3gp4 isom
 
 
The length of NAL unit can be configured to be of 1, 2, or 4 bytes for AVC file. However, the current implementation always uses 4 bytes, which will give wrong length info if the length size is configured to 1 or 2. 

The solution is to read the length size field from the header and configure the length correctly.
 

Files Modified: 

datatype/mdf/video/format/h264/mdfh264payloadformat.cpp
datatype/mdf/video/format/h264/pub/mdfh264payloadformat.h
datatype/mdf/video/format/mp4/mdfmp4payloadformat.cpp
datatype/mdf/video/format/mp4/pub/mdfmp4payloadformat.h
datatype/mdf/video/format/rm/mdfrvxpayloadformat.cpp
datatype/mdf/video/format/rm/pub/mdfrvxpayloadformat.h
datatype/mdf/video/format/common/mdfpayloadformat.cpp
datatype/mdf/video/format/common/pub/mdfpayloadformat.h

 
Files Added: None. 
 
Image Size and Heap Use impact: None. 
 
Platforms and Profiles Build Verified: helix-client-s60-mmf-mdf-arm
 
Platforms and Profiles Functionality verified: armv5, winscw
 
Branch: HXCLIENT_2_1_0_CAYENNES, HEAD


Index: mdfh264payloadformat.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/h264/mdfh264payloadformat.cpp,v
retrieving revision 1.1.2.5
retrieving revision 1.1.2.6
diff -u -d -r1.1.2.5 -r1.1.2.6
--- mdfh264payloadformat.cpp	25 Sep 2006 21:31:41 -0000	1.1.2.5
+++ mdfh264payloadformat.cpp	6 Nov 2006 17:28:55 -0000	1.1.2.6
@@ -55,9 +55,10 @@
 #define DEFAUL_H264_PREROLL_IN_MS               3500
 #define KUidH264PayloadFormatPluginDeviceDefine 0x1020747B
 const TUid KUidH264PayloadFormatPluginDevice =  {KUidH264PayloadFormatPluginDeviceDefine};
-
+
 const UINT8 start_code[] = {0x00,0x00,0x01};
 const UINT16 SPSCOUNT_OFFSET = 5;
+const UINT16 LengthSizeMinusOne_OFFSET = 4;
 
 CH264PayloadFormatPluginDevice* CH264PayloadFormatPluginDevice::NewL()
 {
@@ -74,7 +75,7 @@
     HX_RELEASE( m_pH264Depacketizer );
     HX_RELEASE( m_pInputAllocator );
     MDFVIDEOLOG_LEAVEFN( "~CH264PayloadFormatPluginDevice" );
-    MDFVIDEOLOG_DELETE;
+    MDFVIDEOLOG_DELETE;
 }
 
 HX_RESULT CH264PayloadFormatPluginDevice::Init( IUnknown *pContext, IHXValues* pHeader )
@@ -101,21 +102,21 @@
 
     IHXBuffer* pMimeType = NULL;
     const char* pMimeTypeData = NULL;
-    
+
     HX_ASSERT( m_pHeader );
     retVal = m_pHeader->GetPropertyCString( "MimeType", pMimeType );
-    
+
     if( SUCCEEDED( retVal ) )
     {
         pMimeTypeData = (char*) pMimeType->GetBuffer();
-        
+
         retVal = HXR_FAIL;
         if (pMimeTypeData)
         {
             retVal = HXR_OK;
         }
     }
-    
+
     if( SUCCEEDED(retVal) )
     {
         if( strcasecmp(pMimeTypeData, MP4V_HX_AVC1_PAYLOAD_MIME_TYPE) == 0 )
@@ -133,7 +134,7 @@
             retVal = HXR_NOTIMPL;
         }
     }
-    
+
     HX_RELEASE(pMimeType);
 
     aPayloadFormatObject = NULL;
@@ -173,21 +174,23 @@
         m_LastError = m_pDepacketizer->SetPacket( pCodecData );
         if( FAILED( m_LastError ) )
         {
-            MDFVIDEOLOG_LEAVEFN4( "CreateAssembledPacket" );
+            MDFVIDEOLOG_LEAVEFN4( "CreateAssembledPacket" );
             return NULL;
         }
     }
-
+
     m_pH264Depacketizer->CreateHXCodecPacket( pCodecPacketRaw ); //customized method
     pCodecPacket = (HXCODEC_DATA*) pCodecPacketRaw;
 
     if( pCodecPacket )
     {
+        UINT32 length = CalculateDataLength(pCodecPacket);
+
         pFramePacket = new CMediaPacket(
                     pCodecPacket,
                     (UINT8*) pCodecPacket,
-                    pCodecPacket->dataLength,
-                    pCodecPacket->dataLength,
+                    length,
+                    length,
                     pCodecPacket->timestamp,
                     pCodecPacket->flags, //0,
                     NULL);
@@ -210,52 +213,39 @@
 HX_RESULT CH264PayloadFormatPluginDevice::FillBuffer( TPtr8& inputBuffer, const CMediaPacket* pMediaPacket ) const
 {
     MDFVIDEOLOG_ENTERFN4( "FillBuffer" );
-    
+
     HX_RESULT retVal = HXR_FAIL;
     // From AU format to bytestream format
-     
+
     HXCODEC_DATA* pCodecPacket = (HXCODEC_DATA*) pMediaPacket->m_pData;
-    
-    UINT32 ulTotalLen = 0;
+
     UINT32 i = 0;
     UINT32 ulNALLength = 0;
     UINT32 ulBytes = 0;
 
+    UINT32 length = CalculateDataLength(pCodecPacket);
+
     UINT8* temp = (UINT8*) pCodecPacket->data;
 
-    MDFVIDEOLOG_WRITE_FORMAT4( "    FillBuffer, datelength is = %u", pCodecPacket->dataLength);
-    
-    for( i = 0; i < pCodecPacket->dataLength; )
-    {
-        ulNALLength = 0;
-        for (ulBytes = 0; ulBytes < 4; ulBytes++)
-        {
-            ulNALLength = ulNALLength << 8;
-            ulNALLength = ulNALLength | temp[i + ulBytes];
-        }
-        
-        ulTotalLen += ulNALLength + sizeof(start_code);
-        i += ulNALLength + 4;
-    }
-    MDFVIDEOLOG_WRITE_FORMAT4( "    FillBuffer, totalLength is = %u", ulTotalLen);
+    MDFVIDEOLOG_WRITE_FORMAT4( "    FillBuffer, totalLength is = %u", length);
 
-    if( inputBuffer.MaxLength() >= ulTotalLen )
+    if( inputBuffer.MaxLength() >= length )
     {
         for( i = 0; i < pCodecPacket->dataLength; )
         {
             ulNALLength = 0;
-            for (ulBytes = 0; ulBytes < 4; ulBytes++)
+            for (ulBytes = 0; ulBytes < m_uNalUnitLenInByte; ulBytes++)
             {
                 ulNALLength = ulNALLength << 8;
                 ulNALLength = ulNALLength | temp[i + ulBytes];
             }
 
             inputBuffer.Append( start_code, sizeof( start_code ) );
-            inputBuffer.Append( &temp[i + 4], ulNALLength );
-            
-            i += ulNALLength + 4;
+            inputBuffer.Append( &temp[i + m_uNalUnitLenInByte], ulNALLength );
+
+            i += ulNALLength + m_uNalUnitLenInByte;
         }
-        
+
         retVal = HXR_OK;
     }
 
@@ -263,6 +253,31 @@
     return retVal;
 }
 
+UINT32 CH264PayloadFormatPluginDevice::CalculateDataLength(const HXCODEC_DATA* pCodecPacket) const
+{
+    UINT32 i = 0;
+    UINT32 ulNALLength = 0;
+    UINT32 ulTotalLen = 0;
+    UINT32 ulBytes = 0;
+
+    UINT8* temp = (UINT8*) pCodecPacket->data;
+
+    for( i = 0; i < pCodecPacket->dataLength; )
+    {
+        ulNALLength = 0;
+        for (ulBytes = 0; ulBytes < m_uNalUnitLenInByte; ulBytes++)
+        {
+            ulNALLength = ulNALLength << 8;
+            ulNALLength = ulNALLength | temp[i + ulBytes];
+        }
+
+        ulTotalLen += ulNALLength + sizeof(start_code);
+        i += ulNALLength + m_uNalUnitLenInByte;
+    }
+
+	return ulTotalLen;
+}
+
 void CH264PayloadFormatPluginDevice::Reset( UINT32 ulBeginTime )
 {
     MDFVIDEOLOG_ENTERFN( "Reset" );
@@ -325,24 +340,36 @@
     MDFVIDEOLOG_LEAVEFN( "SetVideoDataUnit" );
 }
 
-HXBOOL CH264PayloadFormatPluginDevice::FormPictureHeader( TVideoPictureHeader& pPictureHeader ) const
+HXBOOL CH264PayloadFormatPluginDevice::FormPictureHeader( TVideoPictureHeader& pPictureHeader )
 {
     MDFVIDEOLOG_ENTERFN( "FormPictureHeader" );
-    
+
     HXBOOL retVal = FALSE;
     HX_DELETE( pPictureHeader.iOptional );
 
+    UINT16 totalLen = 0;
+    UINT16 spsLen = 0;
+    UINT16 ppsLen = 0;
+    UINT16 offset = 0;
+
+    UINT8 uCountSPS = 0;
+    UINT8 uCountPPS = 0;
+
+
     if( m_pH264Depacketizer )
     {
         //ptr to the bitstreamheader
         const TUint8* pBitstreamHeader = (const TUint8*) m_pH264Depacketizer->GetBitstreamHeader();
         TInt length = (TInt) m_pH264Depacketizer->GetBitstreamHeaderSize();
 
-        UINT16 totalLen = 0;        
-        UINT16 spsLen = 0;
-        UINT16 offset = SPSCOUNT_OFFSET;
-        
-        UINT8 uCountSPS = pBitstreamHeader[offset++] & 0x1F;
+        offset = LengthSizeMinusOne_OFFSET;
+
+        m_uNalUnitLenInByte = pBitstreamHeader[offset] & 0x03;
+        m_uNalUnitLenInByte += 1;
+
+        offset = SPSCOUNT_OFFSET;
+
+        uCountSPS = pBitstreamHeader[offset++] & 0x1F;
 
         MDFVIDEOLOG_WRITE_FORMAT4( "<-> count of SPS is = %u", uCountSPS);
 
@@ -350,16 +377,17 @@
         {
             spsLen = pBitstreamHeader[offset++] << 8;
             spsLen |= pBitstreamHeader[offset++];
-
-            totalLen += spsLen + sizeof(start_code);
+
+            totalLen += spsLen + sizeof(start_code);
 
             offset += spsLen;
             uCountSPS--;
         }
 
-        UINT8 uCountPPS = pBitstreamHeader[offset++] & 0x1F;
+        uCountPPS = pBitstreamHeader[offset++] & 0x1F;
         MDFVIDEOLOG_WRITE_FORMAT4( "<-> count of PPS is = %u", uCountPPS);
-        UINT16 ppsLen = 0;
+
+        ppsLen = 0;
 
         while( uCountPPS )
         {
@@ -388,29 +416,31 @@
             {
                 spsLen = pBitstreamHeader[offset++] << 8;
                 spsLen |= pBitstreamHeader[offset++];
-
-                tptr8.Append( start_code, sizeof(start_code) );
-                tptr8.Append( &pBitstreamHeader[offset], spsLen );
+
+                tptr8.Append( start_code, sizeof(start_code) );
+                tptr8.Append( &pBitstreamHeader[offset], spsLen );
                 offset += spsLen;
 
                 uCountSPS--;
             }
-
-            UINT8 uCountPPS = pBitstreamHeader[offset++] & 0x1F;
+
+            uCountPPS = pBitstreamHeader[offset++] & 0x1F;
             MDFVIDEOLOG_WRITE_FORMAT4( "<-> count of PPS is = %u", uCountPPS);
+
+            ppsLen = 0;
+
             while( uCountPPS )
             {
-                UINT16 ppsLen = 0;
                 ppsLen = pBitstreamHeader[offset++] << 8;
                 ppsLen |= pBitstreamHeader[offset++];
 
-                tptr8.Append( start_code, sizeof(start_code) );
-                tptr8.Append( &pBitstreamHeader[offset], ppsLen );
+                tptr8.Append( start_code, sizeof(start_code) );
+                tptr8.Append( &pBitstreamHeader[offset], ppsLen );
                 offset += ppsLen;
 
                 uCountPPS--;
         }
-
+
         MDFVIDEOLOG_WRITE_FORMAT4( "<-> stream header total length is = %u", totalLen);
         pPictureHeader.iOptional = pStreamHeader;
         retVal = TRUE;
@@ -449,7 +479,7 @@
 }
 
 void CH264PayloadFormatPluginDevice::KillInputBuffer( void* pBuffer, void* pUserData )
-{
+{
     if( pBuffer )
     {
         HXCODEC_DATA* pDeadData = (HXCODEC_DATA*) pBuffer;
@@ -463,7 +493,7 @@
         }
 
         delete [] ((ULONG32*) pDeadData);
-    }
+    }
 }
 
 const TImplementationProxy ImplementationTable[] =


From junhliu at helixcommunity.org  Mon Nov  6 09:31:55 2006
From: junhliu at helixcommunity.org (junhliu@helixcommunity.org)
Date: Mon Nov  6 10:38:44 2006
Subject: [Datatype-cvs] mdf/video/format/h264/pub mdfh264payloadformat.h,
	1.1.2.4, 1.1.2.5
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/h264/pub
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv6966

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfh264payloadformat.h 
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: 
	Junhong.Liu@nokia.com
 
Reviewed by: 
 
Date: 11-02-2006. 

Error ID: EOVL-6TCVUL

Project: Helix plugin for Symbian
 
Synopsis: Crash while trying to play specific clip: ftyp 3gp6 mp42 3gp4 isom
 
 
The length of NAL unit can be configured to be of 1, 2, or 4 bytes for AVC file. However, the current implementation 
always uses 4 bytes, which will give wrong length info if the length size is configured to 1 or 2. 

The solution is to read the length size field from the header and configure the length correctly.
 

Files Modified: 

datatype/mdf/video/format/h264/mdfh264payloadformat.cpp
datatype/mdf/video/format/h264/pub/mdfh264payloadformat.h
datatype/mdf/video/format/mp4/mdfmp4payloadformat.cpp
datatype/mdf/video/format/mp4/pub/mdfmp4payloadformat.h
datatype/mdf/video/format/rm/mdfrvxpayloadformat.cpp
datatype/mdf/video/format/rm/pub/mdfrvxpayloadformat.h
datatype/mdf/video/format/common/mdfpayloadformat.cpp
datatype/mdf/video/format/common/pub/mdfpayloadformat.h

 
Files Added: None. 
 
Image Size and Heap Use impact: None. 
 
Platforms and Profiles Build Verified: helix-client-s60-mmf-mdf-arm
 
Platforms and Profiles Functionality verified: armv5, winscw
 
Branch: HXCLIENT_2_1_0_CAYENNES, HEAD


Index: mdfh264payloadformat.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/h264/pub/mdfh264payloadformat.h,v
retrieving revision 1.1.2.4
retrieving revision 1.1.2.5
diff -u -d -r1.1.2.4 -r1.1.2.5
--- mdfh264payloadformat.h	25 Sep 2006 21:31:41 -0000	1.1.2.4
+++ mdfh264payloadformat.h	6 Nov 2006 17:31:53 -0000	1.1.2.5
@@ -77,9 +77,10 @@
     virtual void          SetVideoMimetypes( CPayloadFormatInfo& aPayloadFormatInfo ) const;
     virtual void          SetVideoDataUnit();
 
-    virtual HXBOOL        FormPictureHeader( TVideoPictureHeader& pPictureHeader ) const;
+    virtual HXBOOL        FormPictureHeader( TVideoPictureHeader& pPictureHeader );
     HX_RESULT             CreateAllocators();
     static void           KillInputBuffer( void* pBuffer, void* pUserData );
+    UINT32 CalculateDataLength(const HXCODEC_DATA* pCodecPacket) const;
 
 private:
     CHXBufferMemoryAllocator* m_pInputAllocator;
@@ -89,6 +90,7 @@
     //or customized methods which are specific to H264.
     //Without m_pH264Depacketizer, m_pDepacketizer needs to be up-casted.
     IMP4VPayloadFormat*        m_pH264Depacketizer;
+    UINT8                      m_uNalUnitLenInByte;
 
     MDFVIDEOLOG_DEFINE;
 };


From junhliu at helixcommunity.org  Mon Nov  6 09:32:24 2006
From: junhliu at helixcommunity.org (junhliu@helixcommunity.org)
Date: Mon Nov  6 10:39:13 2006
Subject: [Datatype-cvs] 
	mdf/video/format/mp4 mdfmp4payloadformat.cpp, 1.2.2.8, 1.2.2.9
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/mp4
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv6989

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfmp4payloadformat.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: 
	Junhong.Liu@nokia.com
 
Reviewed by: 
 
Date: 11-02-2006. 

Error ID: EOVL-6TCVUL

Project: Helix plugin for Symbian
 
Synopsis: Crash while trying to play specific clip: ftyp 3gp6 mp42 3gp4 isom
 
 
The length of NAL unit can be configured to be of 1, 2, or 4 bytes for AVC file. However, the current implementation 
always uses 4 bytes, which will give wrong length info if the length size is configured to 1 or 2. 

The solution is to read the length size field from the header and configure the length correctly.
 

Files Modified: 

datatype/mdf/video/format/h264/mdfh264payloadformat.cpp
datatype/mdf/video/format/h264/pub/mdfh264payloadformat.h
datatype/mdf/video/format/mp4/mdfmp4payloadformat.cpp
datatype/mdf/video/format/mp4/pub/mdfmp4payloadformat.h
datatype/mdf/video/format/rm/mdfrvxpayloadformat.cpp
datatype/mdf/video/format/rm/pub/mdfrvxpayloadformat.h
datatype/mdf/video/format/common/mdfpayloadformat.cpp
datatype/mdf/video/format/common/pub/mdfpayloadformat.h

 
Files Added: None. 
 
Image Size and Heap Use impact: None. 
 
Platforms and Profiles Build Verified: helix-client-s60-mmf-mdf-arm
 
Platforms and Profiles Functionality verified: armv5, winscw
 
Branch: HXCLIENT_2_1_0_CAYENNES, HEAD


Index: mdfmp4payloadformat.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/mp4/mdfmp4payloadformat.cpp,v
retrieving revision 1.2.2.8
retrieving revision 1.2.2.9
diff -u -d -r1.2.2.8 -r1.2.2.9
--- mdfmp4payloadformat.cpp	25 Sep 2006 21:31:42 -0000	1.2.2.8
+++ mdfmp4payloadformat.cpp	6 Nov 2006 17:32:22 -0000	1.2.2.9
@@ -277,7 +277,7 @@
     MDFVIDEOLOG_LEAVEFN( "SetVideoDataUnit" );
 }
 
-HXBOOL CMP4PayloadFormatPluginDevice::FormPictureHeader( TVideoPictureHeader& pPictureHeader ) const
+HXBOOL CMP4PayloadFormatPluginDevice::FormPictureHeader( TVideoPictureHeader& pPictureHeader )
 {
     MDFVIDEOLOG_ENTERFN( "FormPictureHeader" );
     


From junhliu at helixcommunity.org  Mon Nov  6 09:32:42 2006
From: junhliu at helixcommunity.org (junhliu@helixcommunity.org)
Date: Mon Nov  6 10:39:32 2006
Subject: [Datatype-cvs] mdf/video/format/mp4/pub mdfmp4payloadformat.h,
	1.2.2.5, 1.2.2.6
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/mp4/pub
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv7010

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfmp4payloadformat.h 
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: 
	Junhong.Liu@nokia.com
 
Reviewed by: 
 
Date: 11-02-2006. 

Error ID: EOVL-6TCVUL

Project: Helix plugin for Symbian
 
Synopsis: Crash while trying to play specific clip: ftyp 3gp6 mp42 3gp4 isom
 
 
The length of NAL unit can be configured to be of 1, 2, or 4 bytes for AVC file. However, the current implementation 
always uses 4 bytes, which will give wrong length info if the length size is configured to 1 or 2. 

The solution is to read the length size field from the header and configure the length correctly.
 

Files Modified: 

datatype/mdf/video/format/h264/mdfh264payloadformat.cpp
datatype/mdf/video/format/h264/pub/mdfh264payloadformat.h
datatype/mdf/video/format/mp4/mdfmp4payloadformat.cpp
datatype/mdf/video/format/mp4/pub/mdfmp4payloadformat.h
datatype/mdf/video/format/rm/mdfrvxpayloadformat.cpp
datatype/mdf/video/format/rm/pub/mdfrvxpayloadformat.h
datatype/mdf/video/format/common/mdfpayloadformat.cpp
datatype/mdf/video/format/common/pub/mdfpayloadformat.h

 
Files Added: None. 
 
Image Size and Heap Use impact: None. 
 
Platforms and Profiles Build Verified: helix-client-s60-mmf-mdf-arm
 
Platforms and Profiles Functionality verified: armv5, winscw
 
Branch: HXCLIENT_2_1_0_CAYENNES, HEAD


Index: mdfmp4payloadformat.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/mp4/pub/mdfmp4payloadformat.h,v
retrieving revision 1.2.2.5
retrieving revision 1.2.2.6
diff -u -d -r1.2.2.5 -r1.2.2.6
--- mdfmp4payloadformat.h	25 Sep 2006 21:31:42 -0000	1.2.2.5
+++ mdfmp4payloadformat.h	6 Nov 2006 17:32:40 -0000	1.2.2.6
@@ -76,10 +76,10 @@
     virtual void          SetVideoMimetypes( CPayloadFormatInfo& aPayloadFormatInfo ) const;
     virtual void          SetVideoDataUnit();
 
-    virtual HXBOOL        FormPictureHeader( TVideoPictureHeader& pPictureHeader ) const;
+    virtual HXBOOL        FormPictureHeader( TVideoPictureHeader& pPictureHeader );
     HX_RESULT             CreateAllocators();
     static void           KillInputBuffer( void* pBuffer, void* pUserData );
-
+
 private:
     CHXBufferMemoryAllocator* m_pInputAllocator;
     //m_pMP4Depacketizer is a reference pointer of m_pDepacketizer


From junhliu at helixcommunity.org  Mon Nov  6 09:34:01 2006
From: junhliu at helixcommunity.org (junhliu@helixcommunity.org)
Date: Mon Nov  6 10:40:50 2006
Subject: [Datatype-cvs] 
	mdf/video/format/rm mdfrvxpayloadformat.cpp, 1.1.2.6, 1.1.2.7
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/rm
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv7130

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfrvxpayloadformat.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: 
	Junhong.Liu@nokia.com
 
Reviewed by: 
 
Date: 11-02-2006. 

Error ID: EOVL-6TCVUL

Project: Helix plugin for Symbian
 
Synopsis: Crash while trying to play specific clip: ftyp 3gp6 mp42 3gp4 isom
 
 
The length of NAL unit can be configured to be of 1, 2, or 4 bytes for AVC file. However, the current implementation 
always uses 4 bytes, which will give wrong length info if the length size is configured to 1 or 2. 

The solution is to read the length size field from the header and configure the length correctly.
 

Files Modified: 

datatype/mdf/video/format/h264/mdfh264payloadformat.cpp
datatype/mdf/video/format/h264/pub/mdfh264payloadformat.h
datatype/mdf/video/format/mp4/mdfmp4payloadformat.cpp
datatype/mdf/video/format/mp4/pub/mdfmp4payloadformat.h
datatype/mdf/video/format/rm/mdfrvxpayloadformat.cpp
datatype/mdf/video/format/rm/pub/mdfrvxpayloadformat.h
datatype/mdf/video/format/common/mdfpayloadformat.cpp
datatype/mdf/video/format/common/pub/mdfpayloadformat.h

 
Files Added: None. 
 
Image Size and Heap Use impact: None. 
 
Platforms and Profiles Build Verified: helix-client-s60-mmf-mdf-arm
 
Platforms and Profiles Functionality verified: armv5, winscw
 
Branch: HXCLIENT_2_1_0_CAYENNES, HEAD


Index: mdfrvxpayloadformat.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/rm/mdfrvxpayloadformat.cpp,v
retrieving revision 1.1.2.6
retrieving revision 1.1.2.7
diff -u -d -r1.1.2.6 -r1.1.2.7
--- mdfrvxpayloadformat.cpp	25 Sep 2006 21:31:42 -0000	1.1.2.6
+++ mdfrvxpayloadformat.cpp	6 Nov 2006 17:33:59 -0000	1.1.2.7
@@ -66,11 +66,11 @@
 
 CRVXPayloadFormatPluginDevice::~CRVXPayloadFormatPluginDevice()
 {
-    MDFVIDEOLOG_ENTERFN( "~CRVXPayloadFormatPluginDevice" );
+    MDFVIDEOLOG_ENTERFN( "~CRVXPayloadFormatPluginDevice" );
     HX_RELEASE( m_pRvxDepacketizer );
     HX_RELEASE(m_pInputAllocator);
     MDFVIDEOLOG_LEAVEFN( "~CRVXPayloadFormatPluginDevice" );
-    MDFVIDEOLOG_DELETE;
+    MDFVIDEOLOG_DELETE;
 }
 
 HX_RESULT CRVXPayloadFormatPluginDevice::Init( IUnknown *pContext, IHXValues* pHeader )
@@ -105,7 +105,7 @@
         {
             retVal = HXR_OK;
             aPayloadFormatObject->AddRef();
-            m_pRvxDepacketizer->AddRef();
+            m_pRvxDepacketizer->AddRef();
         }
         else
         {
@@ -173,11 +173,11 @@
     MDFVIDEOLOG_LEAVEFN( "GetPreRollInMs" );
     return DEFAUL_RVX_PREROLL_IN_MS;
 }
-
+
 HX_RESULT CRVXPayloadFormatPluginDevice::FillBuffer( TPtr8& inputBuffer, const CMediaPacket* pMediaPacket ) const
 {
-    MDFVIDEOLOG_ENTERFN4( "FillBuffer" );
-    
+    MDFVIDEOLOG_ENTERFN4( "FillBuffer" );
+    
     HX_RESULT retVal = HXR_FAIL;
     
     if( pMediaPacket )
@@ -217,17 +217,17 @@
         inputBuffer.SetLength( length );
         
         retVal = HXR_OK;
-    }
-
-    MDFVIDEOLOG_RETURNFN4( "FillBuffer", retVal );
+    }
+
+    MDFVIDEOLOG_RETURNFN4( "FillBuffer", retVal );
     return retVal;
 }
 
 CRVXPayloadFormatPluginDevice::CRVXPayloadFormatPluginDevice()
 : m_pInputAllocator( NULL )
 {
-    MDFVIDEOLOG_CREATE_NOWRITE;
-    MDFVIDEOLOG_CLASSNAME( "CRVXPayloadFormatPluginDevice" );
+    MDFVIDEOLOG_CREATE_NOWRITE;
+    MDFVIDEOLOG_CLASSNAME( "CRVXPayloadFormatPluginDevice" );
     MDFVIDEOLOG_ENTERFN( "CRVXPayloadFormatPluginDevice" );
     MDFVIDEOLOG_LEAVEFN( "CRVXPayloadFormatPluginDevice" );
 }
@@ -259,17 +259,17 @@
 
 void CRVXPayloadFormatPluginDevice::SetVideoDataUnit()
 {
-    MDFVIDEOLOG_ENTERFN( "SetVideoDataUnit" );
+    MDFVIDEOLOG_ENTERFN( "SetVideoDataUnit" );
     m_VideoDataUnitType          = EDuVideoSegment;
     m_VideoDataUnitEncapsulation = EDuGenericPayload;
-    MDFVIDEOLOG_LEAVEFN( "SetVideoDataUnit" );
+    MDFVIDEOLOG_LEAVEFN( "SetVideoDataUnit" );
 }
 
-HXBOOL CRVXPayloadFormatPluginDevice::FormPictureHeader( TVideoPictureHeader& pPictureHeader ) const
+HXBOOL CRVXPayloadFormatPluginDevice::FormPictureHeader( TVideoPictureHeader& pPictureHeader )
 {
-    MDFVIDEOLOG_ENTERFN( "FormPictureHeader" );
+    MDFVIDEOLOG_ENTERFN( "FormPictureHeader" );
     HXBOOL retVal = FALSE;
-    HX_DELETE( pPictureHeader.iOptional );
+    HX_DELETE( pPictureHeader.iOptional );
     
     if( m_pDepacketizer )
     {
@@ -289,7 +289,7 @@
             
             TInt length = trvHeaderSize + opaqueDataLen;
             
-            HBufC8* pStreamHeader = NULL;
+            HBufC8* pStreamHeader = NULL;
             TRAPD( error, pStreamHeader = HBufC8::NewL( length ) );
             if( error == KErrNone )
             {
@@ -314,20 +314,20 @@
                 TUint8* formatLoc = (TUint8*) videoFormat;
                 memcpy( headerString + trvHeaderSize, formatLoc + videoFormatSize, opaqueDataLen );
                 tptr8.SetLength( length );
-
-                pPictureHeader.iOptional = pStreamHeader;
-                retVal = TRUE;
+
+                pPictureHeader.iOptional = pStreamHeader;
+                retVal = TRUE;
             }
         }
     }
-    MDFVIDEOLOG_RETURNFN( "FormPictureHeader", retVal );
+    MDFVIDEOLOG_RETURNFN( "FormPictureHeader", retVal );
     return retVal;
 }
 
 HX_RESULT CRVXPayloadFormatPluginDevice::CreateAllocators()
 {
     MDFVIDEOLOG_ENTERFN( "CreateAllocators" );
-    
+    
     HX_RESULT retVal = HXR_OK;
     HX20ALLOCPROPS allocRequest, allocActual;
     
@@ -351,7 +351,7 @@
             retVal = HXR_OUTOFMEMORY;
         }
     }
-    
+    
     MDFVIDEOLOG_RETURNFN( "CreateAllocators", retVal );
     return retVal;
 }
@@ -359,15 +359,15 @@
 
 HX_RESULT CRVXPayloadFormatPluginDevice::InitializeDepacketizer()
 {
-    MDFVIDEOLOG_ENTERFN( "InitializeDepacketizer" );
-    
+    MDFVIDEOLOG_ENTERFN( "InitializeDepacketizer" );
+    
     HX_RESULT retVal = HXR_OK;
     
     HX_ASSERT( m_pContext );
     
     retVal = m_pDepacketizer->Init( m_pContext, FALSE );
-    
-    MDFVIDEOLOG_RETURNFN( "InitializeDepacketizer", retVal );
+    
+    MDFVIDEOLOG_RETURNFN( "InitializeDepacketizer", retVal );
     return retVal;
 }
 


From junhliu at helixcommunity.org  Mon Nov  6 09:34:20 2006
From: junhliu at helixcommunity.org (junhliu@helixcommunity.org)
Date: Mon Nov  6 10:41:09 2006
Subject: [Datatype-cvs] mdf/video/format/rm/pub mdfrvxpayloadformat.h,
	1.1.2.4, 1.1.2.5
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/rm/pub
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv7174

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfrvxpayloadformat.h 
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: 
	Junhong.Liu@nokia.com
 
Reviewed by: 
 
Date: 11-02-2006. 

Error ID: EOVL-6TCVUL

Project: Helix plugin for Symbian
 
Synopsis: Crash while trying to play specific clip: ftyp 3gp6 mp42 3gp4 isom
 
 
The length of NAL unit can be configured to be of 1, 2, or 4 bytes for AVC file. However, the current implementation 
always uses 4 bytes, which will give wrong length info if the length size is configured to 1 or 2. 

The solution is to read the length size field from the header and configure the length correctly.
 

Files Modified: 

datatype/mdf/video/format/h264/mdfh264payloadformat.cpp
datatype/mdf/video/format/h264/pub/mdfh264payloadformat.h
datatype/mdf/video/format/mp4/mdfmp4payloadformat.cpp
datatype/mdf/video/format/mp4/pub/mdfmp4payloadformat.h
datatype/mdf/video/format/rm/mdfrvxpayloadformat.cpp
datatype/mdf/video/format/rm/pub/mdfrvxpayloadformat.h
datatype/mdf/video/format/common/mdfpayloadformat.cpp
datatype/mdf/video/format/common/pub/mdfpayloadformat.h

 
Files Added: None. 
 
Image Size and Heap Use impact: None. 
 
Platforms and Profiles Build Verified: helix-client-s60-mmf-mdf-arm
 
Platforms and Profiles Functionality verified: armv5, winscw
 
Branch: HXCLIENT_2_1_0_CAYENNES, HEAD


Index: mdfrvxpayloadformat.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/rm/pub/mdfrvxpayloadformat.h,v
retrieving revision 1.1.2.4
retrieving revision 1.1.2.5
diff -u -d -r1.1.2.4 -r1.1.2.5
--- mdfrvxpayloadformat.h	25 Sep 2006 21:31:42 -0000	1.1.2.4
+++ mdfrvxpayloadformat.h	6 Nov 2006 17:34:18 -0000	1.1.2.5
@@ -76,11 +76,11 @@
     virtual void          SetVideoMimetypes( CPayloadFormatInfo& aPayloadFormatInfo ) const;
     virtual void          SetVideoDataUnit();
 
-    virtual HXBOOL        FormPictureHeader( TVideoPictureHeader& pPictureHeader ) const;
+    virtual HXBOOL        FormPictureHeader( TVideoPictureHeader& pPictureHeader );
     HX_RESULT             CreateAllocators();
     virtual HX_RESULT     InitializeDepacketizer();
     static void           KillInputBuffer( void* pBuffer, void* pUserData );
-
+
 private:
     CHXMemoryAllocator*   m_pInputAllocator;
     RVXPayloadFormat*     m_pRvxDepacketizer;


From junhliu at helixcommunity.org  Mon Nov  6 09:34:55 2006
From: junhliu at helixcommunity.org (junhliu@helixcommunity.org)
Date: Mon Nov  6 10:41:45 2006
Subject: [Datatype-cvs] 
	mdf/video/format/common mdfpayloadformat.cpp, 1.2.2.6, 1.2.2.7
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/common
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv7250

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfpayloadformat.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: 
	Junhong.Liu@nokia.com
 
Reviewed by: 
 
Date: 11-02-2006. 

Error ID: EOVL-6TCVUL

Project: Helix plugin for Symbian
 
Synopsis: Crash while trying to play specific clip: ftyp 3gp6 mp42 3gp4 isom
 
 
The length of NAL unit can be configured to be of 1, 2, or 4 bytes for AVC file. However, the current implementation 
always uses 4 bytes, which will give wrong length info if the length size is configured to 1 or 2. 

The solution is to read the length size field from the header and configure the length correctly.
 

Files Modified: 

datatype/mdf/video/format/h264/mdfh264payloadformat.cpp
datatype/mdf/video/format/h264/pub/mdfh264payloadformat.h
datatype/mdf/video/format/mp4/mdfmp4payloadformat.cpp
datatype/mdf/video/format/mp4/pub/mdfmp4payloadformat.h
datatype/mdf/video/format/rm/mdfrvxpayloadformat.cpp
datatype/mdf/video/format/rm/pub/mdfrvxpayloadformat.h
datatype/mdf/video/format/common/mdfpayloadformat.cpp
datatype/mdf/video/format/common/pub/mdfpayloadformat.h

 
Files Added: None. 
 
Image Size and Heap Use impact: None. 
 
Platforms and Profiles Build Verified: helix-client-s60-mmf-mdf-arm
 
Platforms and Profiles Functionality verified: armv5, winscw
 
Branch: HXCLIENT_2_1_0_CAYENNES, HEAD


Index: mdfpayloadformat.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/common/mdfpayloadformat.cpp,v
retrieving revision 1.2.2.6
retrieving revision 1.2.2.7
diff -u -d -r1.2.2.6 -r1.2.2.7
--- mdfpayloadformat.cpp	25 Sep 2006 21:31:40 -0000	1.2.2.6
+++ mdfpayloadformat.cpp	6 Nov 2006 17:34:53 -0000	1.2.2.7
@@ -263,8 +263,8 @@
     }
 
     if( SUCCEEDED( retVal ) )
-    {
-        m_bPictureHeaderValid = FormPictureHeader( m_pPictureHeader );
+    {
+        m_bPictureHeaderValid = FormPictureHeader( m_pPictureHeader );
     }
     
     MDFVIDEOLOG_RETURNFN( "Init", retVal );
@@ -275,16 +275,16 @@
 {
     //only PluginDevice knows how to fill the buffer properly
     //generic method
-    MDFVIDEOLOG_ENTERFN4( "FillBuffer" );
+    MDFVIDEOLOG_ENTERFN4( "FillBuffer" );
     HX_RESULT retVal = HXR_FAIL;
     if( inputBuffer.MaxLength() >= (TInt) ( pMediaPacket->m_ulDataSize + inputBuffer.Length() ) )
-    {
+    {
         //inputBuffer might already have header inside
         inputBuffer.Append( pMediaPacket->m_pData, pMediaPacket->m_ulDataSize );
         retVal = HXR_OK;
-    }
+    }
     
-    MDFVIDEOLOG_RETURNFN4( "FillBuffer", retVal );
+    MDFVIDEOLOG_RETURNFN4( "FillBuffer", retVal );
     return retVal;
 }
 
@@ -328,17 +328,17 @@
 }
 
 const TVideoPictureHeader* CPayloadFormatPluginDevice::GetPictureHeader() const 
-{ 
+{ 
     MDFVIDEOLOG_ENTERFN( "GetPictureHeader" );
-    if( m_bPictureHeaderValid )
+    if( m_bPictureHeaderValid )
     {
         MDFVIDEOLOG_LEAVEFN( "GetPictureHeader" );
-        return &m_pPictureHeader; 
-    }
-    else
-    {
+        return &m_pPictureHeader; 
+    }
+    else
+    {
         MDFVIDEOLOG_LEAVEFN( "GetPictureHeader" );
-        return NULL;
+        return NULL;
     }
 }
 
@@ -350,8 +350,8 @@
 TVideoDataUnitEncapsulation CPayloadFormatPluginDevice::GetVideoDataUnitEncapsulation() const 
 { 
     return m_VideoDataUnitEncapsulation; 
-}
-
+}
+
 CPayloadFormatPluginDevice::CPayloadFormatPluginDevice()
 : m_pDepacketizer( NULL ),
   m_LastError( HXR_OK ),
@@ -359,25 +359,25 @@
   m_pHeader( NULL ),
   m_bPictureHeaderValid( FALSE ),
   m_VideoDataUnitType( EDuCodedPicture ),
-  m_VideoDataUnitEncapsulation( EDuGenericPayload )
+  m_VideoDataUnitEncapsulation( EDuGenericPayload )
   //m_Dtor_ID_Key
 {
     MDFVIDEOLOG_CREATE_NOWRITE;
-    MDFVIDEOLOG_CLASSNAME( "CPayloadFormatPluginDevice" );
-    MDFVIDEOLOG_ENTERFN( "CPayloadFormatPluginDevice" );
-
-    m_pPictureHeader.iOptions = 0x00;
-    m_pPictureHeader.iProfile = -1;
-    m_pPictureHeader.iLevel = -1;
-    m_pPictureHeader.iVersion = -1;
-    m_pPictureHeader.iOptional = NULL;
-    
+    MDFVIDEOLOG_CLASSNAME( "CPayloadFormatPluginDevice" );
+    MDFVIDEOLOG_ENTERFN( "CPayloadFormatPluginDevice" );
+
+    m_pPictureHeader.iOptions = 0x00;
+    m_pPictureHeader.iProfile = -1;
+    m_pPictureHeader.iLevel = -1;
+    m_pPictureHeader.iVersion = -1;
+    m_pPictureHeader.iOptional = NULL;
+    
     MDFVIDEOLOG_LEAVEFN( "CPayloadFormatPluginDevice" );
 }
 
 HX_RESULT CPayloadFormatPluginDevice::InitializeDepacketizer()
 {
-    MDFVIDEOLOG_ENTERFN( "InitializeDepacketizer" );
+    MDFVIDEOLOG_ENTERFN( "InitializeDepacketizer" );
     HX_RESULT retVal = HXR_OK;
 
     HX_ASSERT( m_pContext );
@@ -389,13 +389,13 @@
     {
         retVal = m_pDepacketizer->Init( pCommonClassFactory, FALSE );
     }
-    HX_RELEASE( pCommonClassFactory );
-    
+    HX_RELEASE( pCommonClassFactory );
+    
     MDFVIDEOLOG_RETURNFN( "InitializeDepacketizer", retVal );
     return retVal;
 }
 
-HXBOOL CPayloadFormatPluginDevice::FormPictureHeader( TVideoPictureHeader& pPictureHeader ) const
+HXBOOL CPayloadFormatPluginDevice::FormPictureHeader( TVideoPictureHeader& pPictureHeader )
 {
     return FALSE;
 }


From junhliu at helixcommunity.org  Mon Nov  6 09:35:14 2006
From: junhliu at helixcommunity.org (junhliu@helixcommunity.org)
Date: Mon Nov  6 10:42:04 2006
Subject: [Datatype-cvs] mdf/video/format/common/pub mdfpayloadformat.h,
	1.2.2.5, 1.2.2.6
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/common/pub
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv7296

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfpayloadformat.h 
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: 
	Junhong.Liu@nokia.com
 
Reviewed by: 
 
Date: 11-02-2006. 

Error ID: EOVL-6TCVUL

Project: Helix plugin for Symbian
 
Synopsis: Crash while trying to play specific clip: ftyp 3gp6 mp42 3gp4 isom
 
 
The length of NAL unit can be configured to be of 1, 2, or 4 bytes for AVC file. However, the current implementation 
always uses 4 bytes, which will give wrong length info if the length size is configured to 1 or 2. 

The solution is to read the length size field from the header and configure the length correctly.
 

Files Modified: 

datatype/mdf/video/format/h264/mdfh264payloadformat.cpp
datatype/mdf/video/format/h264/pub/mdfh264payloadformat.h
datatype/mdf/video/format/mp4/mdfmp4payloadformat.cpp
datatype/mdf/video/format/mp4/pub/mdfmp4payloadformat.h
datatype/mdf/video/format/rm/mdfrvxpayloadformat.cpp
datatype/mdf/video/format/rm/pub/mdfrvxpayloadformat.h
datatype/mdf/video/format/common/mdfpayloadformat.cpp
datatype/mdf/video/format/common/pub/mdfpayloadformat.h

 
Files Added: None. 
 
Image Size and Heap Use impact: None. 
 
Platforms and Profiles Build Verified: helix-client-s60-mmf-mdf-arm
 
Platforms and Profiles Functionality verified: armv5, winscw
 
Branch: HXCLIENT_2_1_0_CAYENNES, HEAD


Index: mdfpayloadformat.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/common/pub/mdfpayloadformat.h,v
retrieving revision 1.2.2.5
retrieving revision 1.2.2.6
diff -u -d -r1.2.2.5 -r1.2.2.6
--- mdfpayloadformat.h	25 Sep 2006 21:31:41 -0000	1.2.2.5
+++ mdfpayloadformat.h	6 Nov 2006 17:35:12 -0000	1.2.2.6
@@ -137,7 +137,7 @@
 protected:
     CPayloadFormatPluginDevice();
     virtual HX_RESULT     InitializeDepacketizer();
-    virtual HXBOOL        FormPictureHeader( TVideoPictureHeader& pPictureHeader ) const;
+    virtual HXBOOL        FormPictureHeader( TVideoPictureHeader& pPictureHeader );
     virtual void          SetVideoMimetypes( CPayloadFormatInfo& aPayloadFormatInfo ) const = 0;
     virtual void          SetVideoDataUnit() = 0;
     


From shy_ward at helixcommunity.org  Mon Nov  6 11:22:51 2006
From: shy_ward at helixcommunity.org (shy_ward@helixcommunity.org)
Date: Mon Nov  6 12:29:40 2006
Subject: [Datatype-cvs] mdf/video/renderer mdfvideoadapter.cpp, 1.3.2.42,
	1.3.2.43
Message-ID: 

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

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	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:
    shy.ward@nokia.com

Reviewed by:


Date: 
    Nov-1-2006

Project: 
    Helix plug-in for Symbian

Error ID: 
    
    

Synopsis: 
    The custom interface header file may not be available for Symbian for sometime. To insure proper compilation for non-32 profiles it has been featured flagged out using:
    HELIX_FEATURE_S60_VIDEO_CUSTOM_INTERFACE. Until such time the file videowindowcontrol.h is available from Symbian this feature should not be used.

Files Modified: 
    datatype/mdf/video/renderer/mdfvideoadapter.cpp
    datatype/mdf/video/renderer/pub/mdfvideoadapter.h
    build/umakepf/helix-client-s60-32-common.pfi

Files Added:
    None

Image Size and Heap Use impact: 
    none

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

Platforms and Profiles Functionality verified: 
    armv5

Branch: 
    head and hxclient_2_1_0_cayennes 


Index: mdfvideoadapter.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/renderer/mdfvideoadapter.cpp,v
retrieving revision 1.3.2.42
retrieving revision 1.3.2.43
diff -u -d -r1.3.2.42 -r1.3.2.43
--- mdfvideoadapter.cpp	3 Nov 2006 21:15:11 -0000	1.3.2.42
+++ mdfvideoadapter.cpp	6 Nov 2006 19:22:49 -0000	1.3.2.43
@@ -1294,6 +1294,7 @@
         }
 
         retVal = HXR_FAIL;
+#if defined(HELIX_FEATURE_S60_VIDEO_CUSTOM_INTERFACE)
         MMdfVideoWindowControl* pVirtualDisplay =
             (MMdfVideoWindowControl *) m_pDevVideoPlay->CustomInterface( m_PostProcessorHwDeviceId, KUidMdfVideoWindowControl );
         MDFVIDEOLOG_INOUTFN2( "CustomInterface(Virtual Display) does not leave" );
@@ -1306,6 +1307,7 @@
                 retVal = HXR_FAIL;
             }
         }
+ #endif
 
         TRAPD(error, m_pDevVideoPlay->StartDirectScreenAccessL(m_clipRect, *m_pFbsScreenDevice, m_ClipRegion));
         if (error == KErrNone)


From shy_ward at helixcommunity.org  Mon Nov  6 11:23:19 2006
From: shy_ward at helixcommunity.org (shy_ward@helixcommunity.org)
Date: Mon Nov  6 12:30:09 2006
Subject: [Datatype-cvs] mdf/video/renderer/pub mdfvideoadapter.h, 1.3.2.17,
	1.3.2.18
Message-ID: 

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

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfvideoadapter.h 
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:
    shy.ward@nokia.com

Reviewed by:


Date: 
    Nov-1-2006

Project: 
    Helix plug-in for Symbian

Error ID: 
    
    

Synopsis: 
    The custom interface header file may not be available for Symbian for sometime. To insure proper compilation for non-32 profiles it has been featured flagged out using:
    HELIX_FEATURE_S60_VIDEO_CUSTOM_INTERFACE. Until such time the file videowindowcontrol.h is available from Symbian this feature should not be used.

Files Modified: 
    datatype/mdf/video/renderer/mdfvideoadapter.cpp
    datatype/mdf/video/renderer/pub/mdfvideoadapter.h
    build/umakepf/helix-client-s60-32-common.pfi

Files Added:
    None

Image Size and Heap Use impact: 
    none

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

Platforms and Profiles Functionality verified: 
    armv5

Branch: 
    head and hxclient_2_1_0_cayennes 


Index: mdfvideoadapter.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/renderer/pub/mdfvideoadapter.h,v
retrieving revision 1.3.2.17
retrieving revision 1.3.2.18
diff -u -d -r1.3.2.17 -r1.3.2.18
--- mdfvideoadapter.h	3 Nov 2006 20:20:56 -0000	1.3.2.17
+++ mdfvideoadapter.h	6 Nov 2006 19:23:16 -0000	1.3.2.18
@@ -1,7 +1,7 @@
 /* ***** BEGIN LICENSE BLOCK *****
- * 
+ *
  * Portions Copyright (c) 2005 RealNetworks, Inc. All Rights Reserved.
- * 
+ *
  * Version: $Id$
  * The contents of this file, and the files included with this file,
  * are subject to the current version of the RealNetworks Public
@@ -16,7 +16,7 @@
  * to this file, the RCSL.  Please see the applicable RPSL or RCSL for
  * the rights, obligations and limitations governing use of the
  * contents of the file.
- * 
+ *
  * Alternatively, the contents of this file may be used under the
  * terms of the GNU General Public License Version 2 or later (the
  * "GPL") in which case the provisions of the GPL are applicable
@@ -28,33 +28,33 @@
  * the GPL. If you do not delete the provisions above, a recipient may
  * use your version of this file under the terms of any one of the
  * RPSL, the RCSL or the GPL.
- * 
+ *
  * This file is part of the Helix DNA Technology. RealNetworks is the
  * developer of the Original Code and owns the copyrights in the
  * portions it created.
- * 
+ *
  * This file, and the files included with this file, is distributed
  * and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
  * KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
  * ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
  * ENJOYMENT OR NON-INFRINGEMENT.
- * 
+ *
  * Technology Compatibility Kit Test Suite(s) Location:
  *    http://www.helixcommunity.org/content/tck
- * 
+ *
  * Contributor(s): John Wei
- * 
+ *
  * ***** END LICENSE BLOCK ***** */
 
 #ifndef _MDFVIDEOADAPTER_H_
 #define _MDFVIDEOADAPTER_H_
 
 #include 
-#include  
-#include  
-#include  
-#include  
+#include 
+#include 
+#include 
+#include 
 #include              //RWsSession
 #include 
 #include 
@@ -78,7 +78,10 @@
 #include "hxsite3.h"
 #include "hxprefs.h"
 #include "hxprefutil.h"
+
+#if defined(HELIX_FEATURE_S60_VIDEO_CUSTOM_INTERFACE)
 #include "videowindowcontrol.h"
+#endif
 
 class CMdfVideoAdapter : public IUnknown,
                          public IHXSurfaceControl,
@@ -89,15 +92,15 @@
 public:
     CMdfVideoAdapter();
     virtual ~CMdfVideoAdapter();
-    
+
 public:
     STDMETHOD( QueryInterface )   (THIS_ REFIID riid, void** ppvObj);
     STDMETHOD_( UINT32,AddRef )   (THIS);
     STDMETHOD_( UINT32,Release )  (THIS);
-    
+
 public:
-    HX_RESULT   Init( const CPluginPackage& pluginPackage, 
-                      MMMFClockSource*      pClcokSource, 
+    HX_RESULT   Init( const CPluginPackage& pluginPackage,
+                      MMMFClockSource*      pClcokSource,
                       IHXValues*            pHeader,
                       IUnknown*             pContext );
 
@@ -118,7 +121,7 @@
     HX_RESULT   AbortDSA();
     HX_RESULT   StartDSA();
     HX_RESULT   CalculateScaleFactor(void);
-    
+
 private:
     void        SetupWindow();
     HX_RESULT   InitL( const CPluginPackage& pluginPackage );
@@ -127,27 +130,27 @@
     HX_RESULT   Blt();
     void        BltL();
     HXBOOL      PrepareUpdatedBltMediaPacket();
-    
-public: 
+
+public:
     //From MMMFDevVideoPlayObserver
     virtual void MdvpoNewBuffers();
     virtual void MdvpoReturnPicture(TVideoPicture* aPicture);
-    virtual void MdvpoSupplementalInformation(const TDesC8& aData, 
-                            const TTimeIntervalMicroSeconds& aTimestamp, 
+    virtual void MdvpoSupplementalInformation(const TDesC8& aData,
+                            const TTimeIntervalMicroSeconds& aTimestamp,
                             const TPictureId& aPictureId);
     virtual void MdvpoPictureLoss();
     virtual void MdvpoPictureLoss(const TArray& aPictures);
     virtual void MdvpoSliceLoss(TUint aFirstMacroblock, TUint aNumMacroblocks, const TPictureId& aPicture);
     virtual void MdvpoReferencePictureSelection(const TDesC8& aSelectionData);
-    virtual void MdvpoTimedSnapshotComplete(TInt aError, 
-                            TPictureData* aPictureData, 
-                            const TTimeIntervalMicroSeconds& aPresentationTimestamp, 
+    virtual void MdvpoTimedSnapshotComplete(TInt aError,
+                            TPictureData* aPictureData,
+                            const TTimeIntervalMicroSeconds& aPresentationTimestamp,
                             const TPictureId& aPictureId);
     virtual void MdvpoNewPictures();
     virtual void MdvpoFatalError(TInt aError);
     virtual void MdvpoInitComplete(TInt aError);
     virtual void MdvpoStreamEnd();
-    
+
 public:
     //IHXSurfaceControl methods
     STDMETHOD(SetRotation) (THIS_ UINT32 ulValue);
@@ -173,11 +176,11 @@
     STDMETHOD( OnPaceStart )( THIS_ UINT32 ulId );
     STDMETHOD( OnPaceEnd )  ( THIS_ UINT32 ulId );
     STDMETHOD( OnPace )     ( THIS_ UINT32 ulId );
-    
+
 private:
     enum InitializeState
     {
-        EInitializedReady = 0, 
+        EInitializedReady = 0,
         EInitializedOnGoingPass1,
         EInitializedOnGoingPass2,
         EInitializedSuccess,
@@ -193,7 +196,7 @@
     CFbsBitGc*          m_pFbsBitGc;
     HXMutex*            m_pBltQueueMutex;
     HXMutex*            m_pWriteMutex;
-    
+
     INT32               m_lRefCount;
     UINT32              m_ulSourceBufferSize;
     THwDeviceId         m_DecoderHwDeviceId;
@@ -246,7 +249,7 @@
     HXxRect             m_CropRect;
 
     MDFVIDEOLOG_DEFINE;
-        
+
 };
 
 #endif  //_MDFVIDEOADAPTER_H_


From shy_ward at helixcommunity.org  Mon Nov  6 11:27:56 2006
From: shy_ward at helixcommunity.org (shy_ward@helixcommunity.org)
Date: Mon Nov  6 12:34:44 2006
Subject: [Datatype-cvs] mdf/video/renderer mdfvideoadapter.cpp,1.46,1.47
Message-ID: 

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

Modified Files:
	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:
    shy.ward@nokia.com

Reviewed by:


Date: 
    Nov-1-2006

Project: 
    Helix plug-in for Symbian

Error ID: 
    HZHO-6TYR5N
    

Synopsis: 
    MDF and the MDF-ARM Post Processor now support a virtual window canvas which can be larger than the screen and/or
    reside out of the viewable area. The specific window calculations are handled in the MDF-ARM Post Processor, these MDF changes
    will simply pass the window down. If the custom interface is not supported the call has no effect.

    The StartDirectScreenAccessL() was modified to pass the clipRect versus the windowRect since the MDF interface spec says the rect must
    be completely within physical screen dimensions and this no longer true with the window rect.

Files Modified: 
    datatype/mdf/video/renderer/mdfvideoadapter.cpp
    datatype/mdf/video/renderer/pub/mdfvideoadapter.h

Files Added:
    None

Image Size and Heap Use impact: 
    none

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

Platforms and Profiles Functionality verified: 
    armv5

Branch: 
    head and hxclient_2_1_0_cayennes 

Index: mdfvideoadapter.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/renderer/mdfvideoadapter.cpp,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -d -r1.46 -r1.47
--- mdfvideoadapter.cpp	3 Nov 2006 21:50:50 -0000	1.46
+++ mdfvideoadapter.cpp	6 Nov 2006 19:27:54 -0000	1.47
@@ -1294,6 +1294,7 @@
         }
 
         retVal = HXR_FAIL;
+#if defined(HELIX_FEATURE_S60_VIDEO_CUSTOM_INTERFACE)
         MMdfVideoWindowControl* pVirtualDisplay =
             (MMdfVideoWindowControl *) m_pDevVideoPlay->CustomInterface( m_PostProcessorHwDeviceId, KUidMdfVideoWindowControl );
         MDFVIDEOLOG_INOUTFN2( "CustomInterface(Virtual Display) does not leave" );
@@ -1306,6 +1307,7 @@
                 retVal = HXR_FAIL;
             }
         }
+ #endif
 
         TRAPD(error, m_pDevVideoPlay->StartDirectScreenAccessL(m_clipRect, *m_pFbsScreenDevice, m_ClipRegion));
         if (error == KErrNone)


From shy_ward at helixcommunity.org  Mon Nov  6 11:28:11 2006
From: shy_ward at helixcommunity.org (shy_ward@helixcommunity.org)
Date: Mon Nov  6 12:34:59 2006
Subject: [Datatype-cvs] mdf/video/renderer/pub mdfvideoadapter.h,1.20,1.21
Message-ID: 

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

Modified Files:
	mdfvideoadapter.h 
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:
    shy.ward@nokia.com

Reviewed by:


Date: 
    Nov-1-2006

Project: 
    Helix plug-in for Symbian

Error ID: 
    HZHO-6TYR5N
    

Synopsis: 
    MDF and the MDF-ARM Post Processor now support a virtual window canvas which can be larger than the screen and/or
    reside out of the viewable area. The specific window calculations are handled in the MDF-ARM Post Processor, these MDF changes
    will simply pass the window down. If the custom interface is not supported the call has no effect.

    The StartDirectScreenAccessL() was modified to pass the clipRect versus the windowRect since the MDF interface spec says the rect must
    be completely within physical screen dimensions and this no longer true with the window rect.

Files Modified: 
    datatype/mdf/video/renderer/mdfvideoadapter.cpp
    datatype/mdf/video/renderer/pub/mdfvideoadapter.h

Files Added:
    None

Image Size and Heap Use impact: 
    none

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

Platforms and Profiles Functionality verified: 
    armv5

Branch: 
    head and hxclient_2_1_0_cayennes 

Index: mdfvideoadapter.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/renderer/pub/mdfvideoadapter.h,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -d -r1.20 -r1.21
--- mdfvideoadapter.h	3 Nov 2006 20:47:30 -0000	1.20
+++ mdfvideoadapter.h	6 Nov 2006 19:28:09 -0000	1.21
@@ -78,7 +78,10 @@
 #include "hxsite3.h"
 #include "hxprefs.h"
 #include "hxprefutil.h"
+
+#if defined(HELIX_FEATURE_S60_VIDEO_CUSTOM_INTERFACE)
 #include "videowindowcontrol.h"
+#endif
 
 class CMdfVideoAdapter : public IUnknown,
                          public IHXSurfaceControl,


From milko at helixcommunity.org  Tue Nov  7 16:38:31 2006
From: milko at helixcommunity.org (milko@helixcommunity.org)
Date: Tue Nov  7 17:45:01 2006
Subject: [Datatype-cvs] ngt/fileformat ngtfformat.cpp,1.3,1.4
Message-ID: 

Update of /cvsroot/datatype/ngt/fileformat
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv10598

Modified Files:
	ngtfformat.cpp 
Log Message:
Fixed a crash in logging statement.


Index: ngtfformat.cpp
===================================================================
RCS file: /cvsroot/datatype/ngt/fileformat/ngtfformat.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- ngtfformat.cpp	21 Aug 2006 23:24:14 -0000	1.3
+++ ngtfformat.cpp	8 Nov 2006 00:38:29 -0000	1.4
@@ -1278,7 +1278,7 @@
 
 			HXLOGL2(HXLOG_NGTF, "CNGTFileFormat::SwitchToRemote(Strm=%hu, Time=%lu) LastLocalTime=%lu StrmState=%s State=%s RemoteState=%s",
 				uStreamNumber,
-				m_pStreamStatus[uStreamNumber].pRemoteSwitchToPacket->GetTime(),
+				pPacket->GetTime(),
 				m_pStreamStatus[uStreamNumber].ulLastLocalTS,
 				StateToString(m_pStreamStatus[uStreamNumber].eState),
 				StateToString(m_eState),


From ehyche at helixcommunity.org  Tue Nov  7 19:21:02 2006
From: ehyche at helixcommunity.org (ehyche@helixcommunity.org)
Date: Tue Nov  7 20:27:31 2006
Subject: [Datatype-cvs] common/vidrend vidrend.cpp,1.88,1.89
Message-ID: 

Update of /cvsroot/datatype/common/vidrend
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv23607

Modified Files:
	vidrend.cpp 
Log Message:
Add VS1 blt logging statement.


Index: vidrend.cpp
===================================================================
RCS file: /cvsroot/datatype/common/vidrend/vidrend.cpp,v
retrieving revision 1.88
retrieving revision 1.89
diff -u -d -r1.88 -r1.89
--- vidrend.cpp	21 Oct 2006 02:09:16 -0000	1.88
+++ vidrend.cpp	8 Nov 2006 03:21:00 -0000	1.89
@@ -3200,6 +3200,8 @@
                                              HXxRect &sorcRect,
                                              HXBOOL bOptimizedBlt)
 {
+    HXLOGL4(HXLOG_BVID, "VS1 Blt Frame ts=%lu", pVideoPacket->m_ulTime);
+    
     HX_RESULT retVal;
 
     if (bOptimizedBlt)


From shy_ward at helixcommunity.org  Wed Nov  8 08:11:43 2006
From: shy_ward at helixcommunity.org (shy_ward@helixcommunity.org)
Date: Wed Nov  8 09:18:05 2006
Subject: [Datatype-cvs] mdf/video/renderer mdfvideoadapter.cpp, 1.3.2.43,
	1.3.2.44
Message-ID: 

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

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	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:
    shy.ward@nokia.com

Reviewed by:


Date: 
    Nov-7-2006

Project: 
    Helix plug-in for Symbian

Error ID: 
         LDAG-6SZGMT
    

Synopsis: 
    GetCropRegion() has never been implemented. The code existed in the MDF level so I just added the code to the MMF to be able to 
     retrieve it.

Files Modified: 
    datatype/mdf/video/renderer/mdfvideoadapter.cpp
    clientapps/symbianMmf/hxmmfsitesupplier.cpp
    clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp

Files Added:
    None

Image Size and Heap Use impact: 
    none

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

Platforms and Profiles Functionality verified: 
    armv5

Branch: 
    head and hxclient_2_1_0_cayennes 


Index: mdfvideoadapter.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/renderer/mdfvideoadapter.cpp,v
retrieving revision 1.3.2.43
retrieving revision 1.3.2.44
diff -u -d -r1.3.2.43 -r1.3.2.44
--- mdfvideoadapter.cpp	6 Nov 2006 19:22:49 -0000	1.3.2.43
+++ mdfvideoadapter.cpp	8 Nov 2006 16:11:41 -0000	1.3.2.44
@@ -174,6 +174,11 @@
     m_frameRect.right  = 0;
     m_frameRect.bottom = 0;
 
+    m_CropRect.left   = 0;
+    m_CropRect.top    = 0;
+    m_CropRect.right  = 0;
+    m_CropRect.bottom = 0;
+
 
     MDFVIDEOLOG_LEAVEFN( "CMdfVideoAdapter" );
 }
@@ -1683,6 +1688,10 @@
 
     HX_RESULT retVal( HXR_OK ); //do not use HXR_IGNORE since SUCCEEDED( HXR_IGNORE ) is false
 
+    MDFVIDEOLOG_WRITE_MULTI_FORMAT( "    sValue left-top     : %d:%d", sValue.left, sValue.top );
+    MDFVIDEOLOG_WRITE_MULTI_FORMAT( "    sValue right-bottom : %d:%d", sValue.right, sValue.bottom );
+    MDFVIDEOLOG_WRITE_MULTI_FORMAT( "    m_CropRect left-top     : %d:%d", m_CropRect.left, m_CropRect.top );
+    MDFVIDEOLOG_WRITE_MULTI_FORMAT( "    m_CropRect right-bottom : %d:%d", m_CropRect.right, m_CropRect.bottom );
     if( m_CropRect != sValue )
     {
         if (m_DevVidInitialized == EInitializedSuccess)
@@ -1707,7 +1716,14 @@
 STDMETHODIMP
 CMdfVideoAdapter::GetCropRect(HXxRect &sValue)
 {
+    MDFVIDEOLOG_ENTERFN( "GetCropRect" );
+
     sValue = m_CropRect;
+
+    MDFVIDEOLOG_WRITE_MULTI_FORMAT( "    sValue left-top     : %d:%d", sValue.left, sValue.top );
+    MDFVIDEOLOG_WRITE_MULTI_FORMAT( "    sValue right-bottom : %d:%d", sValue.right, sValue.bottom );
+    MDFVIDEOLOG_WRITE_MULTI_FORMAT( "    m_CropRect left-top     : %d:%d", m_CropRect.left, m_CropRect.top );
+    MDFVIDEOLOG_WRITE_MULTI_FORMAT( "    m_CropRect right-bottom : %d:%d", m_CropRect.right, m_CropRect.bottom );
     return HXR_OK;
 }
 


From shy_ward at helixcommunity.org  Wed Nov  8 08:42:03 2006
From: shy_ward at helixcommunity.org (shy_ward@helixcommunity.org)
Date: Wed Nov  8 09:48:24 2006
Subject: [Datatype-cvs] mdf/video/renderer mdfvideoadapter.cpp,1.47,1.48
Message-ID: 

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

Modified Files:
	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:
    shy.ward@nokia.com

Reviewed by:


Date: 
    Nov-7-2006

Project: 
    Helix plug-in for Symbian

Error ID: 
         LDAG-6SZGMT
    

Synopsis: 
    GetCropRegion() has never been implemented. The code existed in the MDF level so I just added the code to the MMF to be able to 
     retrieve it.

Files Modified: 
    datatype/mdf/video/renderer/mdfvideoadapter.cpp
    clientapps/symbianMmf/hxmmfsitesupplier.cpp
    clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp

Files Added:
    None

Image Size and Heap Use impact: 
    none

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

Platforms and Profiles Functionality verified: 
    armv5

Branch: 
    head and hxclient_2_1_0_cayennes 


Index: mdfvideoadapter.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/renderer/mdfvideoadapter.cpp,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -d -r1.47 -r1.48
--- mdfvideoadapter.cpp	6 Nov 2006 19:27:54 -0000	1.47
+++ mdfvideoadapter.cpp	8 Nov 2006 16:42:01 -0000	1.48
@@ -174,6 +174,11 @@
     m_frameRect.right  = 0;
     m_frameRect.bottom = 0;
 
+    m_CropRect.left   = 0;
+    m_CropRect.top    = 0;
+    m_CropRect.right  = 0;
+    m_CropRect.bottom = 0;
+
 
     MDFVIDEOLOG_LEAVEFN( "CMdfVideoAdapter" );
 }
@@ -1683,6 +1688,10 @@
 
     HX_RESULT retVal( HXR_OK ); //do not use HXR_IGNORE since SUCCEEDED( HXR_IGNORE ) is false
 
+    MDFVIDEOLOG_WRITE_MULTI_FORMAT( "    sValue left-top     : %d:%d", sValue.left, sValue.top );
+    MDFVIDEOLOG_WRITE_MULTI_FORMAT( "    sValue right-bottom : %d:%d", sValue.right, sValue.bottom );
+    MDFVIDEOLOG_WRITE_MULTI_FORMAT( "    m_CropRect left-top     : %d:%d", m_CropRect.left, m_CropRect.top );
+    MDFVIDEOLOG_WRITE_MULTI_FORMAT( "    m_CropRect right-bottom : %d:%d", m_CropRect.right, m_CropRect.bottom );
     if( m_CropRect != sValue )
     {
         if (m_DevVidInitialized == EInitializedSuccess)
@@ -1707,7 +1716,14 @@
 STDMETHODIMP
 CMdfVideoAdapter::GetCropRect(HXxRect &sValue)
 {
+    MDFVIDEOLOG_ENTERFN( "GetCropRect" );
+
     sValue = m_CropRect;
+
+    MDFVIDEOLOG_WRITE_MULTI_FORMAT( "    sValue left-top     : %d:%d", sValue.left, sValue.top );
+    MDFVIDEOLOG_WRITE_MULTI_FORMAT( "    sValue right-bottom : %d:%d", sValue.right, sValue.bottom );
+    MDFVIDEOLOG_WRITE_MULTI_FORMAT( "    m_CropRect left-top     : %d:%d", m_CropRect.left, m_CropRect.top );
+    MDFVIDEOLOG_WRITE_MULTI_FORMAT( "    m_CropRect right-bottom : %d:%d", m_CropRect.right, m_CropRect.bottom );
     return HXR_OK;
 }
 


From ehyche at helixcommunity.org  Wed Nov  8 09:05:48 2006
From: ehyche at helixcommunity.org (ehyche@helixcommunity.org)
Date: Wed Nov  8 10:12:08 2006
Subject: [Datatype-cvs] wm/fileformat/pub asf_file_format_file.h,1.4,1.5
Message-ID: 

Update of /cvsroot/datatype/wm/fileformat/pub
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv26442/pub

Modified Files:
	asf_file_format_file.h 
Log Message:
Modified by: Eric Hyche (ehyche@real.com)
Reviewed by: Milko Boic (milko@real.com)

Description
---------------------------------------
When the ASF fileformat was called with Seek() before being
called with GetPacket(), an error occurred. This situation
can happen when called by dtdrive as in:

dtdrive -J 8000 somefile.asf

The problem was that the CHXASFIndex object was only getting set up
when we received a packet, and it was assumed that by the
time we read the ASF Index at the end of the file that we
had already set up the CHXASFIndex object. The fix was simply
to move the code which creates and initializes the CHXASFIndex
object into common code and call this code from both the
packet reading location and the index reading location.

Files Modified
---------------------------------------
datatype/wm/fileformat/asf_file_format_file.cpp
datatype/wm/fileformat/pub/asf_file_format_file.h

Branches
---------------------------------------
HEAD and 150Cay

Testing
---------------------------------------
The command "dtdrive -J 8000 thefullmonty.wmv" was successfully run after this change.



Index: asf_file_format_file.h
===================================================================
RCS file: /cvsroot/datatype/wm/fileformat/pub/asf_file_format_file.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- asf_file_format_file.h	30 Oct 2006 15:55:32 -0000	1.4
+++ asf_file_format_file.h	8 Nov 2006 17:05:46 -0000	1.5
@@ -241,6 +241,7 @@
     HX_RESULT                    EstimateSeekTime(UINT32 ulDesiredSeekTime, REF(UINT32) rulSeekOffset);
     UINT16                       GetSimpleIndexObjectStreamNumber(UINT32 ulSimpleIndexOrderIndex);
     UINT32                       GetPacketBufferSize(IHXPacket* pPacket);
+    HX_RESULT                    SetupASFIndex();
 
     static const char* const m_pszDescription;
     static const char* const m_pszCopyright;


From ehyche at helixcommunity.org  Wed Nov  8 09:05:48 2006
From: ehyche at helixcommunity.org (ehyche@helixcommunity.org)
Date: Wed Nov  8 10:12:08 2006
Subject: [Datatype-cvs] wm/fileformat asf_file_format_file.cpp,1.6,1.7
Message-ID: 

Update of /cvsroot/datatype/wm/fileformat
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv26442

Modified Files:
	asf_file_format_file.cpp 
Log Message:
Modified by: Eric Hyche (ehyche@real.com)
Reviewed by: Milko Boic (milko@real.com)

Description
---------------------------------------
When the ASF fileformat was called with Seek() before being
called with GetPacket(), an error occurred. This situation
can happen when called by dtdrive as in:

dtdrive -J 8000 somefile.asf

The problem was that the CHXASFIndex object was only getting set up
when we received a packet, and it was assumed that by the
time we read the ASF Index at the end of the file that we
had already set up the CHXASFIndex object. The fix was simply
to move the code which creates and initializes the CHXASFIndex
object into common code and call this code from both the
packet reading location and the index reading location.

Files Modified
---------------------------------------
datatype/wm/fileformat/asf_file_format_file.cpp
datatype/wm/fileformat/pub/asf_file_format_file.h

Branches
---------------------------------------
HEAD and 150Cay

Testing
---------------------------------------
The command "dtdrive -J 8000 thefullmonty.wmv" was successfully run after this change.



Index: asf_file_format_file.cpp
===================================================================
RCS file: /cvsroot/datatype/wm/fileformat/asf_file_format_file.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- asf_file_format_file.cpp	30 Oct 2006 15:55:32 -0000	1.6
+++ asf_file_format_file.cpp	8 Nov 2006 17:05:46 -0000	1.7
@@ -1080,69 +1080,68 @@
                 retVal = pASFObj->Unpack(pBuffer->GetBuffer(), pBuffer->GetSize());
                 if (SUCCEEDED(retVal))
                 {
-                    // Is this a Index Object or a Simple Index Object?
-                    if (pASFObj->m_eASFObjectType == HX_ASF_Index_Object)
+                    // Make sure the ASF index is set up
+                    retVal = SetupASFIndex();
+                    if (SUCCEEDED(retVal))
                     {
-                        // This is a index object. Our on-the-fly index object is
-                        // essentially the same as an index object. Therefore, we will
-                        // simply copy all the information from this Index Object
-                        // and put it in our on-the-fly Index Object. That way, we should
-                        // never have to seek to the end of the file again from now on.
-                        if (m_pASFIndex)
+                        // Is this a Index Object or a Simple Index Object?
+                        if (pASFObj->m_eASFObjectType == HX_ASF_Index_Object)
                         {
+                            // This is a index object. Our on-the-fly index object is
+                            // essentially the same as an index object. Therefore, we will
+                            // simply copy all the information from this Index Object
+                            // and put it in our on-the-fly Index Object. That way, we should
+                            // never have to seek to the end of the file again from now on.
                             m_pASFIndex->ImportIndexObject((CHXASFTopLevelIndexObject*) pASFObj);
                         }
-                    }
-                    else
-                    {
-                        // Get the WM stream number of this simple index object
-                        UINT16 usWMStreamNum = GetSimpleIndexObjectStreamNumber(m_ulSimpleIndexOrderIndex);
-                        // This is a simple index object. Our on-the-fly index object
-                        // contains similar information so we will first import
-                        // this information into our on-the-fly object
-                        if (m_pASFIndex)
+                        else
                         {
+                            // Get the WM stream number of this simple index object
+                            UINT16 usWMStreamNum = GetSimpleIndexObjectStreamNumber(m_ulSimpleIndexOrderIndex);
+                            // This is a simple index object. Our on-the-fly index object
+                            // contains similar information so we will first import
+                            // this information into our on-the-fly object
                             m_pASFIndex->ImportSimpleIndexObject((CHXASFTopLevelSimpleIndexObject*) pASFObj, usWMStreamNum,
                                                                  m_pFilePropertiesObject->m_ulMaxDataPacketSize);
+                            // Increment the index of the simple index object we have seen so far
+                            m_ulSimpleIndexOrderIndex++;
                         }
-                        // Increment the index of the simple index object we have seen so far
-                        m_ulSimpleIndexOrderIndex++;
-                    }
-                    // Now see if we can look up a seek offset
-                    UINT32 ulActualSeekTime  = 0;
-                    UINT32 ulSeekOffset      = 0;
-                    retVal = SearchIndexTable(m_ulDesiredSeekPresTime, FALSE, ulActualSeekTime, ulSeekOffset);
-                    if (SUCCEEDED(retVal))
-                    {
-                        // We were able to look up an offset now, so
-                        // we should seek to that point and then call SeekDone()
-                        //
-                        // Since we have fixed-size packets in ASF, we can
-                        // compute the packet index we are seeking to
-                        if (m_pFilePropertiesObject &&
-                            m_pFilePropertiesObject->m_ulMaxDataPacketSize)
+                        // Now see if we can look up a seek offset
+                        UINT32 ulActualSeekTime  = 0;
+                        UINT32 ulSeekOffset      = 0;
+                        retVal = SearchIndexTable(m_ulDesiredSeekPresTime, FALSE, ulActualSeekTime, ulSeekOffset);
+                        if (SUCCEEDED(retVal))
                         {
-                            m_ullPacketIndex = (ulSeekOffset - m_ulFirstASFPacketFileOffset) /
-                                                m_pFilePropertiesObject->m_ulMaxDataPacketSize;
+                            // We were able to look up an offset now, so
+                            // we should seek to that point and then call SeekDone()
+                            //
+                            // Since we have fixed-size packets in ASF, we can
+                            // compute the packet index we are seeking to
+                            if (m_pFilePropertiesObject &&
+                                m_pFilePropertiesObject->m_ulMaxDataPacketSize)
+                            {
+                                m_ullPacketIndex = (ulSeekOffset - m_ulFirstASFPacketFileOffset) /
+                                                    m_pFilePropertiesObject->m_ulMaxDataPacketSize;
+                            }
+                            // We are seeking to a packet, so all we need
+                            // to do is issue one seek and then we will
+                            // call back with SeekDone().
+                            m_ulState = kStateSeekFinalSeekDonePending;
+                            // Set the seek offset requested
+                            m_ulSeekOffsetRequested = ulSeekOffset;
+                            // Seek the file object
+                            m_pFileObject->Seek(ulSeekOffset, FALSE);
+                        }
+                        else
+                        {
+                            // We were not able to look up a seek offset, so keep reading
+                            // and try to get another index object
+                            //
+                            // Set the state
+                            m_ulState = kStateSeekIndexObjectHeaderReadDonePending;
+                            // Read HX_ASF_OBJECT_HEADER_SIZE bytes
+                            m_pFileObject->Read(HX_ASF_OBJECT_HEADER_SIZE);
                         }
-                        // We are seeking to a packet, so all we need
-                        // to do is issue one seek and then we will
-                        // call back with SeekDone().
-                        m_ulState = kStateSeekFinalSeekDonePending;
-                        // Set the seek offset requested
-                        m_ulSeekOffsetRequested = ulSeekOffset;
-                        // Seek the file object
-                        m_pFileObject->Seek(ulSeekOffset, FALSE);
-                    }
-                    else
-                    {
-                        // We were not able to look up a seek offset, so keep reading
-                        // and try to get another index object
-                        //
-                        // Set the state
-                        m_ulState = kStateSeekIndexObjectHeaderReadDonePending;
-                        // Read HX_ASF_OBJECT_HEADER_SIZE bytes
-                        m_pFileObject->Read(HX_ASF_OBJECT_HEADER_SIZE);
                     }
                 }
             }
@@ -3382,41 +3381,9 @@
 
     if (pPacket && m_pFilePropertiesObject)
     {
-        // Clear the return value
-        retVal = HXR_OK;
-        // Do we already have an index?
-        if (!m_pASFIndex)
-        {
-            // Set the return value
-            retVal = HXR_OUTOFMEMORY;
-            // Create the CHXASFIndex object
-            m_pASFIndex = new CHXASFIndex();
-            if (m_pASFIndex)
-            {
-                // Compute the play duration in ms
-                UINT64 ullPlayDurationInMs = m_pFilePropertiesObject->m_ullPlayDuration / ((UINT64) 10000);
-                // Initialize the index object
-                retVal = m_pASFIndex->Init(m_ulNumWMStreams,
-                                           m_pusWMIndex2StreamNumber,
-                                           INT64_TO_UINT32(ullPlayDurationInMs),
-                                           INT64_TO_UINT32(m_pFilePropertiesObject->m_ullPreroll),
-                                           m_ulFirstASFPacketFileOffset,
-                                           m_pIndexParametersObject);
-                if (SUCCEEDED(retVal))
-                {
-                    // We need to inform the index object about the stream types
-                    // of each of the WM streams
-                    for (UINT32 i = 0; i < m_ulNumWMStreams && SUCCEEDED(retVal); i++)
-                    {
-                        // Get the WM stream number
-                        UINT16 usWMStreamNum = GetWMStreamNumber(i);
-                        // Set the stream type into the index
-                        retVal = m_pASFIndex->SetWMStreamType(usWMStreamNum, GetStreamType(usWMStreamNum));
-                    }
-                }
-            }
-        }
-        if (m_pASFIndex && SUCCEEDED(retVal))
+        // Make sure the ASF index is set up
+        retVal = SetupASFIndex();
+        if (SUCCEEDED(retVal))
         {
             // Add the ASF packet to the index
             retVal = m_pASFIndex->AddASFPacketToIndex(pPacket);
@@ -3726,3 +3693,49 @@
 
     return ulRet;
 }
+
+HX_RESULT CASFFileFormatFile::SetupASFIndex()
+{
+    HX_RESULT retVal = HXR_OK;
+
+    // Do we already have an index?
+    if (!m_pASFIndex)
+    {
+        // Set the return value
+        retVal = HXR_UNEXPECTED;
+        // Make sure we've received the headers
+        if (m_pFilePropertiesObject && m_ulNumWMStreams)
+        {
+            // Set the return value
+            retVal = HXR_OUTOFMEMORY;
+            // Create the CHXASFIndex object
+            m_pASFIndex = new CHXASFIndex();
+            if (m_pASFIndex)
+            {
+                // Compute the play duration in ms
+                UINT64 ullPlayDurationInMs = m_pFilePropertiesObject->m_ullPlayDuration / ((UINT64) 10000);
+                // Initialize the index object
+                retVal = m_pASFIndex->Init(m_ulNumWMStreams,
+                                           m_pusWMIndex2StreamNumber,
+                                           INT64_TO_UINT32(ullPlayDurationInMs),
+                                           INT64_TO_UINT32(m_pFilePropertiesObject->m_ullPreroll),
+                                           m_ulFirstASFPacketFileOffset,
+                                           m_pIndexParametersObject);
+                if (SUCCEEDED(retVal))
+                {
+                    // We need to inform the index object about the stream types
+                    // of each of the WM streams
+                    for (UINT32 i = 0; i < m_ulNumWMStreams && SUCCEEDED(retVal); i++)
+                    {
+                        // Get the WM stream number
+                        UINT16 usWMStreamNum = GetWMStreamNumber(i);
+                        // Set the stream type into the index
+                        retVal = m_pASFIndex->SetWMStreamType(usWMStreamNum, GetStreamType(usWMStreamNum));
+                    }
+                }
+            }
+        }
+    }
+
+    return retVal;
+}


From cybette at helixcommunity.org  Wed Nov  8 09:41:48 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 10:48:08 2006
Subject: [Datatype-cvs] mdf/video/format/common/pub mdfpayloadformat.h,
	1.2.2.6, 1.2.2.7
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/common/pub
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv31479

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfpayloadformat.h 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: mdfpayloadformat.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/common/pub/mdfpayloadformat.h,v
retrieving revision 1.2.2.6
retrieving revision 1.2.2.7
diff -u -d -r1.2.2.6 -r1.2.2.7
--- mdfpayloadformat.h	6 Nov 2006 17:35:12 -0000	1.2.2.6
+++ mdfpayloadformat.h	8 Nov 2006 17:41:46 -0000	1.2.2.7
@@ -73,11 +73,24 @@
 #include "mdfgenericlog.h"      //logging
 #include "hxprefutil.h"         //ReadPrefBOOL
 
+#define CHAR_LF	                                0x0a
+#define FORMAT_PARAMETERS_PREFIX                "a=fmtp:0 "
+#define FORMAT_PARAMETERS_PREFIX_SIZE	        (sizeof(FORMAT_PARAMETERS_PREFIX) - 1)
+#define UNKNOWN_PROFILE                         -1
+
 #define KUidPayloadFormatPluginDeviceDefine	        0x10207473
 const TUid KUidPayloadFormatPluginDevice = {KUidPayloadFormatPluginDeviceDefine};
 
 #define MIMETYPEARRAY_ARRAY_GRANULARITY  4
 
+// Literal descriptors for video profile
+_LIT8( KAdvanced, "advanced" );
+_LIT8( KBaseline, "baseline" );
+_LIT8( KExtended, "extended" );
+_LIT8( KMain,     "main"     );
+_LIT8( KProfile3, "profile3" );
+_LIT8( KSimple,   "simple"   );
+
 class CPayloadFormatInfo : public CBase
 {
 public:
@@ -126,6 +139,8 @@
     virtual HX_RESULT     FillBuffer( TPtr8& buffer, const CMediaPacket* pMediaPacket ) const;
     virtual void          Reset( UINT32 ulBeginTime );
     virtual UINT32        GetPreRollInMs() const;
+    virtual const TDesC8& GetVideoProfile() const = 0;
+    virtual UINT32        GetVideoResolution() const;
 
     CPayloadFormatInfo*   PayloadFormatInfoLC() const;
 


From cybette at helixcommunity.org  Wed Nov  8 09:43:34 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 10:49:54 2006
Subject: [Datatype-cvs] 
	mdf/video/format/common mdfpayloadformat.cpp, 1.2.2.7, 1.2.2.8
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/common
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv31686

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfpayloadformat.cpp 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: mdfpayloadformat.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/common/mdfpayloadformat.cpp,v
retrieving revision 1.2.2.7
retrieving revision 1.2.2.8
diff -u -d -r1.2.2.7 -r1.2.2.8
--- mdfpayloadformat.cpp	6 Nov 2006 17:34:53 -0000	1.2.2.7
+++ mdfpayloadformat.cpp	8 Nov 2006 17:43:32 -0000	1.2.2.8
@@ -50,7 +50,7 @@
 #include 
 #include "mdfpayloadformat.h"
 
-#define DEFAUL_PREROLL_IN_MS        500
+#define DEFAULT_PREROLL_IN_MS        500
 
 /////////////////////////////////////////////////////////////////////
 //CPayloadFormatInfo
@@ -305,7 +305,34 @@
 {
     MDFVIDEOLOG_ENTERFN( "GetPreRollInMs" );
     MDFVIDEOLOG_LEAVEFN( "GetPreRollInMs" );
-    return DEFAUL_PREROLL_IN_MS;
+    return DEFAULT_PREROLL_IN_MS;
+}
+
+UINT32 CPayloadFormatPluginDevice::GetVideoResolution() const
+{
+    MDFVIDEOLOG_ENTERFN( "GetVideoResolution" );
+    UINT32 ulResolution = 0;
+    if( m_pHeader )
+    {
+        UINT32 ulVideoWidth = 0;
+        UINT32 ulVideoHeight = 0;
+
+        if( SUCCEEDED(m_pHeader->GetPropertyULONG32( "FrameWidth", ulVideoWidth ) ) &&
+            SUCCEEDED(m_pHeader->GetPropertyULONG32( "FrameHeight", ulVideoHeight ) ) )
+        {
+            ulResolution = ulVideoWidth * ulVideoHeight;
+        }
+        else
+        {   // if frame width & height are not available, use track width & height
+            if( SUCCEEDED(m_pHeader->GetPropertyULONG32( "Width", ulVideoWidth ) ) &&
+                SUCCEEDED(m_pHeader->GetPropertyULONG32( "Height", ulVideoHeight ) ) )
+            {
+                ulResolution = ulVideoWidth * ulVideoHeight;
+            }
+        }
+    }
+    MDFVIDEOLOG_LEAVEFN( "GetVideoResolution" );
+    return ulResolution;
 }
 
 CPayloadFormatInfo* CPayloadFormatPluginDevice::PayloadFormatInfoLC() const


From cybette at helixcommunity.org  Wed Nov  8 09:44:45 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 10:51:04 2006
Subject: [Datatype-cvs] mdf/video/format/h263/pub mdfh263payloadformat.h,
	1.2.2.4, 1.2.2.5
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/h263/pub
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv32054

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfh263payloadformat.h 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: mdfh263payloadformat.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/h263/pub/mdfh263payloadformat.h,v
retrieving revision 1.2.2.4
retrieving revision 1.2.2.5
diff -u -d -r1.2.2.4 -r1.2.2.5
--- mdfh263payloadformat.h	25 Sep 2006 21:31:41 -0000	1.2.2.4
+++ mdfh263payloadformat.h	8 Nov 2006 17:44:42 -0000	1.2.2.5
@@ -63,10 +63,11 @@
     ~CH263PayloadFormatPluginDevice();
     
 public:  //derived
-    virtual HX_RESULT CreatePayloadFormat( IHXPayloadFormatObject*& aPayloadFormatObject  );
-    CMediaPacket*     CreateAssembledPacket( IHXPacket* pPayloadData );
-    virtual UINT32    GetPreRollInMs() const;
-    
+    virtual HX_RESULT     CreatePayloadFormat( IHXPayloadFormatObject*& aPayloadFormatObject  );
+    CMediaPacket*         CreateAssembledPacket( IHXPacket* pPayloadData );
+    virtual UINT32        GetPreRollInMs() const;
+    virtual const TDesC8& GetVideoProfile() const;
+
 private:
     CH263PayloadFormatPluginDevice();
     void            ConstructL();
@@ -75,6 +76,8 @@
     HX_RESULT       GetFMTParams( IHXValues*& pFMTParams );
 
 private:
+    INT32           m_lProfile;
+
     class H263DecSpecStruct
     {
     public:


From cybette at helixcommunity.org  Wed Nov  8 09:46:40 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 10:53:01 2006
Subject: [Datatype-cvs] mdf/video/format/h263 mdfh263payloadformat.cpp,
	1.2.2.5, 1.2.2.6
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/h263
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv32711

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfh263payloadformat.cpp 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: mdfh263payloadformat.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/h263/mdfh263payloadformat.cpp,v
retrieving revision 1.2.2.5
retrieving revision 1.2.2.6
diff -u -d -r1.2.2.5 -r1.2.2.6
--- mdfh263payloadformat.cpp	25 Sep 2006 21:31:41 -0000	1.2.2.5
+++ mdfh263payloadformat.cpp	8 Nov 2006 17:46:38 -0000	1.2.2.6
@@ -50,14 +50,10 @@
 #include "mdfh263payloadformat.h"
 #include "sdpchunk.h"               //SDPParseChunk
 
-#define DEFAUL_H263_PREROLL_IN_MS                2000
+#define DEFAULT_H263_PREROLL_IN_MS                2000
 #define KUidH263PayloadFormatPluginDeviceDefine  0x10207475
 #define MP4V_RN_3GPP_H263_PAYLOAD_MIME_TYPE      "video/X-RN-3GPP-H263"
 
-#define CHAR_LF	                                0x0a
-#define FORMAT_PARAMETERS_PREFIX	            "a=fmtp:0 "
-#define FORMAT_PARAMETERS_PREFIX_SIZE	        (sizeof(FORMAT_PARAMETERS_PREFIX) - 1)
-
 const TUid KUidH263PayloadFormatPluginDevice = {KUidH263PayloadFormatPluginDeviceDefine};
 
 CH263PayloadFormatPluginDevice* CH263PayloadFormatPluginDevice::NewL()
@@ -139,10 +135,11 @@
                             // Looks good as 3GPP-v2.0 DecoderSpecificInfo
                             UINT8 profile = (infov20->sData).pH263Profile[0];
                             if( profile >= 0x03 )
-                            {
+                            {
                                 MDFVIDEOLOG_INOUTFN( "    Profile 3 video, MDF does not support" );
                                 retVal = HXR_UNSUPPORTED_VIDEO; //do not support profile 3 clip
                             }
+                            m_lProfile = profile;
                         }
                         else if((ulSize >= sizeof(DecoderSpecificInfoV10) ) )
                         {
@@ -153,9 +150,10 @@
                                 UINT8 profile = (infov10->sData).pH263Profile[0];
                                 if( profile >= 0x03 )
                                 {
-                                    MDFVIDEOLOG_INOUTFN( "    Profile 3 video, MDF does not support" );
+                                    MDFVIDEOLOG_INOUTFN( "    Profile 3 video, MDF does not support" );
                                     retVal = HXR_UNSUPPORTED_VIDEO; //do not support profile 3 clip
                                 }
+                                m_lProfile = profile;
                             }
                         }
                     }
@@ -175,11 +173,6 @@
             {
                 MDFVIDEOLOG_INOUTFN( " GetFMTParams is OK " );
                     
-                ULONG32 ulProfileLevelID = 0;
-                retValFMT = pFMTParams->GetPropertyULONG32( "FMTPprofile-level-id", ulProfileLevelID );
-                
-                MDFVIDEOLOG_WRITE_FORMAT( "<-> FMTPprofile-level-id: %d", ulProfileLevelID );
-                
                 ULONG32 ulProfile = 0;
                 retValFMT = pFMTParams->GetPropertyULONG32( "FMTPProfile", ulProfile );
                 MDFVIDEOLOG_WRITE_FORMAT( "<-> FMTPProfile: %d", ulProfile );
@@ -188,7 +181,7 @@
                 {
                     retVal = HXR_UNSUPPORTED_VIDEO;
                 }
-                
+                m_lProfile = ulProfile;
             }
             
             HX_RELEASE( pFMTParams );
@@ -279,13 +272,36 @@
 {
     MDFVIDEOLOG_ENTERFN( "GetPreRollInMs" );
     MDFVIDEOLOG_LEAVEFN( "GetPreRollInMs" );
-    return DEFAUL_H263_PREROLL_IN_MS;
+    return DEFAULT_H263_PREROLL_IN_MS;
 }
-
+
+const TDesC8& CH263PayloadFormatPluginDevice::GetVideoProfile() const
+{
+    MDFVIDEOLOG_ENTERFN( "GetVideoProfile" );
+    MDFVIDEOLOG_WRITE_FORMAT( "    Profile for h263 payload is %d", m_lProfile );
+    MDFVIDEOLOG_LEAVEFN( "GetVideoProfile" );
+
+    // For now we're only concerned with Profiles 0 (Baseline)
+    // and 3 (Version 2 Interactive and Streaming Wireless Profile)
+    if( m_lProfile == 0 )
+    {
+        return KBaseline();
+    }
+    else if( m_lProfile == 3 )
+    {
+        return KProfile3();
+    }
+    else
+    {
+        return KNullDesC8();
+    }
+}
+
 CH263PayloadFormatPluginDevice::CH263PayloadFormatPluginDevice()
-{
+: m_lProfile( UNKNOWN_PROFILE )
+{
     MDFVIDEOLOG_CREATE_NOWRITE;
-    MDFVIDEOLOG_CLASSNAME( "CH263PayloadFormatPluginDevice" );
+    MDFVIDEOLOG_CLASSNAME( "CH263PayloadFormatPluginDevice" );
     MDFVIDEOLOG_ENTERFN( "CH263PayloadFormatPluginDevice" );
     MDFVIDEOLOG_LEAVEFN( "CH263PayloadFormatPluginDevice" );
 }
@@ -318,16 +334,16 @@
 
 void CH263PayloadFormatPluginDevice::SetVideoDataUnit()
 {
-    MDFVIDEOLOG_ENTERFN( "SetVideoDataUnit" );
+    MDFVIDEOLOG_ENTERFN( "SetVideoDataUnit" );
     m_VideoDataUnitType = EDuCodedPicture;
     m_VideoDataUnitEncapsulation = EDuElementaryStream;
-    MDFVIDEOLOG_LEAVEFN( "SetVideoDataUnit" );
+    MDFVIDEOLOG_LEAVEFN( "SetVideoDataUnit" );
 }
 
 HX_RESULT CH263PayloadFormatPluginDevice::GetFMTParams( IHXValues*& pFMTParams )
 {
-    MDFVIDEOLOG_ENTERFN( "GetFMTParams" );
-    
+    MDFVIDEOLOG_ENTERFN( "GetFMTParams" );
+    
     HX_RESULT retVal = HXR_INVALID_PARAMETER;
     IHXCommonClassFactory* pCommonClassFactory = NULL;
     pFMTParams = NULL;
@@ -407,8 +423,8 @@
     }
     
     HX_RELEASE( pCommonClassFactory );
-    
-    MDFVIDEOLOG_RETURNFN( "GetFMTParams", retVal );
+    
+    MDFVIDEOLOG_RETURNFN( "GetFMTParams", retVal );
     return retVal;
 }
 


From cybette at helixcommunity.org  Wed Nov  8 09:47:47 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 10:54:07 2006
Subject: [Datatype-cvs] mdf/video/format/h264/pub mdfh264payloadformat.h,
	1.1.2.5, 1.1.2.6
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/h264/pub
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv407

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfh264payloadformat.h 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: mdfh264payloadformat.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/h264/pub/mdfh264payloadformat.h,v
retrieving revision 1.1.2.5
retrieving revision 1.1.2.6
diff -u -d -r1.1.2.5 -r1.1.2.6
--- mdfh264payloadformat.h	6 Nov 2006 17:31:53 -0000	1.1.2.5
+++ mdfh264payloadformat.h	8 Nov 2006 17:47:45 -0000	1.1.2.6
@@ -70,6 +70,7 @@
     virtual HX_RESULT     FillBuffer( TPtr8& buffer, const CMediaPacket* pMediaPacket ) const;
     virtual void          Reset( UINT32 ulBeginTime );
     virtual UINT32        GetPreRollInMs() const;
+    virtual const TDesC8& GetVideoProfile() const;
 
 private:
     CH264PayloadFormatPluginDevice();
@@ -80,6 +81,7 @@
     virtual HXBOOL        FormPictureHeader( TVideoPictureHeader& pPictureHeader );
     HX_RESULT             CreateAllocators();
     static void           KillInputBuffer( void* pBuffer, void* pUserData );
+    HX_RESULT             GetFMTParams( IHXValues*& pFMTParams );
     UINT32 CalculateDataLength(const HXCODEC_DATA* pCodecPacket) const;
 
 private:
@@ -91,6 +93,7 @@
     //Without m_pH264Depacketizer, m_pDepacketizer needs to be up-casted.
     IMP4VPayloadFormat*        m_pH264Depacketizer;
     UINT8                      m_uNalUnitLenInByte;
+    INT32                      m_lProfile;
 
     MDFVIDEOLOG_DEFINE;
 };


From cybette at helixcommunity.org  Wed Nov  8 09:49:30 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 10:55:50 2006
Subject: [Datatype-cvs] mdf/video/format/h264 mdfh264payloadformat.cpp,
	1.1.2.6, 1.1.2.7
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/h264
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv564

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfh264payloadformat.cpp 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: mdfh264payloadformat.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/h264/mdfh264payloadformat.cpp,v
retrieving revision 1.1.2.6
retrieving revision 1.1.2.7
diff -u -d -r1.1.2.6 -r1.1.2.7
--- mdfh264payloadformat.cpp	6 Nov 2006 17:28:55 -0000	1.1.2.6
+++ mdfh264payloadformat.cpp	8 Nov 2006 17:49:28 -0000	1.1.2.7
@@ -48,11 +48,13 @@
  * ***** END LICENSE BLOCK ***** */
 
 #include "mdfh264payloadformat.h"
+#include        //strtoul
+#include "sdpchunk.h"     //SDPParseChunk
 
 #define MP4V_HX_AVC1_PAYLOAD_MIME_TYPE      "video/X-HX-AVC1"
 #define MP4V_H264_PAYLOAD_MIME_TYPE         "video/H264"
 
-#define DEFAUL_H264_PREROLL_IN_MS               3500
+#define DEFAULT_H264_PREROLL_IN_MS               3500
 #define KUidH264PayloadFormatPluginDeviceDefine 0x1020747B
 const TUid KUidH264PayloadFormatPluginDevice =  {KUidH264PayloadFormatPluginDeviceDefine};
 
@@ -123,11 +125,37 @@
         {
             MDFVIDEOLOG_INOUTFN( "create Payload for video/X-HX-AVC1" );
             m_pH264Depacketizer = new MP4VPayloadFormat(); //a referernce pointer
+
+            IHXValues* pFMTParams = NULL;
+            HX_RESULT retValFMT = GetFMTParams( pFMTParams );
+
+            if( SUCCEEDED( retValFMT ) && pFMTParams )
+            {
+                MDFVIDEOLOG_INOUTFN( " GetFMTParams is OK " );
+
+                ULONG32 ulProfileLevelID = 0;
+                retValFMT = pFMTParams->GetPropertyULONG32( "FMTPprofile-level-id", ulProfileLevelID );
+                MDFVIDEOLOG_WRITE_FORMAT( "<-> FMTPprofile-level-id: %d", ulProfileLevelID );
+
+                m_lProfile = ulProfileLevelID;
+            }
+            HX_RELEASE( pFMTParams );
         }
         else if( strcasecmp(pMimeTypeData, MP4V_H264_PAYLOAD_MIME_TYPE) == 0 )
         {
             MDFVIDEOLOG_INOUTFN( "create Payload for video/H264" );
             m_pH264Depacketizer = new H264PayloadFormat(); //a referernce pointer
+
+            IHXBuffer* pProfileLevelIDString = NULL;
+            HX_ASSERT( m_pHeader );
+            HX_RESULT retValFMT = m_pHeader->GetPropertyCString( "FMTPprofile-level-id", pProfileLevelIDString );
+            if( SUCCEEDED(retValFMT) )
+            {
+                char* pEnd;
+                m_lProfile = strtoul( (const char*)pProfileLevelIDString->GetBuffer(), &pEnd, 16 );
+                MDFVIDEOLOG_WRITE_FORMAT( "<-> FMTPprofile-level-id: %d", m_lProfile );
+            }
+            HX_RELEASE(pProfileLevelIDString);
          }
         else
         {
@@ -294,12 +322,41 @@
 {
     MDFVIDEOLOG_ENTERFN( "GetPreRollInMs" );
     MDFVIDEOLOG_LEAVEFN( "GetPreRollInMs" );
-    return DEFAUL_H264_PREROLL_IN_MS;
+    return DEFAULT_H264_PREROLL_IN_MS;
+}
+
+const TDesC8& CH264PayloadFormatPluginDevice::GetVideoProfile() const
+{
+    MDFVIDEOLOG_ENTERFN( "GetVideoProfile" );
+    MDFVIDEOLOG_WRITE_FORMAT( "    Profile for h264 payload is %d", m_lProfile );
+    MDFVIDEOLOG_LEAVEFN( "GetVideoProfile" );
+
+    // From the ITU-T H.264 standard, Baseline profile is specified by profile_idc 66 = 0x42
+    //                                Main     profile is specified by profile_idc 77 = 0x4D
+    //                                Extended profile is specified by profile_idc 88 = 0x58
+    // (profile_idc is the first two digits of a 6-digit Hex representation of the profile-level-id)
+    if( ( m_lProfile >= 0x420000 ) && ( m_lProfile <= 0x42FFFF ) )
+    {
+        return KBaseline();
+    }
+    else if( ( m_lProfile >= 0x4D0000 ) && ( m_lProfile <= 0x4DFFFF ) )
+    {
+        return KMain();
+    }
+    else if( ( m_lProfile >= 0x580000 ) && ( m_lProfile <= 0x58FFFF ) )
+    {
+        return KExtended();
+    }
+    else
+    {
+        return KNullDesC8();
+    }
 }
 
 CH264PayloadFormatPluginDevice::CH264PayloadFormatPluginDevice()
 : m_pInputAllocator( NULL ),
-  m_pH264Depacketizer( NULL )
+  m_pH264Depacketizer( NULL ),
+  m_lProfile( UNKNOWN_PROFILE )
 {
     MDFVIDEOLOG_CREATE_NOWRITE;
     MDFVIDEOLOG_CLASSNAME( "CH264PayloadFormatPluginDevice" );
@@ -496,6 +553,94 @@
     }
 }
 
+HX_RESULT CH264PayloadFormatPluginDevice::GetFMTParams( IHXValues*& pFMTParams )
+{
+    MDFVIDEOLOG_ENTERFN( "GetFMTParams" );
+    
+    HX_RESULT retVal = HXR_INVALID_PARAMETER;
+    IHXCommonClassFactory* pCommonClassFactory = NULL;
+    pFMTParams = NULL;
+    
+    if( m_pHeader && m_pContext )
+    {
+        retVal = m_pContext->QueryInterface(IID_IHXCommonClassFactory,
+                                            (void**) &pCommonClassFactory);
+    }
+    
+    if( SUCCEEDED( retVal ) )
+    {
+        char *pData = NULL;
+        char* pAllocData = NULL;
+        IHXBuffer* pSDPData = NULL;
+        ULONG32 ulTryIdx = 0;
+        
+        do
+        {
+            if( ulTryIdx == 0 )
+            {
+                retVal = m_pHeader->GetPropertyCString( "SDPData", pSDPData );
+
+                if (SUCCEEDED(retVal))
+                {
+                    pData = (char*) pSDPData->GetBuffer();
+
+                    retVal = HXR_FAIL;
+                    if( pData )
+                    {
+                        retVal = HXR_OK;
+                    }
+                }
+            }
+            else
+            {
+                retVal = m_pHeader->GetPropertyCString( "PayloadParameters", pSDPData );
+
+                if( SUCCEEDED( retVal ) )
+                {
+                    ULONG32 ulDataLen;
+                    
+                    pData = (char*) pSDPData->GetBuffer();
+                    ulDataLen = strlen(pData);
+                    
+                    pAllocData = new char [ulDataLen + FORMAT_PARAMETERS_PREFIX_SIZE + 2];
+                    
+                    retVal = HXR_OUTOFMEMORY;
+                    if( pAllocData )
+                    {
+                        strcpy(pAllocData, FORMAT_PARAMETERS_PREFIX); /* Flawfinder: ignore */
+                        strcpy(pAllocData + FORMAT_PARAMETERS_PREFIX_SIZE, pData); /* Flawfinder: ignore */
+                        pAllocData[FORMAT_PARAMETERS_PREFIX_SIZE + ulDataLen] =  CHAR_LF;
+                        pAllocData[FORMAT_PARAMETERS_PREFIX_SIZE + 1 + ulDataLen] = '\0';
+                        
+                        pData = pAllocData;
+                        retVal = HXR_OK;
+                    }
+                }
+            }
+            
+            if (SUCCEEDED(retVal))
+            {
+                retVal = SDPParseChunk(pData,
+                    strlen(pData),
+                    pFMTParams,     //pValues,
+                    pCommonClassFactory, //m_pClassFactory,
+                    SDPCTX_Renderer);
+            }
+            
+            HX_VECTOR_DELETE( pAllocData );
+            
+            HX_RELEASE( pSDPData );
+            
+            ulTryIdx++;
+        } while( FAILED( retVal ) && ( ulTryIdx < 2 ) );
+    }
+    
+    HX_RELEASE( pCommonClassFactory );
+    
+    MDFVIDEOLOG_RETURNFN( "GetFMTParams", retVal );
+    return retVal;
+}
+
 const TImplementationProxy ImplementationTable[] =
 {
     IMPLEMENTATION_PROXY_ENTRY(KUidH264PayloadFormatPluginDeviceDefine, CH264PayloadFormatPluginDevice::NewL)


From cybette at helixcommunity.org  Wed Nov  8 09:50:55 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 10:57:14 2006
Subject: [Datatype-cvs] mdf/video/format/h264 Umakefil,1.1.2.3,1.1.2.4
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/h264
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv628

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	Umakefil 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: Umakefil
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/h264/Umakefil,v
retrieving revision 1.1.2.3
retrieving revision 1.1.2.4
diff -u -d -r1.1.2.3 -r1.1.2.4
--- Umakefil	19 Jul 2006 13:38:37 -0000	1.1.2.3
+++ Umakefil	8 Nov 2006 17:50:53 -0000	1.1.2.4
@@ -52,7 +52,8 @@
                             "datatype/mp4/payload/pub",
                             "datatype/mdf/video/format/common/pub",
                             "datatype/rm/common/pub",
-                            "datatype/rm/include")
+                            "datatype/rm/include",
+                            "protocol/sdp/pub")
 
 project.AddModuleLibraries( "common/dbgtool[debuglib]",
                             "common/util[utillib]",
@@ -64,7 +65,8 @@
                             "datatype/mp4/payload[mp4pyldlib]",
                             "datatype/mdf/video/format/common[mdfpayloadformatlib]",
                             "datatype/rm/common[rmcomlib]",
-                            "datatype/mp4/common[mp4comlib]")
+                            "datatype/mp4/common[mp4comlib]",
+                            "protocol/sdp[sdplib]")
 
 project.AddIncludes("../../common/include")
 


From cybette at helixcommunity.org  Wed Nov  8 09:52:03 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 10:58:23 2006
Subject: [Datatype-cvs] mdf/video/format/mp4/pub mdfmp4payloadformat.h,
	1.2.2.6, 1.2.2.7
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/mp4/pub
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv707

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfmp4payloadformat.h 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: mdfmp4payloadformat.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/mp4/pub/mdfmp4payloadformat.h,v
retrieving revision 1.2.2.6
retrieving revision 1.2.2.7
diff -u -d -r1.2.2.6 -r1.2.2.7
--- mdfmp4payloadformat.h	6 Nov 2006 17:32:40 -0000	1.2.2.6
+++ mdfmp4payloadformat.h	8 Nov 2006 17:52:01 -0000	1.2.2.7
@@ -69,6 +69,7 @@
     virtual HX_RESULT     FillBuffer( TPtr8& buffer, const CMediaPacket* pMediaPacket ) const;
     virtual void          Reset( UINT32 ulBeginTime );
     virtual UINT32        GetPreRollInMs() const;
+    virtual const TDesC8& GetVideoProfile() const;
 
 private:
     CMP4PayloadFormatPluginDevice();
@@ -79,6 +80,7 @@
     virtual HXBOOL        FormPictureHeader( TVideoPictureHeader& pPictureHeader );
     HX_RESULT             CreateAllocators();
     static void           KillInputBuffer( void* pBuffer, void* pUserData );
+    HX_RESULT             GetFMTParams( IHXValues*& pFMTParams );
 
 private:
     CHXBufferMemoryAllocator* m_pInputAllocator;
@@ -89,6 +91,9 @@
     //Without m_pMP4Depacketizer, m_pDepacketizer needs to be up-casted.
     IMP4VPayloadFormat*       m_pMP4Depacketizer;
 
+private:
+    INT32                 m_lProfile;
+
     MDFVIDEOLOG_DEFINE;
     
 };


From cybette at helixcommunity.org  Wed Nov  8 09:53:37 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 10:59:57 2006
Subject: [Datatype-cvs] 
	mdf/video/format/mp4 mdfmp4payloadformat.cpp, 1.2.2.9, 1.2.2.10
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/mp4
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv847

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfmp4payloadformat.cpp 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: mdfmp4payloadformat.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/mp4/mdfmp4payloadformat.cpp,v
retrieving revision 1.2.2.9
retrieving revision 1.2.2.10
diff -u -d -r1.2.2.9 -r1.2.2.10
--- mdfmp4payloadformat.cpp	6 Nov 2006 17:32:22 -0000	1.2.2.9
+++ mdfmp4payloadformat.cpp	8 Nov 2006 17:53:35 -0000	1.2.2.10
@@ -48,8 +48,9 @@
  * ***** END LICENSE BLOCK ***** */
 
 #include "mdfmp4payloadformat.h"
+#include "sdpchunk.h"               //SDPParseChunk
 
-#define DEFAUL_MP4_PREROLL_IN_MS                2000
+#define DEFAULT_MP4_PREROLL_IN_MS                2000
 #define KUidMP4PayloadFormatPluginDeviceDefine  0x10207477
 const TUid KUidMP4PayloadFormatPluginDevice =   {KUidMP4PayloadFormatPluginDeviceDefine};
 
@@ -97,6 +98,21 @@
     m_pMP4Depacketizer = new MP4VPayloadFormat(); //a referernce pointer
     aPayloadFormatObject = m_pMP4Depacketizer;
     
+    IHXValues* pFMTParams = NULL;
+    HX_RESULT retValFMT = GetFMTParams( pFMTParams );
+
+    if( SUCCEEDED( retValFMT ) && pFMTParams )
+    {
+        MDFVIDEOLOG_INOUTFN( " GetFMTParams is OK " );
+
+        ULONG32 ulProfileLevelID = 0;
+        retValFMT = pFMTParams->GetPropertyULONG32( "FMTPprofile-level-id", ulProfileLevelID );
+        MDFVIDEOLOG_WRITE_FORMAT( "<-> FMTPprofile-level-id: %d", ulProfileLevelID );
+
+        m_lProfile = ulProfileLevelID;
+    }
+    HX_RELEASE( pFMTParams );
+
     if( aPayloadFormatObject )
     {
         m_pMP4Depacketizer->SetAllocator( m_pInputAllocator );
@@ -232,12 +248,37 @@
 {
     MDFVIDEOLOG_ENTERFN( "GetPreRollInMs" );
     MDFVIDEOLOG_LEAVEFN( "GetPreRollInMs" );
-    return DEFAUL_MP4_PREROLL_IN_MS;
+    return DEFAULT_MP4_PREROLL_IN_MS;
+}
+
+const TDesC8& CMP4PayloadFormatPluginDevice::GetVideoProfile() const
+{
+    MDFVIDEOLOG_ENTERFN( "GetVideoProfile" );
+    MDFVIDEOLOG_WRITE_FORMAT( "    Profile for mp4 payload is %d", m_lProfile );
+    MDFVIDEOLOG_LEAVEFN( "GetVideoProfile" );
+
+    // From ISO/IEC 14496-2 Annex G Table G-1
+    // Simple profiles (with various levels) have profile indication <= 18
+    // For everything else we'll consider as Advanced profile for now
+    // (even though there are Core, Main, Hybrid profiles etc.)
+    if( ( m_lProfile > 0 ) && ( m_lProfile <= 18 ) )
+    {
+        return KSimple();
+    }
+    else if( ( m_lProfile > 18 ) && ( m_lProfile <= 211 ) )
+    {
+        return KAdvanced();
+    }
+    else
+    {
+        return KNullDesC8();
+    }
 }
 
 CMP4PayloadFormatPluginDevice::CMP4PayloadFormatPluginDevice()
 : m_pInputAllocator( NULL ),
-  m_pMP4Depacketizer( NULL )
+  m_pMP4Depacketizer( NULL ),
+  m_lProfile( UNKNOWN_PROFILE )
 {
     MDFVIDEOLOG_CREATE_NOWRITE;
     MDFVIDEOLOG_CLASSNAME( "CMP4PayloadFormatPluginDevice" );
@@ -344,6 +385,94 @@
     }
 }
 
+HX_RESULT CMP4PayloadFormatPluginDevice::GetFMTParams( IHXValues*& pFMTParams )
+{
+    MDFVIDEOLOG_ENTERFN( "GetFMTParams" );
+    
+    HX_RESULT retVal = HXR_INVALID_PARAMETER;
+    IHXCommonClassFactory* pCommonClassFactory = NULL;
+    pFMTParams = NULL;
+    
+    if( m_pHeader && m_pContext )
+    {
+        retVal = m_pContext->QueryInterface(IID_IHXCommonClassFactory,
+                                            (void**) &pCommonClassFactory);
+    }
+    
+    if( SUCCEEDED( retVal ) )
+    {
+        char *pData = NULL;
+        char* pAllocData = NULL;
+        IHXBuffer* pSDPData = NULL;
+        ULONG32 ulTryIdx = 0;
+        
+        do
+        {
+            if( ulTryIdx == 0 )
+            {
+                retVal = m_pHeader->GetPropertyCString( "SDPData", pSDPData );
+
+                if (SUCCEEDED(retVal))
+                {
+                    pData = (char*) pSDPData->GetBuffer();
+
+                    retVal = HXR_FAIL;
+                    if( pData )
+                    {
+                        retVal = HXR_OK;
+                    }
+                }
+            }
+            else
+            {
+                retVal = m_pHeader->GetPropertyCString( "PayloadParameters", pSDPData );
+
+                if( SUCCEEDED( retVal ) )
+                {
+                    ULONG32 ulDataLen;
+                    
+                    pData = (char*) pSDPData->GetBuffer();
+                    ulDataLen = strlen(pData);
+                    
+                    pAllocData = new char [ulDataLen + FORMAT_PARAMETERS_PREFIX_SIZE + 2];
+                    
+                    retVal = HXR_OUTOFMEMORY;
+                    if( pAllocData )
+                    {
+                        strcpy(pAllocData, FORMAT_PARAMETERS_PREFIX); /* Flawfinder: ignore */
+                        strcpy(pAllocData + FORMAT_PARAMETERS_PREFIX_SIZE, pData); /* Flawfinder: ignore */
+                        pAllocData[FORMAT_PARAMETERS_PREFIX_SIZE + ulDataLen] =  CHAR_LF;
+                        pAllocData[FORMAT_PARAMETERS_PREFIX_SIZE + 1 + ulDataLen] = '\0';
+                        
+                        pData = pAllocData;
+                        retVal = HXR_OK;
+                    }
+                }
+            }
+            
+            if (SUCCEEDED(retVal))
+            {
+                retVal = SDPParseChunk(pData,
+                    strlen(pData),
+                    pFMTParams,     //pValues,
+                    pCommonClassFactory, //m_pClassFactory,
+                    SDPCTX_Renderer);
+            }
+            
+            HX_VECTOR_DELETE( pAllocData );
+            
+            HX_RELEASE( pSDPData );
+            
+            ulTryIdx++;
+        } while( FAILED( retVal ) && ( ulTryIdx < 2 ) );
+    }
+    
+    HX_RELEASE( pCommonClassFactory );
+    
+    MDFVIDEOLOG_RETURNFN( "GetFMTParams", retVal );
+    return retVal;
+}
+
 const TImplementationProxy ImplementationTable[] = 
 {
     IMPLEMENTATION_PROXY_ENTRY(KUidMP4PayloadFormatPluginDeviceDefine, CMP4PayloadFormatPluginDevice::NewL)


From cybette at helixcommunity.org  Wed Nov  8 09:54:27 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 11:00:46 2006
Subject: [Datatype-cvs] mdf/video/format/mp4 Umakefil, 1.1.1.1.2.1,
	1.1.1.1.2.2
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/mp4
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv1109

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	Umakefil 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: Umakefil
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/mp4/Umakefil,v
retrieving revision 1.1.1.1.2.1
retrieving revision 1.1.1.1.2.2
diff -u -d -r1.1.1.1.2.1 -r1.1.1.1.2.2
--- Umakefil	19 Jul 2006 13:38:49 -0000	1.1.1.1.2.1
+++ Umakefil	8 Nov 2006 17:54:25 -0000	1.1.1.1.2.2
@@ -52,7 +52,8 @@
                             "datatype/mp4/payload/pub",
                             "datatype/mdf/video/format/common/pub",
                             "datatype/rm/common/pub",
-                            "datatype/rm/include")
+                            "datatype/rm/include",
+                            "protocol/sdp/pub")
 
 project.AddModuleLibraries( "common/dbgtool[debuglib]", 
                             "common/util[utillib]", 
@@ -64,7 +65,8 @@
                             "datatype/mp4/payload[mp4pyldlib]",
                             "datatype/mdf/video/format/common[mdfpayloadformatlib]",
                             "datatype/rm/common[rmcomlib]",
-                            "datatype/mp4/common[mp4comlib]")
+                            "datatype/mp4/common[mp4comlib]",
+                            "protocol/sdp[sdplib]")
 
 project.AddIncludes("../../common/include")
 


From cybette at helixcommunity.org  Wed Nov  8 09:55:49 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 11:02:09 2006
Subject: [Datatype-cvs] mdf/video/format/rm/pub mdfrvxpayloadformat.h,
	1.1.2.5, 1.1.2.6
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/rm/pub
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv1153

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfrvxpayloadformat.h 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: mdfrvxpayloadformat.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/rm/pub/mdfrvxpayloadformat.h,v
retrieving revision 1.1.2.5
retrieving revision 1.1.2.6
diff -u -d -r1.1.2.5 -r1.1.2.6
--- mdfrvxpayloadformat.h	6 Nov 2006 17:34:18 -0000	1.1.2.5
+++ mdfrvxpayloadformat.h	8 Nov 2006 17:55:47 -0000	1.1.2.6
@@ -69,6 +69,7 @@
     virtual CMediaPacket* CreateAssembledPacket( IHXPacket* pPayloadData );
     virtual UINT32        GetPreRollInMs() const;
     virtual HX_RESULT     FillBuffer( TPtr8& inputBuffer, const CMediaPacket* pMediaPacket ) const;
+    virtual const TDesC8& GetVideoProfile() const;
 
 private:
     CRVXPayloadFormatPluginDevice();


From cybette at helixcommunity.org  Wed Nov  8 09:57:14 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 11:03:33 2006
Subject: [Datatype-cvs] 
	mdf/video/format/rm mdfrvxpayloadformat.cpp, 1.1.2.7, 1.1.2.8
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/rm
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv1196

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfrvxpayloadformat.cpp 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: mdfrvxpayloadformat.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/rm/mdfrvxpayloadformat.cpp,v
retrieving revision 1.1.2.7
retrieving revision 1.1.2.8
diff -u -d -r1.1.2.7 -r1.1.2.8
--- mdfrvxpayloadformat.cpp	6 Nov 2006 17:33:59 -0000	1.1.2.7
+++ mdfrvxpayloadformat.cpp	8 Nov 2006 17:57:11 -0000	1.1.2.8
@@ -51,7 +51,7 @@
 #include "hxmtypes.h"
 #include 
 
-#define DEFAUL_RVX_PREROLL_IN_MS                3500
+#define DEFAULT_RVX_PREROLL_IN_MS                3500
 #define KUidRVXPayloadFormatPluginDeviceDefine  0x10207479
 const TUid KUidRVXPayloadFormatPluginDevice = {KUidRVXPayloadFormatPluginDeviceDefine};
 
@@ -171,7 +171,14 @@
 {
     MDFVIDEOLOG_ENTERFN( "GetPreRollInMs" );
     MDFVIDEOLOG_LEAVEFN( "GetPreRollInMs" );
-    return DEFAUL_RVX_PREROLL_IN_MS;
+    return DEFAULT_RVX_PREROLL_IN_MS;
+}
+
+const TDesC8& CRVXPayloadFormatPluginDevice::GetVideoProfile() const
+{
+    MDFVIDEOLOG_ENTERFN( "GetVideoProfile" );
+    MDFVIDEOLOG_LEAVEFN( "GetVideoProfile" );
+    return KNullDesC8();
 }
 
 HX_RESULT CRVXPayloadFormatPluginDevice::FillBuffer( TPtr8& inputBuffer, const CMediaPacket* pMediaPacket ) const


From cybette at helixcommunity.org  Wed Nov  8 09:58:50 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 11:05:10 2006
Subject: [Datatype-cvs] mdf/video/renderer/pub mdfpluginmanager.h, 1.2.2.4,
	1.2.2.5
Message-ID: 

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

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfpluginmanager.h 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: mdfpluginmanager.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/renderer/pub/mdfpluginmanager.h,v
retrieving revision 1.2.2.4
retrieving revision 1.2.2.5
diff -u -d -r1.2.2.4 -r1.2.2.5
--- mdfpluginmanager.h	6 Jul 2006 15:17:18 -0000	1.2.2.4
+++ mdfpluginmanager.h	8 Nov 2006 17:58:48 -0000	1.2.2.5
@@ -78,7 +78,12 @@
     TBool CMdfPluginManager::GetIdsByMimeTypeL( CPluginPackage& aPluginPackage );
     void Reset();
     char** GetSupportedMimeType(); //transfer ownership
-    
+    HBufC8* ConvertToStandardMimeTypeL( const TDesC8& aMimeType ) const;
+    HX_RESULT SelectPackageByCodecRule( const TDesC8& aMimeType,
+                                        TUid  decUidNeeded,
+                                        TUid  ppUidNeeded,
+                                        CPluginPackage& pluginPackage ) const;
+
 private:
     CMdfPluginManager();
     void ConstructL();
@@ -103,8 +108,7 @@
     virtual void MdvppStreamEnd(){}
     
 private:
-    HBufC8* ConvertToStandardMimeTypeL( const TDesC8& aMimeType );
-    HXBOOL IsDecoderSupportMimeTypeL( const CVideoDecoderInfo* pDecoderInfo, const TDesC8& aMimeType, const CCompressedVideoFormat*& pCCompressedVideoFormat ) const;
+    HXBOOL IsDecoderSupportMimeTypeL( const CVideoDecoderInfo* pDecoderInfo, const TDesC8& aMimeType, const CCompressedVideoFormat*& pCCompressedVideoFormat ) const;
     
 private:
     RPointerArray     m_HwDecoderArray;


From cybette at helixcommunity.org  Wed Nov  8 10:07:28 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 11:13:48 2006
Subject: [Datatype-cvs] mdf/video/renderer/pub mdfvideoadapter.h, 1.3.2.18,
	1.3.2.19
Message-ID: 

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

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfvideoadapter.h 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: mdfvideoadapter.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/renderer/pub/mdfvideoadapter.h,v
retrieving revision 1.3.2.18
retrieving revision 1.3.2.19
diff -u -d -r1.3.2.18 -r1.3.2.19
--- mdfvideoadapter.h	6 Nov 2006 19:23:16 -0000	1.3.2.18
+++ mdfvideoadapter.h	8 Nov 2006 18:07:26 -0000	1.3.2.19
@@ -71,7 +71,7 @@
 #include "cpacemkr.h"           //CVideoPaceMaker
 #include "mdpkt.h"
 #include "hxthread.h"
-#include "mdfpluginpackage.h"   //CPluginPackage
+#include "mdfpluginmanager.h"   //CMdfPluginManager
 #include "mdfpayloadformat.h"   //CPayloadFormatPluginDevice
 #include "hxslist.h"            //CHXSimpleList
 #include "mdfgenericlog.h"      //logging
@@ -83,6 +83,8 @@
 #include "videowindowcontrol.h"
 #endif
 
+#define CODECCONFIGRULE_ARRAY_GRANULARITY    4
+
 class CMdfVideoAdapter : public IUnknown,
                          public IHXSurfaceControl,
                          public IHXDSAControl,
@@ -99,10 +101,11 @@
     STDMETHOD_( UINT32,Release )  (THIS);
 
 public:
-    HX_RESULT   Init( const CPluginPackage& pluginPackage,
-                      MMMFClockSource*      pClcokSource,
-                      IHXValues*            pHeader,
-                      IUnknown*             pContext );
+    HX_RESULT   Init( CPluginPackage&          pluginPackage, 
+                      const CMdfPluginManager& pluginManager, 
+                      MMMFClockSource*         pClcokSource, 
+                      IHXValues*               pHeader,
+                      IUnknown*                pContext );
 
     HX_RESULT   VideoPause();
     HX_RESULT   VideoResume();
@@ -130,8 +133,9 @@
     HX_RESULT   Blt();
     void        BltL();
     HXBOOL      PrepareUpdatedBltMediaPacket();
+    HX_RESULT   ParseMDFCodecRules( UINT32& ulCount );
 
-public:
+public: 
     //From MMMFDevVideoPlayObserver
     virtual void MdvpoNewBuffers();
     virtual void MdvpoReturnPicture(TVideoPicture* aPicture);
@@ -188,6 +192,17 @@
         EInitializedFailed
     };
 
+    typedef struct _CodecConfigRule
+    {
+        HBufC8*     pMimeType;
+        HBufC8*     pProfile;
+        UINT32      ulFrameResolution;
+        TUid        DecoderUid;
+        TUid        PostProcessorUid;
+        TUid        DefaultDecoderUid;
+        TUid        DefaultPostProcUid;
+    } CodecConfigRule;
+
 private:
     IHXSite*            m_pSite;
     MMMFClockSource*    m_pClockSource;
@@ -248,6 +263,8 @@
     UINT32              m_ulContrast;
     HXxRect             m_CropRect;
 
+    RPointerArray  m_CodecConfigRuleArray;
+
     MDFVIDEOLOG_DEFINE;
 
 };


From cybette at helixcommunity.org  Wed Nov  8 10:09:42 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 11:16:02 2006
Subject: [Datatype-cvs] mdf/video/renderer mdfpluginmanager.cpp, 1.2.2.8,
	1.2.2.9
Message-ID: 

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

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfpluginmanager.cpp 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: mdfpluginmanager.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/renderer/mdfpluginmanager.cpp,v
retrieving revision 1.2.2.8
retrieving revision 1.2.2.9
diff -u -d -r1.2.2.8 -r1.2.2.9
--- mdfpluginmanager.cpp	17 Jul 2006 21:22:19 -0000	1.2.2.8
+++ mdfpluginmanager.cpp	8 Nov 2006 18:09:40 -0000	1.2.2.9
@@ -194,8 +194,6 @@
     MDFVIDEOLOG_WRITE_FORMAT( "<-> Mimetype investigated for support is %s", aMimeType.Ptr() );
     
     TBool foundPackage       = EFalse;
-    TBool foundPayloadFormat = EFalse;
-    
     TInt  entryLocation = -1;
     
     //search the list
@@ -228,7 +226,7 @@
         TInt payloadformatCount = m_PayloadFormatArray.Count();
         CPayloadFormatInfo* payloadformatinfo = NULL;
         
-        for( TInt m = 0; m < payloadformatCount && !foundPayloadFormat; m++ )
+        for( TInt m = 0; m < payloadformatCount; m++ )
         {
             payloadformatinfo = m_PayloadFormatArray[ m ];
             MDFVIDEOLOG_WRITE_FORMAT( "<-> Payload selected id: 0x%08x", payloadformatinfo->Uid().iUid );
@@ -244,59 +242,41 @@
                 newPackage->SetVideoDataUnitEncapsulation( unitEncapsulation );
                 newPackage->SetPayloadFormatId( plId );
                 
-                foundPayloadFormat = ETrue;
-            }
-            else
-            {
-                MDFVIDEOLOG_INOUTFN( "Selected payload do NOT support mimetype" );
-            }
-        }
-        
-        if( foundPayloadFormat )
-        {        
-            MDFVIDEOLOG_INOUTFN( "Payload matches, check for decoder ..." );
-            
-            for( TInt j = 0; j < decoderCount && !foundPackage; j++ )
-            {
-                CVideoDecoderInfo* decoderInfo = m_HwDecoderArray[j];
-                MDFVIDEOLOG_WRITE_FORMAT( "<-> Decoder selected id: 0x%08x", decoderInfo->Uid().iUid );
+                MDFVIDEOLOG_INOUTFN( "Payload matches, check for decoder ..." );
+                for( TInt j = 0; j < decoderCount; j++ )
+                {
+                    CVideoDecoderInfo* decoderInfo = m_HwDecoderArray[j];
+                    MDFVIDEOLOG_WRITE_FORMAT( "<-> Decoder selected id: 0x%08x", decoderInfo->Uid().iUid );
                 
-                const CCompressedVideoFormat* format = NULL;
+                    const CCompressedVideoFormat* format = NULL;
 
-                if( IsDecoderSupportMimeTypeL( decoderInfo, *convertedMimeType, format ) )
-                {
-                    MDFVIDEOLOG_INOUTFN( "Selected decoder do support mimetype" );
-                    TUid decoderUid = decoderInfo->Uid();
-                    CMMFVideoDecodeHwDevice* dev = CMMFVideoDecodeHwDevice::NewL( decoderUid, *this );
-                    CleanupStack::PushL(dev);
-                    
-                    TVideoDataUnitType UnitType = payloadformatinfo->GetVideoDataUnitType();
-                    TVideoDataUnitEncapsulation UnitEncapsulation = payloadformatinfo->GetVideoDataUnitEncapsulation();
-                    
-                    TRAPD( error, dev->SetInputFormatL( *format, UnitType, UnitEncapsulation, ETrue ) );
-                    if( error == KErrNone )
+                    if( IsDecoderSupportMimeTypeL( decoderInfo, *convertedMimeType, format ) )
                     {
-                        MDFVIDEOLOG_INOUTFN( "dev->SetInputFormatL does not leave" );
+                        MDFVIDEOLOG_INOUTFN( "Selected decoder do support mimetype" );
+                        TUid decoderUid = decoderInfo->Uid();
+                        CMMFVideoDecodeHwDevice* dev = CMMFVideoDecodeHwDevice::NewL( decoderUid, *this );
+                        CleanupStack::PushL(dev);
+                    
+                        TRAPD( error, dev->SetInputFormatL( *format, unitType, unitEncapsulation, ETrue ) );
+                        if( error == KErrNone )
+                        {
+                            MDFVIDEOLOG_INOUTFN( "dev->SetInputFormatL does not leave" );
                         
-                        RArray decoderOutputFormat;
-                        CleanupClosePushL( decoderOutputFormat );
+                            RArray decoderOutputFormat;
+                            CleanupClosePushL( decoderOutputFormat );
 
-                        dev->GetOutputFormatListL( decoderOutputFormat );
+                            dev->GetOutputFormatListL( decoderOutputFormat );
                         
-                        MDFVIDEOLOG_INOUTFN( "dev->GetOutputFormatListL does not leave" );
-                        //check to see if postprocessor is supporting
-                        for( TInt k = 0; k < postprocessorCount && !foundPackage; k++ )
-                        {
-                            CPostProcessorInfo* postprocessorInfo = m_HwPostProcessorArray[k];
-                            MDFVIDEOLOG_WRITE_FORMAT( "<-> Postprocessor selected id: 0x%08x", postprocessorInfo->Uid().iUid );
-                            
-                            if( postprocessorInfo->SupportsDirectDisplay() )
+                            MDFVIDEOLOG_INOUTFN( "dev->GetOutputFormatListL does not leave" );
+                            //check to see if postprocessor is supporting
+                            for( TInt k = 0; k < postprocessorCount; k++ )
                             {
-                                MDFVIDEOLOG_INOUTFN( "postprocessorInfo->SupportsDirectDisplay() true" );
+                                CPostProcessorInfo* postprocessorInfo = m_HwPostProcessorArray[k];
+                                MDFVIDEOLOG_WRITE_FORMAT( "<-> Postprocessor selected id: 0x%08x", postprocessorInfo->Uid().iUid );
+                            
                                 const RArray& postprocessorInputFormat = postprocessorInfo->SupportedFormats();
                                 TUncompressedVideoFormat aCommonFormat;
-                                foundPackage = CMMFDevVideoPlay::FindCommonFormat( decoderOutputFormat.Array(), postprocessorInputFormat.Array(), aCommonFormat );
-                                if( foundPackage )
+                                if( CMMFDevVideoPlay::FindCommonFormat( decoderOutputFormat.Array(), postprocessorInputFormat.Array(), aCommonFormat ) )
                                 {
                                     MDFVIDEOLOG_INOUTFN( "Commonformat between decoder and postprocessor is found" );
 
@@ -307,34 +287,50 @@
                                     newPackage->SetHwPostProcessorId( ppId );
                                     newPackage->SetHwUncompressedVideoFormat( aCommonFormat );
                                     newPackage->SetPackageValid( ETrue );
+                                    foundPackage = ETrue;
+
                                     MDFVIDEOLOG_INOUTFN( "Mimetype is supported" );
+                                    
+                                    /////////////prepare second package////////////////////
+                                    newPackage = CPluginPackage::NewL( *newPackage );
+                                    m_PluginPackageArray.Append( newPackage );  //transfer the ownership
+                                    newPackage->SetPackageValid( EFalse );
+                                    ///////////////////////////////////////////////////////
                                 }
                                 else
                                 {
                                     MDFVIDEOLOG_INOUTFN( "Commonformat between decoder and postprocessor is NOT found" );
                                 }
-                            }
-                            else
-                            {
-                                MDFVIDEOLOG_INOUTFN( "postprocessorInfo->SupportsDirectDisplay() false" );
-                            }
+                            }   //for( TInt k = 0; k < postprocessorCount; k++ )
+                            CleanupStack::PopAndDestroy( &decoderOutputFormat );
+                        } //if( error == KErrNone )
+                        else
+                        {
+                            MDFVIDEOLOG_INOUTFN( "dev->SetInputFormatL leaves" );
                         }
-
-                        CleanupStack::PopAndDestroy( &decoderOutputFormat );
-                    }
+                        CleanupStack::PopAndDestroy(dev);
+                    } //if( IsDecoderSupportMimeTypeL( decoderInfo, *convertedMimeType, format ) )
                     else
                     {
-                        MDFVIDEOLOG_INOUTFN( "dev->SetInputFormatL leaves" );
+                        MDFVIDEOLOG_INOUTFN( "Decoder do NOT support mimetype" );
                     }
-                    CleanupStack::PopAndDestroy(dev);
-                }
-                else
-                {
-                    MDFVIDEOLOG_INOUTFN( "Decoder do NOT support mimetype" );
-                }
+                } //for( TInt j = 0; j < decoderCount; j++ )
+            } //if( payloadformatinfo->SupportMimeType( aMimeType ) )
+            else
+            {
+                MDFVIDEOLOG_INOUTFN( "Selected payload do NOT support mimetype" );
             }
-        }
+        } //for( TInt m = 0; m < payloadformatCount; m++ )
+
         CleanupStack::PopAndDestroy( convertedMimeType );
+        if( foundPackage )
+        {
+            //the last entry is not needed
+            TInt lastEntry = m_PluginPackageArray.Count() - 1;
+            HX_ASSERT( newPackage ==  m_PluginPackageArray[ lastEntry ] );
+            delete newPackage;
+            m_PluginPackageArray.Remove( lastEntry );
+        }
     }
     
     CPluginPackage* package = m_PluginPackageArray[entryLocation];
@@ -465,7 +461,7 @@
     return pMimeType;
 }
 
-HBufC8* CMdfPluginManager::ConvertToStandardMimeTypeL( const TDesC8& aMimeType )
+HBufC8* CMdfPluginManager::ConvertToStandardMimeTypeL( const TDesC8& aMimeType ) const
 {
     MDFVIDEOLOG_ENTERFN( "ConvertToStandardMimeTypeL" );
 
@@ -512,6 +508,30 @@
     return convertedMimeType;
 }
 
+HX_RESULT CMdfPluginManager::SelectPackageByCodecRule( const TDesC8& aMimeType, TUid decUidNeeded,
+                                                       TUid ppUidNeeded, CPluginPackage& pluginPackage ) const
+{
+    MDFVIDEOLOG_ENTERFN( "SelectPackageByCodecRule" );
+    HX_RESULT retVal = HXR_UNSUPPORTED_VIDEO;
+
+    TInt packagecount = m_PluginPackageArray.Count();
+    for( TInt i = 0; i < packagecount; i++ )
+    {
+        CPluginPackage* package = m_PluginPackageArray[ i ];
+        if(   ( package->GetHelixMimeType()     == aMimeType    ) &&
+              ( package->GetHwDecoderId()       == decUidNeeded ) &&
+            ( ( package->GetHwPostProcessorId() == ppUidNeeded  ) || ( ppUidNeeded == KUidZero ) ) )
+        {
+            pluginPackage = *package;
+            retVal = HXR_OK;
+            break;
+        }
+    }
+
+    MDFVIDEOLOG_RETURNFN( "SelectPackageByCodecRule", retVal );
+    return retVal;
+}
+
 HXBOOL CMdfPluginManager::IsDecoderSupportMimeTypeL( const CVideoDecoderInfo* pDecoderInfo, const TDesC8& aMimeType, const CCompressedVideoFormat*& pCCompressedVideoFormat ) const
 {
     MDFVIDEOLOG_ENTERFN( "IsDecoderSupportMimeTypeL" );


From cybette at helixcommunity.org  Wed Nov  8 10:10:59 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 11:17:18 2006
Subject: [Datatype-cvs] mdf/video/renderer mdfvidrend.cpp,1.4.2.17,1.4.2.18
Message-ID: 

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

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfvidrend.cpp 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: mdfvidrend.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/renderer/mdfvidrend.cpp,v
retrieving revision 1.4.2.17
retrieving revision 1.4.2.18
diff -u -d -r1.4.2.17 -r1.4.2.18
--- mdfvidrend.cpp	28 Sep 2006 16:38:59 -0000	1.4.2.17
+++ mdfvidrend.cpp	8 Nov 2006 18:10:57 -0000	1.4.2.18
@@ -535,7 +535,7 @@
 
     if( SUCCEEDED( retVal ) )
     {
-        retVal = m_pMdfVideoAdapter->Init( *package, m_pClockSource, m_pHeader, m_pContext );
+        retVal = m_pMdfVideoAdapter->Init( *package, *m_pPluginManager, m_pClockSource, m_pHeader, m_pContext );
     }
 
     HX_DELETE( package );


From cybette at helixcommunity.org  Wed Nov  8 10:16:37 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 11:22:56 2006
Subject: [Datatype-cvs] mdf/video/renderer mdfvideoadapter.cpp, 1.3.2.44,
	1.3.2.45
Message-ID: 

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

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfvideoadapter.cpp 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: mdfvideoadapter.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/renderer/mdfvideoadapter.cpp,v
retrieving revision 1.3.2.44
retrieving revision 1.3.2.45
diff -u -d -r1.3.2.44 -r1.3.2.45
--- mdfvideoadapter.cpp	8 Nov 2006 16:11:41 -0000	1.3.2.44
+++ mdfvideoadapter.cpp	8 Nov 2006 18:16:35 -0000	1.3.2.45
@@ -55,6 +55,7 @@
 #include "mdfvideoadapter.h"
 #include "hxprefutil.h"
 #include "hxerror.h"
+#include "hlxclib/stdlib.h"  //itoa, atol, strtoul
 #include "hxmon.h"
 
 #ifdef _WIN32
@@ -63,6 +64,7 @@
 #define DFLT_PRESENT_PRIORITY          0
 #endif
 #define BLTR_INTERVAL                  5     //ms
+#define CODEC_RULE_FIELD_COUNT         7     //number of fields in a codec config rule
 
 const TInt64 MDF_FRAME_DROP_THRESHOLD = TInt64( 3000000 ); //3000 ms
 
@@ -156,7 +158,8 @@
   m_fWidthPerc( 100.0 ),
   m_bIsScalingCalcNeeded( FALSE ),
   m_bIsDSAStartedFromClient( TRUE ),
-  m_ulContrast( 0 )
+  m_ulContrast( 0 ),
+  m_CodecConfigRuleArray( CODECCONFIGRULE_ARRAY_GRANULARITY )
 {
     MDFVIDEOLOG_CREATE_NOWRITE;
     MDFVIDEOLOG_CLASSNAME( "CMdfVideoAdapter" );
@@ -193,6 +196,9 @@
         Shutdown();
     }
 
+    m_CodecConfigRuleArray.ResetAndDestroy();
+    m_CodecConfigRuleArray.Close();
+
     HX_DELETE( m_pBltQueueMutex );
     HX_DELETE( m_pWriteMutex );
     HX_DELETE( m_pDevVideoPlay );
@@ -211,13 +217,15 @@
     MDFVIDEOLOG_LEAVEFN( "Reset" );
 }
 
-HX_RESULT CMdfVideoAdapter::Init( const CPluginPackage& pluginPackage,
-                                  MMMFClockSource*      pClockSource,
-                                  IHXValues*            pHeader,
-                                  IUnknown*             pContext )
+HX_RESULT CMdfVideoAdapter::Init( CPluginPackage&          pluginPackage,
+                                  const CMdfPluginManager& pluginManager, 
+                                  MMMFClockSource*         pClockSource,
+                                  IHXValues*               pHeader,
+                                  IUnknown*                pContext )
 {
     MDFVIDEOLOG_ENTERFN2( "Init" );
     HX_RESULT retVal( HXR_OK );
+    HXBOOL bUseCodecConfigRules = TRUE;
 
     //if ReadPrefBOOL() fails, m_bAutoScale is unchanged.
     ReadPrefBOOL( pContext, "AutoScale", m_bAutoScale );
@@ -259,6 +267,82 @@
         retVal = m_pPayloadFormatPluginDevice->Init( m_pContext, m_pHeader );
     }
 
+    if( SUCCEEDED( retVal ) )
+    {
+        UINT32 rulesCount = 0;
+        retVal = ParseMDFCodecRules( rulesCount );
+        if( rulesCount == 0 )
+        {
+            bUseCodecConfigRules = FALSE;
+        }
+    }
+
+    if ( SUCCEEDED( retVal ) && bUseCodecConfigRules )
+    {
+        // find codec rule to be applied
+        const TDesC8& aMimeType = pluginPackage.GetHelixMimeType();
+        const TDesC8& aProfile  = m_pPayloadFormatPluginDevice->GetVideoProfile();
+        MDFVIDEOLOG_WRITE_FORMAT( "<-> Profile string for video is %s", aProfile.Ptr() );
+
+        HBufC8* convertedMimeType = NULL;
+        TRAPD( error, convertedMimeType = pluginManager.ConvertToStandardMimeTypeL( aMimeType ) );
+        if( error == KErrNone )
+        {
+            HXBOOL foundRule = FALSE;
+            UINT8 count      = m_CodecConfigRuleArray.Count();
+            TUid decUidToUse = KUidZero;
+            TUid ppUidToUse  = KUidZero;
+
+            for( UINT8 i = 0; i < count; i++ )
+            {
+                CodecConfigRule* pCodecRule = m_CodecConfigRuleArray[i];
+                if( ( pCodecRule ) && ( *(pCodecRule->pMimeType) == *convertedMimeType ) )
+                {
+                    if( ( aProfile                == KNullDesC8() ) ||
+                        ( *(pCodecRule->pProfile) == KNullDesC8() ) ||
+                        ( *(pCodecRule->pProfile) == aProfile ) )
+                    {
+                        UINT32 resolution = m_pPayloadFormatPluginDevice->GetVideoResolution();
+                        MDFVIDEOLOG_WRITE_FORMAT( "<-> Video resolution is %d", resolution );
+                        if( ( resolution > 0 ) && ( resolution <= pCodecRule->ulFrameResolution ) )
+                        {
+                            decUidToUse = pCodecRule->DecoderUid;
+                            ppUidToUse  = pCodecRule->PostProcessorUid;
+                        }
+                        else
+                        {
+                            decUidToUse = pCodecRule->DefaultDecoderUid;
+                            ppUidToUse  = pCodecRule->DefaultPostProcUid;
+                        }
+                        if( decUidToUse != KUidZero )
+                        {
+                            foundRule = TRUE;
+                            break;
+                        }
+                    }
+                }
+            }
+
+            if( foundRule )
+            {
+                if(  ( decUidToUse != pluginPackage.GetHwDecoderId() ) ||
+                    ( ( ppUidToUse != KUidZero ) && ( ppUidToUse != pluginPackage.GetHwPostProcessorId() ) ) )
+                {
+                    // current package's decoder and/or post processor doesn't match desired
+                    // need to select another package
+                    retVal = pluginManager.SelectPackageByCodecRule( aMimeType, decUidToUse,
+                                                                     ppUidToUse, pluginPackage );
+                }
+            }
+            else
+            {
+                MDFVIDEOLOG_WRITE_FORMAT( "    Error: Valid codec rule not found for mimetype %s", aMimeType.Ptr() );
+                retVal = HXR_UNSUPPORTED_VIDEO;
+            }
+        }
+        HX_DELETE( convertedMimeType );
+    }
+
     if ( SUCCEEDED( retVal ) )
     {
         m_pPictureHeader = m_pPayloadFormatPluginDevice->GetPictureHeader();
@@ -1797,4 +1881,152 @@
     return retVal;
 }
 
+/////////////////////////////////////////////////////////
+//method for Codec selection configurability
+
+HX_RESULT CMdfVideoAdapter::ParseMDFCodecRules( UINT32& ulCount )
+{
+    MDFVIDEOLOG_ENTERFN( "ParseMDFCodecRules" );
+    HX_RESULT retVal = HXR_OK;
+
+    UINT32 ulRulesCount = 0;
+    const CHXString keyPrefix = "MDFCodecRule";
+    char index[4] = {0};
+
+    if( m_pContext )
+    {
+        HXBOOL bIsRuleValid = TRUE;
+        CHXString codecRule;
+
+        while( bIsRuleValid == TRUE )
+        {
+            // convert rules counter to string to be appended as an index to the key prefix
+            // (the rules are stored in prefs as MDFCodecRule1, MDFCodecRule2 ... etc.)
+            itoa( ++ulRulesCount, index, 10 );
+
+            if( SUCCEEDED( ReadPrefCSTRING( m_pContext, keyPrefix + index, codecRule ) ) )
+            {
+                MDFVIDEOLOG_WRITE_MULTI_FORMAT( "    Codec rule %d: %s", ulRulesCount, (const char*)codecRule );
+
+                // remove curly brackets and extra spaces from rule string
+                codecRule.FindAndReplace( "{", "", TRUE );
+                codecRule.FindAndReplace( "}", "", TRUE );
+                codecRule.TrimLeft();
+                codecRule.TrimRight();
+                while( codecRule.FindAndReplace( "  ", " " , TRUE ) );
+
+                // parse individual fields in the rule string
+                if( codecRule.CountFields( ' ' ) != CODEC_RULE_FIELD_COUNT )
+                {
+                    MDFVIDEOLOG_WRITE_FORMAT( "    Wrong number of fields in MDFCodecRule%d", ulRulesCount );
+                    bIsRuleValid = FALSE;
+                    ulRulesCount--;
+                }
+                else
+                {
+                    CodecConfigRule* newRule = new CodecConfigRule;
+                    HX_ASSERT( newRule );
+                    CHXString fieldValue;
+                    TInt error = KErrNone;
+
+                    for( UINT8 i = 1; i <= CODEC_RULE_FIELD_COUNT; i++ )
+                    {
+                        fieldValue = codecRule.NthField( ' ', i );
+                        fieldValue.MakeLower();
+
+                        // TUid fields are parsed here to avoid repeatition in switch statement
+                        UINT32 ulUid;
+                        if( (i >= 4) && (i <= 7) )
+                        {
+                            char* pEnd;
+                            ulUid = strtoul( (const char*)fieldValue, &pEnd, 16 );
+                            if( ulUid == 0xFFFFFFFF )
+                            {
+                                ulUid = KUidZero.iUid;
+                            }
+                        }
+
+                        switch (i)
+                        {
+                            case 1:
+                                {
+                                    TBuf8<40> tempBuf( (const TUint8*)(const char*)fieldValue );
+                                    TRAP( error, newRule->pMimeType = tempBuf.AllocL() );
+                                }
+                                break;
+                            case 2:
+                                {
+                                    // if a wildcard character is used, we regard it as non-consideration
+                                    // for this attribute and therefore won't assign profile
+                                    if( fieldValue == "*" )
+                                    {
+                                        TRAP( error, newRule->pProfile = KNullDesC8().AllocL() );
+                                    }
+                                    else
+                                    {
+                                        TBuf8<40> tempBuf( (const TUint8*)(const char*)fieldValue );
+                                        TRAP( error, newRule->pProfile = tempBuf.AllocL() );
+                                    }
+                                }
+                                break;
+                            case 3:
+                                {
+                                    CHXString left = fieldValue.NthField( 'x', 1 );
+                                    CHXString right = fieldValue.NthField( 'x', 2 );
+                                    UINT32 ulWidth = atol( (const char*)left );
+                                    UINT32 ulHeight = atol( (const char*)right );
+                                    // if this field is malformed in the rule, the resolution will end up as 0
+                                    // which we will interpret as "don't care" condition
+                                    newRule->ulFrameResolution = ulWidth * ulHeight;
+                                }
+                                break;
+                            case 4:
+                                newRule->DecoderUid = TUid::Uid( (TInt)ulUid );
+                                break;
+                            case 5:
+                                newRule->PostProcessorUid = TUid::Uid( (TInt)ulUid );
+                                break;
+                            case 6:
+                                newRule->DefaultDecoderUid = TUid::Uid( (TInt)ulUid );
+                                break;
+                            case 7:
+                                newRule->DefaultPostProcUid = TUid::Uid( (TInt)ulUid );
+                                break;
+                            default:
+                                // should not reach here, but just in case...
+                                retVal = HXR_FAIL;
+                        } // end switch
+                    } // end iteration through fields of new rule
+
+                    // check for error and add new rule to codec rules array
+                    if( error == KErrNone )
+                    {
+                        m_CodecConfigRuleArray.Append( newRule );
+                    }
+                    else
+                    {
+                        MDFVIDEOLOG_WRITE_FORMAT( "    Memory allocation error for MDFCodecRule%d", ulRulesCount);
+                        ulRulesCount--;
+                        bIsRuleValid = FALSE;
+                        retVal = HXR_OUTOFMEMORY;
+                    }
+
+                } // end check field count
+            } // end read from prefs
+            else
+            {
+                // if MDFCodecRuleX is not in prefs, the number of rules is (X - 1)
+                // (it is required there's no skip in rule numbering)
+                ulRulesCount--;
+                bIsRuleValid = FALSE;
+            }
+        } // end while bIsRuleValid
+
+        MDFVIDEOLOG_WRITE_FORMAT( "    Total number of rules: %d", ulRulesCount);
+    }
+
+    ulCount = ulRulesCount;
+    MDFVIDEOLOG_RETURNFN( "ParseMDFCodecRules", retVal );
+    return retVal;
+}
 


From cybette at helixcommunity.org  Wed Nov  8 11:22:44 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 12:29:03 2006
Subject: [Datatype-cvs] mdf/video/format/common/pub mdfpayloadformat.h, 1.7,
	1.8
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/common/pub
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv11719

Modified Files:
	mdfpayloadformat.h 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: mdfpayloadformat.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/common/pub/mdfpayloadformat.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- mdfpayloadformat.h	25 Sep 2006 21:31:23 -0000	1.7
+++ mdfpayloadformat.h	8 Nov 2006 19:22:42 -0000	1.8
@@ -73,11 +73,24 @@
 #include "mdfgenericlog.h"      //logging
 #include "hxprefutil.h"         //ReadPrefBOOL
 
+#define CHAR_LF	                                0x0a
+#define FORMAT_PARAMETERS_PREFIX                "a=fmtp:0 "
+#define FORMAT_PARAMETERS_PREFIX_SIZE	        (sizeof(FORMAT_PARAMETERS_PREFIX) - 1)
+#define UNKNOWN_PROFILE                         -1
+
 #define KUidPayloadFormatPluginDeviceDefine	        0x10207473
 const TUid KUidPayloadFormatPluginDevice = {KUidPayloadFormatPluginDeviceDefine};
 
 #define MIMETYPEARRAY_ARRAY_GRANULARITY  4
 
+// Literal descriptors for video profile
+_LIT8( KAdvanced, "advanced" );
+_LIT8( KBaseline, "baseline" );
+_LIT8( KExtended, "extended" );
+_LIT8( KMain,     "main"     );
+_LIT8( KProfile3, "profile3" );
+_LIT8( KSimple,   "simple"   );
+
 class CPayloadFormatInfo : public CBase
 {
 public:
@@ -126,6 +139,8 @@
     virtual HX_RESULT     FillBuffer( TPtr8& buffer, const CMediaPacket* pMediaPacket ) const;
     virtual void          Reset( UINT32 ulBeginTime );
     virtual UINT32        GetPreRollInMs() const;
+    virtual const TDesC8& GetVideoProfile() const = 0;
+    virtual UINT32        GetVideoResolution() const;
 
     CPayloadFormatInfo*   PayloadFormatInfoLC() const;
 


From cybette at helixcommunity.org  Wed Nov  8 11:33:46 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 12:40:04 2006
Subject: [Datatype-cvs] mdf/video/format/common mdfpayloadformat.cpp, 1.8,
	1.9
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/common
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv13702

Modified Files:
	mdfpayloadformat.cpp 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: mdfpayloadformat.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/common/mdfpayloadformat.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- mdfpayloadformat.cpp	25 Sep 2006 21:31:23 -0000	1.8
+++ mdfpayloadformat.cpp	8 Nov 2006 19:33:44 -0000	1.9
@@ -50,7 +50,7 @@
 #include 
 #include "mdfpayloadformat.h"
 
-#define DEFAUL_PREROLL_IN_MS        500
+#define DEFAULT_PREROLL_IN_MS        500
 
 /////////////////////////////////////////////////////////////////////
 //CPayloadFormatInfo
@@ -305,7 +305,34 @@
 {
     MDFVIDEOLOG_ENTERFN( "GetPreRollInMs" );
     MDFVIDEOLOG_LEAVEFN( "GetPreRollInMs" );
-    return DEFAUL_PREROLL_IN_MS;
+    return DEFAULT_PREROLL_IN_MS;
+}
+
+UINT32 CPayloadFormatPluginDevice::GetVideoResolution() const
+{
+    MDFVIDEOLOG_ENTERFN( "GetVideoResolution" );
+    UINT32 ulResolution = 0;
+    if( m_pHeader )
+    {
+        UINT32 ulVideoWidth = 0;
+        UINT32 ulVideoHeight = 0;
+
+        if( SUCCEEDED(m_pHeader->GetPropertyULONG32( "FrameWidth", ulVideoWidth ) ) &&
+            SUCCEEDED(m_pHeader->GetPropertyULONG32( "FrameHeight", ulVideoHeight ) ) )
+        {
+            ulResolution = ulVideoWidth * ulVideoHeight;
+        }
+        else
+        {   // if frame width & height are not available, use track width & height
+            if( SUCCEEDED(m_pHeader->GetPropertyULONG32( "Width", ulVideoWidth ) ) &&
+                SUCCEEDED(m_pHeader->GetPropertyULONG32( "Height", ulVideoHeight ) ) )
+            {
+                ulResolution = ulVideoWidth * ulVideoHeight;
+            }
+        }
+    }
+    MDFVIDEOLOG_LEAVEFN( "GetVideoResolution" );
+    return ulResolution;
 }
 
 CPayloadFormatInfo* CPayloadFormatPluginDevice::PayloadFormatInfoLC() const


From cybette at helixcommunity.org  Wed Nov  8 11:35:56 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 12:42:14 2006
Subject: [Datatype-cvs] 
	mdf/video/format/h263/pub mdfh263payloadformat.h, 1.6, 1.7
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/h263/pub
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv13960

Modified Files:
	mdfh263payloadformat.h 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: mdfh263payloadformat.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/h263/pub/mdfh263payloadformat.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- mdfh263payloadformat.h	25 Sep 2006 21:31:24 -0000	1.6
+++ mdfh263payloadformat.h	8 Nov 2006 19:35:54 -0000	1.7
@@ -63,10 +63,11 @@
     ~CH263PayloadFormatPluginDevice();
     
 public:  //derived
-    virtual HX_RESULT CreatePayloadFormat( IHXPayloadFormatObject*& aPayloadFormatObject  );
-    CMediaPacket*     CreateAssembledPacket( IHXPacket* pPayloadData );
-    virtual UINT32    GetPreRollInMs() const;
-    
+    virtual HX_RESULT     CreatePayloadFormat( IHXPayloadFormatObject*& aPayloadFormatObject  );
+    CMediaPacket*         CreateAssembledPacket( IHXPacket* pPayloadData );
+    virtual UINT32        GetPreRollInMs() const;
+    virtual const TDesC8& GetVideoProfile() const;
+
 private:
     CH263PayloadFormatPluginDevice();
     void            ConstructL();
@@ -75,6 +76,8 @@
     HX_RESULT       GetFMTParams( IHXValues*& pFMTParams );
 
 private:
+    INT32           m_lProfile;
+
     class H263DecSpecStruct
     {
     public:


From cybette at helixcommunity.org  Wed Nov  8 11:39:14 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 12:45:33 2006
Subject: [Datatype-cvs] mdf/video/format/h263 mdfh263payloadformat.cpp, 1.7,
	1.8
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/h263
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv14452

Modified Files:
	mdfh263payloadformat.cpp 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: mdfh263payloadformat.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/h263/mdfh263payloadformat.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- mdfh263payloadformat.cpp	25 Sep 2006 21:31:23 -0000	1.7
+++ mdfh263payloadformat.cpp	8 Nov 2006 19:39:12 -0000	1.8
@@ -50,13 +50,9 @@
 #include "mdfh263payloadformat.h"
 #include "sdpchunk.h"               //SDPParseChunk
 
-#define DEFAUL_H263_PREROLL_IN_MS                2000
+#define DEFAULT_H263_PREROLL_IN_MS                2000
 #define KUidH263PayloadFormatPluginDeviceDefine  0x10207475
 #define MP4V_RN_3GPP_H263_PAYLOAD_MIME_TYPE      "video/X-RN-3GPP-H263"
-
-#define CHAR_LF	                                0x0a
-#define FORMAT_PARAMETERS_PREFIX	            "a=fmtp:0 "
-#define FORMAT_PARAMETERS_PREFIX_SIZE	        (sizeof(FORMAT_PARAMETERS_PREFIX) - 1)
 
 const TUid KUidH263PayloadFormatPluginDevice = {KUidH263PayloadFormatPluginDeviceDefine};
 
@@ -143,6 +139,7 @@
                                 MDFVIDEOLOG_INOUTFN( "    Profile 3 video, MDF does not support" );
                                 retVal = HXR_UNSUPPORTED_VIDEO; //do not support profile 3 clip
                             }
+                            m_lProfile = profile;
                         }
                         else if((ulSize >= sizeof(DecoderSpecificInfoV10) ) )
                         {
@@ -156,6 +153,7 @@
                                     MDFVIDEOLOG_INOUTFN( "    Profile 3 video, MDF does not support" );
                                     retVal = HXR_UNSUPPORTED_VIDEO; //do not support profile 3 clip
                                 }
+                                m_lProfile = profile;
                             }
                         }
                     }
@@ -175,11 +173,6 @@
             {
                 MDFVIDEOLOG_INOUTFN( " GetFMTParams is OK " );
                     
-                ULONG32 ulProfileLevelID = 0;
-                retValFMT = pFMTParams->GetPropertyULONG32( "FMTPprofile-level-id", ulProfileLevelID );
-                
-                MDFVIDEOLOG_WRITE_FORMAT( "<-> FMTPprofile-level-id: %d", ulProfileLevelID );
-                
                 ULONG32 ulProfile = 0;
                 retValFMT = pFMTParams->GetPropertyULONG32( "FMTPProfile", ulProfile );
                 MDFVIDEOLOG_WRITE_FORMAT( "<-> FMTPProfile: %d", ulProfile );
@@ -188,7 +181,7 @@
                 {
                     retVal = HXR_UNSUPPORTED_VIDEO;
                 }
-                
+                m_lProfile = ulProfile;
             }
             
             HX_RELEASE( pFMTParams );
@@ -279,10 +272,33 @@
 {
     MDFVIDEOLOG_ENTERFN( "GetPreRollInMs" );
     MDFVIDEOLOG_LEAVEFN( "GetPreRollInMs" );
-    return DEFAUL_H263_PREROLL_IN_MS;
+    return DEFAULT_H263_PREROLL_IN_MS;
 }
 
+const TDesC8& CH263PayloadFormatPluginDevice::GetVideoProfile() const
+{
+    MDFVIDEOLOG_ENTERFN( "GetVideoProfile" );
+    MDFVIDEOLOG_WRITE_FORMAT( "    Profile for h263 payload is %d", m_lProfile );
+    MDFVIDEOLOG_LEAVEFN( "GetVideoProfile" );
+
+    // For now we're only concerned with Profiles 0 (Baseline)
+    // and 3 (Version 2 Interactive and Streaming Wireless Profile)
+    if( m_lProfile == 0 )
+    {
+        return KBaseline();
+    }
+    else if( m_lProfile == 3 )
+    {
+        return KProfile3();
+    }
+    else
+    {
+        return KNullDesC8();
+    }
+}
+
 CH263PayloadFormatPluginDevice::CH263PayloadFormatPluginDevice()
+: m_lProfile( UNKNOWN_PROFILE )
 {
     MDFVIDEOLOG_CREATE_NOWRITE;
     MDFVIDEOLOG_CLASSNAME( "CH263PayloadFormatPluginDevice" );


From cybette at helixcommunity.org  Wed Nov  8 11:41:45 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 12:48:07 2006
Subject: [Datatype-cvs] 
	mdf/video/format/h264/pub mdfh264payloadformat.h, 1.3, 1.4
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/h264/pub
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv14548

Modified Files:
	mdfh264payloadformat.h 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: mdfh264payloadformat.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/h264/pub/mdfh264payloadformat.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- mdfh264payloadformat.h	25 Sep 2006 21:31:24 -0000	1.3
+++ mdfh264payloadformat.h	8 Nov 2006 19:41:43 -0000	1.4
@@ -70,6 +70,7 @@
     virtual HX_RESULT     FillBuffer( TPtr8& buffer, const CMediaPacket* pMediaPacket ) const;
     virtual void          Reset( UINT32 ulBeginTime );
     virtual UINT32        GetPreRollInMs() const;
+    virtual const TDesC8& GetVideoProfile() const;
 
 private:
     CH264PayloadFormatPluginDevice();
@@ -80,6 +81,7 @@
     virtual HXBOOL        FormPictureHeader( TVideoPictureHeader& pPictureHeader ) const;
     HX_RESULT             CreateAllocators();
     static void           KillInputBuffer( void* pBuffer, void* pUserData );
+    HX_RESULT             GetFMTParams( IHXValues*& pFMTParams );
 
 private:
     CHXBufferMemoryAllocator* m_pInputAllocator;
@@ -89,6 +91,7 @@
     //or customized methods which are specific to H264.
     //Without m_pH264Depacketizer, m_pDepacketizer needs to be up-casted.
     IMP4VPayloadFormat*        m_pH264Depacketizer;
+    INT32                      m_lProfile;
 
     MDFVIDEOLOG_DEFINE;
 };


From cybette at helixcommunity.org  Wed Nov  8 11:45:24 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 12:51:42 2006
Subject: [Datatype-cvs] mdf/video/format/h264 mdfh264payloadformat.cpp, 1.4,
	1.5
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/h264
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv15167

Modified Files:
	mdfh264payloadformat.cpp 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: mdfh264payloadformat.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/h264/mdfh264payloadformat.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- mdfh264payloadformat.cpp	25 Sep 2006 21:31:24 -0000	1.4
+++ mdfh264payloadformat.cpp	8 Nov 2006 19:45:21 -0000	1.5
@@ -48,11 +48,13 @@
  * ***** END LICENSE BLOCK ***** */
 
 #include "mdfh264payloadformat.h"
+#include        //strtoul
+#include "sdpchunk.h"     //SDPParseChunk
 
 #define MP4V_HX_AVC1_PAYLOAD_MIME_TYPE      "video/X-HX-AVC1"
 #define MP4V_H264_PAYLOAD_MIME_TYPE         "video/H264"
 
-#define DEFAUL_H264_PREROLL_IN_MS               3500
+#define DEFAULT_H264_PREROLL_IN_MS               3500
 #define KUidH264PayloadFormatPluginDeviceDefine 0x1020747B
 const TUid KUidH264PayloadFormatPluginDevice =  {KUidH264PayloadFormatPluginDeviceDefine};
 
@@ -122,11 +124,37 @@
         {
             MDFVIDEOLOG_INOUTFN( "create Payload for video/X-HX-AVC1" );
             m_pH264Depacketizer = new MP4VPayloadFormat(); //a referernce pointer
+
+            IHXValues* pFMTParams = NULL;
+            HX_RESULT retValFMT = GetFMTParams( pFMTParams );
+
+            if( SUCCEEDED( retValFMT ) && pFMTParams )
+            {
+                MDFVIDEOLOG_INOUTFN( " GetFMTParams is OK " );
+
+                ULONG32 ulProfileLevelID = 0;
+                retValFMT = pFMTParams->GetPropertyULONG32( "FMTPprofile-level-id", ulProfileLevelID );
+                MDFVIDEOLOG_WRITE_FORMAT( "<-> FMTPprofile-level-id: %d", ulProfileLevelID );
+
+                m_lProfile = ulProfileLevelID;
+            }
+            HX_RELEASE( pFMTParams );
         }
         else if( strcasecmp(pMimeTypeData, MP4V_H264_PAYLOAD_MIME_TYPE) == 0 )
         {
             MDFVIDEOLOG_INOUTFN( "create Payload for video/H264" );
             m_pH264Depacketizer = new H264PayloadFormat(); //a referernce pointer
+
+            IHXBuffer* pProfileLevelIDString = NULL;
+            HX_ASSERT( m_pHeader );
+            HX_RESULT retValFMT = m_pHeader->GetPropertyCString( "FMTPprofile-level-id", pProfileLevelIDString );
+            if( SUCCEEDED(retValFMT) )
+            {
+                char* pEnd;
+                m_lProfile = strtoul( (const char*)pProfileLevelIDString->GetBuffer(), &pEnd, 16 );
+                MDFVIDEOLOG_WRITE_FORMAT( "<-> FMTPprofile-level-id: %d", m_lProfile );
+            }
+            HX_RELEASE(pProfileLevelIDString);
          }
         else
         {
@@ -279,12 +307,41 @@
 {
     MDFVIDEOLOG_ENTERFN( "GetPreRollInMs" );
     MDFVIDEOLOG_LEAVEFN( "GetPreRollInMs" );
-    return DEFAUL_H264_PREROLL_IN_MS;
+    return DEFAULT_H264_PREROLL_IN_MS;
+}
+
+const TDesC8& CH264PayloadFormatPluginDevice::GetVideoProfile() const
+{
+    MDFVIDEOLOG_ENTERFN( "GetVideoProfile" );
+    MDFVIDEOLOG_WRITE_FORMAT( "    Profile for h264 payload is %d", m_lProfile );
+    MDFVIDEOLOG_LEAVEFN( "GetVideoProfile" );
+
+    // From the ITU-T H.264 standard, Baseline profile is specified by profile_idc 66 = 0x42
+    //                                Main     profile is specified by profile_idc 77 = 0x4D
+    //                                Extended profile is specified by profile_idc 88 = 0x58
+    // (profile_idc is the first two digits of a 6-digit Hex representation of the profile-level-id)
+    if( ( m_lProfile >= 0x420000 ) && ( m_lProfile <= 0x42FFFF ) )
+    {
+        return KBaseline();
+    }
+    else if( ( m_lProfile >= 0x4D0000 ) && ( m_lProfile <= 0x4DFFFF ) )
+    {
+        return KMain();
+    }
+    else if( ( m_lProfile >= 0x580000 ) && ( m_lProfile <= 0x58FFFF ) )
+    {
+        return KExtended();
+    }
+    else
+    {
+        return KNullDesC8();
+    }
 }
 
 CH264PayloadFormatPluginDevice::CH264PayloadFormatPluginDevice()
 : m_pInputAllocator( NULL ),
-  m_pH264Depacketizer( NULL )
+  m_pH264Depacketizer( NULL ),
+  m_lProfile( UNKNOWN_PROFILE )
 {
     MDFVIDEOLOG_CREATE_NOWRITE;
     MDFVIDEOLOG_CLASSNAME( "CH264PayloadFormatPluginDevice" );
@@ -466,6 +523,94 @@
     }
 }
 
+HX_RESULT CH264PayloadFormatPluginDevice::GetFMTParams( IHXValues*& pFMTParams )
+{
+    MDFVIDEOLOG_ENTERFN( "GetFMTParams" );
+    
+    HX_RESULT retVal = HXR_INVALID_PARAMETER;
+    IHXCommonClassFactory* pCommonClassFactory = NULL;
+    pFMTParams = NULL;
+    
+    if( m_pHeader && m_pContext )
+    {
+        retVal = m_pContext->QueryInterface(IID_IHXCommonClassFactory,
+                                            (void**) &pCommonClassFactory);
+    }
+    
+    if( SUCCEEDED( retVal ) )
+    {
+        char *pData = NULL;
+        char* pAllocData = NULL;
+        IHXBuffer* pSDPData = NULL;
+        ULONG32 ulTryIdx = 0;
+        
+        do
+        {
+            if( ulTryIdx == 0 )
+            {
+                retVal = m_pHeader->GetPropertyCString( "SDPData", pSDPData );
+
+                if (SUCCEEDED(retVal))
+                {
+                    pData = (char*) pSDPData->GetBuffer();
+
+                    retVal = HXR_FAIL;
+                    if( pData )
+                    {
+                        retVal = HXR_OK;
+                    }
+                }
+            }
+            else
+            {
+                retVal = m_pHeader->GetPropertyCString( "PayloadParameters", pSDPData );
+
+                if( SUCCEEDED( retVal ) )
+                {
+                    ULONG32 ulDataLen;
+                    
+                    pData = (char*) pSDPData->GetBuffer();
+                    ulDataLen = strlen(pData);
+                    
+                    pAllocData = new char [ulDataLen + FORMAT_PARAMETERS_PREFIX_SIZE + 2];
+                    
+                    retVal = HXR_OUTOFMEMORY;
+                    if( pAllocData )
+                    {
+                        strcpy(pAllocData, FORMAT_PARAMETERS_PREFIX); /* Flawfinder: ignore */
+                        strcpy(pAllocData + FORMAT_PARAMETERS_PREFIX_SIZE, pData); /* Flawfinder: ignore */
+                        pAllocData[FORMAT_PARAMETERS_PREFIX_SIZE + ulDataLen] =  CHAR_LF;
+                        pAllocData[FORMAT_PARAMETERS_PREFIX_SIZE + 1 + ulDataLen] = '\0';
+                        
+                        pData = pAllocData;
+                        retVal = HXR_OK;
+                    }
+                }
+            }
+            
+            if (SUCCEEDED(retVal))
+            {
+                retVal = SDPParseChunk(pData,
+                    strlen(pData),
+                    pFMTParams,     //pValues,
+                    pCommonClassFactory, //m_pClassFactory,
+                    SDPCTX_Renderer);
+            }
+            
+            HX_VECTOR_DELETE( pAllocData );
+            
+            HX_RELEASE( pSDPData );
+            
+            ulTryIdx++;
+        } while( FAILED( retVal ) && ( ulTryIdx < 2 ) );
+    }
+    
+    HX_RELEASE( pCommonClassFactory );
+    
+    MDFVIDEOLOG_RETURNFN( "GetFMTParams", retVal );
+    return retVal;
+}
+
 const TImplementationProxy ImplementationTable[] =
 {
     IMPLEMENTATION_PROXY_ENTRY(KUidH264PayloadFormatPluginDeviceDefine, CH264PayloadFormatPluginDevice::NewL)


From cybette at helixcommunity.org  Wed Nov  8 11:46:45 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 12:53:03 2006
Subject: [Datatype-cvs] mdf/video/format/h264 Umakefil,1.2,1.3
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/h264
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv15524

Modified Files:
	Umakefil 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: Umakefil
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/h264/Umakefil,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- Umakefil	19 Jul 2006 14:21:04 -0000	1.2
+++ Umakefil	8 Nov 2006 19:46:43 -0000	1.3
@@ -52,7 +52,8 @@
                             "datatype/mp4/payload/pub",
                             "datatype/mdf/video/format/common/pub",
                             "datatype/rm/common/pub",
-                            "datatype/rm/include")
+                            "datatype/rm/include",
+                            "protocol/sdp/pub")
 
 project.AddModuleLibraries( "common/dbgtool[debuglib]",
                             "common/util[utillib]",
@@ -64,7 +65,8 @@
                             "datatype/mp4/payload[mp4pyldlib]",
                             "datatype/mdf/video/format/common[mdfpayloadformatlib]",
                             "datatype/rm/common[rmcomlib]",
-                            "datatype/mp4/common[mp4comlib]")
+                            "datatype/mp4/common[mp4comlib]",
+                            "protocol/sdp[sdplib]")
 
 project.AddIncludes("../../common/include")
 


From cybette at helixcommunity.org  Wed Nov  8 11:49:33 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 12:55:50 2006
Subject: [Datatype-cvs] mdf/video/format/mp4/pub mdfmp4payloadformat.h, 1.7,
	1.8
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/mp4/pub
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv15681

Modified Files:
	mdfmp4payloadformat.h 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: mdfmp4payloadformat.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/mp4/pub/mdfmp4payloadformat.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- mdfmp4payloadformat.h	25 Sep 2006 21:31:24 -0000	1.7
+++ mdfmp4payloadformat.h	8 Nov 2006 19:49:30 -0000	1.8
@@ -69,6 +69,7 @@
     virtual HX_RESULT     FillBuffer( TPtr8& buffer, const CMediaPacket* pMediaPacket ) const;
     virtual void          Reset( UINT32 ulBeginTime );
     virtual UINT32        GetPreRollInMs() const;
+    virtual const TDesC8& GetVideoProfile() const;
 
 private:
     CMP4PayloadFormatPluginDevice();
@@ -79,6 +80,7 @@
     virtual HXBOOL        FormPictureHeader( TVideoPictureHeader& pPictureHeader ) const;
     HX_RESULT             CreateAllocators();
     static void           KillInputBuffer( void* pBuffer, void* pUserData );
+    HX_RESULT             GetFMTParams( IHXValues*& pFMTParams );
 
 private:
     CHXBufferMemoryAllocator* m_pInputAllocator;
@@ -89,6 +91,9 @@
     //Without m_pMP4Depacketizer, m_pDepacketizer needs to be up-casted.
     IMP4VPayloadFormat*       m_pMP4Depacketizer;
 
+private:
+    INT32                 m_lProfile;
+
     MDFVIDEOLOG_DEFINE;
     
 };


From cybette at helixcommunity.org  Wed Nov  8 11:51:45 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 12:58:04 2006
Subject: [Datatype-cvs] mdf/video/format/mp4 mdfmp4payloadformat.cpp, 1.10,
	1.11
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/mp4
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv15874

Modified Files:
	mdfmp4payloadformat.cpp 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: mdfmp4payloadformat.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/mp4/mdfmp4payloadformat.cpp,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- mdfmp4payloadformat.cpp	25 Sep 2006 21:31:24 -0000	1.10
+++ mdfmp4payloadformat.cpp	8 Nov 2006 19:51:43 -0000	1.11
@@ -48,8 +48,9 @@
  * ***** END LICENSE BLOCK ***** */
 
 #include "mdfmp4payloadformat.h"
+#include "sdpchunk.h"               //SDPParseChunk
 
-#define DEFAUL_MP4_PREROLL_IN_MS                2000
+#define DEFAULT_MP4_PREROLL_IN_MS                2000
 #define KUidMP4PayloadFormatPluginDeviceDefine  0x10207477
 const TUid KUidMP4PayloadFormatPluginDevice =   {KUidMP4PayloadFormatPluginDeviceDefine};
 
@@ -97,6 +98,21 @@
     m_pMP4Depacketizer = new MP4VPayloadFormat(); //a referernce pointer
     aPayloadFormatObject = m_pMP4Depacketizer;
     
+    IHXValues* pFMTParams = NULL;
+    HX_RESULT retValFMT = GetFMTParams( pFMTParams );
+
+    if( SUCCEEDED( retValFMT ) && pFMTParams )
+    {
+        MDFVIDEOLOG_INOUTFN( " GetFMTParams is OK " );
+
+        ULONG32 ulProfileLevelID = 0;
+        retValFMT = pFMTParams->GetPropertyULONG32( "FMTPprofile-level-id", ulProfileLevelID );
+        MDFVIDEOLOG_WRITE_FORMAT( "<-> FMTPprofile-level-id: %d", ulProfileLevelID );
+
+        m_lProfile = ulProfileLevelID;
+    }
+    HX_RELEASE( pFMTParams );
+
     if( aPayloadFormatObject )
     {
         m_pMP4Depacketizer->SetAllocator( m_pInputAllocator );
@@ -232,12 +248,37 @@
 {
     MDFVIDEOLOG_ENTERFN( "GetPreRollInMs" );
     MDFVIDEOLOG_LEAVEFN( "GetPreRollInMs" );
-    return DEFAUL_MP4_PREROLL_IN_MS;
+    return DEFAULT_MP4_PREROLL_IN_MS;
+}
+
+const TDesC8& CMP4PayloadFormatPluginDevice::GetVideoProfile() const
+{
+    MDFVIDEOLOG_ENTERFN( "GetVideoProfile" );
+    MDFVIDEOLOG_WRITE_FORMAT( "    Profile for mp4 payload is %d", m_lProfile );
+    MDFVIDEOLOG_LEAVEFN( "GetVideoProfile" );
+
+    // From ISO/IEC 14496-2 Annex G Table G-1
+    // Simple profiles (with various levels) have profile indication <= 18
+    // For everything else we'll consider as Advanced profile for now
+    // (even though there are Core, Main, Hybrid profiles etc.)
+    if( ( m_lProfile > 0 ) && ( m_lProfile <= 18 ) )
+    {
+        return KSimple();
+    }
+    else if( ( m_lProfile > 18 ) && ( m_lProfile <= 211 ) )
+    {
+        return KAdvanced();
+    }
+    else
+    {
+        return KNullDesC8();
+    }
 }
 
 CMP4PayloadFormatPluginDevice::CMP4PayloadFormatPluginDevice()
 : m_pInputAllocator( NULL ),
-  m_pMP4Depacketizer( NULL )
+  m_pMP4Depacketizer( NULL ),
+  m_lProfile( UNKNOWN_PROFILE )
 {
     MDFVIDEOLOG_CREATE_NOWRITE;
     MDFVIDEOLOG_CLASSNAME( "CMP4PayloadFormatPluginDevice" );
@@ -344,6 +385,94 @@
     }
 }
 
+HX_RESULT CMP4PayloadFormatPluginDevice::GetFMTParams( IHXValues*& pFMTParams )
+{
+    MDFVIDEOLOG_ENTERFN( "GetFMTParams" );
+    
+    HX_RESULT retVal = HXR_INVALID_PARAMETER;
+    IHXCommonClassFactory* pCommonClassFactory = NULL;
+    pFMTParams = NULL;
+    
+    if( m_pHeader && m_pContext )
+    {
+        retVal = m_pContext->QueryInterface(IID_IHXCommonClassFactory,
+                                            (void**) &pCommonClassFactory);
+    }
+    
+    if( SUCCEEDED( retVal ) )
+    {
+        char *pData = NULL;
+        char* pAllocData = NULL;
+        IHXBuffer* pSDPData = NULL;
+        ULONG32 ulTryIdx = 0;
+        
+        do
+        {
+            if( ulTryIdx == 0 )
+            {
+                retVal = m_pHeader->GetPropertyCString( "SDPData", pSDPData );
+
+                if (SUCCEEDED(retVal))
+                {
+                    pData = (char*) pSDPData->GetBuffer();
+
+                    retVal = HXR_FAIL;
+                    if( pData )
+                    {
+                        retVal = HXR_OK;
+                    }
+                }
+            }
+            else
+            {
+                retVal = m_pHeader->GetPropertyCString( "PayloadParameters", pSDPData );
+
+                if( SUCCEEDED( retVal ) )
+                {
+                    ULONG32 ulDataLen;
+                    
+                    pData = (char*) pSDPData->GetBuffer();
+                    ulDataLen = strlen(pData);
+                    
+                    pAllocData = new char [ulDataLen + FORMAT_PARAMETERS_PREFIX_SIZE + 2];
+                    
+                    retVal = HXR_OUTOFMEMORY;
+                    if( pAllocData )
+                    {
+                        strcpy(pAllocData, FORMAT_PARAMETERS_PREFIX); /* Flawfinder: ignore */
+                        strcpy(pAllocData + FORMAT_PARAMETERS_PREFIX_SIZE, pData); /* Flawfinder: ignore */
+                        pAllocData[FORMAT_PARAMETERS_PREFIX_SIZE + ulDataLen] =  CHAR_LF;
+                        pAllocData[FORMAT_PARAMETERS_PREFIX_SIZE + 1 + ulDataLen] = '\0';
+                        
+                        pData = pAllocData;
+                        retVal = HXR_OK;
+                    }
+                }
+            }
+            
+            if (SUCCEEDED(retVal))
+            {
+                retVal = SDPParseChunk(pData,
+                    strlen(pData),
+                    pFMTParams,     //pValues,
+                    pCommonClassFactory, //m_pClassFactory,
+                    SDPCTX_Renderer);
+            }
+            
+            HX_VECTOR_DELETE( pAllocData );
+            
+            HX_RELEASE( pSDPData );
+            
+            ulTryIdx++;
+        } while( FAILED( retVal ) && ( ulTryIdx < 2 ) );
+    }
+    
+    HX_RELEASE( pCommonClassFactory );
+    
+    MDFVIDEOLOG_RETURNFN( "GetFMTParams", retVal );
+    return retVal;
+}
+
 const TImplementationProxy ImplementationTable[] = 
 {
     IMPLEMENTATION_PROXY_ENTRY(KUidMP4PayloadFormatPluginDeviceDefine, CMP4PayloadFormatPluginDevice::NewL)


From cybette at helixcommunity.org  Wed Nov  8 11:52:59 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 12:59:18 2006
Subject: [Datatype-cvs] mdf/video/format/mp4 Umakefil,1.2,1.3
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/mp4
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv15933

Modified Files:
	Umakefil 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: Umakefil
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/mp4/Umakefil,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- Umakefil	19 Jul 2006 14:21:15 -0000	1.2
+++ Umakefil	8 Nov 2006 19:52:57 -0000	1.3
@@ -52,7 +52,8 @@
                             "datatype/mp4/payload/pub",
                             "datatype/mdf/video/format/common/pub",
                             "datatype/rm/common/pub",
-                            "datatype/rm/include")
+                            "datatype/rm/include",
+                            "protocol/sdp/pub")
 
 project.AddModuleLibraries( "common/dbgtool[debuglib]", 
                             "common/util[utillib]", 
@@ -64,7 +65,8 @@
                             "datatype/mp4/payload[mp4pyldlib]",
                             "datatype/mdf/video/format/common[mdfpayloadformatlib]",
                             "datatype/rm/common[rmcomlib]",
-                            "datatype/mp4/common[mp4comlib]")
+                            "datatype/mp4/common[mp4comlib]",
+                            "protocol/sdp[sdplib]")
 
 project.AddIncludes("../../common/include")
 


From cybette at helixcommunity.org  Wed Nov  8 11:54:14 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 13:00:32 2006
Subject: [Datatype-cvs] mdf/video/format/rm/pub mdfrvxpayloadformat.h, 1.5,
	1.6
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/rm/pub
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv16158

Modified Files:
	mdfrvxpayloadformat.h 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: mdfrvxpayloadformat.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/rm/pub/mdfrvxpayloadformat.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- mdfrvxpayloadformat.h	25 Sep 2006 21:31:24 -0000	1.5
+++ mdfrvxpayloadformat.h	8 Nov 2006 19:54:12 -0000	1.6
@@ -69,6 +69,7 @@
     virtual CMediaPacket* CreateAssembledPacket( IHXPacket* pPayloadData );
     virtual UINT32        GetPreRollInMs() const;
     virtual HX_RESULT     FillBuffer( TPtr8& inputBuffer, const CMediaPacket* pMediaPacket ) const;
+    virtual const TDesC8& GetVideoProfile() const;
 
 private:
     CRVXPayloadFormatPluginDevice();


From cybette at helixcommunity.org  Wed Nov  8 11:56:03 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 13:02:21 2006
Subject: [Datatype-cvs] mdf/video/format/rm mdfrvxpayloadformat.cpp,1.7,1.8
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/rm
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv16247

Modified Files:
	mdfrvxpayloadformat.cpp 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: mdfrvxpayloadformat.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/rm/mdfrvxpayloadformat.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- mdfrvxpayloadformat.cpp	25 Sep 2006 21:31:24 -0000	1.7
+++ mdfrvxpayloadformat.cpp	8 Nov 2006 19:56:01 -0000	1.8
@@ -51,7 +51,7 @@
 #include "hxmtypes.h"
 #include 
 
-#define DEFAUL_RVX_PREROLL_IN_MS                3500
+#define DEFAULT_RVX_PREROLL_IN_MS                3500
 #define KUidRVXPayloadFormatPluginDeviceDefine  0x10207479
 const TUid KUidRVXPayloadFormatPluginDevice = {KUidRVXPayloadFormatPluginDeviceDefine};
 
@@ -171,7 +171,14 @@
 {
     MDFVIDEOLOG_ENTERFN( "GetPreRollInMs" );
     MDFVIDEOLOG_LEAVEFN( "GetPreRollInMs" );
-    return DEFAUL_RVX_PREROLL_IN_MS;
+    return DEFAULT_RVX_PREROLL_IN_MS;
+}
+
+const TDesC8& CRVXPayloadFormatPluginDevice::GetVideoProfile() const
+{
+    MDFVIDEOLOG_ENTERFN( "GetVideoProfile" );
+    MDFVIDEOLOG_LEAVEFN( "GetVideoProfile" );
+    return KNullDesC8();
 }
 
 HX_RESULT CRVXPayloadFormatPluginDevice::FillBuffer( TPtr8& inputBuffer, const CMediaPacket* pMediaPacket ) const


From cybette at helixcommunity.org  Wed Nov  8 11:58:41 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 13:04:58 2006
Subject: [Datatype-cvs] mdf/video/renderer/pub mdfpluginmanager.h,1.6,1.7
Message-ID: 

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

Modified Files:
	mdfpluginmanager.h 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: mdfpluginmanager.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/renderer/pub/mdfpluginmanager.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- mdfpluginmanager.h	6 Jul 2006 15:29:33 -0000	1.6
+++ mdfpluginmanager.h	8 Nov 2006 19:58:38 -0000	1.7
@@ -78,7 +78,12 @@
     TBool CMdfPluginManager::GetIdsByMimeTypeL( CPluginPackage& aPluginPackage );
     void Reset();
     char** GetSupportedMimeType(); //transfer ownership
-    
+    HBufC8* ConvertToStandardMimeTypeL( const TDesC8& aMimeType ) const;
+    HX_RESULT SelectPackageByCodecRule( const TDesC8& aMimeType,
+                                        TUid  decUidNeeded,
+                                        TUid  ppUidNeeded,
+                                        CPluginPackage& pluginPackage ) const;
+
 private:
     CMdfPluginManager();
     void ConstructL();
@@ -103,7 +108,6 @@
     virtual void MdvppStreamEnd(){}
     
 private:
-    HBufC8* ConvertToStandardMimeTypeL( const TDesC8& aMimeType );
     HXBOOL IsDecoderSupportMimeTypeL( const CVideoDecoderInfo* pDecoderInfo, const TDesC8& aMimeType, const CCompressedVideoFormat*& pCCompressedVideoFormat ) const;
     
 private:


From cybette at helixcommunity.org  Wed Nov  8 12:01:25 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 13:07:43 2006
Subject: [Datatype-cvs] mdf/video/renderer/pub mdfvideoadapter.h,1.21,1.22
Message-ID: 

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

Modified Files:
	mdfvideoadapter.h 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: mdfvideoadapter.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/renderer/pub/mdfvideoadapter.h,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -r1.21 -r1.22
--- mdfvideoadapter.h	6 Nov 2006 19:28:09 -0000	1.21
+++ mdfvideoadapter.h	8 Nov 2006 20:01:23 -0000	1.22
@@ -71,7 +71,7 @@
 #include "cpacemkr.h"           //CVideoPaceMaker
 #include "mdpkt.h"
 #include "hxthread.h"
-#include "mdfpluginpackage.h"   //CPluginPackage
+#include "mdfpluginmanager.h"   //CMdfPluginManager
 #include "mdfpayloadformat.h"   //CPayloadFormatPluginDevice
 #include "hxslist.h"            //CHXSimpleList
 #include "mdfgenericlog.h"      //logging
@@ -83,6 +83,8 @@
 #include "videowindowcontrol.h"
 #endif
 
+#define CODECCONFIGRULE_ARRAY_GRANULARITY    4
+
 class CMdfVideoAdapter : public IUnknown,
                          public IHXSurfaceControl,
                          public IHXDSAControl,
@@ -99,7 +101,8 @@
     STDMETHOD_( UINT32,Release )  (THIS);
     
 public:
-    HX_RESULT   Init( const CPluginPackage& pluginPackage, 
+    HX_RESULT   Init( CPluginPackage&          pluginPackage, 
+                      const CMdfPluginManager& pluginManager, 
                       MMMFClockSource*      pClcokSource, 
                       IHXValues*            pHeader,
                       IUnknown*             pContext );
@@ -130,6 +133,7 @@
     HX_RESULT   Blt();
     void        BltL();
     HXBOOL      PrepareUpdatedBltMediaPacket();
+    HX_RESULT   ParseMDFCodecRules( UINT32& ulCount );
     
 public: 
     //From MMMFDevVideoPlayObserver
@@ -188,6 +192,17 @@
         EInitializedFailed
     };
 
+    typedef struct _CodecConfigRule
+    {
+        HBufC8*     pMimeType;
+        HBufC8*     pProfile;
+        UINT32      ulFrameResolution;
+        TUid        DecoderUid;
+        TUid        PostProcessorUid;
+        TUid        DefaultDecoderUid;
+        TUid        DefaultPostProcUid;
+    } CodecConfigRule;
+
 private:
     IHXSite*            m_pSite;
     MMMFClockSource*    m_pClockSource;
@@ -248,6 +263,8 @@
     UINT32              m_ulContrast;
     HXxRect             m_CropRect;
 
+    RPointerArray  m_CodecConfigRuleArray;
+
     MDFVIDEOLOG_DEFINE;
         
 };


From cybette at helixcommunity.org  Wed Nov  8 12:51:25 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 13:57:43 2006
Subject: [Datatype-cvs] mdf/video/renderer mdfpluginmanager.cpp,1.9,1.10
Message-ID: 

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

Modified Files:
	mdfpluginmanager.cpp 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: mdfpluginmanager.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/renderer/mdfpluginmanager.cpp,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- mdfpluginmanager.cpp	17 Jul 2006 22:04:51 -0000	1.9
+++ mdfpluginmanager.cpp	8 Nov 2006 20:51:23 -0000	1.10
@@ -74,7 +74,7 @@
   m_bPluginArchiveMatchPackageArray( ETrue )
 {
     MDFVIDEOLOG_CREATE_NOWRITE;
-    MDFVIDEOLOG_CLASSNAME( "CMdfPluginManager" );
+    MDFVIDEOLOG_CLASSNAME( "CMdfPluginManager" );
     MDFVIDEOLOG_ENTERFN( "CMdfPluginManager" );
     MDFVIDEOLOG_LEAVEFN( "CMdfPluginManager" );
 }
@@ -104,15 +104,15 @@
         
         REComSession::ListImplementationsL(KUidDevVideoDecoderHwDevice, decoderPlugins);
         
-        TInt countdec = decoderPlugins.Count();
-        MDFVIDEOLOG_WRITE_FORMAT2( "<-> Number of decoders discovered is = %d", countdec );
+        TInt countdec = decoderPlugins.Count();
+        MDFVIDEOLOG_WRITE_FORMAT2( "<-> Number of decoders discovered is = %d", countdec );
         
         for( TInt i = 0; i < countdec; i++ )
         {
             const CImplementationInformation* plugin = decoderPlugins[i];
             
             TUid  pluginId = plugin->ImplementationUid();
-            MDFVIDEOLOG_WRITE_MULTI_FORMAT2( "    (%d): Decoder id = 0x%08x", i, pluginId.iUid );
+            MDFVIDEOLOG_WRITE_MULTI_FORMAT2( "    (%d): Decoder id = 0x%08x", i, pluginId.iUid );
             
 
             CMMFVideoDecodeHwDevice* dev = CMMFVideoDecodeHwDevice::NewL( pluginId, *this );
@@ -132,14 +132,14 @@
         REComSession::ListImplementationsL(KUidDevVideoPostProcessorHwDevice, postprocessorPlugins);
         
         TInt countpp = postprocessorPlugins.Count();
-        MDFVIDEOLOG_WRITE_FORMAT2( "<-> Number of postprocessor discovered is = %d", countpp );
-        
+        MDFVIDEOLOG_WRITE_FORMAT2( "<-> Number of postprocessor discovered is = %d", countpp );
+        
         for( TInt j = 0; j < countpp; j++ )
         {
             const CImplementationInformation* plugin = postprocessorPlugins[j];
             
             TUid  pluginId = plugin->ImplementationUid();
-            MDFVIDEOLOG_WRITE_MULTI_FORMAT2( "    (%d): Postprocessor id = 0x%08x", j, pluginId.iUid );
+            MDFVIDEOLOG_WRITE_MULTI_FORMAT2( "    (%d): Postprocessor id = 0x%08x", j, pluginId.iUid );
             
             CMMFVideoPostProcHwDevice* dev = CMMFVideoPostProcHwDevice::NewL( pluginId, *this );
             CleanupStack::PushL( dev );
@@ -158,14 +158,14 @@
         REComSession::ListImplementationsL(KUidPayloadFormatPluginDevice, payloadformatPlugins);
         
         TInt countpy = payloadformatPlugins.Count();
-        MDFVIDEOLOG_WRITE_FORMAT2( "<-> Number of payload discovered is = %d", countpy );
-        
+        MDFVIDEOLOG_WRITE_FORMAT2( "<-> Number of payload discovered is = %d", countpy );
+        
         for( TInt k = 0; k < countpy; k++ )
         {
             const CImplementationInformation* plugin = payloadformatPlugins[k];
             
             TUid  pluginId = plugin->ImplementationUid();
-            MDFVIDEOLOG_WRITE_MULTI_FORMAT2( "    (%d): Payload id = 0x%08x", k, pluginId.iUid );
+            MDFVIDEOLOG_WRITE_MULTI_FORMAT2( "    (%d): Payload id = 0x%08x", k, pluginId.iUid );
             
             CPayloadFormatPluginDevice* dev = CPayloadFormatPluginDevice::NewL( pluginId );
             
@@ -190,12 +190,10 @@
     MDFVIDEOLOG_ENTERFN( "GetIdsByMimeTypeL" );
     
     const TDesC8& aMimeType = aPluginPackage.GetHelixMimeType();
-    
+    
     MDFVIDEOLOG_WRITE_FORMAT( "<-> Mimetype investigated for support is %s", aMimeType.Ptr() );
-    
-    TBool foundPackage       = EFalse;
-    TBool foundPayloadFormat = EFalse;
     
+    TBool foundPackage       = EFalse;
     TInt  entryLocation = -1;
     
     //search the list
@@ -206,7 +204,7 @@
         if( package->GetHelixMimeType() == aMimeType )
         {
             foundPackage = ETrue;
-            entryLocation = i;
+            entryLocation = i;
             MDFVIDEOLOG_INOUTFN( "Mimetype has already been investigated earlier" );
             break;
         }
@@ -214,7 +212,7 @@
     
     if( !foundPackage )
     {
-        MDFVIDEOLOG_INOUTFN( "Mimetype has not been investigated earlier, investigate now ..." );
+        MDFVIDEOLOG_INOUTFN( "Mimetype has not been investigated earlier, investigate now ..." );
         CPluginPackage* newPackage = CPluginPackage::NewL( aMimeType );
         entryLocation = m_PluginPackageArray.Count();
         m_PluginPackageArray.Append( newPackage );  //transfer the ownership
@@ -228,13 +226,13 @@
         TInt payloadformatCount = m_PayloadFormatArray.Count();
         CPayloadFormatInfo* payloadformatinfo = NULL;
         
-        for( TInt m = 0; m < payloadformatCount && !foundPayloadFormat; m++ )
+        for( TInt m = 0; m < payloadformatCount; m++ )
         {
-            payloadformatinfo = m_PayloadFormatArray[ m ];
-            MDFVIDEOLOG_WRITE_FORMAT( "<-> Payload selected id: 0x%08x", payloadformatinfo->Uid().iUid );
+            payloadformatinfo = m_PayloadFormatArray[ m ];
+            MDFVIDEOLOG_WRITE_FORMAT( "<-> Payload selected id: 0x%08x", payloadformatinfo->Uid().iUid );
             
             if( payloadformatinfo->SupportMimeType( aMimeType ) )
-            {
+            {
                 MDFVIDEOLOG_INOUTFN( "Selected payload do support mimetype" );
                 TVideoDataUnitType  unitType = payloadformatinfo->GetVideoDataUnitType();
                 TVideoDataUnitEncapsulation unitEncapsulation = payloadformatinfo->GetVideoDataUnitEncapsulation();
@@ -244,62 +242,44 @@
                 newPackage->SetVideoDataUnitEncapsulation( unitEncapsulation );
                 newPackage->SetPayloadFormatId( plId );
                 
-                foundPayloadFormat = ETrue;
-            }
-            else
-            {
-                MDFVIDEOLOG_INOUTFN( "Selected payload do NOT support mimetype" );
-            }
-        }
-        
-        if( foundPayloadFormat )
-        {        
-            MDFVIDEOLOG_INOUTFN( "Payload matches, check for decoder ..." );
-            
-            for( TInt j = 0; j < decoderCount && !foundPackage; j++ )
-            {
-                CVideoDecoderInfo* decoderInfo = m_HwDecoderArray[j];
-                MDFVIDEOLOG_WRITE_FORMAT( "<-> Decoder selected id: 0x%08x", decoderInfo->Uid().iUid );
-                
-                const CCompressedVideoFormat* format = NULL;
-
-                if( IsDecoderSupportMimeTypeL( decoderInfo, *convertedMimeType, format ) )
+                MDFVIDEOLOG_INOUTFN( "Payload matches, check for decoder ..." );
+                for( TInt j = 0; j < decoderCount; j++ )
                 {
-                    MDFVIDEOLOG_INOUTFN( "Selected decoder do support mimetype" );
-                    TUid decoderUid = decoderInfo->Uid();
-                    CMMFVideoDecodeHwDevice* dev = CMMFVideoDecodeHwDevice::NewL( decoderUid, *this );
-                    CleanupStack::PushL(dev);
-                    
-                    TVideoDataUnitType UnitType = payloadformatinfo->GetVideoDataUnitType();
-                    TVideoDataUnitEncapsulation UnitEncapsulation = payloadformatinfo->GetVideoDataUnitEncapsulation();
+                    CVideoDecoderInfo* decoderInfo = m_HwDecoderArray[j];
+                    MDFVIDEOLOG_WRITE_FORMAT( "<-> Decoder selected id: 0x%08x", decoderInfo->Uid().iUid );
+                
+                    const CCompressedVideoFormat* format = NULL;
+
+                    if( IsDecoderSupportMimeTypeL( decoderInfo, *convertedMimeType, format ) )
+                    {
+                        MDFVIDEOLOG_INOUTFN( "Selected decoder do support mimetype" );
+                        TUid decoderUid = decoderInfo->Uid();
+                        CMMFVideoDecodeHwDevice* dev = CMMFVideoDecodeHwDevice::NewL( decoderUid, *this );
+                        CleanupStack::PushL(dev);
                     
-                    TRAPD( error, dev->SetInputFormatL( *format, UnitType, UnitEncapsulation, ETrue ) );
-                    if( error == KErrNone )
-                    {
-                        MDFVIDEOLOG_INOUTFN( "dev->SetInputFormatL does not leave" );
-                        
-                        RArray decoderOutputFormat;
-                        CleanupClosePushL( decoderOutputFormat );
+                        TRAPD( error, dev->SetInputFormatL( *format, unitType, unitEncapsulation, ETrue ) );
+                        if( error == KErrNone )
+                        {
+                            MDFVIDEOLOG_INOUTFN( "dev->SetInputFormatL does not leave" );
+                        
+                            RArray decoderOutputFormat;
+                            CleanupClosePushL( decoderOutputFormat );
 
-                        dev->GetOutputFormatListL( decoderOutputFormat );
+                            dev->GetOutputFormatListL( decoderOutputFormat );
                         
-                        MDFVIDEOLOG_INOUTFN( "dev->GetOutputFormatListL does not leave" );
-                        //check to see if postprocessor is supporting
-                        for( TInt k = 0; k < postprocessorCount && !foundPackage; k++ )
-                        {
-                            CPostProcessorInfo* postprocessorInfo = m_HwPostProcessorArray[k];
-                            MDFVIDEOLOG_WRITE_FORMAT( "<-> Postprocessor selected id: 0x%08x", postprocessorInfo->Uid().iUid );
-                            
-                            if( postprocessorInfo->SupportsDirectDisplay() )
+                            MDFVIDEOLOG_INOUTFN( "dev->GetOutputFormatListL does not leave" );
+                            //check to see if postprocessor is supporting
+                            for( TInt k = 0; k < postprocessorCount; k++ )
                             {
-                                MDFVIDEOLOG_INOUTFN( "postprocessorInfo->SupportsDirectDisplay() true" );
+                                CPostProcessorInfo* postprocessorInfo = m_HwPostProcessorArray[k];
+                                MDFVIDEOLOG_WRITE_FORMAT( "<-> Postprocessor selected id: 0x%08x", postprocessorInfo->Uid().iUid );
+                            
                                 const RArray& postprocessorInputFormat = postprocessorInfo->SupportedFormats();
                                 TUncompressedVideoFormat aCommonFormat;
-                                foundPackage = CMMFDevVideoPlay::FindCommonFormat( decoderOutputFormat.Array(), postprocessorInputFormat.Array(), aCommonFormat );
-                                if( foundPackage )
-                                {
-                                    MDFVIDEOLOG_INOUTFN( "Commonformat between decoder and postprocessor is found" );
-
+                                if( CMMFDevVideoPlay::FindCommonFormat( decoderOutputFormat.Array(), postprocessorInputFormat.Array(), aCommonFormat ) )
+                                {
+                                    MDFVIDEOLOG_INOUTFN( "Commonformat between decoder and postprocessor is found" );
+
                                     newPackage->SetVideoHwMimeTypeL( format->MimeType() );
                                     TUid decoderId = decoderInfo->Uid();
                                     newPackage->SetHwDecoderId( decoderId );
@@ -307,34 +287,50 @@
                                     newPackage->SetHwPostProcessorId( ppId );
                                     newPackage->SetHwUncompressedVideoFormat( aCommonFormat );
                                     newPackage->SetPackageValid( ETrue );
-                                    MDFVIDEOLOG_INOUTFN( "Mimetype is supported" );
-                                }
-                                else
+                                    foundPackage = ETrue;
+
+                                    MDFVIDEOLOG_INOUTFN( "Mimetype is supported" );
+                                    
+                                    /////////////prepare second package////////////////////
+                                    newPackage = CPluginPackage::NewL( *newPackage );
+                                    m_PluginPackageArray.Append( newPackage );  //transfer the ownership
+                                    newPackage->SetPackageValid( EFalse );
+                                    ///////////////////////////////////////////////////////
+                                }
+                                else
                                 {
-                                    MDFVIDEOLOG_INOUTFN( "Commonformat between decoder and postprocessor is NOT found" );
-                                }
-                            }
-                            else
-                            {
-                                MDFVIDEOLOG_INOUTFN( "postprocessorInfo->SupportsDirectDisplay() false" );
-                            }
+                                    MDFVIDEOLOG_INOUTFN( "Commonformat between decoder and postprocessor is NOT found" );
+                                }
+                            }   //for( TInt k = 0; k < postprocessorCount; k++ )
+                            CleanupStack::PopAndDestroy( &decoderOutputFormat );
+                        } //if( error == KErrNone )
+                        else
+                        {
+                            MDFVIDEOLOG_INOUTFN( "dev->SetInputFormatL leaves" );
                         }
-
-                        CleanupStack::PopAndDestroy( &decoderOutputFormat );
-                    }
-                    else
-                    {
-                        MDFVIDEOLOG_INOUTFN( "dev->SetInputFormatL leaves" );
+                        CleanupStack::PopAndDestroy(dev);
+                    } //if( IsDecoderSupportMimeTypeL( decoderInfo, *convertedMimeType, format ) )
+                    else
+                    {
+                        MDFVIDEOLOG_INOUTFN( "Decoder do NOT support mimetype" );
                     }
-                    CleanupStack::PopAndDestroy(dev);
-                }
-                else
-                {
-                    MDFVIDEOLOG_INOUTFN( "Decoder do NOT support mimetype" );
-                }
+                } //for( TInt j = 0; j < decoderCount; j++ )
+            } //if( payloadformatinfo->SupportMimeType( aMimeType ) )
+            else
+            {
+                MDFVIDEOLOG_INOUTFN( "Selected payload do NOT support mimetype" );
             }
-        }
+        } //for( TInt m = 0; m < payloadformatCount; m++ )
+
         CleanupStack::PopAndDestroy( convertedMimeType );
+        if( foundPackage )
+        {
+            //the last entry is not needed
+            TInt lastEntry = m_PluginPackageArray.Count() - 1;
+            HX_ASSERT( newPackage ==  m_PluginPackageArray[ lastEntry ] );
+            delete newPackage;
+            m_PluginPackageArray.Remove( lastEntry );
+        }
     }
     
     CPluginPackage* package = m_PluginPackageArray[entryLocation];
@@ -387,8 +383,8 @@
         for( TInt j = 0; j < countMimeType; j++ )
         {
             HBufC8* tdesc = supportedmimetypearray[ j ];
-            MDFVIDEOLOG_WRITE_FORMAT( "<-> Mimetype targeted is %s", tdesc->Ptr() );
-            
+            MDFVIDEOLOG_WRITE_FORMAT( "<-> Mimetype targeted is %s", tdesc->Ptr() );
+            
             CPluginPackage* pluginpackage = NULL;
             TBool valid = EFalse;
             TRAPD( error, pluginpackage = CPluginPackage::NewL( *tdesc ) );
@@ -403,11 +399,11 @@
             delete pluginpackage;
             if( valid )
             {
-                MDFVIDEOLOG_INOUTFN( "Mimetype is supported" );
-            }
-            else
-            {
-                MDFVIDEOLOG_INOUTFN( "Mimetype is NOT supported" );
+                MDFVIDEOLOG_INOUTFN( "Mimetype is supported" );
+            }
+            else
+            {
+                MDFVIDEOLOG_INOUTFN( "Mimetype is NOT supported" );
             }
         }
         
@@ -425,7 +421,7 @@
     }
 
     
-    MDFVIDEOLOG_INOUTFN( "Mimetypes that are supported and returned to Helix ..." );
+    MDFVIDEOLOG_INOUTFN( "Mimetypes that are supported and returned to Helix ..." );
     char** pMimeType = NULL;
     pMimeType = new char*[ numberOfMimeType +1 ];
     if( pMimeType )
@@ -442,9 +438,9 @@
                 const TDesC8& supportedMimeType = pluginPackage->GetHelixMimeType();
                 
                 TInt length = supportedMimeType.Length();
-                const unsigned char* buffer = supportedMimeType.Ptr();
-                
-                MDFVIDEOLOG_WRITE_FORMAT2( "    Mimetype %s is supported", buffer );
+                const unsigned char* buffer = supportedMimeType.Ptr();
+                
+                MDFVIDEOLOG_WRITE_FORMAT2( "    Mimetype %s is supported", buffer );
                 
                 pMimeType[ validPackage ] = new char[ length+1 ];
                 
@@ -465,81 +461,105 @@
     return pMimeType;
 }
 
-HBufC8* CMdfPluginManager::ConvertToStandardMimeTypeL( const TDesC8& aMimeType )
+HBufC8* CMdfPluginManager::ConvertToStandardMimeTypeL( const TDesC8& aMimeType ) const
 {
-    MDFVIDEOLOG_ENTERFN( "ConvertToStandardMimeTypeL" );
-
+    MDFVIDEOLOG_ENTERFN( "ConvertToStandardMimeTypeL" );
+
     _LIT8( KH263,   "h263" );
     _LIT8( KMP4,    "mp4"  );
     _LIT8( KRVX,    "real" );
     _LIT8( KH264,   "h264" );
-    _LIT8( KAVC,    "avc" );
-
-    HBufC8* convertedMimeType = NULL;
-    HBufC8* inMimeType = aMimeType.AllocLC();
-    
-    TPtr8 tptr8 = inMimeType->Des();
-    tptr8.LowerCase();
-    
-    if( tptr8.Find( KH263 ) != KErrNotFound )
-    {
-        convertedMimeType = KH263().AllocL();
-    }
-    else if( tptr8.Find( KMP4 ) != KErrNotFound )
-    {
-        convertedMimeType = KMP4().AllocL();
-    }
-    else if( tptr8.Find( KH264 ) != KErrNotFound )
-    {
-        convertedMimeType = KH264().AllocL();
-    }
-    else if( tptr8.Find( KAVC ) != KErrNotFound )
-    {
-        convertedMimeType = KH264().AllocL();
-    }
-    else if( tptr8.Find( KRVX ) != KErrNotFound )
-    {
-        convertedMimeType = KRVX().AllocL();
-    }
-    else
-    {
-        convertedMimeType = aMimeType.AllocL();
-    }
-    
-    CleanupStack::PopAndDestroy( inMimeType );
+    _LIT8( KAVC,    "avc" );
+
+    HBufC8* convertedMimeType = NULL;
+    HBufC8* inMimeType = aMimeType.AllocLC();
     
-    MDFVIDEOLOG_LEAVEFN( "ConvertToStandardMimeTypeL" );
+    TPtr8 tptr8 = inMimeType->Des();
+    tptr8.LowerCase();
+    
+    if( tptr8.Find( KH263 ) != KErrNotFound )
+    {
+        convertedMimeType = KH263().AllocL();
+    }
+    else if( tptr8.Find( KMP4 ) != KErrNotFound )
+    {
+        convertedMimeType = KMP4().AllocL();
+    }
+    else if( tptr8.Find( KH264 ) != KErrNotFound )
+    {
+        convertedMimeType = KH264().AllocL();
+    }
+    else if( tptr8.Find( KAVC ) != KErrNotFound )
+    {
+        convertedMimeType = KH264().AllocL();
+    }
+    else if( tptr8.Find( KRVX ) != KErrNotFound )
+    {
+        convertedMimeType = KRVX().AllocL();
+    }
+    else
+    {
+        convertedMimeType = aMimeType.AllocL();
+    }
+    
+    CleanupStack::PopAndDestroy( inMimeType );
+    
+    MDFVIDEOLOG_LEAVEFN( "ConvertToStandardMimeTypeL" );
     return convertedMimeType;
 }
 
-HXBOOL CMdfPluginManager::IsDecoderSupportMimeTypeL( const CVideoDecoderInfo* pDecoderInfo, const TDesC8& aMimeType, const CCompressedVideoFormat*& pCCompressedVideoFormat ) const
-{
-    MDFVIDEOLOG_ENTERFN( "IsDecoderSupportMimeTypeL" );
-    
-    const RPointerArray& supportedFormats = pDecoderInfo->SupportedFormats();
-    
-    HXBOOL found( FALSE );
-    UINT count = supportedFormats.Count();
-    pCCompressedVideoFormat = NULL;
-
-    for( UINT i=0; i < count && !found; i++ )
-    {
-        CCompressedVideoFormat* format = supportedFormats[i];
-        HBufC8* mimetype = ( format->MimeType() ).AllocLC();
-        
-        TPtr8 tptr8 = mimetype->Des();
-        tptr8.LowerCase();
-        
-        if (tptr8.Find( aMimeType ) != KErrNotFound )
-        {
-            pCCompressedVideoFormat = format;
-            found = TRUE;
-        }
-
-        CleanupStack::PopAndDestroy( mimetype );
-    }
-    MDFVIDEOLOG_RETURNFN( "IsDecoderSupportMimeTypeL", found );
-
-    return found;
-}
-
+HX_RESULT CMdfPluginManager::SelectPackageByCodecRule( const TDesC8& aMimeType, TUid decUidNeeded,
+                                                       TUid ppUidNeeded, CPluginPackage& pluginPackage ) const
+{
+    MDFVIDEOLOG_ENTERFN( "SelectPackageByCodecRule" );
+    HX_RESULT retVal = HXR_UNSUPPORTED_VIDEO;
+
+    TInt packagecount = m_PluginPackageArray.Count();
+    for( TInt i = 0; i < packagecount; i++ )
+    {
+        CPluginPackage* package = m_PluginPackageArray[ i ];
+        if(   ( package->GetHelixMimeType()     == aMimeType    ) &&
+              ( package->GetHwDecoderId()       == decUidNeeded ) &&
+            ( ( package->GetHwPostProcessorId() == ppUidNeeded  ) || ( ppUidNeeded == KUidZero ) ) )
+        {
+            pluginPackage = *package;
+            retVal = HXR_OK;
+            break;
+        }
+    }
+
+    MDFVIDEOLOG_RETURNFN( "SelectPackageByCodecRule", retVal );
+    return retVal;
+}
+
+HXBOOL CMdfPluginManager::IsDecoderSupportMimeTypeL( const CVideoDecoderInfo* pDecoderInfo, const TDesC8& aMimeType, const CCompressedVideoFormat*& pCCompressedVideoFormat ) const
+{
+    MDFVIDEOLOG_ENTERFN( "IsDecoderSupportMimeTypeL" );
+    
+    const RPointerArray& supportedFormats = pDecoderInfo->SupportedFormats();
+    
+    HXBOOL found( FALSE );
+    UINT count = supportedFormats.Count();
+    pCCompressedVideoFormat = NULL;
+
+    for( UINT i=0; i < count && !found; i++ )
+    {
+        CCompressedVideoFormat* format = supportedFormats[i];
+        HBufC8* mimetype = ( format->MimeType() ).AllocLC();
+        
+        TPtr8 tptr8 = mimetype->Des();
+        tptr8.LowerCase();
+        
+        if (tptr8.Find( aMimeType ) != KErrNotFound )
+        {
+            pCCompressedVideoFormat = format;
+            found = TRUE;
+        }
+
+        CleanupStack::PopAndDestroy( mimetype );
+    }
+    MDFVIDEOLOG_RETURNFN( "IsDecoderSupportMimeTypeL", found );
+
+    return found;
+}
+


From cybette at helixcommunity.org  Wed Nov  8 12:52:37 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 13:58:55 2006
Subject: [Datatype-cvs] mdf/video/renderer mdfvidrend.cpp,1.21,1.22
Message-ID: 

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

Modified Files:
	mdfvidrend.cpp 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: mdfvidrend.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/renderer/mdfvidrend.cpp,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -r1.21 -r1.22
--- mdfvidrend.cpp	28 Sep 2006 16:38:47 -0000	1.21
+++ mdfvidrend.cpp	8 Nov 2006 20:52:35 -0000	1.22
@@ -535,7 +535,7 @@
 
     if( SUCCEEDED( retVal ) )
     {
-        retVal = m_pMdfVideoAdapter->Init( *package, m_pClockSource, m_pHeader, m_pContext );
+        retVal = m_pMdfVideoAdapter->Init( *package, *m_pPluginManager, m_pClockSource, m_pHeader, m_pContext );
     }
 
     HX_DELETE( package );


From cybette at helixcommunity.org  Wed Nov  8 13:02:47 2006
From: cybette at helixcommunity.org (cybette@helixcommunity.org)
Date: Wed Nov  8 14:09:05 2006
Subject: [Datatype-cvs] mdf/video/renderer mdfvideoadapter.cpp,1.48,1.49
Message-ID: 

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

Modified Files:
	mdfvideoadapter.cpp 
Log Message:
"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:
    carol.i.chen@nokia.com

Reviewed by:
    ehyche@real.com

Date: 
    11-07-2006

REQ ID:
    101-29167

Project: 
    Helix plugin for Symbian


Synopsis: 

**New Feature **

There can be multiple video decoder and post processor implementations for one
single video standard in the platforms. Codec Selection Configurability support
will enable Helix to select specific implementations based on a configuration mechanism.

On some platforms, there may be both hardware accelerated decoders as well as
software decoders. While it is convenient to use the accelerated decoders for
all video clips, that is not the most resource efficient. This is due to the
fact that hardware decoders can use considerably more power than the software
counterparts. Therefore, Helix must introduce a mechanism to select a software
decoder when there is no need for a hardware decoder, such as for smaller picture
sizes or simpler profiles. This lets the product keep hardware accelerators powered
off unless required, saving battery in common use cases like network streaming and
MMS playback.

Please refer to attached document for more details on how to specify the rules for
Codec Selection.

Note: if no codec rules are specified in the configuration file, the behaviour
remains unchanged.

(Also in Plugin Manager, change is made to search all valid combinations of
decoder-postprocessor to build the plugin archive. This is needed for codec config
to work. Currently the search stops when it finds one valid combination.)


Files Modified:
    datatype/mdf/video/format       (add methods to obtain video profile and resolution)
                                         /common/pub/mdfpayloadformat.h
                                         /common/mdfpayloadformat.cpp
                                         /h263/pub/mdfh263payloadformat.h
                                         /h263/mdfh263payloadformat.cpp
                                         /h264/pub/mdfh264payloadformat.h
                                         /h264/mdfh264payloadformat.cpp
                                         /h264/Umakefil
                                         /mp4/pub/mdfmp4payloadformat.h
                                         /mp4/mdfmp4payloadformat.cpp
                                         /mp4/Umakefil
                                         /rm/pub/mdfrvxpayloadformat.h
                                         /rm/mdfrvxpayloadformat.cpp
    datatype/mdf/video/renderer       (parse codec rules + logic to config codec using rules)
                                            /pub/mdfpluginmanager.h
                                            /pub/mdfvideoadapter.h
                                            /mdfpluginmanager.cpp
                                            /mdfvideoadapter.cpp
                                            /mdfvidrend.cpp
    client/build/BIF/hxclient_2_1_0_cayennes.bif
    common/build/BIF/helix.bif

Image Size and Heap Use impact: 
    slight increase in heap and image size

Platforms and Profiles Build Verified: 
    armv5 / helix-client-s60-32-mmf-mdf-dsp, helix-client-s60-32-mmf-mdf-arm
    winscw / helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: 
    armv5 / helix-client-s60-32-mmf-mdf-arm

Branch: 
    HEAD and hxclient_2_1_0_cayennes


Index: mdfvideoadapter.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/renderer/mdfvideoadapter.cpp,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -d -r1.48 -r1.49
--- mdfvideoadapter.cpp	8 Nov 2006 16:42:01 -0000	1.48
+++ mdfvideoadapter.cpp	8 Nov 2006 21:02:45 -0000	1.49
@@ -55,6 +55,7 @@
 #include "mdfvideoadapter.h"
 #include "hxprefutil.h"
 #include "hxerror.h"
+#include "hlxclib/stdlib.h"  //itoa, atol, strtoul
 #include "hxmon.h"
 
 #ifdef _WIN32
@@ -63,6 +64,7 @@
 #define DFLT_PRESENT_PRIORITY          0
 #endif
 #define BLTR_INTERVAL                  5     //ms
+#define CODEC_RULE_FIELD_COUNT         7     //number of fields in a codec config rule
 
 const TInt64 MDF_FRAME_DROP_THRESHOLD = TInt64( 3000000 ); //3000 ms
 
@@ -156,7 +158,8 @@
   m_fWidthPerc( 100.0 ),
   m_bIsScalingCalcNeeded( FALSE ),
   m_bIsDSAStartedFromClient( TRUE ),
-  m_ulContrast( 0 )
+  m_ulContrast( 0 ),
+  m_CodecConfigRuleArray( CODECCONFIGRULE_ARRAY_GRANULARITY )
 {
     MDFVIDEOLOG_CREATE_NOWRITE;
     MDFVIDEOLOG_CLASSNAME( "CMdfVideoAdapter" );
@@ -193,6 +196,9 @@
         Shutdown();
     }
 
+    m_CodecConfigRuleArray.ResetAndDestroy();
+    m_CodecConfigRuleArray.Close();
+
     HX_DELETE( m_pBltQueueMutex );
     HX_DELETE( m_pWriteMutex );
     HX_DELETE( m_pDevVideoPlay );
@@ -211,13 +217,15 @@
     MDFVIDEOLOG_LEAVEFN( "Reset" );
 }
 
-HX_RESULT CMdfVideoAdapter::Init( const CPluginPackage& pluginPackage,
-                                  MMMFClockSource*      pClockSource,
-                                  IHXValues*            pHeader,
-                                  IUnknown*             pContext )
+HX_RESULT CMdfVideoAdapter::Init( CPluginPackage&          pluginPackage,
+                                  const CMdfPluginManager& pluginManager, 
+                                  MMMFClockSource*         pClockSource,
+                                  IHXValues*               pHeader,
+                                  IUnknown*                pContext )
 {
     MDFVIDEOLOG_ENTERFN2( "Init" );
     HX_RESULT retVal( HXR_OK );
+    HXBOOL bUseCodecConfigRules = TRUE;
 
     //if ReadPrefBOOL() fails, m_bAutoScale is unchanged.
     ReadPrefBOOL( pContext, "AutoScale", m_bAutoScale );
@@ -259,6 +267,82 @@
         retVal = m_pPayloadFormatPluginDevice->Init( m_pContext, m_pHeader );
     }
 
+    if( SUCCEEDED( retVal ) )
+    {
+        UINT32 rulesCount = 0;
+        retVal = ParseMDFCodecRules( rulesCount );
+        if( rulesCount == 0 )
+        {
+            bUseCodecConfigRules = FALSE;
+        }
+    }
+
+    if ( SUCCEEDED( retVal ) && bUseCodecConfigRules )
+    {
+        // find codec rule to be applied
+        const TDesC8& aMimeType = pluginPackage.GetHelixMimeType();
+        const TDesC8& aProfile  = m_pPayloadFormatPluginDevice->GetVideoProfile();
+        MDFVIDEOLOG_WRITE_FORMAT( "<-> Profile string for video is %s", aProfile.Ptr() );
+
+        HBufC8* convertedMimeType = NULL;
+        TRAPD( error, convertedMimeType = pluginManager.ConvertToStandardMimeTypeL( aMimeType ) );
+        if( error == KErrNone )
+        {
+            HXBOOL foundRule = FALSE;
+            UINT8 count      = m_CodecConfigRuleArray.Count();
+            TUid decUidToUse = KUidZero;
+            TUid ppUidToUse  = KUidZero;
+
+            for( UINT8 i = 0; i < count; i++ )
+            {
+                CodecConfigRule* pCodecRule = m_CodecConfigRuleArray[i];
+                if( ( pCodecRule ) && ( *(pCodecRule->pMimeType) == *convertedMimeType ) )
+                {
+                    if( ( aProfile                == KNullDesC8() ) ||
+                        ( *(pCodecRule->pProfile) == KNullDesC8() ) ||
+                        ( *(pCodecRule->pProfile) == aProfile ) )
+                    {
+                        UINT32 resolution = m_pPayloadFormatPluginDevice->GetVideoResolution();
+                        MDFVIDEOLOG_WRITE_FORMAT( "<-> Video resolution is %d", resolution );
+                        if( ( resolution > 0 ) && ( resolution <= pCodecRule->ulFrameResolution ) )
+                        {
+                            decUidToUse = pCodecRule->DecoderUid;
+                            ppUidToUse  = pCodecRule->PostProcessorUid;
+                        }
+                        else
+                        {
+                            decUidToUse = pCodecRule->DefaultDecoderUid;
+                            ppUidToUse  = pCodecRule->DefaultPostProcUid;
+                        }
+                        if( decUidToUse != KUidZero )
+                        {
+                            foundRule = TRUE;
+                            break;
+                        }
+                    }
+                }
+            }
+
+            if( foundRule )
+            {
+                if(  ( decUidToUse != pluginPackage.GetHwDecoderId() ) ||
+                    ( ( ppUidToUse != KUidZero ) && ( ppUidToUse != pluginPackage.GetHwPostProcessorId() ) ) )
+                {
+                    // current package's decoder and/or post processor doesn't match desired
+                    // need to select another package
+                    retVal = pluginManager.SelectPackageByCodecRule( aMimeType, decUidToUse,
+                                                                     ppUidToUse, pluginPackage );
+                }
+            }
+            else
+            {
+                MDFVIDEOLOG_WRITE_FORMAT( "    Error: Valid codec rule not found for mimetype %s", aMimeType.Ptr() );
+                retVal = HXR_UNSUPPORTED_VIDEO;
+            }
+        }
+        HX_DELETE( convertedMimeType );
+    }
+
     if ( SUCCEEDED( retVal ) )
     {
         m_pPictureHeader = m_pPayloadFormatPluginDevice->GetPictureHeader();
@@ -1797,4 +1881,152 @@
     return retVal;
 }
 
+/////////////////////////////////////////////////////////
+//method for Codec selection configurability
+
+HX_RESULT CMdfVideoAdapter::ParseMDFCodecRules( UINT32& ulCount )
+{
+    MDFVIDEOLOG_ENTERFN( "ParseMDFCodecRules" );
+    HX_RESULT retVal = HXR_OK;
+
+    UINT32 ulRulesCount = 0;
+    const CHXString keyPrefix = "MDFCodecRule";
+    char index[4] = {0};
+
+    if( m_pContext )
+    {
+        HXBOOL bIsRuleValid = TRUE;
+        CHXString codecRule;
+
+        while( bIsRuleValid == TRUE )
+        {
+            // convert rules counter to string to be appended as an index to the key prefix
+            // (the rules are stored in prefs as MDFCodecRule1, MDFCodecRule2 ... etc.)
+            itoa( ++ulRulesCount, index, 10 );
+
+            if( SUCCEEDED( ReadPrefCSTRING( m_pContext, keyPrefix + index, codecRule ) ) )
+            {
+                MDFVIDEOLOG_WRITE_MULTI_FORMAT( "    Codec rule %d: %s", ulRulesCount, (const char*)codecRule );
+
+                // remove curly brackets and extra spaces from rule string
+                codecRule.FindAndReplace( "{", "", TRUE );
+                codecRule.FindAndReplace( "}", "", TRUE );
+                codecRule.TrimLeft();
+                codecRule.TrimRight();
+                while( codecRule.FindAndReplace( "  ", " " , TRUE ) );
+
+                // parse individual fields in the rule string
+                if( codecRule.CountFields( ' ' ) != CODEC_RULE_FIELD_COUNT )
+                {
+                    MDFVIDEOLOG_WRITE_FORMAT( "    Wrong number of fields in MDFCodecRule%d", ulRulesCount );
+                    bIsRuleValid = FALSE;
+                    ulRulesCount--;
+                }
+                else
+                {
+                    CodecConfigRule* newRule = new CodecConfigRule;
+                    HX_ASSERT( newRule );
+                    CHXString fieldValue;
+                    TInt error = KErrNone;
+
+                    for( UINT8 i = 1; i <= CODEC_RULE_FIELD_COUNT; i++ )
+                    {
+                        fieldValue = codecRule.NthField( ' ', i );
+                        fieldValue.MakeLower();
+
+                        // TUid fields are parsed here to avoid repeatition in switch statement
+                        UINT32 ulUid;
+                        if( (i >= 4) && (i <= 7) )
+                        {
+                            char* pEnd;
+                            ulUid = strtoul( (const char*)fieldValue, &pEnd, 16 );
+                            if( ulUid == 0xFFFFFFFF )
+                            {
+                                ulUid = KUidZero.iUid;
+                            }
+                        }
+
+                        switch (i)
+                        {
+                            case 1:
+                                {
+                                    TBuf8<40> tempBuf( (const TUint8*)(const char*)fieldValue );
+                                    TRAP( error, newRule->pMimeType = tempBuf.AllocL() );
+                                }
+                                break;
+                            case 2:
+                                {
+                                    // if a wildcard character is used, we regard it as non-consideration
+                                    // for this attribute and therefore won't assign profile
+                                    if( fieldValue == "*" )
+                                    {
+                                        TRAP( error, newRule->pProfile = KNullDesC8().AllocL() );
+                                    }
+                                    else
+                                    {
+                                        TBuf8<40> tempBuf( (const TUint8*)(const char*)fieldValue );
+                                        TRAP( error, newRule->pProfile = tempBuf.AllocL() );
+                                    }
+                                }
+                                break;
+                            case 3:
+                                {
+                                    CHXString left = fieldValue.NthField( 'x', 1 );
+                                    CHXString right = fieldValue.NthField( 'x', 2 );
+                                    UINT32 ulWidth = atol( (const char*)left );
+                                    UINT32 ulHeight = atol( (const char*)right );
+                                    // if this field is malformed in the rule, the resolution will end up as 0
+                                    // which we will interpret as "don't care" condition
+                                    newRule->ulFrameResolution = ulWidth * ulHeight;
+                                }
+                                break;
+                            case 4:
+                                newRule->DecoderUid = TUid::Uid( (TInt)ulUid );
+                                break;
+                            case 5:
+                                newRule->PostProcessorUid = TUid::Uid( (TInt)ulUid );
+                                break;
+                            case 6:
+                                newRule->DefaultDecoderUid = TUid::Uid( (TInt)ulUid );
+                                break;
+                            case 7:
+                                newRule->DefaultPostProcUid = TUid::Uid( (TInt)ulUid );
+                                break;
+                            default:
+                                // should not reach here, but just in case...
+                                retVal = HXR_FAIL;
+                        } // end switch
+                    } // end iteration through fields of new rule
+
+                    // check for error and add new rule to codec rules array
+                    if( error == KErrNone )
+                    {
+                        m_CodecConfigRuleArray.Append( newRule );
+                    }
+                    else
+                    {
+                        MDFVIDEOLOG_WRITE_FORMAT( "    Memory allocation error for MDFCodecRule%d", ulRulesCount);
+                        ulRulesCount--;
+                        bIsRuleValid = FALSE;
+                        retVal = HXR_OUTOFMEMORY;
+                    }
+
+                } // end check field count
+            } // end read from prefs
+            else
+            {
+                // if MDFCodecRuleX is not in prefs, the number of rules is (X - 1)
+                // (it is required there's no skip in rule numbering)
+                ulRulesCount--;
+                bIsRuleValid = FALSE;
+            }
+        } // end while bIsRuleValid
+
+        MDFVIDEOLOG_WRITE_FORMAT( "    Total number of rules: %d", ulRulesCount);
+    }
+
+    ulCount = ulRulesCount;
+    MDFVIDEOLOG_RETURNFN( "ParseMDFCodecRules", retVal );
+    return retVal;
+}
 


From ehyche at helixcommunity.org  Wed Nov  8 18:44:47 2006
From: ehyche at helixcommunity.org (ehyche@helixcommunity.org)
Date: Wed Nov  8 19:51:00 2006
Subject: [Datatype-cvs] wm/fileformat asf_depacketizer.cpp,1.5,1.6
Message-ID: 

Update of /cvsroot/datatype/wm/fileformat
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv11677

Modified Files:
	asf_depacketizer.cpp 
Log Message:
Modified by: Eric Hyche (ehyche@real.com)
Reviewed by: Milko Boic (milko@real.com)

Description
---------------------------------
There was a bug in seeking forward (when having
to populate the on-the-fly seek table from the
seek table in the ASF file). We fix this by
not filtering packets in the depacketizer based
on time, but rather on offset.

Files Modified
---------------------------------
datatype/wm/common/asf_depacketizer.cpp

Branches
---------------------------------
HEAD and 150Cay



Index: asf_depacketizer.cpp
===================================================================
RCS file: /cvsroot/datatype/wm/fileformat/asf_depacketizer.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- asf_depacketizer.cpp	31 Oct 2006 17:49:22 -0000	1.5
+++ asf_depacketizer.cpp	9 Nov 2006 02:44:45 -0000	1.6
@@ -194,10 +194,7 @@
                         // packet time to start processing packets from this stream?
                         if (!m_pStreamInfo[ulHXStreamNum].m_pWMStreamInfo[ulHXSubStreamNum].m_bHasSeekOffset ||
                             (pPayload->m_ullPacketFileOffset >=
-                             ((UINT64) m_pStreamInfo[ulHXStreamNum].m_pWMStreamInfo[ulHXSubStreamNum].m_ulSeekOffset) &&
-                             (!pPayload->m_bHasPresentationTime ||
-                              pPayload->m_ulPresentationTime >=
-                              m_pStreamInfo[ulHXStreamNum].m_pWMStreamInfo[ulHXSubStreamNum].m_ulSeekTime)))
+                             ((UINT64) m_pStreamInfo[ulHXStreamNum].m_pWMStreamInfo[ulHXSubStreamNum].m_ulSeekOffset)))
                         {
                             // Now we can clear the wait-til-seek-offset flag
                             m_pStreamInfo[ulHXStreamNum].m_pWMStreamInfo[ulHXSubStreamNum].m_bHasSeekOffset = FALSE;


From jrmoore at helixcommunity.org  Fri Nov 10 14:18:33 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:24:31 2006
Subject: [Datatype-cvs] samples/audio_renderer2 Umakefil,1.3,1.4
Message-ID: 

Update of /cvsroot/datatype/samples/audio_renderer2
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv3180/datatype/samples/audio_renderer2

Modified Files:
	Umakefil 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-client-all-defines")

Branches: HEAD

Reviewers: milko

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-client-all-defines for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Since the files hadn't been updated in quite some time there were some basic
fixes needed to get them to compile and link.  After the check-ins, there
may be some more changes needed for stage2.

Files Affected
==============
audio/samples/audio_device/main.cpp
client/samples/hello_world/Umakefil
client/samples/reverter/Umakefil
clientapps/samples/testplay/main.cpp
common/fileio/test/main.cpp
common/runtime/Umakefil
common/samples/xml_parser/main.cpp
common/samples/xml_parser/pub/platform/unix/os.h
datatype/samples/audio_renderer/Umakefil
datatype/samples/audio_renderer2/Umakefil
datatype/samples/example_renderer/Umakefil
datatype/samples/example_renderer2/Umakefil
datatype/samples/fileformat1_renderer/Umakefil
datatype/samples/live_realpix/main.cpp
datatype/samples/live_realtext/main.cpp
datatype/samples/live_slideshow/main.cpp
datatype/samples/pcm_renderer/Umakefil
datatype/samples/pcm_renderer2/Umakefil
datatype/samples/pre_post_fileformat/Umakefil
datatype/samples/pre_post_renderer/Umakefil
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/Umakefil
datatype/samples/videosurface_renderer/Umakefil
server/samples/allowance/Umakefil
server/samples/authbasic/Umakefil
server/samples/authfilesys/Umakefil
server/samples/broadcast/Umakefil
server/samples/converter/Umakefil
server/samples/fileformat/Umakefil
server/samples/fileformat2/Umakefil
server/samples/filesystem/Umakefil
server/samples/livepacketsink/Umakefil
server/samples/logging/Umakefil
server/samples/monitor/Umakefil
server/samples/payperview/Umakefil
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
clientapps/samples/motif_testclient/main.cpp
audio/samples/audio_device/umakefil
clientapps/samples/testplay/Umakefil
datatype/samples/live_realpix/Umakefil
datatype/samples/live_realtext/Umakefil
common/samples/xml_parser/Umakefil
clientapps/samples/motif_testclient/Umakefil
datatype/samples/live_slideshow/Umakefil
video/samples/capture_vframes/globals.h
clientapps/samples/testplay/sunos5.pcf
common/samples/xml_parser/sunos5.pcf

New files:
audio/samples/audio_device/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf

Bif files:
ribosome/build/common/build/BIF/helix.bif


Testing Performed
=================

Unit Tests:
  All compiles and links for 3 server supported platforms.

Integration tests:
  Some miscelaneous testing of plugins.
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1







Index: Umakefil
===================================================================
RCS file: /cvsroot/datatype/samples/audio_renderer2/Umakefil,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- Umakefil	22 Jul 2003 01:19:51 -0000	1.3
+++ Umakefil	10 Nov 2006 22:18:31 -0000	1.4
@@ -38,6 +38,7 @@
 UmakefileVersion(2,1)
 
 project.AddModuleIncludes("common/include",
+                          "common/dbgtool/pub",
                           "common/system/pub")
 
 project.AddSources("audio_renderer2.cpp")


From jrmoore at helixcommunity.org  Fri Nov 10 14:18:33 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:24:32 2006
Subject: [Datatype-cvs] samples/audio_renderer Umakefil,1.3,1.4
Message-ID: 

Update of /cvsroot/datatype/samples/audio_renderer
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv3180/datatype/samples/audio_renderer

Modified Files:
	Umakefil 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-client-all-defines")

Branches: HEAD

Reviewers: milko

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-client-all-defines for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Since the files hadn't been updated in quite some time there were some basic
fixes needed to get them to compile and link.  After the check-ins, there
may be some more changes needed for stage2.

Files Affected
==============
audio/samples/audio_device/main.cpp
client/samples/hello_world/Umakefil
client/samples/reverter/Umakefil
clientapps/samples/testplay/main.cpp
common/fileio/test/main.cpp
common/runtime/Umakefil
common/samples/xml_parser/main.cpp
common/samples/xml_parser/pub/platform/unix/os.h
datatype/samples/audio_renderer/Umakefil
datatype/samples/audio_renderer2/Umakefil
datatype/samples/example_renderer/Umakefil
datatype/samples/example_renderer2/Umakefil
datatype/samples/fileformat1_renderer/Umakefil
datatype/samples/live_realpix/main.cpp
datatype/samples/live_realtext/main.cpp
datatype/samples/live_slideshow/main.cpp
datatype/samples/pcm_renderer/Umakefil
datatype/samples/pcm_renderer2/Umakefil
datatype/samples/pre_post_fileformat/Umakefil
datatype/samples/pre_post_renderer/Umakefil
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/Umakefil
datatype/samples/videosurface_renderer/Umakefil
server/samples/allowance/Umakefil
server/samples/authbasic/Umakefil
server/samples/authfilesys/Umakefil
server/samples/broadcast/Umakefil
server/samples/converter/Umakefil
server/samples/fileformat/Umakefil
server/samples/fileformat2/Umakefil
server/samples/filesystem/Umakefil
server/samples/livepacketsink/Umakefil
server/samples/logging/Umakefil
server/samples/monitor/Umakefil
server/samples/payperview/Umakefil
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
clientapps/samples/motif_testclient/main.cpp
audio/samples/audio_device/umakefil
clientapps/samples/testplay/Umakefil
datatype/samples/live_realpix/Umakefil
datatype/samples/live_realtext/Umakefil
common/samples/xml_parser/Umakefil
clientapps/samples/motif_testclient/Umakefil
datatype/samples/live_slideshow/Umakefil
video/samples/capture_vframes/globals.h
clientapps/samples/testplay/sunos5.pcf
common/samples/xml_parser/sunos5.pcf

New files:
audio/samples/audio_device/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf

Bif files:
ribosome/build/common/build/BIF/helix.bif


Testing Performed
=================

Unit Tests:
  All compiles and links for 3 server supported platforms.

Integration tests:
  Some miscelaneous testing of plugins.
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1







Index: Umakefil
===================================================================
RCS file: /cvsroot/datatype/samples/audio_renderer/Umakefil,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- Umakefil	22 Jul 2003 01:19:51 -0000	1.3
+++ Umakefil	10 Nov 2006 22:18:31 -0000	1.4
@@ -38,6 +38,7 @@
 UmakefileVersion(2,1)
 
 project.AddModuleIncludes("common/include",
+                          "common/dbgtool/pub",
                           "common/system/pub")
 
 project.AddSources("audio_renderer.cpp")


From jrmoore at helixcommunity.org  Fri Nov 10 14:18:34 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:24:32 2006
Subject: [Datatype-cvs] samples/pcm_renderer2 Umakefil,1.3,1.4
Message-ID: 

Update of /cvsroot/datatype/samples/pcm_renderer2
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv3180/datatype/samples/pcm_renderer2

Modified Files:
	Umakefil 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-client-all-defines")

Branches: HEAD

Reviewers: milko

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-client-all-defines for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Since the files hadn't been updated in quite some time there were some basic
fixes needed to get them to compile and link.  After the check-ins, there
may be some more changes needed for stage2.

Files Affected
==============
audio/samples/audio_device/main.cpp
client/samples/hello_world/Umakefil
client/samples/reverter/Umakefil
clientapps/samples/testplay/main.cpp
common/fileio/test/main.cpp
common/runtime/Umakefil
common/samples/xml_parser/main.cpp
common/samples/xml_parser/pub/platform/unix/os.h
datatype/samples/audio_renderer/Umakefil
datatype/samples/audio_renderer2/Umakefil
datatype/samples/example_renderer/Umakefil
datatype/samples/example_renderer2/Umakefil
datatype/samples/fileformat1_renderer/Umakefil
datatype/samples/live_realpix/main.cpp
datatype/samples/live_realtext/main.cpp
datatype/samples/live_slideshow/main.cpp
datatype/samples/pcm_renderer/Umakefil
datatype/samples/pcm_renderer2/Umakefil
datatype/samples/pre_post_fileformat/Umakefil
datatype/samples/pre_post_renderer/Umakefil
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/Umakefil
datatype/samples/videosurface_renderer/Umakefil
server/samples/allowance/Umakefil
server/samples/authbasic/Umakefil
server/samples/authfilesys/Umakefil
server/samples/broadcast/Umakefil
server/samples/converter/Umakefil
server/samples/fileformat/Umakefil
server/samples/fileformat2/Umakefil
server/samples/filesystem/Umakefil
server/samples/livepacketsink/Umakefil
server/samples/logging/Umakefil
server/samples/monitor/Umakefil
server/samples/payperview/Umakefil
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
clientapps/samples/motif_testclient/main.cpp
audio/samples/audio_device/umakefil
clientapps/samples/testplay/Umakefil
datatype/samples/live_realpix/Umakefil
datatype/samples/live_realtext/Umakefil
common/samples/xml_parser/Umakefil
clientapps/samples/motif_testclient/Umakefil
datatype/samples/live_slideshow/Umakefil
video/samples/capture_vframes/globals.h
clientapps/samples/testplay/sunos5.pcf
common/samples/xml_parser/sunos5.pcf

New files:
audio/samples/audio_device/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf

Bif files:
ribosome/build/common/build/BIF/helix.bif


Testing Performed
=================

Unit Tests:
  All compiles and links for 3 server supported platforms.

Integration tests:
  Some miscelaneous testing of plugins.
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1







Index: Umakefil
===================================================================
RCS file: /cvsroot/datatype/samples/pcm_renderer2/Umakefil,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- Umakefil	22 Jul 2003 01:19:51 -0000	1.3
+++ Umakefil	10 Nov 2006 22:18:32 -0000	1.4
@@ -38,6 +38,7 @@
 UmakefileVersion(2,1)
 
 project.AddModuleIncludes("common/include",
+                          "common/dbgtool/pub",
                           "common/system/pub")
 		
 


From jrmoore at helixcommunity.org  Fri Nov 10 14:18:34 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:24:33 2006
Subject: [Datatype-cvs] 
	samples/live_realtext/pub/platform/unix os.h, 1.1.1.1, 1.2
Message-ID: 

Update of /cvsroot/datatype/samples/live_realtext/pub/platform/unix
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv3180/datatype/samples/live_realtext/pub/platform/unix

Modified Files:
	os.h 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-client-all-defines")

Branches: HEAD

Reviewers: milko

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-client-all-defines for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Since the files hadn't been updated in quite some time there were some basic
fixes needed to get them to compile and link.  After the check-ins, there
may be some more changes needed for stage2.

Files Affected
==============
audio/samples/audio_device/main.cpp
client/samples/hello_world/Umakefil
client/samples/reverter/Umakefil
clientapps/samples/testplay/main.cpp
common/fileio/test/main.cpp
common/runtime/Umakefil
common/samples/xml_parser/main.cpp
common/samples/xml_parser/pub/platform/unix/os.h
datatype/samples/audio_renderer/Umakefil
datatype/samples/audio_renderer2/Umakefil
datatype/samples/example_renderer/Umakefil
datatype/samples/example_renderer2/Umakefil
datatype/samples/fileformat1_renderer/Umakefil
datatype/samples/live_realpix/main.cpp
datatype/samples/live_realtext/main.cpp
datatype/samples/live_slideshow/main.cpp
datatype/samples/pcm_renderer/Umakefil
datatype/samples/pcm_renderer2/Umakefil
datatype/samples/pre_post_fileformat/Umakefil
datatype/samples/pre_post_renderer/Umakefil
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/Umakefil
datatype/samples/videosurface_renderer/Umakefil
server/samples/allowance/Umakefil
server/samples/authbasic/Umakefil
server/samples/authfilesys/Umakefil
server/samples/broadcast/Umakefil
server/samples/converter/Umakefil
server/samples/fileformat/Umakefil
server/samples/fileformat2/Umakefil
server/samples/filesystem/Umakefil
server/samples/livepacketsink/Umakefil
server/samples/logging/Umakefil
server/samples/monitor/Umakefil
server/samples/payperview/Umakefil
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
clientapps/samples/motif_testclient/main.cpp
audio/samples/audio_device/umakefil
clientapps/samples/testplay/Umakefil
datatype/samples/live_realpix/Umakefil
datatype/samples/live_realtext/Umakefil
common/samples/xml_parser/Umakefil
clientapps/samples/motif_testclient/Umakefil
datatype/samples/live_slideshow/Umakefil
video/samples/capture_vframes/globals.h
clientapps/samples/testplay/sunos5.pcf
common/samples/xml_parser/sunos5.pcf

New files:
audio/samples/audio_device/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf

Bif files:
ribosome/build/common/build/BIF/helix.bif


Testing Performed
=================

Unit Tests:
  All compiles and links for 3 server supported platforms.

Integration tests:
  Some miscelaneous testing of plugins.
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1







Index: os.h
===================================================================
RCS file: /cvsroot/datatype/samples/live_realtext/pub/platform/unix/os.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -d -r1.1.1.1 -r1.2
--- os.h	24 Jun 2003 23:49:45 -0000	1.1.1.1
+++ os.h	10 Nov 2006 22:18:32 -0000	1.2
@@ -63,7 +63,7 @@
 
 #if defined(_UNIX)
 inline HINSTANCE
-LoadLibrary(char* pFileName)
+LoadLibrary(const char* pFileName)
 {
     char  pNewFileName[2048];
     char* pTemp = pNewFileName;


From jrmoore at helixcommunity.org  Fri Nov 10 14:18:34 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:24:33 2006
Subject: [Datatype-cvs] samples/pre_post_fileformat Umakefil,1.3,1.4
Message-ID: 

Update of /cvsroot/datatype/samples/pre_post_fileformat
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv3180/datatype/samples/pre_post_fileformat

Modified Files:
	Umakefil 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-client-all-defines")

Branches: HEAD

Reviewers: milko

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-client-all-defines for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Since the files hadn't been updated in quite some time there were some basic
fixes needed to get them to compile and link.  After the check-ins, there
may be some more changes needed for stage2.

Files Affected
==============
audio/samples/audio_device/main.cpp
client/samples/hello_world/Umakefil
client/samples/reverter/Umakefil
clientapps/samples/testplay/main.cpp
common/fileio/test/main.cpp
common/runtime/Umakefil
common/samples/xml_parser/main.cpp
common/samples/xml_parser/pub/platform/unix/os.h
datatype/samples/audio_renderer/Umakefil
datatype/samples/audio_renderer2/Umakefil
datatype/samples/example_renderer/Umakefil
datatype/samples/example_renderer2/Umakefil
datatype/samples/fileformat1_renderer/Umakefil
datatype/samples/live_realpix/main.cpp
datatype/samples/live_realtext/main.cpp
datatype/samples/live_slideshow/main.cpp
datatype/samples/pcm_renderer/Umakefil
datatype/samples/pcm_renderer2/Umakefil
datatype/samples/pre_post_fileformat/Umakefil
datatype/samples/pre_post_renderer/Umakefil
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/Umakefil
datatype/samples/videosurface_renderer/Umakefil
server/samples/allowance/Umakefil
server/samples/authbasic/Umakefil
server/samples/authfilesys/Umakefil
server/samples/broadcast/Umakefil
server/samples/converter/Umakefil
server/samples/fileformat/Umakefil
server/samples/fileformat2/Umakefil
server/samples/filesystem/Umakefil
server/samples/livepacketsink/Umakefil
server/samples/logging/Umakefil
server/samples/monitor/Umakefil
server/samples/payperview/Umakefil
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
clientapps/samples/motif_testclient/main.cpp
audio/samples/audio_device/umakefil
clientapps/samples/testplay/Umakefil
datatype/samples/live_realpix/Umakefil
datatype/samples/live_realtext/Umakefil
common/samples/xml_parser/Umakefil
clientapps/samples/motif_testclient/Umakefil
datatype/samples/live_slideshow/Umakefil
video/samples/capture_vframes/globals.h
clientapps/samples/testplay/sunos5.pcf
common/samples/xml_parser/sunos5.pcf

New files:
audio/samples/audio_device/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf

Bif files:
ribosome/build/common/build/BIF/helix.bif


Testing Performed
=================

Unit Tests:
  All compiles and links for 3 server supported platforms.

Integration tests:
  Some miscelaneous testing of plugins.
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1







Index: Umakefil
===================================================================
RCS file: /cvsroot/datatype/samples/pre_post_fileformat/Umakefil,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- Umakefil	22 Jul 2003 01:19:52 -0000	1.3
+++ Umakefil	10 Nov 2006 22:18:32 -0000	1.4
@@ -38,6 +38,7 @@
 UmakefileVersion(2,1)
 
 project.AddModuleIncludes("common/include",
+                          "common/dbgtool/pub",
                           "common/system/pub")
 		
 project.AddSources("pre_post_fileformat.cpp")


From jrmoore at helixcommunity.org  Fri Nov 10 14:18:34 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:24:33 2006
Subject: [Datatype-cvs] samples/live_realpix sunos5.pcf, NONE, 1.1 main.cpp,
	1.2, 1.3 Umakefil, 1.3, 1.4
Message-ID: 

Update of /cvsroot/datatype/samples/live_realpix
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv3180/datatype/samples/live_realpix

Modified Files:
	main.cpp Umakefil 
Added Files:
	sunos5.pcf 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-client-all-defines")

Branches: HEAD

Reviewers: milko

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-client-all-defines for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Since the files hadn't been updated in quite some time there were some basic
fixes needed to get them to compile and link.  After the check-ins, there
may be some more changes needed for stage2.

Files Affected
==============
audio/samples/audio_device/main.cpp
client/samples/hello_world/Umakefil
client/samples/reverter/Umakefil
clientapps/samples/testplay/main.cpp
common/fileio/test/main.cpp
common/runtime/Umakefil
common/samples/xml_parser/main.cpp
common/samples/xml_parser/pub/platform/unix/os.h
datatype/samples/audio_renderer/Umakefil
datatype/samples/audio_renderer2/Umakefil
datatype/samples/example_renderer/Umakefil
datatype/samples/example_renderer2/Umakefil
datatype/samples/fileformat1_renderer/Umakefil
datatype/samples/live_realpix/main.cpp
datatype/samples/live_realtext/main.cpp
datatype/samples/live_slideshow/main.cpp
datatype/samples/pcm_renderer/Umakefil
datatype/samples/pcm_renderer2/Umakefil
datatype/samples/pre_post_fileformat/Umakefil
datatype/samples/pre_post_renderer/Umakefil
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/Umakefil
datatype/samples/videosurface_renderer/Umakefil
server/samples/allowance/Umakefil
server/samples/authbasic/Umakefil
server/samples/authfilesys/Umakefil
server/samples/broadcast/Umakefil
server/samples/converter/Umakefil
server/samples/fileformat/Umakefil
server/samples/fileformat2/Umakefil
server/samples/filesystem/Umakefil
server/samples/livepacketsink/Umakefil
server/samples/logging/Umakefil
server/samples/monitor/Umakefil
server/samples/payperview/Umakefil
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
clientapps/samples/motif_testclient/main.cpp
audio/samples/audio_device/umakefil
clientapps/samples/testplay/Umakefil
datatype/samples/live_realpix/Umakefil
datatype/samples/live_realtext/Umakefil
common/samples/xml_parser/Umakefil
clientapps/samples/motif_testclient/Umakefil
datatype/samples/live_slideshow/Umakefil
video/samples/capture_vframes/globals.h
clientapps/samples/testplay/sunos5.pcf
common/samples/xml_parser/sunos5.pcf

New files:
audio/samples/audio_device/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf

Bif files:
ribosome/build/common/build/BIF/helix.bif


Testing Performed
=================

Unit Tests:
  All compiles and links for 3 server supported platforms.

Integration tests:
  Some miscelaneous testing of plugins.
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1







--- NEW FILE: sunos5.pcf ---
 # ***** BEGIN LICENSE BLOCK ***** 
 # Version: RCSL 1.0/RPSL 1.0 
 #  
 # Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
 #      
 # The contents of this file, and the files included with this file, are 
 # subject to the current version of the RealNetworks Public Source License 
 # Version 1.0 (the "RPSL") available at 
 # http://www.helixcommunity.org/content/rpsl unless you have licensed 
 # the file under the RealNetworks Community Source License Version 1.0 
 # (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
 # in which case the RCSL will apply. You may also obtain the license terms 
 # directly from RealNetworks.  You may not use this file except in 
 # compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
 # applicable to this file, the RCSL.  Please see the applicable RPSL or 
 # RCSL for the rights, obligations and limitations governing use of the 
 # contents of the file.  
 #  
 # This file is part of the Helix DNA Technology. RealNetworks is the 
 # developer of the Original Code and owns the copyrights in the portions 
 # it created. 
 #  
 # This file, and the files included with this file, is distributed and made 
 # available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
 # EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
 # INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
 # FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
 # 
 # Technology Compatibility Kit Test Suite(s) Location: 
 #    http://www.helixcommunity.org/content/tck 
 # 
 # Contributor(s): 
 #  
 # ***** END LICENSE BLOCK *****

project.sys_libraries[-1:-1] = ['dl']


Index: Umakefil
===================================================================
RCS file: /cvsroot/datatype/samples/live_realpix/Umakefil,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- Umakefil	22 Jul 2003 01:19:51 -0000	1.3
+++ Umakefil	10 Nov 2006 22:18:31 -0000	1.4
@@ -38,6 +38,7 @@
 UmakefileVersion(2,1)
 
 project.AddModuleIncludes("common/include",
+                          "common/dbgtool/pub",
                           "common/system/pub")
 
 

Index: main.cpp
===================================================================
RCS file: /cvsroot/datatype/samples/live_realpix/main.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- main.cpp	14 Jul 2003 20:38:42 -0000	1.2
+++ main.cpp	10 Nov 2006 22:18:31 -0000	1.3
@@ -46,6 +46,7 @@
 // #include "rmalvpix.h"
 #include "hxlvpix.h"
 #include "live_realpix.h"
+#include "ihxmedpltfm.h"
 
 int main(int argc, char **argv)
 {


From jrmoore at helixcommunity.org  Fri Nov 10 14:18:33 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:24:34 2006
Subject: [Datatype-cvs] samples/example_renderer2 Umakefil,1.3,1.4
Message-ID: 

Update of /cvsroot/datatype/samples/example_renderer2
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv3180/datatype/samples/example_renderer2

Modified Files:
	Umakefil 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-client-all-defines")

Branches: HEAD

Reviewers: milko

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-client-all-defines for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Since the files hadn't been updated in quite some time there were some basic
fixes needed to get them to compile and link.  After the check-ins, there
may be some more changes needed for stage2.

Files Affected
==============
audio/samples/audio_device/main.cpp
client/samples/hello_world/Umakefil
client/samples/reverter/Umakefil
clientapps/samples/testplay/main.cpp
common/fileio/test/main.cpp
common/runtime/Umakefil
common/samples/xml_parser/main.cpp
common/samples/xml_parser/pub/platform/unix/os.h
datatype/samples/audio_renderer/Umakefil
datatype/samples/audio_renderer2/Umakefil
datatype/samples/example_renderer/Umakefil
datatype/samples/example_renderer2/Umakefil
datatype/samples/fileformat1_renderer/Umakefil
datatype/samples/live_realpix/main.cpp
datatype/samples/live_realtext/main.cpp
datatype/samples/live_slideshow/main.cpp
datatype/samples/pcm_renderer/Umakefil
datatype/samples/pcm_renderer2/Umakefil
datatype/samples/pre_post_fileformat/Umakefil
datatype/samples/pre_post_renderer/Umakefil
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/Umakefil
datatype/samples/videosurface_renderer/Umakefil
server/samples/allowance/Umakefil
server/samples/authbasic/Umakefil
server/samples/authfilesys/Umakefil
server/samples/broadcast/Umakefil
server/samples/converter/Umakefil
server/samples/fileformat/Umakefil
server/samples/fileformat2/Umakefil
server/samples/filesystem/Umakefil
server/samples/livepacketsink/Umakefil
server/samples/logging/Umakefil
server/samples/monitor/Umakefil
server/samples/payperview/Umakefil
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
clientapps/samples/motif_testclient/main.cpp
audio/samples/audio_device/umakefil
clientapps/samples/testplay/Umakefil
datatype/samples/live_realpix/Umakefil
datatype/samples/live_realtext/Umakefil
common/samples/xml_parser/Umakefil
clientapps/samples/motif_testclient/Umakefil
datatype/samples/live_slideshow/Umakefil
video/samples/capture_vframes/globals.h
clientapps/samples/testplay/sunos5.pcf
common/samples/xml_parser/sunos5.pcf

New files:
audio/samples/audio_device/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf

Bif files:
ribosome/build/common/build/BIF/helix.bif


Testing Performed
=================

Unit Tests:
  All compiles and links for 3 server supported platforms.

Integration tests:
  Some miscelaneous testing of plugins.
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1







Index: Umakefil
===================================================================
RCS file: /cvsroot/datatype/samples/example_renderer2/Umakefil,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- Umakefil	22 Jul 2003 01:19:51 -0000	1.3
+++ Umakefil	10 Nov 2006 22:18:31 -0000	1.4
@@ -38,6 +38,7 @@
 UmakefileVersion(2,1)
 
 project.AddModuleIncludes("common/include",
+                          "common/dbgtool/pub",
                           "common/system/pub")
 
 project.AddSources("example_renderer2.cpp")


From jrmoore at helixcommunity.org  Fri Nov 10 14:18:33 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:24:34 2006
Subject: [Datatype-cvs] samples/example_renderer Umakefil,1.3,1.4
Message-ID: 

Update of /cvsroot/datatype/samples/example_renderer
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv3180/datatype/samples/example_renderer

Modified Files:
	Umakefil 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-client-all-defines")

Branches: HEAD

Reviewers: milko

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-client-all-defines for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Since the files hadn't been updated in quite some time there were some basic
fixes needed to get them to compile and link.  After the check-ins, there
may be some more changes needed for stage2.

Files Affected
==============
audio/samples/audio_device/main.cpp
client/samples/hello_world/Umakefil
client/samples/reverter/Umakefil
clientapps/samples/testplay/main.cpp
common/fileio/test/main.cpp
common/runtime/Umakefil
common/samples/xml_parser/main.cpp
common/samples/xml_parser/pub/platform/unix/os.h
datatype/samples/audio_renderer/Umakefil
datatype/samples/audio_renderer2/Umakefil
datatype/samples/example_renderer/Umakefil
datatype/samples/example_renderer2/Umakefil
datatype/samples/fileformat1_renderer/Umakefil
datatype/samples/live_realpix/main.cpp
datatype/samples/live_realtext/main.cpp
datatype/samples/live_slideshow/main.cpp
datatype/samples/pcm_renderer/Umakefil
datatype/samples/pcm_renderer2/Umakefil
datatype/samples/pre_post_fileformat/Umakefil
datatype/samples/pre_post_renderer/Umakefil
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/Umakefil
datatype/samples/videosurface_renderer/Umakefil
server/samples/allowance/Umakefil
server/samples/authbasic/Umakefil
server/samples/authfilesys/Umakefil
server/samples/broadcast/Umakefil
server/samples/converter/Umakefil
server/samples/fileformat/Umakefil
server/samples/fileformat2/Umakefil
server/samples/filesystem/Umakefil
server/samples/livepacketsink/Umakefil
server/samples/logging/Umakefil
server/samples/monitor/Umakefil
server/samples/payperview/Umakefil
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
clientapps/samples/motif_testclient/main.cpp
audio/samples/audio_device/umakefil
clientapps/samples/testplay/Umakefil
datatype/samples/live_realpix/Umakefil
datatype/samples/live_realtext/Umakefil
common/samples/xml_parser/Umakefil
clientapps/samples/motif_testclient/Umakefil
datatype/samples/live_slideshow/Umakefil
video/samples/capture_vframes/globals.h
clientapps/samples/testplay/sunos5.pcf
common/samples/xml_parser/sunos5.pcf

New files:
audio/samples/audio_device/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf

Bif files:
ribosome/build/common/build/BIF/helix.bif


Testing Performed
=================

Unit Tests:
  All compiles and links for 3 server supported platforms.

Integration tests:
  Some miscelaneous testing of plugins.
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1







Index: Umakefil
===================================================================
RCS file: /cvsroot/datatype/samples/example_renderer/Umakefil,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- Umakefil	22 Jul 2003 01:19:51 -0000	1.3
+++ Umakefil	10 Nov 2006 22:18:31 -0000	1.4
@@ -38,8 +38,9 @@
 UmakefileVersion(2,1)
 
 project.AddModuleIncludes("common/include",
+                          "common/dbgtool/pub",
                           "common/system/pub",
-			  "client/include")
+                          "client/include")
   
 project.AddSources("example_renderer.cpp")
 


From jrmoore at helixcommunity.org  Fri Nov 10 14:18:34 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:24:35 2006
Subject: [Datatype-cvs] samples/pcm_renderer Umakefil,1.3,1.4
Message-ID: 

Update of /cvsroot/datatype/samples/pcm_renderer
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv3180/datatype/samples/pcm_renderer

Modified Files:
	Umakefil 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-client-all-defines")

Branches: HEAD

Reviewers: milko

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-client-all-defines for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Since the files hadn't been updated in quite some time there were some basic
fixes needed to get them to compile and link.  After the check-ins, there
may be some more changes needed for stage2.

Files Affected
==============
audio/samples/audio_device/main.cpp
client/samples/hello_world/Umakefil
client/samples/reverter/Umakefil
clientapps/samples/testplay/main.cpp
common/fileio/test/main.cpp
common/runtime/Umakefil
common/samples/xml_parser/main.cpp
common/samples/xml_parser/pub/platform/unix/os.h
datatype/samples/audio_renderer/Umakefil
datatype/samples/audio_renderer2/Umakefil
datatype/samples/example_renderer/Umakefil
datatype/samples/example_renderer2/Umakefil
datatype/samples/fileformat1_renderer/Umakefil
datatype/samples/live_realpix/main.cpp
datatype/samples/live_realtext/main.cpp
datatype/samples/live_slideshow/main.cpp
datatype/samples/pcm_renderer/Umakefil
datatype/samples/pcm_renderer2/Umakefil
datatype/samples/pre_post_fileformat/Umakefil
datatype/samples/pre_post_renderer/Umakefil
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/Umakefil
datatype/samples/videosurface_renderer/Umakefil
server/samples/allowance/Umakefil
server/samples/authbasic/Umakefil
server/samples/authfilesys/Umakefil
server/samples/broadcast/Umakefil
server/samples/converter/Umakefil
server/samples/fileformat/Umakefil
server/samples/fileformat2/Umakefil
server/samples/filesystem/Umakefil
server/samples/livepacketsink/Umakefil
server/samples/logging/Umakefil
server/samples/monitor/Umakefil
server/samples/payperview/Umakefil
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
clientapps/samples/motif_testclient/main.cpp
audio/samples/audio_device/umakefil
clientapps/samples/testplay/Umakefil
datatype/samples/live_realpix/Umakefil
datatype/samples/live_realtext/Umakefil
common/samples/xml_parser/Umakefil
clientapps/samples/motif_testclient/Umakefil
datatype/samples/live_slideshow/Umakefil
video/samples/capture_vframes/globals.h
clientapps/samples/testplay/sunos5.pcf
common/samples/xml_parser/sunos5.pcf

New files:
audio/samples/audio_device/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf

Bif files:
ribosome/build/common/build/BIF/helix.bif


Testing Performed
=================

Unit Tests:
  All compiles and links for 3 server supported platforms.

Integration tests:
  Some miscelaneous testing of plugins.
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1







Index: Umakefil
===================================================================
RCS file: /cvsroot/datatype/samples/pcm_renderer/Umakefil,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- Umakefil	22 Jul 2003 01:19:51 -0000	1.3
+++ Umakefil	10 Nov 2006 22:18:32 -0000	1.4
@@ -38,6 +38,7 @@
 UmakefileVersion(2,1)
 
 project.AddModuleIncludes("common/include",
+                          "common/dbgtool/pub",
                           "common/system/pub")
 
 project.AddSources('netswap.cpp', 'pcm_renderer.cpp' )


From jrmoore at helixcommunity.org  Fri Nov 10 14:18:34 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:24:35 2006
Subject: [Datatype-cvs] 
	samples/live_realtext sunos5.pcf, NONE, 1.1 main.cpp,
	1.1.1.1, 1.2 Umakefil, 1.4, 1.5
Message-ID: 

Update of /cvsroot/datatype/samples/live_realtext
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv3180/datatype/samples/live_realtext

Modified Files:
	main.cpp Umakefil 
Added Files:
	sunos5.pcf 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-client-all-defines")

Branches: HEAD

Reviewers: milko

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-client-all-defines for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Since the files hadn't been updated in quite some time there were some basic
fixes needed to get them to compile and link.  After the check-ins, there
may be some more changes needed for stage2.

Files Affected
==============
audio/samples/audio_device/main.cpp
client/samples/hello_world/Umakefil
client/samples/reverter/Umakefil
clientapps/samples/testplay/main.cpp
common/fileio/test/main.cpp
common/runtime/Umakefil
common/samples/xml_parser/main.cpp
common/samples/xml_parser/pub/platform/unix/os.h
datatype/samples/audio_renderer/Umakefil
datatype/samples/audio_renderer2/Umakefil
datatype/samples/example_renderer/Umakefil
datatype/samples/example_renderer2/Umakefil
datatype/samples/fileformat1_renderer/Umakefil
datatype/samples/live_realpix/main.cpp
datatype/samples/live_realtext/main.cpp
datatype/samples/live_slideshow/main.cpp
datatype/samples/pcm_renderer/Umakefil
datatype/samples/pcm_renderer2/Umakefil
datatype/samples/pre_post_fileformat/Umakefil
datatype/samples/pre_post_renderer/Umakefil
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/Umakefil
datatype/samples/videosurface_renderer/Umakefil
server/samples/allowance/Umakefil
server/samples/authbasic/Umakefil
server/samples/authfilesys/Umakefil
server/samples/broadcast/Umakefil
server/samples/converter/Umakefil
server/samples/fileformat/Umakefil
server/samples/fileformat2/Umakefil
server/samples/filesystem/Umakefil
server/samples/livepacketsink/Umakefil
server/samples/logging/Umakefil
server/samples/monitor/Umakefil
server/samples/payperview/Umakefil
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
clientapps/samples/motif_testclient/main.cpp
audio/samples/audio_device/umakefil
clientapps/samples/testplay/Umakefil
datatype/samples/live_realpix/Umakefil
datatype/samples/live_realtext/Umakefil
common/samples/xml_parser/Umakefil
clientapps/samples/motif_testclient/Umakefil
datatype/samples/live_slideshow/Umakefil
video/samples/capture_vframes/globals.h
clientapps/samples/testplay/sunos5.pcf
common/samples/xml_parser/sunos5.pcf

New files:
audio/samples/audio_device/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf

Bif files:
ribosome/build/common/build/BIF/helix.bif


Testing Performed
=================

Unit Tests:
  All compiles and links for 3 server supported platforms.

Integration tests:
  Some miscelaneous testing of plugins.
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1







--- NEW FILE: sunos5.pcf ---
 # ***** BEGIN LICENSE BLOCK ***** 
 # Version: RCSL 1.0/RPSL 1.0 
 #  
 # Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
 #      
 # The contents of this file, and the files included with this file, are 
 # subject to the current version of the RealNetworks Public Source License 
 # Version 1.0 (the "RPSL") available at 
 # http://www.helixcommunity.org/content/rpsl unless you have licensed 
 # the file under the RealNetworks Community Source License Version 1.0 
 # (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
 # in which case the RCSL will apply. You may also obtain the license terms 
 # directly from RealNetworks.  You may not use this file except in 
 # compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
 # applicable to this file, the RCSL.  Please see the applicable RPSL or 
 # RCSL for the rights, obligations and limitations governing use of the 
 # contents of the file.  
 #  
 # This file is part of the Helix DNA Technology. RealNetworks is the 
 # developer of the Original Code and owns the copyrights in the portions 
 # it created. 
 #  
 # This file, and the files included with this file, is distributed and made 
 # available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
 # EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
 # INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
 # FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
 # 
 # Technology Compatibility Kit Test Suite(s) Location: 
 #    http://www.helixcommunity.org/content/tck 
 # 
 # Contributor(s): 
 #  
 # ***** END LICENSE BLOCK *****

project.sys_libraries[-1:-1] = ['dl']


Index: Umakefil
===================================================================
RCS file: /cvsroot/datatype/samples/live_realtext/Umakefil,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- Umakefil	22 Jul 2003 01:19:51 -0000	1.4
+++ Umakefil	10 Nov 2006 22:18:32 -0000	1.5
@@ -38,6 +38,7 @@
 UmakefileVersion(2,1)
 
 project.AddModuleIncludes("common/include",
+                          "common/dbgtool/pub",
                           "common/system/pub")
 
 project.AddSources("main.cpp")

Index: main.cpp
===================================================================
RCS file: /cvsroot/datatype/samples/live_realtext/main.cpp,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -d -r1.1.1.1 -r1.2
--- main.cpp	24 Jun 2003 23:49:45 -0000	1.1.1.1
+++ main.cpp	10 Nov 2006 22:18:32 -0000	1.2
@@ -62,6 +62,7 @@
 #include "hxencod.h"
 // #include "rmalvtxt.h"
 #include "hxlvtxt.h"
+#include "ihxmedpltfm.h"
 
 #ifdef _WIN16
     #include 


From jrmoore at helixcommunity.org  Fri Nov 10 14:18:34 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:24:36 2006
Subject: [Datatype-cvs] samples/live_slideshow/pub/platform/unix os.h, 1.2,
	1.3
Message-ID: 

Update of /cvsroot/datatype/samples/live_slideshow/pub/platform/unix
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv3180/datatype/samples/live_slideshow/pub/platform/unix

Modified Files:
	os.h 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-client-all-defines")

Branches: HEAD

Reviewers: milko

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-client-all-defines for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Since the files hadn't been updated in quite some time there were some basic
fixes needed to get them to compile and link.  After the check-ins, there
may be some more changes needed for stage2.

Files Affected
==============
audio/samples/audio_device/main.cpp
client/samples/hello_world/Umakefil
client/samples/reverter/Umakefil
clientapps/samples/testplay/main.cpp
common/fileio/test/main.cpp
common/runtime/Umakefil
common/samples/xml_parser/main.cpp
common/samples/xml_parser/pub/platform/unix/os.h
datatype/samples/audio_renderer/Umakefil
datatype/samples/audio_renderer2/Umakefil
datatype/samples/example_renderer/Umakefil
datatype/samples/example_renderer2/Umakefil
datatype/samples/fileformat1_renderer/Umakefil
datatype/samples/live_realpix/main.cpp
datatype/samples/live_realtext/main.cpp
datatype/samples/live_slideshow/main.cpp
datatype/samples/pcm_renderer/Umakefil
datatype/samples/pcm_renderer2/Umakefil
datatype/samples/pre_post_fileformat/Umakefil
datatype/samples/pre_post_renderer/Umakefil
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/Umakefil
datatype/samples/videosurface_renderer/Umakefil
server/samples/allowance/Umakefil
server/samples/authbasic/Umakefil
server/samples/authfilesys/Umakefil
server/samples/broadcast/Umakefil
server/samples/converter/Umakefil
server/samples/fileformat/Umakefil
server/samples/fileformat2/Umakefil
server/samples/filesystem/Umakefil
server/samples/livepacketsink/Umakefil
server/samples/logging/Umakefil
server/samples/monitor/Umakefil
server/samples/payperview/Umakefil
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
clientapps/samples/motif_testclient/main.cpp
audio/samples/audio_device/umakefil
clientapps/samples/testplay/Umakefil
datatype/samples/live_realpix/Umakefil
datatype/samples/live_realtext/Umakefil
common/samples/xml_parser/Umakefil
clientapps/samples/motif_testclient/Umakefil
datatype/samples/live_slideshow/Umakefil
video/samples/capture_vframes/globals.h
clientapps/samples/testplay/sunos5.pcf
common/samples/xml_parser/sunos5.pcf

New files:
audio/samples/audio_device/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf

Bif files:
ribosome/build/common/build/BIF/helix.bif


Testing Performed
=================

Unit Tests:
  All compiles and links for 3 server supported platforms.

Integration tests:
  Some miscelaneous testing of plugins.
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1







Index: os.h
===================================================================
RCS file: /cvsroot/datatype/samples/live_slideshow/pub/platform/unix/os.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- os.h	14 Jul 2003 22:28:39 -0000	1.2
+++ os.h	10 Nov 2006 22:18:32 -0000	1.3
@@ -64,7 +64,7 @@
 
 #if defined(_UNIX)
 inline HINSTANCE
-LoadLibrary(char* pFileName)
+LoadLibrary(const char* pFileName)
 {
     char  pNewFileName[2048];
     char* pTemp = pNewFileName;


From jrmoore at helixcommunity.org  Fri Nov 10 14:18:35 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:24:36 2006
Subject: [Datatype-cvs] samples/pre_post_renderer premixrd.h, 1.2,
	1.3 pstmixrd.h, 1.2, 1.3 Umakefil, 1.3, 1.4
Message-ID: 

Update of /cvsroot/datatype/samples/pre_post_renderer
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv3180/datatype/samples/pre_post_renderer

Modified Files:
	premixrd.h pstmixrd.h Umakefil 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-client-all-defines")

Branches: HEAD

Reviewers: milko

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-client-all-defines for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Since the files hadn't been updated in quite some time there were some basic
fixes needed to get them to compile and link.  After the check-ins, there
may be some more changes needed for stage2.

Files Affected
==============
audio/samples/audio_device/main.cpp
client/samples/hello_world/Umakefil
client/samples/reverter/Umakefil
clientapps/samples/testplay/main.cpp
common/fileio/test/main.cpp
common/runtime/Umakefil
common/samples/xml_parser/main.cpp
common/samples/xml_parser/pub/platform/unix/os.h
datatype/samples/audio_renderer/Umakefil
datatype/samples/audio_renderer2/Umakefil
datatype/samples/example_renderer/Umakefil
datatype/samples/example_renderer2/Umakefil
datatype/samples/fileformat1_renderer/Umakefil
datatype/samples/live_realpix/main.cpp
datatype/samples/live_realtext/main.cpp
datatype/samples/live_slideshow/main.cpp
datatype/samples/pcm_renderer/Umakefil
datatype/samples/pcm_renderer2/Umakefil
datatype/samples/pre_post_fileformat/Umakefil
datatype/samples/pre_post_renderer/Umakefil
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/Umakefil
datatype/samples/videosurface_renderer/Umakefil
server/samples/allowance/Umakefil
server/samples/authbasic/Umakefil
server/samples/authfilesys/Umakefil
server/samples/broadcast/Umakefil
server/samples/converter/Umakefil
server/samples/fileformat/Umakefil
server/samples/fileformat2/Umakefil
server/samples/filesystem/Umakefil
server/samples/livepacketsink/Umakefil
server/samples/logging/Umakefil
server/samples/monitor/Umakefil
server/samples/payperview/Umakefil
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
clientapps/samples/motif_testclient/main.cpp
audio/samples/audio_device/umakefil
clientapps/samples/testplay/Umakefil
datatype/samples/live_realpix/Umakefil
datatype/samples/live_realtext/Umakefil
common/samples/xml_parser/Umakefil
clientapps/samples/motif_testclient/Umakefil
datatype/samples/live_slideshow/Umakefil
video/samples/capture_vframes/globals.h
clientapps/samples/testplay/sunos5.pcf
common/samples/xml_parser/sunos5.pcf

New files:
audio/samples/audio_device/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf

Bif files:
ribosome/build/common/build/BIF/helix.bif


Testing Performed
=================

Unit Tests:
  All compiles and links for 3 server supported platforms.

Integration tests:
  Some miscelaneous testing of plugins.
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1







Index: Umakefil
===================================================================
RCS file: /cvsroot/datatype/samples/pre_post_renderer/Umakefil,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- Umakefil	22 Jul 2003 01:19:52 -0000	1.3
+++ Umakefil	10 Nov 2006 22:18:32 -0000	1.4
@@ -38,6 +38,7 @@
 UmakefileVersion(2,1)
 
 project.AddModuleIncludes("common/include",
+                          "common/dbgtool/pub",
                           "common/system/pub")
 
 

Index: premixrd.h
===================================================================
RCS file: /cvsroot/datatype/samples/pre_post_renderer/premixrd.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- premixrd.h	28 Jan 2005 23:01:28 -0000	1.2
+++ premixrd.h	10 Nov 2006 22:18:32 -0000	1.3
@@ -152,7 +152,7 @@
 	IUnknown*		m_pContext;
 	IHXCommonClassFactory* m_pCommonClassFactory;
     };
-    friend CPreMixHook;
+    friend class CPreMixHook;
 
 
     private:

Index: pstmixrd.h
===================================================================
RCS file: /cvsroot/datatype/samples/pre_post_renderer/pstmixrd.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- pstmixrd.h	28 Jan 2005 23:01:28 -0000	1.2
+++ pstmixrd.h	10 Nov 2006 22:18:32 -0000	1.3
@@ -145,7 +145,7 @@
 	IUnknown*		m_pContext;
 	IHXCommonClassFactory* m_pCommonClassFactory;
     };
-    friend CPostMixHook;
+    friend class CPostMixHook;
 
 
 private:


From jrmoore at helixcommunity.org  Fri Nov 10 14:18:34 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:24:37 2006
Subject: [Datatype-cvs] samples/live_realpix/pub/platform/unix os.h,1.2,1.3
Message-ID: 

Update of /cvsroot/datatype/samples/live_realpix/pub/platform/unix
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv3180/datatype/samples/live_realpix/pub/platform/unix

Modified Files:
	os.h 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-client-all-defines")

Branches: HEAD

Reviewers: milko

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-client-all-defines for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Since the files hadn't been updated in quite some time there were some basic
fixes needed to get them to compile and link.  After the check-ins, there
may be some more changes needed for stage2.

Files Affected
==============
audio/samples/audio_device/main.cpp
client/samples/hello_world/Umakefil
client/samples/reverter/Umakefil
clientapps/samples/testplay/main.cpp
common/fileio/test/main.cpp
common/runtime/Umakefil
common/samples/xml_parser/main.cpp
common/samples/xml_parser/pub/platform/unix/os.h
datatype/samples/audio_renderer/Umakefil
datatype/samples/audio_renderer2/Umakefil
datatype/samples/example_renderer/Umakefil
datatype/samples/example_renderer2/Umakefil
datatype/samples/fileformat1_renderer/Umakefil
datatype/samples/live_realpix/main.cpp
datatype/samples/live_realtext/main.cpp
datatype/samples/live_slideshow/main.cpp
datatype/samples/pcm_renderer/Umakefil
datatype/samples/pcm_renderer2/Umakefil
datatype/samples/pre_post_fileformat/Umakefil
datatype/samples/pre_post_renderer/Umakefil
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/Umakefil
datatype/samples/videosurface_renderer/Umakefil
server/samples/allowance/Umakefil
server/samples/authbasic/Umakefil
server/samples/authfilesys/Umakefil
server/samples/broadcast/Umakefil
server/samples/converter/Umakefil
server/samples/fileformat/Umakefil
server/samples/fileformat2/Umakefil
server/samples/filesystem/Umakefil
server/samples/livepacketsink/Umakefil
server/samples/logging/Umakefil
server/samples/monitor/Umakefil
server/samples/payperview/Umakefil
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
clientapps/samples/motif_testclient/main.cpp
audio/samples/audio_device/umakefil
clientapps/samples/testplay/Umakefil
datatype/samples/live_realpix/Umakefil
datatype/samples/live_realtext/Umakefil
common/samples/xml_parser/Umakefil
clientapps/samples/motif_testclient/Umakefil
datatype/samples/live_slideshow/Umakefil
video/samples/capture_vframes/globals.h
clientapps/samples/testplay/sunos5.pcf
common/samples/xml_parser/sunos5.pcf

New files:
audio/samples/audio_device/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf

Bif files:
ribosome/build/common/build/BIF/helix.bif


Testing Performed
=================

Unit Tests:
  All compiles and links for 3 server supported platforms.

Integration tests:
  Some miscelaneous testing of plugins.
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1







Index: os.h
===================================================================
RCS file: /cvsroot/datatype/samples/live_realpix/pub/platform/unix/os.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- os.h	14 Jul 2003 20:39:20 -0000	1.2
+++ os.h	10 Nov 2006 22:18:31 -0000	1.3
@@ -64,7 +64,7 @@
 
 #if defined(_UNIX)
 inline HINSTANCE
-LoadLibrary(char* pFileName)
+LoadLibrary(const char* pFileName)
 {
     char  pNewFileName[2048];
     char* pTemp = pNewFileName;


From jrmoore at helixcommunity.org  Fri Nov 10 14:18:34 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:24:37 2006
Subject: [Datatype-cvs] 
	samples/live_slideshow sunos5.pcf, NONE, 1.1 main.cpp,
	1.2, 1.3 Umakefil, 1.3, 1.4
Message-ID: 

Update of /cvsroot/datatype/samples/live_slideshow
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv3180/datatype/samples/live_slideshow

Modified Files:
	main.cpp Umakefil 
Added Files:
	sunos5.pcf 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-client-all-defines")

Branches: HEAD

Reviewers: milko

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-client-all-defines for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Since the files hadn't been updated in quite some time there were some basic
fixes needed to get them to compile and link.  After the check-ins, there
may be some more changes needed for stage2.

Files Affected
==============
audio/samples/audio_device/main.cpp
client/samples/hello_world/Umakefil
client/samples/reverter/Umakefil
clientapps/samples/testplay/main.cpp
common/fileio/test/main.cpp
common/runtime/Umakefil
common/samples/xml_parser/main.cpp
common/samples/xml_parser/pub/platform/unix/os.h
datatype/samples/audio_renderer/Umakefil
datatype/samples/audio_renderer2/Umakefil
datatype/samples/example_renderer/Umakefil
datatype/samples/example_renderer2/Umakefil
datatype/samples/fileformat1_renderer/Umakefil
datatype/samples/live_realpix/main.cpp
datatype/samples/live_realtext/main.cpp
datatype/samples/live_slideshow/main.cpp
datatype/samples/pcm_renderer/Umakefil
datatype/samples/pcm_renderer2/Umakefil
datatype/samples/pre_post_fileformat/Umakefil
datatype/samples/pre_post_renderer/Umakefil
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/Umakefil
datatype/samples/videosurface_renderer/Umakefil
server/samples/allowance/Umakefil
server/samples/authbasic/Umakefil
server/samples/authfilesys/Umakefil
server/samples/broadcast/Umakefil
server/samples/converter/Umakefil
server/samples/fileformat/Umakefil
server/samples/fileformat2/Umakefil
server/samples/filesystem/Umakefil
server/samples/livepacketsink/Umakefil
server/samples/logging/Umakefil
server/samples/monitor/Umakefil
server/samples/payperview/Umakefil
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
clientapps/samples/motif_testclient/main.cpp
audio/samples/audio_device/umakefil
clientapps/samples/testplay/Umakefil
datatype/samples/live_realpix/Umakefil
datatype/samples/live_realtext/Umakefil
common/samples/xml_parser/Umakefil
clientapps/samples/motif_testclient/Umakefil
datatype/samples/live_slideshow/Umakefil
video/samples/capture_vframes/globals.h
clientapps/samples/testplay/sunos5.pcf
common/samples/xml_parser/sunos5.pcf

New files:
audio/samples/audio_device/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf

Bif files:
ribosome/build/common/build/BIF/helix.bif


Testing Performed
=================

Unit Tests:
  All compiles and links for 3 server supported platforms.

Integration tests:
  Some miscelaneous testing of plugins.
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1







--- NEW FILE: sunos5.pcf ---
 # ***** BEGIN LICENSE BLOCK ***** 
 # Version: RCSL 1.0/RPSL 1.0 
 #  
 # Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
 #      
 # The contents of this file, and the files included with this file, are 
 # subject to the current version of the RealNetworks Public Source License 
 # Version 1.0 (the "RPSL") available at 
 # http://www.helixcommunity.org/content/rpsl unless you have licensed 
 # the file under the RealNetworks Community Source License Version 1.0 
 # (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
 # in which case the RCSL will apply. You may also obtain the license terms 
 # directly from RealNetworks.  You may not use this file except in 
 # compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
 # applicable to this file, the RCSL.  Please see the applicable RPSL or 
 # RCSL for the rights, obligations and limitations governing use of the 
 # contents of the file.  
 #  
 # This file is part of the Helix DNA Technology. RealNetworks is the 
 # developer of the Original Code and owns the copyrights in the portions 
 # it created. 
 #  
 # This file, and the files included with this file, is distributed and made 
 # available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
 # EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
 # INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
 # FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
 # 
 # Technology Compatibility Kit Test Suite(s) Location: 
 #    http://www.helixcommunity.org/content/tck 
 # 
 # Contributor(s): 
 #  
 # ***** END LICENSE BLOCK *****

project.sys_libraries[-1:-1] = ['dl']


Index: Umakefil
===================================================================
RCS file: /cvsroot/datatype/samples/live_slideshow/Umakefil,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- Umakefil	22 Jul 2003 01:19:51 -0000	1.3
+++ Umakefil	10 Nov 2006 22:18:32 -0000	1.4
@@ -38,11 +38,11 @@
 UmakefileVersion(2,1)
 
 project.AddModuleIncludes("common/include",
+                          "common/dbgtool/pub",
                           "common/system/pub")
 
 project.AddSources('live_slideshow.cpp',
 		   'main.cpp')
 
-
 ProgramTarget('live_slideshow')
 

Index: main.cpp
===================================================================
RCS file: /cvsroot/datatype/samples/live_slideshow/main.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- main.cpp	14 Jul 2003 22:26:27 -0000	1.2
+++ main.cpp	10 Nov 2006 22:18:32 -0000	1.3
@@ -45,6 +45,7 @@
 // #include "rmalvpix.h"
 #include "hxlvpix.h"
 #include "live_slideshow.h"
+#include "ihxmedpltfm.h"
 
 int main(int argc, char **argv)
 {


From jrmoore at helixcommunity.org  Fri Nov 10 14:18:33 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:24:38 2006
Subject: [Datatype-cvs] samples/fileformat1_renderer Umakefil,1.3,1.4
Message-ID: 

Update of /cvsroot/datatype/samples/fileformat1_renderer
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv3180/datatype/samples/fileformat1_renderer

Modified Files:
	Umakefil 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-client-all-defines")

Branches: HEAD

Reviewers: milko

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-client-all-defines for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Since the files hadn't been updated in quite some time there were some basic
fixes needed to get them to compile and link.  After the check-ins, there
may be some more changes needed for stage2.

Files Affected
==============
audio/samples/audio_device/main.cpp
client/samples/hello_world/Umakefil
client/samples/reverter/Umakefil
clientapps/samples/testplay/main.cpp
common/fileio/test/main.cpp
common/runtime/Umakefil
common/samples/xml_parser/main.cpp
common/samples/xml_parser/pub/platform/unix/os.h
datatype/samples/audio_renderer/Umakefil
datatype/samples/audio_renderer2/Umakefil
datatype/samples/example_renderer/Umakefil
datatype/samples/example_renderer2/Umakefil
datatype/samples/fileformat1_renderer/Umakefil
datatype/samples/live_realpix/main.cpp
datatype/samples/live_realtext/main.cpp
datatype/samples/live_slideshow/main.cpp
datatype/samples/pcm_renderer/Umakefil
datatype/samples/pcm_renderer2/Umakefil
datatype/samples/pre_post_fileformat/Umakefil
datatype/samples/pre_post_renderer/Umakefil
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/Umakefil
datatype/samples/videosurface_renderer/Umakefil
server/samples/allowance/Umakefil
server/samples/authbasic/Umakefil
server/samples/authfilesys/Umakefil
server/samples/broadcast/Umakefil
server/samples/converter/Umakefil
server/samples/fileformat/Umakefil
server/samples/fileformat2/Umakefil
server/samples/filesystem/Umakefil
server/samples/livepacketsink/Umakefil
server/samples/logging/Umakefil
server/samples/monitor/Umakefil
server/samples/payperview/Umakefil
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
clientapps/samples/motif_testclient/main.cpp
audio/samples/audio_device/umakefil
clientapps/samples/testplay/Umakefil
datatype/samples/live_realpix/Umakefil
datatype/samples/live_realtext/Umakefil
common/samples/xml_parser/Umakefil
clientapps/samples/motif_testclient/Umakefil
datatype/samples/live_slideshow/Umakefil
video/samples/capture_vframes/globals.h
clientapps/samples/testplay/sunos5.pcf
common/samples/xml_parser/sunos5.pcf

New files:
audio/samples/audio_device/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf

Bif files:
ribosome/build/common/build/BIF/helix.bif


Testing Performed
=================

Unit Tests:
  All compiles and links for 3 server supported platforms.

Integration tests:
  Some miscelaneous testing of plugins.
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1







Index: Umakefil
===================================================================
RCS file: /cvsroot/datatype/samples/fileformat1_renderer/Umakefil,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- Umakefil	22 Jul 2003 01:19:51 -0000	1.3
+++ Umakefil	10 Nov 2006 22:18:31 -0000	1.4
@@ -38,6 +38,7 @@
 UmakefileVersion(2,1)
 
 project.AddModuleIncludes("common/include",
+                          "common/dbgtool/pub",
                           "common/system/pub")
 
 project.AddSources("fileformat1_renderer.cpp")


From jrmoore at helixcommunity.org  Fri Nov 10 14:18:35 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:24:39 2006
Subject: [Datatype-cvs] samples/videosurface_renderer Umakefil,1.3,1.4
Message-ID: 

Update of /cvsroot/datatype/samples/videosurface_renderer
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv3180/datatype/samples/videosurface_renderer

Modified Files:
	Umakefil 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-client-all-defines")

Branches: HEAD

Reviewers: milko

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-client-all-defines for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Since the files hadn't been updated in quite some time there were some basic
fixes needed to get them to compile and link.  After the check-ins, there
may be some more changes needed for stage2.

Files Affected
==============
audio/samples/audio_device/main.cpp
client/samples/hello_world/Umakefil
client/samples/reverter/Umakefil
clientapps/samples/testplay/main.cpp
common/fileio/test/main.cpp
common/runtime/Umakefil
common/samples/xml_parser/main.cpp
common/samples/xml_parser/pub/platform/unix/os.h
datatype/samples/audio_renderer/Umakefil
datatype/samples/audio_renderer2/Umakefil
datatype/samples/example_renderer/Umakefil
datatype/samples/example_renderer2/Umakefil
datatype/samples/fileformat1_renderer/Umakefil
datatype/samples/live_realpix/main.cpp
datatype/samples/live_realtext/main.cpp
datatype/samples/live_slideshow/main.cpp
datatype/samples/pcm_renderer/Umakefil
datatype/samples/pcm_renderer2/Umakefil
datatype/samples/pre_post_fileformat/Umakefil
datatype/samples/pre_post_renderer/Umakefil
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/Umakefil
datatype/samples/videosurface_renderer/Umakefil
server/samples/allowance/Umakefil
server/samples/authbasic/Umakefil
server/samples/authfilesys/Umakefil
server/samples/broadcast/Umakefil
server/samples/converter/Umakefil
server/samples/fileformat/Umakefil
server/samples/fileformat2/Umakefil
server/samples/filesystem/Umakefil
server/samples/livepacketsink/Umakefil
server/samples/logging/Umakefil
server/samples/monitor/Umakefil
server/samples/payperview/Umakefil
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
clientapps/samples/motif_testclient/main.cpp
audio/samples/audio_device/umakefil
clientapps/samples/testplay/Umakefil
datatype/samples/live_realpix/Umakefil
datatype/samples/live_realtext/Umakefil
common/samples/xml_parser/Umakefil
clientapps/samples/motif_testclient/Umakefil
datatype/samples/live_slideshow/Umakefil
video/samples/capture_vframes/globals.h
clientapps/samples/testplay/sunos5.pcf
common/samples/xml_parser/sunos5.pcf

New files:
audio/samples/audio_device/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf

Bif files:
ribosome/build/common/build/BIF/helix.bif


Testing Performed
=================

Unit Tests:
  All compiles and links for 3 server supported platforms.

Integration tests:
  Some miscelaneous testing of plugins.
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1







Index: Umakefil
===================================================================
RCS file: /cvsroot/datatype/samples/videosurface_renderer/Umakefil,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- Umakefil	22 Jul 2003 01:19:52 -0000	1.3
+++ Umakefil	10 Nov 2006 22:18:33 -0000	1.4
@@ -38,6 +38,7 @@
 UmakefileVersion(2,1)
 
 project.AddModuleIncludes("common/include",
+                          "common/dbgtool/pub",
                           "common/system/pub",
 			  "client/include")
 


From jrmoore at helixcommunity.org  Fri Nov 10 14:18:35 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:24:40 2006
Subject: [Datatype-cvs] samples/singlewindow_renderer
	singlewindow_renderer.cpp, 1.2, 1.3 Umakefil, 1.3, 1.4
Message-ID: 

Update of /cvsroot/datatype/samples/singlewindow_renderer
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv3180/datatype/samples/singlewindow_renderer

Modified Files:
	singlewindow_renderer.cpp Umakefil 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-client-all-defines")

Branches: HEAD

Reviewers: milko

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-client-all-defines for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Since the files hadn't been updated in quite some time there were some basic
fixes needed to get them to compile and link.  After the check-ins, there
may be some more changes needed for stage2.

Files Affected
==============
audio/samples/audio_device/main.cpp
client/samples/hello_world/Umakefil
client/samples/reverter/Umakefil
clientapps/samples/testplay/main.cpp
common/fileio/test/main.cpp
common/runtime/Umakefil
common/samples/xml_parser/main.cpp
common/samples/xml_parser/pub/platform/unix/os.h
datatype/samples/audio_renderer/Umakefil
datatype/samples/audio_renderer2/Umakefil
datatype/samples/example_renderer/Umakefil
datatype/samples/example_renderer2/Umakefil
datatype/samples/fileformat1_renderer/Umakefil
datatype/samples/live_realpix/main.cpp
datatype/samples/live_realtext/main.cpp
datatype/samples/live_slideshow/main.cpp
datatype/samples/pcm_renderer/Umakefil
datatype/samples/pcm_renderer2/Umakefil
datatype/samples/pre_post_fileformat/Umakefil
datatype/samples/pre_post_renderer/Umakefil
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/Umakefil
datatype/samples/videosurface_renderer/Umakefil
server/samples/allowance/Umakefil
server/samples/authbasic/Umakefil
server/samples/authfilesys/Umakefil
server/samples/broadcast/Umakefil
server/samples/converter/Umakefil
server/samples/fileformat/Umakefil
server/samples/fileformat2/Umakefil
server/samples/filesystem/Umakefil
server/samples/livepacketsink/Umakefil
server/samples/logging/Umakefil
server/samples/monitor/Umakefil
server/samples/payperview/Umakefil
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
clientapps/samples/motif_testclient/main.cpp
audio/samples/audio_device/umakefil
clientapps/samples/testplay/Umakefil
datatype/samples/live_realpix/Umakefil
datatype/samples/live_realtext/Umakefil
common/samples/xml_parser/Umakefil
clientapps/samples/motif_testclient/Umakefil
datatype/samples/live_slideshow/Umakefil
video/samples/capture_vframes/globals.h
clientapps/samples/testplay/sunos5.pcf
common/samples/xml_parser/sunos5.pcf

New files:
audio/samples/audio_device/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf

Bif files:
ribosome/build/common/build/BIF/helix.bif


Testing Performed
=================

Unit Tests:
  All compiles and links for 3 server supported platforms.

Integration tests:
  Some miscelaneous testing of plugins.
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1







Index: singlewindow_renderer.cpp
===================================================================
RCS file: /cvsroot/datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- singlewindow_renderer.cpp	28 Jan 2005 23:01:29 -0000	1.2
+++ singlewindow_renderer.cpp	10 Nov 2006 22:18:32 -0000	1.3
@@ -742,7 +742,7 @@
 
     m_wDrawable = XtVaCreateManagedWidget("",
 					  coreWidgetClass,
-					  m_widget,
+					  (Widget)m_widget,
 					  XtNx, 120,
 					  XtNy, 0,
 					  XtNwidth, 300,

Index: Umakefil
===================================================================
RCS file: /cvsroot/datatype/samples/singlewindow_renderer/Umakefil,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- Umakefil	22 Jul 2003 01:19:52 -0000	1.3
+++ Umakefil	10 Nov 2006 22:18:32 -0000	1.4
@@ -38,8 +38,9 @@
 UmakefileVersion(2,1)
 
 project.AddModuleIncludes("common/include",
+                          "common/dbgtool/pub",
                           "common/system/pub")
-	
+
 project.AddSources("singlewindow_renderer.cpp")
 
 project.ExportFunction("RMACreateInstance",


From jrmoore at helixcommunity.org  Fri Nov 10 14:32:38 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:38:57 2006
Subject: [Datatype-cvs] samples/fileformat1_renderer/pub/platform/mac
	LICENSE.txt, 1.1, 1.2
Message-ID: 

Update of /cvsroot/datatype/samples/fileformat1_renderer/pub/platform/mac
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv8106/datatype/samples/fileformat1_renderer/pub/platform/mac

Modified Files:
	LICENSE.txt 
Log Message:
Updated copyright from 1995-2004 to 1995-2006



Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/fileformat1_renderer/pub/platform/mac/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- LICENSE.txt	6 Feb 2004 15:25:17 -0000	1.1
+++ LICENSE.txt	10 Nov 2006 22:32:36 -0000	1.2
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Fri Nov 10 14:32:38 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:39:02 2006
Subject: [Datatype-cvs] samples/fileformat1_renderer LICENSE.txt,1.1,1.2
Message-ID: 

Update of /cvsroot/datatype/samples/fileformat1_renderer
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv8106/datatype/samples/fileformat1_renderer

Modified Files:
	LICENSE.txt 
Log Message:
Updated copyright from 1995-2004 to 1995-2006



Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/fileformat1_renderer/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- LICENSE.txt	6 Feb 2004 15:25:16 -0000	1.1
+++ LICENSE.txt	10 Nov 2006 22:32:36 -0000	1.2
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Fri Nov 10 14:32:39 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:39:02 2006
Subject: [Datatype-cvs] samples/live_realpix/pub/platform/unix LICENSE.txt,
	1.1, 1.2
Message-ID: 

Update of /cvsroot/datatype/samples/live_realpix/pub/platform/unix
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv8106/datatype/samples/live_realpix/pub/platform/unix

Modified Files:
	LICENSE.txt 
Log Message:
Updated copyright from 1995-2004 to 1995-2006



Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/live_realpix/pub/platform/unix/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- LICENSE.txt	6 Feb 2004 15:25:17 -0000	1.1
+++ LICENSE.txt	10 Nov 2006 22:32:37 -0000	1.2
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Fri Nov 10 14:32:39 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:39:03 2006
Subject: [Datatype-cvs] samples/live_realpix/pub/platform/mac LICENSE.txt,
	1.1, 1.2
Message-ID: 

Update of /cvsroot/datatype/samples/live_realpix/pub/platform/mac
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv8106/datatype/samples/live_realpix/pub/platform/mac

Modified Files:
	LICENSE.txt 
Log Message:
Updated copyright from 1995-2004 to 1995-2006



Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/live_realpix/pub/platform/mac/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- LICENSE.txt	6 Feb 2004 15:25:17 -0000	1.1
+++ LICENSE.txt	10 Nov 2006 22:32:37 -0000	1.2
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Fri Nov 10 14:32:39 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:39:03 2006
Subject: [Datatype-cvs] samples/live_realtext LICENSE.txt,1.1,1.2
Message-ID: 

Update of /cvsroot/datatype/samples/live_realtext
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv8106/datatype/samples/live_realtext

Modified Files:
	LICENSE.txt 
Log Message:
Updated copyright from 1995-2004 to 1995-2006



Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/live_realtext/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- LICENSE.txt	6 Feb 2004 15:25:17 -0000	1.1
+++ LICENSE.txt	10 Nov 2006 22:32:37 -0000	1.2
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Fri Nov 10 14:32:39 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:39:04 2006
Subject: [Datatype-cvs] samples/live_realpix LICENSE.txt,1.1,1.2
Message-ID: 

Update of /cvsroot/datatype/samples/live_realpix
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv8106/datatype/samples/live_realpix

Modified Files:
	LICENSE.txt 
Log Message:
Updated copyright from 1995-2004 to 1995-2006



Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/live_realpix/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- LICENSE.txt	6 Feb 2004 15:25:17 -0000	1.1
+++ LICENSE.txt	10 Nov 2006 22:32:36 -0000	1.2
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Fri Nov 10 14:32:40 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:39:04 2006
Subject: [Datatype-cvs] samples/pcm_renderer/pub/platform/mac LICENSE.txt,
	1.1, 1.2
Message-ID: 

Update of /cvsroot/datatype/samples/pcm_renderer/pub/platform/mac
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv8106/datatype/samples/pcm_renderer/pub/platform/mac

Modified Files:
	LICENSE.txt 
Log Message:
Updated copyright from 1995-2004 to 1995-2006



Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/pcm_renderer/pub/platform/mac/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- LICENSE.txt	6 Feb 2004 15:25:17 -0000	1.1
+++ LICENSE.txt	10 Nov 2006 22:32:38 -0000	1.2
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Fri Nov 10 14:32:39 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:39:04 2006
Subject: [Datatype-cvs] samples/live_realtext/pub/platform/mac LICENSE.txt,
	1.1, 1.2
Message-ID: 

Update of /cvsroot/datatype/samples/live_realtext/pub/platform/mac
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv8106/datatype/samples/live_realtext/pub/platform/mac

Modified Files:
	LICENSE.txt 
Log Message:
Updated copyright from 1995-2004 to 1995-2006



Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/live_realtext/pub/platform/mac/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- LICENSE.txt	6 Feb 2004 15:25:17 -0000	1.1
+++ LICENSE.txt	10 Nov 2006 22:32:37 -0000	1.2
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Fri Nov 10 14:32:39 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:39:05 2006
Subject: [Datatype-cvs] samples/live_realtext/platform/mac LICENSE.txt, 1.1,
	1.2
Message-ID: 

Update of /cvsroot/datatype/samples/live_realtext/platform/mac
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv8106/datatype/samples/live_realtext/platform/mac

Modified Files:
	LICENSE.txt 
Log Message:
Updated copyright from 1995-2004 to 1995-2006



Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/live_realtext/platform/mac/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- LICENSE.txt	6 Feb 2004 15:25:17 -0000	1.1
+++ LICENSE.txt	10 Nov 2006 22:32:37 -0000	1.2
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Fri Nov 10 14:32:40 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:39:05 2006
Subject: [Datatype-cvs] 
	samples/live_slideshow/pub/platform/unix LICENSE.txt, 1.1, 1.2
Message-ID: 

Update of /cvsroot/datatype/samples/live_slideshow/pub/platform/unix
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv8106/datatype/samples/live_slideshow/pub/platform/unix

Modified Files:
	LICENSE.txt 
Log Message:
Updated copyright from 1995-2004 to 1995-2006



Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/live_slideshow/pub/platform/unix/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- LICENSE.txt	6 Feb 2004 15:25:17 -0000	1.1
+++ LICENSE.txt	10 Nov 2006 22:32:38 -0000	1.2
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Fri Nov 10 14:32:40 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:39:05 2006
Subject: [Datatype-cvs] samples/live_slideshow/pub/platform/mac LICENSE.txt,
	1.1, 1.2
Message-ID: 

Update of /cvsroot/datatype/samples/live_slideshow/pub/platform/mac
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv8106/datatype/samples/live_slideshow/pub/platform/mac

Modified Files:
	LICENSE.txt 
Log Message:
Updated copyright from 1995-2004 to 1995-2006



Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/live_slideshow/pub/platform/mac/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- LICENSE.txt	6 Feb 2004 15:25:17 -0000	1.1
+++ LICENSE.txt	10 Nov 2006 22:32:37 -0000	1.2
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Fri Nov 10 14:32:40 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:39:06 2006
Subject: [Datatype-cvs] samples/pcm_renderer2/pub/platform/mac LICENSE.txt,
	1.1, 1.2
Message-ID: 

Update of /cvsroot/datatype/samples/pcm_renderer2/pub/platform/mac
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv8106/datatype/samples/pcm_renderer2/pub/platform/mac

Modified Files:
	LICENSE.txt 
Log Message:
Updated copyright from 1995-2004 to 1995-2006



Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/pcm_renderer2/pub/platform/mac/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- LICENSE.txt	6 Feb 2004 15:25:18 -0000	1.1
+++ LICENSE.txt	10 Nov 2006 22:32:38 -0000	1.2
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Fri Nov 10 14:32:40 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:39:06 2006
Subject: [Datatype-cvs] samples/live_slideshow LICENSE.txt,1.1,1.2
Message-ID: 

Update of /cvsroot/datatype/samples/live_slideshow
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv8106/datatype/samples/live_slideshow

Modified Files:
	LICENSE.txt 
Log Message:
Updated copyright from 1995-2004 to 1995-2006



Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/live_slideshow/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- LICENSE.txt	6 Feb 2004 15:25:17 -0000	1.1
+++ LICENSE.txt	10 Nov 2006 22:32:37 -0000	1.2
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Fri Nov 10 14:32:40 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:39:07 2006
Subject: [Datatype-cvs] samples/pcm_renderer LICENSE.txt,1.1,1.2
Message-ID: 

Update of /cvsroot/datatype/samples/pcm_renderer
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv8106/datatype/samples/pcm_renderer

Modified Files:
	LICENSE.txt 
Log Message:
Updated copyright from 1995-2004 to 1995-2006



Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/pcm_renderer/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- LICENSE.txt	6 Feb 2004 15:25:17 -0000	1.1
+++ LICENSE.txt	10 Nov 2006 22:32:38 -0000	1.2
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Fri Nov 10 14:32:39 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:39:07 2006
Subject: [Datatype-cvs] samples/live_realtext/pub/platform/unix LICENSE.txt,
	1.1, 1.2
Message-ID: 

Update of /cvsroot/datatype/samples/live_realtext/pub/platform/unix
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv8106/datatype/samples/live_realtext/pub/platform/unix

Modified Files:
	LICENSE.txt 
Log Message:
Updated copyright from 1995-2004 to 1995-2006



Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/live_realtext/pub/platform/unix/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- LICENSE.txt	6 Feb 2004 15:25:17 -0000	1.1
+++ LICENSE.txt	10 Nov 2006 22:32:37 -0000	1.2
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Fri Nov 10 14:32:40 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:39:08 2006
Subject: [Datatype-cvs] samples/pcm_renderer2 LICENSE.txt,1.1,1.2
Message-ID: 

Update of /cvsroot/datatype/samples/pcm_renderer2
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv8106/datatype/samples/pcm_renderer2

Modified Files:
	LICENSE.txt 
Log Message:
Updated copyright from 1995-2004 to 1995-2006



Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/pcm_renderer2/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- LICENSE.txt	6 Feb 2004 15:25:18 -0000	1.1
+++ LICENSE.txt	10 Nov 2006 22:32:38 -0000	1.2
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Fri Nov 10 14:32:39 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:39:08 2006
Subject: [Datatype-cvs] samples/live_realpix/platform/mac LICENSE.txt, 1.1,
	1.2
Message-ID: 

Update of /cvsroot/datatype/samples/live_realpix/platform/mac
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv8106/datatype/samples/live_realpix/platform/mac

Modified Files:
	LICENSE.txt 
Log Message:
Updated copyright from 1995-2004 to 1995-2006



Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/live_realpix/platform/mac/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- LICENSE.txt	6 Feb 2004 15:25:17 -0000	1.1
+++ LICENSE.txt	10 Nov 2006 22:32:36 -0000	1.2
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Fri Nov 10 14:32:40 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:39:09 2006
Subject: [Datatype-cvs] samples/pre_post_fileformat/pub/platform/mac
	LICENSE.txt, 1.1, 1.2
Message-ID: 

Update of /cvsroot/datatype/samples/pre_post_fileformat/pub/platform/mac
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv8106/datatype/samples/pre_post_fileformat/pub/platform/mac

Modified Files:
	LICENSE.txt 
Log Message:
Updated copyright from 1995-2004 to 1995-2006



Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/pre_post_fileformat/pub/platform/mac/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- LICENSE.txt	6 Feb 2004 15:25:18 -0000	1.1
+++ LICENSE.txt	10 Nov 2006 22:32:38 -0000	1.2
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Fri Nov 10 14:32:40 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:39:09 2006
Subject: [Datatype-cvs] 
	samples/live_slideshow/platform/mac LICENSE.txt, 1.1, 1.2
Message-ID: 

Update of /cvsroot/datatype/samples/live_slideshow/platform/mac
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv8106/datatype/samples/live_slideshow/platform/mac

Modified Files:
	LICENSE.txt 
Log Message:
Updated copyright from 1995-2004 to 1995-2006



Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/live_slideshow/platform/mac/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- LICENSE.txt	6 Feb 2004 15:25:17 -0000	1.1
+++ LICENSE.txt	10 Nov 2006 22:32:37 -0000	1.2
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Fri Nov 10 14:32:45 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Fri Nov 10 15:39:12 2006
Subject: [Datatype-cvs] samples/singlewindow_renderer/pub/platform/mac
	LICENSE.txt, 1.1, 1.2
Message-ID: 

Update of /cvsroot/datatype/samples/singlewindow_renderer/pub/platform/mac
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv8106/datatype/samples/singlewindow_renderer/pub/platform/mac

Modified Files:
	LICENSE.txt 
Log Message:
Updated copyright from 1995-2004 to 1995-2006



Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/singlewindow_renderer/pub/platform/mac/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- LICENSE.txt	6 Feb 2004 15:25:18 -0000	1.1
+++ LICENSE.txt	10 Nov 2006 22:32:40 -0000	1.2
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jwei at helixcommunity.org  Mon Nov 13 09:42:07 2006
From: jwei at helixcommunity.org (jwei@helixcommunity.org)
Date: Mon Nov 13 10:47:13 2006
Subject: [Datatype-cvs] 
	mdf/video/format/rm mdfrvxpayloadformat.cpp, 1.1.2.8, 1.1.2.9
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/rm
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv5494/rm

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfrvxpayloadformat.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:  John Wei

Reviewed by: 

Date: 10-11-2006.

Error ID: JWEI-6VHNLL

Project: Helix plugin for Symbian

Synopsis: MDF Video Renderer - filling iSizeInMemory, iDisplayedRect and iDisplayedRect fields of PictureHeader

The picture header is passed to DevVideo by two methods. One is through ConfigureDecoderL(), while the same header is also appended to first video frame data. This picture header contains many fields that needs to be populuated. Three fields are currently missing: iSizeInMemory, iDisplayedRect, and iIsRandomAccessible. This CR fills these three fields.

Files Modified:
/cvsroot/datatype/mdf/video/format/common/pub/mdfpayloadformat.h
/cvsroot/datatype/mdf/video/format/common/mdfpayloadformat.cpp
/cvsroot/datatype/mdf/video/format/h264/mdfh264payloadformat.cpp
/cvsroot/datatype/mdf/video/format/mp4/mdfmp4payloadformat.cpp
/cvsroot/datatype/mdf/video/format/rm/mdfrvxpayloadformat.cpp


Image Size and Heap Use impact: minor

Platforms and Profiles Build Verified:
armv5/helix-client-s60-mmf-mdf-arm

Platforms and Profiles Functionality verified:
armv5/helix-client-s60-mmf-mdf-emulator
armv5/helix-client-s60-mmf-mdf-arm

Branch: hxclient_2_1_0_cayennes_restricted and HEAD



Index: mdfrvxpayloadformat.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/rm/mdfrvxpayloadformat.cpp,v
retrieving revision 1.1.2.8
retrieving revision 1.1.2.9
diff -u -d -r1.1.2.8 -r1.1.2.9
--- mdfrvxpayloadformat.cpp	8 Nov 2006 17:57:11 -0000	1.1.2.8
+++ mdfrvxpayloadformat.cpp	13 Nov 2006 17:42:01 -0000	1.1.2.9
@@ -327,6 +327,12 @@
             }
         }
     }
+
+    //fill iSizeInMemory and iDisplayedRect fields of pPictureHeader
+    //must be placed here since width and height are found in 
+    //the derived class, ignore the return status
+    CPayloadFormatPluginDevice::FormPictureHeader( pPictureHeader );
+
     MDFVIDEOLOG_RETURNFN( "FormPictureHeader", retVal );
     return retVal;
 }


From jwei at helixcommunity.org  Mon Nov 13 09:42:12 2006
From: jwei at helixcommunity.org (jwei@helixcommunity.org)
Date: Mon Nov 13 10:47:19 2006
Subject: [Datatype-cvs] mdf/video/format/common mdfpayloadformat.cpp, 1.9,
	1.10
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/common
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv5532/common

Modified Files:
	mdfpayloadformat.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:  John Wei

Reviewed by: 

Date: 10-11-2006.

Error ID: JWEI-6VHNLL

Project: Helix plugin for Symbian

Synopsis: MDF Video Renderer - filling iSizeInMemory, iDisplayedRect and iDisplayedRect fields of PictureHeader

The picture header is passed to DevVideo by two methods. One is through ConfigureDecoderL(), while the same header is also appended to first video frame data. This picture header contains many fields that needs to be populuated. Three fields are currently missing: iSizeInMemory, iDisplayedRect, and iIsRandomAccessible. This CR fills these three fields.

Files Modified:
/cvsroot/datatype/mdf/video/format/common/pub/mdfpayloadformat.h
/cvsroot/datatype/mdf/video/format/common/mdfpayloadformat.cpp
/cvsroot/datatype/mdf/video/format/h264/mdfh264payloadformat.cpp
/cvsroot/datatype/mdf/video/format/mp4/mdfmp4payloadformat.cpp
/cvsroot/datatype/mdf/video/format/rm/mdfrvxpayloadformat.cpp


Image Size and Heap Use impact: minor

Platforms and Profiles Build Verified:
armv5/helix-client-s60-mmf-mdf-arm

Platforms and Profiles Functionality verified:
armv5/helix-client-s60-mmf-mdf-emulator
armv5/helix-client-s60-mmf-mdf-arm

Branch: hxclient_2_1_0_cayennes_restricted and HEAD



Index: mdfpayloadformat.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/common/mdfpayloadformat.cpp,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- mdfpayloadformat.cpp	8 Nov 2006 19:33:44 -0000	1.9
+++ mdfpayloadformat.cpp	13 Nov 2006 17:42:09 -0000	1.10
@@ -311,28 +311,8 @@
 UINT32 CPayloadFormatPluginDevice::GetVideoResolution() const
 {
     MDFVIDEOLOG_ENTERFN( "GetVideoResolution" );
-    UINT32 ulResolution = 0;
-    if( m_pHeader )
-    {
-        UINT32 ulVideoWidth = 0;
-        UINT32 ulVideoHeight = 0;
-
-        if( SUCCEEDED(m_pHeader->GetPropertyULONG32( "FrameWidth", ulVideoWidth ) ) &&
-            SUCCEEDED(m_pHeader->GetPropertyULONG32( "FrameHeight", ulVideoHeight ) ) )
-        {
-            ulResolution = ulVideoWidth * ulVideoHeight;
-        }
-        else
-        {   // if frame width & height are not available, use track width & height
-            if( SUCCEEDED(m_pHeader->GetPropertyULONG32( "Width", ulVideoWidth ) ) &&
-                SUCCEEDED(m_pHeader->GetPropertyULONG32( "Height", ulVideoHeight ) ) )
-            {
-                ulResolution = ulVideoWidth * ulVideoHeight;
-            }
-        }
-    }
     MDFVIDEOLOG_LEAVEFN( "GetVideoResolution" );
-    return ulResolution;
+    return m_ulVideoWidth * m_ulVideoHeight;
 }
 
 CPayloadFormatInfo* CPayloadFormatPluginDevice::PayloadFormatInfoLC() const
@@ -386,7 +366,9 @@
   m_pHeader( NULL ),
   m_bPictureHeaderValid( FALSE ),
   m_VideoDataUnitType( EDuCodedPicture ),
-  m_VideoDataUnitEncapsulation( EDuGenericPayload )
+  m_VideoDataUnitEncapsulation( EDuGenericPayload ),
+  m_ulVideoWidth( 0 ),
+  m_ulVideoHeight( 0 )
   //m_Dtor_ID_Key
 {
     MDFVIDEOLOG_CREATE_NOWRITE;
@@ -398,7 +380,11 @@
     m_pPictureHeader.iLevel = -1;
     m_pPictureHeader.iVersion = -1;
     m_pPictureHeader.iOptional = NULL;
-    
+    m_pPictureHeader.iSizeInMemory.SetSize( 0, 0 );
+    m_pPictureHeader.iDisplayedRect.SetRect( 0, 0, 0, 0 );
+    m_pPictureHeader.iSupplementalData = NULL;
+    m_pPictureHeader.iIsRandomAccessible = EFalse;
+
     MDFVIDEOLOG_LEAVEFN( "CPayloadFormatPluginDevice" );
 }
 
@@ -422,7 +408,33 @@
     return retVal;
 }
 
-HXBOOL CPayloadFormatPluginDevice::FormPictureHeader( TVideoPictureHeader& pPictureHeader ) const
+HXBOOL CPayloadFormatPluginDevice::FormPictureHeader( TVideoPictureHeader& pPictureHeader )
 {
-    return FALSE;
+    MDFVIDEOLOG_ENTERFN( "FormPictureHeader" );
+
+    //populate some fields
+    HXBOOL retVal = FALSE;
+
+    if( m_pHeader )
+    {
+        if( SUCCEEDED(m_pHeader->GetPropertyULONG32( "FrameWidth", m_ulVideoWidth ) ) &&
+            SUCCEEDED(m_pHeader->GetPropertyULONG32( "FrameHeight", m_ulVideoHeight ) ) )
+        {
+            retVal = TRUE;
+        }
+        else if( SUCCEEDED(m_pHeader->GetPropertyULONG32( "Width", m_ulVideoWidth ) ) &&
+                 SUCCEEDED(m_pHeader->GetPropertyULONG32( "Height", m_ulVideoHeight ) ) )
+        {
+            retVal = TRUE;
+        }
+    }
+
+    //regardless retVal's status
+    pPictureHeader.iSizeInMemory.SetSize( m_ulVideoWidth, m_ulVideoHeight );
+    pPictureHeader.iDisplayedRect.SetRect( 0, 0, m_ulVideoWidth, m_ulVideoHeight );
+
+    MDFVIDEOLOG_WRITE_MULTI_FORMAT2( "    FrameWidth = %d, FrameHeight = %d", m_ulVideoWidth, m_ulVideoHeight );
+    MDFVIDEOLOG_RETURNFN( "FormPictureHeader", retVal );
+
+    return retVal;
 }


From jwei at helixcommunity.org  Mon Nov 13 09:42:12 2006
From: jwei at helixcommunity.org (jwei@helixcommunity.org)
Date: Mon Nov 13 10:47:20 2006
Subject: [Datatype-cvs] mdf/video/format/common/pub mdfpayloadformat.h, 1.8,
	1.9
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/common/pub
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv5532/common/pub

Modified Files:
	mdfpayloadformat.h 
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:  John Wei

Reviewed by: 

Date: 10-11-2006.

Error ID: JWEI-6VHNLL

Project: Helix plugin for Symbian

Synopsis: MDF Video Renderer - filling iSizeInMemory, iDisplayedRect and iDisplayedRect fields of PictureHeader

The picture header is passed to DevVideo by two methods. One is through ConfigureDecoderL(), while the same header is also appended to first video frame data. This picture header contains many fields that needs to be populuated. Three fields are currently missing: iSizeInMemory, iDisplayedRect, and iIsRandomAccessible. This CR fills these three fields.

Files Modified:
/cvsroot/datatype/mdf/video/format/common/pub/mdfpayloadformat.h
/cvsroot/datatype/mdf/video/format/common/mdfpayloadformat.cpp
/cvsroot/datatype/mdf/video/format/h264/mdfh264payloadformat.cpp
/cvsroot/datatype/mdf/video/format/mp4/mdfmp4payloadformat.cpp
/cvsroot/datatype/mdf/video/format/rm/mdfrvxpayloadformat.cpp


Image Size and Heap Use impact: minor

Platforms and Profiles Build Verified:
armv5/helix-client-s60-mmf-mdf-arm

Platforms and Profiles Functionality verified:
armv5/helix-client-s60-mmf-mdf-emulator
armv5/helix-client-s60-mmf-mdf-arm

Branch: hxclient_2_1_0_cayennes_restricted and HEAD



Index: mdfpayloadformat.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/common/pub/mdfpayloadformat.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- mdfpayloadformat.h	8 Nov 2006 19:22:42 -0000	1.8
+++ mdfpayloadformat.h	13 Nov 2006 17:42:09 -0000	1.9
@@ -152,7 +152,7 @@
 protected:
     CPayloadFormatPluginDevice();
     virtual HX_RESULT     InitializeDepacketizer();
-    virtual HXBOOL        FormPictureHeader( TVideoPictureHeader& pPictureHeader ) const;
+    virtual HXBOOL        FormPictureHeader( TVideoPictureHeader& pPictureHeader );
     virtual void          SetVideoMimetypes( CPayloadFormatInfo& aPayloadFormatInfo ) const = 0;
     virtual void          SetVideoDataUnit() = 0;
     
@@ -166,6 +166,10 @@
     HXBOOL                  m_bPictureHeaderValid;
     TVideoDataUnitType      m_VideoDataUnitType;
     TVideoDataUnitEncapsulation     m_VideoDataUnitEncapsulation;
+
+    UINT32                  m_ulVideoWidth;
+    UINT32                  m_ulVideoHeight;
+
     
     TUid                    m_Dtor_ID_Key;
     


From jwei at helixcommunity.org  Mon Nov 13 09:42:12 2006
From: jwei at helixcommunity.org (jwei@helixcommunity.org)
Date: Mon Nov 13 10:47:20 2006
Subject: [Datatype-cvs] mdf/video/format/h264 mdfh264payloadformat.cpp, 1.5,
	1.6
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/h264
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv5532/h264

Modified Files:
	mdfh264payloadformat.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:  John Wei

Reviewed by: 

Date: 10-11-2006.

Error ID: JWEI-6VHNLL

Project: Helix plugin for Symbian

Synopsis: MDF Video Renderer - filling iSizeInMemory, iDisplayedRect and iDisplayedRect fields of PictureHeader

The picture header is passed to DevVideo by two methods. One is through ConfigureDecoderL(), while the same header is also appended to first video frame data. This picture header contains many fields that needs to be populuated. Three fields are currently missing: iSizeInMemory, iDisplayedRect, and iIsRandomAccessible. This CR fills these three fields.

Files Modified:
/cvsroot/datatype/mdf/video/format/common/pub/mdfpayloadformat.h
/cvsroot/datatype/mdf/video/format/common/mdfpayloadformat.cpp
/cvsroot/datatype/mdf/video/format/h264/mdfh264payloadformat.cpp
/cvsroot/datatype/mdf/video/format/mp4/mdfmp4payloadformat.cpp
/cvsroot/datatype/mdf/video/format/rm/mdfrvxpayloadformat.cpp


Image Size and Heap Use impact: minor

Platforms and Profiles Build Verified:
armv5/helix-client-s60-mmf-mdf-arm

Platforms and Profiles Functionality verified:
armv5/helix-client-s60-mmf-mdf-emulator
armv5/helix-client-s60-mmf-mdf-arm

Branch: hxclient_2_1_0_cayennes_restricted and HEAD



Index: mdfh264payloadformat.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/h264/mdfh264payloadformat.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- mdfh264payloadformat.cpp	8 Nov 2006 19:45:21 -0000	1.5
+++ mdfh264payloadformat.cpp	13 Nov 2006 17:42:09 -0000	1.6
@@ -382,7 +382,7 @@
     MDFVIDEOLOG_LEAVEFN( "SetVideoDataUnit" );
 }
 
-HXBOOL CH264PayloadFormatPluginDevice::FormPictureHeader( TVideoPictureHeader& pPictureHeader ) const
+HXBOOL CH264PayloadFormatPluginDevice::FormPictureHeader( TVideoPictureHeader& pPictureHeader )
 {
     MDFVIDEOLOG_ENTERFN( "FormPictureHeader" );
     
@@ -473,6 +473,12 @@
         retVal = TRUE;
         }
     }
+
+    //fill iSizeInMemory and iDisplayedRect fields of pPictureHeader
+    //must be placed here since width and height are found in 
+    //the derived class, ignore the return status
+    CPayloadFormatPluginDevice::FormPictureHeader( pPictureHeader );
+
     MDFVIDEOLOG_RETURNFN( "FormPictureHeader", retVal );
     return retVal;
 }


From jwei at helixcommunity.org  Mon Nov 13 09:42:13 2006
From: jwei at helixcommunity.org (jwei@helixcommunity.org)
Date: Mon Nov 13 10:47:20 2006
Subject: [Datatype-cvs] 
	mdf/video/format/h264/pub mdfh264payloadformat.h, 1.4, 1.5
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/h264/pub
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv5532/h264/pub

Modified Files:
	mdfh264payloadformat.h 
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:  John Wei

Reviewed by: 

Date: 10-11-2006.

Error ID: JWEI-6VHNLL

Project: Helix plugin for Symbian

Synopsis: MDF Video Renderer - filling iSizeInMemory, iDisplayedRect and iDisplayedRect fields of PictureHeader

The picture header is passed to DevVideo by two methods. One is through ConfigureDecoderL(), while the same header is also appended to first video frame data. This picture header contains many fields that needs to be populuated. Three fields are currently missing: iSizeInMemory, iDisplayedRect, and iIsRandomAccessible. This CR fills these three fields.

Files Modified:
/cvsroot/datatype/mdf/video/format/common/pub/mdfpayloadformat.h
/cvsroot/datatype/mdf/video/format/common/mdfpayloadformat.cpp
/cvsroot/datatype/mdf/video/format/h264/mdfh264payloadformat.cpp
/cvsroot/datatype/mdf/video/format/mp4/mdfmp4payloadformat.cpp
/cvsroot/datatype/mdf/video/format/rm/mdfrvxpayloadformat.cpp


Image Size and Heap Use impact: minor

Platforms and Profiles Build Verified:
armv5/helix-client-s60-mmf-mdf-arm

Platforms and Profiles Functionality verified:
armv5/helix-client-s60-mmf-mdf-emulator
armv5/helix-client-s60-mmf-mdf-arm

Branch: hxclient_2_1_0_cayennes_restricted and HEAD



Index: mdfh264payloadformat.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/h264/pub/mdfh264payloadformat.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- mdfh264payloadformat.h	8 Nov 2006 19:41:43 -0000	1.4
+++ mdfh264payloadformat.h	13 Nov 2006 17:42:09 -0000	1.5
@@ -78,7 +78,7 @@
     virtual void          SetVideoMimetypes( CPayloadFormatInfo& aPayloadFormatInfo ) const;
     virtual void          SetVideoDataUnit();
 
-    virtual HXBOOL        FormPictureHeader( TVideoPictureHeader& pPictureHeader ) const;
+    virtual HXBOOL        FormPictureHeader( TVideoPictureHeader& pPictureHeader );
     HX_RESULT             CreateAllocators();
     static void           KillInputBuffer( void* pBuffer, void* pUserData );
     HX_RESULT             GetFMTParams( IHXValues*& pFMTParams );


From jwei at helixcommunity.org  Mon Nov 13 09:42:13 2006
From: jwei at helixcommunity.org (jwei@helixcommunity.org)
Date: Mon Nov 13 10:47:21 2006
Subject: [Datatype-cvs] mdf/video/format/rm mdfrvxpayloadformat.cpp,1.8,1.9
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/rm
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv5532/rm

Modified Files:
	mdfrvxpayloadformat.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:  John Wei

Reviewed by: 

Date: 10-11-2006.

Error ID: JWEI-6VHNLL

Project: Helix plugin for Symbian

Synopsis: MDF Video Renderer - filling iSizeInMemory, iDisplayedRect and iDisplayedRect fields of PictureHeader

The picture header is passed to DevVideo by two methods. One is through ConfigureDecoderL(), while the same header is also appended to first video frame data. This picture header contains many fields that needs to be populuated. Three fields are currently missing: iSizeInMemory, iDisplayedRect, and iIsRandomAccessible. This CR fills these three fields.

Files Modified:
/cvsroot/datatype/mdf/video/format/common/pub/mdfpayloadformat.h
/cvsroot/datatype/mdf/video/format/common/mdfpayloadformat.cpp
/cvsroot/datatype/mdf/video/format/h264/mdfh264payloadformat.cpp
/cvsroot/datatype/mdf/video/format/mp4/mdfmp4payloadformat.cpp
/cvsroot/datatype/mdf/video/format/rm/mdfrvxpayloadformat.cpp


Image Size and Heap Use impact: minor

Platforms and Profiles Build Verified:
armv5/helix-client-s60-mmf-mdf-arm

Platforms and Profiles Functionality verified:
armv5/helix-client-s60-mmf-mdf-emulator
armv5/helix-client-s60-mmf-mdf-arm

Branch: hxclient_2_1_0_cayennes_restricted and HEAD



Index: mdfrvxpayloadformat.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/rm/mdfrvxpayloadformat.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- mdfrvxpayloadformat.cpp	8 Nov 2006 19:56:01 -0000	1.8
+++ mdfrvxpayloadformat.cpp	13 Nov 2006 17:42:10 -0000	1.9
@@ -272,7 +272,7 @@
     MDFVIDEOLOG_LEAVEFN( "SetVideoDataUnit" );
 }
 
-HXBOOL CRVXPayloadFormatPluginDevice::FormPictureHeader( TVideoPictureHeader& pPictureHeader ) const
+HXBOOL CRVXPayloadFormatPluginDevice::FormPictureHeader( TVideoPictureHeader& pPictureHeader )
 {
     MDFVIDEOLOG_ENTERFN( "FormPictureHeader" );
     HXBOOL retVal = FALSE;
@@ -327,6 +327,12 @@
             }
         }
     }
+
+    //fill iSizeInMemory and iDisplayedRect fields of pPictureHeader
+    //must be placed here since width and height are found in 
+    //the derived class, ignore the return status
+    CPayloadFormatPluginDevice::FormPictureHeader( pPictureHeader );
+
     MDFVIDEOLOG_RETURNFN( "FormPictureHeader", retVal );
     return retVal;
 }


From jwei at helixcommunity.org  Mon Nov 13 09:42:13 2006
From: jwei at helixcommunity.org (jwei@helixcommunity.org)
Date: Mon Nov 13 10:47:21 2006
Subject: [Datatype-cvs] mdf/video/format/mp4/pub mdfmp4payloadformat.h, 1.8,
	1.9
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/mp4/pub
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv5532/mp4/pub

Modified Files:
	mdfmp4payloadformat.h 
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:  John Wei

Reviewed by: 

Date: 10-11-2006.

Error ID: JWEI-6VHNLL

Project: Helix plugin for Symbian

Synopsis: MDF Video Renderer - filling iSizeInMemory, iDisplayedRect and iDisplayedRect fields of PictureHeader

The picture header is passed to DevVideo by two methods. One is through ConfigureDecoderL(), while the same header is also appended to first video frame data. This picture header contains many fields that needs to be populuated. Three fields are currently missing: iSizeInMemory, iDisplayedRect, and iIsRandomAccessible. This CR fills these three fields.

Files Modified:
/cvsroot/datatype/mdf/video/format/common/pub/mdfpayloadformat.h
/cvsroot/datatype/mdf/video/format/common/mdfpayloadformat.cpp
/cvsroot/datatype/mdf/video/format/h264/mdfh264payloadformat.cpp
/cvsroot/datatype/mdf/video/format/mp4/mdfmp4payloadformat.cpp
/cvsroot/datatype/mdf/video/format/rm/mdfrvxpayloadformat.cpp


Image Size and Heap Use impact: minor

Platforms and Profiles Build Verified:
armv5/helix-client-s60-mmf-mdf-arm

Platforms and Profiles Functionality verified:
armv5/helix-client-s60-mmf-mdf-emulator
armv5/helix-client-s60-mmf-mdf-arm

Branch: hxclient_2_1_0_cayennes_restricted and HEAD



Index: mdfmp4payloadformat.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/mp4/pub/mdfmp4payloadformat.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- mdfmp4payloadformat.h	8 Nov 2006 19:49:30 -0000	1.8
+++ mdfmp4payloadformat.h	13 Nov 2006 17:42:10 -0000	1.9
@@ -77,7 +77,7 @@
     virtual void          SetVideoMimetypes( CPayloadFormatInfo& aPayloadFormatInfo ) const;
     virtual void          SetVideoDataUnit();
 
-    virtual HXBOOL        FormPictureHeader( TVideoPictureHeader& pPictureHeader ) const;
+    virtual HXBOOL        FormPictureHeader( TVideoPictureHeader& pPictureHeader );
     HX_RESULT             CreateAllocators();
     static void           KillInputBuffer( void* pBuffer, void* pUserData );
     HX_RESULT             GetFMTParams( IHXValues*& pFMTParams );


From jwei at helixcommunity.org  Mon Nov 13 09:42:13 2006
From: jwei at helixcommunity.org (jwei@helixcommunity.org)
Date: Mon Nov 13 10:47:22 2006
Subject: [Datatype-cvs] mdf/video/format/mp4 mdfmp4payloadformat.cpp, 1.11,
	1.12
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/mp4
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv5532/mp4

Modified Files:
	mdfmp4payloadformat.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:  John Wei

Reviewed by: 

Date: 10-11-2006.

Error ID: JWEI-6VHNLL

Project: Helix plugin for Symbian

Synopsis: MDF Video Renderer - filling iSizeInMemory, iDisplayedRect and iDisplayedRect fields of PictureHeader

The picture header is passed to DevVideo by two methods. One is through ConfigureDecoderL(), while the same header is also appended to first video frame data. This picture header contains many fields that needs to be populuated. Three fields are currently missing: iSizeInMemory, iDisplayedRect, and iIsRandomAccessible. This CR fills these three fields.

Files Modified:
/cvsroot/datatype/mdf/video/format/common/pub/mdfpayloadformat.h
/cvsroot/datatype/mdf/video/format/common/mdfpayloadformat.cpp
/cvsroot/datatype/mdf/video/format/h264/mdfh264payloadformat.cpp
/cvsroot/datatype/mdf/video/format/mp4/mdfmp4payloadformat.cpp
/cvsroot/datatype/mdf/video/format/rm/mdfrvxpayloadformat.cpp


Image Size and Heap Use impact: minor

Platforms and Profiles Build Verified:
armv5/helix-client-s60-mmf-mdf-arm

Platforms and Profiles Functionality verified:
armv5/helix-client-s60-mmf-mdf-emulator
armv5/helix-client-s60-mmf-mdf-arm

Branch: hxclient_2_1_0_cayennes_restricted and HEAD



Index: mdfmp4payloadformat.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/mp4/mdfmp4payloadformat.cpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- mdfmp4payloadformat.cpp	8 Nov 2006 19:51:43 -0000	1.11
+++ mdfmp4payloadformat.cpp	13 Nov 2006 17:42:10 -0000	1.12
@@ -318,7 +318,7 @@
     MDFVIDEOLOG_LEAVEFN( "SetVideoDataUnit" );
 }
 
-HXBOOL CMP4PayloadFormatPluginDevice::FormPictureHeader( TVideoPictureHeader& pPictureHeader ) const
+HXBOOL CMP4PayloadFormatPluginDevice::FormPictureHeader( TVideoPictureHeader& pPictureHeader )
 {
     MDFVIDEOLOG_ENTERFN( "FormPictureHeader" );
     
@@ -336,6 +336,11 @@
         retVal = TRUE;
     }
     
+    //fill iSizeInMemory and iDisplayedRect fields of pPictureHeader
+    //must be placed here since width and height are found in 
+    //the derived class, ignore the return status
+    CPayloadFormatPluginDevice::FormPictureHeader( pPictureHeader );
+
     MDFVIDEOLOG_RETURNFN( "FormPictureHeader", retVal );
     return retVal;
 }


From jwei at helixcommunity.org  Mon Nov 13 09:42:14 2006
From: jwei at helixcommunity.org (jwei@helixcommunity.org)
Date: Mon Nov 13 10:47:23 2006
Subject: [Datatype-cvs] mdf/video/format/mp4 mdfmp4payloadformat.cpp,
	1.2.2.10, 1.2.2.11
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/mp4
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv5494/mp4

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfmp4payloadformat.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:  John Wei

Reviewed by: 

Date: 10-11-2006.

Error ID: JWEI-6VHNLL

Project: Helix plugin for Symbian

Synopsis: MDF Video Renderer - filling iSizeInMemory, iDisplayedRect and iDisplayedRect fields of PictureHeader

The picture header is passed to DevVideo by two methods. One is through ConfigureDecoderL(), while the same header is also appended to first video frame data. This picture header contains many fields that needs to be populuated. Three fields are currently missing: iSizeInMemory, iDisplayedRect, and iIsRandomAccessible. This CR fills these three fields.

Files Modified:
/cvsroot/datatype/mdf/video/format/common/pub/mdfpayloadformat.h
/cvsroot/datatype/mdf/video/format/common/mdfpayloadformat.cpp
/cvsroot/datatype/mdf/video/format/h264/mdfh264payloadformat.cpp
/cvsroot/datatype/mdf/video/format/mp4/mdfmp4payloadformat.cpp
/cvsroot/datatype/mdf/video/format/rm/mdfrvxpayloadformat.cpp


Image Size and Heap Use impact: minor

Platforms and Profiles Build Verified:
armv5/helix-client-s60-mmf-mdf-arm

Platforms and Profiles Functionality verified:
armv5/helix-client-s60-mmf-mdf-emulator
armv5/helix-client-s60-mmf-mdf-arm

Branch: hxclient_2_1_0_cayennes_restricted and HEAD



Index: mdfmp4payloadformat.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/mp4/mdfmp4payloadformat.cpp,v
retrieving revision 1.2.2.10
retrieving revision 1.2.2.11
diff -u -d -r1.2.2.10 -r1.2.2.11
--- mdfmp4payloadformat.cpp	8 Nov 2006 17:53:35 -0000	1.2.2.10
+++ mdfmp4payloadformat.cpp	13 Nov 2006 17:42:01 -0000	1.2.2.11
@@ -336,6 +336,11 @@
         retVal = TRUE;
     }
     
+    //fill iSizeInMemory and iDisplayedRect fields of pPictureHeader
+    //must be placed here since width and height are found in 
+    //the derived class, ignore the return status
+    CPayloadFormatPluginDevice::FormPictureHeader( pPictureHeader );
+
     MDFVIDEOLOG_RETURNFN( "FormPictureHeader", retVal );
     return retVal;
 }


From jwei at helixcommunity.org  Mon Nov 13 09:42:18 2006
From: jwei at helixcommunity.org (jwei@helixcommunity.org)
Date: Mon Nov 13 10:47:25 2006
Subject: [Datatype-cvs] mdf/video/format/rm/pub mdfrvxpayloadformat.h, 1.6,
	1.7
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/rm/pub
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv5532/rm/pub

Modified Files:
	mdfrvxpayloadformat.h 
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:  John Wei

Reviewed by: 

Date: 10-11-2006.

Error ID: JWEI-6VHNLL

Project: Helix plugin for Symbian

Synopsis: MDF Video Renderer - filling iSizeInMemory, iDisplayedRect and iDisplayedRect fields of PictureHeader

The picture header is passed to DevVideo by two methods. One is through ConfigureDecoderL(), while the same header is also appended to first video frame data. This picture header contains many fields that needs to be populuated. Three fields are currently missing: iSizeInMemory, iDisplayedRect, and iIsRandomAccessible. This CR fills these three fields.

Files Modified:
/cvsroot/datatype/mdf/video/format/common/pub/mdfpayloadformat.h
/cvsroot/datatype/mdf/video/format/common/mdfpayloadformat.cpp
/cvsroot/datatype/mdf/video/format/h264/mdfh264payloadformat.cpp
/cvsroot/datatype/mdf/video/format/mp4/mdfmp4payloadformat.cpp
/cvsroot/datatype/mdf/video/format/rm/mdfrvxpayloadformat.cpp


Image Size and Heap Use impact: minor

Platforms and Profiles Build Verified:
armv5/helix-client-s60-mmf-mdf-arm

Platforms and Profiles Functionality verified:
armv5/helix-client-s60-mmf-mdf-emulator
armv5/helix-client-s60-mmf-mdf-arm

Branch: hxclient_2_1_0_cayennes_restricted and HEAD



Index: mdfrvxpayloadformat.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/rm/pub/mdfrvxpayloadformat.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- mdfrvxpayloadformat.h	8 Nov 2006 19:54:12 -0000	1.6
+++ mdfrvxpayloadformat.h	13 Nov 2006 17:42:10 -0000	1.7
@@ -77,7 +77,7 @@
     virtual void          SetVideoMimetypes( CPayloadFormatInfo& aPayloadFormatInfo ) const;
     virtual void          SetVideoDataUnit();
 
-    virtual HXBOOL        FormPictureHeader( TVideoPictureHeader& pPictureHeader ) const;
+    virtual HXBOOL        FormPictureHeader( TVideoPictureHeader& pPictureHeader );
     HX_RESULT             CreateAllocators();
     virtual HX_RESULT     InitializeDepacketizer();
     static void           KillInputBuffer( void* pBuffer, void* pUserData );


From jwei at helixcommunity.org  Mon Nov 13 09:42:19 2006
From: jwei at helixcommunity.org (jwei@helixcommunity.org)
Date: Mon Nov 13 10:47:25 2006
Subject: [Datatype-cvs] mdf/video/format/h264 mdfh264payloadformat.cpp,
	1.1.2.7, 1.1.2.8
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/h264
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv5494/h264

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfh264payloadformat.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:  John Wei

Reviewed by: 

Date: 10-11-2006.

Error ID: JWEI-6VHNLL

Project: Helix plugin for Symbian

Synopsis: MDF Video Renderer - filling iSizeInMemory, iDisplayedRect and iDisplayedRect fields of PictureHeader

The picture header is passed to DevVideo by two methods. One is through ConfigureDecoderL(), while the same header is also appended to first video frame data. This picture header contains many fields that needs to be populuated. Three fields are currently missing: iSizeInMemory, iDisplayedRect, and iIsRandomAccessible. This CR fills these three fields.

Files Modified:
/cvsroot/datatype/mdf/video/format/common/pub/mdfpayloadformat.h
/cvsroot/datatype/mdf/video/format/common/mdfpayloadformat.cpp
/cvsroot/datatype/mdf/video/format/h264/mdfh264payloadformat.cpp
/cvsroot/datatype/mdf/video/format/mp4/mdfmp4payloadformat.cpp
/cvsroot/datatype/mdf/video/format/rm/mdfrvxpayloadformat.cpp


Image Size and Heap Use impact: minor

Platforms and Profiles Build Verified:
armv5/helix-client-s60-mmf-mdf-arm

Platforms and Profiles Functionality verified:
armv5/helix-client-s60-mmf-mdf-emulator
armv5/helix-client-s60-mmf-mdf-arm

Branch: hxclient_2_1_0_cayennes_restricted and HEAD



Index: mdfh264payloadformat.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/h264/mdfh264payloadformat.cpp,v
retrieving revision 1.1.2.7
retrieving revision 1.1.2.8
diff -u -d -r1.1.2.7 -r1.1.2.8
--- mdfh264payloadformat.cpp	8 Nov 2006 17:49:28 -0000	1.1.2.7
+++ mdfh264payloadformat.cpp	13 Nov 2006 17:42:01 -0000	1.1.2.8
@@ -503,6 +503,12 @@
         retVal = TRUE;
         }
     }
+
+    //fill iSizeInMemory and iDisplayedRect fields of pPictureHeader
+    //must be placed here since width and height are found in 
+    //the derived class, ignore the return status
+    CPayloadFormatPluginDevice::FormPictureHeader( pPictureHeader );
+
     MDFVIDEOLOG_RETURNFN( "FormPictureHeader", retVal );
     return retVal;
 }


From jwei at helixcommunity.org  Mon Nov 13 09:42:09 2006
From: jwei at helixcommunity.org (jwei@helixcommunity.org)
Date: Mon Nov 13 10:47:46 2006
Subject: [Datatype-cvs] 
	mdf/video/format/common mdfpayloadformat.cpp, 1.2.2.8, 1.2.2.9
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/common
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv5494/common

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfpayloadformat.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:  John Wei

Reviewed by: 

Date: 10-11-2006.

Error ID: JWEI-6VHNLL

Project: Helix plugin for Symbian

Synopsis: MDF Video Renderer - filling iSizeInMemory, iDisplayedRect and iDisplayedRect fields of PictureHeader

The picture header is passed to DevVideo by two methods. One is through ConfigureDecoderL(), while the same header is also appended to first video frame data. This picture header contains many fields that needs to be populuated. Three fields are currently missing: iSizeInMemory, iDisplayedRect, and iIsRandomAccessible. This CR fills these three fields.

Files Modified:
/cvsroot/datatype/mdf/video/format/common/pub/mdfpayloadformat.h
/cvsroot/datatype/mdf/video/format/common/mdfpayloadformat.cpp
/cvsroot/datatype/mdf/video/format/h264/mdfh264payloadformat.cpp
/cvsroot/datatype/mdf/video/format/mp4/mdfmp4payloadformat.cpp
/cvsroot/datatype/mdf/video/format/rm/mdfrvxpayloadformat.cpp


Image Size and Heap Use impact: minor

Platforms and Profiles Build Verified:
armv5/helix-client-s60-mmf-mdf-arm

Platforms and Profiles Functionality verified:
armv5/helix-client-s60-mmf-mdf-emulator
armv5/helix-client-s60-mmf-mdf-arm

Branch: hxclient_2_1_0_cayennes_restricted and HEAD



Index: mdfpayloadformat.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/common/mdfpayloadformat.cpp,v
retrieving revision 1.2.2.8
retrieving revision 1.2.2.9
diff -u -d -r1.2.2.8 -r1.2.2.9
--- mdfpayloadformat.cpp	8 Nov 2006 17:43:32 -0000	1.2.2.8
+++ mdfpayloadformat.cpp	13 Nov 2006 17:42:00 -0000	1.2.2.9
@@ -311,28 +311,8 @@
 UINT32 CPayloadFormatPluginDevice::GetVideoResolution() const
 {
     MDFVIDEOLOG_ENTERFN( "GetVideoResolution" );
-    UINT32 ulResolution = 0;
-    if( m_pHeader )
-    {
-        UINT32 ulVideoWidth = 0;
-        UINT32 ulVideoHeight = 0;
-
-        if( SUCCEEDED(m_pHeader->GetPropertyULONG32( "FrameWidth", ulVideoWidth ) ) &&
-            SUCCEEDED(m_pHeader->GetPropertyULONG32( "FrameHeight", ulVideoHeight ) ) )
-        {
-            ulResolution = ulVideoWidth * ulVideoHeight;
-        }
-        else
-        {   // if frame width & height are not available, use track width & height
-            if( SUCCEEDED(m_pHeader->GetPropertyULONG32( "Width", ulVideoWidth ) ) &&
-                SUCCEEDED(m_pHeader->GetPropertyULONG32( "Height", ulVideoHeight ) ) )
-            {
-                ulResolution = ulVideoWidth * ulVideoHeight;
-            }
-        }
-    }
     MDFVIDEOLOG_LEAVEFN( "GetVideoResolution" );
-    return ulResolution;
+    return m_ulVideoWidth * m_ulVideoHeight;
 }
 
 CPayloadFormatInfo* CPayloadFormatPluginDevice::PayloadFormatInfoLC() const
@@ -386,7 +366,9 @@
   m_pHeader( NULL ),
   m_bPictureHeaderValid( FALSE ),
   m_VideoDataUnitType( EDuCodedPicture ),
-  m_VideoDataUnitEncapsulation( EDuGenericPayload )
+  m_VideoDataUnitEncapsulation( EDuGenericPayload ),
+  m_ulVideoWidth( 0 ),
+  m_ulVideoHeight( 0 )
   //m_Dtor_ID_Key
 {
     MDFVIDEOLOG_CREATE_NOWRITE;
@@ -398,7 +380,11 @@
     m_pPictureHeader.iLevel = -1;
     m_pPictureHeader.iVersion = -1;
     m_pPictureHeader.iOptional = NULL;
-    
+    m_pPictureHeader.iSizeInMemory.SetSize( 0, 0 );
+    m_pPictureHeader.iDisplayedRect.SetRect( 0, 0, 0, 0 );
+    m_pPictureHeader.iSupplementalData = NULL;
+    m_pPictureHeader.iIsRandomAccessible = EFalse;
+
     MDFVIDEOLOG_LEAVEFN( "CPayloadFormatPluginDevice" );
 }
 
@@ -424,5 +410,31 @@
 
 HXBOOL CPayloadFormatPluginDevice::FormPictureHeader( TVideoPictureHeader& pPictureHeader )
 {
-    return FALSE;
+    MDFVIDEOLOG_ENTERFN( "FormPictureHeader" );
+
+    //populate some fields
+    HXBOOL retVal = FALSE;
+
+    if( m_pHeader )
+    {
+        if( SUCCEEDED(m_pHeader->GetPropertyULONG32( "FrameWidth", m_ulVideoWidth ) ) &&
+            SUCCEEDED(m_pHeader->GetPropertyULONG32( "FrameHeight", m_ulVideoHeight ) ) )
+        {
+            retVal = TRUE;
+        }
+        else if( SUCCEEDED(m_pHeader->GetPropertyULONG32( "Width", m_ulVideoWidth ) ) &&
+                 SUCCEEDED(m_pHeader->GetPropertyULONG32( "Height", m_ulVideoHeight ) ) )
+        {
+            retVal = TRUE;
+        }
+    }
+
+    //regardless retVal's status
+    pPictureHeader.iSizeInMemory.SetSize( m_ulVideoWidth, m_ulVideoHeight );
+    pPictureHeader.iDisplayedRect.SetRect( 0, 0, m_ulVideoWidth, m_ulVideoHeight );
+
+    MDFVIDEOLOG_WRITE_MULTI_FORMAT2( "    FrameWidth = %d, FrameHeight = %d", m_ulVideoWidth, m_ulVideoHeight );
+    MDFVIDEOLOG_RETURNFN( "FormPictureHeader", retVal );
+
+    return retVal;
 }


From jwei at helixcommunity.org  Mon Nov 13 09:42:09 2006
From: jwei at helixcommunity.org (jwei@helixcommunity.org)
Date: Mon Nov 13 10:47:46 2006
Subject: [Datatype-cvs] mdf/video/format/common/pub mdfpayloadformat.h,
	1.2.2.7, 1.2.2.8
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/common/pub
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv5494/common/pub

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfpayloadformat.h 
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:  John Wei

Reviewed by: 

Date: 10-11-2006.

Error ID: JWEI-6VHNLL

Project: Helix plugin for Symbian

Synopsis: MDF Video Renderer - filling iSizeInMemory, iDisplayedRect and iDisplayedRect fields of PictureHeader

The picture header is passed to DevVideo by two methods. One is through ConfigureDecoderL(), while the same header is also appended to first video frame data. This picture header contains many fields that needs to be populuated. Three fields are currently missing: iSizeInMemory, iDisplayedRect, and iIsRandomAccessible. This CR fills these three fields.

Files Modified:
/cvsroot/datatype/mdf/video/format/common/pub/mdfpayloadformat.h
/cvsroot/datatype/mdf/video/format/common/mdfpayloadformat.cpp
/cvsroot/datatype/mdf/video/format/h264/mdfh264payloadformat.cpp
/cvsroot/datatype/mdf/video/format/mp4/mdfmp4payloadformat.cpp
/cvsroot/datatype/mdf/video/format/rm/mdfrvxpayloadformat.cpp


Image Size and Heap Use impact: minor

Platforms and Profiles Build Verified:
armv5/helix-client-s60-mmf-mdf-arm

Platforms and Profiles Functionality verified:
armv5/helix-client-s60-mmf-mdf-emulator
armv5/helix-client-s60-mmf-mdf-arm

Branch: hxclient_2_1_0_cayennes_restricted and HEAD



Index: mdfpayloadformat.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/common/pub/mdfpayloadformat.h,v
retrieving revision 1.2.2.7
retrieving revision 1.2.2.8
diff -u -d -r1.2.2.7 -r1.2.2.8
--- mdfpayloadformat.h	8 Nov 2006 17:41:46 -0000	1.2.2.7
+++ mdfpayloadformat.h	13 Nov 2006 17:42:01 -0000	1.2.2.8
@@ -166,6 +166,10 @@
     HXBOOL                  m_bPictureHeaderValid;
     TVideoDataUnitType      m_VideoDataUnitType;
     TVideoDataUnitEncapsulation     m_VideoDataUnitEncapsulation;
+
+    UINT32                  m_ulVideoWidth;
+    UINT32                  m_ulVideoHeight;
+
     
     TUid                    m_Dtor_ID_Key;
     


From ehyche at helixcommunity.org  Wed Nov 15 07:10:35 2006
From: ehyche at helixcommunity.org (ehyche@helixcommunity.org)
Date: Wed Nov 15 08:15:13 2006
Subject: [Datatype-cvs] wm/audio/renderer wmadecoder.cpp, 1.6,
	1.7 wmadecoder.h, 1.4, 1.5 wmaformat.cpp, 1.4, 1.5 wmaformat.h,
	1.3, 1.4
Message-ID: 

Update of /cvsroot/datatype/wm/audio/renderer
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv23406

Modified Files:
	wmadecoder.cpp wmadecoder.h wmaformat.cpp wmaformat.h 
Log Message:
Modified by: Eric Hyche (ehyche@real.com)
Reviewed by: Greg Wright (gwright@real.com)

Description
--------------------------------------------------
Loss was not being handled correctly in the WMA renderer.
This change makes three changes to fix this:
  a) When a CMediaPacket is processed with the MDPCKT_FOLLOWS_LOSS_FLAG
     was processed, we were computing the difference between
     ulNextDecodeStartTimeInSamples and m_ulLastDecodedEndTimeInSamples.
     However, ulNextDecodeStartTimeInSamples is by default, set to
     ulLastDecodedEndTimeInSamples, so the difference in time was always
     0, so we never set the ulNextDecodeStartTimeInSamples to the
     time of the packet which follows loss as we should.
  b) We were not properly setting the MDPCKT_FOLLOWS_LOSS_FLAG
     flag in the CMediaPacket after we see a packet with IsLost() == TRUE.
     This change properly sets this flag.
  c) If there is a large gap of loss in ASF packets, then sometimes
     the ASF depacketizer in the ASF fileformat cannot detect that
     loss has occurred. This is because most ASF files do not have
     the sequence number field set in each ASF packet, even though
     the ASF format has a space for the sequence number. Therefore,
     the ASF depacketizer can only detect loss if there is a missing
     fragment in a payload. If the loss of ASF packets did not cause
     any missing fragments, then the ASF depacketizer has no rock-solid
     way to detect loss.

     However, inside the WMA bitstream, there is a field that can help
     us. In a WMA sample, the first four bits are a 4-bit number
     which indicate a sequence number of WMA packets. Therefore, we
     parse this number out and the format object looks for gaps in this
     sequence number. So even if no packets are marked as IsLost() == TRUE,
     the format object can still detect that loss occurred.

Files Modified
--------------------------------------------------
datatype/wm/audio/renderer/wmadecoder.cpp
datatype/wm/audio/renderer/wmadecoder.h
datatype/wm/audio/renderer/wmaformat.cpp
datatype/wm/audio/renderer/wmaformat.h

Branches
--------------------------------------------------
HEAD and 150Cay



Index: wmaformat.cpp
===================================================================
RCS file: /cvsroot/datatype/wm/audio/renderer/wmaformat.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- wmaformat.cpp	5 Jul 2006 14:49:56 -0000	1.4
+++ wmaformat.cpp	15 Nov 2006 15:10:33 -0000	1.5
@@ -69,6 +69,7 @@
     , m_bNewAssembledFrame(FALSE)
     , m_bSubStreamTransition(FALSE)
     , m_bFirstDecodeAfterReset(FALSE)
+    , m_bLastPacketWasLost(FALSE)
     , m_ulMaxDecoderOutputSamples(0)
     , m_ulMaxDecoderOutputBytes(0)
     , m_ulAUDurationInSamples(0)
@@ -81,6 +82,7 @@
     , m_ulLastFrameTimeInSamples(0)
     , m_ulLastDecodedEndTimeInMs(0)
     , m_pStreamHdr(NULL)
+    , m_pSubStreamInfo(NULL)
 {
     HX_ASSERT(m_pCommonClassFactory);
 }
@@ -102,6 +104,8 @@
     HX_DELETE(m_pRuleToSubStreamMap);
     HX_DELETE(m_pRuleToFlagMap);
     m_usNumRules = 0;
+    // Delete the array of SubStreamInfo structs
+    HX_VECTOR_DELETE(m_pSubStreamInfo);
 }
 
 HX_RESULT CWMAudioFormat::Init(IHXValues* pHeader)
@@ -317,31 +321,97 @@
 
     if (pPacket)
     {
-        IHXBuffer* pBuffer = pPacket->GetBuffer();
-        if (pBuffer)
+        if (!pPacket->IsLost())
         {
-            HXLOGL4(HXLOG_WMAR, "CreateAssembledPacket() ts=%lu asmRule=%u asmFlags=0x%02x size=%lu lost=%lu",
-                    pPacket->GetTime(), pPacket->GetASMRuleNumber(), pPacket->GetASMFlags(),
-                    (pBuffer ? pBuffer->GetSize() : 0), pPacket->IsLost());
-            // Generate the sample description
-            UINT32 ulASMRule  = pPacket->GetASMRuleNumber();
-            UINT32 ulASMFlags = pPacket->GetASMFlags();
-            UINT32 ulSampDesc = ((ulASMFlags & 0x0000FFFF) << 16) |
-                                 (ulASMRule  & 0x0000FFFF);
-            // Set the flag saying we are using IHXBuffers as input
-            UINT32 ulFlags = MDPCKT_USES_IHXBUFFER_FLAG;
-            // The ASF fileformat does depacketization, so there
-            // is no need for us to depacketize. We can put
-            // each packet into its own CMediaPacket.
-            pRet = new CMediaPacket(pBuffer,
-                                    (UINT8*) pBuffer->GetBuffer(),
-                                    pBuffer->GetSize(),
-                                    pBuffer->GetSize(),
-                                    pPacket->GetTime(),
-                                    ulFlags,
-                                    (void*) ulSampDesc);
+            IHXBuffer* pBuffer = pPacket->GetBuffer();
+            if (pBuffer)
+            {
+                // Generate the sample description
+                UINT32 ulASMRule  = pPacket->GetASMRuleNumber();
+                UINT32 ulASMFlags = pPacket->GetASMFlags();
+                UINT32 ulSampDesc = ((ulASMFlags & 0x0000FFFF) << 16) |
+                                    (ulASMRule  & 0x0000FFFF);
+                // Get the substream from the ASM rule
+                UINT32 ulSubStreamIndex = 0;
+                if (ulASMRule < ((UINT32) m_pRuleToSubStreamMap->num_rules) &&
+                    m_pRuleToSubStreamMap->rule_to_flag_map)
+                {
+                    ulSubStreamIndex = (UINT32) m_pRuleToSubStreamMap->rule_to_flag_map[ulASMRule];
+                }
+                // Parse the packet
+                BYTE ucWMASeqNum = 0;
+                BYTE ucWMANumFramesInPacket = 0;
+                if (m_ppWMAudioDecoder && ulSubStreamIndex < m_ulNumSubStreams)
+                {
+                    m_ppWMAudioDecoder[ulSubStreamIndex]->ParseWMAPacket(pBuffer->GetBuffer(),
+                                                                         pBuffer->GetSize(),
+                                                                         &ucWMASeqNum,
+                                                                         &ucWMANumFramesInPacket);
+                }
+                HXLOGL4(HXLOG_WMAR, "CreateAssembledPacket() ts=%lu asmRule=%u asmFlags=0x%02x size=%lu wmaSeq=%u wmaNumFramesInPacket=%u",
+                        pPacket->GetTime(), pPacket->GetASMRuleNumber(), pPacket->GetASMFlags(),
+                        pBuffer->GetSize(), (UINT16) ucWMASeqNum, (UINT16) ucWMANumFramesInPacket);
+                // Set the flag saying we are using IHXBuffers as input
+                UINT32 ulFlags = MDPCKT_USES_IHXBUFFER_FLAG;
+                // Is this the first packet on this substream?
+                HXBOOL bSeqNumSkip = FALSE;
+                if (m_pSubStreamInfo && ulSubStreamIndex < m_ulNumSubStreams)
+                {
+                    // Is this the first packet on this substream
+                    if (m_pSubStreamInfo[ulSubStreamIndex].m_bFirstPacket)
+                    {
+                        // This is the first packet on the substream, so
+                        // we should not check for a sequence number gap.
+                        m_pSubStreamInfo[ulSubStreamIndex].m_bFirstPacket = FALSE;
+                    }
+                    else
+                    {
+                        // Does this WMA packet have the expected sequence number?
+                        // If it doesn't, then we've experienced loss
+                        if (ucWMASeqNum != m_pSubStreamInfo[ulSubStreamIndex].m_ucNextSequenceNum)
+                        {
+                            bSeqNumSkip = TRUE;
+                        }
+                    }
+                    // Set the next expected sequence number. The WMA sequence
+                    // number is a 4-bit number, so its range is [0,15].
+                    m_pSubStreamInfo[ulSubStreamIndex].m_ucNextSequenceNum = (ucWMASeqNum + 1) % 16;
+                }
+                // Did we skip a sequence number?
+                if (bSeqNumSkip)
+                {
+                    // Set the CMediaPacket flag saying this packet follows loss
+                    ulFlags |= MDPCKT_FOLLOWS_LOSS_FLAG;
+                }
+                // Was the last packet (or packets) lost?
+                if (m_bLastPacketWasLost)
+                {
+                    // Set the CMediaPacket flag saying this packet follows loss
+                    ulFlags |= MDPCKT_FOLLOWS_LOSS_FLAG;
+                    // Clear the last-packet-was-lost flag
+                    m_bLastPacketWasLost = FALSE;
+                }
+                // The ASF fileformat does depacketization, so there
+                // is no need for us to depacketize. We can put
+                // each packet into its own CMediaPacket.
+                pRet = new CMediaPacket(pBuffer,
+                                        (UINT8*) pBuffer->GetBuffer(),
+                                        pBuffer->GetSize(),
+                                        pBuffer->GetSize(),
+                                        pPacket->GetTime(),
+                                        ulFlags,
+                                        (void*) ulSampDesc);
+            }
+            HX_RELEASE(pBuffer);
+        }
+        else
+        {
+            HXLOGL4(HXLOG_WMAR, "CreateAssembledPacket() LOST packet");
+            // This packet is marked as lost. Therefore, set the flag saying
+            // the last packet was lost, and when we see the next non-lost
+            // packet, we will set the appropriate flag.
+            m_bLastPacketWasLost = TRUE;
         }
-        HX_RELEASE(pBuffer);
     }
 
     return pRet;
@@ -443,10 +513,10 @@
                 {
                     // Is there a gap between the end of the last encoded frame
                     // and the beginning of this one?
-                    if (CAudioRenderer::CmpTime(ulNextDecodeStartTimeInSamples, m_ulLastDecodedEndTimeInSamples) > 0)
+                    if (CAudioRenderer::CmpTime(ulPacketDecodeStartTimeInSamples, m_ulLastDecodedEndTimeInSamples) > 0)
                     {
                         // Compute the time lost in samples
-                        UINT32 ulTimeLostInSamples = ulNextDecodeStartTimeInSamples - m_ulLastDecodedEndTimeInSamples;
+                        UINT32 ulTimeLostInSamples = ulPacketDecodeStartTimeInSamples - m_ulLastDecodedEndTimeInSamples;
                         // Comput the time lost in milliseconds
                         UINT32 ulTimeLostInMs = CAudioFormat::ConvertTimeToMs(ulTimeLostInSamples);
                         // Is this amount of time greater than tolerable?
@@ -459,7 +529,7 @@
                             // Conceal the lost samples
                             pDecoder->Conceal(ulNumSamplesToConceal);
                             // Align the next start time
-                            ulNextDecodeStartTimeInSamples = m_ulLastDecodedEndTimeInSamples;
+                            ulNextDecodeStartTimeInSamples = ulPacketDecodeStartTimeInSamples;
                         }
                     }
                 }
@@ -655,11 +725,22 @@
         // and set it into the decoder
         m_ppWMAudioDecoder[m_ulActiveSubStreamIndex]->SetStartTime(GetStartTime());
     }
+    // Reset the substream info array
+    if (m_pSubStreamInfo && m_ulNumSubStreams)
+    {
+        UINT32 i = 0;
+        for (i = 0; i < m_ulNumSubStreams; i++)
+        {
+            m_pSubStreamInfo[i].m_bFirstPacket      = TRUE;
+            m_pSubStreamInfo[i].m_ucNextSequenceNum = 0;
+        }
+    }
 
     m_ulLastDecodedEndTimeInSamples = 0;
     m_ulLastFrameTimeInSamples      = 0;
     m_bNewAssembledFrame            = TRUE;
     m_bFirstDecodeAfterReset        = TRUE;
+    m_bLastPacketWasLost            = FALSE;
 }
 
 void CWMAudioFormat::ClearDecoderArray(void)
@@ -720,78 +801,90 @@
                         UINT32 ulBytesParsed = pTmp - pBuf;
                         pBuf  += ulBytesParsed;
                         ulLen -= ulBytesParsed;
-                        // Allocate an array of CWMAudioDecoder*
-                        ClearDecoderArray();
-                        m_ppWMAudioDecoder = new CWMAudioDecoder* [m_ulNumSubStreams];
-                        if (m_ppWMAudioDecoder)
+                        // Allocate the array of SubStreamInfo structs
+                        HX_VECTOR_DELETE(m_pSubStreamInfo);
+                        m_pSubStreamInfo = new SubStreamInfo [m_ulNumSubStreams];
+                        if (m_pSubStreamInfo)
                         {
-                            // Clear the return value
-                            retVal = HXR_OK;
-                            // Null out the array
-                            memset(m_ppWMAudioDecoder, 0, m_ulNumSubStreams * sizeof(CWMAudioDecoder*));
-                            // Now loop through each substream, creating the CWMAudioDecoder object
+                            // Initialize the array
                             UINT32 i = 0;
-                            for (i = 0; i < m_ulNumSubStreams && SUCCEEDED(retVal); i++)
+                            for (i = 0; i < m_ulNumSubStreams; i++)
                             {
-                                m_ppWMAudioDecoder[i] = CreateDecoder();
-                                if (!m_ppWMAudioDecoder[i])
-                                {
-                                    retVal = HXR_OUTOFMEMORY;
-                                }
+                                m_pSubStreamInfo[i].m_bFirstPacket      = TRUE;
+                                m_pSubStreamInfo[i].m_ucNextSequenceNum = 0;
                             }
-                            if (SUCCEEDED(retVal))
+                            // Allocate an array of CWMAudioDecoder*
+                            ClearDecoderArray();
+                            m_ppWMAudioDecoder = new CWMAudioDecoder* [m_ulNumSubStreams];
+                            if (m_ppWMAudioDecoder)
                             {
-                                // Now loop through and initialize each decoder with the substream header
+                                // Clear the return value
+                                retVal = HXR_OK;
+                                // Null out the array
+                                memset(m_ppWMAudioDecoder, 0, m_ulNumSubStreams * sizeof(CWMAudioDecoder*));
+                                // Now loop through each substream, creating the CWMAudioDecoder object
                                 for (i = 0; i < m_ulNumSubStreams && SUCCEEDED(retVal); i++)
                                 {
-                                    // Read the substream header length
-                                    UINT32 ulSubStreamHdrLen = 0;
-                                    retVal = UnpackUINT32BE(pBuf, ulLen, &ulSubStreamHdrLen);
-                                    if (SUCCEEDED(retVal))
+                                    m_ppWMAudioDecoder[i] = CreateDecoder();
+                                    if (!m_ppWMAudioDecoder[i])
                                     {
-                                        // Skip the substream header length
-                                        pBuf  += 4;
-                                        ulLen -= 4;
-                                        // Set the return value
-                                        retVal = HXR_FAIL;
-                                        // Sanity check on the length. This prevents
-                                        // a malicious substream header length
-                                        if (ulSubStreamHdrLen <= ulLen)
+                                        retVal = HXR_OUTOFMEMORY;
+                                    }
+                                }
+                                if (SUCCEEDED(retVal))
+                                {
+                                    // Now loop through and initialize each decoder with the substream header
+                                    for (i = 0; i < m_ulNumSubStreams && SUCCEEDED(retVal); i++)
+                                    {
+                                        // Read the substream header length
+                                        UINT32 ulSubStreamHdrLen = 0;
+                                        retVal = UnpackUINT32BE(pBuf, ulLen, &ulSubStreamHdrLen);
+                                        if (SUCCEEDED(retVal))
                                         {
-                                            // Initialize the CWMAudioDecoder with the substream header.
-                                            // This only parses the substream header. It does not
-                                            // go ahead and load the IHXAudioDecoder
-                                            retVal = m_ppWMAudioDecoder[i]->Init(m_pContext, pBuf, ulSubStreamHdrLen,
-                                                                                 m_pStreamHdr, i, m_ulNumSubStreams);
-                                            if (SUCCEEDED(retVal))
+                                            // Skip the substream header length
+                                            pBuf  += 4;
+                                            ulLen -= 4;
+                                            // Set the return value
+                                            retVal = HXR_FAIL;
+                                            // Sanity check on the length. This prevents
+                                            // a malicious substream header length
+                                            if (ulSubStreamHdrLen <= ulLen)
                                             {
-                                                // Get the start time from the base audio format
-                                                // and set it into the decoder
-                                                m_ppWMAudioDecoder[i]->SetStartTime(GetStartTime());
-                                                // Go ahead and open the decoder. This will cause the
-                                                // codec to be loaded.
-                                                // XXXMEH - for performance reasons, we may want to 
-                                                // defer this until a packet is actually received
-                                                // on this substream. But for now, we'll go ahead
-                                                // and open it.
-                                                retVal = m_ppWMAudioDecoder[i]->Open();
-                                                // Did Open() return HXR_REQUEST_UPGRADE?
-                                                if (retVal == HXR_REQUEST_UPGRADE)
+                                                // Initialize the CWMAudioDecoder with the substream header.
+                                                // This only parses the substream header. It does not
+                                                // go ahead and load the IHXAudioDecoder
+                                                retVal = m_ppWMAudioDecoder[i]->Init(m_pContext, pBuf, ulSubStreamHdrLen,
+                                                                                    m_pStreamHdr, i, m_ulNumSubStreams);
+                                                if (SUCCEEDED(retVal))
                                                 {
-                                                    // This means that the CWMAudioDecoder object was not
-                                                    // able to load the dll containing the IHXAudioDecoder
-                                                    // or it was unable to initialize it. We should copy the
-                                                    // auto-upgrade string from the CWMAudioDecoder object
-                                                    // so that when we return HXR_REQUEST_UPGRADE to the
-                                                    // renderer it can then copy our auto-upgrade.
-                                                    SafeStrCpy(m_szAUStr, // m_szAUStr is from our parent class
-                                                            m_ppWMAudioDecoder[i]->GetAutoUpgradeString(),
-                                                            MAX_AUSTR_SIZE);
+                                                    // Get the start time from the base audio format
+                                                    // and set it into the decoder
+                                                    m_ppWMAudioDecoder[i]->SetStartTime(GetStartTime());
+                                                    // Go ahead and open the decoder. This will cause the
+                                                    // codec to be loaded.
+                                                    // XXXMEH - for performance reasons, we may want to 
+                                                    // defer this until a packet is actually received
+                                                    // on this substream. But for now, we'll go ahead
+                                                    // and open it.
+                                                    retVal = m_ppWMAudioDecoder[i]->Open();
+                                                    // Did Open() return HXR_REQUEST_UPGRADE?
+                                                    if (retVal == HXR_REQUEST_UPGRADE)
+                                                    {
+                                                        // This means that the CWMAudioDecoder object was not
+                                                        // able to load the dll containing the IHXAudioDecoder
+                                                        // or it was unable to initialize it. We should copy the
+                                                        // auto-upgrade string from the CWMAudioDecoder object
+                                                        // so that when we return HXR_REQUEST_UPGRADE to the
+                                                        // renderer it can then copy our auto-upgrade.
+                                                        SafeStrCpy(m_szAUStr, // m_szAUStr is from our parent class
+                                                                m_ppWMAudioDecoder[i]->GetAutoUpgradeString(),
+                                                                MAX_AUSTR_SIZE);
+                                                    }
                                                 }
+                                                // Increment the buffer counters
+                                                pBuf  += ulSubStreamHdrLen;
+                                                ulLen -= ulSubStreamHdrLen;
                                             }
-                                            // Increment the buffer counters
-                                            pBuf  += ulSubStreamHdrLen;
-                                            ulLen -= ulSubStreamHdrLen;
                                         }
                                     }
                                 }

Index: wmadecoder.cpp
===================================================================
RCS file: /cvsroot/datatype/wm/audio/renderer/wmadecoder.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- wmadecoder.cpp	30 Aug 2006 17:29:03 -0000	1.6
+++ wmadecoder.cpp	15 Nov 2006 15:10:33 -0000	1.7
@@ -323,6 +323,24 @@
     return retVal;
 }
 
+HX_RESULT CWMAudioDecoder::ParseWMAPacket(BYTE* pBuf, UINT32 ulBufLen,
+                                          BYTE* pucSequenceNum, BYTE* pucNumFramesInPacket)
+{
+    HX_RESULT retVal = HXR_FAIL;
+
+    if (pBuf && ulBufLen && pucSequenceNum && pucNumFramesInPacket)
+    {
+        // Parse the sequence number
+        *pucSequenceNum = (pBuf[0] & 0xF0) >> 4;
+        // Parse the number of frames in this WMA packet
+        *pucNumFramesInPacket = (pBuf[0] & 0x0F);
+        // Clear the return value
+        retVal = HXR_OK;
+    }
+
+    return retVal;
+}
+
 HX_RESULT CWMAudioDecoder::Close(void)
 {
     HX_RELEASE(m_pStreamHdr);
@@ -491,36 +509,10 @@
                 if (SUCCEEDED(retVal))
                 {
                     // Set WMA Pro and Lossless-related properties.
-                    // XXXMEH - we could have put these in the opaque data,
-                    // and if we think there will potentially be multi-rate
-                    // files that contain lossless streams, then we probably
-                    // should. But since lossless files almost always stand
-                    // on their own (NOT inside a multi-rate file), then
-                    // we will put these in the stream header.
-                    HX_ASSERT(m_ulNumSubStreams == 1);
-                    if (m_pStreamHdr)
-                    {
-                        UINT32 ulTmp = 0;
-                        if (SUCCEEDED(m_pStreamHdr->GetPropertyULONG32("DRCPeakReference", ulTmp)))
-                        {
-                            pConfig->SetPropertyULONG32("DRCPeakReference", ulTmp);
-                        }
-                        ulTmp = 0;
-                        if (SUCCEEDED(m_pStreamHdr->GetPropertyULONG32("DRCPeakTarget", ulTmp)))
-                        {
-                            pConfig->SetPropertyULONG32("DRCPeakTarget", ulTmp);
-                        }
-                        ulTmp = 0;
-                        if (SUCCEEDED(m_pStreamHdr->GetPropertyULONG32("DRCAverageReference", ulTmp)))
-                        {
-                            pConfig->SetPropertyULONG32("DRCAverageReference", ulTmp);
-                        }
-                        ulTmp = 0;
-                        if (SUCCEEDED(m_pStreamHdr->GetPropertyULONG32("DRCAverageTarget", ulTmp)))
-                        {
-                            pConfig->SetPropertyULONG32("DRCAverageTarget", ulTmp);
-                        }
-                    }
+                    CopySubStreamProperty(m_pStreamHdr, pConfig, "DRCPeakReference",    m_ulSubStreamIndex);
+                    CopySubStreamProperty(m_pStreamHdr, pConfig, "DRCPeakTarget",       m_ulSubStreamIndex);
+                    CopySubStreamProperty(m_pStreamHdr, pConfig, "DRCAverageReference", m_ulSubStreamIndex);
+                    CopySubStreamProperty(m_pStreamHdr, pConfig, "DRCAverageTarget",    m_ulSubStreamIndex);
                     // Set the context
                     retVal = pObjConfig->SetContext(pContext);
                     if (SUCCEEDED(retVal))
@@ -554,3 +546,27 @@
 
     return retVal;
 }
+
+HX_RESULT CWMAudioDecoder::CopySubStreamProperty(IHXValues* pStreamHdr, IHXValues* pConfig,
+                                                 const char* pszPropName, UINT32 ulSubStreamIndex)
+{
+    HX_RESULT retVal = HXR_FAIL;
+
+    if (pStreamHdr && pConfig && pszPropName)
+    {
+        // Create the substream property name
+        CHXString strSubStreamPropName(pszPropName);
+        strSubStreamPropName.AppendULONG(ulSubStreamIndex);
+        // If the property exists, then copy it (using the base name)
+        // to the pConfig output
+        UINT32 ulTmp = 0;
+        retVal = pStreamHdr->GetPropertyULONG32((const char*) strSubStreamPropName, ulTmp);
+        if (SUCCEEDED(retVal))
+        {
+            // Copy to the output IHXValues
+            retVal = pConfig->SetPropertyULONG32(pszPropName, ulTmp);
+        }
+    }
+
+    return retVal;
+}

Index: wmaformat.h
===================================================================
RCS file: /cvsroot/datatype/wm/audio/renderer/wmaformat.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- wmaformat.h	5 Jul 2006 14:49:56 -0000	1.3
+++ wmaformat.h	15 Nov 2006 15:10:33 -0000	1.4
@@ -64,6 +64,12 @@
     virtual ULONG32   GetDefaultPreroll(IHXValues* pValues);
     virtual HXBOOL    CanChangeAudioStream();
 protected:
+    struct SubStreamInfo
+    {
+        HXBOOL m_bFirstPacket;
+        BYTE   m_ucNextSequenceNum;
+    };
+
     CWMAudioRenderer* m_pWMAudioRenderer;
     CWMAudioDecoder** m_ppWMAudioDecoder;
     UINT32            m_ulNumSubStreams;
@@ -76,6 +82,7 @@
     HXBOOL            m_bNewAssembledFrame;
     HXBOOL            m_bSubStreamTransition;
     HXBOOL            m_bFirstDecodeAfterReset;
+    HXBOOL            m_bLastPacketWasLost;
     UINT32            m_ulMaxDecoderOutputSamples;
     UINT32            m_ulMaxDecoderOutputBytes;
     UINT32            m_ulAUDurationInSamples;
@@ -88,6 +95,7 @@
     UINT32            m_ulLastFrameTimeInSamples;
     UINT32            m_ulLastDecodedEndTimeInMs;
     IHXValues*        m_pStreamHdr;
+    SubStreamInfo*    m_pSubStreamInfo;
 
     // Protected methods overridden from base audio format
     virtual CMediaPacket* CreateAssembledPacket(IHXPacket* pCodecData);

Index: wmadecoder.h
===================================================================
RCS file: /cvsroot/datatype/wm/audio/renderer/wmadecoder.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- wmadecoder.h	5 Jul 2006 14:49:56 -0000	1.4
+++ wmadecoder.h	15 Nov 2006 15:10:33 -0000	1.5
@@ -69,6 +69,8 @@
     HX_RESULT   Close(void);
     HX_RESULT   SetStartTime(UINT32 ulTime);
     HX_RESULT   SetNextFrameTime(UINT32 ulTime);
+    HX_RESULT   ParseWMAPacket(BYTE* pBuf, UINT32 ulBufLen,
+                               BYTE* pucSequenceNum, BYTE* pucNumFramesInPacket);
     const char* GetAutoUpgradeString() { return (const char*) m_pszAutoUpgrade; }
     const char* GetCodecName()         { return (const char*) m_pszCodecName;   }
     const char* GetCodecFourCC()       { return (const char*) m_pszCodec4cc;    } 
@@ -96,6 +98,7 @@
     HX_RESULT         ConfigureAudioDecoder(IUnknown* pContext, const char* pszCodec4cc, IHXAudioDecoder* pDecoder);
     HX_RESULT         BuildOSSpecificDLLName(const char* psz4cc, char* pszNameBuf, UINT32 ulBufLen);
     virtual HX_RESULT CheckDecoder(IHXAudioDecoder* pAudioDecoder) { return HXR_OK; }
+    HX_RESULT         CopySubStreamProperty(IHXValues* pStreamHdr, IHXValues* pConfig, const char* pszPropName, UINT32 ulSubStreamIndex);
 };
 
 #endif /* #ifndef WMADECODER_H */


From ehyche at helixcommunity.org  Wed Nov 15 07:12:07 2006
From: ehyche at helixcommunity.org (ehyche@helixcommunity.org)
Date: Wed Nov 15 08:16:44 2006
Subject: [Datatype-cvs] wm/fileformat/pub asf_stream_hdr_utils.h,1.2,1.3
Message-ID: 

Update of /cvsroot/datatype/wm/fileformat/pub
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv23453/pub

Modified Files:
	asf_stream_hdr_utils.h 
Log Message:
Modified by: Eric Hyche (ehyche@real.com)
Reviewed by: Greg Wright (gwright@real.com)

Description
--------------------------------------------------
There are four properties in ASF headers which are associated
with dynamic range control (DRC) for WMA. Normally these properties
are most commonly used with WMA 9 Pro and WMA 9 Lossless. These
codecs are generally not found in multi-rate ASF files. Therefore,
when I first coded these properties to be communicated from stream
header to the WMA decoder, they were placed as ULONG32 properties
in the stream header ("DRCPeakReference", "DRCPeakTarget",
"DRCAverageReference", and "DRCAverageTarget").

However, I have since encountered multi-rate files with different
values for these DRC properties depending on which substream
is being used. Therefore, it is not accurate to set a single
value across all substreams for these DRC properties. I was alerted
to this by the presence of an HX_ASSERT(m_ulNumSubStreams == 1)
where I set these properties. Therefore, I change the properties
set into the stream header to be "DRCPeakReference0",
"DRCPeakReference1", etc. to refer to which WMA substream they
are associated with.

The attached diff file makes the changes above for public
code. There is a corresponding change in the RTSP fileformat
restricted code for network playback. This change is sent
separately.

Files Modified
--------------------------------------------------
datatype/wm/audio/renderer/wmadecoder.cpp
datatype/wm/audio/renderer/wmadecoder.h
datatype/wm/fileformat/asf_file_format_file.cpp
datatype/wm/fileformat/asf_stream_hdr_utils.cpp
datatype/wm/fileformat/pub/asf_stream_hdr_utils.h

Branches
--------------------------------------------------
HEAD and 150Cay



Index: asf_stream_hdr_utils.h
===================================================================
RCS file: /cvsroot/datatype/wm/fileformat/pub/asf_stream_hdr_utils.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- asf_stream_hdr_utils.h	16 Aug 2006 15:47:17 -0000	1.2
+++ asf_stream_hdr_utils.h	15 Nov 2006 15:12:05 -0000	1.3
@@ -41,8 +41,12 @@
 
 HX_RESULT HXASFSetASFFlags(IHXValues* pHdr, IUnknown* pContext, UINT16 usNumWMStreams);
 HX_RESULT HXASFSetMetadataObjectProperty(IHXValues* pHdr, const char* pszWMPropName,
-                                         const char* pszHXPropName, UINT16 usStreamNum,
+                                         const char* pszHXPropName, UINT16 usWMStreamNum,
                                          CHXASFMetadataObject* pObj, IUnknown* pContext);
+HX_RESULT HXASFSetMetadataObjectSubStreamProperty(IHXValues* pHdr, const char* pszWMPropName,
+                                                  const char* pszHXPropName, UINT16 usWMStreamNum,
+                                                  UINT16 usHXSubStreamNum, CHXASFMetadataObject* pObj,
+                                                  IUnknown* pContext);
 
 #define HX_MAXSTRLEN_UINT32  10  // strlen("4294967295") where 4294967295 is MAX_UINT32
 #define HX_MAXSTRLEN_UINT16   5  // strlen("65535") where 65535 is MAX_UINT16


From ehyche at helixcommunity.org  Wed Nov 15 07:12:07 2006
From: ehyche at helixcommunity.org (ehyche@helixcommunity.org)
Date: Wed Nov 15 08:16:44 2006
Subject: [Datatype-cvs] wm/fileformat asf_file_format_file.cpp, 1.7,
	1.8 asf_stream_hdr_utils.cpp, 1.3, 1.4
Message-ID: 

Update of /cvsroot/datatype/wm/fileformat
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv23453

Modified Files:
	asf_file_format_file.cpp asf_stream_hdr_utils.cpp 
Log Message:
Modified by: Eric Hyche (ehyche@real.com)
Reviewed by: Greg Wright (gwright@real.com)

Description
--------------------------------------------------
There are four properties in ASF headers which are associated
with dynamic range control (DRC) for WMA. Normally these properties
are most commonly used with WMA 9 Pro and WMA 9 Lossless. These
codecs are generally not found in multi-rate ASF files. Therefore,
when I first coded these properties to be communicated from stream
header to the WMA decoder, they were placed as ULONG32 properties
in the stream header ("DRCPeakReference", "DRCPeakTarget",
"DRCAverageReference", and "DRCAverageTarget").

However, I have since encountered multi-rate files with different
values for these DRC properties depending on which substream
is being used. Therefore, it is not accurate to set a single
value across all substreams for these DRC properties. I was alerted
to this by the presence of an HX_ASSERT(m_ulNumSubStreams == 1)
where I set these properties. Therefore, I change the properties
set into the stream header to be "DRCPeakReference0",
"DRCPeakReference1", etc. to refer to which WMA substream they
are associated with.

The attached diff file makes the changes above for public
code. There is a corresponding change in the RTSP fileformat
restricted code for network playback. This change is sent
separately.

Files Modified
--------------------------------------------------
datatype/wm/audio/renderer/wmadecoder.cpp
datatype/wm/audio/renderer/wmadecoder.h
datatype/wm/fileformat/asf_file_format_file.cpp
datatype/wm/fileformat/asf_stream_hdr_utils.cpp
datatype/wm/fileformat/pub/asf_stream_hdr_utils.h

Branches
--------------------------------------------------
HEAD and 150Cay



Index: asf_stream_hdr_utils.cpp
===================================================================
RCS file: /cvsroot/datatype/wm/fileformat/asf_stream_hdr_utils.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- asf_stream_hdr_utils.cpp	30 Aug 2006 17:29:03 -0000	1.3
+++ asf_stream_hdr_utils.cpp	15 Nov 2006 15:12:05 -0000	1.4
@@ -41,6 +41,7 @@
 #include "pckunpck.h"
 #include "asf_stream_hdr_utils.h"
 #include "parse_asf_objects.h"
+#include "hxstring.h"
 #include "hlxosstr.h"
 
 HX_RESULT HXASFSetASFFlags(IHXValues* pHdr, IUnknown* pContext, UINT16 usNumWMStreams)
@@ -103,7 +104,7 @@
 }
 
 HX_RESULT HXASFSetMetadataObjectProperty(IHXValues* pHdr, const char* pszWMPropName, const char* pszHXPropName,
-                                         UINT16 usStreamNum, CHXASFMetadataObject* pObj, IUnknown* pContext)
+                                         UINT16 usWMStreamNum, CHXASFMetadataObject* pObj, IUnknown* pContext)
 {
     HX_RESULT retVal = HXR_FAIL;
 
@@ -119,7 +120,8 @@
         for (i = 0; i < pObj->m_usDescriptionRecordsCount; i++)
         {
             if (pObj->m_pDescriptionRecord[i].m_pszName &&
-                !strcmp(pszWMPropName, pObj->m_pDescriptionRecord[i].m_pszName))
+                !strcmp(pszWMPropName, pObj->m_pDescriptionRecord[i].m_pszName) &&
+                pObj->m_pDescriptionRecord[i].m_usStreamNumber == usWMStreamNum)
             {
                 switch (pObj->m_pDescriptionRecord[i].m_usDataType)
                 {
@@ -173,3 +175,23 @@
     return retVal;
 }
 
+HX_RESULT HXASFSetMetadataObjectSubStreamProperty(IHXValues* pHdr, const char* pszWMPropName,
+                                                  const char* pszHXPropName, UINT16 usWMStreamNum,
+                                                  UINT16 usHXSubStreamNum, CHXASFMetadataObject* pObj,
+                                                  IUnknown* pContext)
+{
+    HX_RESULT retVal = HXR_FAIL;
+
+    if (pszHXPropName)
+    {
+        // Create the substream property name
+        CHXString strPropName(pszHXPropName);
+        strPropName.AppendULONG((UINT32) usHXSubStreamNum);
+        // Pass this on to HXASFSetMetadataObjectProperty with the
+        // updated HX property name
+        retVal = HXASFSetMetadataObjectProperty(pHdr, pszWMPropName, (const char*) strPropName,
+                                                usWMStreamNum, pObj, pContext);
+    }
+
+    return retVal;
+}

Index: asf_file_format_file.cpp
===================================================================
RCS file: /cvsroot/datatype/wm/fileformat/asf_file_format_file.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- asf_file_format_file.cpp	8 Nov 2006 17:05:46 -0000	1.7
+++ asf_file_format_file.cpp	15 Nov 2006 15:12:05 -0000	1.8
@@ -2794,6 +2794,7 @@
             case HX_ASF_Audio_Stream:
                 {
                     // Get the channels, sample rate, and bits per sample for the first WM stream
+                    UINT16 i               = 0;
                     UINT16 usChannels      = 0;
                     UINT32 ulSamplesPerSec = 0;
                     UINT16 usBitsPerSample = 0;
@@ -2803,7 +2804,7 @@
                     if (SUCCEEDED(retVal))
                     {
                         // Now compare these values to all the rest of the streams.
-                        for (UINT16 i = 1; i < m_pStreamInfo[usHXStreamNum].m_usNumWMStreams && SUCCEEDED(retVal); i++)
+                        for (i = 1; i < m_pStreamInfo[usHXStreamNum].m_usNumWMStreams && SUCCEEDED(retVal); i++)
                         {
                             UINT16 usOtherChannels      = 0;
                             UINT32 ulOtherSamplesPerSec = 0;
@@ -2833,18 +2834,38 @@
                     // Do we have a metadata object?
                     if (m_pMetadataObject)
                     {
-                        HXASFSetMetadataObjectProperty(pHdr, "WM/WMADRCPeakReference", "DRCPeakReference",
-                                                       m_pStreamInfo[usHXStreamNum].m_pWMStreamInfo[0].m_usWMStreamNumber,
-                                                       m_pMetadataObject, m_pContext);
-                        HXASFSetMetadataObjectProperty(pHdr, "WM/WMADRCPeakTarget", "DRCPeakTarget",
-                                                       m_pStreamInfo[usHXStreamNum].m_pWMStreamInfo[0].m_usWMStreamNumber,
-                                                       m_pMetadataObject, m_pContext);
-                        HXASFSetMetadataObjectProperty(pHdr, "WM/WMADRCAverageReference", "DRCAverageReference",
-                                                       m_pStreamInfo[usHXStreamNum].m_pWMStreamInfo[0].m_usWMStreamNumber,
-                                                       m_pMetadataObject, m_pContext);
-                        HXASFSetMetadataObjectProperty(pHdr, "WM/WMADRCAverageTarget", "DRCAverageTarget",
-                                                       m_pStreamInfo[usHXStreamNum].m_pWMStreamInfo[0].m_usWMStreamNumber,
-                                                       m_pMetadataObject, m_pContext);
+                        // Loop through the substreams and set the DRC properties
+                        for (i = 0; i < m_pStreamInfo[usHXStreamNum].m_usNumWMStreams; i++)
+                        {
+                            HXASFSetMetadataObjectSubStreamProperty(pHdr,
+                                                                    "WM/WMADRCPeakReference",
+                                                                    "DRCPeakReference",
+                                                                    m_pStreamInfo[usHXStreamNum].m_pWMStreamInfo[i].m_usWMStreamNumber,
+                                                                    i,
+                                                                    m_pMetadataObject,
+                                                                    m_pContext);
+                            HXASFSetMetadataObjectSubStreamProperty(pHdr,
+                                                                    "WM/WMADRCPeakTarget",
+                                                                    "DRCPeakTarget",
+                                                                    m_pStreamInfo[usHXStreamNum].m_pWMStreamInfo[i].m_usWMStreamNumber,
+                                                                    i,
+                                                                    m_pMetadataObject,
+                                                                    m_pContext);
+                            HXASFSetMetadataObjectSubStreamProperty(pHdr,
+                                                                    "WM/WMADRCAverageReference",
+                                                                    "DRCAverageReference",
+                                                                    m_pStreamInfo[usHXStreamNum].m_pWMStreamInfo[i].m_usWMStreamNumber,
+                                                                    i,
+                                                                    m_pMetadataObject,
+                                                                    m_pContext);
+                            HXASFSetMetadataObjectSubStreamProperty(pHdr,
+                                                                    "WM/WMADRCAverageTarget",
+                                                                    "DRCAverageTarget",
+                                                                    m_pStreamInfo[usHXStreamNum].m_pWMStreamInfo[i].m_usWMStreamNumber,
+                                                                    i,
+                                                                    m_pMetadataObject,
+                                                                    m_pContext);
+                        }
                     }
                 }
                 break;


From rrajesh at helixcommunity.org  Wed Nov 15 12:13:44 2006
From: rrajesh at helixcommunity.org (rrajesh@helixcommunity.org)
Date: Wed Nov 15 13:18:21 2006
Subject: [Datatype-cvs] xps/test CXPSRTPPktFlReader.cpp, NONE,
	1.1 CXPSRTPPktFlReader.h, NONE, 1.1 CXPSRtpFlSrc.cpp, NONE,
	1.1 CXPSRtpFlSrc.h, NONE, 1.1 XPSRtpFlSrcLib, NONE,
	1.1 Umakefil, 1.1.1.1, 1.2
Message-ID: 

Update of /cvsroot/datatype/xps/test
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv24926

Modified Files:
	Umakefil 
Added Files:
	CXPSRTPPktFlReader.cpp CXPSRTPPktFlReader.h CXPSRtpFlSrc.cpp 
	CXPSRtpFlSrc.h XPSRtpFlSrcLib 
Log Message:
"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:  rajesh.rathinasamy@nokia.com
> 
> 	Reviewed by: 
> 
> 	Date: 02-Nov-2006. 
> 
> 	Project: SymbianMmf
> 
> 	ErrorId: ** New Featue **
> 
> 	Synopsis:  CR: Symbian XPS test library
> 
> 	        The test library is a sample use case for the XPSPacketSink. 
> It reads the RTP packets and header (only required headers are dumped) 
> from a file and supplies to the packet sink.
> 
> 	I will send out a standalone test app soon which gives a complete 
> usage of CVideoPlayer utility and XPSPacketSink.
> 
> 	Also attaching a sample hdr file. Payload file contains RTP payload 
> dump.
> 
> 	Files Modified: 
> 	=========== 
> 	Datatype\xps\test\umakefil
> 
> 	Files Added: 
> 	========== 
> 	Datatype\xps\test\CXPSRtpFlSrc.h 
> 	Datatype\xps\test\CXPSRtpFlSrc.cpp 
> 	Datatype\xps\test\CXPSRTPPktFlReader.h 
> 	Datatype\xps\test\CXPSRTPPktFlReader.cpp
> 
> 	Image Size and Heap Use impact: no major impact
> 
> 	Platforms and Profiles Build Verified: 
> helix-client-s60-mmf-mdf-arm
> 
> 	Platforms and Profiles Functionality verified: armv5, winscw
> 
>      Branch: Helix, 210CayS
> 


--- NEW FILE: XPSRtpFlSrcLib ---
# 
#  ***** BEGIN LICENSE BLOCK *****  
#   
#  Source last modified: $Id: XPSRtpFlSrcLib,v 1.1 2006/11/15 20:13:41 rrajesh Exp $ 
#   
#  Copyright Notices: 
#   
#  Portions Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved. 
#   
#  Patent Notices: This file may contain technology protected by one or  
#  more of the patents listed at www.helixcommunity.org 
#   
#  1.   The contents of this file, and the files included with this file, 
#  are protected by copyright controlled by RealNetworks and its  
#  licensors, and made available by RealNetworks subject to the current  
#  version of the RealNetworks Public Source License (the "RPSL")  
#  available at  * http://www.helixcommunity.org/content/rpsl unless  
#  you have licensed the file under the current version of the  
#  RealNetworks Community Source License (the "RCSL") available at 
#  http://www.helixcommunity.org/content/rcsl, in which case the RCSL 
#  will apply.  You may also obtain the license terms directly from 
#  RealNetworks.  You may not use this file except in compliance with 
#  the RPSL or, if you have a valid RCSL with RealNetworks applicable 
#  to this file, the RCSL.  Please see the applicable RPSL or RCSL for 
#  the rights, obligations and limitations governing use of the 
#  contents of the file. 
#   
#  2.  Alternatively, the contents of this file may be used under the 
#  terms of the GNU General Public License Version 2 (the 
#  "GPL") in which case the provisions of the GPL are applicable 
#  instead of those above.  Please note that RealNetworks and its  
#  licensors disclaim any implied patent license under the GPL.   
#  If you wish to allow use of your version of this file only under  
#  the terms of the GPL, and not to allow others 
#  to use your version of this file under the terms of either the RPSL 
#  or RCSL, indicate your decision by deleting Paragraph 1 above 
#  and replace them with the notice and other provisions required by 
#  the GPL. If you do not delete Paragraph 1 above, a recipient may 
#  use your version of this file under the terms of any one of the 
#  RPSL, the RCSL or the GPL. 
#   
#  This file is part of the Helix DNA Technology.  RealNetworks is the 
#  developer of the Original Code and owns the copyrights in the 
#  portions it created.   Copying, including reproducing, storing,  
#  adapting or translating, any or all of this material other than  
#  pursuant to the license terms referred to above requires the prior  
#  written consent of RealNetworks and its licensors 
#   
#  This file, and the files included with this file, is distributed 
#  and made available by RealNetworks on an 'AS IS' basis, WITHOUT  
#  WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS  
#  AND ITS LICENSORS HEREBY DISCLAIM  ALL SUCH WARRANTIES, INCLUDING  
#  WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS  
#  FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
#   
#  Technology Compatibility Kit Test Suite(s) Location:  
#     http://www.helixcommunity.org/content/tck 
#   
# Contributor(s): Nokia Inc
# 
# ***** END LICENSE BLOCK *****
#

UmakefileVersion(2,2)

project.AddModuleIncludes('datatype/xps/packetsink')

project.AddSources("CXPSRtpFlSrc.cpp")
project.AddSources("CXPSRtpPktFlReader.cpp")


LibraryTarget('XPSRtpFlSrcLib')

DependTarget()

--- NEW FILE: CXPSRtpFlSrc.h ---
/* ***** BEGIN LICENSE BLOCK *****
 *
 * Version: $Id: CXPSRtpFlSrc.h,v 1.1 2006/11/15 20:13:41 rrajesh Exp $
 * 
 * Copyright Notices: 
 *  
 * Portions Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved. 
 *  
 * Patent Notices: This file may contain technology protected by one or  
 * more of the patents listed at www.helixcommunity.org 
 *  
 * 1.   The contents of this file, and the files included with this file, 
 * are protected by copyright controlled by RealNetworks and its  
 * licensors, and made available by RealNetworks subject to the current  
 * version of the RealNetworks Public Source License (the "RPSL")  
 * available at  http://www.helixcommunity.org/content/rpsl unless  
 * you have licensed the file under the current version of the  
 * RealNetworks Community Source License (the "RCSL") available at 
 * http://www.helixcommunity.org/content/rcsl, in which case the RCSL 
 * will apply.  You may also obtain the license terms directly from 
 * RealNetworks.  You may not use this file except in compliance with 
 * the RPSL or, if you have a valid RCSL with RealNetworks applicable 
 * to this file, the RCSL.  Please see the applicable RPSL or RCSL for 
 * the rights, obligations and limitations governing use of the 
 * contents of the file. 
 *  
 * 2.  Alternatively, the contents of this file may be used under the 
 * terms of the GNU General Public License Version 2 (the 
 * "GPL") in which case the provisions of the GPL are applicable 
 * instead of those above.  Please note that RealNetworks and its  
 * licensors disclaim any implied patent license under the GPL.   
 * If you wish to allow use of your version of this file only under  
 * the terms of the GPL, and not to allow others 
 * to use your version of this file under the terms of either the RPSL 
 * or RCSL, indicate your decision by deleting Paragraph 1 above 
 * and replace them with the notice and other provisions required by 
 * the GPL. If you do not delete Paragraph 1 above, a recipient may 
 * use your version of this file under the terms of any one of the 
 * RPSL, the RCSL or the GPL. 
 *  
 * This file is part of the Helix DNA Technology.  RealNetworks is the 
 * developer of the Original Code and owns the copyrights in the 
 * portions it created.   Copying, including reproducing, storing,  
 * adapting or translating, any or all of this material other than  
 * pursuant to the license terms referred to above requires the prior  
 * written consent of RealNetworks and its licensors 
 *  
 * This file, and the files included with this file, is distributed 
 * and made available by RealNetworks on an 'AS IS' basis, WITHOUT  
 * WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS  
 * AND ITS LICENSORS HEREBY DISCLAIM  ALL SUCH WARRANTIES, INCLUDING  
 * WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS  
 * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
 *  
 * Technology Compatibility Kit Test Suite(s) Location:  
 *    http://www.helixcommunity.org/content/tck 
 * 
 * Contributors: Nokia Inc
 *
 *
 * ***** END LICENSE BLOCK ***** */

#ifndef __CXPSRTPFLSRC_H__
#define __CXPSRTPFLSRC_H__

#include 
#include "CXPSRtpPktFlReader.h"
#include "CXPSPacketSink.h"
#include "CXPSPktSinkObserver.h"

// Forward Declaration
class CXPSRtpFlSrc;
class MXPSPktSinkObserver;


#define MAX_SUB_SESSION 3
#define MAX_STREAM_CNT  2
#define MAX_BUFF_LEN    2048

class CXPSRtpFlStream
{
public:
    CXPSRtpFlStream();
    ~CXPSRtpFlStream();

    TInt Init(CXPSPacketSink* pXPSPktSupplier, char* strRTPDirName, 
                TUint uStreamId);

    void StartPktSupply();
    void RestorePktSupply();

    void PushMultiplePackets();
    TInt PushOnePacket();

    void HandleCallBack();

    void StopPktSupply();

    void ResetStream();

    // Used to create a Re-loading scenario
    void PausePacketSupply() {m_bPktSupplyPaused = true;}
    void ResumePacketSupply();

    void SetPktLossPercentage(TUint ulPercentage);
    void SetPktReorderInterval(TUint ulPktReorderInterval);
    
    


private:
    void Close();

private:
    CXPSRTPPktFlReader m_RTPFlPktReader;

    TUint           m_uStreamId;
    TUint           m_umsPktInterval;
    // The following flag indicates the packet
    // sinks q status. Flag will be turned on when 
    // overflow error is returned by packet sink
    TBool           m_bSuspendPktSupply;

    
    CPeriodic*         m_pPeriodicTimer;
    CXPSPacketSink*    m_pXPSPacketSink;

    TUint           m_ulCurrTime;
    char           m_strFileName[FILE_NAME_LEN];
    
    // the following variable is used to simulate the 
    // reloading case. This flag is controlled by test app
    TBool           m_bPktSupplyPaused;

    TUint           m_ulPktDropInterval;
    TUint           m_ulPktCntr;
    TUint           m_ulPktReorderInterval;

};

class CXPSRtpFlSrc: public MXPSPktSinkObserver
{
public:
    CXPSRtpFlSrc();
    ~CXPSRtpFlSrc();

    TInt Init(char* strDir, TCapability aCap = ECapability_None, 
            TInt lPktLossPercentage = 0, TInt lPacketReorderCnt= 0);

    
    void StartPlayback();
    void StopPlayback();
    TInt SwitchSource();
    void Reset();
 
    // Used to create a Re-loading scenario
    void PausePacketSupply();
    void ResumePacketSupply();
    TBool IsPacketSupplyPaused() {return m_bPktSupplyPaused;}

    // 
    // MXPSPacketSinkObserver
    //
    void RestorePacketSupply(TUint uStreamId);

private:

    void DeleteSubSessions();
    

    
    CXPSPacketSink*    m_pXPSPacketSink;
    
    
    TUint                    m_uStreamCnt;
    TUint                    m_uSubSessionCnt;
    TUint                    m_uCurrSubSessionIndex;
    CXPSRtpFlStream*         m_arrRtpFlStrms[MAX_SUB_SESSION];
    TBool                    m_bPktSupplyPaused;
    
};





#endif // End of __CXPSRTPFLSRC_H__

--- NEW FILE: CXPSRTPPktFlReader.h ---
/* ***** BEGIN LICENSE BLOCK *****
 *
 * Version: $Id: CXPSRTPPktFlReader.h,v 1.1 2006/11/15 20:13:41 rrajesh Exp $
 * 
 * Copyright Notices: 
 *  
 * Portions Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved. 
 *  
 * Patent Notices: This file may contain technology protected by one or  
 * more of the patents listed at www.helixcommunity.org 
 *  
 * 1.   The contents of this file, and the files included with this file, 
 * are protected by copyright controlled by RealNetworks and its  
 * licensors, and made available by RealNetworks subject to the current  
 * version of the RealNetworks Public Source License (the "RPSL")  
 * available at  http://www.helixcommunity.org/content/rpsl unless  
 * you have licensed the file under the current version of the  
 * RealNetworks Community Source License (the "RCSL") available at 
 * http://www.helixcommunity.org/content/rcsl, in which case the RCSL 
 * will apply.  You may also obtain the license terms directly from 
 * RealNetworks.  You may not use this file except in compliance with 
 * the RPSL or, if you have a valid RCSL with RealNetworks applicable 
 * to this file, the RCSL.  Please see the applicable RPSL or RCSL for 
 * the rights, obligations and limitations governing use of the 
 * contents of the file. 
 *  
 * 2.  Alternatively, the contents of this file may be used under the 
 * terms of the GNU General Public License Version 2 (the 
 * "GPL") in which case the provisions of the GPL are applicable 
 * instead of those above.  Please note that RealNetworks and its  
 * licensors disclaim any implied patent license under the GPL.   
 * If you wish to allow use of your version of this file only under  
 * the terms of the GPL, and not to allow others 
 * to use your version of this file under the terms of either the RPSL 
 * or RCSL, indicate your decision by deleting Paragraph 1 above 
 * and replace them with the notice and other provisions required by 
 * the GPL. If you do not delete Paragraph 1 above, a recipient may 
 * use your version of this file under the terms of any one of the 
 * RPSL, the RCSL or the GPL. 
 *  
 * This file is part of the Helix DNA Technology.  RealNetworks is the 
 * developer of the Original Code and owns the copyrights in the 
 * portions it created.   Copying, including reproducing, storing,  
 * adapting or translating, any or all of this material other than  
 * pursuant to the license terms referred to above requires the prior  
 * written consent of RealNetworks and its licensors 
 *  
 * This file, and the files included with this file, is distributed 
 * and made available by RealNetworks on an 'AS IS' basis, WITHOUT  
 * WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS  
 * AND ITS LICENSORS HEREBY DISCLAIM  ALL SUCH WARRANTIES, INCLUDING  
 * WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS  
 * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
 *  
 * Technology Compatibility Kit Test Suite(s) Location:  
 *    http://www.helixcommunity.org/content/tck 
 * 
 * Contributors: Nokia Inc
 *
 *
 * ***** END LICENSE BLOCK ***** */

#ifndef __XPS_PACKETFILEREADER_H__
#define __XPS_PACKETFILEREADER_H__

#include 
#include 


class TRtpRecvHeader;

#define FILE_READ_BUFF_SIZE   1024
#define RTP_PYLD_SIZE         2048
#define FILE_NAME_LEN         250

class CXPSRTPPktFlReader
{
public: 
    
    TUint GetRTPPacket(TRtpRecvHeader &RtpHdr, TUint8* &Pyld);
    void Init(char* strFile, unsigned int uStreamIdx);
    TInt Init(char* strFile);
	void Close();
    CXPSRTPPktFlReader();
    ~CXPSRTPPktFlReader();
    
private:
    FILE* m_pRTPHdrFile;
    FILE* m_pRTPPyldFile; 
    
    unsigned char* m_pPayload;
    char*  m_FlReadBuffer;
    char m_strTemp[32]; 
   
};


#endif // End of #ifndef __XPS_PACKETFILEREADER_H__

--- NEW FILE: CXPSRTPPktFlReader.cpp ---
/* ***** BEGIN LICENSE BLOCK *****
 *
 * Version: $Id: CXPSRTPPktFlReader.cpp,v 1.1 2006/11/15 20:13:41 rrajesh Exp $
 * 
 * Copyright Notices: 
 *  
 * Portions Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved. 
 *  
 * Patent Notices: This file may contain technology protected by one or  
 * more of the patents listed at www.helixcommunity.org 
 *  
 * 1.   The contents of this file, and the files included with this file, 
 * are protected by copyright controlled by RealNetworks and its  
 * licensors, and made available by RealNetworks subject to the current  
 * version of the RealNetworks Public Source License (the "RPSL")  
 * available at  http://www.helixcommunity.org/content/rpsl unless  
 * you have licensed the file under the current version of the  
 * RealNetworks Community Source License (the "RCSL") available at 
 * http://www.helixcommunity.org/content/rcsl, in which case the RCSL 
 * will apply.  You may also obtain the license terms directly from 
 * RealNetworks.  You may not use this file except in compliance with 
 * the RPSL or, if you have a valid RCSL with RealNetworks applicable 
 * to this file, the RCSL.  Please see the applicable RPSL or RCSL for 
 * the rights, obligations and limitations governing use of the 
 * contents of the file. 
 *  
 * 2.  Alternatively, the contents of this file may be used under the 
 * terms of the GNU General Public License Version 2 (the 
 * "GPL") in which case the provisions of the GPL are applicable 
 * instead of those above.  Please note that RealNetworks and its  
 * licensors disclaim any implied patent license under the GPL.   
 * If you wish to allow use of your version of this file only under  
 * the terms of the GPL, and not to allow others 
 * to use your version of this file under the terms of either the RPSL 
 * or RCSL, indicate your decision by deleting Paragraph 1 above 
 * and replace them with the notice and other provisions required by 
 * the GPL. If you do not delete Paragraph 1 above, a recipient may 
 * use your version of this file under the terms of any one of the 
 * RPSL, the RCSL or the GPL. 
 *  
 * This file is part of the Helix DNA Technology.  RealNetworks is the 
 * developer of the Original Code and owns the copyrights in the 
 * portions it created.   Copying, including reproducing, storing,  
 * adapting or translating, any or all of this material other than  
 * pursuant to the license terms referred to above requires the prior  
 * written consent of RealNetworks and its licensors 
 *  
 * This file, and the files included with this file, is distributed 
 * and made available by RealNetworks on an 'AS IS' basis, WITHOUT  
 * WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS  
 * AND ITS LICENSORS HEREBY DISCLAIM  ALL SUCH WARRANTIES, INCLUDING  
 * WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS  
 * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
 *  
 * Technology Compatibility Kit Test Suite(s) Location:  
 *    http://www.helixcommunity.org/content/tck 
 * 
 * Contributors: Nokia Inc
 *
 *
 * ***** END LICENSE BLOCK ***** */


#include "CXPSRTPPktFlReader.h"
#include 


CXPSRTPPktFlReader::CXPSRTPPktFlReader()
{
    m_pRTPHdrFile= m_pRTPPyldFile = NULL;
    m_FlReadBuffer = NULL;
    m_pPayload = NULL;

}

CXPSRTPPktFlReader::~CXPSRTPPktFlReader()
{
	Close();
}

void CXPSRTPPktFlReader::Close()
{
	if(m_pRTPHdrFile)
	{
		::fclose(m_pRTPHdrFile);
	}
	if(m_pRTPPyldFile)
	{
		::fclose(m_pRTPPyldFile);
	}

	m_pRTPHdrFile= m_pRTPPyldFile = NULL;
	
    delete [] m_pPayload;
    m_pPayload = NULL;

	delete [] m_FlReadBuffer;
    m_FlReadBuffer = NULL;
}

TInt CXPSRTPPktFlReader::Init(char* strFile)
{
    TInt lRetval = KErrNone;
    char* strIdxFileName = new char[FILE_NAME_LEN];
    char* strDatFileName = new char[FILE_NAME_LEN];
    
    if( (strIdxFileName != NULL) &&
        (strDatFileName != NULL) )
    {
        
        sprintf(strIdxFileName, "%s.hdr", strFile);
        sprintf(strDatFileName, "%s.pyld", strFile);
        
        Close();
        
        m_pRTPHdrFile = ::fopen(strIdxFileName, "r");
        m_pRTPPyldFile = ::fopen(strDatFileName, "rb");
        
        if( (m_pRTPHdrFile != NULL) && (m_pRTPPyldFile != NULL) )
        {
            
            m_FlReadBuffer = new char[FILE_READ_BUFF_SIZE];
            m_pPayload     = new unsigned char[RTP_PYLD_SIZE];
            
        }
        else
        {
            lRetval = KErrNotFound;
        }
    }
    else
    {
        lRetval = KErrNoMemory;
    }
    delete [] strIdxFileName;
    delete [] strDatFileName;
    
    return lRetval;
}

TUint CXPSRTPPktFlReader::GetRTPPacket(TRtpRecvHeader &RtpHdr, TUint8*& Pyld)
{
    //read a line from the hdr file:
    //StreamNo= 0 Seq= 29037 sz= 875 ts= 0 mkr= 1

    int streamNumber = 0;
    unsigned long seq = 0;
    unsigned long timestamp = 0;
    int packetSize = 0;
	int marker = 0;

    if((m_pRTPHdrFile == NULL) || (m_pRTPPyldFile == NULL))
    {
        // Error
        return 0;
    }
    
    if( ::fgets(m_FlReadBuffer,FILE_READ_BUFF_SIZE , m_pRTPHdrFile) )
    {
        sscanf(m_FlReadBuffer, "%s %d %s %d %s %d %s %d %s %d", &m_strTemp, &streamNumber,
            &m_strTemp, &seq,
            &m_strTemp, & packetSize,
            &m_strTemp, ×tamp, &m_strTemp, &marker);

        int bytesRead = 0;
        int readOffset = 0;
        while ( bytesRead < packetSize)
        {
            int left = packetSize - bytesRead;

            bytesRead += ::fread(m_pPayload + readOffset ,sizeof(char), left , m_pRTPPyldFile);

        }

	    Pyld = new TUint8[packetSize];

        // Update RTP Headers
        RtpHdr.iTimestamp = timestamp;
        RtpHdr.iSeqNum = seq;
        RtpHdr.iMarker = marker;

        memcpy(Pyld, m_pPayload, packetSize);
        
        return packetSize;
    }
    else
    {
        //EOF :: NO MORE PACKETS
        Pyld = NULL;
   }

    return 0;
}

--- NEW FILE: CXPSRtpFlSrc.cpp ---
/* ***** BEGIN LICENSE BLOCK *****
 *
 * Version: $Id: CXPSRtpFlSrc.cpp,v 1.1 2006/11/15 20:13:41 rrajesh Exp $
 * 
 * Copyright Notices: 
 *  
 * Portions Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved. 
 *  
 * Patent Notices: This file may contain technology protected by one or  
 * more of the patents listed at www.helixcommunity.org 
 *  
 * 1.   The contents of this file, and the files included with this file, 
 * are protected by copyright controlled by RealNetworks and its  
 * licensors, and made available by RealNetworks subject to the current  
 * version of the RealNetworks Public Source License (the "RPSL")  
 * available at  http://www.helixcommunity.org/content/rpsl unless  
 * you have licensed the file under the current version of the  
 * RealNetworks Community Source License (the "RCSL") available at 
 * http://www.helixcommunity.org/content/rcsl, in which case the RCSL 
 * will apply.  You may also obtain the license terms directly from 
 * RealNetworks.  You may not use this file except in compliance with 
 * the RPSL or, if you have a valid RCSL with RealNetworks applicable 
 * to this file, the RCSL.  Please see the applicable RPSL or RCSL for 
 * the rights, obligations and limitations governing use of the 
 * contents of the file. 
 *  
 * 2.  Alternatively, the contents of this file may be used under the 
 * terms of the GNU General Public License Version 2 (the 
 * "GPL") in which case the provisions of the GPL are applicable 
 * instead of those above.  Please note that RealNetworks and its  
 * licensors disclaim any implied patent license under the GPL.   
 * If you wish to allow use of your version of this file only under  
 * the terms of the GPL, and not to allow others 
 * to use your version of this file under the terms of either the RPSL 
 * or RCSL, indicate your decision by deleting Paragraph 1 above 
 * and replace them with the notice and other provisions required by 
 * the GPL. If you do not delete Paragraph 1 above, a recipient may 
 * use your version of this file under the terms of any one of the 
 * RPSL, the RCSL or the GPL. 
 *  
 * This file is part of the Helix DNA Technology.  RealNetworks is the 
 * developer of the Original Code and owns the copyrights in the 
 * portions it created.   Copying, including reproducing, storing,  
 * adapting or translating, any or all of this material other than  
 * pursuant to the license terms referred to above requires the prior  
 * written consent of RealNetworks and its licensors 
 *  
 * This file, and the files included with this file, is distributed 
 * and made available by RealNetworks on an 'AS IS' basis, WITHOUT  
 * WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS  
 * AND ITS LICENSORS HEREBY DISCLAIM  ALL SUCH WARRANTIES, INCLUDING  
 * WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS  
 * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
 *  
 * Technology Compatibility Kit Test Suite(s) Location:  
 *    http://www.helixcommunity.org/content/tck 
 * 
 * Contributors: Nokia Inc
 *
 *
 * ***** END LICENSE BLOCK ***** */


#include "CXPSRtpFlSrc.h"
#include "CXPSPacketSink.h"
#include 
#include 
#include 
#include 
#include 


#define SDP_FILE_NAME   "sdp.xps"
_LIT(kMyTestXPSServer, "XPSServer");

TInt HandlePeriodicCallback_(TAny* p)
{
    CXPSRtpFlStream* pRtpFlStream = (CXPSRtpFlStream*) p;
    pRtpFlStream->HandleCallBack();
}



CXPSRtpFlSrc::CXPSRtpFlSrc()
{
    m_pXPSPacketSink = NULL;
    m_uStreamCnt = 0;
    m_uSubSessionCnt = 0;
    m_uCurrSubSessionIndex = 0;
    m_bPktSupplyPaused = false;
     
    TInt lIndex;
    for(lIndex = 0; lIndex < MAX_SUB_SESSION; lIndex++)
    {
        m_arrRtpFlStrms[lIndex] = NULL;
    }
 
}

CXPSRtpFlSrc::~CXPSRtpFlSrc()
{
    if(m_pXPSPacketSink)
    {
        delete m_pXPSPacketSink;
        m_pXPSPacketSink = NULL;
    }

    DeleteSubSessions();

}

void CXPSRtpFlSrc::DeleteSubSessions()
{
    TInt lIndex;
    for(lIndex = 0; lIndex < MAX_SUB_SESSION; lIndex++)
    {
        if(m_arrRtpFlStrms[lIndex] != NULL)
        {
            delete [] m_arrRtpFlStrms[lIndex];
            m_arrRtpFlStrms[lIndex] = NULL;
        }
    }
}


TInt CXPSRtpFlSrc::Init(char* strDir, TCapability aCap, 
                        TInt lPktLossPercentage, TInt lPktReorderInterval)
{
    TInt lRetval = KErrNotFound;
    
    if(strDir != NULL)
    {
        char*   strXPSFileName  = new char[FILE_NAME_LEN];
        char*   strBuffer       = new char[MAX_BUFF_LEN];
        char*   strRTPDataDir   = new char[FILE_NAME_LEN];
        HBufC8* pSDPInfo        = HBufC8::New(MAX_BUFF_LEN);
        
        if( (strXPSFileName != NULL) &&
            (strBuffer != NULL) &&
            (strRTPDataDir != NULL) &&
            (pSDPInfo != NULL) )
        {
            
            strcpy(strXPSFileName, strDir);
            strcat(strXPSFileName, SDP_FILE_NAME);
            
            TPtr8 ptr = pSDPInfo->Des();
            memset(strBuffer, '\0', MAX_BUFF_LEN);
            FILE* fptr = fopen(strXPSFileName, "r");
            if(fptr != NULL)
            {
                TInt lIndex;
                fread(strBuffer, 1, MAX_BUFF_LEN, fptr);
                fclose(fptr);
                ptr.Copy((TUint8*) strBuffer, strlen(strBuffer));
                
                m_pXPSPacketSink = CXPSPacketSink::New();
                
                
                m_pXPSPacketSink->Init(kMyTestXPSServer, this);
                
                TSecurityPolicy security_policy(aCap);
                m_pXPSPacketSink->AuthenticateClient(security_policy);
                
                
                // Create 3 sub sessions
                for(lIndex = 0; lIndex < MAX_SUB_SESSION; lIndex++)
                {
                    TInt lStrmIndex;
                    TInt lStrmCnt = 0;
                    // Check if RTP Data dir exists
                    sprintf(strRTPDataDir, "%s\\RTP_%d\\", strDir, lIndex);
                    
                    DIR* dir = opendir(strRTPDataDir);
                    
                    if( dir != NULL)
                    {
                        
                        delete dir;
                        
                        CXPSRtpFlStream*         parrRtpFlStrms;
                        parrRtpFlStrms = new (ELeave)CXPSRtpFlStream[MAX_STREAM_CNT];
                        
                        for(lStrmIndex = 0; lStrmIndex < MAX_STREAM_CNT; lStrmIndex++)
                        {
                            TInt rv = KErrNone;
                            rv = parrRtpFlStrms[lStrmIndex].Init(m_pXPSPacketSink, strRTPDataDir, lStrmIndex);
                            
                            
                            if(rv == KErrNone)
                            {
                                parrRtpFlStrms[lStrmIndex].SetPktLossPercentage(lPktLossPercentage);
                                parrRtpFlStrms[lStrmIndex].SetPktReorderInterval(lPktReorderInterval);
                                lStrmCnt ++;
                            }
                            else
                            {
                                // session has only one stream
                                break;
                            }
                        }
                        
                        if(lIndex == 0)
                        {
                            m_uStreamCnt = lStrmCnt;
                        }
                        
                        m_arrRtpFlStrms[lIndex] = parrRtpFlStrms;
                        m_uSubSessionCnt++;
                        
                    } // End of if(opendir(strRTPDataDir) != NULL)
                    else
                    {
                        break;
                    }
                    
                } // End of for(lIndex = 0; lIndex < MAX_SUB_SESSION; lIndex++)
                
                m_pXPSPacketSink->SetSessionDescription((TDes8&)ptr, m_uStreamCnt);
                if(m_uStreamCnt > 0)
                {
                    lRetval = KErrNone;
                }
                
                m_pXPSPacketSink->ConfigStream(0, 100);
                m_pXPSPacketSink->ConfigStream(0, 40);
                
            }
            else
            {
                RDebug::Print(_L(" CXPSRtpFlSrc::Init ERR: SDP File Not found"));
            }
        }
        else
        {
            lRetval = KErrNoMemory;
        }
        delete pSDPInfo;
        delete [] strXPSFileName;
        delete [] strBuffer;
        delete [] strRTPDataDir;
        
    } // End of if(strDir != NULL)
    
    
    
    return lRetval;
}


TInt CXPSRtpFlSrc::SwitchSource()
{
    TInt lRetval = KErrNotFound;
    TUint uStrmIndex;
    
    if(m_pXPSPacketSink != NULL)
    {
        if(m_uSubSessionCnt > 1)
        {
            m_bPktSupplyPaused = false;
            StopPlayback();
            m_pXPSPacketSink->Reset();
            m_uCurrSubSessionIndex ++;
            if(m_uCurrSubSessionIndex >= m_uSubSessionCnt)
            {
                m_uCurrSubSessionIndex = 0;
            }
            for(uStrmIndex = 0; uStrmIndex < m_uStreamCnt; uStrmIndex++)
            {
                m_arrRtpFlStrms[m_uCurrSubSessionIndex][uStrmIndex].ResetStream();
            }
            lRetval = KErrNone;
        } // End of if(m_uSubSessionCnt > 1)
    }

    return lRetval;
}


void CXPSRtpFlSrc::StartPlayback()
{
  
    TUint uStrmIndex;
    for(uStrmIndex = 0; uStrmIndex < m_uStreamCnt; uStrmIndex++)
    {
        m_arrRtpFlStrms[m_uCurrSubSessionIndex][uStrmIndex].StartPktSupply();
    }

}

void CXPSRtpFlSrc::StopPlayback()
{
    TUint uStrmIndex;
    for(uStrmIndex = 0; uStrmIndex < m_uStreamCnt; uStrmIndex++)
    {
        m_arrRtpFlStrms[m_uCurrSubSessionIndex][uStrmIndex].StopPktSupply();
    }
}

void CXPSRtpFlSrc::PausePacketSupply()
{
    TUint uStrmIndex;
    m_bPktSupplyPaused = true;
    for(uStrmIndex = 0; uStrmIndex < m_uStreamCnt; uStrmIndex++)
    {
        m_arrRtpFlStrms[m_uCurrSubSessionIndex][uStrmIndex].PausePacketSupply();
    }
}
void CXPSRtpFlSrc::ResumePacketSupply()
{
    TUint uStrmIndex;
    m_bPktSupplyPaused = false;
    for(uStrmIndex = 0; uStrmIndex < m_uStreamCnt; uStrmIndex++)
    {
        m_arrRtpFlStrms[m_uCurrSubSessionIndex][uStrmIndex].ResumePacketSupply();
    }
}


void CXPSRtpFlSrc::RestorePacketSupply(TUint uStreamId)
{
    m_arrRtpFlStrms[m_uCurrSubSessionIndex][uStreamId].RestorePktSupply();
}


void CXPSRtpFlSrc::Reset()
{
    TUint uStrmIndex;
    
    if(m_pXPSPacketSink != NULL)
    {
        StopPlayback();
        m_pXPSPacketSink->Reset();
        
        
        for(uStrmIndex = 0; uStrmIndex < m_uStreamCnt; uStrmIndex++)
        {
            m_arrRtpFlStrms[m_uCurrSubSessionIndex][uStrmIndex].ResetStream();
        }
    }
}



CXPSRtpFlStream::CXPSRtpFlStream()
                :m_uStreamId(0)
                ,m_umsPktInterval(0)
                ,m_bSuspendPktSupply(false)
                ,m_pPeriodicTimer(NULL)
                ,m_pXPSPacketSink(NULL)
                ,m_bPktSupplyPaused(false)
                ,m_ulPktDropInterval(0)
                ,m_ulPktCntr(0)
                ,m_ulPktReorderInterval(0)
{

}

CXPSRtpFlStream::~CXPSRtpFlStream()
{
    Close();
    delete m_pPeriodicTimer;
}


TInt CXPSRtpFlStream::Init(CXPSPacketSink* pXPSPktSupplier, char* strRTPDirName, TUint uStreamId)
{
    TInt lRetval = KErrNone;
    m_pXPSPacketSink = pXPSPktSupplier;
    m_uStreamId = uStreamId;
    sprintf(m_strFileName, "%s\\stream%d", strRTPDirName, m_uStreamId); 

    lRetval = m_RTPFlPktReader.Init(m_strFileName);

    return lRetval;
}

void CXPSRtpFlStream::ResetStream()
{
    m_bSuspendPktSupply = false;
    m_bPktSupplyPaused = false;
    m_ulPktCntr = 0;
    m_RTPFlPktReader.Init(m_strFileName);
}

void CXPSRtpFlStream::Close()
{
    if(m_pPeriodicTimer != NULL)
    {
        m_pPeriodicTimer->Cancel();
    }
    m_RTPFlPktReader.Close();
}

void CXPSRtpFlStream::ResumePacketSupply()
{
    m_bPktSupplyPaused = false;
    StartPktSupply();
}

void CXPSRtpFlStream::StartPktSupply()
{
   PushMultiplePackets();
}


void CXPSRtpFlStream::StopPktSupply()
{
    Close();
}





void CXPSRtpFlStream::RestorePktSupply()
{
    m_bSuspendPktSupply = false;
    PushMultiplePackets();
}


void CXPSRtpFlStream::HandleCallBack()
{
    if(!m_bSuspendPktSupply)
    {
        m_ulCurrTime += m_umsPktInterval;
       //PushMultiplePackets(m_ulCurrTime + 400);
    } 
}


void CXPSRtpFlStream::PushMultiplePackets()
{
    if((!m_bSuspendPktSupply) && (!m_bPktSupplyPaused))
    {
        TInt iIndex = 0;
        TInt iRetval = KErrNone;
        TRtpRecvHeader RtpHdr;
        TUint8*   pPyld = NULL;
        TUint     ulPyldSize = 0;
        
        while(1)
        {
            ulPyldSize = m_RTPFlPktReader.GetRTPPacket(RtpHdr, pPyld);
            
            if(pPyld != NULL)
            {
                m_ulPktCntr++;

                // Check for pkt reorder simulation
                if ((m_ulPktReorderInterval != 0) && 
                    (m_ulPktCntr%m_ulPktReorderInterval == 0) )
                {
                    if(PushOnePacket() == KErrOverflow)
                    {
                        m_bSuspendPktSupply = true;

                        // When we break here, we lose the previously
                        // obtained packet.
                        delete [] pPyld;
                        break;
                    
                    }
                }

                if((m_ulPktDropInterval != 0) && 
                    (m_ulPktCntr%m_ulPktDropInterval == 0) )
                {
                    // Drop Packet
                    RDebug::Print(_L("CXPSRtpFlStream::PushMultiplePackets DROPPING PKT Seq:%d" ),RtpHdr.iSeqNum);
                }
                else
                {
                    TPtr8 payload(0, 0);
                    payload.Set(pPyld, ulPyldSize, ulPyldSize);
                    iRetval = m_pXPSPacketSink->Enqueue(m_uStreamId, RtpHdr, payload);
                }

                delete [] pPyld;
                if(iRetval == KErrOverflow)
                {
                    m_bSuspendPktSupply = true;
                    
                    break;
                }
               
            }
            else
            {
                // Inform end of stream
                m_pXPSPacketSink->StreamEnd(m_uStreamId);
                break;
            }
        } // End of while(1)
    } // End of if(m_bSuspendStr0PktSupply != true)
}





void CXPSRtpFlStream::SetPktLossPercentage(TUint ulPercentage)
{
    if(ulPercentage > 0)
    {
        m_ulPktDropInterval = 100 / ulPercentage;
    }
}

void CXPSRtpFlStream::SetPktReorderInterval(TUint ulPktReorderInterval)
{
    m_ulPktReorderInterval = ulPktReorderInterval;
}


TInt CXPSRtpFlStream::PushOnePacket()
{
    TInt iRetval = KErrNone;
    TRtpRecvHeader RtpHdr;
    TUint8*   pPyld = NULL;
    TUint     ulPyldSize = 0;

    ulPyldSize = m_RTPFlPktReader.GetRTPPacket(RtpHdr, pPyld);
    if(pPyld != NULL)
    {
        m_ulPktCntr++;
        TPtr8 payload(0, 0);
        payload.Set(pPyld, ulPyldSize, ulPyldSize);
        iRetval = m_pXPSPacketSink->Enqueue(m_uStreamId, RtpHdr, payload);
    }

    delete [] pPyld;
    
    return iRetval;
}

Index: Umakefil
===================================================================
RCS file: /cvsroot/datatype/xps/test/Umakefil,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -d -r1.1.1.1 -r1.2
--- Umakefil	4 Oct 2006 15:28:18 -0000	1.1.1.1
+++ Umakefil	15 Nov 2006 20:13:41 -0000	1.2
@@ -63,8 +63,7 @@
 
 UmakefileVersion(2,1)
 
-#MultiTargetMake("XPSRtpFlSrcLib")
-EmptyTarget()
+MultiTargetMake("XPSRtpFlSrcLib")
 
 
 


From rrajesh at helixcommunity.org  Wed Nov 15 12:16:34 2006
From: rrajesh at helixcommunity.org (rrajesh@helixcommunity.org)
Date: Wed Nov 15 13:21:08 2006
Subject: [Datatype-cvs] xps/test Umakefil,1.1.1.1,1.1.1.1.2.1
Message-ID: 

Update of /cvsroot/datatype/xps/test
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv25652

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	Umakefil 
Log Message:
"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:  rajesh.rathinasamy@nokia.com
> 
> 	Reviewed by: 
> 
> 	Date: 02-Nov-2006. 
> 
> 	Project: SymbianMmf
> 
> 	ErrorId: ** New Featue **
> 
> 	Synopsis:  CR: Symbian XPS test library
> 
> 	        The test library is a sample use case for the XPSPacketSink. 
> It reads the RTP packets and header (only required headers are dumped) 
> from a file and supplies to the packet sink.
> 
> 	I will send out a standalone test app soon which gives a complete 
> usage of CVideoPlayer utility and XPSPacketSink.
> 
> 	Also attaching a sample hdr file. Payload file contains RTP payload 
> dump.
> 
> 	Files Modified: 
> 	=========== 
> 	Datatype\xps\test\umakefil
> 
> 	Files Added: 
> 	========== 
> 	Datatype\xps\test\CXPSRtpFlSrc.h 
> 	Datatype\xps\test\CXPSRtpFlSrc.cpp 
> 	Datatype\xps\test\CXPSRTPPktFlReader.h 
> 	Datatype\xps\test\CXPSRTPPktFlReader.cpp
> 
> 	Image Size and Heap Use impact: no major impact
> 
> 	Platforms and Profiles Build Verified: 
> helix-client-s60-mmf-mdf-arm
> 
> 	Platforms and Profiles Functionality verified: armv5, winscw
> 
>      Branch: Helix, 210CayS
> 


Index: Umakefil
===================================================================
RCS file: /cvsroot/datatype/xps/test/Umakefil,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.2.1
diff -u -d -r1.1.1.1 -r1.1.1.1.2.1
--- Umakefil	4 Oct 2006 15:28:18 -0000	1.1.1.1
+++ Umakefil	15 Nov 2006 20:16:31 -0000	1.1.1.1.2.1
@@ -63,8 +63,7 @@
 
 UmakefileVersion(2,1)
 
-#MultiTargetMake("XPSRtpFlSrcLib")
-EmptyTarget()
+MultiTargetMake("XPSRtpFlSrcLib")
 
 
 


From ricardj at helixcommunity.org  Wed Nov 15 23:44:33 2006
From: ricardj at helixcommunity.org (ricardj@helixcommunity.org)
Date: Thu Nov 16 00:49:00 2006
Subject: [Datatype-cvs] mdf/audio/dsp mdfauddevice.cpp,1.11,1.12
Message-ID: 

Update of /cvsroot/datatype/mdf/audio/dsp
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv14030/datatype/mdf/audio/dsp

Modified Files:
	mdfauddevice.cpp 
Log Message:
Description:
The purpose of the change is to lower the calls to the SamplesPlayed service of DevSound.
The reason is this call results in many process switches and thus impacts performance
and power consumption.
               
The modifications are:
- keep the actual call to SamplesPlayed made on a periodic timer
- replace all other calls by a time interpolation since last actual call.
  The system time is obtained using the Symbian service NTickCount.
  The unit of this tick is given through a HAL service with ENanoTickPeriod attribute.
  The interpolation is made so that the current time returned never goes backwards
  (This could be the case if the system clock time is faster than audio time)
- periodic time value configurable through a preference: TimesyncPeriodInMs.
  Default stays to 100ms


Files modified:
datatype\mdf\audio\dsp\mdfauddevice.cpp
datatype\mdf\audio\dsp\mdfauddevice.h 
datatype\mdf\audio\dsp\Umakefil

Branches:
HEAD



Index: mdfauddevice.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/audio/dsp/mdfauddevice.cpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- mdfauddevice.cpp	3 Nov 2006 21:50:50 -0000	1.11
+++ mdfauddevice.cpp	16 Nov 2006 07:44:30 -0000	1.12
@@ -52,6 +52,7 @@
 #include "mdfdebug.h"
 #include "hxprefutil.h"
 #include "hxmon.h"
+#include "hal.h" // for HAL::Get of ENanoTickPeriod
 
 
 static UINT32 Scale(UINT32 v, UINT32 f0, UINT32 f1, UINT32 t0, UINT32 t1);
@@ -124,6 +125,8 @@
         m_ulAudioTimeOffset(0),
         m_pAudioFormat(pAudioFormat),
         m_pErrorMessage(NULL),
+        m_bDevTimeNeeded(TRUE),
+        m_ulLastTime(0),
         m_CurrentVolume(MDFDEVICE_INVALID_VOLUME)
 {
     //- activate active object
@@ -131,6 +134,11 @@
 
     //- get device volume range && set initial volume///
     m_nDevMinVolume = 0;
+    if (HAL::Get(HAL::ENanoTickPeriod, m_systemTickPeriodInMicroSecond) != KErrNone)
+    {
+        // If attribute not supported, assume the period to be 1 ms
+        m_systemTickPeriodInMicroSecond = 1000;
+    }
 }
 
 
@@ -333,6 +341,9 @@
         if(m_pDeviceResponse)
         {
             ULONG32 ulAudioTime = 0;
+
+			m_bDevTimeNeeded = TRUE;	//now we need Dev Time
+				
             GetCurrentAudioTime(ulAudioTime);
             m_pDeviceResponse->OnTimeSync(ulAudioTime);
         }
@@ -438,6 +449,12 @@
         m_pDevSound->SetVolume(m_CurrentVolume);
     }
 
+    m_TimeSyncPeriodInMs=TIMESYNC_CALLBACK_INTERVAL_MS;
+    if (SUCCEEDED(ReadPrefUINT32(m_pContext, "TimesyncPeriodInMs", m_TimeSyncPeriodInMs)))
+    {
+        HXLOGL2(HXLOG_MDFA, "mdfdev:open .. TimeSyncPeriodInMs from prefs %d", m_TimeSyncPeriodInMs);
+    
+    }
     HXLOGL4(HXLOG_MDFA,"mdfdev:open > hxr=%d", hxr);
     return hxr;
 }
@@ -504,6 +521,9 @@
     HXLOGL4(HXLOG_MDFA,"mdfdev:resume <");
     HX_RESULT hxr = HXR_OK;
 
+    m_bDevTimeNeeded = TRUE;
+    m_ulLastTime=0;
+    
     //Check the time and call OnTimeSync
     if(m_pDeviceResponse)
     {
@@ -719,8 +739,33 @@
 //   HXLOGL2(HXLOG_MDFA,"mdfdeV:gettime < t=%d", ulCurrentTime);
 
     HX_RESULT hxr = HXR_OK;
-    hxr = m_pDevSound->GetCurrentPlayTime(ulCurrentTime);
 
+    UINT32 systemTime=(UINT32)(((UINT64)User::NTickCount() * 1000) / m_systemTickPeriodInMicroSecond); 
+
+    if (m_bDevTimeNeeded) {
+        hxr = m_pDevSound->GetCurrentPlayTime(ulCurrentTime);  //Dev Time
+        m_devTime = ulCurrentTime;
+        if (m_ulLastTime>ulCurrentTime) {
+            // Device time ahead of computed time:
+            //   return last computed time
+            ulCurrentTime=m_ulLastTime;
+        }
+        m_systemTimeMark = systemTime;
+        m_bDevTimeNeeded = FALSE;				//no need to check Dev Time.
+    } else {
+        // Don't ask time to device: compute using elapsed system time
+        LONG32 elapse = systemTime - m_systemTimeMark;
+        // Case of 32 bit counter overflow
+        if (elapse < 0) elapse= -elapse;
+        ulCurrentTime = m_devTime + elapse;		//interpolation
+        if (m_ulLastTime>ulCurrentTime) {
+            // New computed time still behind last computed time:
+            //   return last computed time until new computed time goes ahead
+            ulCurrentTime=m_ulLastTime;
+        } else {
+            m_ulLastTime=ulCurrentTime;
+        }
+     } 
 //   HXLOGL2(HXLOG_MDFA,"mdfdeV:gettime > t=%d\n", ulCurrentTime);
     return hxr;
 }
@@ -769,7 +814,7 @@
     if( !IsActive())
     {
         //HXLOGL4(HXLOG_MDFA, "mdfdeV:dosettimer .. set timer here. %d", iStatus.Int());
-        m_iTimer.After(iStatus, TIMESYNC_CALLBACK_INTERVAL_MS * 1000);
+        m_iTimer.After(iStatus, m_TimeSyncPeriodInMs * 1000);
         SetActive();
     }
 


From ricardj at helixcommunity.org  Wed Nov 15 23:44:48 2006
From: ricardj at helixcommunity.org (ricardj@helixcommunity.org)
Date: Thu Nov 16 00:49:15 2006
Subject: [Datatype-cvs] mdf/audio/dsp mdfauddevice.h,1.6,1.7
Message-ID: 

Update of /cvsroot/datatype/mdf/audio/dsp
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv14104/datatype/mdf/audio/dsp

Modified Files:
	mdfauddevice.h 
Log Message:
Description:
The purpose of the change is to lower the calls to the SamplesPlayed service of DevSound.
The reason is this call results in many process switches and thus impacts performance
and power consumption.
               
The modifications are:
- keep the actual call to SamplesPlayed made on a periodic timer
- replace all other calls by a time interpolation since last actual call.
  The system time is obtained using the Symbian service NTickCount.
  The unit of this tick is given through a HAL service with ENanoTickPeriod attribute.
  The interpolation is made so that the current time returned never goes backwards
  (This could be the case if the system clock time is faster than audio time)
- periodic time value configurable through a preference: TimesyncPeriodInMs.
  Default stays to 100ms


Files modified:
datatype\mdf\audio\dsp\mdfauddevice.cpp
datatype\mdf\audio\dsp\mdfauddevice.h 
datatype\mdf\audio\dsp\Umakefil

Branches:
HEAD



Index: mdfauddevice.h
===================================================================
RCS file: /cvsroot/datatype/mdf/audio/dsp/mdfauddevice.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- mdfauddevice.h	7 Apr 2006 19:17:12 -0000	1.6
+++ mdfauddevice.h	16 Nov 2006 07:44:46 -0000	1.7
@@ -181,6 +181,12 @@
     IHXErrorMessages*   m_pErrorMessage;
     TInt                m_CurrentVolume; // valid values >= 0
         
+    ULONG32             m_systemTimeMark;
+    ULONG32             m_devTime;
+    HXBOOL              m_bDevTimeNeeded;
+    TInt                m_systemTickPeriodInMicroSecond;
+    ULONG32             m_ulLastTime;
+    ULONG32             m_TimeSyncPeriodInMs;
 };
 
 


From ricardj at helixcommunity.org  Wed Nov 15 23:45:11 2006
From: ricardj at helixcommunity.org (ricardj@helixcommunity.org)
Date: Thu Nov 16 00:49:37 2006
Subject: [Datatype-cvs] mdf/audio/dsp Umakefil,1.8,1.9
Message-ID: 

Update of /cvsroot/datatype/mdf/audio/dsp
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv14215/datatype/mdf/audio/dsp

Modified Files:
	Umakefil 
Log Message:
Description:
The purpose of the change is to lower the calls to the SamplesPlayed service of DevSound.
The reason is this call results in many process switches and thus impacts performance
and power consumption.
               
The modifications are:
- keep the actual call to SamplesPlayed made on a periodic timer
- replace all other calls by a time interpolation since last actual call.
  The system time is obtained using the Symbian service NTickCount.
  The unit of this tick is given through a HAL service with ENanoTickPeriod attribute.
  The interpolation is made so that the current time returned never goes backwards
  (This could be the case if the system clock time is faster than audio time)
- periodic time value configurable through a preference: TimesyncPeriodInMs.
  Default stays to 100ms


Files modified:
datatype\mdf\audio\dsp\mdfauddevice.cpp
datatype\mdf\audio\dsp\mdfauddevice.h 
datatype\mdf\audio\dsp\Umakefil

Branches:
HEAD



Index: Umakefil
===================================================================
RCS file: /cvsroot/datatype/mdf/audio/dsp/Umakefil,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- Umakefil	21 Sep 2006 19:12:20 -0000	1.8
+++ Umakefil	16 Nov 2006 07:45:09 -0000	1.9
@@ -104,7 +104,7 @@
     "common/dbgtool[debuglib]",
     "common/runtime[runtlib]" )
                             
-project.AddSystemLibraries("mmfdevsound.lib", "ecom.lib", "ErrorConcealmentIntfc.lib","AacDecoderConfig.lib")
+project.AddSystemLibraries("mmfdevsound.lib", "ecom.lib", "ErrorConcealmentIntfc.lib","AacDecoderConfig.lib", "hal.lib")
 
 if project.IsDefined('HELIX_FEATURE_DRM_SECURE_OUTPUT'):
     project.AddSystemLibraries("AudioOutputRouting.lib")


From rrajesh at helixcommunity.org  Thu Nov 16 08:10:35 2006
From: rrajesh at helixcommunity.org (rrajesh@helixcommunity.org)
Date: Thu Nov 16 09:14:56 2006
Subject: [Datatype-cvs] xps/fileformat CXPSFileformat.cpp, 1.1.1.1.2.2,
	1.1.1.1.2.3
Message-ID: 

Update of /cvsroot/datatype/xps/fileformat
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv7639

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	CXPSFileformat.cpp 
Log Message:
"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:  rajesh.rathinasamy@nokia.com

Reviewed by:

Date: 15-Nov-2006.

Project: SymbianMmf

ErrorId: EJZG-6VJV8Z 

Synopsis:  CR: Sequence number wrap around fix

   While playing a 2hr clip, there was a sequence number wrap around and all the packets after that were dropped. This would result in app being in bufferring state for a while and then the clip will end.

Handled the sequence number wrapping. Introduced a wrap sequence number gap tolerance value ( Will be hit in packet loss close to seq wrap). 


Files Modified:
=========
Datatype/xps/fileformat/CXPSFileformat.cpp

Image Size and Heap Use impact: no major impact

Platforms and Profiles Build Verified: helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: armv5, winscw

     Branch: Head & 210CayS


Index: CXPSFileformat.cpp
===================================================================
RCS file: /cvsroot/datatype/xps/fileformat/CXPSFileformat.cpp,v
retrieving revision 1.1.1.1.2.2
retrieving revision 1.1.1.1.2.3
diff -u -d -r1.1.1.1.2.2 -r1.1.1.1.2.3
--- CXPSFileformat.cpp	3 Nov 2006 22:36:09 -0000	1.1.1.1.2.2
+++ CXPSFileformat.cpp	16 Nov 2006 16:10:33 -0000	1.1.1.1.2.3
@@ -73,6 +73,7 @@
 
 #define MEDIASTREAM_Q_SIZE   100
 #define WRAP_SEQ_NO         0x10000
+#define WRAP_SEQ_DIFF_TOLERANCE   10
 
 const char* const CXPSFileFormat::zm_pDescription    = "External Packet Source  File Format Plugin";
 const char* const CXPSFileFormat::zm_pCopyright      = "Copyrights Reserved";
@@ -841,19 +842,34 @@
 //
 HX_RESULT CMediaStream::AddPacket(UINT32 ulSeqNo, IHXRTPPacket* pRTPPacket)
 {
-    HX_RESULT rv = HXR_OUTOFMEMORY;
-    
+    HX_RESULT rv = HXR_OK;
+        
     HX_ASSERT(m_pQue);
-    // Drop late packets
-    if((m_ulLastPktSeqNoDispatched != MAX_UINT32) && 
-        (ulSeqNo <= m_ulLastPktSeqNoDispatched) )
+
+    if((m_ulLastPktSeqNoDispatched != MAX_UINT32) &&
+       (ulSeqNo <= m_ulLastPktSeqNoDispatched) )
     {
-        HXLOGL2(HXLOG_SXPS, "CMediaStream[%d]::AddPacket late pkt. LastSeq:%lu CurrSeq:%lu - Dropping",
-            m_ulStreamId, m_ulLastPktSeqNoDispatched, ulSeqNo);
-        rv = HXR_FAIL;
+        // Check whether incoming pkt is late
+        if((m_ulLastPktSeqNoDispatched > (WRAP_SEQ_NO - WRAP_SEQ_DIFF_TOLERANCE)) 
+          && (ulSeqNo < WRAP_SEQ_DIFF_TOLERANCE) )
+        {
+            // Could be wrap around. So consider inserting into Q
+            HXLOGL2(HXLOG_SXPS, "CMediaStream[%d]::AddPacket LastSeq:%lu CurrSeq:%lu ",
+                    m_ulStreamId, m_ulLastPktSeqNoDispatched, ulSeqNo);
+        }
+        else
+        {
+            // Late packet or the gap is beyond wrap seq tolerance
+            HXLOGL2(HXLOG_SXPS, "CMediaStream[%d]::AddPacket late pkt. LastSeq:%lu CurrSeq:%lu - Dropping",
+                    m_ulStreamId, m_ulLastPktSeqNoDispatched, ulSeqNo);
+            rv = HXR_FAILED;
+        }
     }
-    else
+
+    
+    if(SUCCEEDED(rv))
     {
+        rv = HXR_OUTOFMEMORY;
         CMediaStreamElem* pElem = new CMediaStreamElem();
         if(pElem != NULL)
         {
@@ -915,7 +931,7 @@
             
         } // End of if(pElem != NULL)
         
-    } // End of if(m_pQue != NULL)
+    } // End of if(SUCCEEDED(rv))
     
     
     return rv;
@@ -953,10 +969,7 @@
     {
         // Peek the packet on front and chk for missing pkt
         pElem = (CMediaStreamElem*)m_pQue->front();
-        if((m_ulLastPktSeqNoDispatched == MAX_UINT32) || 
-            (pElem->SeqNo() == (m_ulLastPktSeqNoDispatched + 1)) )
-        {
-            // Pkt() call does a AddRef
+        // Pkt() call does a AddRef
             pRTPPacket = pElem->Pkt();
             
             // Now that we have consumed the packet, delete elem
@@ -964,18 +977,12 @@
             m_pQue->pop_front();
             m_ulLastPktSeqNoDispatched = pElem->SeqNo();
             delete pElem;
-            
-        }
-        else
-        {
-            HXLOGL2(HXLOG_SXPS, "CMediaStream[%d]::GetNextPacket Packet Lost LstSeqNo:%lu CurrPkt:%lu",
-                m_ulStreamId, m_ulLastPktSeqNoDispatched, pElem->SeqNo());
-            // packet missing, generate Lost pkt
-            GenerateLostPacket(pRTPPacket);
-            m_ulLastPktSeqNoDispatched++;
-        }
-        
-        
+
+            if(m_ulLastPktSeqNoDispatched == (WRAP_SEQ_NO - 1))
+            {
+                HXLOGL2(HXLOG_SXPS, "CMediaStream[%d]::GetNextPacket WRAPPING SEQ NO",m_ulStreamId);
+                m_ulLastPktSeqNoDispatched = MAX_UINT32;
+            }
     } // End of if(m_pQue->size() > 0)
 }
 
@@ -1093,6 +1100,10 @@
         if( (pRTPPacket != NULL) && (pFillerElem != NULL) )
         {
             ulTailSeqNo++;
+            if(ulTailSeqNo == WRAP_SEQ_NO)
+            {
+                ulTailSeqNo = 0;
+            }
             pFillerElem->Set(ulTailSeqNo, pRTPPacket);
             m_pQue->push_back((void*)pFillerElem);
             HX_RELEASE(pRTPPacket);


From rrajesh at helixcommunity.org  Thu Nov 16 08:14:39 2006
From: rrajesh at helixcommunity.org (rrajesh@helixcommunity.org)
Date: Thu Nov 16 09:19:01 2006
Subject: [Datatype-cvs] xps/fileformat CXPSFileformat.cpp,1.3,1.4
Message-ID: 

Update of /cvsroot/datatype/xps/fileformat
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv7801

Modified Files:
	CXPSFileformat.cpp 
Log Message:
"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:  rajesh.rathinasamy@nokia.com

Reviewed by:

Date: 15-Nov-2006.

Project: SymbianMmf

ErrorId: EJZG-6VJV8Z 

Synopsis:  CR: Sequence number wrap around fix

   While playing a 2hr clip, there was a sequence number wrap around and all the packets after that were dropped. This would result in app being in bufferring state for a while and then the clip will end.

Handled the sequence number wrapping. Introduced a wrap sequence number gap tolerance value ( Will be hit in packet loss close to seq wrap). 


Files Modified:
=========
Datatype/xps/fileformat/CXPSFileformat.cpp

Image Size and Heap Use impact: no major impact

Platforms and Profiles Build Verified: helix-client-s60-32-mmf-mdf-arm

Platforms and Profiles Functionality verified: armv5, winscw

     Branch: Head & 210CayS


Index: CXPSFileformat.cpp
===================================================================
RCS file: /cvsroot/datatype/xps/fileformat/CXPSFileformat.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- CXPSFileformat.cpp	3 Nov 2006 22:46:26 -0000	1.3
+++ CXPSFileformat.cpp	16 Nov 2006 16:14:37 -0000	1.4
@@ -73,6 +73,7 @@
 
 #define MEDIASTREAM_Q_SIZE   100
 #define WRAP_SEQ_NO         0x10000
+#define WRAP_SEQ_DIFF_TOLERANCE   10
 
 const char* const CXPSFileFormat::zm_pDescription    = "External Packet Source  File Format Plugin";
 const char* const CXPSFileFormat::zm_pCopyright      = "Copyrights Reserved";
@@ -841,19 +842,34 @@
 //
 HX_RESULT CMediaStream::AddPacket(UINT32 ulSeqNo, IHXRTPPacket* pRTPPacket)
 {
-    HX_RESULT rv = HXR_OUTOFMEMORY;
-    
+    HX_RESULT rv = HXR_OK;
+        
     HX_ASSERT(m_pQue);
-    // Drop late packets
-    if((m_ulLastPktSeqNoDispatched != MAX_UINT32) && 
-        (ulSeqNo <= m_ulLastPktSeqNoDispatched) )
+
+    if((m_ulLastPktSeqNoDispatched != MAX_UINT32) &&
+       (ulSeqNo <= m_ulLastPktSeqNoDispatched) )
     {
-        HXLOGL2(HXLOG_SXPS, "CMediaStream[%d]::AddPacket late pkt. LastSeq:%lu CurrSeq:%lu - Dropping",
-            m_ulStreamId, m_ulLastPktSeqNoDispatched, ulSeqNo);
-        rv = HXR_FAIL;
+        // Check whether incoming pkt is late
+        if((m_ulLastPktSeqNoDispatched > (WRAP_SEQ_NO - WRAP_SEQ_DIFF_TOLERANCE)) 
+          && (ulSeqNo < WRAP_SEQ_DIFF_TOLERANCE) )
+        {
+            // Could be wrap around. So consider inserting into Q
+            HXLOGL2(HXLOG_SXPS, "CMediaStream[%d]::AddPacket LastSeq:%lu CurrSeq:%lu ",
+                    m_ulStreamId, m_ulLastPktSeqNoDispatched, ulSeqNo);
+        }
+        else
+        {
+            // Late packet or the gap is beyond wrap seq tolerance
+            HXLOGL2(HXLOG_SXPS, "CMediaStream[%d]::AddPacket late pkt. LastSeq:%lu CurrSeq:%lu - Dropping",
+                    m_ulStreamId, m_ulLastPktSeqNoDispatched, ulSeqNo);
+            rv = HXR_FAILED;
+        }
     }
-    else
+
+    
+    if(SUCCEEDED(rv))
     {
+        rv = HXR_OUTOFMEMORY;
         CMediaStreamElem* pElem = new CMediaStreamElem();
         if(pElem != NULL)
         {
@@ -915,7 +931,7 @@
             
         } // End of if(pElem != NULL)
         
-    } // End of if(m_pQue != NULL)
+    } // End of if(SUCCEEDED(rv))
     
     
     return rv;
@@ -953,10 +969,7 @@
     {
         // Peek the packet on front and chk for missing pkt
         pElem = (CMediaStreamElem*)m_pQue->front();
-        if((m_ulLastPktSeqNoDispatched == MAX_UINT32) || 
-            (pElem->SeqNo() == (m_ulLastPktSeqNoDispatched + 1)) )
-        {
-            // Pkt() call does a AddRef
+        // Pkt() call does a AddRef
             pRTPPacket = pElem->Pkt();
             
             // Now that we have consumed the packet, delete elem
@@ -964,18 +977,12 @@
             m_pQue->pop_front();
             m_ulLastPktSeqNoDispatched = pElem->SeqNo();
             delete pElem;
-            
-        }
-        else
-        {
-            HXLOGL2(HXLOG_SXPS, "CMediaStream[%d]::GetNextPacket Packet Lost LstSeqNo:%lu CurrPkt:%lu",
-                m_ulStreamId, m_ulLastPktSeqNoDispatched, pElem->SeqNo());
-            // packet missing, generate Lost pkt
-            GenerateLostPacket(pRTPPacket);
-            m_ulLastPktSeqNoDispatched++;
-        }
-        
-        
+
+            if(m_ulLastPktSeqNoDispatched == (WRAP_SEQ_NO - 1))
+            {
+                HXLOGL2(HXLOG_SXPS, "CMediaStream[%d]::GetNextPacket WRAPPING SEQ NO",m_ulStreamId);
+                m_ulLastPktSeqNoDispatched = MAX_UINT32;
+            }
     } // End of if(m_pQue->size() > 0)
 }
 
@@ -1093,6 +1100,10 @@
         if( (pRTPPacket != NULL) && (pFillerElem != NULL) )
         {
             ulTailSeqNo++;
+            if(ulTailSeqNo == WRAP_SEQ_NO)
+            {
+                ulTailSeqNo = 0;
+            }
             pFillerElem->Set(ulTailSeqNo, pRTPPacket);
             m_pQue->push_back((void*)pFillerElem);
             HX_RELEASE(pRTPPacket);


From junhliu at helixcommunity.org  Thu Nov 16 09:08:23 2006
From: junhliu at helixcommunity.org (junhliu@helixcommunity.org)
Date: Thu Nov 16 10:12:43 2006
Subject: [Datatype-cvs] mdf/video/format/h264 mdfh264payloadformat.cpp,
	1.1.2.8, 1.1.2.9
Message-ID: 

Update of /cvsroot/datatype/mdf/video/format/h264
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv10353

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	mdfh264payloadformat.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: 
	Junhong.Liu@nokia.com; Gang.1.Shen@nokia.com
 
Reviewed by: 
 
Date: 11-02-2006. 

Error ID: EJEA-6UAR8J
Project: Helix plugin for Symbian
 
Synopsis: H.264 format, video is freeze for a bit during playback
 
 
Some Access Uints contain filler data NAL, which are filtered out by MDF decoder now. However, the balance between decoder input queue, output queue and the post-processor input queue could be impacted by doing this, and leave actual I frames delayed and dropped. 

This CR is to filter the filler data NAL in helix engine level to relief H.264 decoder.


 

Files Modified: 

datatype/mdf/video/format/h264/mdfh264payloadformat.cpp
 
Files Added: None. 
 
Image Size and Heap Use impact: None. 
 
Platforms and Profiles Build Verified: helix-client-s60-mmf-mdf-arm
 
Platforms and Profiles Functionality verified: armv5, winscw
 
Branch: HXCLIENT_2_1_0_CAYENNES, HEAD


Index: mdfh264payloadformat.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/h264/mdfh264payloadformat.cpp,v
retrieving revision 1.1.2.8
retrieving revision 1.1.2.9
diff -u -d -r1.1.2.8 -r1.1.2.9
--- mdfh264payloadformat.cpp	13 Nov 2006 17:42:01 -0000	1.1.2.8
+++ mdfh264payloadformat.cpp	16 Nov 2006 17:08:21 -0000	1.1.2.9
@@ -58,6 +58,24 @@
 #define KUidH264PayloadFormatPluginDeviceDefine 0x1020747B
 const TUid KUidH264PayloadFormatPluginDevice =  {KUidH264PayloadFormatPluginDeviceDefine};
 
+/*
+ * Definitions of NAL types
+ */
+#define NAL_TYPE_UNSPECIFIED      0
+#define NAL_TYPE_CODED_SLICE      1
+#define NAL_TYPE_CODED_SLICE_P_A  2
+#define NAL_TYPE_CODED_SLICE_P_B  3
+#define NAL_TYPE_CODED_SLICE_P_C  4
+#define NAL_TYPE_CODED_SLICE_IDR  5
+#define NAL_TYPE_SEI              6
+#define NAL_TYPE_SPS              7
+#define NAL_TYPE_PPS              8
+#define NAL_TYPE_PIC_DELIMITER    9
+#define NAL_TYPE_END_SEQ          10
+#define NAL_TYPE_END_STREAM       11
+#define NAL_TYPE_FILLER_DATA      12
+
+
 const UINT8 start_code[] = {0x00,0x00,0x01};
 const UINT16 SPSCOUNT_OFFSET = 5;
 const UINT16 LengthSizeMinusOne_OFFSET = 4;
@@ -268,8 +286,11 @@
                 ulNALLength = ulNALLength | temp[i + ulBytes];
             }
 
+            if (( temp[i+m_uNalUnitLenInByte] & 0x1f) != NAL_TYPE_FILLER_DATA )
+            {
             inputBuffer.Append( start_code, sizeof( start_code ) );
             inputBuffer.Append( &temp[i + m_uNalUnitLenInByte], ulNALLength );
+            }
 
             i += ulNALLength + m_uNalUnitLenInByte;
         }


From jrmoore at helixcommunity.org  Thu Nov 16 11:02:52 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:07:12 2006
Subject: [Datatype-cvs] samples/pcm_renderer LICENSE.txt,1.1,1.1.38.1
Message-ID: 

Update of /cvsroot/datatype/samples/pcm_renderer
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv24809/datatype/samples/pcm_renderer

Modified Files:
      Tag: SERVER_11_1
	LICENSE.txt 
Log Message:
Changing copyrigth to 2006.


Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/pcm_renderer/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.1.38.1
diff -u -d -r1.1 -r1.1.38.1
--- LICENSE.txt	6 Feb 2004 15:25:17 -0000	1.1
+++ LICENSE.txt	16 Nov 2006 19:02:46 -0000	1.1.38.1
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Thu Nov 16 11:02:53 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:07:13 2006
Subject: [Datatype-cvs] samples/pcm_renderer/pub/platform/mac LICENSE.txt,
	1.1, 1.1.38.1
Message-ID: 

Update of /cvsroot/datatype/samples/pcm_renderer/pub/platform/mac
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv24809/datatype/samples/pcm_renderer/pub/platform/mac

Modified Files:
      Tag: SERVER_11_1
	LICENSE.txt 
Log Message:
Changing copyrigth to 2006.


Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/pcm_renderer/pub/platform/mac/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.1.38.1
diff -u -d -r1.1 -r1.1.38.1
--- LICENSE.txt	6 Feb 2004 15:25:17 -0000	1.1
+++ LICENSE.txt	16 Nov 2006 19:02:50 -0000	1.1.38.1
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Thu Nov 16 11:02:53 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:07:14 2006
Subject: [Datatype-cvs] samples/pcm_renderer2/pub/platform/mac LICENSE.txt,
	1.1, 1.1.38.1
Message-ID: 

Update of /cvsroot/datatype/samples/pcm_renderer2/pub/platform/mac
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv24809/datatype/samples/pcm_renderer2/pub/platform/mac

Modified Files:
      Tag: SERVER_11_1
	LICENSE.txt 
Log Message:
Changing copyrigth to 2006.


Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/pcm_renderer2/pub/platform/mac/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.1.38.1
diff -u -d -r1.1 -r1.1.38.1
--- LICENSE.txt	6 Feb 2004 15:25:18 -0000	1.1
+++ LICENSE.txt	16 Nov 2006 19:02:51 -0000	1.1.38.1
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Thu Nov 16 11:02:53 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:07:15 2006
Subject: [Datatype-cvs] 
	samples/pre_post_fileformat/testdata LICENSE.txt, 1.1, 1.1.38.1
Message-ID: 

Update of /cvsroot/datatype/samples/pre_post_fileformat/testdata
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv24809/datatype/samples/pre_post_fileformat/testdata

Modified Files:
      Tag: SERVER_11_1
	LICENSE.txt 
Log Message:
Changing copyrigth to 2006.


Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/pre_post_fileformat/testdata/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.1.38.1
diff -u -d -r1.1 -r1.1.38.1
--- LICENSE.txt	6 Feb 2004 15:25:18 -0000	1.1
+++ LICENSE.txt	16 Nov 2006 19:02:51 -0000	1.1.38.1
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Thu Nov 16 11:02:54 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:07:16 2006
Subject: [Datatype-cvs] samples/singlewindow_renderer LICENSE.txt, 1.1,
	1.1.38.1
Message-ID: 

Update of /cvsroot/datatype/samples/singlewindow_renderer
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv24809/datatype/samples/singlewindow_renderer

Modified Files:
      Tag: SERVER_11_1
	LICENSE.txt 
Log Message:
Changing copyrigth to 2006.


Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/singlewindow_renderer/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.1.38.1
diff -u -d -r1.1 -r1.1.38.1
--- LICENSE.txt	6 Feb 2004 15:25:18 -0000	1.1
+++ LICENSE.txt	16 Nov 2006 19:02:51 -0000	1.1.38.1
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Thu Nov 16 11:02:44 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:07:35 2006
Subject: [Datatype-cvs] samples/audio_renderer/testdata LICENSE.txt, 1.1,
	1.1.38.1
Message-ID: 

Update of /cvsroot/datatype/samples/audio_renderer/testdata
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv24809/datatype/samples/audio_renderer/testdata

Modified Files:
      Tag: SERVER_11_1
	LICENSE.txt 
Log Message:
Changing copyrigth to 2006.


Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/audio_renderer/testdata/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.1.38.1
diff -u -d -r1.1 -r1.1.38.1
--- LICENSE.txt	6 Feb 2004 15:25:16 -0000	1.1
+++ LICENSE.txt	16 Nov 2006 19:02:42 -0000	1.1.38.1
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Thu Nov 16 11:02:45 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:07:37 2006
Subject: [Datatype-cvs] samples/audio_renderer2 LICENSE.txt,1.1,1.1.38.1
Message-ID: 

Update of /cvsroot/datatype/samples/audio_renderer2
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv24809/datatype/samples/audio_renderer2

Modified Files:
      Tag: SERVER_11_1
	LICENSE.txt 
Log Message:
Changing copyrigth to 2006.


Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/audio_renderer2/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.1.38.1
diff -u -d -r1.1 -r1.1.38.1
--- LICENSE.txt	6 Feb 2004 15:25:16 -0000	1.1
+++ LICENSE.txt	16 Nov 2006 19:02:42 -0000	1.1.38.1
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Thu Nov 16 11:02:44 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:07:38 2006
Subject: [Datatype-cvs] samples/audio_renderer/pub/platform/mac LICENSE.txt,
	1.1, 1.1.38.1
Message-ID: 

Update of /cvsroot/datatype/samples/audio_renderer/pub/platform/mac
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv24809/datatype/samples/audio_renderer/pub/platform/mac

Modified Files:
      Tag: SERVER_11_1
	LICENSE.txt 
Log Message:
Changing copyrigth to 2006.


Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/audio_renderer/pub/platform/mac/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.1.38.1
diff -u -d -r1.1 -r1.1.38.1
--- LICENSE.txt	6 Feb 2004 15:25:16 -0000	1.1
+++ LICENSE.txt	16 Nov 2006 19:02:42 -0000	1.1.38.1
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Thu Nov 16 11:02:44 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:07:38 2006
Subject: [Datatype-cvs] samples/audio_renderer LICENSE.txt,1.1,1.1.38.1
Message-ID: 

Update of /cvsroot/datatype/samples/audio_renderer
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv24809/datatype/samples/audio_renderer

Modified Files:
      Tag: SERVER_11_1
	LICENSE.txt 
Log Message:
Changing copyrigth to 2006.


Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/audio_renderer/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.1.38.1
diff -u -d -r1.1 -r1.1.38.1
--- LICENSE.txt	6 Feb 2004 15:25:15 -0000	1.1
+++ LICENSE.txt	16 Nov 2006 19:02:42 -0000	1.1.38.1
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Thu Nov 16 11:02:46 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:07:42 2006
Subject: [Datatype-cvs] samples/fileformat1_renderer/pub/platform/mac
	LICENSE.txt, 1.1, 1.1.38.1
Message-ID: 

Update of /cvsroot/datatype/samples/fileformat1_renderer/pub/platform/mac
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv24809/datatype/samples/fileformat1_renderer/pub/platform/mac

Modified Files:
      Tag: SERVER_11_1
	LICENSE.txt 
Log Message:
Changing copyrigth to 2006.


Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/fileformat1_renderer/pub/platform/mac/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.1.38.1
diff -u -d -r1.1 -r1.1.38.1
--- LICENSE.txt	6 Feb 2004 15:25:17 -0000	1.1
+++ LICENSE.txt	16 Nov 2006 19:02:43 -0000	1.1.38.1
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Thu Nov 16 11:02:45 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:07:42 2006
Subject: [Datatype-cvs] 
	samples/audio_renderer2/pub/platform/mac LICENSE.txt, 1.1, 1.1.38.1
Message-ID: 

Update of /cvsroot/datatype/samples/audio_renderer2/pub/platform/mac
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv24809/datatype/samples/audio_renderer2/pub/platform/mac

Modified Files:
      Tag: SERVER_11_1
	LICENSE.txt 
Log Message:
Changing copyrigth to 2006.


Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/audio_renderer2/pub/platform/mac/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.1.38.1
diff -u -d -r1.1 -r1.1.38.1
--- LICENSE.txt	6 Feb 2004 15:25:16 -0000	1.1
+++ LICENSE.txt	16 Nov 2006 19:02:43 -0000	1.1.38.1
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Thu Nov 16 11:02:45 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:07:44 2006
Subject: [Datatype-cvs] samples/fileformat1_renderer LICENSE.txt, 1.1,
	1.1.38.1
Message-ID: 

Update of /cvsroot/datatype/samples/fileformat1_renderer
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv24809/datatype/samples/fileformat1_renderer

Modified Files:
      Tag: SERVER_11_1
	LICENSE.txt 
Log Message:
Changing copyrigth to 2006.


Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/fileformat1_renderer/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.1.38.1
diff -u -d -r1.1 -r1.1.38.1
--- LICENSE.txt	6 Feb 2004 15:25:16 -0000	1.1
+++ LICENSE.txt	16 Nov 2006 19:02:43 -0000	1.1.38.1
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Thu Nov 16 11:02:46 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:07:44 2006
Subject: [Datatype-cvs] samples/live_realpix LICENSE.txt,1.1,1.1.38.1
Message-ID: 

Update of /cvsroot/datatype/samples/live_realpix
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv24809/datatype/samples/live_realpix

Modified Files:
      Tag: SERVER_11_1
	LICENSE.txt 
Log Message:
Changing copyrigth to 2006.


Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/live_realpix/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.1.38.1
diff -u -d -r1.1 -r1.1.38.1
--- LICENSE.txt	6 Feb 2004 15:25:17 -0000	1.1
+++ LICENSE.txt	16 Nov 2006 19:02:43 -0000	1.1.38.1
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Thu Nov 16 11:02:45 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:07:45 2006
Subject: [Datatype-cvs] samples/example_renderer/pub/platform/mac
	LICENSE.txt, 1.1, 1.1.38.1
Message-ID: 

Update of /cvsroot/datatype/samples/example_renderer/pub/platform/mac
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv24809/datatype/samples/example_renderer/pub/platform/mac

Modified Files:
      Tag: SERVER_11_1
	LICENSE.txt 
Log Message:
Changing copyrigth to 2006.


Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/example_renderer/pub/platform/mac/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.1.38.1
diff -u -d -r1.1 -r1.1.38.1
--- LICENSE.txt	6 Feb 2004 15:25:16 -0000	1.1
+++ LICENSE.txt	16 Nov 2006 19:02:43 -0000	1.1.38.1
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Thu Nov 16 11:02:45 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:07:45 2006
Subject: [Datatype-cvs] samples/audio_renderer2/testdata LICENSE.txt, 1.1,
	1.1.38.1
Message-ID: 

Update of /cvsroot/datatype/samples/audio_renderer2/testdata
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv24809/datatype/samples/audio_renderer2/testdata

Modified Files:
      Tag: SERVER_11_1
	LICENSE.txt 
Log Message:
Changing copyrigth to 2006.


Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/audio_renderer2/testdata/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.1.38.1
diff -u -d -r1.1 -r1.1.38.1
--- LICENSE.txt	6 Feb 2004 15:25:16 -0000	1.1
+++ LICENSE.txt	16 Nov 2006 19:02:43 -0000	1.1.38.1
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Thu Nov 16 11:02:45 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:07:46 2006
Subject: [Datatype-cvs] samples/example_renderer2 LICENSE.txt,1.1,1.1.38.1
Message-ID: 

Update of /cvsroot/datatype/samples/example_renderer2
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv24809/datatype/samples/example_renderer2

Modified Files:
      Tag: SERVER_11_1
	LICENSE.txt 
Log Message:
Changing copyrigth to 2006.


Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/example_renderer2/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.1.38.1
diff -u -d -r1.1 -r1.1.38.1
--- LICENSE.txt	6 Feb 2004 15:25:16 -0000	1.1
+++ LICENSE.txt	16 Nov 2006 19:02:43 -0000	1.1.38.1
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Thu Nov 16 11:02:45 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:07:47 2006
Subject: [Datatype-cvs] samples/example_renderer LICENSE.txt,1.1,1.1.38.1
Message-ID: 

Update of /cvsroot/datatype/samples/example_renderer
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv24809/datatype/samples/example_renderer

Modified Files:
      Tag: SERVER_11_1
	LICENSE.txt 
Log Message:
Changing copyrigth to 2006.


Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/example_renderer/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.1.38.1
diff -u -d -r1.1 -r1.1.38.1
--- LICENSE.txt	6 Feb 2004 15:25:16 -0000	1.1
+++ LICENSE.txt	16 Nov 2006 19:02:43 -0000	1.1.38.1
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Thu Nov 16 11:02:45 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:07:48 2006
Subject: [Datatype-cvs] samples/example_renderer2/pub/platform/mac
	LICENSE.txt, 1.1, 1.1.38.1
Message-ID: 

Update of /cvsroot/datatype/samples/example_renderer2/pub/platform/mac
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv24809/datatype/samples/example_renderer2/pub/platform/mac

Modified Files:
      Tag: SERVER_11_1
	LICENSE.txt 
Log Message:
Changing copyrigth to 2006.


Index: LICENSE.txt
===================================================================
RCS file: /cvsroot/datatype/samples/example_renderer2/pub/platform/mac/LICENSE.txt,v
retrieving revision 1.1
retrieving revision 1.1.38.1
diff -u -d -r1.1 -r1.1.38.1
--- LICENSE.txt	6 Feb 2004 15:25:16 -0000	1.1
+++ LICENSE.txt	16 Nov 2006 19:02:43 -0000	1.1.38.1
@@ -1,4 +1,4 @@
- Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.  
+ Copyright (c) 1995-2006 RealNetworks, Inc. All Rights Reserved.  
         
  The contents of this directory, and (except where otherwise
  indicated) the directories included within this directory, are


From jrmoore at helixcommunity.org  Thu Nov 16 11:33:03 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:37:22 2006
Subject: [Datatype-cvs] samples/live_realtext sunos5.pcf,NONE,1.1.2.2
Message-ID: 

Update of /cvsroot/datatype/samples/live_realtext
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv29397/datatype/samples/live_realtext

Added Files:
      Tag: SERVER_11_1
	sunos5.pcf 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-server-nodist")

Branches: SERVER_11_1

Reviewer: Dean Collins

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-server-nodist for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Fixes:  Mostly removing macro PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME that
isn't used anymore (was a gcc 2.x thing).
The rest are minor warnings and fixes that are required by solaris.

Files Affected
==============

audio/samples/audio_device/advise_sink.cpp
audio/samples/audio_device/advise_sink.h
audio/samples/audio_device/audio_device.cpp
audio/samples/audio_device/audio_device.h
audio/samples/audio_device/authentication_manager.h
audio/samples/audio_device/fivemmap.cpp
audio/samples/audio_device/pub/platform/unix/os.h
audio/samples/audio_device/site_supplier.h
client/samples/reverter/reverter.cpp
clientapps/samples/motif_testclient/advise_sink.cpp
clientapps/samples/motif_testclient/advise_sink.h
clientapps/samples/motif_testclient/authorization_manager.h
clientapps/samples/motif_testclient/context.cpp
clientapps/samples/motif_testclient/fivemmap.cpp
clientapps/samples/motif_testclient/main.cpp
clientapps/samples/motif_testclient/os.h
clientapps/samples/motif_testclient/site_supplier.cpp
clientapps/samples/motif_testclient/site_supplier.h
clientapps/samples/testplay/acm_manager.cpp
clientapps/samples/testplay/advise_sink.cpp
clientapps/samples/testplay/advise_sink.h
clientapps/samples/testplay/authentication_manager.h
clientapps/samples/testplay/fivemmap.cpp
clientapps/samples/testplay/pub/platform/unix/os.h
clientapps/samples/testplay/site_supplier.h
clientapps/samples/testplay/sunos5.pcf
common/include/platform.h
common/samples/xml_parser/pub/platform/unix/os.h
common/samples/xml_parser/sunos5.pcf
datatype/samples/audio_renderer/audio_renderer.cpp
datatype/samples/audio_renderer/audio_renderer.h
datatype/samples/audio_renderer/audio_renderer.ver
datatype/samples/audio_renderer2/audio_renderer2.cpp
datatype/samples/audio_renderer2/audio_renderer2.h
datatype/samples/audio_renderer2/audio_renderer2.ver
datatype/samples/example_renderer/example_renderer.cpp
datatype/samples/example_renderer/example_renderer.h
datatype/samples/example_renderer/example_renderer.ver
datatype/samples/example_renderer2/example_renderer2.cpp
datatype/samples/example_renderer2/example_renderer2.h
datatype/samples/example_renderer2/example_renderer2.ver
datatype/samples/fileformat1_renderer/fileformat1_renderer.h
datatype/samples/live_realpix/live_realpix.cpp
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/live_realtext/pub/platform/unix/os.h
datatype/samples/live_slideshow/live_slideshow.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
datatype/samples/pcm_renderer/pcm_renderer.h
datatype/samples/pcm_renderer/pcm_renderer.ver
datatype/samples/pcm_renderer2/pcm_renderer2.ver
datatype/samples/pre_post_fileformat/pre_post_fileformat.h
datatype/samples/pre_post_fileformat/pre_post_fileformat.ver
datatype/samples/pre_post_renderer/pmrendr.ver
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/singlewindow_renderer/singlewindow_renderer.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.ver
datatype/samples/videosurface_renderer/videosurface_renderer.cpp
datatype/samples/videosurface_renderer/videosurface_renderer.h
datatype/samples/videosurface_renderer/videosurface_renderer.ver
server/samples/allowance/allowance.h
server/samples/authbasic/authbasic.cpp
server/samples/authbasic/authbasic.h
server/samples/broadcast/broadcast.cpp
server/samples/broadcast/broadcast.h
server/samples/converter/converter.cpp
server/samples/fileformat/fileformat.cpp
server/samples/fileformat/fileformat.h
server/samples/fileformat2/fileformat2.h
server/samples/livepacketsink/livepacketsink.h
server/samples/logging/logging.h
server/samples/monitor/monitor.cpp
server/samples/monitor/monitor.h
server/samples/payperview/payperview.h
video/samples/capture_vframes/advise_sink.h
video/samples/capture_vframes/authentication_manager.h
video/samples/capture_vframes/blt_service.h
video/samples/capture_vframes/nowindow_site.h
video/samples/capture_vframes/site_supplier.h
video/samples/capture_vframes/video_surface.h

The following are new files which are copies of linux2.pcf

clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf


Testing Performed
=================

Unit Tests:
  This will be done with stage2.

Integration tests:
  This will be done with stage2
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1



--- NEW FILE: sunos5.pcf ---
 # ***** BEGIN LICENSE BLOCK ***** 
 # Version: RCSL 1.0/RPSL 1.0 
 #  
 # Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
 #      
 # The contents of this file, and the files included with this file, are 
 # subject to the current version of the RealNetworks Public Source License 
 # Version 1.0 (the "RPSL") available at 
 # http://www.helixcommunity.org/content/rpsl unless you have licensed 
 # the file under the RealNetworks Community Source License Version 1.0 
 # (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
 # in which case the RCSL will apply. You may also obtain the license terms 
 # directly from RealNetworks.  You may not use this file except in 
 # compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
 # applicable to this file, the RCSL.  Please see the applicable RPSL or 
 # RCSL for the rights, obligations and limitations governing use of the 
 # contents of the file.  
 #  
 # This file is part of the Helix DNA Technology. RealNetworks is the 
 # developer of the Original Code and owns the copyrights in the portions 
 # it created. 
 #  
 # This file, and the files included with this file, is distributed and made 
 # available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
 # EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
 # INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
 # FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
 # 
 # Technology Compatibility Kit Test Suite(s) Location: 
 #    http://www.helixcommunity.org/content/tck 
 # 
 # Contributor(s): 
 #  
 # ***** END LICENSE BLOCK *****

project.sys_libraries[-1:-1] = ['dl']



From jrmoore at helixcommunity.org  Thu Nov 16 11:33:23 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:37:43 2006
Subject: [Datatype-cvs] samples/videosurface_renderer
	videosurface_renderer.cpp, 1.2,
	1.2.58.1 videosurface_renderer.h, 1.1.1.1,
	1.1.1.1.58.1 videosurface_renderer.ver, 1.1.1.1, 1.1.1.1.70.1
Message-ID: 

Update of /cvsroot/datatype/samples/videosurface_renderer
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv29397/datatype/samples/videosurface_renderer

Modified Files:
      Tag: SERVER_11_1
	videosurface_renderer.cpp videosurface_renderer.h 
	videosurface_renderer.ver 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-server-nodist")

Branches: SERVER_11_1

Reviewer: Dean Collins

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-server-nodist for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Fixes:  Mostly removing macro PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME that
isn't used anymore (was a gcc 2.x thing).
The rest are minor warnings and fixes that are required by solaris.

Files Affected
==============

audio/samples/audio_device/advise_sink.cpp
audio/samples/audio_device/advise_sink.h
audio/samples/audio_device/audio_device.cpp
audio/samples/audio_device/audio_device.h
audio/samples/audio_device/authentication_manager.h
audio/samples/audio_device/fivemmap.cpp
audio/samples/audio_device/pub/platform/unix/os.h
audio/samples/audio_device/site_supplier.h
client/samples/reverter/reverter.cpp
clientapps/samples/motif_testclient/advise_sink.cpp
clientapps/samples/motif_testclient/advise_sink.h
clientapps/samples/motif_testclient/authorization_manager.h
clientapps/samples/motif_testclient/context.cpp
clientapps/samples/motif_testclient/fivemmap.cpp
clientapps/samples/motif_testclient/main.cpp
clientapps/samples/motif_testclient/os.h
clientapps/samples/motif_testclient/site_supplier.cpp
clientapps/samples/motif_testclient/site_supplier.h
clientapps/samples/testplay/acm_manager.cpp
clientapps/samples/testplay/advise_sink.cpp
clientapps/samples/testplay/advise_sink.h
clientapps/samples/testplay/authentication_manager.h
clientapps/samples/testplay/fivemmap.cpp
clientapps/samples/testplay/pub/platform/unix/os.h
clientapps/samples/testplay/site_supplier.h
clientapps/samples/testplay/sunos5.pcf
common/include/platform.h
common/samples/xml_parser/pub/platform/unix/os.h
common/samples/xml_parser/sunos5.pcf
datatype/samples/audio_renderer/audio_renderer.cpp
datatype/samples/audio_renderer/audio_renderer.h
datatype/samples/audio_renderer/audio_renderer.ver
datatype/samples/audio_renderer2/audio_renderer2.cpp
datatype/samples/audio_renderer2/audio_renderer2.h
datatype/samples/audio_renderer2/audio_renderer2.ver
datatype/samples/example_renderer/example_renderer.cpp
datatype/samples/example_renderer/example_renderer.h
datatype/samples/example_renderer/example_renderer.ver
datatype/samples/example_renderer2/example_renderer2.cpp
datatype/samples/example_renderer2/example_renderer2.h
datatype/samples/example_renderer2/example_renderer2.ver
datatype/samples/fileformat1_renderer/fileformat1_renderer.h
datatype/samples/live_realpix/live_realpix.cpp
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/live_realtext/pub/platform/unix/os.h
datatype/samples/live_slideshow/live_slideshow.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
datatype/samples/pcm_renderer/pcm_renderer.h
datatype/samples/pcm_renderer/pcm_renderer.ver
datatype/samples/pcm_renderer2/pcm_renderer2.ver
datatype/samples/pre_post_fileformat/pre_post_fileformat.h
datatype/samples/pre_post_fileformat/pre_post_fileformat.ver
datatype/samples/pre_post_renderer/pmrendr.ver
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/singlewindow_renderer/singlewindow_renderer.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.ver
datatype/samples/videosurface_renderer/videosurface_renderer.cpp
datatype/samples/videosurface_renderer/videosurface_renderer.h
datatype/samples/videosurface_renderer/videosurface_renderer.ver
server/samples/allowance/allowance.h
server/samples/authbasic/authbasic.cpp
server/samples/authbasic/authbasic.h
server/samples/broadcast/broadcast.cpp
server/samples/broadcast/broadcast.h
server/samples/converter/converter.cpp
server/samples/fileformat/fileformat.cpp
server/samples/fileformat/fileformat.h
server/samples/fileformat2/fileformat2.h
server/samples/livepacketsink/livepacketsink.h
server/samples/logging/logging.h
server/samples/monitor/monitor.cpp
server/samples/monitor/monitor.h
server/samples/payperview/payperview.h
video/samples/capture_vframes/advise_sink.h
video/samples/capture_vframes/authentication_manager.h
video/samples/capture_vframes/blt_service.h
video/samples/capture_vframes/nowindow_site.h
video/samples/capture_vframes/site_supplier.h
video/samples/capture_vframes/video_surface.h

The following are new files which are copies of linux2.pcf

clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf


Testing Performed
=================

Unit Tests:
  This will be done with stage2.

Integration tests:
  This will be done with stage2
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1



Index: videosurface_renderer.h
===================================================================
RCS file: /cvsroot/datatype/samples/videosurface_renderer/videosurface_renderer.h,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.58.1
diff -u -d -r1.1.1.1 -r1.1.1.1.58.1
--- videosurface_renderer.h	24 Jun 2003 23:49:45 -0000	1.1.1.1
+++ videosurface_renderer.h	16 Nov 2006 19:33:21 -0000	1.1.1.1.58.1
@@ -156,8 +156,6 @@
     /****** Private Class Methods ******************************************/
     ~CExampleRenderer();
 
-    PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME       // Avoids GCC compiler warning
-    
     void    NegotiateImageFormat();
     void    CleanupVideoSurface();
 

Index: videosurface_renderer.cpp
===================================================================
RCS file: /cvsroot/datatype/samples/videosurface_renderer/videosurface_renderer.cpp,v
retrieving revision 1.2
retrieving revision 1.2.58.1
diff -u -d -r1.2 -r1.2.58.1
--- videosurface_renderer.cpp	22 Jul 2003 01:49:14 -0000	1.2
+++ videosurface_renderer.cpp	16 Nov 2006 19:33:21 -0000	1.2.58.1
@@ -56,10 +56,6 @@
 
 #include 
 
-#ifdef _WINDOWS
-    #include 
-#endif
-
 #ifdef _UNIX
     #include 
     #include 
@@ -812,13 +808,11 @@
     pEvent->result  = 0;
 
     #ifdef _UNIX
-    XEvent* xevent = (XEvent*)pEvent->param1;
     Widget oldWidget = m_widget;
     m_widget = (Widget)pEvent->window;
     if(!oldWidget)
     {
 	XGCValues values;
-	Font font;
 	XFontStruct* fontinfo;
 	fontinfo = XLoadQueryFont(XtDisplay((Widget)m_widget), "6x10");
 	values.font = fontinfo->fid;

Index: videosurface_renderer.ver
===================================================================
RCS file: /cvsroot/datatype/samples/videosurface_renderer/videosurface_renderer.ver,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.70.1
diff -u -d -r1.1.1.1 -r1.1.1.1.70.1
--- videosurface_renderer.ver	24 Jun 2003 23:49:45 -0000	1.1.1.1
+++ videosurface_renderer.ver	16 Nov 2006 19:33:21 -0000	1.1.1.1.70.1
@@ -35,10 +35,10 @@
 
 
 
-#define TARVER_ULONG32_VERSION ((10 << 28) | (0 << 20) | (0 << 12) | 0)
-#define TARVER_LIST_VERSION 10,0,0,0
-#define TARVER_MAJOR_VERSION 10
-#define TARVER_MINOR_VERSION 0
-#define TARVER_STRING_VERSION "10.0.0.0"
+#define TARVER_ULONG32_VERSION ((11 << 28) | (1 << 20) | (1 << 12) | 1073)
+#define TARVER_LIST_VERSION 11,1,1,1073
+#define TARVER_MAJOR_VERSION 11
+#define TARVER_MINOR_VERSION 1
+#define TARVER_STRING_VERSION "11.1.1.1073"
 #define TARVER_STR_BUILD_NAME ""
 #define TARVER_STR_PLATFORM "win32"


From jrmoore at helixcommunity.org  Thu Nov 16 11:32:55 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:37:45 2006
Subject: [Datatype-cvs] 
	samples/example_renderer2 example_renderer2.cpp, 1.2,
	1.2.58.1 example_renderer2.h, 1.1.1.1,
	1.1.1.1.58.1 example_renderer2.ver, 1.1.1.1, 1.1.1.1.70.1
Message-ID: 

Update of /cvsroot/datatype/samples/example_renderer2
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv29397/datatype/samples/example_renderer2

Modified Files:
      Tag: SERVER_11_1
	example_renderer2.cpp example_renderer2.h 
	example_renderer2.ver 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-server-nodist")

Branches: SERVER_11_1

Reviewer: Dean Collins

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-server-nodist for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Fixes:  Mostly removing macro PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME that
isn't used anymore (was a gcc 2.x thing).
The rest are minor warnings and fixes that are required by solaris.

Files Affected
==============

audio/samples/audio_device/advise_sink.cpp
audio/samples/audio_device/advise_sink.h
audio/samples/audio_device/audio_device.cpp
audio/samples/audio_device/audio_device.h
audio/samples/audio_device/authentication_manager.h
audio/samples/audio_device/fivemmap.cpp
audio/samples/audio_device/pub/platform/unix/os.h
audio/samples/audio_device/site_supplier.h
client/samples/reverter/reverter.cpp
clientapps/samples/motif_testclient/advise_sink.cpp
clientapps/samples/motif_testclient/advise_sink.h
clientapps/samples/motif_testclient/authorization_manager.h
clientapps/samples/motif_testclient/context.cpp
clientapps/samples/motif_testclient/fivemmap.cpp
clientapps/samples/motif_testclient/main.cpp
clientapps/samples/motif_testclient/os.h
clientapps/samples/motif_testclient/site_supplier.cpp
clientapps/samples/motif_testclient/site_supplier.h
clientapps/samples/testplay/acm_manager.cpp
clientapps/samples/testplay/advise_sink.cpp
clientapps/samples/testplay/advise_sink.h
clientapps/samples/testplay/authentication_manager.h
clientapps/samples/testplay/fivemmap.cpp
clientapps/samples/testplay/pub/platform/unix/os.h
clientapps/samples/testplay/site_supplier.h
clientapps/samples/testplay/sunos5.pcf
common/include/platform.h
common/samples/xml_parser/pub/platform/unix/os.h
common/samples/xml_parser/sunos5.pcf
datatype/samples/audio_renderer/audio_renderer.cpp
datatype/samples/audio_renderer/audio_renderer.h
datatype/samples/audio_renderer/audio_renderer.ver
datatype/samples/audio_renderer2/audio_renderer2.cpp
datatype/samples/audio_renderer2/audio_renderer2.h
datatype/samples/audio_renderer2/audio_renderer2.ver
datatype/samples/example_renderer/example_renderer.cpp
datatype/samples/example_renderer/example_renderer.h
datatype/samples/example_renderer/example_renderer.ver
datatype/samples/example_renderer2/example_renderer2.cpp
datatype/samples/example_renderer2/example_renderer2.h
datatype/samples/example_renderer2/example_renderer2.ver
datatype/samples/fileformat1_renderer/fileformat1_renderer.h
datatype/samples/live_realpix/live_realpix.cpp
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/live_realtext/pub/platform/unix/os.h
datatype/samples/live_slideshow/live_slideshow.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
datatype/samples/pcm_renderer/pcm_renderer.h
datatype/samples/pcm_renderer/pcm_renderer.ver
datatype/samples/pcm_renderer2/pcm_renderer2.ver
datatype/samples/pre_post_fileformat/pre_post_fileformat.h
datatype/samples/pre_post_fileformat/pre_post_fileformat.ver
datatype/samples/pre_post_renderer/pmrendr.ver
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/singlewindow_renderer/singlewindow_renderer.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.ver
datatype/samples/videosurface_renderer/videosurface_renderer.cpp
datatype/samples/videosurface_renderer/videosurface_renderer.h
datatype/samples/videosurface_renderer/videosurface_renderer.ver
server/samples/allowance/allowance.h
server/samples/authbasic/authbasic.cpp
server/samples/authbasic/authbasic.h
server/samples/broadcast/broadcast.cpp
server/samples/broadcast/broadcast.h
server/samples/converter/converter.cpp
server/samples/fileformat/fileformat.cpp
server/samples/fileformat/fileformat.h
server/samples/fileformat2/fileformat2.h
server/samples/livepacketsink/livepacketsink.h
server/samples/logging/logging.h
server/samples/monitor/monitor.cpp
server/samples/monitor/monitor.h
server/samples/payperview/payperview.h
video/samples/capture_vframes/advise_sink.h
video/samples/capture_vframes/authentication_manager.h
video/samples/capture_vframes/blt_service.h
video/samples/capture_vframes/nowindow_site.h
video/samples/capture_vframes/site_supplier.h
video/samples/capture_vframes/video_surface.h

The following are new files which are copies of linux2.pcf

clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf


Testing Performed
=================

Unit Tests:
  This will be done with stage2.

Integration tests:
  This will be done with stage2
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1



Index: example_renderer2.cpp
===================================================================
RCS file: /cvsroot/datatype/samples/example_renderer2/example_renderer2.cpp,v
retrieving revision 1.2
retrieving revision 1.2.58.1
diff -u -d -r1.2 -r1.2.58.1
--- example_renderer2.cpp	22 Jul 2003 01:49:14 -0000	1.2
+++ example_renderer2.cpp	16 Nov 2006 19:32:52 -0000	1.2.58.1
@@ -54,10 +54,6 @@
 
 #include 
 
-#ifdef _WINDOWS
-    #include 
-#endif
-
 #ifdef _UNIX
     #include 
     #include 
@@ -644,7 +640,7 @@
 	{
 	    sprintf(szPacketFormat,"Last Packet Contained: %%.%is",
 		(pBuffer->GetSize() < MAX_PACKET_SIZE ? 
-		    pBuffer->GetSize() : MAX_PACKET_SIZE));
+		    (int)pBuffer->GetSize() : MAX_PACKET_SIZE));
 	    nLength4 = sprintf(szText4,szPacketFormat,pBuffer->GetBuffer());
 	    pBuffer->Release();
 	}
@@ -804,13 +800,11 @@
     pEvent->result  = 0;
 
     #ifdef _UNIX
-    XEvent* xevent = (XEvent*)pEvent->param1;
     Widget oldWidget = m_widget;
     m_widget = (Widget)pEvent->window;
     if(!oldWidget)
     {
 	XGCValues values;
-	Font font;
 	XFontStruct* fontinfo;
 	fontinfo = XLoadQueryFont(XtDisplay((Widget)m_widget), "6x10");
 	values.font = fontinfo->fid;

Index: example_renderer2.ver
===================================================================
RCS file: /cvsroot/datatype/samples/example_renderer2/example_renderer2.ver,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.70.1
diff -u -d -r1.1.1.1 -r1.1.1.1.70.1
--- example_renderer2.ver	24 Jun 2003 23:49:44 -0000	1.1.1.1
+++ example_renderer2.ver	16 Nov 2006 19:32:52 -0000	1.1.1.1.70.1
@@ -33,10 +33,10 @@
  *  
  * ***** END LICENSE BLOCK ***** */
 
-#define TARVER_ULONG32_VERSION ((10 << 28) | (0 << 20) | (0 << 12) | 0)
-#define TARVER_LIST_VERSION 10,0,0,0
-#define TARVER_MAJOR_VERSION 10
-#define TARVER_MINOR_VERSION 0
-#define TARVER_STRING_VERSION "10.0.0.0"
+#define TARVER_ULONG32_VERSION ((11 << 28) | (1 << 20) | (1 << 12) | 1073)
+#define TARVER_LIST_VERSION 11,1,1,1073
+#define TARVER_MAJOR_VERSION 11
+#define TARVER_MINOR_VERSION 1
+#define TARVER_STRING_VERSION "11.1.1.1073"
 #define TARVER_STR_BUILD_NAME ""
 #define TARVER_STR_PLATFORM "win32"

Index: example_renderer2.h
===================================================================
RCS file: /cvsroot/datatype/samples/example_renderer2/example_renderer2.h,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.58.1
diff -u -d -r1.1.1.1 -r1.1.1.1.58.1
--- example_renderer2.h	24 Jun 2003 23:49:44 -0000	1.1.1.1
+++ example_renderer2.h	16 Nov 2006 19:32:52 -0000	1.1.1.1.58.1
@@ -191,8 +191,6 @@
 
     /****** Private Class Methods ******************************************/
     ~CExampleRenderer();
-
-    PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME       // Avoids GCC compiler warning
 };
 
 


From jrmoore at helixcommunity.org  Thu Nov 16 11:32:57 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:37:48 2006
Subject: [Datatype-cvs] samples/fileformat1_renderer fileformat1_renderer.h,
	1.1.1.1, 1.1.1.1.58.1
Message-ID: 

Update of /cvsroot/datatype/samples/fileformat1_renderer
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv29397/datatype/samples/fileformat1_renderer

Modified Files:
      Tag: SERVER_11_1
	fileformat1_renderer.h 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-server-nodist")

Branches: SERVER_11_1

Reviewer: Dean Collins

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-server-nodist for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Fixes:  Mostly removing macro PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME that
isn't used anymore (was a gcc 2.x thing).
The rest are minor warnings and fixes that are required by solaris.

Files Affected
==============

audio/samples/audio_device/advise_sink.cpp
audio/samples/audio_device/advise_sink.h
audio/samples/audio_device/audio_device.cpp
audio/samples/audio_device/audio_device.h
audio/samples/audio_device/authentication_manager.h
audio/samples/audio_device/fivemmap.cpp
audio/samples/audio_device/pub/platform/unix/os.h
audio/samples/audio_device/site_supplier.h
client/samples/reverter/reverter.cpp
clientapps/samples/motif_testclient/advise_sink.cpp
clientapps/samples/motif_testclient/advise_sink.h
clientapps/samples/motif_testclient/authorization_manager.h
clientapps/samples/motif_testclient/context.cpp
clientapps/samples/motif_testclient/fivemmap.cpp
clientapps/samples/motif_testclient/main.cpp
clientapps/samples/motif_testclient/os.h
clientapps/samples/motif_testclient/site_supplier.cpp
clientapps/samples/motif_testclient/site_supplier.h
clientapps/samples/testplay/acm_manager.cpp
clientapps/samples/testplay/advise_sink.cpp
clientapps/samples/testplay/advise_sink.h
clientapps/samples/testplay/authentication_manager.h
clientapps/samples/testplay/fivemmap.cpp
clientapps/samples/testplay/pub/platform/unix/os.h
clientapps/samples/testplay/site_supplier.h
clientapps/samples/testplay/sunos5.pcf
common/include/platform.h
common/samples/xml_parser/pub/platform/unix/os.h
common/samples/xml_parser/sunos5.pcf
datatype/samples/audio_renderer/audio_renderer.cpp
datatype/samples/audio_renderer/audio_renderer.h
datatype/samples/audio_renderer/audio_renderer.ver
datatype/samples/audio_renderer2/audio_renderer2.cpp
datatype/samples/audio_renderer2/audio_renderer2.h
datatype/samples/audio_renderer2/audio_renderer2.ver
datatype/samples/example_renderer/example_renderer.cpp
datatype/samples/example_renderer/example_renderer.h
datatype/samples/example_renderer/example_renderer.ver
datatype/samples/example_renderer2/example_renderer2.cpp
datatype/samples/example_renderer2/example_renderer2.h
datatype/samples/example_renderer2/example_renderer2.ver
datatype/samples/fileformat1_renderer/fileformat1_renderer.h
datatype/samples/live_realpix/live_realpix.cpp
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/live_realtext/pub/platform/unix/os.h
datatype/samples/live_slideshow/live_slideshow.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
datatype/samples/pcm_renderer/pcm_renderer.h
datatype/samples/pcm_renderer/pcm_renderer.ver
datatype/samples/pcm_renderer2/pcm_renderer2.ver
datatype/samples/pre_post_fileformat/pre_post_fileformat.h
datatype/samples/pre_post_fileformat/pre_post_fileformat.ver
datatype/samples/pre_post_renderer/pmrendr.ver
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/singlewindow_renderer/singlewindow_renderer.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.ver
datatype/samples/videosurface_renderer/videosurface_renderer.cpp
datatype/samples/videosurface_renderer/videosurface_renderer.h
datatype/samples/videosurface_renderer/videosurface_renderer.ver
server/samples/allowance/allowance.h
server/samples/authbasic/authbasic.cpp
server/samples/authbasic/authbasic.h
server/samples/broadcast/broadcast.cpp
server/samples/broadcast/broadcast.h
server/samples/converter/converter.cpp
server/samples/fileformat/fileformat.cpp
server/samples/fileformat/fileformat.h
server/samples/fileformat2/fileformat2.h
server/samples/livepacketsink/livepacketsink.h
server/samples/logging/logging.h
server/samples/monitor/monitor.cpp
server/samples/monitor/monitor.h
server/samples/payperview/payperview.h
video/samples/capture_vframes/advise_sink.h
video/samples/capture_vframes/authentication_manager.h
video/samples/capture_vframes/blt_service.h
video/samples/capture_vframes/nowindow_site.h
video/samples/capture_vframes/site_supplier.h
video/samples/capture_vframes/video_surface.h

The following are new files which are copies of linux2.pcf

clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf


Testing Performed
=================

Unit Tests:
  This will be done with stage2.

Integration tests:
  This will be done with stage2
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1



Index: fileformat1_renderer.h
===================================================================
RCS file: /cvsroot/datatype/samples/fileformat1_renderer/fileformat1_renderer.h,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.58.1
diff -u -d -r1.1.1.1 -r1.1.1.1.58.1
--- fileformat1_renderer.h	24 Jun 2003 23:49:44 -0000	1.1.1.1
+++ fileformat1_renderer.h	16 Nov 2006 19:32:55 -0000	1.1.1.1.58.1
@@ -140,7 +140,6 @@
 	static const char*      zm_pMoreInfoURL;
 	static const char*      zm_pStreamMimeTypes[];
 
-	PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME       // Avoids GCC compiler warning
 };
 
 #endif  /* ifndef _FILEFORMAT1_RENDERER_H_ */


From jrmoore at helixcommunity.org  Thu Nov 16 11:32:59 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:37:50 2006
Subject: [Datatype-cvs] samples/live_realpix sunos5.pcf, NONE,
	1.1.2.2 live_realpix.cpp, 1.2, 1.2.70.1
Message-ID: 

Update of /cvsroot/datatype/samples/live_realpix
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv29397/datatype/samples/live_realpix

Modified Files:
      Tag: SERVER_11_1
	live_realpix.cpp 
Added Files:
      Tag: SERVER_11_1
	sunos5.pcf 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-server-nodist")

Branches: SERVER_11_1

Reviewer: Dean Collins

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-server-nodist for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Fixes:  Mostly removing macro PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME that
isn't used anymore (was a gcc 2.x thing).
The rest are minor warnings and fixes that are required by solaris.

Files Affected
==============

audio/samples/audio_device/advise_sink.cpp
audio/samples/audio_device/advise_sink.h
audio/samples/audio_device/audio_device.cpp
audio/samples/audio_device/audio_device.h
audio/samples/audio_device/authentication_manager.h
audio/samples/audio_device/fivemmap.cpp
audio/samples/audio_device/pub/platform/unix/os.h
audio/samples/audio_device/site_supplier.h
client/samples/reverter/reverter.cpp
clientapps/samples/motif_testclient/advise_sink.cpp
clientapps/samples/motif_testclient/advise_sink.h
clientapps/samples/motif_testclient/authorization_manager.h
clientapps/samples/motif_testclient/context.cpp
clientapps/samples/motif_testclient/fivemmap.cpp
clientapps/samples/motif_testclient/main.cpp
clientapps/samples/motif_testclient/os.h
clientapps/samples/motif_testclient/site_supplier.cpp
clientapps/samples/motif_testclient/site_supplier.h
clientapps/samples/testplay/acm_manager.cpp
clientapps/samples/testplay/advise_sink.cpp
clientapps/samples/testplay/advise_sink.h
clientapps/samples/testplay/authentication_manager.h
clientapps/samples/testplay/fivemmap.cpp
clientapps/samples/testplay/pub/platform/unix/os.h
clientapps/samples/testplay/site_supplier.h
clientapps/samples/testplay/sunos5.pcf
common/include/platform.h
common/samples/xml_parser/pub/platform/unix/os.h
common/samples/xml_parser/sunos5.pcf
datatype/samples/audio_renderer/audio_renderer.cpp
datatype/samples/audio_renderer/audio_renderer.h
datatype/samples/audio_renderer/audio_renderer.ver
datatype/samples/audio_renderer2/audio_renderer2.cpp
datatype/samples/audio_renderer2/audio_renderer2.h
datatype/samples/audio_renderer2/audio_renderer2.ver
datatype/samples/example_renderer/example_renderer.cpp
datatype/samples/example_renderer/example_renderer.h
datatype/samples/example_renderer/example_renderer.ver
datatype/samples/example_renderer2/example_renderer2.cpp
datatype/samples/example_renderer2/example_renderer2.h
datatype/samples/example_renderer2/example_renderer2.ver
datatype/samples/fileformat1_renderer/fileformat1_renderer.h
datatype/samples/live_realpix/live_realpix.cpp
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/live_realtext/pub/platform/unix/os.h
datatype/samples/live_slideshow/live_slideshow.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
datatype/samples/pcm_renderer/pcm_renderer.h
datatype/samples/pcm_renderer/pcm_renderer.ver
datatype/samples/pcm_renderer2/pcm_renderer2.ver
datatype/samples/pre_post_fileformat/pre_post_fileformat.h
datatype/samples/pre_post_fileformat/pre_post_fileformat.ver
datatype/samples/pre_post_renderer/pmrendr.ver
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/singlewindow_renderer/singlewindow_renderer.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.ver
datatype/samples/videosurface_renderer/videosurface_renderer.cpp
datatype/samples/videosurface_renderer/videosurface_renderer.h
datatype/samples/videosurface_renderer/videosurface_renderer.ver
server/samples/allowance/allowance.h
server/samples/authbasic/authbasic.cpp
server/samples/authbasic/authbasic.h
server/samples/broadcast/broadcast.cpp
server/samples/broadcast/broadcast.h
server/samples/converter/converter.cpp
server/samples/fileformat/fileformat.cpp
server/samples/fileformat/fileformat.h
server/samples/fileformat2/fileformat2.h
server/samples/livepacketsink/livepacketsink.h
server/samples/logging/logging.h
server/samples/monitor/monitor.cpp
server/samples/monitor/monitor.h
server/samples/payperview/payperview.h
video/samples/capture_vframes/advise_sink.h
video/samples/capture_vframes/authentication_manager.h
video/samples/capture_vframes/blt_service.h
video/samples/capture_vframes/nowindow_site.h
video/samples/capture_vframes/site_supplier.h
video/samples/capture_vframes/video_surface.h

The following are new files which are copies of linux2.pcf

clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf


Testing Performed
=================

Unit Tests:
  This will be done with stage2.

Integration tests:
  This will be done with stage2
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1



Index: live_realpix.cpp
===================================================================
RCS file: /cvsroot/datatype/samples/live_realpix/live_realpix.cpp,v
retrieving revision 1.2
retrieving revision 1.2.70.1
diff -u -d -r1.2 -r1.2.70.1
--- live_realpix.cpp	14 Jul 2003 19:33:23 -0000	1.2
+++ live_realpix.cpp	16 Nov 2006 19:32:57 -0000	1.2.70.1
@@ -249,7 +249,6 @@
     // back to watching again.
     UINT32 ulCurHandle  = 0;
     BYTE   ucEffectType = 1;
-    UINT32 ulSize       = 0;
     m_ulState           = kStateIdle;
     while(m_ulState != kStateStopped)
     {

--- NEW FILE: sunos5.pcf ---
 # ***** BEGIN LICENSE BLOCK ***** 
 # Version: RCSL 1.0/RPSL 1.0 
 #  
 # Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
 #      
 # The contents of this file, and the files included with this file, are 
 # subject to the current version of the RealNetworks Public Source License 
 # Version 1.0 (the "RPSL") available at 
 # http://www.helixcommunity.org/content/rpsl unless you have licensed 
 # the file under the RealNetworks Community Source License Version 1.0 
 # (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
 # in which case the RCSL will apply. You may also obtain the license terms 
 # directly from RealNetworks.  You may not use this file except in 
 # compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
 # applicable to this file, the RCSL.  Please see the applicable RPSL or 
 # RCSL for the rights, obligations and limitations governing use of the 
 # contents of the file.  
 #  
 # This file is part of the Helix DNA Technology. RealNetworks is the 
 # developer of the Original Code and owns the copyrights in the portions 
 # it created. 
 #  
 # This file, and the files included with this file, is distributed and made 
 # available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
 # EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
 # INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
 # FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
 # 
 # Technology Compatibility Kit Test Suite(s) Location: 
 #    http://www.helixcommunity.org/content/tck 
 # 
 # Contributor(s): 
 #  
 # ***** END LICENSE BLOCK *****

project.sys_libraries[-1:-1] = ['dl']



From jrmoore at helixcommunity.org  Thu Nov 16 11:33:01 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:37:51 2006
Subject: [Datatype-cvs] samples/live_realpix/pub/platform/unix os.h, 1.2,
	1.2.70.1
Message-ID: 

Update of /cvsroot/datatype/samples/live_realpix/pub/platform/unix
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv29397/datatype/samples/live_realpix/pub/platform/unix

Modified Files:
      Tag: SERVER_11_1
	os.h 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-server-nodist")

Branches: SERVER_11_1

Reviewer: Dean Collins

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-server-nodist for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Fixes:  Mostly removing macro PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME that
isn't used anymore (was a gcc 2.x thing).
The rest are minor warnings and fixes that are required by solaris.

Files Affected
==============

audio/samples/audio_device/advise_sink.cpp
audio/samples/audio_device/advise_sink.h
audio/samples/audio_device/audio_device.cpp
audio/samples/audio_device/audio_device.h
audio/samples/audio_device/authentication_manager.h
audio/samples/audio_device/fivemmap.cpp
audio/samples/audio_device/pub/platform/unix/os.h
audio/samples/audio_device/site_supplier.h
client/samples/reverter/reverter.cpp
clientapps/samples/motif_testclient/advise_sink.cpp
clientapps/samples/motif_testclient/advise_sink.h
clientapps/samples/motif_testclient/authorization_manager.h
clientapps/samples/motif_testclient/context.cpp
clientapps/samples/motif_testclient/fivemmap.cpp
clientapps/samples/motif_testclient/main.cpp
clientapps/samples/motif_testclient/os.h
clientapps/samples/motif_testclient/site_supplier.cpp
clientapps/samples/motif_testclient/site_supplier.h
clientapps/samples/testplay/acm_manager.cpp
clientapps/samples/testplay/advise_sink.cpp
clientapps/samples/testplay/advise_sink.h
clientapps/samples/testplay/authentication_manager.h
clientapps/samples/testplay/fivemmap.cpp
clientapps/samples/testplay/pub/platform/unix/os.h
clientapps/samples/testplay/site_supplier.h
clientapps/samples/testplay/sunos5.pcf
common/include/platform.h
common/samples/xml_parser/pub/platform/unix/os.h
common/samples/xml_parser/sunos5.pcf
datatype/samples/audio_renderer/audio_renderer.cpp
datatype/samples/audio_renderer/audio_renderer.h
datatype/samples/audio_renderer/audio_renderer.ver
datatype/samples/audio_renderer2/audio_renderer2.cpp
datatype/samples/audio_renderer2/audio_renderer2.h
datatype/samples/audio_renderer2/audio_renderer2.ver
datatype/samples/example_renderer/example_renderer.cpp
datatype/samples/example_renderer/example_renderer.h
datatype/samples/example_renderer/example_renderer.ver
datatype/samples/example_renderer2/example_renderer2.cpp
datatype/samples/example_renderer2/example_renderer2.h
datatype/samples/example_renderer2/example_renderer2.ver
datatype/samples/fileformat1_renderer/fileformat1_renderer.h
datatype/samples/live_realpix/live_realpix.cpp
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/live_realtext/pub/platform/unix/os.h
datatype/samples/live_slideshow/live_slideshow.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
datatype/samples/pcm_renderer/pcm_renderer.h
datatype/samples/pcm_renderer/pcm_renderer.ver
datatype/samples/pcm_renderer2/pcm_renderer2.ver
datatype/samples/pre_post_fileformat/pre_post_fileformat.h
datatype/samples/pre_post_fileformat/pre_post_fileformat.ver
datatype/samples/pre_post_renderer/pmrendr.ver
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/singlewindow_renderer/singlewindow_renderer.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.ver
datatype/samples/videosurface_renderer/videosurface_renderer.cpp
datatype/samples/videosurface_renderer/videosurface_renderer.h
datatype/samples/videosurface_renderer/videosurface_renderer.ver
server/samples/allowance/allowance.h
server/samples/authbasic/authbasic.cpp
server/samples/authbasic/authbasic.h
server/samples/broadcast/broadcast.cpp
server/samples/broadcast/broadcast.h
server/samples/converter/converter.cpp
server/samples/fileformat/fileformat.cpp
server/samples/fileformat/fileformat.h
server/samples/fileformat2/fileformat2.h
server/samples/livepacketsink/livepacketsink.h
server/samples/logging/logging.h
server/samples/monitor/monitor.cpp
server/samples/monitor/monitor.h
server/samples/payperview/payperview.h
video/samples/capture_vframes/advise_sink.h
video/samples/capture_vframes/authentication_manager.h
video/samples/capture_vframes/blt_service.h
video/samples/capture_vframes/nowindow_site.h
video/samples/capture_vframes/site_supplier.h
video/samples/capture_vframes/video_surface.h

The following are new files which are copies of linux2.pcf

clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf


Testing Performed
=================

Unit Tests:
  This will be done with stage2.

Integration tests:
  This will be done with stage2
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1



Index: os.h
===================================================================
RCS file: /cvsroot/datatype/samples/live_realpix/pub/platform/unix/os.h,v
retrieving revision 1.2
retrieving revision 1.2.70.1
diff -u -d -r1.2 -r1.2.70.1
--- os.h	14 Jul 2003 20:39:20 -0000	1.2
+++ os.h	16 Nov 2006 19:32:59 -0000	1.2.70.1
@@ -64,7 +64,7 @@
 
 #if defined(_UNIX)
 inline HINSTANCE
-LoadLibrary(char* pFileName)
+LoadLibrary(const char* pFileName)
 {
     char  pNewFileName[2048];
     char* pTemp = pNewFileName;


From jrmoore at helixcommunity.org  Thu Nov 16 11:33:06 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:37:57 2006
Subject: [Datatype-cvs] 
	samples/live_realtext/pub/platform/unix os.h, 1.1.1.1, 1.1.1.1.70.1
Message-ID: 

Update of /cvsroot/datatype/samples/live_realtext/pub/platform/unix
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv29397/datatype/samples/live_realtext/pub/platform/unix

Modified Files:
      Tag: SERVER_11_1
	os.h 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-server-nodist")

Branches: SERVER_11_1

Reviewer: Dean Collins

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-server-nodist for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Fixes:  Mostly removing macro PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME that
isn't used anymore (was a gcc 2.x thing).
The rest are minor warnings and fixes that are required by solaris.

Files Affected
==============

audio/samples/audio_device/advise_sink.cpp
audio/samples/audio_device/advise_sink.h
audio/samples/audio_device/audio_device.cpp
audio/samples/audio_device/audio_device.h
audio/samples/audio_device/authentication_manager.h
audio/samples/audio_device/fivemmap.cpp
audio/samples/audio_device/pub/platform/unix/os.h
audio/samples/audio_device/site_supplier.h
client/samples/reverter/reverter.cpp
clientapps/samples/motif_testclient/advise_sink.cpp
clientapps/samples/motif_testclient/advise_sink.h
clientapps/samples/motif_testclient/authorization_manager.h
clientapps/samples/motif_testclient/context.cpp
clientapps/samples/motif_testclient/fivemmap.cpp
clientapps/samples/motif_testclient/main.cpp
clientapps/samples/motif_testclient/os.h
clientapps/samples/motif_testclient/site_supplier.cpp
clientapps/samples/motif_testclient/site_supplier.h
clientapps/samples/testplay/acm_manager.cpp
clientapps/samples/testplay/advise_sink.cpp
clientapps/samples/testplay/advise_sink.h
clientapps/samples/testplay/authentication_manager.h
clientapps/samples/testplay/fivemmap.cpp
clientapps/samples/testplay/pub/platform/unix/os.h
clientapps/samples/testplay/site_supplier.h
clientapps/samples/testplay/sunos5.pcf
common/include/platform.h
common/samples/xml_parser/pub/platform/unix/os.h
common/samples/xml_parser/sunos5.pcf
datatype/samples/audio_renderer/audio_renderer.cpp
datatype/samples/audio_renderer/audio_renderer.h
datatype/samples/audio_renderer/audio_renderer.ver
datatype/samples/audio_renderer2/audio_renderer2.cpp
datatype/samples/audio_renderer2/audio_renderer2.h
datatype/samples/audio_renderer2/audio_renderer2.ver
datatype/samples/example_renderer/example_renderer.cpp
datatype/samples/example_renderer/example_renderer.h
datatype/samples/example_renderer/example_renderer.ver
datatype/samples/example_renderer2/example_renderer2.cpp
datatype/samples/example_renderer2/example_renderer2.h
datatype/samples/example_renderer2/example_renderer2.ver
datatype/samples/fileformat1_renderer/fileformat1_renderer.h
datatype/samples/live_realpix/live_realpix.cpp
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/live_realtext/pub/platform/unix/os.h
datatype/samples/live_slideshow/live_slideshow.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
datatype/samples/pcm_renderer/pcm_renderer.h
datatype/samples/pcm_renderer/pcm_renderer.ver
datatype/samples/pcm_renderer2/pcm_renderer2.ver
datatype/samples/pre_post_fileformat/pre_post_fileformat.h
datatype/samples/pre_post_fileformat/pre_post_fileformat.ver
datatype/samples/pre_post_renderer/pmrendr.ver
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/singlewindow_renderer/singlewindow_renderer.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.ver
datatype/samples/videosurface_renderer/videosurface_renderer.cpp
datatype/samples/videosurface_renderer/videosurface_renderer.h
datatype/samples/videosurface_renderer/videosurface_renderer.ver
server/samples/allowance/allowance.h
server/samples/authbasic/authbasic.cpp
server/samples/authbasic/authbasic.h
server/samples/broadcast/broadcast.cpp
server/samples/broadcast/broadcast.h
server/samples/converter/converter.cpp
server/samples/fileformat/fileformat.cpp
server/samples/fileformat/fileformat.h
server/samples/fileformat2/fileformat2.h
server/samples/livepacketsink/livepacketsink.h
server/samples/logging/logging.h
server/samples/monitor/monitor.cpp
server/samples/monitor/monitor.h
server/samples/payperview/payperview.h
video/samples/capture_vframes/advise_sink.h
video/samples/capture_vframes/authentication_manager.h
video/samples/capture_vframes/blt_service.h
video/samples/capture_vframes/nowindow_site.h
video/samples/capture_vframes/site_supplier.h
video/samples/capture_vframes/video_surface.h

The following are new files which are copies of linux2.pcf

clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf


Testing Performed
=================

Unit Tests:
  This will be done with stage2.

Integration tests:
  This will be done with stage2
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1



Index: os.h
===================================================================
RCS file: /cvsroot/datatype/samples/live_realtext/pub/platform/unix/os.h,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.70.1
diff -u -d -r1.1.1.1 -r1.1.1.1.70.1
--- os.h	24 Jun 2003 23:49:45 -0000	1.1.1.1
+++ os.h	16 Nov 2006 19:33:03 -0000	1.1.1.1.70.1
@@ -63,7 +63,7 @@
 
 #if defined(_UNIX)
 inline HINSTANCE
-LoadLibrary(char* pFileName)
+LoadLibrary(const char* pFileName)
 {
     char  pNewFileName[2048];
     char* pTemp = pNewFileName;


From jrmoore at helixcommunity.org  Thu Nov 16 11:33:08 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:38:00 2006
Subject: [Datatype-cvs] samples/live_slideshow sunos5.pcf, NONE,
	1.1.2.2 live_slideshow.cpp, 1.1.1.1, 1.1.1.1.70.1
Message-ID: 

Update of /cvsroot/datatype/samples/live_slideshow
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv29397/datatype/samples/live_slideshow

Modified Files:
      Tag: SERVER_11_1
	live_slideshow.cpp 
Added Files:
      Tag: SERVER_11_1
	sunos5.pcf 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-server-nodist")

Branches: SERVER_11_1

Reviewer: Dean Collins

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-server-nodist for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Fixes:  Mostly removing macro PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME that
isn't used anymore (was a gcc 2.x thing).
The rest are minor warnings and fixes that are required by solaris.

Files Affected
==============

audio/samples/audio_device/advise_sink.cpp
audio/samples/audio_device/advise_sink.h
audio/samples/audio_device/audio_device.cpp
audio/samples/audio_device/audio_device.h
audio/samples/audio_device/authentication_manager.h
audio/samples/audio_device/fivemmap.cpp
audio/samples/audio_device/pub/platform/unix/os.h
audio/samples/audio_device/site_supplier.h
client/samples/reverter/reverter.cpp
clientapps/samples/motif_testclient/advise_sink.cpp
clientapps/samples/motif_testclient/advise_sink.h
clientapps/samples/motif_testclient/authorization_manager.h
clientapps/samples/motif_testclient/context.cpp
clientapps/samples/motif_testclient/fivemmap.cpp
clientapps/samples/motif_testclient/main.cpp
clientapps/samples/motif_testclient/os.h
clientapps/samples/motif_testclient/site_supplier.cpp
clientapps/samples/motif_testclient/site_supplier.h
clientapps/samples/testplay/acm_manager.cpp
clientapps/samples/testplay/advise_sink.cpp
clientapps/samples/testplay/advise_sink.h
clientapps/samples/testplay/authentication_manager.h
clientapps/samples/testplay/fivemmap.cpp
clientapps/samples/testplay/pub/platform/unix/os.h
clientapps/samples/testplay/site_supplier.h
clientapps/samples/testplay/sunos5.pcf
common/include/platform.h
common/samples/xml_parser/pub/platform/unix/os.h
common/samples/xml_parser/sunos5.pcf
datatype/samples/audio_renderer/audio_renderer.cpp
datatype/samples/audio_renderer/audio_renderer.h
datatype/samples/audio_renderer/audio_renderer.ver
datatype/samples/audio_renderer2/audio_renderer2.cpp
datatype/samples/audio_renderer2/audio_renderer2.h
datatype/samples/audio_renderer2/audio_renderer2.ver
datatype/samples/example_renderer/example_renderer.cpp
datatype/samples/example_renderer/example_renderer.h
datatype/samples/example_renderer/example_renderer.ver
datatype/samples/example_renderer2/example_renderer2.cpp
datatype/samples/example_renderer2/example_renderer2.h
datatype/samples/example_renderer2/example_renderer2.ver
datatype/samples/fileformat1_renderer/fileformat1_renderer.h
datatype/samples/live_realpix/live_realpix.cpp
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/live_realtext/pub/platform/unix/os.h
datatype/samples/live_slideshow/live_slideshow.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
datatype/samples/pcm_renderer/pcm_renderer.h
datatype/samples/pcm_renderer/pcm_renderer.ver
datatype/samples/pcm_renderer2/pcm_renderer2.ver
datatype/samples/pre_post_fileformat/pre_post_fileformat.h
datatype/samples/pre_post_fileformat/pre_post_fileformat.ver
datatype/samples/pre_post_renderer/pmrendr.ver
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/singlewindow_renderer/singlewindow_renderer.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.ver
datatype/samples/videosurface_renderer/videosurface_renderer.cpp
datatype/samples/videosurface_renderer/videosurface_renderer.h
datatype/samples/videosurface_renderer/videosurface_renderer.ver
server/samples/allowance/allowance.h
server/samples/authbasic/authbasic.cpp
server/samples/authbasic/authbasic.h
server/samples/broadcast/broadcast.cpp
server/samples/broadcast/broadcast.h
server/samples/converter/converter.cpp
server/samples/fileformat/fileformat.cpp
server/samples/fileformat/fileformat.h
server/samples/fileformat2/fileformat2.h
server/samples/livepacketsink/livepacketsink.h
server/samples/logging/logging.h
server/samples/monitor/monitor.cpp
server/samples/monitor/monitor.h
server/samples/payperview/payperview.h
video/samples/capture_vframes/advise_sink.h
video/samples/capture_vframes/authentication_manager.h
video/samples/capture_vframes/blt_service.h
video/samples/capture_vframes/nowindow_site.h
video/samples/capture_vframes/site_supplier.h
video/samples/capture_vframes/video_surface.h

The following are new files which are copies of linux2.pcf

clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf


Testing Performed
=================

Unit Tests:
  This will be done with stage2.

Integration tests:
  This will be done with stage2
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1



--- NEW FILE: sunos5.pcf ---
 # ***** BEGIN LICENSE BLOCK ***** 
 # Version: RCSL 1.0/RPSL 1.0 
 #  
 # Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
 #      
 # The contents of this file, and the files included with this file, are 
 # subject to the current version of the RealNetworks Public Source License 
 # Version 1.0 (the "RPSL") available at 
 # http://www.helixcommunity.org/content/rpsl unless you have licensed 
 # the file under the RealNetworks Community Source License Version 1.0 
 # (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
 # in which case the RCSL will apply. You may also obtain the license terms 
 # directly from RealNetworks.  You may not use this file except in 
 # compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
 # applicable to this file, the RCSL.  Please see the applicable RPSL or 
 # RCSL for the rights, obligations and limitations governing use of the 
 # contents of the file.  
 #  
 # This file is part of the Helix DNA Technology. RealNetworks is the 
 # developer of the Original Code and owns the copyrights in the portions 
 # it created. 
 #  
 # This file, and the files included with this file, is distributed and made 
 # available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
 # EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
 # INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
 # FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
 # 
 # Technology Compatibility Kit Test Suite(s) Location: 
 #    http://www.helixcommunity.org/content/tck 
 # 
 # Contributor(s): 
 #  
 # ***** END LICENSE BLOCK *****

project.sys_libraries[-1:-1] = ['dl']


Index: live_slideshow.cpp
===================================================================
RCS file: /cvsroot/datatype/samples/live_slideshow/live_slideshow.cpp,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.70.1
diff -u -d -r1.1.1.1 -r1.1.1.1.70.1
--- live_slideshow.cpp	24 Jun 2003 23:49:45 -0000	1.1.1.1
+++ live_slideshow.cpp	16 Nov 2006 19:33:06 -0000	1.1.1.1.70.1
@@ -97,11 +97,9 @@
     HX_RESULT              retVal              = HXR_OK;
     FILE*                  fp                  = NULL;
     UINT32                 i                   = 0;
-    FILE*                  imagefp             = NULL;
     HINSTANCE              hRPLiveDLL          = 0;
-    IHXLiveRealPix*       pLiveRealPix        = NULL;
-    IHXLiveRealPixResend* pLiveRealPixResend  = NULL;
-    UINT32                 ulInputNextIndex    = 0;
+    IHXLiveRealPix*       pLiveRealPix         = NULL;
+    IHXLiveRealPixResend* pLiveRealPixResend   = NULL;
     BOOL                   bDoAdvance          = TRUE;
     BOOL                   bFirstImageSend     = TRUE;
     FPRMCREATELIVEREALPIX  fpCreateLiveRealPix = NULL;


From jrmoore at helixcommunity.org  Thu Nov 16 11:33:10 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:38:01 2006
Subject: [Datatype-cvs] samples/live_slideshow/pub/platform/unix os.h, 1.2,
	1.2.70.1
Message-ID: 

Update of /cvsroot/datatype/samples/live_slideshow/pub/platform/unix
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv29397/datatype/samples/live_slideshow/pub/platform/unix

Modified Files:
      Tag: SERVER_11_1
	os.h 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-server-nodist")

Branches: SERVER_11_1

Reviewer: Dean Collins

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-server-nodist for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Fixes:  Mostly removing macro PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME that
isn't used anymore (was a gcc 2.x thing).
The rest are minor warnings and fixes that are required by solaris.

Files Affected
==============

audio/samples/audio_device/advise_sink.cpp
audio/samples/audio_device/advise_sink.h
audio/samples/audio_device/audio_device.cpp
audio/samples/audio_device/audio_device.h
audio/samples/audio_device/authentication_manager.h
audio/samples/audio_device/fivemmap.cpp
audio/samples/audio_device/pub/platform/unix/os.h
audio/samples/audio_device/site_supplier.h
client/samples/reverter/reverter.cpp
clientapps/samples/motif_testclient/advise_sink.cpp
clientapps/samples/motif_testclient/advise_sink.h
clientapps/samples/motif_testclient/authorization_manager.h
clientapps/samples/motif_testclient/context.cpp
clientapps/samples/motif_testclient/fivemmap.cpp
clientapps/samples/motif_testclient/main.cpp
clientapps/samples/motif_testclient/os.h
clientapps/samples/motif_testclient/site_supplier.cpp
clientapps/samples/motif_testclient/site_supplier.h
clientapps/samples/testplay/acm_manager.cpp
clientapps/samples/testplay/advise_sink.cpp
clientapps/samples/testplay/advise_sink.h
clientapps/samples/testplay/authentication_manager.h
clientapps/samples/testplay/fivemmap.cpp
clientapps/samples/testplay/pub/platform/unix/os.h
clientapps/samples/testplay/site_supplier.h
clientapps/samples/testplay/sunos5.pcf
common/include/platform.h
common/samples/xml_parser/pub/platform/unix/os.h
common/samples/xml_parser/sunos5.pcf
datatype/samples/audio_renderer/audio_renderer.cpp
datatype/samples/audio_renderer/audio_renderer.h
datatype/samples/audio_renderer/audio_renderer.ver
datatype/samples/audio_renderer2/audio_renderer2.cpp
datatype/samples/audio_renderer2/audio_renderer2.h
datatype/samples/audio_renderer2/audio_renderer2.ver
datatype/samples/example_renderer/example_renderer.cpp
datatype/samples/example_renderer/example_renderer.h
datatype/samples/example_renderer/example_renderer.ver
datatype/samples/example_renderer2/example_renderer2.cpp
datatype/samples/example_renderer2/example_renderer2.h
datatype/samples/example_renderer2/example_renderer2.ver
datatype/samples/fileformat1_renderer/fileformat1_renderer.h
datatype/samples/live_realpix/live_realpix.cpp
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/live_realtext/pub/platform/unix/os.h
datatype/samples/live_slideshow/live_slideshow.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
datatype/samples/pcm_renderer/pcm_renderer.h
datatype/samples/pcm_renderer/pcm_renderer.ver
datatype/samples/pcm_renderer2/pcm_renderer2.ver
datatype/samples/pre_post_fileformat/pre_post_fileformat.h
datatype/samples/pre_post_fileformat/pre_post_fileformat.ver
datatype/samples/pre_post_renderer/pmrendr.ver
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/singlewindow_renderer/singlewindow_renderer.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.ver
datatype/samples/videosurface_renderer/videosurface_renderer.cpp
datatype/samples/videosurface_renderer/videosurface_renderer.h
datatype/samples/videosurface_renderer/videosurface_renderer.ver
server/samples/allowance/allowance.h
server/samples/authbasic/authbasic.cpp
server/samples/authbasic/authbasic.h
server/samples/broadcast/broadcast.cpp
server/samples/broadcast/broadcast.h
server/samples/converter/converter.cpp
server/samples/fileformat/fileformat.cpp
server/samples/fileformat/fileformat.h
server/samples/fileformat2/fileformat2.h
server/samples/livepacketsink/livepacketsink.h
server/samples/logging/logging.h
server/samples/monitor/monitor.cpp
server/samples/monitor/monitor.h
server/samples/payperview/payperview.h
video/samples/capture_vframes/advise_sink.h
video/samples/capture_vframes/authentication_manager.h
video/samples/capture_vframes/blt_service.h
video/samples/capture_vframes/nowindow_site.h
video/samples/capture_vframes/site_supplier.h
video/samples/capture_vframes/video_surface.h

The following are new files which are copies of linux2.pcf

clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf


Testing Performed
=================

Unit Tests:
  This will be done with stage2.

Integration tests:
  This will be done with stage2
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1



Index: os.h
===================================================================
RCS file: /cvsroot/datatype/samples/live_slideshow/pub/platform/unix/os.h,v
retrieving revision 1.2
retrieving revision 1.2.70.1
diff -u -d -r1.2 -r1.2.70.1
--- os.h	14 Jul 2003 22:28:39 -0000	1.2
+++ os.h	16 Nov 2006 19:33:08 -0000	1.2.70.1
@@ -64,7 +64,7 @@
 
 #if defined(_UNIX)
 inline HINSTANCE
-LoadLibrary(char* pFileName)
+LoadLibrary(const char* pFileName)
 {
     char  pNewFileName[2048];
     char* pTemp = pNewFileName;


From jrmoore at helixcommunity.org  Thu Nov 16 11:33:12 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:38:02 2006
Subject: [Datatype-cvs] samples/pcm_renderer pcm_renderer.h, 1.1.1.1,
	1.1.1.1.58.1 pcm_renderer.ver, 1.1.1.1, 1.1.1.1.70.1
Message-ID: 

Update of /cvsroot/datatype/samples/pcm_renderer
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv29397/datatype/samples/pcm_renderer

Modified Files:
      Tag: SERVER_11_1
	pcm_renderer.h pcm_renderer.ver 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-server-nodist")

Branches: SERVER_11_1

Reviewer: Dean Collins

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-server-nodist for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Fixes:  Mostly removing macro PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME that
isn't used anymore (was a gcc 2.x thing).
The rest are minor warnings and fixes that are required by solaris.

Files Affected
==============

audio/samples/audio_device/advise_sink.cpp
audio/samples/audio_device/advise_sink.h
audio/samples/audio_device/audio_device.cpp
audio/samples/audio_device/audio_device.h
audio/samples/audio_device/authentication_manager.h
audio/samples/audio_device/fivemmap.cpp
audio/samples/audio_device/pub/platform/unix/os.h
audio/samples/audio_device/site_supplier.h
client/samples/reverter/reverter.cpp
clientapps/samples/motif_testclient/advise_sink.cpp
clientapps/samples/motif_testclient/advise_sink.h
clientapps/samples/motif_testclient/authorization_manager.h
clientapps/samples/motif_testclient/context.cpp
clientapps/samples/motif_testclient/fivemmap.cpp
clientapps/samples/motif_testclient/main.cpp
clientapps/samples/motif_testclient/os.h
clientapps/samples/motif_testclient/site_supplier.cpp
clientapps/samples/motif_testclient/site_supplier.h
clientapps/samples/testplay/acm_manager.cpp
clientapps/samples/testplay/advise_sink.cpp
clientapps/samples/testplay/advise_sink.h
clientapps/samples/testplay/authentication_manager.h
clientapps/samples/testplay/fivemmap.cpp
clientapps/samples/testplay/pub/platform/unix/os.h
clientapps/samples/testplay/site_supplier.h
clientapps/samples/testplay/sunos5.pcf
common/include/platform.h
common/samples/xml_parser/pub/platform/unix/os.h
common/samples/xml_parser/sunos5.pcf
datatype/samples/audio_renderer/audio_renderer.cpp
datatype/samples/audio_renderer/audio_renderer.h
datatype/samples/audio_renderer/audio_renderer.ver
datatype/samples/audio_renderer2/audio_renderer2.cpp
datatype/samples/audio_renderer2/audio_renderer2.h
datatype/samples/audio_renderer2/audio_renderer2.ver
datatype/samples/example_renderer/example_renderer.cpp
datatype/samples/example_renderer/example_renderer.h
datatype/samples/example_renderer/example_renderer.ver
datatype/samples/example_renderer2/example_renderer2.cpp
datatype/samples/example_renderer2/example_renderer2.h
datatype/samples/example_renderer2/example_renderer2.ver
datatype/samples/fileformat1_renderer/fileformat1_renderer.h
datatype/samples/live_realpix/live_realpix.cpp
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/live_realtext/pub/platform/unix/os.h
datatype/samples/live_slideshow/live_slideshow.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
datatype/samples/pcm_renderer/pcm_renderer.h
datatype/samples/pcm_renderer/pcm_renderer.ver
datatype/samples/pcm_renderer2/pcm_renderer2.ver
datatype/samples/pre_post_fileformat/pre_post_fileformat.h
datatype/samples/pre_post_fileformat/pre_post_fileformat.ver
datatype/samples/pre_post_renderer/pmrendr.ver
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/singlewindow_renderer/singlewindow_renderer.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.ver
datatype/samples/videosurface_renderer/videosurface_renderer.cpp
datatype/samples/videosurface_renderer/videosurface_renderer.h
datatype/samples/videosurface_renderer/videosurface_renderer.ver
server/samples/allowance/allowance.h
server/samples/authbasic/authbasic.cpp
server/samples/authbasic/authbasic.h
server/samples/broadcast/broadcast.cpp
server/samples/broadcast/broadcast.h
server/samples/converter/converter.cpp
server/samples/fileformat/fileformat.cpp
server/samples/fileformat/fileformat.h
server/samples/fileformat2/fileformat2.h
server/samples/livepacketsink/livepacketsink.h
server/samples/logging/logging.h
server/samples/monitor/monitor.cpp
server/samples/monitor/monitor.h
server/samples/payperview/payperview.h
video/samples/capture_vframes/advise_sink.h
video/samples/capture_vframes/authentication_manager.h
video/samples/capture_vframes/blt_service.h
video/samples/capture_vframes/nowindow_site.h
video/samples/capture_vframes/site_supplier.h
video/samples/capture_vframes/video_surface.h

The following are new files which are copies of linux2.pcf

clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf


Testing Performed
=================

Unit Tests:
  This will be done with stage2.

Integration tests:
  This will be done with stage2
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1



Index: pcm_renderer.h
===================================================================
RCS file: /cvsroot/datatype/samples/pcm_renderer/pcm_renderer.h,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.58.1
diff -u -d -r1.1.1.1 -r1.1.1.1.58.1
--- pcm_renderer.h	24 Jun 2003 23:49:44 -0000	1.1.1.1
+++ pcm_renderer.h	16 Nov 2006 19:33:10 -0000	1.1.1.1.58.1
@@ -173,8 +173,6 @@
 	{ 
 	    EndStream();
 	};
-
-    PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME       // Avoids GCC compiler warning
 };
 
 

Index: pcm_renderer.ver
===================================================================
RCS file: /cvsroot/datatype/samples/pcm_renderer/pcm_renderer.ver,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.70.1
diff -u -d -r1.1.1.1 -r1.1.1.1.70.1
--- pcm_renderer.ver	24 Jun 2003 23:49:44 -0000	1.1.1.1
+++ pcm_renderer.ver	16 Nov 2006 19:33:10 -0000	1.1.1.1.70.1
@@ -33,10 +33,10 @@
  *  
  * ***** END LICENSE BLOCK ***** */
 
-#define TARVER_ULONG32_VERSION ((10 << 28) | (0 << 20) | (0 << 12) | 0)
-#define TARVER_LIST_VERSION 10,0,0,0
-#define TARVER_MAJOR_VERSION 10
-#define TARVER_MINOR_VERSION 0
-#define TARVER_STRING_VERSION "10.0.0.0"
+#define TARVER_ULONG32_VERSION ((11 << 28) | (1 << 20) | (1 << 12) | 1073)
+#define TARVER_LIST_VERSION 11,1,1,1073
+#define TARVER_MAJOR_VERSION 11
+#define TARVER_MINOR_VERSION 1
+#define TARVER_STRING_VERSION "11.1.1.1073"
 #define TARVER_STR_BUILD_NAME ""
 #define TARVER_STR_PLATFORM "win32"


From jrmoore at helixcommunity.org  Thu Nov 16 11:33:14 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:38:05 2006
Subject: [Datatype-cvs] samples/pcm_renderer2 pcm_renderer2.ver, 1.1.1.1,
	1.1.1.1.70.1
Message-ID: 

Update of /cvsroot/datatype/samples/pcm_renderer2
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv29397/datatype/samples/pcm_renderer2

Modified Files:
      Tag: SERVER_11_1
	pcm_renderer2.ver 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-server-nodist")

Branches: SERVER_11_1

Reviewer: Dean Collins

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-server-nodist for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Fixes:  Mostly removing macro PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME that
isn't used anymore (was a gcc 2.x thing).
The rest are minor warnings and fixes that are required by solaris.

Files Affected
==============

audio/samples/audio_device/advise_sink.cpp
audio/samples/audio_device/advise_sink.h
audio/samples/audio_device/audio_device.cpp
audio/samples/audio_device/audio_device.h
audio/samples/audio_device/authentication_manager.h
audio/samples/audio_device/fivemmap.cpp
audio/samples/audio_device/pub/platform/unix/os.h
audio/samples/audio_device/site_supplier.h
client/samples/reverter/reverter.cpp
clientapps/samples/motif_testclient/advise_sink.cpp
clientapps/samples/motif_testclient/advise_sink.h
clientapps/samples/motif_testclient/authorization_manager.h
clientapps/samples/motif_testclient/context.cpp
clientapps/samples/motif_testclient/fivemmap.cpp
clientapps/samples/motif_testclient/main.cpp
clientapps/samples/motif_testclient/os.h
clientapps/samples/motif_testclient/site_supplier.cpp
clientapps/samples/motif_testclient/site_supplier.h
clientapps/samples/testplay/acm_manager.cpp
clientapps/samples/testplay/advise_sink.cpp
clientapps/samples/testplay/advise_sink.h
clientapps/samples/testplay/authentication_manager.h
clientapps/samples/testplay/fivemmap.cpp
clientapps/samples/testplay/pub/platform/unix/os.h
clientapps/samples/testplay/site_supplier.h
clientapps/samples/testplay/sunos5.pcf
common/include/platform.h
common/samples/xml_parser/pub/platform/unix/os.h
common/samples/xml_parser/sunos5.pcf
datatype/samples/audio_renderer/audio_renderer.cpp
datatype/samples/audio_renderer/audio_renderer.h
datatype/samples/audio_renderer/audio_renderer.ver
datatype/samples/audio_renderer2/audio_renderer2.cpp
datatype/samples/audio_renderer2/audio_renderer2.h
datatype/samples/audio_renderer2/audio_renderer2.ver
datatype/samples/example_renderer/example_renderer.cpp
datatype/samples/example_renderer/example_renderer.h
datatype/samples/example_renderer/example_renderer.ver
datatype/samples/example_renderer2/example_renderer2.cpp
datatype/samples/example_renderer2/example_renderer2.h
datatype/samples/example_renderer2/example_renderer2.ver
datatype/samples/fileformat1_renderer/fileformat1_renderer.h
datatype/samples/live_realpix/live_realpix.cpp
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/live_realtext/pub/platform/unix/os.h
datatype/samples/live_slideshow/live_slideshow.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
datatype/samples/pcm_renderer/pcm_renderer.h
datatype/samples/pcm_renderer/pcm_renderer.ver
datatype/samples/pcm_renderer2/pcm_renderer2.ver
datatype/samples/pre_post_fileformat/pre_post_fileformat.h
datatype/samples/pre_post_fileformat/pre_post_fileformat.ver
datatype/samples/pre_post_renderer/pmrendr.ver
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/singlewindow_renderer/singlewindow_renderer.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.ver
datatype/samples/videosurface_renderer/videosurface_renderer.cpp
datatype/samples/videosurface_renderer/videosurface_renderer.h
datatype/samples/videosurface_renderer/videosurface_renderer.ver
server/samples/allowance/allowance.h
server/samples/authbasic/authbasic.cpp
server/samples/authbasic/authbasic.h
server/samples/broadcast/broadcast.cpp
server/samples/broadcast/broadcast.h
server/samples/converter/converter.cpp
server/samples/fileformat/fileformat.cpp
server/samples/fileformat/fileformat.h
server/samples/fileformat2/fileformat2.h
server/samples/livepacketsink/livepacketsink.h
server/samples/logging/logging.h
server/samples/monitor/monitor.cpp
server/samples/monitor/monitor.h
server/samples/payperview/payperview.h
video/samples/capture_vframes/advise_sink.h
video/samples/capture_vframes/authentication_manager.h
video/samples/capture_vframes/blt_service.h
video/samples/capture_vframes/nowindow_site.h
video/samples/capture_vframes/site_supplier.h
video/samples/capture_vframes/video_surface.h

The following are new files which are copies of linux2.pcf

clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf


Testing Performed
=================

Unit Tests:
  This will be done with stage2.

Integration tests:
  This will be done with stage2
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1



Index: pcm_renderer2.ver
===================================================================
RCS file: /cvsroot/datatype/samples/pcm_renderer2/pcm_renderer2.ver,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.70.1
diff -u -d -r1.1.1.1 -r1.1.1.1.70.1
--- pcm_renderer2.ver	24 Jun 2003 23:49:44 -0000	1.1.1.1
+++ pcm_renderer2.ver	16 Nov 2006 19:33:12 -0000	1.1.1.1.70.1
@@ -33,8 +33,8 @@
  *  
  * ***** END LICENSE BLOCK ***** */
 
-#define TARVER_ULONG32_VERSION ((10 << 28) | (0 << 20) | (0 << 12) | 0)
-#define TARVER_LIST_VERSION 10,0,0,0
-#define TARVER_MAJOR_VERSION 10
-#define TARVER_MINOR_VERSION 0
-#define TARVER_STRING_VERSION "10.0.0.0"
\ No newline at end of file
+#define TARVER_ULONG32_VERSION ((11 << 28) | (1 << 20) | (1 << 12) | 1073)
+#define TARVER_LIST_VERSION 11,1,1,1073
+#define TARVER_MAJOR_VERSION 11
+#define TARVER_MINOR_VERSION 1
+#define TARVER_STRING_VERSION "11.1.1.1073"


From jrmoore at helixcommunity.org  Thu Nov 16 11:33:17 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:38:08 2006
Subject: [Datatype-cvs] samples/pre_post_fileformat pre_post_fileformat.h,
	1.1.1.1, 1.1.1.1.58.1 pre_post_fileformat.ver, 1.1.1.1, 1.1.1.1.70.1
Message-ID: 

Update of /cvsroot/datatype/samples/pre_post_fileformat
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv29397/datatype/samples/pre_post_fileformat

Modified Files:
      Tag: SERVER_11_1
	pre_post_fileformat.h pre_post_fileformat.ver 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-server-nodist")

Branches: SERVER_11_1

Reviewer: Dean Collins

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-server-nodist for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Fixes:  Mostly removing macro PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME that
isn't used anymore (was a gcc 2.x thing).
The rest are minor warnings and fixes that are required by solaris.

Files Affected
==============

audio/samples/audio_device/advise_sink.cpp
audio/samples/audio_device/advise_sink.h
audio/samples/audio_device/audio_device.cpp
audio/samples/audio_device/audio_device.h
audio/samples/audio_device/authentication_manager.h
audio/samples/audio_device/fivemmap.cpp
audio/samples/audio_device/pub/platform/unix/os.h
audio/samples/audio_device/site_supplier.h
client/samples/reverter/reverter.cpp
clientapps/samples/motif_testclient/advise_sink.cpp
clientapps/samples/motif_testclient/advise_sink.h
clientapps/samples/motif_testclient/authorization_manager.h
clientapps/samples/motif_testclient/context.cpp
clientapps/samples/motif_testclient/fivemmap.cpp
clientapps/samples/motif_testclient/main.cpp
clientapps/samples/motif_testclient/os.h
clientapps/samples/motif_testclient/site_supplier.cpp
clientapps/samples/motif_testclient/site_supplier.h
clientapps/samples/testplay/acm_manager.cpp
clientapps/samples/testplay/advise_sink.cpp
clientapps/samples/testplay/advise_sink.h
clientapps/samples/testplay/authentication_manager.h
clientapps/samples/testplay/fivemmap.cpp
clientapps/samples/testplay/pub/platform/unix/os.h
clientapps/samples/testplay/site_supplier.h
clientapps/samples/testplay/sunos5.pcf
common/include/platform.h
common/samples/xml_parser/pub/platform/unix/os.h
common/samples/xml_parser/sunos5.pcf
datatype/samples/audio_renderer/audio_renderer.cpp
datatype/samples/audio_renderer/audio_renderer.h
datatype/samples/audio_renderer/audio_renderer.ver
datatype/samples/audio_renderer2/audio_renderer2.cpp
datatype/samples/audio_renderer2/audio_renderer2.h
datatype/samples/audio_renderer2/audio_renderer2.ver
datatype/samples/example_renderer/example_renderer.cpp
datatype/samples/example_renderer/example_renderer.h
datatype/samples/example_renderer/example_renderer.ver
datatype/samples/example_renderer2/example_renderer2.cpp
datatype/samples/example_renderer2/example_renderer2.h
datatype/samples/example_renderer2/example_renderer2.ver
datatype/samples/fileformat1_renderer/fileformat1_renderer.h
datatype/samples/live_realpix/live_realpix.cpp
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/live_realtext/pub/platform/unix/os.h
datatype/samples/live_slideshow/live_slideshow.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
datatype/samples/pcm_renderer/pcm_renderer.h
datatype/samples/pcm_renderer/pcm_renderer.ver
datatype/samples/pcm_renderer2/pcm_renderer2.ver
datatype/samples/pre_post_fileformat/pre_post_fileformat.h
datatype/samples/pre_post_fileformat/pre_post_fileformat.ver
datatype/samples/pre_post_renderer/pmrendr.ver
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/singlewindow_renderer/singlewindow_renderer.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.ver
datatype/samples/videosurface_renderer/videosurface_renderer.cpp
datatype/samples/videosurface_renderer/videosurface_renderer.h
datatype/samples/videosurface_renderer/videosurface_renderer.ver
server/samples/allowance/allowance.h
server/samples/authbasic/authbasic.cpp
server/samples/authbasic/authbasic.h
server/samples/broadcast/broadcast.cpp
server/samples/broadcast/broadcast.h
server/samples/converter/converter.cpp
server/samples/fileformat/fileformat.cpp
server/samples/fileformat/fileformat.h
server/samples/fileformat2/fileformat2.h
server/samples/livepacketsink/livepacketsink.h
server/samples/logging/logging.h
server/samples/monitor/monitor.cpp
server/samples/monitor/monitor.h
server/samples/payperview/payperview.h
video/samples/capture_vframes/advise_sink.h
video/samples/capture_vframes/authentication_manager.h
video/samples/capture_vframes/blt_service.h
video/samples/capture_vframes/nowindow_site.h
video/samples/capture_vframes/site_supplier.h
video/samples/capture_vframes/video_surface.h

The following are new files which are copies of linux2.pcf

clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf


Testing Performed
=================

Unit Tests:
  This will be done with stage2.

Integration tests:
  This will be done with stage2
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1



Index: pre_post_fileformat.ver
===================================================================
RCS file: /cvsroot/datatype/samples/pre_post_fileformat/pre_post_fileformat.ver,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.70.1
diff -u -d -r1.1.1.1 -r1.1.1.1.70.1
--- pre_post_fileformat.ver	24 Jun 2003 23:49:44 -0000	1.1.1.1
+++ pre_post_fileformat.ver	16 Nov 2006 19:33:14 -0000	1.1.1.1.70.1
@@ -33,10 +33,10 @@
  *  
  * ***** END LICENSE BLOCK ***** */
 
-#define TARVER_ULONG32_VERSION ((10 << 28) | (0 << 20) | (0 << 12) | 0)
-#define TARVER_LIST_VERSION 10,0,0,0
-#define TARVER_MAJOR_VERSION 10
-#define TARVER_MINOR_VERSION 0
-#define TARVER_STRING_VERSION "10.0.0.0"
+#define TARVER_ULONG32_VERSION ((11 << 28) | (1 << 20) | (1 << 12) | 1073)
+#define TARVER_LIST_VERSION 11,1,1,1073
+#define TARVER_MAJOR_VERSION 11
+#define TARVER_MINOR_VERSION 1
+#define TARVER_STRING_VERSION "11.1.1.1073"
 #define TARVER_STR_BUILD_NAME ""
 #define TARVER_STR_PLATFORM "win32"

Index: pre_post_fileformat.h
===================================================================
RCS file: /cvsroot/datatype/samples/pre_post_fileformat/pre_post_fileformat.h,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.58.1
diff -u -d -r1.1.1.1 -r1.1.1.1.58.1
--- pre_post_fileformat.h	24 Jun 2003 23:49:44 -0000	1.1.1.1
+++ pre_post_fileformat.h	16 Nov 2006 19:33:14 -0000	1.1.1.1.58.1
@@ -177,8 +177,6 @@
 
     /****** Private Class Methods ******************************************/
     ~CPostMixHookFF() { };
-
-    PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME      // Avoids GCC compiler warning
 };
 
 


From jrmoore at helixcommunity.org  Thu Nov 16 11:32:48 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:38:12 2006
Subject: [Datatype-cvs] samples/audio_renderer audio_renderer.cpp, 1.2,
	1.2.58.1 audio_renderer.h, 1.1.1.1,
	1.1.1.1.58.1 audio_renderer.ver, 1.1.1.1, 1.1.1.1.70.1
Message-ID: 

Update of /cvsroot/datatype/samples/audio_renderer
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv29397/datatype/samples/audio_renderer

Modified Files:
      Tag: SERVER_11_1
	audio_renderer.cpp audio_renderer.h audio_renderer.ver 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-server-nodist")

Branches: SERVER_11_1

Reviewer: Dean Collins

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-server-nodist for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Fixes:  Mostly removing macro PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME that
isn't used anymore (was a gcc 2.x thing).
The rest are minor warnings and fixes that are required by solaris.

Files Affected
==============

audio/samples/audio_device/advise_sink.cpp
audio/samples/audio_device/advise_sink.h
audio/samples/audio_device/audio_device.cpp
audio/samples/audio_device/audio_device.h
audio/samples/audio_device/authentication_manager.h
audio/samples/audio_device/fivemmap.cpp
audio/samples/audio_device/pub/platform/unix/os.h
audio/samples/audio_device/site_supplier.h
client/samples/reverter/reverter.cpp
clientapps/samples/motif_testclient/advise_sink.cpp
clientapps/samples/motif_testclient/advise_sink.h
clientapps/samples/motif_testclient/authorization_manager.h
clientapps/samples/motif_testclient/context.cpp
clientapps/samples/motif_testclient/fivemmap.cpp
clientapps/samples/motif_testclient/main.cpp
clientapps/samples/motif_testclient/os.h
clientapps/samples/motif_testclient/site_supplier.cpp
clientapps/samples/motif_testclient/site_supplier.h
clientapps/samples/testplay/acm_manager.cpp
clientapps/samples/testplay/advise_sink.cpp
clientapps/samples/testplay/advise_sink.h
clientapps/samples/testplay/authentication_manager.h
clientapps/samples/testplay/fivemmap.cpp
clientapps/samples/testplay/pub/platform/unix/os.h
clientapps/samples/testplay/site_supplier.h
clientapps/samples/testplay/sunos5.pcf
common/include/platform.h
common/samples/xml_parser/pub/platform/unix/os.h
common/samples/xml_parser/sunos5.pcf
datatype/samples/audio_renderer/audio_renderer.cpp
datatype/samples/audio_renderer/audio_renderer.h
datatype/samples/audio_renderer/audio_renderer.ver
datatype/samples/audio_renderer2/audio_renderer2.cpp
datatype/samples/audio_renderer2/audio_renderer2.h
datatype/samples/audio_renderer2/audio_renderer2.ver
datatype/samples/example_renderer/example_renderer.cpp
datatype/samples/example_renderer/example_renderer.h
datatype/samples/example_renderer/example_renderer.ver
datatype/samples/example_renderer2/example_renderer2.cpp
datatype/samples/example_renderer2/example_renderer2.h
datatype/samples/example_renderer2/example_renderer2.ver
datatype/samples/fileformat1_renderer/fileformat1_renderer.h
datatype/samples/live_realpix/live_realpix.cpp
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/live_realtext/pub/platform/unix/os.h
datatype/samples/live_slideshow/live_slideshow.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
datatype/samples/pcm_renderer/pcm_renderer.h
datatype/samples/pcm_renderer/pcm_renderer.ver
datatype/samples/pcm_renderer2/pcm_renderer2.ver
datatype/samples/pre_post_fileformat/pre_post_fileformat.h
datatype/samples/pre_post_fileformat/pre_post_fileformat.ver
datatype/samples/pre_post_renderer/pmrendr.ver
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/singlewindow_renderer/singlewindow_renderer.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.ver
datatype/samples/videosurface_renderer/videosurface_renderer.cpp
datatype/samples/videosurface_renderer/videosurface_renderer.h
datatype/samples/videosurface_renderer/videosurface_renderer.ver
server/samples/allowance/allowance.h
server/samples/authbasic/authbasic.cpp
server/samples/authbasic/authbasic.h
server/samples/broadcast/broadcast.cpp
server/samples/broadcast/broadcast.h
server/samples/converter/converter.cpp
server/samples/fileformat/fileformat.cpp
server/samples/fileformat/fileformat.h
server/samples/fileformat2/fileformat2.h
server/samples/livepacketsink/livepacketsink.h
server/samples/logging/logging.h
server/samples/monitor/monitor.cpp
server/samples/monitor/monitor.h
server/samples/payperview/payperview.h
video/samples/capture_vframes/advise_sink.h
video/samples/capture_vframes/authentication_manager.h
video/samples/capture_vframes/blt_service.h
video/samples/capture_vframes/nowindow_site.h
video/samples/capture_vframes/site_supplier.h
video/samples/capture_vframes/video_surface.h

The following are new files which are copies of linux2.pcf

clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf


Testing Performed
=================

Unit Tests:
  This will be done with stage2.

Integration tests:
  This will be done with stage2
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1



Index: audio_renderer.h
===================================================================
RCS file: /cvsroot/datatype/samples/audio_renderer/audio_renderer.h,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.58.1
diff -u -d -r1.1.1.1 -r1.1.1.1.58.1
--- audio_renderer.h	24 Jun 2003 23:49:44 -0000	1.1.1.1
+++ audio_renderer.h	16 Nov 2006 19:32:46 -0000	1.1.1.1.58.1
@@ -166,8 +166,6 @@
 
     /****** Private Class Methods ******************************************/
     ~CExampleRenderer();
-
-    PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME       // Avoids GCC compiler warning
 };
 
 

Index: audio_renderer.ver
===================================================================
RCS file: /cvsroot/datatype/samples/audio_renderer/audio_renderer.ver,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.70.1
diff -u -d -r1.1.1.1 -r1.1.1.1.70.1
--- audio_renderer.ver	24 Jun 2003 23:49:44 -0000	1.1.1.1
+++ audio_renderer.ver	16 Nov 2006 19:32:46 -0000	1.1.1.1.70.1
@@ -34,10 +34,10 @@
  * ***** END LICENSE BLOCK ***** */
 
 
-#define TARVER_ULONG32_VERSION ((10 << 28) | (0 << 20) | (0 << 12) | 0)
-#define TARVER_LIST_VERSION 10,0,0,0
-#define TARVER_MAJOR_VERSION 10
-#define TARVER_MINOR_VERSION 0
-#define TARVER_STRING_VERSION "10.0.0.0"
+#define TARVER_ULONG32_VERSION ((11 << 28) | (1 << 20) | (1 << 12) | 1073)
+#define TARVER_LIST_VERSION 11,1,1,1073
+#define TARVER_MAJOR_VERSION 11
+#define TARVER_MINOR_VERSION 1
+#define TARVER_STRING_VERSION "11.1.1.1073"
 #define TARVER_STR_BUILD_NAME ""
 #define TARVER_STR_PLATFORM "win32"

Index: audio_renderer.cpp
===================================================================
RCS file: /cvsroot/datatype/samples/audio_renderer/audio_renderer.cpp,v
retrieving revision 1.2
retrieving revision 1.2.58.1
diff -u -d -r1.2 -r1.2.58.1
--- audio_renderer.cpp	22 Jul 2003 01:49:14 -0000	1.2
+++ audio_renderer.cpp	16 Nov 2006 19:32:46 -0000	1.2.58.1
@@ -57,10 +57,6 @@
 
 #include 
 
-#ifdef _WINDOWS
-    #include 
-#endif
-
 #ifdef _UNIX
     #include 
     #include 
@@ -598,7 +594,7 @@
 	{
 	    sprintf(szPacketFormat,"Last Packet Contained: %%.%is",
 		(pBuffer->GetSize() < MAX_PACKET_SIZE ? 
-		    pBuffer->GetSize() : MAX_PACKET_SIZE));
+		    (int)pBuffer->GetSize() : MAX_PACKET_SIZE));
 	    nLength4 = sprintf(szText4,szPacketFormat,pBuffer->GetBuffer());
 	    pBuffer->Release();
 	}


From jrmoore at helixcommunity.org  Thu Nov 16 11:33:19 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:38:12 2006
Subject: [Datatype-cvs] samples/pre_post_renderer pmrendr.ver, 1.1.1.1,
	1.1.1.1.70.1 premixrd.h, 1.1.1.1, 1.1.1.1.58.1 pstmixrd.h,
	1.1.1.1, 1.1.1.1.58.1
Message-ID: 

Update of /cvsroot/datatype/samples/pre_post_renderer
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv29397/datatype/samples/pre_post_renderer

Modified Files:
      Tag: SERVER_11_1
	pmrendr.ver premixrd.h pstmixrd.h 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-server-nodist")

Branches: SERVER_11_1

Reviewer: Dean Collins

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-server-nodist for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Fixes:  Mostly removing macro PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME that
isn't used anymore (was a gcc 2.x thing).
The rest are minor warnings and fixes that are required by solaris.

Files Affected
==============

audio/samples/audio_device/advise_sink.cpp
audio/samples/audio_device/advise_sink.h
audio/samples/audio_device/audio_device.cpp
audio/samples/audio_device/audio_device.h
audio/samples/audio_device/authentication_manager.h
audio/samples/audio_device/fivemmap.cpp
audio/samples/audio_device/pub/platform/unix/os.h
audio/samples/audio_device/site_supplier.h
client/samples/reverter/reverter.cpp
clientapps/samples/motif_testclient/advise_sink.cpp
clientapps/samples/motif_testclient/advise_sink.h
clientapps/samples/motif_testclient/authorization_manager.h
clientapps/samples/motif_testclient/context.cpp
clientapps/samples/motif_testclient/fivemmap.cpp
clientapps/samples/motif_testclient/main.cpp
clientapps/samples/motif_testclient/os.h
clientapps/samples/motif_testclient/site_supplier.cpp
clientapps/samples/motif_testclient/site_supplier.h
clientapps/samples/testplay/acm_manager.cpp
clientapps/samples/testplay/advise_sink.cpp
clientapps/samples/testplay/advise_sink.h
clientapps/samples/testplay/authentication_manager.h
clientapps/samples/testplay/fivemmap.cpp
clientapps/samples/testplay/pub/platform/unix/os.h
clientapps/samples/testplay/site_supplier.h
clientapps/samples/testplay/sunos5.pcf
common/include/platform.h
common/samples/xml_parser/pub/platform/unix/os.h
common/samples/xml_parser/sunos5.pcf
datatype/samples/audio_renderer/audio_renderer.cpp
datatype/samples/audio_renderer/audio_renderer.h
datatype/samples/audio_renderer/audio_renderer.ver
datatype/samples/audio_renderer2/audio_renderer2.cpp
datatype/samples/audio_renderer2/audio_renderer2.h
datatype/samples/audio_renderer2/audio_renderer2.ver
datatype/samples/example_renderer/example_renderer.cpp
datatype/samples/example_renderer/example_renderer.h
datatype/samples/example_renderer/example_renderer.ver
datatype/samples/example_renderer2/example_renderer2.cpp
datatype/samples/example_renderer2/example_renderer2.h
datatype/samples/example_renderer2/example_renderer2.ver
datatype/samples/fileformat1_renderer/fileformat1_renderer.h
datatype/samples/live_realpix/live_realpix.cpp
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/live_realtext/pub/platform/unix/os.h
datatype/samples/live_slideshow/live_slideshow.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
datatype/samples/pcm_renderer/pcm_renderer.h
datatype/samples/pcm_renderer/pcm_renderer.ver
datatype/samples/pcm_renderer2/pcm_renderer2.ver
datatype/samples/pre_post_fileformat/pre_post_fileformat.h
datatype/samples/pre_post_fileformat/pre_post_fileformat.ver
datatype/samples/pre_post_renderer/pmrendr.ver
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/singlewindow_renderer/singlewindow_renderer.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.ver
datatype/samples/videosurface_renderer/videosurface_renderer.cpp
datatype/samples/videosurface_renderer/videosurface_renderer.h
datatype/samples/videosurface_renderer/videosurface_renderer.ver
server/samples/allowance/allowance.h
server/samples/authbasic/authbasic.cpp
server/samples/authbasic/authbasic.h
server/samples/broadcast/broadcast.cpp
server/samples/broadcast/broadcast.h
server/samples/converter/converter.cpp
server/samples/fileformat/fileformat.cpp
server/samples/fileformat/fileformat.h
server/samples/fileformat2/fileformat2.h
server/samples/livepacketsink/livepacketsink.h
server/samples/logging/logging.h
server/samples/monitor/monitor.cpp
server/samples/monitor/monitor.h
server/samples/payperview/payperview.h
video/samples/capture_vframes/advise_sink.h
video/samples/capture_vframes/authentication_manager.h
video/samples/capture_vframes/blt_service.h
video/samples/capture_vframes/nowindow_site.h
video/samples/capture_vframes/site_supplier.h
video/samples/capture_vframes/video_surface.h

The following are new files which are copies of linux2.pcf

clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf


Testing Performed
=================

Unit Tests:
  This will be done with stage2.

Integration tests:
  This will be done with stage2
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1



Index: pmrendr.ver
===================================================================
RCS file: /cvsroot/datatype/samples/pre_post_renderer/pmrendr.ver,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.70.1
diff -u -d -r1.1.1.1 -r1.1.1.1.70.1
--- pmrendr.ver	24 Jun 2003 23:49:44 -0000	1.1.1.1
+++ pmrendr.ver	16 Nov 2006 19:33:17 -0000	1.1.1.1.70.1
@@ -33,10 +33,10 @@
  *  
  * ***** END LICENSE BLOCK ***** */
 
-#define TARVER_ULONG32_VERSION ((10 << 28) | (0 << 20) | (0 << 12) | 0)
-#define TARVER_LIST_VERSION 10,0,0,0
-#define TARVER_MAJOR_VERSION 10
-#define TARVER_MINOR_VERSION 0
-#define TARVER_STRING_VERSION "10.0.0.0"
+#define TARVER_ULONG32_VERSION ((11 << 28) | (1 << 20) | (1 << 12) | 1073)
+#define TARVER_LIST_VERSION 11,1,1,1073
+#define TARVER_MAJOR_VERSION 11
+#define TARVER_MINOR_VERSION 1
+#define TARVER_STRING_VERSION "11.1.1.1073"
 #define TARVER_STR_BUILD_NAME ""
 #define TARVER_STR_PLATFORM "win32"

Index: premixrd.h
===================================================================
RCS file: /cvsroot/datatype/samples/pre_post_renderer/premixrd.h,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.58.1
diff -u -d -r1.1.1.1 -r1.1.1.1.58.1
--- premixrd.h	24 Jun 2003 23:49:44 -0000	1.1.1.1
+++ premixrd.h	16 Nov 2006 19:33:17 -0000	1.1.1.1.58.1
@@ -151,10 +151,8 @@
 	UINT16			m_uMaxBlockSize;
 	IUnknown*		m_pContext;
 	IHXCommonClassFactory* m_pCommonClassFactory;
-
-	PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME   // Avoids GCC compiler warning
     };
-    friend CPreMixHook;
+    friend class CPreMixHook;
 
 
     private:
@@ -185,7 +183,6 @@
 	    EndStream();
 	};
 
-    PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME       // Avoids GCC compiler warning
 };
 
 
@@ -228,8 +225,6 @@
 
     /****** Private Class Methods ******************************************/
     ~CPNAudioInfoResp();
-    
-    PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME       // Avoids GCC compiler warning
 };
 
 

Index: pstmixrd.h
===================================================================
RCS file: /cvsroot/datatype/samples/pre_post_renderer/pstmixrd.h,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.58.1
diff -u -d -r1.1.1.1 -r1.1.1.1.58.1
--- pstmixrd.h	24 Jun 2003 23:49:44 -0000	1.1.1.1
+++ pstmixrd.h	16 Nov 2006 19:33:17 -0000	1.1.1.1.58.1
@@ -144,10 +144,8 @@
         UINT16                  m_uMaxBlockSize;
 	IUnknown*		m_pContext;
 	IHXCommonClassFactory* m_pCommonClassFactory;
-
-	PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME   // Avoids GCC compiler warning
     };
-    friend CPostMixHook;
+    friend class CPostMixHook;
 
 
 private:
@@ -174,8 +172,6 @@
     static const char*	zm_pCopyright;
     static const char*	zm_pMoreInfoURL;
     static const char*	zm_pStreamMimeTypes[];
-
-    PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME       // Avoids GCC compiler warning
 };
 
 #endif // endef _PSTRENDR_H_


From jrmoore at helixcommunity.org  Thu Nov 16 11:32:50 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:38:13 2006
Subject: [Datatype-cvs] samples/audio_renderer2 audio_renderer2.cpp, 1.2,
	1.2.58.1 audio_renderer2.h, 1.1.1.1,
	1.1.1.1.58.1 audio_renderer2.ver, 1.1.1.1, 1.1.1.1.70.1
Message-ID: 

Update of /cvsroot/datatype/samples/audio_renderer2
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv29397/datatype/samples/audio_renderer2

Modified Files:
      Tag: SERVER_11_1
	audio_renderer2.cpp audio_renderer2.h audio_renderer2.ver 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-server-nodist")

Branches: SERVER_11_1

Reviewer: Dean Collins

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-server-nodist for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Fixes:  Mostly removing macro PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME that
isn't used anymore (was a gcc 2.x thing).
The rest are minor warnings and fixes that are required by solaris.

Files Affected
==============

audio/samples/audio_device/advise_sink.cpp
audio/samples/audio_device/advise_sink.h
audio/samples/audio_device/audio_device.cpp
audio/samples/audio_device/audio_device.h
audio/samples/audio_device/authentication_manager.h
audio/samples/audio_device/fivemmap.cpp
audio/samples/audio_device/pub/platform/unix/os.h
audio/samples/audio_device/site_supplier.h
client/samples/reverter/reverter.cpp
clientapps/samples/motif_testclient/advise_sink.cpp
clientapps/samples/motif_testclient/advise_sink.h
clientapps/samples/motif_testclient/authorization_manager.h
clientapps/samples/motif_testclient/context.cpp
clientapps/samples/motif_testclient/fivemmap.cpp
clientapps/samples/motif_testclient/main.cpp
clientapps/samples/motif_testclient/os.h
clientapps/samples/motif_testclient/site_supplier.cpp
clientapps/samples/motif_testclient/site_supplier.h
clientapps/samples/testplay/acm_manager.cpp
clientapps/samples/testplay/advise_sink.cpp
clientapps/samples/testplay/advise_sink.h
clientapps/samples/testplay/authentication_manager.h
clientapps/samples/testplay/fivemmap.cpp
clientapps/samples/testplay/pub/platform/unix/os.h
clientapps/samples/testplay/site_supplier.h
clientapps/samples/testplay/sunos5.pcf
common/include/platform.h
common/samples/xml_parser/pub/platform/unix/os.h
common/samples/xml_parser/sunos5.pcf
datatype/samples/audio_renderer/audio_renderer.cpp
datatype/samples/audio_renderer/audio_renderer.h
datatype/samples/audio_renderer/audio_renderer.ver
datatype/samples/audio_renderer2/audio_renderer2.cpp
datatype/samples/audio_renderer2/audio_renderer2.h
datatype/samples/audio_renderer2/audio_renderer2.ver
datatype/samples/example_renderer/example_renderer.cpp
datatype/samples/example_renderer/example_renderer.h
datatype/samples/example_renderer/example_renderer.ver
datatype/samples/example_renderer2/example_renderer2.cpp
datatype/samples/example_renderer2/example_renderer2.h
datatype/samples/example_renderer2/example_renderer2.ver
datatype/samples/fileformat1_renderer/fileformat1_renderer.h
datatype/samples/live_realpix/live_realpix.cpp
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/live_realtext/pub/platform/unix/os.h
datatype/samples/live_slideshow/live_slideshow.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
datatype/samples/pcm_renderer/pcm_renderer.h
datatype/samples/pcm_renderer/pcm_renderer.ver
datatype/samples/pcm_renderer2/pcm_renderer2.ver
datatype/samples/pre_post_fileformat/pre_post_fileformat.h
datatype/samples/pre_post_fileformat/pre_post_fileformat.ver
datatype/samples/pre_post_renderer/pmrendr.ver
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/singlewindow_renderer/singlewindow_renderer.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.ver
datatype/samples/videosurface_renderer/videosurface_renderer.cpp
datatype/samples/videosurface_renderer/videosurface_renderer.h
datatype/samples/videosurface_renderer/videosurface_renderer.ver
server/samples/allowance/allowance.h
server/samples/authbasic/authbasic.cpp
server/samples/authbasic/authbasic.h
server/samples/broadcast/broadcast.cpp
server/samples/broadcast/broadcast.h
server/samples/converter/converter.cpp
server/samples/fileformat/fileformat.cpp
server/samples/fileformat/fileformat.h
server/samples/fileformat2/fileformat2.h
server/samples/livepacketsink/livepacketsink.h
server/samples/logging/logging.h
server/samples/monitor/monitor.cpp
server/samples/monitor/monitor.h
server/samples/payperview/payperview.h
video/samples/capture_vframes/advise_sink.h
video/samples/capture_vframes/authentication_manager.h
video/samples/capture_vframes/blt_service.h
video/samples/capture_vframes/nowindow_site.h
video/samples/capture_vframes/site_supplier.h
video/samples/capture_vframes/video_surface.h

The following are new files which are copies of linux2.pcf

clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf


Testing Performed
=================

Unit Tests:
  This will be done with stage2.

Integration tests:
  This will be done with stage2
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1



Index: audio_renderer2.cpp
===================================================================
RCS file: /cvsroot/datatype/samples/audio_renderer2/audio_renderer2.cpp,v
retrieving revision 1.2
retrieving revision 1.2.58.1
diff -u -d -r1.2 -r1.2.58.1
--- audio_renderer2.cpp	22 Jul 2003 01:49:14 -0000	1.2
+++ audio_renderer2.cpp	16 Nov 2006 19:32:48 -0000	1.2.58.1
@@ -56,9 +56,6 @@
 #include "hxtypes.h"
 
 #include 
-#ifdef _WINDOWS
-    #include 
-#endif
 
 #ifdef _UNIX
     #include 
@@ -630,7 +627,7 @@
 	{
 	    sprintf(szPacketFormat,"Last Packet Contained: %%.%is",
 		(pBuffer->GetSize() < MAX_PACKET_SIZE ? 
-		    pBuffer->GetSize() : MAX_PACKET_SIZE));
+		    (int)pBuffer->GetSize() : MAX_PACKET_SIZE));
 	    nLength4 = sprintf(szText4,szPacketFormat,pBuffer->GetBuffer());
 	    pBuffer->Release();
 	}

Index: audio_renderer2.h
===================================================================
RCS file: /cvsroot/datatype/samples/audio_renderer2/audio_renderer2.h,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.58.1
diff -u -d -r1.1.1.1 -r1.1.1.1.58.1
--- audio_renderer2.h	24 Jun 2003 23:49:44 -0000	1.1.1.1
+++ audio_renderer2.h	16 Nov 2006 19:32:48 -0000	1.1.1.1.58.1
@@ -169,8 +169,6 @@
 
     /****** Private Class Methods ******************************************/
     ~CExampleRenderer();
-
-    PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME       // Avoids GCC compiler warning
 };
 
 

Index: audio_renderer2.ver
===================================================================
RCS file: /cvsroot/datatype/samples/audio_renderer2/audio_renderer2.ver,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.70.1
diff -u -d -r1.1.1.1 -r1.1.1.1.70.1
--- audio_renderer2.ver	24 Jun 2003 23:49:44 -0000	1.1.1.1
+++ audio_renderer2.ver	16 Nov 2006 19:32:48 -0000	1.1.1.1.70.1
@@ -33,10 +33,10 @@
  *  
  * ***** END LICENSE BLOCK ***** */
 
-#define TARVER_ULONG32_VERSION ((10 << 28) | (0 << 20) | (0 << 12) | 0)
-#define TARVER_LIST_VERSION 10,0,0,0
-#define TARVER_MAJOR_VERSION 10
-#define TARVER_MINOR_VERSION 0
-#define TARVER_STRING_VERSION "10.0.0.0"
+#define TARVER_ULONG32_VERSION ((11 << 28) | (1 << 20) | (1 << 12) | 1073)
+#define TARVER_LIST_VERSION 11,1,1,1073
+#define TARVER_MAJOR_VERSION 11
+#define TARVER_MINOR_VERSION 1
+#define TARVER_STRING_VERSION "11.1.1.1073"
 #define TARVER_STR_BUILD_NAME ""
 #define TARVER_STR_PLATFORM "win32"


From jrmoore at helixcommunity.org  Thu Nov 16 11:33:21 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:38:14 2006
Subject: [Datatype-cvs] samples/singlewindow_renderer
	singlewindow_renderer.cpp, 1.1.1.1,
	1.1.1.1.58.1 singlewindow_renderer.h, 1.1.1.1,
	1.1.1.1.58.1 singlewindow_renderer.ver, 1.1.1.1, 1.1.1.1.70.1
Message-ID: 

Update of /cvsroot/datatype/samples/singlewindow_renderer
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv29397/datatype/samples/singlewindow_renderer

Modified Files:
      Tag: SERVER_11_1
	singlewindow_renderer.cpp singlewindow_renderer.h 
	singlewindow_renderer.ver 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-server-nodist")

Branches: SERVER_11_1

Reviewer: Dean Collins

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-server-nodist for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Fixes:  Mostly removing macro PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME that
isn't used anymore (was a gcc 2.x thing).
The rest are minor warnings and fixes that are required by solaris.

Files Affected
==============

audio/samples/audio_device/advise_sink.cpp
audio/samples/audio_device/advise_sink.h
audio/samples/audio_device/audio_device.cpp
audio/samples/audio_device/audio_device.h
audio/samples/audio_device/authentication_manager.h
audio/samples/audio_device/fivemmap.cpp
audio/samples/audio_device/pub/platform/unix/os.h
audio/samples/audio_device/site_supplier.h
client/samples/reverter/reverter.cpp
clientapps/samples/motif_testclient/advise_sink.cpp
clientapps/samples/motif_testclient/advise_sink.h
clientapps/samples/motif_testclient/authorization_manager.h
clientapps/samples/motif_testclient/context.cpp
clientapps/samples/motif_testclient/fivemmap.cpp
clientapps/samples/motif_testclient/main.cpp
clientapps/samples/motif_testclient/os.h
clientapps/samples/motif_testclient/site_supplier.cpp
clientapps/samples/motif_testclient/site_supplier.h
clientapps/samples/testplay/acm_manager.cpp
clientapps/samples/testplay/advise_sink.cpp
clientapps/samples/testplay/advise_sink.h
clientapps/samples/testplay/authentication_manager.h
clientapps/samples/testplay/fivemmap.cpp
clientapps/samples/testplay/pub/platform/unix/os.h
clientapps/samples/testplay/site_supplier.h
clientapps/samples/testplay/sunos5.pcf
common/include/platform.h
common/samples/xml_parser/pub/platform/unix/os.h
common/samples/xml_parser/sunos5.pcf
datatype/samples/audio_renderer/audio_renderer.cpp
datatype/samples/audio_renderer/audio_renderer.h
datatype/samples/audio_renderer/audio_renderer.ver
datatype/samples/audio_renderer2/audio_renderer2.cpp
datatype/samples/audio_renderer2/audio_renderer2.h
datatype/samples/audio_renderer2/audio_renderer2.ver
datatype/samples/example_renderer/example_renderer.cpp
datatype/samples/example_renderer/example_renderer.h
datatype/samples/example_renderer/example_renderer.ver
datatype/samples/example_renderer2/example_renderer2.cpp
datatype/samples/example_renderer2/example_renderer2.h
datatype/samples/example_renderer2/example_renderer2.ver
datatype/samples/fileformat1_renderer/fileformat1_renderer.h
datatype/samples/live_realpix/live_realpix.cpp
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/live_realtext/pub/platform/unix/os.h
datatype/samples/live_slideshow/live_slideshow.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
datatype/samples/pcm_renderer/pcm_renderer.h
datatype/samples/pcm_renderer/pcm_renderer.ver
datatype/samples/pcm_renderer2/pcm_renderer2.ver
datatype/samples/pre_post_fileformat/pre_post_fileformat.h
datatype/samples/pre_post_fileformat/pre_post_fileformat.ver
datatype/samples/pre_post_renderer/pmrendr.ver
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/singlewindow_renderer/singlewindow_renderer.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.ver
datatype/samples/videosurface_renderer/videosurface_renderer.cpp
datatype/samples/videosurface_renderer/videosurface_renderer.h
datatype/samples/videosurface_renderer/videosurface_renderer.ver
server/samples/allowance/allowance.h
server/samples/authbasic/authbasic.cpp
server/samples/authbasic/authbasic.h
server/samples/broadcast/broadcast.cpp
server/samples/broadcast/broadcast.h
server/samples/converter/converter.cpp
server/samples/fileformat/fileformat.cpp
server/samples/fileformat/fileformat.h
server/samples/fileformat2/fileformat2.h
server/samples/livepacketsink/livepacketsink.h
server/samples/logging/logging.h
server/samples/monitor/monitor.cpp
server/samples/monitor/monitor.h
server/samples/payperview/payperview.h
video/samples/capture_vframes/advise_sink.h
video/samples/capture_vframes/authentication_manager.h
video/samples/capture_vframes/blt_service.h
video/samples/capture_vframes/nowindow_site.h
video/samples/capture_vframes/site_supplier.h
video/samples/capture_vframes/video_surface.h

The following are new files which are copies of linux2.pcf

clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf


Testing Performed
=================

Unit Tests:
  This will be done with stage2.

Integration tests:
  This will be done with stage2
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1



Index: singlewindow_renderer.cpp
===================================================================
RCS file: /cvsroot/datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.58.1
diff -u -d -r1.1.1.1 -r1.1.1.1.58.1
--- singlewindow_renderer.cpp	24 Jun 2003 23:49:45 -0000	1.1.1.1
+++ singlewindow_renderer.cpp	16 Nov 2006 19:33:19 -0000	1.1.1.1.58.1
@@ -52,9 +52,6 @@
 #include 
 
 #include "hxtypes.h"
-#ifdef _WINDOWS
-     #include 
-#endif
 
 #ifdef _UNIX
     #include 
@@ -579,7 +576,7 @@
 	{
 	    sprintf(szPacketFormat,"Last Packet Contained: %%.%is",
 		(pBuffer->GetSize() < MAX_PACKET_SIZE ? 
-		    pBuffer->GetSize() : MAX_PACKET_SIZE));
+		    (int)pBuffer->GetSize() : MAX_PACKET_SIZE));
 	    nLength4 = sprintf(szText4,szPacketFormat,pBuffer->GetBuffer());
 	    pBuffer->Release();
 	}
@@ -745,7 +742,7 @@
 
     m_wDrawable = XtVaCreateManagedWidget("",
 					  coreWidgetClass,
-					  m_widget,
+					  (Widget)m_widget,
 					  XtNx, 120,
 					  XtNy, 0,
 					  XtNwidth, 300,
@@ -843,7 +840,6 @@
     if(!m_gc && m_widget)
     {
 	XGCValues values;
-	Font font;
 	XFontStruct* fontinfo;
 	fontinfo = XLoadQueryFont(XtDisplay((Widget)m_widget), "6x10");
 	values.font = fontinfo->fid;

Index: singlewindow_renderer.ver
===================================================================
RCS file: /cvsroot/datatype/samples/singlewindow_renderer/singlewindow_renderer.ver,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.70.1
diff -u -d -r1.1.1.1 -r1.1.1.1.70.1
--- singlewindow_renderer.ver	24 Jun 2003 23:49:45 -0000	1.1.1.1
+++ singlewindow_renderer.ver	16 Nov 2006 19:33:19 -0000	1.1.1.1.70.1
@@ -34,10 +34,10 @@
  * ***** END LICENSE BLOCK ***** */
 
 
-#define TARVER_ULONG32_VERSION ((10 << 28) | (0 << 20) | (0 << 12) | 0)
-#define TARVER_LIST_VERSION 10,0,0,0
-#define TARVER_MAJOR_VERSION 10
-#define TARVER_MINOR_VERSION 0
-#define TARVER_STRING_VERSION "10.0.0.0"
+#define TARVER_ULONG32_VERSION ((11 << 28) | (1 << 20) | (1 << 12) | 1073)
+#define TARVER_LIST_VERSION 11,1,1,1073
+#define TARVER_MAJOR_VERSION 11
+#define TARVER_MINOR_VERSION 1
+#define TARVER_STRING_VERSION "11.1.1.1073"
 #define TARVER_STR_BUILD_NAME ""
 #define TARVER_STR_PLATFORM "win32"

Index: singlewindow_renderer.h
===================================================================
RCS file: /cvsroot/datatype/samples/singlewindow_renderer/singlewindow_renderer.h,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.58.1
diff -u -d -r1.1.1.1 -r1.1.1.1.58.1
--- singlewindow_renderer.h	24 Jun 2003 23:49:45 -0000	1.1.1.1
+++ singlewindow_renderer.h	16 Nov 2006 19:33:19 -0000	1.1.1.1.58.1
@@ -197,8 +197,6 @@
 
     /****** Private Class Methods ******************************************/
     ~CExampleRenderer();
-
-    PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME;
 };
 
 


From jrmoore at helixcommunity.org  Thu Nov 16 11:32:52 2006
From: jrmoore at helixcommunity.org (jrmoore@helixcommunity.org)
Date: Thu Nov 16 12:38:18 2006
Subject: [Datatype-cvs] samples/example_renderer example_renderer.cpp, 1.2,
	1.2.58.1 example_renderer.h, 1.1.1.1,
	1.1.1.1.58.1 example_renderer.ver, 1.1.1.1, 1.1.1.1.70.1
Message-ID: 

Update of /cvsroot/datatype/samples/example_renderer
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv29397/datatype/samples/example_renderer

Modified Files:
      Tag: SERVER_11_1
	example_renderer.cpp example_renderer.h example_renderer.ver 
Log Message:
Synopsis
========
Build current Helix SDK ("helixsdk" for "stage1" with "helix-server-nodist")

Branches: SERVER_11_1

Reviewer: Dean Collins

Description
===========
There is a request on the table to make the server SDK available from
the community in a prepackaged and ready to build package. Most
customers want this SDK but do not want to use ribosome or join the
community for it.

Following the helixsdk.bif instructions, I built the helixsdk using stage1
as the target and helix-server-nodist for Solaris, Linux and Windows platforms.
See the [real]helixsdk.bif for instructions.

Fixes:  Mostly removing macro PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME that
isn't used anymore (was a gcc 2.x thing).
The rest are minor warnings and fixes that are required by solaris.

Files Affected
==============

audio/samples/audio_device/advise_sink.cpp
audio/samples/audio_device/advise_sink.h
audio/samples/audio_device/audio_device.cpp
audio/samples/audio_device/audio_device.h
audio/samples/audio_device/authentication_manager.h
audio/samples/audio_device/fivemmap.cpp
audio/samples/audio_device/pub/platform/unix/os.h
audio/samples/audio_device/site_supplier.h
client/samples/reverter/reverter.cpp
clientapps/samples/motif_testclient/advise_sink.cpp
clientapps/samples/motif_testclient/advise_sink.h
clientapps/samples/motif_testclient/authorization_manager.h
clientapps/samples/motif_testclient/context.cpp
clientapps/samples/motif_testclient/fivemmap.cpp
clientapps/samples/motif_testclient/main.cpp
clientapps/samples/motif_testclient/os.h
clientapps/samples/motif_testclient/site_supplier.cpp
clientapps/samples/motif_testclient/site_supplier.h
clientapps/samples/testplay/acm_manager.cpp
clientapps/samples/testplay/advise_sink.cpp
clientapps/samples/testplay/advise_sink.h
clientapps/samples/testplay/authentication_manager.h
clientapps/samples/testplay/fivemmap.cpp
clientapps/samples/testplay/pub/platform/unix/os.h
clientapps/samples/testplay/site_supplier.h
clientapps/samples/testplay/sunos5.pcf
common/include/platform.h
common/samples/xml_parser/pub/platform/unix/os.h
common/samples/xml_parser/sunos5.pcf
datatype/samples/audio_renderer/audio_renderer.cpp
datatype/samples/audio_renderer/audio_renderer.h
datatype/samples/audio_renderer/audio_renderer.ver
datatype/samples/audio_renderer2/audio_renderer2.cpp
datatype/samples/audio_renderer2/audio_renderer2.h
datatype/samples/audio_renderer2/audio_renderer2.ver
datatype/samples/example_renderer/example_renderer.cpp
datatype/samples/example_renderer/example_renderer.h
datatype/samples/example_renderer/example_renderer.ver
datatype/samples/example_renderer2/example_renderer2.cpp
datatype/samples/example_renderer2/example_renderer2.h
datatype/samples/example_renderer2/example_renderer2.ver
datatype/samples/fileformat1_renderer/fileformat1_renderer.h
datatype/samples/live_realpix/live_realpix.cpp
datatype/samples/live_realpix/pub/platform/unix/os.h
datatype/samples/live_realtext/pub/platform/unix/os.h
datatype/samples/live_slideshow/live_slideshow.cpp
datatype/samples/live_slideshow/pub/platform/unix/os.h
datatype/samples/pcm_renderer/pcm_renderer.h
datatype/samples/pcm_renderer/pcm_renderer.ver
datatype/samples/pcm_renderer2/pcm_renderer2.ver
datatype/samples/pre_post_fileformat/pre_post_fileformat.h
datatype/samples/pre_post_fileformat/pre_post_fileformat.ver
datatype/samples/pre_post_renderer/pmrendr.ver
datatype/samples/pre_post_renderer/premixrd.h
datatype/samples/pre_post_renderer/pstmixrd.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.cpp
datatype/samples/singlewindow_renderer/singlewindow_renderer.h
datatype/samples/singlewindow_renderer/singlewindow_renderer.ver
datatype/samples/videosurface_renderer/videosurface_renderer.cpp
datatype/samples/videosurface_renderer/videosurface_renderer.h
datatype/samples/videosurface_renderer/videosurface_renderer.ver
server/samples/allowance/allowance.h
server/samples/authbasic/authbasic.cpp
server/samples/authbasic/authbasic.h
server/samples/broadcast/broadcast.cpp
server/samples/broadcast/broadcast.h
server/samples/converter/converter.cpp
server/samples/fileformat/fileformat.cpp
server/samples/fileformat/fileformat.h
server/samples/fileformat2/fileformat2.h
server/samples/livepacketsink/livepacketsink.h
server/samples/logging/logging.h
server/samples/monitor/monitor.cpp
server/samples/monitor/monitor.h
server/samples/payperview/payperview.h
video/samples/capture_vframes/advise_sink.h
video/samples/capture_vframes/authentication_manager.h
video/samples/capture_vframes/blt_service.h
video/samples/capture_vframes/nowindow_site.h
video/samples/capture_vframes/site_supplier.h
video/samples/capture_vframes/video_surface.h

The following are new files which are copies of linux2.pcf

clientapps/samples/motif_testclient/sunos5.pcf
datatype/samples/live_realpix/sunos5.pcf
datatype/samples/live_realtext/sunos5.pcf
datatype/samples/live_slideshow/sunos5.pcf


Testing Performed
=================

Unit Tests:
  This will be done with stage2.

Integration tests:
  This will be done with stage2
 
Leak Tests:
  n/a

Performance tests:
  n/a

Platforms builds:
  sunos-5.8-sparc-server, linux-rhel4-i686, win32-i386-vc7

QA Hints
========
none for stage1



Index: example_renderer.ver
===================================================================
RCS file: /cvsroot/datatype/samples/example_renderer/example_renderer.ver,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.70.1
diff -u -d -r1.1.1.1 -r1.1.1.1.70.1
--- example_renderer.ver	24 Jun 2003 23:49:44 -0000	1.1.1.1
+++ example_renderer.ver	16 Nov 2006 19:32:50 -0000	1.1.1.1.70.1
@@ -34,10 +34,10 @@
  * ***** END LICENSE BLOCK ***** */
 
 
-#define TARVER_ULONG32_VERSION ((10 << 28) | (0 << 20) | (0 << 12) | 0)
-#define TARVER_LIST_VERSION 10,0,0,0
-#define TARVER_MAJOR_VERSION 10
-#define TARVER_MINOR_VERSION 0
-#define TARVER_STRING_VERSION "10.0.0.0"
+#define TARVER_ULONG32_VERSION ((11 << 28) | (1 << 20) | (1 << 12) | 1073)
+#define TARVER_LIST_VERSION 11,1,1,1073
+#define TARVER_MAJOR_VERSION 11
+#define TARVER_MINOR_VERSION 1
+#define TARVER_STRING_VERSION "11.1.1.1073"
 #define TARVER_STR_BUILD_NAME ""
 #define TARVER_STR_PLATFORM "win32"

Index: example_renderer.h
===================================================================
RCS file: /cvsroot/datatype/samples/example_renderer/example_renderer.h,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.58.1
diff -u -d -r1.1.1.1 -r1.1.1.1.58.1
--- example_renderer.h	24 Jun 2003 23:49:44 -0000	1.1.1.1
+++ example_renderer.h	16 Nov 2006 19:32:50 -0000	1.1.1.1.58.1
@@ -73,7 +73,7 @@
         , m_bInSeekMode(FALSE)
         #ifdef _UNIX
         , m_pdisp(NULL)
-        , m_window(NULL)
+        , m_window((Window)NULL)
         , m_gc(NULL)
         #endif
 #if defined(_WINDOWS)
@@ -192,8 +192,6 @@
     ~CExampleRenderer();
 
     HX_RESULT SetupOffscreenBuffer();
-
-    PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME       // Avoids GCC compiler warning
 };
 
 #endif /* ndef _EXAMPLE_RENDERER_H_ */

Index: example_renderer.cpp
===================================================================
RCS file: /cvsroot/datatype/samples/example_renderer/example_renderer.cpp,v
retrieving revision 1.2
retrieving revision 1.2.58.1
diff -u -d -r1.2 -r1.2.58.1
--- example_renderer.cpp	22 Jul 2003 01:49:14 -0000	1.2
+++ example_renderer.cpp	16 Nov 2006 19:32:50 -0000	1.2.58.1
@@ -58,10 +58,6 @@
 #include 
 #include 
 
-#ifdef _WINDOWS
-    #include 
-#endif
-
 #ifdef _UNIX
     #include 
     #include 
@@ -594,7 +590,7 @@
 	{
 	    sprintf(szPacketFormat,"Last Packet Contained: %%.%is",
 		(pBuffer->GetSize() < MAX_PACKET_SIZE ? 
-		    pBuffer->GetSize() : MAX_PACKET_SIZE));
+		    (int)pBuffer->GetSize() : MAX_PACKET_SIZE));
 	    nLength4 = sprintf(szText4,szPacketFormat,pBuffer->GetBuffer());
 	    pBuffer->Release();
 	}


From milko at helixcommunity.org  Thu Nov 16 14:30:21 2006
From: milko at helixcommunity.org (milko@helixcommunity.org)
Date: Thu Nov 16 15:34:39 2006
Subject: [Datatype-cvs] mp4/payload mp4vpyld.cpp,1.18,1.19
Message-ID: 

Update of /cvsroot/datatype/mp4/payload
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv22266

Modified Files:
	mp4vpyld.cpp 
Log Message:
Modified by: milko@real.com
Date: 11:16:06
Project: Atlas

Synopsis: RTSP/RTP and MP4-Video fixes

Overview:
This submission includes the following corrections and enhancements:

-> fixes omission in previous submission titled "CR: RTSP, RTP and 3GPP Adaptation fixes" that was still causing improper etting of first time-stamp and seq.number for pipleined PLAY commands in seek or resume context

-> added tracking of RTSP PLAY command issued to the server and context of the commands (resume or seek) to add additional robustness of handling cases where servers fail to respond to every PLAY command issued

-> moved update of the play range ahead of computation of the RTP to NPT time-stamp mapping to allow the computation to occur based on the range returend by the server as opposed the range requested by the client.

-> corrected creation of lost packets for RTP streams so that created packets to support IHXRTPPacket interface.  This violated the rule of "if any then all packet must support IHXRTPPacket interface" thus causing incorrect RTP time-stamp conversion in MPEG4 video depacketizer in some corner cases.  The corner case included starting the stream with a lost packet, seeking and restarting the post-seek sequence with a non-lost packet.  The outcome was a video hang.

-> added detailed logging to RTSP/RTP stack.  Now full set of RTSP/RTP log statements is provided which allows for full analysis of RTSP/RTP stack behavior.  The logging area is "RTSP".

-> Circumvented any processing of pre-seek packets in base video renderer. Any processing of such packets is undesireable in context of video and it can be potentially harmful if pre-seek packets contain incorrect time-stamps due to possible contamination of wrap-around handling in time-stamp converter objects which rely on input of roughly contiguous time stamps.  The pre-seek packets in case of RTP tend to be incorrect due to re-established RTP to NPT mapping for post-seek packets.  As pre-seek packets are useless for video, correcting the time-stamps for RTP pre-seek packets is only an academic and non-trivial excersize that will not be undertaken.

-> Increased robustness of MPEG4 video depacketizer by removing the rest of packet time-stamp smapling rate.  This rest in combination with bug corrected under item 4 was the cause of MP4 video freeze after seek in a corner case described under item 4.

-> Corrected MPEG4 video depacketizer (RFC3016) to do proper accounting of consumed frames.  Previously, it was possible for the depacketizer to miscount which was evident by an ASSERT and fewer frames processed in total (full scope of this error has not been examined)


Index: mp4vpyld.cpp
===================================================================
RCS file: /cvsroot/datatype/mp4/payload/mp4vpyld.cpp,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- mp4vpyld.cpp	28 Oct 2005 11:01:37 -0000	1.18
+++ mp4vpyld.cpp	16 Nov 2006 22:30:19 -0000	1.19
@@ -592,15 +592,17 @@
 
 	HX_RELEASE(pRTPPacket);
 
-	if (!m_bUsesRTPPackets)
+	if (m_bUsesRTPPackets)
 	{
-	    m_ulSamplesPerSecond = 1000; // RDT time stamp
-	}
-
-	HX_ASSERT(m_ulSamplesPerSecond != 0);
+	    HX_ASSERT(m_ulSamplesPerSecond != 0);
 
-	m_TSConverter.SetBase(m_ulSamplesPerSecond,
-			      1000);
+	    m_TSConverter.SetBase(m_ulSamplesPerSecond,
+				  1000);
+	}
+	else
+	{
+	    m_TSConverter.SetBase(1000, 1000);
+	}
     }
 
     // Add this packet to our list of input packets
@@ -1083,6 +1085,7 @@
 	ULONG32 ulValidSegmentCount = 0;
 	IHXPacket* pPacket;
 	IHXBuffer* pBuffer = NULL;
+	LISTPOSITION tentativeListPos;
 	LISTPOSITION listPos;
 	ULONG32 ulIdx;
 	HXBOOL bIsLost;
@@ -1098,7 +1101,7 @@
 	do
 	{
 	    listPos = m_InputPackets.GetHeadPosition();
-            if( listPos == NULL )
+            if (tentativeListPos == NULL)
             {
                 return HXR_OUTOFMEMORY;
             }
@@ -1116,7 +1119,11 @@
 		    ulValidSegmentCount = CountValidPackets(NUM_OVERLAP_SEGMENTS);
 		}
 
-		pPacket = (IHXPacket*) m_InputPackets.GetNext(listPos);
+		// Get Next below will advance the list position.
+		// Consider this list position tentative until we decided
+		// to include that list element into the current frame.
+		tentativeListPos = listPos;
+		pPacket = (IHXPacket*) m_InputPackets.GetNext(tentativeListPos);
 
 		if (!pPacket->IsLost())
 		{
@@ -1153,6 +1160,9 @@
 		}
 
 		ulSegmentCount++;
+		// Since we are including the current packet into the frame,
+		// make the tentative list position permanent.
+		listPos = tentativeListPos;
 	    } while ((pPacket->GetASMRuleNumber() != 1) && (listPos != NULL));
 
 	    m_ulFrameCount--;


From milko at helixcommunity.org  Thu Nov 16 14:32:05 2006
From: milko at helixcommunity.org (milko@helixcommunity.org)
Date: Thu Nov 16 15:36:22 2006
Subject: [Datatype-cvs] common/vidrend vidrend.cpp,1.89,1.90
Message-ID: 

Update of /cvsroot/datatype/common/vidrend
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv22892

Modified Files:
	vidrend.cpp 
Log Message:
Modified by: milko@real.com
Date: 11:16:06
Project: Atlas

Synopsis: RTSP/RTP and MP4-Video fixes

Overview:
This submission includes the following corrections and enhancements:

-> fixes omission in previous submission titled "CR: RTSP, RTP and 3GPP Adaptation fixes" that was still causing improper etting of first time-stamp and seq.number for pipleined PLAY commands in seek or resume context

-> added tracking of RTSP PLAY command issued to the server and context of the commands (resume or seek) to add additional robustness of handling cases where servers fail to respond to every PLAY command issued

-> moved update of the play range ahead of computation of the RTP to NPT time-stamp mapping to allow the computation to occur based on the range returend by the server as opposed the range requested by the client.

-> corrected creation of lost packets for RTP streams so that created packets to support IHXRTPPacket interface.  This violated the rule of "if any then all packet must support IHXRTPPacket interface" thus causing incorrect RTP time-stamp conversion in MPEG4 video depacketizer in some corner cases.  The corner case included starting the stream with a lost packet, seeking and restarting the post-seek sequence with a non-lost packet.  The outcome was a video hang.

-> added detailed logging to RTSP/RTP stack.  Now full set of RTSP/RTP log statements is provided which allows for full analysis of RTSP/RTP stack behavior.  The logging area is "RTSP".

-> Circumvented any processing of pre-seek packets in base video renderer. Any processing of such packets is undesireable in context of video and it can be potentially harmful if pre-seek packets contain incorrect time-stamps due to possible contamination of wrap-around handling in time-stamp converter objects which rely on input of roughly contiguous time stamps.  The pre-seek packets in case of RTP tend to be incorrect due to re-established RTP to NPT mapping for post-seek packets.  As pre-seek packets are useless for video, correcting the time-stamps for RTP pre-seek packets is only an academic and non-trivial excersize that will not be undertaken.

-> Increased robustness of MPEG4 video depacketizer by removing the rest of packet time-stamp smapling rate.  This rest in combination with bug corrected under item 4 was the cause of MP4 video freeze after seek in a corner case described under item 4.

-> Corrected MPEG4 video depacketizer (RFC3016) to do proper accounting of consumed frames.  Previously, it was possible for the depacketizer to miscount which was evident by an ASSERT and fewer frames processed in total (full scope of this error has not been examined).


Index: vidrend.cpp
===================================================================
RCS file: /cvsroot/datatype/common/vidrend/vidrend.cpp,v
retrieving revision 1.89
retrieving revision 1.90
diff -u -d -r1.89 -r1.90
--- vidrend.cpp	8 Nov 2006 03:21:00 -0000	1.89
+++ vidrend.cpp	16 Nov 2006 22:32:03 -0000	1.90
@@ -1071,6 +1071,13 @@
 //
 STDMETHODIMP CVideoRenderer::OnPacket(IHXPacket* pPacket, LONG32 lTimeOffset)
 {
+    // Ignore any packet delivered during the seek state since they are
+    // pre-seek packets and thus out of context for video playback.
+    if (m_PlayState == Seeking)
+    {
+	return HXR_OK;
+    }
+
     HXLOGL4(HXLOG_BVID, "CVideoRenderer::OnPacket() pts=%lu offset=%ld rule=%u flags=0x%02x timenow=%lu decqdepth=%lu",
             (pPacket ? pPacket->GetTime() : 0),
 	    lTimeOffset,
@@ -1095,9 +1102,9 @@
     }
 
     HXBOOL bQueueRet = m_pVideoFormat->Enqueue(pPacket);
-    if(bQueueRet == FALSE && m_pVideoFormat->GetLastError() == HXR_OUTOFMEMORY)
+    if (bQueueRet == FALSE && m_pVideoFormat->GetLastError() == HXR_OUTOFMEMORY)
     {
-        return HXR_OUTOFMEMORY;
+	return HXR_OUTOFMEMORY;
     }
 
     // try to decode a frame
@@ -1130,32 +1137,27 @@
             m_pTimeSyncSmoother->SetBaseTimeFlag();
         }
 
-        // If we are seeking, this is a pre-seek packet and there is
-        // no need to decode it
-        if (m_PlayState != Seeking)
-        {
 #ifdef HELIX_FEATURE_VIDREND_THREADEDDECODE_ON_STARTUP
-            if (IsDecoderRunning() && m_pDecoderPump)
-            {
-                m_pDecoderPump->Signal();
-            }
-            else
+	if (IsDecoderRunning() && m_pDecoderPump)
+	{
+	    m_pDecoderPump->Signal();
+	}
+	else
 #endif  // HELIX_FEATURE_VIDREND_THREADEDDECODE_ON_STARTUP
-            {
-                m_pVideoFormat->DecodeFrame();
-            }
+	{
+	    m_pVideoFormat->DecodeFrame();
+	}
 
-            if (m_PlayState == Buffering)
-            {
-                if (IsBufferingComplete(pPacket))
-                {
-                    RequestBufferingEnd();
-                }
-            }
-        }
+	if (m_PlayState == Buffering)
+	{
+	    if (IsBufferingComplete(pPacket))
+	    {
+		RequestBufferingEnd();
+	    }
+	}
     }
 
-     HXLOGL4(HXLOG_BVID, "CVideoRenderer::OnPacket() Exiting timenow=%lu decqdepth=%lu",
+    HXLOGL4(HXLOG_BVID, "CVideoRenderer::OnPacket() Exiting timenow=%lu decqdepth=%lu",
             m_pTimeSyncSmoother->GetTimeNow(),
 	    m_pVideoFormat ? m_pVideoFormat->GetDecodedFrameQueueDepth() : 0);
 


From kliu at helixcommunity.org  Thu Nov 16 16:37:30 2006
From: kliu at helixcommunity.org (kliu@helixcommunity.org)
Date: Thu Nov 16 17:41:45 2006
Subject: [Datatype-cvs] CVSROOT avail,1.110,1.111 loginfo,1.4,1.5
Message-ID: 

Update of /cvsroot/datatype/CVSROOT
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv3128/CVSROOT

Modified Files:
	avail loginfo 
Log Message:
granting lovish write access for the datatype project

Index: loginfo
===================================================================
RCS file: /cvsroot/datatype/CVSROOT/loginfo,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- loginfo	14 Dec 2004 02:21:32 -0000	1.4
+++ loginfo	17 Nov 2006 00:37:27 -0000	1.5
@@ -36,4 +36,4 @@
 
 
 ## ViewCVS handler 
-#ALL echo "%{sVv}" | /usr/local/viewcvs-0.9.2/loginfo-handler
+ALL echo "%{sVv}" | /usr/local/viewcvs-0.9.2/loginfo-handler

Index: avail
===================================================================
RCS file: /cvsroot/datatype/CVSROOT/avail,v
retrieving revision 1.110
retrieving revision 1.111
diff -u -d -r1.110 -r1.111
--- avail	2 Nov 2006 18:27:36 -0000	1.110
+++ avail	17 Nov 2006 00:37:27 -0000	1.111
@@ -1,4 +1,7 @@
 unavail
+avail|schaturvedi
+avail|gbajaj
+avail|gahluwalia
 avail|lovish
 avail|gpai
 avail|moiseankim


From cdunn at helixcommunity.org  Fri Nov 17 14:45:50 2006
From: cdunn at helixcommunity.org (cdunn@helixcommunity.org)
Date: Fri Nov 17 15:49:47 2006
Subject: [Datatype-cvs] flash/flashhost/pub flash_guest_player.h, 1.5,
	1.6 flash_runtime.h, 1.2, 1.3
Message-ID: 

Update of /cvsroot/datatype/flash/flashhost/pub
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv9291/pub

Modified Files:
	flash_guest_player.h flash_runtime.h 
Log Message:
Add windowless mode functionality.

Index: flash_runtime.h
===================================================================
RCS file: /cvsroot/datatype/flash/flashhost/pub/flash_runtime.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- flash_runtime.h	1 Nov 2006 22:35:24 -0000	1.2
+++ flash_runtime.h	17 Nov 2006 22:45:48 -0000	1.3
@@ -76,10 +76,11 @@
 	    return true;
 	}
 
+  static bool NP_Invoke(NPObject *obj, NPIdentifier method, const NPVariant *args, uint32_t argCount, NPVariant *result);
+
   //static void NP_Deallocate(NPObject *obj);
   //static void NP_Invalidate(NPObject *obj);
   //static bool NP_HasMethod(NPObject *, NPIdentifier identifier);
-  //static bool NP_Invoke(NPObject *obj, NPIdentifier method, const NPVariant *args, uint32_t argCount, NPVariant *result);
   //static bool NP_InvokeDefault(NPObject *obj, const NPVariant *args, uint32_t argCount, NPVariant *result);
   //static bool NP_HasProperty(NPObject * obj, NPIdentifier property);
   //static bool NP_SetProperty(NPObject *obj, NPIdentifier property, const NPVariant *value);

Index: flash_guest_player.h
===================================================================
RCS file: /cvsroot/datatype/flash/flashhost/pub/flash_guest_player.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- flash_guest_player.h	3 Nov 2006 21:00:33 -0000	1.5
+++ flash_guest_player.h	17 Nov 2006 22:45:48 -0000	1.6
@@ -135,6 +135,8 @@
     UINT16		m_dStreamType;		// NP_NORMAL or NP_ASFILE (call SendStream)
 
     const char* GetURL() { return (const char*)m_pszURL; }
+    void		SetWindowless(HXBOOL bWindowless) { m_bWindowless = bWindowless; }
+    void		SetTransparent(HXBOOL bTransparent) { m_bTransparent = bTransparent; }
 
     HX_RESULT NewStream(NPP npp, const char* pszURL, const char* mimeType, NPStream* pNPStream, UINT16& dStreamType);
     HX_RESULT SendStream(NPStream* pNPStream, UINT16 dStreamType);
@@ -213,11 +215,11 @@
 
     IUnknown*	GetContext() { return m_pContext; }
 
-
 private:
     HX_RESULT InitPluginCallbacks();		// sets m_HostMethods
     HX_RESULT CreatePluginInstance(const char* pszURL);
     HX_RESULT BuildUserAgentString();
+    HXBOOL    SendPaintEvent(NPP npp, NPRect* pInvalidRect);
     void      CheckMethods();
     HX_RESULT Invoke(const char* methodName, CHXString pStrVal);
     HX_RESULT Invoke(const char* methodName, INT32& dVal);
@@ -229,14 +231,21 @@
     IHXSite* 		m_pSite;
     IHXSiteManager* 	m_pSiteManager;
     CHXString	    	m_pszURL;
+    HXBOOL		m_bWindowless;
+    HXBOOL		m_bTransparent;
     static const char* const	m_pszFlashMimeType;
     static CHXStringList*	m_pStringIds;
     static CHXSimpleList*	m_pIntIds;
     static CHXString	    	m_pUserAgentStr;
 
-    _NPP		m_NPP;		// instance
-    NPObject*		m_psobj;	// scriptable object
 
+    _NPP	m_NPP;		// instance
+    NPObject*	m_psobj;	// scriptable object
+
+#ifdef WIN32
+    HWND	m_hwnd;
+    HDC		m_hdc;
+#endif
 };
 
 #endif /* #ifndef FLASH_HOSTED_RENDERER_H */


From cdunn at helixcommunity.org  Fri Nov 17 14:45:50 2006
From: cdunn at helixcommunity.org (cdunn@helixcommunity.org)
Date: Fri Nov 17 15:49:50 2006
Subject: [Datatype-cvs] flash/flashhost README.txt, 1.2,
	1.3 flash_guest_player.cpp, 1.7, 1.8
Message-ID: 

Update of /cvsroot/datatype/flash/flashhost
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv9291

Modified Files:
	README.txt flash_guest_player.cpp 
Log Message:
Add windowless mode functionality.

Index: flash_guest_player.cpp
===================================================================
RCS file: /cvsroot/datatype/flash/flashhost/flash_guest_player.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- flash_guest_player.cpp	3 Nov 2006 21:00:33 -0000	1.7
+++ flash_guest_player.cpp	17 Nov 2006 22:45:48 -0000	1.8
@@ -71,15 +71,21 @@
 #include "dllacces.h"
 
 #include "hxver.h" // USER_AGENT
+#include "hxwinver.h" // For UserAgent
 #include "hxprefutil.h"
 #include "platform.h"
 #include "clntcore.ver"
 
-// Mozilla plug-in header files
+// Netscape Gecko plug-in header files
+#include "nsBuildID.h" // For NS_BUILD_ID, for UserAgent string
 #include "npapi.h"
 #include "npupp.h"	
 #include "npruntime.h"
 
+//////////////////////////////////////////////
+#define FLASH_WINDOW_WINDOWLESS
+#define FLASH_WINDOW_TRANSPARENT
+//////////////////////////////////////////////
 
 #define MAX_BUFSIZE 4096
 const UINT32 dWindowWidth=500;
@@ -98,7 +104,7 @@
     NULL, //CNPObjectWrapper::NP_Deallocate,
     NULL, //CNPObjectWrapper::NP_Invalidate,
     NULL, //CNPObjectWrapper::NP_HasMethod,
-    NULL, //CNPObjectWrapper::NP_Invoke,
+    CNPObjectWrapper::NP_Invoke,
     NULL, //CNPObjectWrapper::NP_InvokeDefault,
     NULL, //CNPObjectWrapper::NP_HasProperty,
     CNPObjectWrapper::NP_GetProperty,
@@ -180,6 +186,8 @@
     , m_pNetworkConfig(NULL)
     , m_pResponseList(NULL)
     , m_pRequest(NULL)
+    , m_bWindowless(FALSE)
+    , m_bTransparent(FALSE)
     , m_psobj(NULL)
     , m_ulGuestPlayerState(HXGUEST_STATE_PLAYER_CREATED)
     , m_ulLastPlaybackTick(0)
@@ -189,6 +197,8 @@
     , m_usVolume(100)
     , m_bMute(FALSE)
     , m_dPlaybackRate(0.0)
+    , m_hwnd(0)
+    , m_hdc(0)
 {
     memset(&m_PluginFuncs, 0, sizeof(NPPluginFuncs));
     m_PluginFuncs.size = sizeof(NPPluginFuncs);
@@ -306,10 +316,9 @@
 
 	if (m_pDLLAccess && m_pDLLAccess->isOpen())
 	{
-	    NP_GETENTRYPOINTS pfnGetEntryPoints = (NP_GETENTRYPOINTS) m_pDLLAccess->getSymbol("NP_GetEntryPoints");
-
 	    NPError npstatus;
 
+	    NP_GETENTRYPOINTS pfnGetEntryPoints = (NP_GETENTRYPOINTS) m_pDLLAccess->getSymbol("NP_GetEntryPoints");
 	    // Get the SWF plug-in entry points
 	    if (pfnGetEntryPoints &&
 		(npstatus = pfnGetEntryPoints( &m_PluginFuncs ) == NPERR_NO_ERROR))
@@ -359,9 +368,8 @@
 
     if (m_PluginFuncs.newp)
     {
-        NPSavedData *pSaved = NULL;
-	 
         HXLOGL4(HXLOG_FPHR, "\tcalling NPP_New");
+
 	char* cNames[20];
 	char* cValues[20];
 	int i=0;
@@ -370,23 +378,35 @@
 
 	cNames[i] = new_string("QUALITY");
 	cValues[i++] = new_string("high");	// low, medium or high
-#ifdef DEBUG
-	cNames[i] = new_string("BGCOLOR");
-	cValues[i++] = new_string("#AAAAAA"); // set background color to gray, to show the transparency of the flash
-#endif
 	cNames[i] = new_string("LOOP");
 	cValues[i++] = new_string("true");
 	cNames[i] = new_string("MENU");
 	cValues[i++] = new_string("true");
 
+	// WMODE is the attribute that creates the instance as windowless or windowed.
+	// The plug-in will use NPN_SetValue to set the windowless and transparency flags,
+	// if the instance is successfully created as windowless. This might fail if the
+	// UserAgent string is incorrect or in other versions of the plug-in where it is
+	// not supported, which may be the case for some Linux versions.
+	cNames[i] = new_string("WMODE");
+#if defined(FLASH_WINDOW_WINDOWLESS)
+#if defined(FLASH_WINDOW_TRANSPARENT)
+	cValues[i++] = new_string("transparent");
+#else
+	cValues[i++] = new_string("opaque");
+#endif
+#else
+	cValues[i++] = new_string("windowed");
+#endif
+
         // Create the plugin instance
         NPError npres = m_PluginFuncs.newp(
 	        (NPMIMEType) m_pszFlashMimeType,
 		&m_NPP,
-		NP_EMBED,	// Instance was created by an EMBED tag and shares the browser window with other content.
-            	(short) i, // number of args
+		NP_EMBED,	// share the window with other content.
+            	i,
 		cNames, cValues,
-		pSaved);
+		0);
 
 	i--;
 	for (;i>=0;i--)
@@ -660,12 +680,6 @@
 	    }
 	    done = true;
 	}
-
-	/*
-	INT32 dPercentLoaded=0;
-	Invoke("PercentLoaded", dPercentLoaded);
-	printf("PercentLoaded = %d\n", dPercentLoaded);
-	*/
     }
 
     if (dStreamType == NP_ASFILE)
@@ -780,14 +794,9 @@
     ClearResponseList();
 
     // Tell the plugin we're done
-    if (m_PluginFuncs.setwindow && m_NPWindow.window)
-    {
-        m_NPWindow.window = NULL;
-	m_PluginFuncs.setwindow(&m_NPP, &m_NPWindow);
-    	memset(&m_NPWindow, 0, sizeof(m_NPWindow));
-    }
+    DetachWindow();
     
-    if (m_PluginFuncs.destroystream)
+    if (m_PluginFuncs.destroystream && m_NPStream.url)
     {
 	m_PluginFuncs.destroystream(&m_NPP, &m_NPStream, NPRES_DONE);
     	memset(&m_NPStream, 0, sizeof(m_NPStream));
@@ -795,7 +804,6 @@
 
     HX_DELETE(m_pStringIds);
     HX_DELETE(m_pIntIds);
-
 	 
     // Destroy the plugin instance
     if (m_PluginFuncs.destroy)
@@ -1050,9 +1058,21 @@
     {
 	memset(&m_NPWindow, 0, sizeof(NPWindow));
 
-	// Windowed plug-in
-	m_NPWindow.type = NPWindowTypeWindow;
-	m_NPWindow.window = pWindow->window; // Platform specific window handle
+	HXLOGL4(HXLOG_FPHR, "\tCalling NPP_SetWindow with %s mode", (m_bWindowless) ? "WINDOWLESS" : "WINDOWED");
+	if (m_bWindowless)
+	{
+	    m_NPWindow.type = NPWindowTypeDrawable; // Windowless
+#ifdef WIN32
+	    m_hwnd = (HWND) pWindow->window;
+	    m_hdc = GetDC(m_hwnd);
+	    m_NPWindow.window = (void*)m_hdc; // HDC for windowless mode on windows
+#endif
+	}
+	else
+	{
+	    m_NPWindow.type = NPWindowTypeWindow; // Windowed plug-in
+	    m_NPWindow.window = pWindow->window; // Platform specific window handle, HWND for windowed mode on windows
+	}
 
 	m_NPWindow.x		   = pWindow->x;
 	m_NPWindow.y		   = pWindow->y;
@@ -1063,8 +1083,6 @@
 	m_NPWindow.clipRect.right  = (UINT16)pWindow->clipRect.right;
 	m_NPWindow.clipRect.bottom = (UINT16)pWindow->clipRect.bottom;
 
-	HXLOGL4(HXLOG_FPHR, "\tcalling NPP_SetWindow");
-
 	if (m_PluginFuncs.setwindow)
 	{
 	    NPError npstatus = m_PluginFuncs.setwindow(&m_NPP, &m_NPWindow);
@@ -1149,9 +1167,99 @@
 STDMETHODIMP CFlashGuestPlayer::EventOccurred(HXxEvent* pEvent)
 {
     HXLOGL4(HXLOG_FPHR, "CFlashGuestPlayer::EventOccurred(%p)");
-    return HXR_NOTIMPL;
+
+    if (m_NPWindow.window && pEvent)
+    {
+	switch (pEvent->event) 
+	{
+		case  WM_LBUTTONDOWN:
+		case  WM_RBUTTONDOWN:
+		{		
+		    RECT rc = {m_NPWindow.x, m_NPWindow.y, m_NPWindow.width, m_NPWindow.height};
+		    POINT pt = {LOWORD(pEvent->param2), HIWORD(pEvent->param2)};
+		    if (PtInRect( (RECT*) &rc, pt ) )
+		    {
+			NPEvent evt;
+			evt.event = (UINT16) pEvent->event;
+			evt.wParam = (WPARAM) pEvent->param1;
+			evt.lParam = (LPARAM) pEvent->param2; 
+			pEvent->handled = m_PluginFuncs.event(&m_NPP, &evt);
+		    }
+		    break;
+		}
+
+		case  WM_LBUTTONUP:
+		case  WM_LBUTTONDBLCLK:
+		case  WM_RBUTTONDBLCLK:
+		case  WM_RBUTTONUP:
+		case  WM_MBUTTONDOWN:
+		case  WM_MBUTTONUP:
+		case  WM_MBUTTONDBLCLK:
+		case  WM_MOUSEMOVE:
+		case  WM_MOUSEHOVER:
+		case  WM_MOUSEACTIVATE:
+		case  WM_KEYUP:
+		case  WM_KEYDOWN:
+		case  WM_SETCURSOR:
+		case  WM_SETFOCUS:
+		case  WM_KILLFOCUS:
+		{
+		    NPEvent evt;
+		    evt.event = (UINT16) pEvent->event;
+		    evt.wParam = (WPARAM) pEvent->param1;
+		    evt.lParam = (LPARAM) pEvent->param2; 
+		    m_PluginFuncs.event(&m_NPP, &evt);
+		    break;
+		}
+		case WM_WINDOWPOSCHANGED:
+		{
+		    WINDOWPOS wp;
+		    memcpy( &wp, (void*) pEvent->param2, sizeof( WINDOWPOS ));
+		    wp.x = m_NPWindow.x; 
+		    wp.y = m_NPWindow.y; 
+		    wp.cx = m_NPWindow.width;
+		    wp.cy = m_NPWindow.height;
+
+		    NPEvent evt;
+		    evt.event = (UINT16) pEvent->event;
+		    evt.wParam = (WPARAM) 0;
+		    evt.lParam = (LPARAM) ℘
+		    m_PluginFuncs.event(&m_NPP, &evt);
+		    break;
+		}
+		
+		case  WM_PAINT:
+		{
+		    SendPaintEvent(&m_NPP, NULL);
+		    break;
+		}
+	}
+    }
+    return HXR_OK;
+}
+
+HXBOOL
+CFlashGuestPlayer::SendPaintEvent(NPP npp, NPRect* pInvalidRect)
+{
+    HXBOOL bHandled=FALSE;
+
+    if (m_PluginFuncs.event == NULL)
+    {
+	return FALSE;
+    }
+
+#ifdef WIN32
+    NPEvent evt;
+    evt.event = WM_PAINT;
+    evt.wParam = (WPARAM) 0;
+    evt.lParam = (LPARAM) pInvalidRect;
+    bHandled = m_PluginFuncs.event(npp, &evt);
+#endif // WIN32
+
+    return bHandled;
 }
 
+
 // 
 // IHXGuestPlayer::InitMedia
 //
@@ -1220,6 +1328,7 @@
          m_ulGuestPlayerState == HXGUEST_STATE_MEDIA_PAUSED)
     {
         HXLOGL4(HXLOG_FPHR, "\tPlay() - calling Invoke(Play)");
+
 	retVal = Invoke("Play");
 	if (SUCCEEDED(retVal))
 	{
@@ -1266,7 +1375,6 @@
     if (m_ulGuestPlayerState == HXGUEST_STATE_MEDIA_PLAYING)
     {
         HXLOGL4(HXLOG_FPHR, "\tPause() - calling StopPlay");
-
         retVal = Invoke("StopPlay");
 	if (SUCCEEDED(retVal))
 	{
@@ -1828,7 +1936,15 @@
 void 
 CFlashGuestPlayer::NPN_InvalidateRect(NPP npp, NPRect *invalidRect)
 {
-    HXLOGL4(HXLOG_FPHR, "NPN_InvalidateRect NOT IMPLEMENTED");
+//    HXLOGL4(HXLOG_FPHR, "NPN_InvalidateRect");
+    if (npp)
+    {
+	CFlashGuestPlayer* pPlayer = (CFlashGuestPlayer*) npp->ndata;
+	if (pPlayer)
+	{
+	    pPlayer->SendPaintEvent(npp, invalidRect);
+	}
+    }
 }
 
 
@@ -1849,15 +1965,6 @@
 CFlashGuestPlayer::NPN_ForceRedraw(NPP npp)
 {
     HXLOGL4(HXLOG_FPHR, "NPN_ForceRedraw");
-    if (!npp)
-    {
-        return;
-    }
-    /*
-    nsPluginHostWnd *pWnd = (nsPluginHostWnd *) npp->ndata;
-    ATLASSERT(pWnd);
-    pWnd->InvalidateRect(NULL, FALSE);
-    */
 }
 
 //
@@ -1920,21 +2027,27 @@
 NPError 
 CFlashGuestPlayer::NPN_SetValue(NPP npp, NPPVariable variable, void *result)
 {
-    HXLOGL4(HXLOG_FPHR, "NPN_SetValue NOT IMPLEMENTED");
+    HXLOGL4(HXLOG_FPHR, "NPN_SetValue");
     if (!npp)
     {
         return NPERR_INVALID_INSTANCE_ERROR;
     }
 
-    /*
-    switch (variable)
+    CFlashGuestPlayer* pPlayer = (CFlashGuestPlayer*) npp->ndata;
+    if (pPlayer)
     {
-    case NPPVpluginWindowBool:
-    case NPPVpluginTransparentBool:
+	switch (variable)
+	{
+	    case NPPVpluginWindowBool:
+		pPlayer->SetWindowless( (result == 0) );
+		break;
+	    case NPPVpluginTransparentBool:
+		pPlayer->SetTransparent( (result != 0) );
+		break;
+	}
     }
-    */
 
-    return NPERR_GENERIC_ERROR;
+    return NPERR_NO_ERROR;
 }
 
 
@@ -2211,12 +2324,44 @@
             // in common/include/hxver.h
             // TARVER_STRING_VERSION is defined in client/core/clntcore.ver
             // TARVER_STR_PLATFORM is defined in common/include/platform.h
+	    //
+	    // Example for win32:
+	    // "RealMedia Player HelixDNAClient/10.0.0.9544 (Windows; U; WinNT; EN; rv:10.0.0.9544) Gecko/20060608"
+	    // The Flash plug-in is expecting the UA to be in this form :
+	    // "{appname/version} ({platform}; {securitycode}; {OSCPU}; {lang}; rv:{%d.%d}) Gecko/{geckobuildID}"
+	    
+	    CHXString strPlatformInfo;
+	    HXVERSIONINFO versionInfo;
+            HXGetWinVer(&versionInfo);
+
+#if defined(_WINDOWS)
+	    strPlatformInfo = "Windows";
+#elif defined(_MACINTOSH)
+	    strPlatformInfo = "Macintosh";
+#elif defined(_UNIX)
+	    strPlatformInfo = "UNIX"; //XXXctd Mozilla UA code specified this as "X11";
+#else
+	    strPlatformInfo = "Unknown Platform";
+#endif
+	    strPlatformInfo += "; U; "; // App security
+	    strPlatformInfo += HXGetOSName(versionInfo.dwPlatformId);
+
             strUserAgent = USER_AGENT_PREFIX
                            USER_AGENT_STRING
                            USER_AGENT_POSTFIX "/"
-                           TARVER_STRING_VERSION " ("
-                           TARVER_STR_PLATFORM ")";
+                           TARVER_STRING_VERSION
+			   " ("
+			   + strPlatformInfo +
+			   "; " LANGUAGE_CODE
+			   "; rv:" TARVER_STRING_VERSION
+			   ")";
         }
+
+	// Add Gecko info
+	char strGeckoExt[80];
+	sprintf(strGeckoExt, " Gecko/%d", NS_BUILD_ID/100);
+        strUserAgent += strGeckoExt;
+
         // Read the "UserAgentExtn" preference (if any)
         CHXString strUserAgentExt;
         ReadPrefCSTRING(m_pContext, "UserAgentExtn", strUserAgentExt);
@@ -2225,7 +2370,11 @@
             strUserAgent += " ";
             strUserAgent += strUserAgentExt;
         }
+
         m_pUserAgentStr = strUserAgent;
+
+	HXLOGL4(HXLOG_FPHR, "FlashGuestPlayer::BuildUserAgent  str=%s\n", (const char*) strUserAgent);
+
         retVal = HXR_OK;
     }
 
@@ -2250,3 +2399,18 @@
     return hr;
 }
 
+bool
+CNPObjectWrapper::NP_Invoke(NPObject *obj, NPIdentifier methodName, const NPVariant *args, uint32_t argCount, NPVariant *variant)
+{
+    bool bRes = false;
+
+    // TODO : Convert NPVariant args to something readable, and send FSCommand:HXEvent commands to the engine
+	///////
+	if (!strcmp((const char*)methodName, "_DoFSCommand"))
+	{
+		// Do special case
+	}
+
+    return bRes;
+}
+

Index: README.txt
===================================================================
RCS file: /cvsroot/datatype/flash/flashhost/README.txt,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- README.txt	5 Oct 2006 20:42:17 -0000	1.2
+++ README.txt	17 Nov 2006 22:45:48 -0000	1.3
@@ -12,6 +12,9 @@
 * Plug-in side API
 	http://devedge-temp.mozilla.org/library/manuals/2002/plugin/1.0/npp_api.html#998197
 
+* Plug-in versions (for testing)
+	http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=tn_14266
+
 
 All of the plug-in specific functions have the prefix "NPP",
 and all of the host specific functions have the prefix "NPN".


From cdunn at helixcommunity.org  Fri Nov 17 14:46:46 2006
From: cdunn at helixcommunity.org (cdunn@helixcommunity.org)
Date: Fri Nov 17 15:50:48 2006
Subject: [Datatype-cvs] common/basehost base_hosted_renderer.cpp,1.4,1.5
Message-ID: 

Update of /cvsroot/datatype/common/basehost
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv9440

Modified Files:
	base_hosted_renderer.cpp 
Log Message:
Send events to flash's windowless plug-in

Index: base_hosted_renderer.cpp
===================================================================
RCS file: /cvsroot/datatype/common/basehost/base_hosted_renderer.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- base_hosted_renderer.cpp	6 Jun 2006 17:08:21 -0000	1.4
+++ base_hosted_renderer.cpp	17 Nov 2006 22:46:44 -0000	1.5
@@ -734,6 +734,29 @@
         case HX_KEY_DOWN:
         case HX_SET_FOCUS:
         case HX_LOSE_FOCUS:
+#ifdef _WIN32
+	    //// For flash
+	case  WM_PAINT:
+	case  WM_LBUTTONDOWN:
+	case  WM_LBUTTONUP:
+	case  WM_LBUTTONDBLCLK:
+	case  WM_RBUTTONDOWN:
+	case  WM_RBUTTONUP:
+	case  WM_RBUTTONDBLCLK:
+	case  WM_MBUTTONDOWN:
+	case  WM_MBUTTONUP:
+	case  WM_MBUTTONDBLCLK:
+	case  WM_MOUSEMOVE:
+	case  WM_MOUSEHOVER:
+	case  WM_MOUSELEAVE:
+	case  WM_MOUSEACTIVATE:
+	case  WM_KEYUP:
+	case  WM_KEYDOWN:
+	case  WM_SETCURSOR:
+	case  WM_SETFOCUS:
+	case  WM_KILLFOCUS:
+	case  WM_WINDOWPOSCHANGED:
+#endif // _WIN32
             // Pass these events to guest player
             if (m_pGuestPlayer)
             {


From kliu at helixcommunity.org  Mon Nov 20 09:40:30 2006
From: kliu at helixcommunity.org (kliu@helixcommunity.org)
Date: Mon Nov 20 10:43:32 2006
Subject: [Datatype-cvs] CVSROOT avail,1.111,1.112
Message-ID: 

Update of /cvsroot/datatype/CVSROOT
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv31507/CVSROOT

Modified Files:
	avail 
Log Message:
granting yphadke write access for the datatype project

Index: avail
===================================================================
RCS file: /cvsroot/datatype/CVSROOT/avail,v
retrieving revision 1.111
retrieving revision 1.112
diff -u -d -r1.111 -r1.112
--- avail	17 Nov 2006 00:37:27 -0000	1.111
+++ avail	20 Nov 2006 17:40:28 -0000	1.112
@@ -1,4 +1,5 @@
 unavail
+avail|yphadke
 avail|schaturvedi
 avail|gbajaj
 avail|gahluwalia


From ehyche at helixcommunity.org  Mon Nov 20 13:32:35 2006
From: ehyche at helixcommunity.org (ehyche@helixcommunity.org)
Date: Mon Nov 20 14:35:54 2006
Subject: [Datatype-cvs] common/metarend - New directory
Message-ID: 

Update of /cvsroot/datatype/common/metarend
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv31146/metarend

Log Message:
Directory /cvsroot/datatype/common/metarend added to the repository



From ehyche at helixcommunity.org  Mon Nov 20 13:32:49 2006
From: ehyche at helixcommunity.org (ehyche@helixcommunity.org)
Date: Mon Nov 20 14:36:07 2006
Subject: [Datatype-cvs] common/metarend/pub - New directory
Message-ID: 

Update of /cvsroot/datatype/common/metarend/pub
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv31159/pub

Log Message:
Directory /cvsroot/datatype/common/metarend/pub added to the repository



From ehyche at helixcommunity.org  Mon Nov 20 13:34:07 2006
From: ehyche at helixcommunity.org (ehyche@helixcommunity.org)
Date: Mon Nov 20 14:37:27 2006
Subject: [Datatype-cvs] common/metarend Umakefil, NONE, 1.1 metarend.cpp,
	NONE, 1.1
Message-ID: 

Update of /cvsroot/datatype/common/metarend
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv31204

Added Files:
	Umakefil metarend.cpp 
Log Message:
Modified by: Eric Hyche (ehyche@real.com)
Reviewed by: Greg Wright (gwright@real.com)

Description
------------------------------------------
This change adds support for Windows Media ASX
metafiles. It does so by adding a base metafile
renderer in datatype/common/metarend and then
adding a derived ASX renderer in datatype/wm/asx/renderer.
It also adds a simple ASX fileformat in
datatype/wm/asx/fileformat.

[Note: the ASX renderer is not feature-complete yet, but
basic multiple clip playback is working. At this point,
the ASX renderer is essentially on functional parity
with the RAM renderer, in that it can play back a
series of clips.]

Files Added
------------------------------------------
datatype/common/metarend/* (see datatype_common_metarend.zip)
datatype/wm/asx/* (see datatype_wm_asx.zip)

Files Modified
------------------------------------------
helix.bif
common/include/ihxtlogsystem.h

Branches
------------------------------------------
HEAD only



--- NEW FILE: metarend.cpp ---
/* ***** BEGIN LICENSE BLOCK *****
 * 
 * Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
 * 
 * The contents of this file, and the files included with this file,
 * are subject to the current version of the RealNetworks Public
 * Source License (the "RPSL") available at
 * http://www.helixcommunity.org/content/rpsl unless you have licensed
 * the file under the current version of the RealNetworks Community
 * Source License (the "RCSL") available at
 * http://www.helixcommunity.org/content/rcsl, in which case the RCSL
 * will apply. You may also obtain the license terms directly from
 * RealNetworks.  You may not use this file except in compliance with
 * the RPSL or, if you have a valid RCSL with RealNetworks applicable
 * to this file, the RCSL.  Please see the applicable RPSL or RCSL for
 * the rights, obligations and limitations governing use of the
 * contents of the file.
 * 
 * Alternatively, the contents of this file may be used under the
[...1521 lines suppressed...]
                        // Now get the registry ID for the src property name
                        UINT32 ulSrcID = pReg->GetId((const char*) strSrcName);
                        if (ulSrcID)
                        {
                            // Assign the out parameter
                            rulSrcRegID = ulSrcID;
                            // Clear the return value
                            retVal = HXR_OK;
                        }
                    }
                }
            }
            HX_RELEASE(pName);
        }
        HX_RELEASE(pReg);
    }

    return retVal;
}


--- NEW FILE: Umakefil ---
# 
# ***** BEGIN LICENSE BLOCK *****
# Source last modified: $Id: Umakefil,v 1.1 2006/11/20 21:34:05 ehyche Exp $
# 
# Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
# 
# The contents of this file, and the files included with this file,
# are subject to the current version of the RealNetworks Public
# Source License (the "RPSL") available at
# http://www.helixcommunity.org/content/rpsl unless you have licensed
# the file under the current version of the RealNetworks Community
# Source License (the "RCSL") available at
# http://www.helixcommunity.org/content/rcsl, in which case the RCSL
# will apply. You may also obtain the license terms directly from
# RealNetworks.  You may not use this file except in compliance with
# the RPSL or, if you have a valid RCSL with RealNetworks applicable
# to this file, the RCSL.  Please see the applicable RPSL or RCSL for
# the rights, obligations and limitations governing use of the
# contents of the file.
# 
# Alternatively, the contents of this file may be used under the
# terms of the GNU General Public License Version 2 or later (the
# "GPL") in which case the provisions of the GPL are applicable
# instead of those above. If you wish to allow use of your version of
# this file only under the terms of the GPL, and not to allow others
# to use your version of this file under the terms of either the RPSL
# or RCSL, indicate your decision by deleting the provisions above
# and replace them with the notice and other provisions required by
# the GPL. If you do not delete the provisions above, a recipient may
# use your version of this file under the terms of any one of the
# RPSL, the RCSL or the GPL.
# 
# This file is part of the Helix DNA Technology. RealNetworks is the
# developer of the Original Code and owns the copyrights in the
# portions it created.
# 
# This file, and the files included with this file, is distributed
# and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
# KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
# ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
# ENJOYMENT OR NON-INFRINGEMENT.
# 
# Technology Compatibility Kit Test Suite(s) Location:
#    http://www.helixcommunity.org/content/tck
# 
# Contributor(s):
# 
# ***** END LICENSE BLOCK *****
# 

UmakefileVersion(2,2)

project.AddModuleIncludes("common/include",
                          "client/include",
                          "common/util/pub",
                          "common/runtime/pub",
                          "common/system/pub",
                          "common/container/pub",
                          "common/dbgtool/pub",
                          "common/util/pub",
                          "common/log/logutil/pub",
                          "datatype/common/util/pub")

project.AddSources("metarend.cpp")

LibraryTarget("metarendlib")

DependTarget()


From ehyche at helixcommunity.org  Mon Nov 20 13:34:07 2006
From: ehyche at helixcommunity.org (ehyche@helixcommunity.org)
Date: Mon Nov 20 14:37:27 2006
Subject: [Datatype-cvs] common/metarend/pub metarend.h,NONE,1.1
Message-ID: 

Update of /cvsroot/datatype/common/metarend/pub
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv31204/pub

Added Files:
	metarend.h 
Log Message:
Modified by: Eric Hyche (ehyche@real.com)
Reviewed by: Greg Wright (gwright@real.com)

Description
------------------------------------------
This change adds support for Windows Media ASX
metafiles. It does so by adding a base metafile
renderer in datatype/common/metarend and then
adding a derived ASX renderer in datatype/wm/asx/renderer.
It also adds a simple ASX fileformat in
datatype/wm/asx/fileformat.

[Note: the ASX renderer is not feature-complete yet, but
basic multiple clip playback is working. At this point,
the ASX renderer is essentially on functional parity
with the RAM renderer, in that it can play back a
series of clips.]

Files Added
------------------------------------------
datatype/common/metarend/* (see datatype_common_metarend.zip)
datatype/wm/asx/* (see datatype_wm_asx.zip)

Files Modified
------------------------------------------
helix.bif
common/include/ihxtlogsystem.h

Branches
------------------------------------------
HEAD only



--- NEW FILE: metarend.h ---
/* ***** BEGIN LICENSE BLOCK *****
 *
 * Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
 * 
 * The contents of this file, and the files included with this file,
 * are subject to the current version of the RealNetworks Public
 * Source License (the "RPSL") available at
 * http://www.helixcommunity.org/content/rpsl unless you have licensed
 * the file under the current version of the RealNetworks Community
 * Source License (the "RCSL") available at
 * http://www.helixcommunity.org/content/rcsl, in which case the RCSL
 * will apply. You may also obtain the license terms directly from
 * RealNetworks.  You may not use this file except in compliance with
 * the RPSL or, if you have a valid RCSL with RealNetworks applicable
 * to this file, the RCSL.  Please see the applicable RPSL or RCSL for
 * the rights, obligations and limitations governing use of the
 * contents of the file.
 * 
 * Alternatively, the contents of this file may be used under the
 * terms of the GNU General Public License Version 2 or later (the
 * "GPL") in which case the provisions of the GPL are applicable
 * instead of those above. If you wish to allow use of your version of
 * this file only under the terms of the GPL, and not to allow others
 * to use your version of this file under the terms of either the RPSL
 * or RCSL, indicate your decision by deleting the provisions above
 * and replace them with the notice and other provisions required by
 * the GPL. If you do not delete the provisions above, a recipient may
 * use your version of this file under the terms of any one of the
 * RPSL, the RCSL or the GPL.
 * 
 * This file is part of the Helix DNA Technology. RealNetworks is the
 * developer of the Original Code and owns the copyrights in the
 * portions it created.
 * 
 * This file, and the files included with this file, is distributed
 * and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
 * KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
 * ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
 * ENJOYMENT OR NON-INFRINGEMENT.
 * 
 * Technology Compatibility Kit Test Suite(s) Location:
 *    http://www.helixcommunity.org/content/tck
 * 
 * Contributor(s):
 * 
 * ***** END LICENSE BLOCK ***** */

#ifndef METAREND_H
#define METAREND_H

// Includes
#include "hxtypes.h"
#include "hxcom.h"
#include "hxrendr.h"
#include "hxplayvelocity.h"
#include "hxgroup.h"
#include "hxcore.h"
#include "hxcomm.h"
#include "ihxpckts.h"
#include "hxstring.h"
#include "rendstats.h"
#include "chxmaplongtoobj.h"
#include "hxslist.h"
#include "smiltype.h"

// Forward declarations
struct MetaPlayToAssoc
{
    UINT16    m_usGroupIndex;
    UINT16    m_usTrackIndex;
    UINT32    m_ulDelay;
    UINT32    m_ulDuration;
    CHXString m_id;
};

typedef enum
{
    HX_METADATA_ID_TITLE,
    HX_METADATA_ID_AUTHOR,
    HX_METADATA_ID_COPYRIGHT,
    HX_METADATA_ID_ABSTRACT,
    HX_NUM_METADATA_IDS
}
HXMetaDataID;

typedef struct
{
    UINT32      m_ulID;
    UINT32      m_ulType;
    const char* m_pszName;
}
HXMetaDataInfo;

#define HX_METADATA_NAME_TITLE     "Title"
#define HX_METADATA_NAME_AUTHOR    "Author"
#define HX_METADATA_NAME_COPYRIGHT "Copyright"
#define HX_METADATA_NAME_ABSTRACT  "Abstract"

class CMetaEntry
{
public:
    CMetaEntry()
        : m_pMetaData(NULL)
        , m_pParallelMedia(NULL)
        , m_ulNumRefs(0)
        , m_ppRefMetaData(NULL)
    {};

    ~CMetaEntry()
    {
        if (m_ppRefMetaData && m_ulNumRefs)
        {
            for (UINT32 i = 0; i < m_ulNumRefs; i++)
            {
                HX_RELEASE(m_ppRefMetaData[i]);
            }
        }
        HX_RELEASE(m_pMetaData);
        HX_RELEASE(m_pParallelMedia);
        HX_VECTOR_DELETE(m_ppRefMetaData);
    };

    IHXValues*  m_pMetaData;
    IHXValues*  m_pParallelMedia;
    UINT32      m_ulNumRefs;
    IHXValues** m_ppRefMetaData;
};

class CBaseMetaRenderer : public IHXPlugin,
                          public IHXRenderer,
                          public IHXStatistics,
                          public IHXPlaybackVelocity,
                          public IHXPersistentRenderer,
                          public IHXGroupSink,
                          public IHXRendererAdviseSink
{
public:
    CBaseMetaRenderer();
    virtual ~CBaseMetaRenderer();

    // IUnknown methods
    STDMETHOD(QueryInterface)   (THIS_ REFIID riid, void** ppvObj);
    STDMETHOD_(ULONG32,AddRef)  (THIS);
    STDMETHOD_(ULONG32,Release) (THIS);

    // IHXPlugin methods
    STDMETHOD(GetPluginInfo) (THIS_ REF(HXBOOL)      rbLoadMultiple,
                                    REF(const char*) rpszDescription,
                                    REF(const char*) rpszCopyright,
                                    REF(const char*) rpszMoreInfoURL,
                                    REF(ULONG32)     rulVersionNumber) PURE;
    STDMETHOD(InitPlugin)    (THIS_ IUnknown* pContext);

    // IHXRenderer methods
    STDMETHOD(GetRendererInfo) (THIS_ REF(const char**) rppszStreamMimeTypes,
                                      REF(UINT32)       rulInitialGranularity) PURE;
    STDMETHOD(StartStream)     (THIS_ IHXStream* pStream, IHXPlayer* pPlayer);
    STDMETHOD(EndStream)       (THIS);
    STDMETHOD(OnHeader)        (THIS_ IHXValues* pHeader);
    STDMETHOD(OnPacket)        (THIS_ IHXPacket* pPacket, LONG32 lTimeOffset);
    STDMETHOD(OnTimeSync)      (THIS_ ULONG32 ulTime)                            { return HXR_OK; }
    STDMETHOD(OnPreSeek)       (THIS_ ULONG32 ulOldTime, ULONG32 ulNewTime)      { return HXR_OK; }
    STDMETHOD(OnPostSeek)      (THIS_ ULONG32 ulOldTime, ULONG32 ulNewTime)      { return HXR_OK; }
    STDMETHOD(OnPause)         (THIS_ ULONG32 ulTime)                            { return HXR_OK; }
    STDMETHOD(OnBegin)         (THIS_ ULONG32 ulTime)                            { return HXR_OK; }
    STDMETHOD(OnBuffering)     (THIS_ ULONG32 ulFlags, UINT16 usPercentComplete) { return HXR_OK; }
    STDMETHOD(GetDisplayType)  (THIS_ REF(HX_DISPLAY_TYPE) rulFlags, REF(IHXBuffer*) rpBuffer);
    STDMETHOD(OnEndofPackets)  (THIS)                                            { return HXR_OK; }

    // IHXStatistics methods
    STDMETHOD(InitializeStatistics) (THIS_ UINT32 ulRegistryID);
    STDMETHOD(UpdateStatistics)     (THIS);

    // IHXPlaybackVelocity methods
    STDMETHOD(InitVelocityControl)         (THIS_ IHXPlaybackVelocityResponse* pResponse) { return HXR_OK; }
    STDMETHOD(QueryVelocityCaps)           (THIS_ REF(IHXPlaybackVelocityCaps*) rpCaps) { return HXR_NOTIMPL; }
    STDMETHOD(SetVelocity)                 (THIS_ INT32 lVelocity, HXBOOL bKeyFrameMode, HXBOOL bAutoSwitch) { return HXR_OK; }
    STDMETHOD_(INT32,GetVelocity)          (THIS) { return 0; }
    STDMETHOD(SetKeyFrameMode)             (THIS_ HXBOOL bKeyFrameMode) { return HXR_OK; }
    STDMETHOD_(HXBOOL,GetKeyFrameMode)     (THIS) { return FALSE; }
    STDMETHOD_(UINT32,GetKeyFrameInterval) (THIS) { return 0; }
    STDMETHOD(CloseVelocityControl)        (THIS) { return HXR_OK; }

    // IHXGroupSink methods
    STDMETHOD(GroupAdded)       (THIS_ UINT16 uGroupIndex, IHXGroup* pGroup) { return HXR_OK; }
    STDMETHOD(GroupRemoved)     (THIS_ UINT16 uGroupIndex, IHXGroup* pGroup) { return HXR_OK; }
    STDMETHOD(AllGroupsRemoved) (THIS)                                       { return HXR_OK; }
    STDMETHOD(TrackAdded)       (THIS_ UINT16 uGroupIndex, UINT16 uTrackIndex, IHXValues* pTrack);
    STDMETHOD(TrackRemoved)     (THIS_ UINT16 uGroupIndex, UINT16 uTrackIndex, IHXValues* pTrack) { return HXR_OK; }
    STDMETHOD(TrackStarted)     (THIS_ UINT16 uGroupIndex, UINT16 uTrackIndex, IHXValues* pTrack) { return HXR_OK; }
    STDMETHOD(TrackStopped)     (THIS_ UINT16 uGroupIndex, UINT16 uTrackIndex, IHXValues* pTrack) { return HXR_OK; }
    STDMETHOD(CurrentGroupSet)  (THIS_ UINT16 uGroupIndex, IHXGroup* pGroup)                      { return HXR_OK; }

    // IHXRendererAdviseSink methods
    STDMETHOD(TrackDurationSet)         (THIS_ UINT32 ulGroupIndex, UINT32 ulTrackIndex,
                                               UINT32 ulDuration,   UINT32 ulDelay,
                                               HXBOOL   bIsLive);
    STDMETHOD(RepeatedTrackDurationSet) (THIS_ const char* pID, UINT32 ulDuration, HXBOOL bIsLive) { return HXR_OK; }
    STDMETHOD(TrackUpdated)             (THIS_ UINT32 ulGroupIndex, UINT32 ulTrackIndex, IHXValues* pValues) { return HXR_OK; }
    STDMETHOD(RendererInitialized)      (THIS_ IHXRenderer* pRend, IUnknown* pStream, IHXValues* pInfo);
    STDMETHOD(RendererClosed)           (THIS_ IHXRenderer* pRend, IHXValues* pInfo)  { return HXR_OK; }

    // IHXPersistentRenderer methods
    STDMETHOD(InitPersistent)          (THIS_ UINT32                 ulPersistentComponentID,
                                              UINT16                 usPersistentGroupID,
                                              UINT16                 usPersistentTrackID,
                                              IHXPersistentRenderer* pPersistentParent);
    STDMETHOD(GetPersistentID)         (THIS_ REF(UINT32) rulPersistentComponentID);
    STDMETHOD(GetPersistentProperties) (THIS_ REF(IHXValues*) rpProperties);                
    STDMETHOD(GetElementProperties)    (THIS_ UINT16          usGroupID,
                                              UINT16          usTrackID,
                                              REF(IHXValues*) rpProperties);
    STDMETHOD(AttachElementLayout)     (THIS_ UINT16          usGroupID,
                                              UINT16          usTrackID,
                                              IHXRenderer*    pRenderer,
                                              IHXStream*      pStream,
                                              IHXValues*      pProps);
    STDMETHOD(DetachElementLayout)     (THIS_ IUnknown* pLSG);
    STDMETHOD(GetElementStatus)        (THIS_ UINT16          usGroupID,
                                              UINT16          usTrackID,
                                              UINT32          ulCurrentTime,
                                              REF(IHXValues*) rpStatus);

    // CBaseMetaRenderer methods
protected:
    INT32                          m_lRefCount;
    IUnknown*                      m_pContext;
    IHXStream*                     m_pStream;
    IHXPlayer*                     m_pPlayer;
    CHXMapLongToObj*               m_pTrackMap;
    CHXSimpleList*                 m_pPlayToAssocList;
    IHXValues*                     m_pPersistentProperties;
    IHXValues*                     m_pStreamProperties;
    IHXPersistentRenderer*         m_pPersistentParentRenderer;
    IHXPersistentComponentManager* m_pPersistentComponentManager;
    IHXBuffer*                     m_pOriginalURL;
    char*                          m_pURLFragment;
    HXBOOL                         m_bMetaFileProcessed;
    HXBOOL                         m_bFirstTrack;
    UINT32                         m_ulGroupIndex;
    CHXString                      m_urlPrefix;
    CHXString                      m_urlRoot;
    UINT32                         m_ulPersistentComponentDelay;
    UINT32                         m_ulPersistentComponentDuration;
    UINT32                         m_ulPersistentComponentID;
    UINT16                         m_usPersistentGroupID;
    UINT16                         m_usPersistentTrackID;
    UINT16                         m_usGroupIndexWithin;
    UINT32                         m_ulPersistentVersion;
    PersistentType                 m_persistentType;
    ElementWithinTag               m_elementWithinTag;
    IHXValues*                     m_pMetaData;
    IHXValues*                     m_pParallelMedia;
    UINT32                         m_ulNumEntries;
    CMetaEntry**                   m_ppMetaEntry;
    CRendererStatisticsDisplay*    m_pMetaDataDisplay;
    UINT32                         m_ulSourceRegistryID;

    static const HXMetaDataInfo    m_pMetaDataInfo[HX_NUM_METADATA_IDS];

    void              CopyBufferProperty(IHXValues* pURLOptData, IHXValues* pFileMetaData, IHXValues* pDst, const char* pszName);
    HX_RESULT         PrepareGroup(REF(IHXValues*) pGroupProperties);
    HX_RESULT         PrepareTrack(const char* pszURL, IHXValues* pMetaData, REF(IHXValues*) pTrackProperties);
    HX_RESULT         ConvertURL(const char* pURL, CHXString& newURL);    
    ElementWithinTag  AdjustElementWithinTag(ElementWithinTag elementWithinTag);
    HXBOOL            IsNestedMetaSupported(void);
    void              GeneratePreFix(void);
    MetaPlayToAssoc*  GetPlayToAssoc(UINT16 usGroupIndex, UINT16 usTrackIndex);
    MetaPlayToAssoc*  GetPlayToAssocByMedia(const char* pszMediaID);
    void              RemoveTracks();
    void              RemoveAllPlayToAssoc();    
    void              Cleanup();
    void              ClearMetaEntries();
    HX_RESULT         ProcessMetaFile(IHXBuffer* pBuffer);
    HX_RESULT         GetMetaFileInfo();
    HX_RESULT         ProcessMetaFileInfo();
    HX_RESULT         PrimeMetaDataInfoList(const HXMetaDataInfo* pInfo, UINT32 ulNumInfo, CRendererStatisticsDisplay* pDisplay);
    HX_RESULT         RefreshMetaDataInfoList(const HXMetaDataInfo* pInfo, UINT32 ulNumInfo, IHXValues* pStats,
                                              CRendererStatisticsDisplay* pDisplay, UINT32 ulRegID);
    HX_RESULT         GetSourceRegistryID(UINT32 ulRendererRegID, REF(UINT32) rulSrcRegID);

    // These are methods that the derived class must implement
    virtual HX_RESULT ParseMetaFile(IHXBuffer* pBuffer, HXBOOL bIsNested) = 0;
    virtual HX_RESULT GetMetaData(REF(IHXValues*) rpData) = 0;
    virtual HX_RESULT GetParallelMedia(REF(IHXValues*) rpData) = 0;
    virtual UINT32    GetNumEntries() = 0;
    virtual HX_RESULT GetEntryMetaData(UINT32 ulEntryIndex, REF(IHXValues*) rpData) = 0;
    virtual HX_RESULT GetEntryParallelMedia(UINT32 ulEntryIndex, REF(IHXValues*) rpData) = 0;
    virtual UINT32    GetNumEntryRefs(UINT32 ulEntryIndex) = 0;
    virtual HX_RESULT GetEntryRefMetaData(UINT32 ulEntryIndex, UINT32 ulRefIndex, REF(IHXValues*) rpData) = 0;
    virtual void      EntryStarted(UINT32 ulEntryIndex) = 0;
};

#endif /* #ifndef METAREND_H */


From ehyche at helixcommunity.org  Mon Nov 20 13:34:27 2006
From: ehyche at helixcommunity.org (ehyche@helixcommunity.org)
Date: Mon Nov 20 14:37:46 2006
Subject: [Datatype-cvs] wm/asx - New directory
Message-ID: 

Update of /cvsroot/datatype/wm/asx
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv31231/asx

Log Message:
Directory /cvsroot/datatype/wm/asx added to the repository



From ehyche at helixcommunity.org  Mon Nov 20 13:34:42 2006
From: ehyche at helixcommunity.org (ehyche@helixcommunity.org)
Date: Mon Nov 20 14:38:00 2006
Subject: [Datatype-cvs] wm/asx/fileformat - New directory
Message-ID: 

Update of /cvsroot/datatype/wm/asx/fileformat
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv31244/fileformat

Log Message:
Directory /cvsroot/datatype/wm/asx/fileformat added to the repository



From ehyche at helixcommunity.org  Mon Nov 20 13:34:42 2006
From: ehyche at helixcommunity.org (ehyche@helixcommunity.org)
Date: Mon Nov 20 14:38:00 2006
Subject: [Datatype-cvs] wm/asx/renderer - New directory
Message-ID: 

Update of /cvsroot/datatype/wm/asx/renderer
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv31244/renderer

Log Message:
Directory /cvsroot/datatype/wm/asx/renderer added to the repository



From ehyche at helixcommunity.org  Mon Nov 20 13:35:27 2006
From: ehyche at helixcommunity.org (ehyche@helixcommunity.org)
Date: Mon Nov 20 14:38:45 2006
Subject: [Datatype-cvs] wm/asx/fileformat/platform - New directory
Message-ID: 

Update of /cvsroot/datatype/wm/asx/fileformat/platform
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv31263/platform

Log Message:
Directory /cvsroot/datatype/wm/asx/fileformat/platform added to the repository



From ehyche at helixcommunity.org  Mon Nov 20 13:35:39 2006
From: ehyche at helixcommunity.org (ehyche@helixcommunity.org)
Date: Mon Nov 20 14:38:58 2006
Subject: [Datatype-cvs] wm/asx/fileformat/platform/win32 - New directory
Message-ID: 

Update of /cvsroot/datatype/wm/asx/fileformat/platform/win32
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv31276/win32

Log Message:
Directory /cvsroot/datatype/wm/asx/fileformat/platform/win32 added to the repository



From ehyche at helixcommunity.org  Mon Nov 20 13:36:36 2006
From: ehyche at helixcommunity.org (ehyche@helixcommunity.org)
Date: Mon Nov 20 14:39:53 2006
Subject: [Datatype-cvs] wm/asx/renderer/platform - New directory
Message-ID: 

Update of /cvsroot/datatype/wm/asx/renderer/platform
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv31297/platform

Log Message:
Directory /cvsroot/datatype/wm/asx/renderer/platform added to the repository



From ehyche at helixcommunity.org  Mon Nov 20 13:36:47 2006
From: ehyche at helixcommunity.org (ehyche@helixcommunity.org)
Date: Mon Nov 20 14:40:06 2006
Subject: [Datatype-cvs] wm/asx/renderer/platform/win32 - New directory
Message-ID: 

Update of /cvsroot/datatype/wm/asx/renderer/platform/win32
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv31313/win32

Log Message:
Directory /cvsroot/datatype/wm/asx/renderer/platform/win32 added to the repository



From ehyche at helixcommunity.org  Mon Nov 20 13:37:31 2006
From: ehyche at helixcommunity.org (ehyche@helixcommunity.org)
Date: Mon Nov 20 14:40:56 2006
Subject: [Datatype-cvs] wm/asx/fileformat/platform/win32 asxff.rc,NONE,1.1
Message-ID: 

Update of /cvsroot/datatype/wm/asx/fileformat/platform/win32
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv31340/fileformat/platform/win32

Added Files:
	asxff.rc 
Log Message:
Modified by: Eric Hyche (ehyche@real.com)
Reviewed by: Greg Wright (gwright@real.com)

Description
------------------------------------------
This change adds support for Windows Media ASX
metafiles. It does so by adding a base metafile
renderer in datatype/common/metarend and then
adding a derived ASX renderer in datatype/wm/asx/renderer.
It also adds a simple ASX fileformat in
datatype/wm/asx/fileformat.

[Note: the ASX renderer is not feature-complete yet, but
basic multiple clip playback is working. At this point,
the ASX renderer is essentially on functional parity
with the RAM renderer, in that it can play back a
series of clips.]

Files Added
------------------------------------------
datatype/common/metarend/* (see datatype_common_metarend.zip)
datatype/wm/asx/* (see datatype_wm_asx.zip)

Files Modified
------------------------------------------
helix.bif
common/include/ihxtlogsystem.h

Branches
------------------------------------------
HEAD only



--- NEW FILE: asxff.rc ---
/* ***** BEGIN LICENSE BLOCK ***** 
 * Version: RCSL 1.0/RPSL 1.0 
 *  
 * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
 *      
 * The contents of this file, and the files included with this file, are 
 * subject to the current version of the RealNetworks Public Source License 
 * Version 1.0 (the "RPSL") available at 
 * http://www.helixcommunity.org/content/rpsl unless you have licensed 
 * the file under the RealNetworks Community Source License Version 1.0 
 * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
 * in which case the RCSL will apply. You may also obtain the license terms 
 * directly from RealNetworks.  You may not use this file except in 
 * compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
 * applicable to this file, the RCSL.  Please see the applicable RPSL or 
 * RCSL for the rights, obligations and limitations governing use of the 
 * contents of the file.  
 *  
 * This file is part of the Helix DNA Technology. RealNetworks is the 
 * developer of the Original Code and owns the copyrights in the portions 
 * it created. 
 *  
 * This file, and the files included with this file, is distributed and made 
 * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
 * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
 * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
 * 
 * Technology Compatibility Kit Test Suite(s) Location: 
 *    http://www.helixcommunity.org/content/tck 
 * 
 * Contributor(s): 
 *  
 * ***** END LICENSE BLOCK ***** */ 

#ifdef APSTUDIO_INVOKED
	#error this file is not editable by Microsoft Visual C++
#endif //APSTUDIO_INVOKED


/////////////////////////////////////////////////////////////////////////////
// Add manually edited resources here...

/////////////////////////////////////////////////////////////////////////////
// Version stamp for this deliverable

#ifdef WIN32
#include       // Defines for 32bit windows version resources
#else
#include         // Defines for 16bit windows version resources
#endif

#include "hxver.h"        // Defines for standard deliverables
#include "asxff.ver"    // Defines for this deliverable created by GETFILES

VS_VERSION_INFO         VERSIONINFO
    FILEVERSION         TARVER_LIST_VERSION
    PRODUCTVERSION      TARVER_LIST_VERSION
    FILEFLAGSMASK       VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
    FILEFLAGS           VS_FF_DEBUG|VS_FF_PRIVATEBUILD|VS_FF_PRERELEASE
#else
    FILEFLAGS           0 // final version
#endif

    FILEOS              VER_FILEOS
    FILETYPE            0   // not needed
    FILESUBTYPE         0   // not needed

BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904E4" // Lang=US English, CharSet=Windows Multilingual
        BEGIN 
            VALUE "FileDescription", "Helix ASX File Format plugin"
            VALUE "InternalName",    "asxff\0"
            VALUE "OriginalFilename","asxff.DLL\0"
            VALUE "ProductName",     "Helix ASX File Format plugin" 
                                     STRPLATFORM TARVER_STR_BUILD_NAME STREND

            VALUE "FileVersion",     TARVER_STRING_VERSION
            VALUE "ProductVersion",  TARVER_STRING_VERSION

            VALUE "CompanyName",     HXVER_COMPANY
            VALUE "LegalCopyright",  HXVER_COPYRIGHT
            VALUE "LegalTrademarks", HXVER_TRADEMARKS
            VALUE "DistCode",       "PN01\0"
        END
    END
    BLOCK "VarFileInfo" 
    BEGIN 
        VALUE "Translation", 0x409, 1252
            // English language (0x409) and the Windows ANSI codepage (1252)
    END
END

/////////////////////////////////////////////////////////////////////////////


From ehyche at helixcommunity.org  Mon Nov 20 13:37:31 2006
From: ehyche at helixcommunity.org (ehyche@helixcommunity.org)
Date: Mon Nov 20 14:40:57 2006
Subject: [Datatype-cvs] wm/asx/renderer/platform/win32 asxrender.rc, NONE,
	1.1
Message-ID: 

Update of /cvsroot/datatype/wm/asx/renderer/platform/win32
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv31340/renderer/platform/win32

Added Files:
	asxrender.rc 
Log Message:
Modified by: Eric Hyche (ehyche@real.com)
Reviewed by: Greg Wright (gwright@real.com)

Description
------------------------------------------
This change adds support for Windows Media ASX
metafiles. It does so by adding a base metafile
renderer in datatype/common/metarend and then
adding a derived ASX renderer in datatype/wm/asx/renderer.
It also adds a simple ASX fileformat in
datatype/wm/asx/fileformat.

[Note: the ASX renderer is not feature-complete yet, but
basic multiple clip playback is working. At this point,
the ASX renderer is essentially on functional parity
with the RAM renderer, in that it can play back a
series of clips.]

Files Added
------------------------------------------
datatype/common/metarend/* (see datatype_common_metarend.zip)
datatype/wm/asx/* (see datatype_wm_asx.zip)

Files Modified
------------------------------------------
helix.bif
common/include/ihxtlogsystem.h

Branches
------------------------------------------
HEAD only



--- NEW FILE: asxrender.rc ---
/* ***** BEGIN LICENSE BLOCK ***** 
 * Version: RCSL 1.0/RPSL 1.0 
 *  
 * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
 *      
 * The contents of this file, and the files included with this file, are 
 * subject to the current version of the RealNetworks Public Source License 
 * Version 1.0 (the "RPSL") available at 
 * http://www.helixcommunity.org/content/rpsl unless you have licensed 
 * the file under the RealNetworks Community Source License Version 1.0 
 * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
 * in which case the RCSL will apply. You may also obtain the license terms 
 * directly from RealNetworks.  You may not use this file except in 
 * compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
 * applicable to this file, the RCSL.  Please see the applicable RPSL or 
 * RCSL for the rights, obligations and limitations governing use of the 
 * contents of the file.  
 *  
 * This file is part of the Helix DNA Technology. RealNetworks is the 
 * developer of the Original Code and owns the copyrights in the portions 
 * it created. 
 *  
 * This file, and the files included with this file, is distributed and made 
 * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
 * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
 * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
 * 
 * Technology Compatibility Kit Test Suite(s) Location: 
 *    http://www.helixcommunity.org/content/tck 
 * 
 * Contributor(s): 
 *  
 * ***** END LICENSE BLOCK ***** */ 

#ifdef APSTUDIO_INVOKED
	#error this file is not editable by Microsoft Visual C++
#endif //APSTUDIO_INVOKED


/////////////////////////////////////////////////////////////////////////////
// Add manually edited resources here...

/////////////////////////////////////////////////////////////////////////////
// Version stamp for this deliverable

#ifdef WIN32
#include       // Defines for 32bit windows version resources
#else
#include         // Defines for 16bit windows version resources
#endif

#include "hxver.h"        // Defines for standard deliverables
#include "asxrender.ver"    // Defines for this deliverable created by GETFILES

VS_VERSION_INFO         VERSIONINFO
    FILEVERSION         TARVER_LIST_VERSION
    PRODUCTVERSION      TARVER_LIST_VERSION
    FILEFLAGSMASK       VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
    FILEFLAGS           VS_FF_DEBUG|VS_FF_PRIVATEBUILD|VS_FF_PRERELEASE
#else
    FILEFLAGS           0 // final version
#endif

    FILEOS              VER_FILEOS
    FILETYPE            0   // not needed
    FILESUBTYPE         0   // not needed

BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904E4" // Lang=US English, CharSet=Windows Multilingual
        BEGIN 
            VALUE "FileDescription", "Helix ASX Renderer plugin"
            VALUE "InternalName",    "asxrender\0"
            VALUE "OriginalFilename","asxrender.DLL\0"
            VALUE "ProductName",     "Helix ASX Renderer plugin" 
                                     STRPLATFORM TARVER_STR_BUILD_NAME STREND

            VALUE "FileVersion",     TARVER_STRING_VERSION
            VALUE "ProductVersion",  TARVER_STRING_VERSION

            VALUE "CompanyName",     HXVER_COMPANY
            VALUE "LegalCopyright",  HXVER_COPYRIGHT
            VALUE "LegalTrademarks", HXVER_TRADEMARKS
            VALUE "DistCode",       "PN01\0"
        END
    END
    BLOCK "VarFileInfo" 
    BEGIN 
        VALUE "Translation", 0x409, 1252
            // English language (0x409) and the Windows ANSI codepage (1252)
    END
END

/////////////////////////////////////////////////////////////////////////////


From ehyche at helixcommunity.org  Mon Nov 20 13:37:31 2006
From: ehyche at helixcommunity.org (ehyche@helixcommunity.org)
Date: Mon Nov 20 14:40:57 2006
Subject: [Datatype-cvs] 
	wm/asx/fileformat Umakefil, NONE, 1.1 asxff.cpp, NONE,
	1.1 asxff.h, NONE, 1.1 asxff.ver, NONE, 1.1 asxff_dll.cpp,
	NONE, 1.1 asxff_guids.cpp, NONE, 1.1 asxffdll, NONE,
	1.1 asxffdll_win32.pcf, NONE, 1.1 asxfflib, NONE, 1.1
Message-ID: 

Update of /cvsroot/datatype/wm/asx/fileformat
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv31340/fileformat

Added Files:
	Umakefil asxff.cpp asxff.h asxff.ver asxff_dll.cpp 
	asxff_guids.cpp asxffdll asxffdll_win32.pcf asxfflib 
Log Message:
Modified by: Eric Hyche (ehyche@real.com)
Reviewed by: Greg Wright (gwright@real.com)

Description
------------------------------------------
This change adds support for Windows Media ASX
metafiles. It does so by adding a base metafile
renderer in datatype/common/metarend and then
adding a derived ASX renderer in datatype/wm/asx/renderer.
It also adds a simple ASX fileformat in
datatype/wm/asx/fileformat.

[Note: the ASX renderer is not feature-complete yet, but
basic multiple clip playback is working. At this point,
the ASX renderer is essentially on functional parity
with the RAM renderer, in that it can play back a
series of clips.]

Files Added
------------------------------------------
datatype/common/metarend/* (see datatype_common_metarend.zip)
datatype/wm/asx/* (see datatype_wm_asx.zip)

Files Modified
------------------------------------------
helix.bif
common/include/ihxtlogsystem.h

Branches
------------------------------------------
HEAD only



--- NEW FILE: asxff.h ---
/* ***** BEGIN LICENSE BLOCK *****
 * 
 * Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
 * 
 * The contents of this file, and the files included with this file,
 * are subject to the current version of the RealNetworks Public
 * Source License (the "RPSL") available at
 * http://www.helixcommunity.org/content/rpsl unless you have licensed
 * the file under the current version of the RealNetworks Community
 * Source License (the "RCSL") available at
 * http://www.helixcommunity.org/content/rcsl, in which case the RCSL
 * will apply. You may also obtain the license terms directly from
 * RealNetworks.  You may not use this file except in compliance with
 * the RPSL or, if you have a valid RCSL with RealNetworks applicable
 * to this file, the RCSL.  Please see the applicable RPSL or RCSL for
 * the rights, obligations and limitations governing use of the
 * contents of the file.
 * 
 * Alternatively, the contents of this file may be used under the
 * terms of the GNU General Public License Version 2 or later (the
 * "GPL") in which case the provisions of the GPL are applicable
 * instead of those above. If you wish to allow use of your version of
 * this file only under the terms of the GPL, and not to allow others
 * to use your version of this file under the terms of either the RPSL
 * or RCSL, indicate your decision by deleting the provisions above
 * and replace them with the notice and other provisions required by
 * the GPL. If you do not delete the provisions above, a recipient may
 * use your version of this file under the terms of any one of the
 * RPSL, the RCSL or the GPL.
 * 
 * This file is part of the Helix DNA Technology. RealNetworks is the
 * developer of the Original Code and owns the copyrights in the
 * portions it created.
 * 
 * This file, and the files included with this file, is distributed
 * and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
 * KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
 * ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
 * ENJOYMENT OR NON-INFRINGEMENT.
 * 
 * Technology Compatibility Kit Test Suite(s) Location:
 *    http://www.helixcommunity.org/content/tck
 * 
 * Contributor(s):
 * 
 * ***** END LICENSE BLOCK ***** */

#ifndef ASXFF_H
#define ASXFF_H

// Includes
#include "hxtypes.h"
#include "hxcom.h"
#include "hxplugn.h"
#include "hxformt.h"
#include "hxfiles.h"
#include "hxengin.h"
#include "baseobj.h"


class CASXFileFormat : public IHXPlugin, 
                       public IHXFileFormatObject, 
                       public IHXFileResponse,
                       public IHXInterruptSafe,
                       public CHXBaseCountingObject
{
public:
    CASXFileFormat();
    virtual ~CASXFileFormat();

    // IUnknown methods
    STDMETHOD(QueryInterface)   (THIS_ REFIID riid, void** ppvObj);
    STDMETHOD_(ULONG32,AddRef)  (THIS);
    STDMETHOD_(ULONG32,Release) (THIS);

    // IHXPlugin methods
    STDMETHOD(GetPluginInfo) (THIS_ REF(HXBOOL)      rbLoadMultiple,
                                    REF(const char*) rpszDescription,
                                    REF(const char*) rpszCopyright,
                                    REF(const char*) rpszMoreInfoURL,
                                    REF(ULONG32)     rulVersionNumber);
    STDMETHOD(InitPlugin)    (THIS_ IUnknown* pContext);

    // IHXFileFormatObject methods
    STDMETHOD(GetFileFormatInfo) (THIS_ REF(const char**) rppszFileMimeTypes,
                                        REF(const char**) rppszFileExtensions,
                                        REF(const char**) rppszFileOpenNames);
    STDMETHOD(InitFileFormat)    (THIS_ IHXRequest*        pRequest, 
                                        IHXFormatResponse* pFormatResponse,
                                        IHXFileObject*     pFileObject);
    STDMETHOD(GetFileHeader)     (THIS);
    STDMETHOD(GetStreamHeader)   (THIS_ UINT16 usStreamNumber);
    STDMETHOD(GetPacket)         (THIS_ UINT16 usStreamNumber);
    STDMETHOD(Seek)              (THIS_ UINT32 ulOffset);
    STDMETHOD(Close)             (THIS);

    // IHXFileResponse methods
    STDMETHOD(InitDone)  (THIS_ HX_RESULT status);
    STDMETHOD(CloseDone) (THIS_ HX_RESULT status);
    STDMETHOD(ReadDone)  (THIS_ HX_RESULT status, IHXBuffer* pBuffer);
    STDMETHOD(WriteDone) (THIS_ HX_RESULT status);
    STDMETHOD(SeekDone)  (THIS_ HX_RESULT status);

    // IHXInterruptSafe methods
    STDMETHOD_(HXBOOL,IsInterruptSafe) (THIS) { return TRUE; };

    // CASXFileFormat methods
    static HX_RESULT STDAPICALLTYPE HXCreateInstance(IUnknown** ppUnk);
protected:
    enum
    {
        kStateReady,
        kStateInitDonePending,
        kStateSeekDonePending,
        kStateReadDonePending,
        kStateInitialized,
        kStateFileHeaderSent,
        kStateStreamHeaderSent
    };

    INT32              m_lRefCount;
    IUnknown*          m_pContext;
    IHXFileObject*     m_pFileObject;
    IHXFormatResponse* m_pFormatResponse;
    IHXRequest*        m_pRequest;
    IHXBuffer*         m_pFileBuffer;
    UINT32             m_ulState;
    UINT32             m_ulPersistentVersion;

    static const char* const m_pszDescription;
    static const char* const m_pszCopyright;
    static const char* const m_pszMoreInfoURL;
    static const char* const m_ppszFileMimeTypes[];
    static const char* const m_ppszStreamMimeTypes[];
    static const char* const m_ppszFileExtensions[];
    static const char* const m_ppszFileOpenNames[];
};

#endif /* #ifndef ASXFF_H */

--- NEW FILE: asxfflib ---
# ***** BEGIN LICENSE BLOCK *****
# 
# Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
# 
# The contents of this file, and the files included with this file,
# are subject to the current version of the RealNetworks Public
# Source License (the "RPSL") available at
# http://www.helixcommunity.org/content/rpsl unless you have licensed
# the file under the current version of the RealNetworks Community
# Source License (the "RCSL") available at
# http://www.helixcommunity.org/content/rcsl, in which case the RCSL
# will apply. You may also obtain the license terms directly from
# RealNetworks.  You may not use this file except in compliance with
# the RPSL or, if you have a valid RCSL with RealNetworks applicable
# to this file, the RCSL.  Please see the applicable RPSL or RCSL for
# the rights, obligations and limitations governing use of the
# contents of the file.
# 
# Alternatively, the contents of this file may be used under the
# terms of the GNU General Public License Version 2 or later (the
# "GPL") in which case the provisions of the GPL are applicable
# instead of those above. If you wish to allow use of your version of
# this file only under the terms of the GPL, and not to allow others
# to use your version of this file under the terms of either the RPSL
# or RCSL, indicate your decision by deleting the provisions above
# and replace them with the notice and other provisions required by
# the GPL. If you do not delete the provisions above, a recipient may
# use your version of this file under the terms of any one of the
# RPSL, the RCSL or the GPL.
# 
# This file is part of the Helix DNA Technology. RealNetworks is the
# developer of the Original Code and owns the copyrights in the
# portions it created.
# 
# This file, and the files included with this file, is distributed
# and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
# KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
# ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
# ENJOYMENT OR NON-INFRINGEMENT.
# 
# Technology Compatibility Kit Test Suite(s) Location:
#    http://www.helixcommunity.org/content/tck
# 
# Contributor(s):
# 
# ***** END LICENSE BLOCK *****
# 

UmakefileVersion(2,2)

project.AddModuleIncludes("common/include",
                          "common/runtime/pub",
                          "common/dbgtool/pub",
                          "common/container/pub",
                          "common/util/pub",
                          "common/log/logutil/pub")

project.AddSources("asxff.cpp")

LibraryTarget("asxfflib")

DependTarget()

--- NEW FILE: asxff.cpp ---
/* ***** BEGIN LICENSE BLOCK *****
 * 
 * Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
 * 
 * The contents of this file, and the files included with this file,
 * are subject to the current version of the RealNetworks Public
 * Source License (the "RPSL") available at
 * http://www.helixcommunity.org/content/rpsl unless you have licensed
 * the file under the current version of the RealNetworks Community
 * Source License (the "RCSL") available at
 * http://www.helixcommunity.org/content/rcsl, in which case the RCSL
 * will apply. You may also obtain the license terms directly from
 * RealNetworks.  You may not use this file except in compliance with
 * the RPSL or, if you have a valid RCSL with RealNetworks applicable
 * to this file, the RCSL.  Please see the applicable RPSL or RCSL for
 * the rights, obligations and limitations governing use of the
 * contents of the file.
 * 
 * Alternatively, the contents of this file may be used under the
 * terms of the GNU General Public License Version 2 or later (the
 * "GPL") in which case the provisions of the GPL are applicable
 * instead of those above. If you wish to allow use of your version of
 * this file only under the terms of the GPL, and not to allow others
 * to use your version of this file under the terms of either the RPSL
 * or RCSL, indicate your decision by deleting the provisions above
 * and replace them with the notice and other provisions required by
 * the GPL. If you do not delete the provisions above, a recipient may
 * use your version of this file under the terms of any one of the
 * RPSL, the RCSL or the GPL.
 * 
 * This file is part of the Helix DNA Technology. RealNetworks is the
 * developer of the Original Code and owns the copyrights in the
 * portions it created.
 * 
 * This file, and the files included with this file, is distributed
 * and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
 * KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
 * ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
 * ENJOYMENT OR NON-INFRINGEMENT.
 * 
 * Technology Compatibility Kit Test Suite(s) Location:
 *    http://www.helixcommunity.org/content/tck
 * 
 * Contributor(s):
 * 
 * ***** END LICENSE BLOCK ***** */

#include "hxtypes.h"
#include "hxcom.h"
#include "hxcomm.h"
#include "ihxpckts.h"
#include "hxcore.h"
#include "hxfiles.h"
#include "hxplugn.h"
#include "pckunpck.h"
#include "hxformt.h"
#include "asxff.h"
#include "hxver.h"
#include "asxff.ver"
#include "hxtlogutil.h"

#include "hxheap.h"
#ifdef _DEBUG
#undef HX_THIS_FILE             
static const char HX_THIS_FILE[] = __FILE__;
#endif

#define HX_ASX_READ_SIZE        8192
#define HX_ASX_MAX_FILE_SIZE 1048576  // Max file size of 1MB

const char* const CASXFileFormat::m_pszDescription        = "Helix ASX File Format Plugin";
const char* const CASXFileFormat::m_pszCopyright          = HXVER_COPYRIGHT;
const char* const CASXFileFormat::m_pszMoreInfoURL        = HXVER_MOREINFO;
const char* const CASXFileFormat::m_ppszFileMimeTypes[]   = {"audio/x-ms-wax", "video/x-ms-wvx", "video/x-ms-asf", NULL};
const char* const CASXFileFormat::m_ppszStreamMimeTypes[] = {"application/vnd.rn-asx", NULL};
const char* const CASXFileFormat::m_ppszFileExtensions[]  = {"asx", "wax", "wvx", NULL};
const char* const CASXFileFormat::m_ppszFileOpenNames[]   = {"Windows Media Meta File (*.asx,*.wax,*.wvx)", NULL};

CASXFileFormat::CASXFileFormat()
    : m_lRefCount(0)
    , m_pContext(NULL)
    , m_pFileObject(NULL)
    , m_pFormatResponse(NULL)
    , m_pRequest(NULL)
    , m_pFileBuffer(NULL)
    , m_ulState(kStateReady)
    , m_ulPersistentVersion(0)
{
}

CASXFileFormat::~CASXFileFormat()
{
    Close();
}

STDMETHODIMP CASXFileFormat::QueryInterface(REFIID riid, void** ppvObj)
{
    HX_RESULT retVal = HXR_INVALID_PARAMETER;

    if (ppvObj)
    {
        // Set defaults
        retVal  = HXR_OK;
        *ppvObj = NULL;
        // Switch on riid
        if (IsEqualIID(riid, IID_IUnknown))
        {
            *ppvObj = (IUnknown*) (IHXPlugin*) this;
        }
        else if (IsEqualIID(riid, IID_IHXPlugin))
        {
            *ppvObj = (IHXPlugin*) this;
        }
        else if (IsEqualIID(riid, IID_IHXFileFormatObject))
        {
            *ppvObj = (IHXFileFormatObject*) this;
        }
        else if (IsEqualIID(riid, IID_IHXFileResponse))
        {
            *ppvObj = (IHXFileResponse*) this;
        }
        else if (IsEqualIID(riid, IID_IHXInterruptSafe))
        {
            *ppvObj = (IHXInterruptSafe*) this;
        }
        else
        {
            retVal = HXR_NOINTERFACE;
        }
        if (SUCCEEDED(retVal))
        {
            AddRef();
        }
    }

    return retVal;
}

STDMETHODIMP_(ULONG32) CASXFileFormat::AddRef()
{
    return InterlockedIncrement(&m_lRefCount);
}

STDMETHODIMP_(ULONG32) CASXFileFormat::Release()
{
    if (InterlockedDecrement(&m_lRefCount) > 0)
    {
        return m_lRefCount;
    }

    delete this;

    return 0;
}

STDMETHODIMP CASXFileFormat::GetPluginInfo(REF(HXBOOL)      rbLoadMultiple,
                                           REF(const char*) rpszDescription,
                                           REF(const char*) rpszCopyright,
                                           REF(const char*) rpszMoreInfoURL,
                                           REF(ULONG32)     rulVersionNumber)
{
    rbLoadMultiple   = TRUE;
    rpszDescription  = m_pszDescription;
    rpszCopyright    = m_pszCopyright;
    rpszMoreInfoURL  = m_pszMoreInfoURL;
    rulVersionNumber = TARVER_ULONG32_VERSION;

    return HXR_OK;
}

STDMETHODIMP CASXFileFormat::InitPlugin(IUnknown* pContext)
{
    HX_RESULT retVal = HXR_FAIL;

    if (pContext)
    {
        // Enable logging
        HX_ENABLE_LOGGING(pContext);
        // Save the context
        HX_RELEASE(m_pContext);
        m_pContext = pContext;
        m_pContext->AddRef();
        // Clear the return value
        retVal = HXR_OK;
    }

    return retVal;
}


STDMETHODIMP CASXFileFormat::GetFileFormatInfo(REF(const char**) rppszFileMimeTypes,
                                               REF(const char**) rppszFileExtensions,
                                               REF(const char**) rppszFileOpenNames)
{
    rppszFileMimeTypes  = (const char**) m_ppszFileMimeTypes;
    rppszFileExtensions = (const char**) m_ppszFileExtensions;
    rppszFileOpenNames  = (const char**) m_ppszFileOpenNames;

    return HXR_OK;
}

STDMETHODIMP CASXFileFormat::InitFileFormat(IHXRequest*        pRequest,
                                            IHXFormatResponse* pFormatResponse,
                                            IHXFileObject*     pFileObject)
{
    HX_RESULT retVal = HXR_INVALID_PARAMETER;

    if (pRequest && pFormatResponse && pFileObject)
    {
        // Save the request
        HX_RELEASE(m_pRequest);
        m_pRequest = pRequest;
        m_pRequest->AddRef();
        // Save the format response
        HX_RELEASE(m_pFormatResponse);
        m_pFormatResponse = pFormatResponse;
        m_pFormatResponse->AddRef();
        // Save the file object
        HX_RELEASE(m_pFileObject);
        m_pFileObject = pFileObject;
        m_pFileObject->AddRef();
        // Get our IHXFileResponse interface
        IHXFileResponse* pResponse = NULL;
        retVal = QueryInterface(IID_IHXFileResponse, (void**) &pResponse);
        if (SUCCEEDED(retVal))
        {
            // Set the state
            m_ulState = kStateInitDonePending;
            // Init the file object
            retVal = m_pFileObject->Init(HX_FILE_READ | HX_FILE_BINARY, pResponse);
            if (FAILED(retVal))
            {
                // The file object returned failure to Init(), so we don't
                // expect a callback, so reset the state
                m_ulState = kStateReady;
            }
        }
        HX_RELEASE(pResponse);
    }

    return retVal;
}       

STDMETHODIMP CASXFileFormat::GetFileHeader()
{
    HX_RESULT retVal = HXR_UNEXPECTED;

    HX_ASSERT(m_ulState == kStateInitialized);
    if (m_ulState == kStateInitialized)
    {
        // Create the file header
        IHXValues* pFileHdr = NULL;
        retVal = CreateValuesCCF(pFileHdr, m_pContext);
        if (SUCCEEDED(retVal))
        {
            // Set the stream count property
            pFileHdr->SetPropertyULONG32("StreamCount", 1);
            // Set the state
            m_ulState = kStateFileHeaderSent;
            // Send the file header
            m_pFormatResponse->FileHeaderReady(HXR_OK, pFileHdr);
        }
        HX_RELEASE(pFileHdr);
    }

    return retVal;
}

STDMETHODIMP CASXFileFormat::GetStreamHeader(UINT16 usStreamNumber)
{
    HX_RESULT retVal = HXR_UNEXPECTED;

    HX_ASSERT(m_ulState == kStateFileHeaderSent);
    if (m_ulState == kStateFileHeaderSent)
    {
        // Create the stream header
        IHXValues* pStreamHdr = NULL;
        retVal = CreateValuesCCF(pStreamHdr, m_pContext);
        if (SUCCEEDED(retVal))
        {
            // Set the stream header properties
            SetCStringPropertyCCF(pStreamHdr, "MimeType", m_ppszStreamMimeTypes[0], m_pContext);
            pStreamHdr->SetPropertyULONG32("Duration", 0);
            pStreamHdr->SetPropertyULONG32("StreamNumber", 0);
            pStreamHdr->SetPropertyULONG32("AvgBitRate", 1000);
            pStreamHdr->SetPropertyULONG32("PersistentVersion", m_ulPersistentVersion);
            // Set the state
            m_ulState = kStateStreamHeaderSent;
            // Send the stream header
            m_pFormatResponse->StreamHeaderReady(HXR_OK, pStreamHdr);
        }
        HX_RELEASE(pStreamHdr);
    }

    return retVal;
}

STDMETHODIMP CASXFileFormat::GetPacket(UINT16 usStreamNumber)
{
    HX_RESULT retVal = HXR_UNEXPECTED;

    HX_ASSERT(m_ulState == kStateStreamHeaderSent);
    if (m_ulState == kStateStreamHeaderSent)
    {
        // Do we have a file buffer?
        if (m_pFileBuffer)
        {
            // Create a packet
            IHXPacket* pPacket = NULL;
            retVal = CreatePacketCCF(pPacket, m_pContext);
            if (SUCCEEDED(retVal))
            {
                // Set the packet properties
                retVal = pPacket->Set(m_pFileBuffer,
                                      0,
                                      usStreamNumber,
                                      HX_ASM_SWITCH_ON | HX_ASM_SWITCH_OFF,
                                      0);
                if (SUCCEEDED(retVal))
                {
                    // Now that the packet has a ref on the buffer,
                    // we can release our ref on it
                    HX_RELEASE(m_pFileBuffer);
                    // Send the packet
                    m_pFormatResponse->PacketReady(HXR_OK, pPacket);
                }
            }
            HX_RELEASE(pPacket);
        }
        else
        {
            // We have already sent the file buffer and released it,
            // so just send a StreamDone().
            m_pFormatResponse->StreamDone(usStreamNumber);
        }
    }

    return retVal;
}

STDMETHODIMP CASXFileFormat::Seek(ULONG32 ulOffset)
{
    HX_RESULT retVal = HXR_UNEXPECTED;

    HX_ASSERT(m_ulState == kStateStreamHeaderSent);
    if (m_ulState == kStateStreamHeaderSent)
    {
        // Nothing to do, so send the SeekDone()
        m_pFormatResponse->SeekDone(HXR_OK);
        // Clear the return value
        retVal = HXR_OK;
    }

    return retVal;
}

STDMETHODIMP CASXFileFormat::Close()
{
    if (m_pFileObject)
    {
        m_pFileObject->Close();
    }
    HX_RELEASE(m_pContext);
    HX_RELEASE(m_pFileObject);
    HX_RELEASE(m_pFormatResponse);
    HX_RELEASE(m_pRequest);
    HX_RELEASE(m_pFileBuffer);
    m_ulState             = kStateReady;
    m_ulPersistentVersion = 0;

    return HXR_OK;
}

STDMETHODIMP CASXFileFormat::InitDone(HX_RESULT status)
{
    HX_RESULT retVal = HXR_UNEXPECTED;

    HX_ASSERT(m_ulState == kStateInitDonePending);
    if (m_ulState == kStateInitDonePending)
    {
        // Clear the return value
        retVal = HXR_OK;
        // Did the init succeed?
        if (SUCCEEDED(status))
        {
            // Get the response headers from the request
            IHXValues* pResponseHdrs = NULL;
            m_pRequest->GetResponseHeaders(pResponseHdrs);
            if (pResponseHdrs)
            {
                // Get the "PersistentVersion" property
                pResponseHdrs->GetPropertyULONG32("PersistentVersion", m_ulPersistentVersion);
            }
            HX_RELEASE(pResponseHdrs);
            // Set the state
            m_ulState = kStateSeekDonePending;
            // Seek the file back to the beginning
            m_pFileObject->Seek(0, FALSE);
        }
        else
        {
            // Fail out to the response interface
            m_pFormatResponse->InitDone(status);
        }
    }

    return retVal;
}

STDMETHODIMP CASXFileFormat::CloseDone(HX_RESULT status)
{
    return HXR_OK;
}

STDMETHODIMP CASXFileFormat::ReadDone(HX_RESULT status, IHXBuffer* pBuffer)
{
    HX_RESULT retVal = HXR_UNEXPECTED;

    HX_ASSERT(m_ulState == kStateReadDonePending);
    if (m_ulState == kStateReadDonePending)
    {
        // Did the read succeed?
        if (SUCCEEDED(status))
        {
            // Do we already have a file buffer?
            if (m_pFileBuffer)
            {
                // We have already done one read of size HX_ASX_READ_SIZE
                // and a subsequent read succeeded, so this must be a HUGE
                // ASX file. So we create a new buffer of big enough size
                // to hold both new and old. Doing the memcpy is a little
                // wasteful, but we don't expect this to happen very much,
                // if any.
                //
                // Create a new sized buffer
                IHXBuffer* pTmp = NULL;
                retVal = CreateSizedBufferCCF(pTmp, m_pContext, m_pFileBuffer->GetSize() + pBuffer->GetSize());
                if (SUCCEEDED(retVal))
                {
                    // Copy the old buffer in
                    memcpy(pTmp->GetBuffer(), m_pFileBuffer->GetBuffer(),
                           m_pFileBuffer->GetSize());
                    // Copy the new buffer in
                    memcpy(pTmp->GetBuffer() + m_pFileBuffer->GetSize(),
                           pBuffer->GetBuffer(), pBuffer->GetSize());
                }
                HX_RELEASE(pTmp);
            }
            else
            {
                // Save the read buffer
                m_pFileBuffer = pBuffer;
                m_pFileBuffer->AddRef();
            }
            // Do another read
            m_pFileObject->Read(HX_ASX_READ_SIZE);
        }
        else
        {
            // The read failed. Do we have a file buffer from a previous read?
            if (m_pFileBuffer)
            {
                // We have a file buffer from a previous read, so this
                // just means that we've read to the end of the file.
                // So clear the status.
                status = HXR_OK;
                // Set the state
                m_ulState = kStateInitialized;
            }
            else
            {
                // We encountered a read error on the first read we tried,
                // so we will change the state back and return the 
                // error we were given.
                m_ulState = kStateReady;
            }
            // Call back to the response interface
            m_pFormatResponse->InitDone(status);
        }
        // Clear the return value
        retVal = HXR_OK;
    }

    return retVal;
}

STDMETHODIMP CASXFileFormat::WriteDone(HX_RESULT status)
{
    // We don't ever write, so we don't expect to get this...
    return HXR_UNEXPECTED;
}

STDMETHODIMP CASXFileFormat::SeekDone(HX_RESULT status)
{
    HX_RESULT retVal = HXR_UNEXPECTED;

    HX_ASSERT(m_ulState == kStateSeekDonePending);
    if (m_ulState == kStateSeekDonePending)
    {
        // Set the state
        m_ulState = kStateReadDonePending;
        // Read from the file
        m_pFileObject->Read(HX_ASX_READ_SIZE);
        // Clear the return value
        retVal = HXR_OK;
    }

    return retVal;
}

HX_RESULT STDAPICALLTYPE CASXFileFormat::HXCreateInstance(IUnknown** ppUnk)
{
    HX_RESULT retVal = HXR_FAIL;

    if (ppUnk)
    {
        CASXFileFormat* pObj = new CASXFileFormat();
        if (pObj)
        {
            retVal = pObj->QueryInterface(IID_IUnknown, (void**) ppUnk);
        }
        if (FAILED(retVal))
        {
            HX_DELETE(pObj);
        }
    }

    return retVal;
}


--- NEW FILE: asxff_dll.cpp ---
/* ***** BEGIN LICENSE BLOCK ***** 
 * Version: RCSL 1.0/RPSL 1.0 
 *  
 * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
 *      
 * The contents of this file, and the files included with this file, are 
 * subject to the current version of the RealNetworks Public Source License 
 * Version 1.0 (the "RPSL") available at 
 * http://www.helixcommunity.org/content/rpsl unless you have licensed 
 * the file under the RealNetworks Community Source License Version 1.0 
 * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
 * in which case the RCSL will apply. You may also obtain the license terms 
 * directly from RealNetworks.  You may not use this file except in 
 * compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
 * applicable to this file, the RCSL.  Please see the applicable RPSL or 
 * RCSL for the rights, obligations and limitations governing use of the 
 * contents of the file.  
 *  
 * This file is part of the Helix DNA Technology. RealNetworks is the 
 * developer of the Original Code and owns the copyrights in the portions 
 * it created. 
 *  
 * This file, and the files included with this file, is distributed and made 
 * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
 * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
 * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
 * 
 * Technology Compatibility Kit Test Suite(s) Location: 
 *    http://www.helixcommunity.org/content/tck 
 * 
 * Contributor(s): 
 *  
 * ***** END LICENSE BLOCK ***** */ 

#include "hxtypes.h"
#include "hxresult.h"
#include "hxcom.h"
#include "hxplugn.h"
#include "asxff.h"


STDAPI ENTRYPOINT(HXCREATEINSTANCE)(IUnknown** ppIUnknown)   
{
    return CASXFileFormat::HXCreateInstance(ppIUnknown);
}   

STDAPI ENTRYPOINT(CanUnload2)(void)
{
    return (CHXBaseCountingObject::ObjectsActive() > 0 ? HXR_FAIL : HXR_OK);
}


--- NEW FILE: asxffdll_win32.pcf ---
# ***** BEGIN LICENSE BLOCK *****
# 
# Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
# 
# The contents of this file, and the files included with this file,
# are subject to the current version of the RealNetworks Public
# Source License (the "RPSL") available at
# http://www.helixcommunity.org/content/rpsl unless you have licensed
# the file under the current version of the RealNetworks Community
# Source License (the "RCSL") available at
# http://www.helixcommunity.org/content/rcsl, in which case the RCSL
# will apply. You may also obtain the license terms directly from
# RealNetworks.  You may not use this file except in compliance with
# the RPSL or, if you have a valid RCSL with RealNetworks applicable
# to this file, the RCSL.  Please see the applicable RPSL or RCSL for
# the rights, obligations and limitations governing use of the
# contents of the file.
# 
# Alternatively, the contents of this file may be used under the
# terms of the GNU General Public License Version 2 or later (the
# "GPL") in which case the provisions of the GPL are applicable
# instead of those above. If you wish to allow use of your version of
# this file only under the terms of the GPL, and not to allow others
# to use your version of this file under the terms of either the RPSL
# or RCSL, indicate your decision by deleting the provisions above
# and replace them with the notice and other provisions required by
# the GPL. If you do not delete the provisions above, a recipient may
# use your version of this file under the terms of any one of the
# RPSL, the RCSL or the GPL.
# 
# This file is part of the Helix DNA Technology. RealNetworks is the
# developer of the Original Code and owns the copyrights in the
# portions it created.
# 
# This file, and the files included with this file, is distributed
# and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
# KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
# ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
# ENJOYMENT OR NON-INFRINGEMENT.
# 
# Technology Compatibility Kit Test Suite(s) Location:
#    http://www.helixcommunity.org/content/tck
# 
# Contributor(s):
# 
# ***** END LICENSE BLOCK *****
# 

project.AddSources("platform/win32/asxff.rc")

project.AddSystemLibraries("version.lib", 
                           "kernel32.lib", 
                           "user32.lib", 
                           "advapi32.lib")


--- NEW FILE: asxffdll ---
# ***** BEGIN LICENSE BLOCK *****
# 
# Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
# 
# The contents of this file, and the files included with this file,
# are subject to the current version of the RealNetworks Public
# Source License (the "RPSL") available at
# http://www.helixcommunity.org/content/rpsl unless you have licensed
# the file under the current version of the RealNetworks Community
# Source License (the "RCSL") available at
# http://www.helixcommunity.org/content/rcsl, in which case the RCSL
# will apply. You may also obtain the license terms directly from
# RealNetworks.  You may not use this file except in compliance with
# the RPSL or, if you have a valid RCSL with RealNetworks applicable
# to this file, the RCSL.  Please see the applicable RPSL or RCSL for
# the rights, obligations and limitations governing use of the
# contents of the file.
# 
# Alternatively, the contents of this file may be used under the
# terms of the GNU General Public License Version 2 or later (the
# "GPL") in which case the provisions of the GPL are applicable
# instead of those above. If you wish to allow use of your version of
# this file only under the terms of the GPL, and not to allow others
# to use your version of this file under the terms of either the RPSL
# or RCSL, indicate your decision by deleting the provisions above
# and replace them with the notice and other provisions required by
# the GPL. If you do not delete the provisions above, a recipient may
# use your version of this file under the terms of any one of the
# RPSL, the RCSL or the GPL.
# 
# This file is part of the Helix DNA Technology. RealNetworks is the
# developer of the Original Code and owns the copyrights in the
# portions it created.
# 
# This file, and the files included with this file, is distributed
# and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
# KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
# ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
# ENJOYMENT OR NON-INFRINGEMENT.
# 
# Technology Compatibility Kit Test Suite(s) Location:
#    http://www.helixcommunity.org/content/tck
# 
# Contributor(s):
# 
# ***** END LICENSE BLOCK *****
# 

UmakefileVersion(2,2)

project.AddModuleIncludes("common/include")

project.AddSources("asxff_dll.cpp",
                   "asxff_guids.cpp")

project.AddModuleLibraries("common/runtime[runtlib]",
                           "common/dbgtool[debuglib]",
                           "common/util[utillib]",
                           "common/container[contlib]",
                           "common/system[syslib]",
                           "common/log/logutil[logutillib]",
                           "datatype/wm/asx/fileformat[asxfflib]")

project.ExportFunction("RMACreateInstance",
                       "IUnknown** ppObj",
                       "common/include",
                       "hxcom.h")
project.ExportFunction("CanUnload2", "void")

DLLTarget("asxff")

DependTarget()

--- NEW FILE: asxff_guids.cpp ---
/* ***** BEGIN LICENSE BLOCK ***** 
 * Version: RCSL 1.0/RPSL 1.0 
 *  
 * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
 *      
 * The contents of this file, and the files included with this file, are 
 * subject to the current version of the RealNetworks Public Source License 
 * Version 1.0 (the "RPSL") available at 
 * http://www.helixcommunity.org/content/rpsl unless you have licensed 
 * the file under the RealNetworks Community Source License Version 1.0 
 * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
 * in which case the RCSL will apply. You may also obtain the license terms 
 * directly from RealNetworks.  You may not use this file except in 
 * compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
 * applicable to this file, the RCSL.  Please see the applicable RPSL or 
 * RCSL for the rights, obligations and limitations governing use of the 
 * contents of the file.  
 *  
 * This file is part of the Helix DNA Technology. RealNetworks is the 
 * developer of the Original Code and owns the copyrights in the portions 
 * it created. 
 *  
 * This file, and the files included with this file, is distributed and made 
 * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
 * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
 * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
 * 
 * Technology Compatibility Kit Test Suite(s) Location: 
 *    http://www.helixcommunity.org/content/tck 
 * 
 * Contributor(s): 
 *  
 * ***** END LICENSE BLOCK ***** */ 

#define INITGUID

#include "hxtypes.h"
#include "hxwintyp.h"
#include "hxcom.h"
#include "hxplugn.h"
#include "ihxpckts.h"
#include "hxformt.h"
#include "hxengin.h"
#include "ihxfgbuf.h"
#include "ihxtlogsystem.h"
#include "ihxtlogsystemcontext.h"
#include "hxdllaccess.h"
#include "hxplayvelocity.h"
#include "hxcore.h"


--- NEW FILE: asxff.ver ---
/* THIS FILE IS GENERATED BY THE BUILD SYSTEM -- DO NOT EDIT
 * Copyright (C) 1997-2002 RealNetworks Corporation. All rights reserved.
 */
#ifdef _MACINTOSH
#define TARVER_ULONG32_VERSION ((10<<28)|(0<<20)|(0<<12)|10200)
#else
#define TARVER_ULONG32_VERSION (UINT32)((10L<<28L)|(0L<<20L)|(0L<< 12L)|10200L)
#endif
#define TARVER_LIST_VERSION 10,0,0,10200
#define TARVER_MAJOR_VERSION 10
#define TARVER_MINOR_VERSION 0
#define TARVER_STRING_VERSION "10.0.0.10200"
#define TARVER_STR_BUILD_NAME ""

--- NEW FILE: Umakefil ---
# ***** BEGIN LICENSE BLOCK *****
# 
# Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
# 
# The contents of this file, and the files included with this file,
# are subject to the current version of the RealNetworks Public
# Source License (the "RPSL") available at
# http://www.helixcommunity.org/content/rpsl unless you have licensed
# the file under the current version of the RealNetworks Community
# Source License (the "RCSL") available at
# http://www.helixcommunity.org/content/rcsl, in which case the RCSL
# will apply. You may also obtain the license terms directly from
# RealNetworks.  You may not use this file except in compliance with
# the RPSL or, if you have a valid RCSL with RealNetworks applicable
# to this file, the RCSL.  Please see the applicable RPSL or RCSL for
# the rights, obligations and limitations governing use of the
# contents of the file.
# 
# Alternatively, the contents of this file may be used under the
# terms of the GNU General Public License Version 2 or later (the
# "GPL") in which case the provisions of the GPL are applicable
# instead of those above. If you wish to allow use of your version of
# this file only under the terms of the GPL, and not to allow others
# to use your version of this file under the terms of either the RPSL
# or RCSL, indicate your decision by deleting the provisions above
# and replace them with the notice and other provisions required by
# the GPL. If you do not delete the provisions above, a recipient may
# use your version of this file under the terms of any one of the
# RPSL, the RCSL or the GPL.
# 
# This file is part of the Helix DNA Technology. RealNetworks is the
# developer of the Original Code and owns the copyrights in the
# portions it created.
# 
# This file, and the files included with this file, is distributed
# and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
# KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
# ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
# ENJOYMENT OR NON-INFRINGEMENT.
# 
# Technology Compatibility Kit Test Suite(s) Location:
#    http://www.helixcommunity.org/content/tck
# 
# Contributor(s):
# 
# ***** END LICENSE BLOCK *****
# 

UmakefileVersion(2,2)

MultiTargetMake("asxfflib", "asxffdll")


From ehyche at helixcommunity.org  Mon Nov 20 13:37:31 2006
From: ehyche at helixcommunity.org (ehyche@helixcommunity.org)
Date: Mon Nov 20 17:40:42 2006
Subject: [Datatype-cvs] wm/asx/renderer Umakefil, NONE, 1.1 asxelement.cpp,
	NONE, 1.1 asxelement.h, NONE, 1.1 asxrender.cpp, NONE,
	1.1 asxrender.h, NONE, 1.1 asxrender.ver, NONE,
	1.1 asxrender_dll.cpp, NONE, 1.1 asxrender_guids.cpp, NONE,
	1.1 asxrenderdll, NONE, 1.1 asxrenderdll_win32.pcf, NONE,
	1.1 asxrenderlib, NONE, 1.1 asxtypes.h, NONE, 1.1
Message-ID: 

Update of /cvsroot/datatype/wm/asx/renderer
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv31340/renderer

Added Files:
	Umakefil asxelement.cpp asxelement.h asxrender.cpp asxrender.h 
	asxrender.ver asxrender_dll.cpp asxrender_guids.cpp 
	asxrenderdll asxrenderdll_win32.pcf asxrenderlib asxtypes.h 
Log Message:
Modified by: Eric Hyche (ehyche@real.com)
Reviewed by: Greg Wright (gwright@real.com)

Description
------------------------------------------
This change adds support for Windows Media ASX
metafiles. It does so by adding a base metafile
renderer in datatype/common/metarend and then
adding a derived ASX renderer in datatype/wm/asx/renderer.
It also adds a simple ASX fileformat in
datatype/wm/asx/fileformat.

[Note: the ASX renderer is not feature-complete yet, but
basic multiple clip playback is working. At this point,
the ASX renderer is essentially on functional parity
with the RAM renderer, in that it can play back a
series of clips.]

Files Added
------------------------------------------
datatype/common/metarend/* (see datatype_common_metarend.zip)
datatype/wm/asx/* (see datatype_wm_asx.zip)

Files Modified
------------------------------------------
helix.bif
common/include/ihxtlogsystem.h

Branches
------------------------------------------
HEAD only



--- NEW FILE: asxrenderlib ---
# 
# ***** BEGIN LICENSE BLOCK *****
# Source last modified: $Id: asxrenderlib,v 1.1 2006/11/20 21:37:29 ehyche Exp $
# 
# Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
# 
# The contents of this file, and the files included with this file,
# are subject to the current version of the RealNetworks Public
# Source License (the "RPSL") available at
# http://www.helixcommunity.org/content/rpsl unless you have licensed
# the file under the current version of the RealNetworks Community
# Source License (the "RCSL") available at
# http://www.helixcommunity.org/content/rcsl, in which case the RCSL
# will apply. You may also obtain the license terms directly from
# RealNetworks.  You may not use this file except in compliance with
# the RPSL or, if you have a valid RCSL with RealNetworks applicable
# to this file, the RCSL.  Please see the applicable RPSL or RCSL for
# the rights, obligations and limitations governing use of the
# contents of the file.
# 
# Alternatively, the contents of this file may be used under the
# terms of the GNU General Public License Version 2 or later (the
# "GPL") in which case the provisions of the GPL are applicable
# instead of those above. If you wish to allow use of your version of
# this file only under the terms of the GPL, and not to allow others
# to use your version of this file under the terms of either the RPSL
# or RCSL, indicate your decision by deleting the provisions above
# and replace them with the notice and other provisions required by
# the GPL. If you do not delete the provisions above, a recipient may
# use your version of this file under the terms of any one of the
# RPSL, the RCSL or the GPL.
# 
# This file is part of the Helix DNA Technology. RealNetworks is the
# developer of the Original Code and owns the copyrights in the
# portions it created.
# 
# This file, and the files included with this file, is distributed
# and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
# KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
# ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
# ENJOYMENT OR NON-INFRINGEMENT.
# 
# Technology Compatibility Kit Test Suite(s) Location:
#    http://www.helixcommunity.org/content/tck
# 
# Contributor(s):
# 
# ***** END LICENSE BLOCK *****
# 
UmakefileVersion(2,2)

project.AddModuleIncludes("common/include",
                          "client/include",
                          "common/runtime/pub",
                          "common/util/pub",
                          "common/container/pub",
                          "common/dbgtool/pub",
                          "common/log/logutil/pub",
                          "datatype/common/metarend/pub",
                          "datatype/common/util/pub")

project.AddSources("asxelement.cpp",
                   "asxrender.cpp")

LibraryTarget("asxrenderlib")

DependTarget()

--- NEW FILE: asxrender.ver ---
/* THIS FILE IS GENERATED BY THE BUILD SYSTEM -- DO NOT EDIT
 * Copyright (C) 1997-2002 RealNetworks Corporation. All rights reserved.
 */
#ifdef _MACINTOSH
#define TARVER_ULONG32_VERSION ((10<<28)|(0<<20)|(0<<12)|10193)
#else
#define TARVER_ULONG32_VERSION (UINT32)((10L<<28L)|(0L<<20L)|(0L<< 12L)|10193L)
#endif
#define TARVER_LIST_VERSION 10,0,0,10193
#define TARVER_MAJOR_VERSION 10
#define TARVER_MINOR_VERSION 0
#define TARVER_STRING_VERSION "10.0.0.10193"
#define TARVER_STR_BUILD_NAME ""

--- NEW FILE: asxrenderdll_win32.pcf ---
# 
# ***** BEGIN LICENSE BLOCK ***** 
# Version: RCSL 1.0/RPSL 1.0 
#  
# Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
#      
# The contents of this file, and the files included with this file, are 
# subject to the current version of the RealNetworks Public Source License 
# Version 1.0 (the "RPSL") available at 
# http://www.helixcommunity.org/content/rpsl unless you have licensed 
# the file under the RealNetworks Community Source License Version 1.0 
# (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
# in which case the RCSL will apply. You may also obtain the license terms 
# directly from RealNetworks.  You may not use this file except in 
# compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
# applicable to this file, the RCSL.  Please see the applicable RPSL or 
# RCSL for the rights, obligations and limitations governing use of the 
# contents of the file.  
#  
# This file is part of the Helix DNA Technology. RealNetworks is the 
# developer of the Original Code and owns the copyrights in the portions 
# it created. 
#  
# This file, and the files included with this file, is distributed and made 
# available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
# EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
# INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
# FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
# 
# Technology Compatibility Kit Test Suite(s) Location: 
#    http://www.helixcommunity.org/content/tck 
# 
# Contributor(s): 
#  
# ***** END LICENSE BLOCK ***** 
# 

project.AddSources("platform/win32/asxrender.rc")

project.AddSystemLibraries("version.lib",
                           "kernel32.lib",
                           "user32.lib",
                           "advapi32.lib",
                           "gdi32.lib",
                           "ole32.lib")

--- NEW FILE: asxrender_guids.cpp ---
/* ***** BEGIN LICENSE BLOCK ***** 
 * Version: RCSL 1.0/RPSL 1.0 
 *  
 * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
 *      
 * The contents of this file, and the files included with this file, are 
 * subject to the current version of the RealNetworks Public Source License 
 * Version 1.0 (the "RPSL") available at 
 * http://www.helixcommunity.org/content/rpsl unless you have licensed 
 * the file under the RealNetworks Community Source License Version 1.0 
 * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
 * in which case the RCSL will apply. You may also obtain the license terms 
 * directly from RealNetworks.  You may not use this file except in 
 * compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
 * applicable to this file, the RCSL.  Please see the applicable RPSL or 
 * RCSL for the rights, obligations and limitations governing use of the 
 * contents of the file.  
 *  
 * This file is part of the Helix DNA Technology. RealNetworks is the 
 * developer of the Original Code and owns the copyrights in the portions 
 * it created. 
 *  
 * This file, and the files included with this file, is distributed and made 
 * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
 * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
 * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
 * 
 * Technology Compatibility Kit Test Suite(s) Location: 
 *    http://www.helixcommunity.org/content/tck 
 * 
 * Contributor(s): 
 *  
 * ***** END LICENSE BLOCK ***** */ 

#define INITGUID

#include "hxtypes.h"
#include "hxwintyp.h"
#include "hxcom.h"
#include "hxplugn.h"
#include "ihxpckts.h"
#include "hxrendr.h"
#include "hxengin.h"
#include "hxxml.h"
#include "hxcomm.h"
#include "hxmon.h"
#include "hxgroup.h"
#include "ihxfgbuf.h"
#include "ihxtlogsystem.h"
#include "ihxtlogsystemcontext.h"
#include "hxdllaccess.h"
#include "hxplayvelocity.h"
#include "hxcore.h"


--- NEW FILE: asxelement.cpp ---
/* ***** BEGIN LICENSE BLOCK *****
 *
 * Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
 * 
 * The contents of this file, and the files included with this file,
 * are subject to the current version of the RealNetworks Public
 * Source License (the "RPSL") available at
 * http://www.helixcommunity.org/content/rpsl unless you have licensed
 * the file under the current version of the RealNetworks Community
 * Source License (the "RCSL") available at
 * http://www.helixcommunity.org/content/rcsl, in which case the RCSL
 * will apply. You may also obtain the license terms directly from
 * RealNetworks.  You may not use this file except in compliance with
 * the RPSL or, if you have a valid RCSL with RealNetworks applicable
 * to this file, the RCSL.  Please see the applicable RPSL or RCSL for
 * the rights, obligations and limitations governing use of the
 * contents of the file.
 * 
 * Alternatively, the contents of this file may be used under the
 * terms of the GNU General Public License Version 2 or later (the
 * "GPL") in which case the provisions of the GPL are applicable
 * instead of those above. If you wish to allow use of your version of
 * this file only under the terms of the GPL, and not to allow others
 * to use your version of this file under the terms of either the RPSL
 * or RCSL, indicate your decision by deleting the provisions above
 * and replace them with the notice and other provisions required by
 * the GPL. If you do not delete the provisions above, a recipient may
 * use your version of this file under the terms of any one of the
 * RPSL, the RCSL or the GPL.
 * 
 * This file is part of the Helix DNA Technology. RealNetworks is the
 * developer of the Original Code and owns the copyrights in the
 * portions it created.
 * 
 * This file, and the files included with this file, is distributed
 * and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
 * KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
 * ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
 * ENJOYMENT OR NON-INFRINGEMENT.
 * 
 * Technology Compatibility Kit Test Suite(s) Location:
 *    http://www.helixcommunity.org/content/tck
 * 
 * Contributor(s):
 * 
 * ***** END LICENSE BLOCK ***** */

#include "hxtypes.h"
#include "hxcom.h"
#include "pckunpck.h"
#include "hlxclib/math.h"
#include "asxelement.h"

const HXASXElementNamePair CHXASXElement::m_pElementName[NumHXASXElements] =
{
    {HXASXElementAbstract,        HXASX_ELEMENT_NAME_ABSTRACT       },
    {HXASXElementAsx,             HXASX_ELEMENT_NAME_ASX            },
    {HXASXElementAuthor,          HXASX_ELEMENT_NAME_AUTHOR         },
    {HXASXElementBanner,          HXASX_ELEMENT_NAME_BANNER         },
    {HXASXElementBase,            HXASX_ELEMENT_NAME_BASE           },
    {HXASXElementCopyright,       HXASX_ELEMENT_NAME_COPYRIGHT      },
    {HXASXElementDuration,        HXASX_ELEMENT_NAME_DURATION       },
    {HXASXElementEndMarker,       HXASX_ELEMENT_NAME_ENDMARKER      },
    {HXASXElementEntry,           HXASX_ELEMENT_NAME_ENTRY          },
    {HXASXElementEntryRef,        HXASX_ELEMENT_NAME_ENTRYREF       },
    {HXASXElementEvent,           HXASX_ELEMENT_NAME_EVENT          },
    {HXASXElementLogURL,          HXASX_ELEMENT_NAME_LOGURL         },
    {HXASXElementMoreInfo,        HXASX_ELEMENT_NAME_MOREINFO       },
    {HXASXElementParam,           HXASX_ELEMENT_NAME_PARAM          },
    {HXASXElementPreviewDuration, HXASX_ELEMENT_NAME_PREVIEWDURATION},
    {HXASXElementRef,             HXASX_ELEMENT_NAME_REF            },
    {HXASXElementRepeat,          HXASX_ELEMENT_NAME_REPEAT         },
    {HXASXElementSkin,            HXASX_ELEMENT_NAME_SKIN           },
    {HXASXElementStartMarker,     HXASX_ELEMENT_NAME_STARTMARKER    },
    {HXASXElementStartTime,       HXASX_ELEMENT_NAME_STARTTIME      },
    {HXASXElementTitle,           HXASX_ELEMENT_NAME_TITLE          }
};

CHXASXElement::CHXASXElement(IUnknown* pContext, HXASXElement eType, IHXValues* pAttr, UINT32 ulLine,
                             UINT32 ulCol, CHXASXElement* pParent, HX_RESULT* pRet)
    : m_lRefCount(0)
    , m_eType(eType)
    , m_pAttr(pAttr)
    , m_ulLine(ulLine)
    , m_ulColumn(ulCol)
    , m_pContent(NULL)
    , m_pParent(pParent)
    , m_pChildList(NULL)
    , m_ChildListPosition(NULL)
{
    HX_ADDREF(m_pAttr);
    HX_ADDREF(m_pParent);
    // Nothing can go wrong in the base class constructor
    if (pRet)
    {
        *pRet = HXR_OK;
    }
}

CHXASXElement::~CHXASXElement()
{
    ClearChildList();
    HX_RELEASE(m_pAttr);
    HX_RELEASE(m_pContent);
    HX_RELEASE(m_pParent);
    HX_DELETE(m_pChildList);
    m_eType             = NumHXASXElements;
    m_ChildListPosition = NULL;
};

STDMETHODIMP CHXASXElement::QueryInterface(REFIID riid, void** ppvObj)
{
    HX_RESULT retVal = HXR_INVALID_PARAMETER;

    if (ppvObj)
    {
        // NULL out by default
        *ppvObj = NULL;
        // Clear the return value
        retVal = HXR_OK;
        // Switch based on IID
        if (IsEqualIID(riid, IID_IUnknown))
        {
            *ppvObj = (IUnknown*) this;
        }
        else
        {
            retVal = HXR_NOINTERFACE;
        }
        if (SUCCEEDED(retVal))
        {
            AddRef();
        }
    }

    return retVal;
}

STDMETHODIMP_(ULONG32) CHXASXElement::AddRef()
{
    return InterlockedIncrement(&m_lRefCount);
}

STDMETHODIMP_(ULONG32) CHXASXElement::Release()
{
    if (InterlockedDecrement(&m_lRefCount) > 0)
    {
        return m_lRefCount;
    }

    delete this;

    return 0;
}

HX_RESULT CHXASXElement::GetAttribute(const char* pszName, IHXBuffer** ppValue)
{
    HX_RESULT retVal = HXR_INVALID_PARAMETER;

    if (pszName && ppValue)
    {
        HX_ASSERT(*ppValue == NULL);
        retVal = m_pAttr->GetPropertyCString(pszName, *ppValue);
    }

    return retVal;
}

HX_RESULT CHXASXElement::GetContent(IHXBuffer** ppBuffer)
{
    HX_RESULT retVal = HXR_FAIL;

    if (ppBuffer && m_pContent)
    {
        // Make sure out parameter is initially NULL
        HX_ASSERT(*ppBuffer == NULL);
        // AddRef the buffer
        m_pContent->AddRef();
        // Assign the out parameter
        *ppBuffer = m_pContent;
        // Clear the return value
        retVal = HXR_OK;
    }

    return retVal;
}

HX_RESULT CHXASXElement::GetParent(CHXASXElement** ppElem)
{
    HX_RESULT retVal = HXR_FAIL;

    if (m_pParent && ppElem)
    {
        // Make sure in the out parameter is initially NULL
        HX_ASSERT(*ppElem == NULL);
        // AddRef the parent
        m_pParent->AddRef();
        // Assign the out parameter
        *ppElem = m_pParent;
        // Clear the return value
        retVal = HXR_OK;
    }

    return retVal;
}

HX_RESULT CHXASXElement::SetContent(IHXBuffer* pBuffer)
{
    HX_RESULT retVal = HXR_INVALID_PARAMETER;

    if (pBuffer)
    {
        // Save the content
        HX_RELEASE(m_pContent);
        m_pContent = pBuffer;
        m_pContent->AddRef();
        // Clear the return value
        retVal = HXR_OK;
    }

    return retVal;
}

HX_RESULT CHXASXElement::AddChild(CHXASXElement* pElem)
{
    HX_RESULT retVal = HXR_INVALID_PARAMETER;

    if (pElem)
    {
        // Set the return value
        retVal = HXR_OUTOFMEMORY;
        // Do we have a child list?
        if (!m_pChildList)
        {
            m_pChildList = new CHXSimpleList();
        }
        if (m_pChildList)
        {
            // Clear the return value
            retVal = HXR_OK;
            // AddRef the element
            pElem->AddRef();
            // Add it to the tail of the list
            m_pChildList->AddTail((void*) pElem);
        }
    }

    return retVal;
}

UINT32 CHXASXElement::GetNumChildren()
{
    UINT32 ulRet = 0;

    if (m_pChildList)
    {
        ulRet = (UINT32) m_pChildList->GetCount();
    }

    return ulRet;
}

HX_RESULT CHXASXElement::GetFirstChild(CHXASXElement** ppElem)
{
    HX_RESULT retVal = HXR_FAIL;

    if (ppElem && m_pChildList && m_pChildList->GetCount() > 0)
    {
        // Make sure the out parameter is initially NULL
        HX_ASSERT(*ppElem == NULL);
        // Set the list position to the head of the list
        m_ChildListPosition = m_pChildList->GetHeadPosition();
        // Get the element at this position and 
        // advance the position
        CHXASXElement* pElem = (CHXASXElement*) m_pChildList->GetNext(m_ChildListPosition);
        if (pElem)
        {
            // AddRef the object before returning
            pElem->AddRef();
            // Assign the out parameter
            *ppElem = pElem;
            // Clear the return value
            retVal = HXR_OK;
        }
    }

    return retVal;
}

HX_RESULT CHXASXElement::GetNextChild(CHXASXElement** ppElem)
{
    HX_RESULT retVal = HXR_FAIL;

    if (ppElem && m_pChildList && m_pChildList->GetCount() > 0 && m_ChildListPosition)
    {
        // Make sure the out parameter is initially NULL
        HX_ASSERT(*ppElem == NULL);
        // Get the element at this position and 
        // advance the position
        CHXASXElement* pElem = (CHXASXElement*) m_pChildList->GetNext(m_ChildListPosition);
        if (pElem)
        {
            // AddRef the object before returning
            pElem->AddRef();
            // Assign the out parameter
            *ppElem = pElem;
            // Clear the return value
            retVal = HXR_OK;
        }
    }

    return retVal;
}

HX_RESULT CHXASXElement::CreateElement(IUnknown* pContext, const char* pszName, IHXValues* pAttr, UINT32 ulLine,
                                       UINT32 ulCol, CHXASXElement* pParent, CHXASXElement** ppElem)
{
    HX_RESULT retVal = HXR_FAIL;

    if (pszName && ppElem)
    {
        // Make sure out param is initially NULL
        HX_ASSERT(*ppElem == NULL);
        // Get the element type
        HXASXElement eType = ParseElementType(pszName);
        // Create the element
        CHXASXElement* pElem = NULL;
        switch (eType)
        {
            case HXASXElementAbstract:
            case HXASXElementAuthor:
            case HXASXElementCopyright:
            case HXASXElementTitle:
                pElem = new CHXASXElement(pContext, eType, pAttr, ulLine, ulCol, pParent, &retVal);
                break;
            case HXASXElementAsx:
                pElem = new CHXASXElementASX(pContext, eType, pAttr, ulLine, ulCol, pParent, &retVal);
                break;
            case HXASXElementBanner:
            case HXASXElementBase:
            case HXASXElementEntryRef:
            case HXASXElementLogURL:
            case HXASXElementRef:
            case HXASXElementSkin:
                pElem = new CHXASXElementHrefOwner(pContext, eType, pAttr, ulLine, ulCol, pParent, &retVal);
                break;
            case HXASXElementDuration:
            case HXASXElementPreviewDuration:
            case HXASXElementStartTime:
                pElem = new CHXASXElementTimeOwner(pContext, eType, pAttr, ulLine, ulCol, pParent, &retVal);
                break;
            case HXASXElementEndMarker:
            case HXASXElementStartMarker:
                pElem = new CHXASXElementMarker(pContext, eType, pAttr, ulLine, ulCol, pParent, &retVal);
                break;
            case HXASXElementEntry:
                pElem = new CHXASXElementEntry(pContext, eType, pAttr, ulLine, ulCol, pParent, &retVal);
                break;
            case HXASXElementEvent:
                pElem = new CHXASXElementEvent(pContext, eType, pAttr, ulLine, ulCol, pParent, &retVal);
                break;
            case HXASXElementMoreInfo:
                pElem = new CHXASXElementMoreInfo(pContext, eType, pAttr, ulLine, ulCol, pParent, &retVal);
                break;
            case HXASXElementParam:
                pElem = new CHXASXElementParam(pContext, eType, pAttr, ulLine, ulCol, pParent, &retVal);
                break;
            case HXASXElementRepeat:
                pElem = new CHXASXElementRepeat(pContext, eType, pAttr, ulLine, ulCol, pParent, &retVal);
                break;
            default:
                break;
        }
        if (pElem && SUCCEEDED(retVal))
        {
            // AddRef the object
            pElem->AddRef();
            // Assign the out parameter
            *ppElem = pElem;
        }
        if (FAILED(retVal))
        {
            HX_DELETE(pElem);
        }
    }

    return retVal;
}

HXASXElement CHXASXElement::ParseElementType(const char* pszName)
{
    HXASXElement eRet = NumHXASXElements;

    if (pszName)
    {
        for (UINT32 i = 0; i < NumHXASXElements; i++)
        {
            if (!strcmp(pszName, m_pElementName[i].m_pszName))
            {
                eRet = m_pElementName[i].m_eType;
                break;
            }
        }
    }

    return eRet;
}

void CHXASXElement::TrimString(const char* pszStr, CHXString* pStr)
{
    if (pszStr && pStr)
    {
        // Assign the string
        *pStr = pszStr;
        // Trim whitespace off the left-hand side
        pStr->TrimLeft();
        // Trim whitespace off the right-hand size
        pStr->TrimRight();
    }
}

void CHXASXElement::ClearChildList()
{
    if (m_pChildList)
    {
        while (m_pChildList->GetCount() > 0)
        {
            CHXASXElement* pElem = (CHXASXElement*) m_pChildList->RemoveHead();
            HX_RELEASE(pElem);
        }
    }
}

const char* CHXASXElement::ReturnString(IHXBuffer* pBuf)
{
    const char* pszRet = NULL;

    if (pBuf && pBuf->GetSize() > 0)
    {
        pszRet = (const char*) pBuf->GetBuffer();
    }

    return pszRet;
}

HX_RESULT CHXASXElement::ReturnBuffer(IHXBuffer* pIn, IHXBuffer** ppOut)
{
    HX_RESULT retVal = HXR_FAIL;

    if (pIn && ppOut)
    {
        HX_ASSERT(*ppOut == NULL);
        pIn->AddRef();
        *ppOut = pIn;
        retVal = HXR_OK;
    }

    return retVal;
}

HX_RESULT CHXASXElement::ParseTime(const char* pszStr, UINT32* pulValue)
{
    HX_RESULT retVal = HXR_FAIL;

    if (pszStr && pulValue)
    {
        // Get the string length
        INT32 lLen = (INT32) strlen(pszStr);
        HX_ASSERT(lLen > 0);
        if (lLen > 0)
        {
            // This function assumes that the whitespace has already
            // trimmed from both ends of pszStr
            HXBOOL bWhitespaceOnEnds = (isspace(pszStr[0]) || isspace(pszStr[lLen-1]));
            HX_ASSERT(!bWhitespaceOnEnds);
            if (!bWhitespaceOnEnds)
            {
                // Verify this string only has the allowed characters [0123456789:.]
                const char* pszLegalChars = "0123456789:.";
                INT32 lSpan = strspn(pszStr, pszLegalChars);
                HX_ASSERT(lSpan == lLen);
                if (lSpan == lLen)
                {
                    // Allocate a string copy, since our parsing will be destructive
                    char* pszTmp = new char [strlen(pszStr) + 1];
                    if (pszTmp)
                    {
                        // Copy the string
                        strcpy(pszTmp, pszStr); // Flawfinder: ignore
                        // Look for '.'
                        UINT32 ulRet = 0;
                        char*  pCh   = strchr((const char*) pszTmp, '.');
                        if (pCh)
                        {
                            // Get the fraction of seconds as a double
                            double dFrac = atof((const char*) pCh);
                            // Convert to milliseconds
                            ulRet = (UINT32) (dFrac * 1000.0);
                            // NULL out the '.' location
                            *pCh = '\0';
                        }
                        // Now we should be left with a HH:MM:SS string
                        UINT32 i = 0;
                        for (i = 0; i < 3; i++)
                        {
                            // Look for the last colon character
                            pCh = strrchr((const char*) pszTmp, ':');
                            if (!pCh)
                            {
                                pCh = pszTmp - 1;
                            }
                            // Get the integer
                            UINT32 ulDigits = (UINT32) atoi((const char*) (pCh + 1));
                            // Convert either HH, MM, or SS to milliseconds
                            UINT32 ulMs = 0;
                            switch (i)
                            {
                                case 0: // this is seconds
                                    ulMs = ulDigits * 1000;
                                    break;
                                case 1: // this is minutes
                                    ulMs = ulDigits * 60 * 1000;
                                    break;
                                case 2: // this is hours
                                    ulMs = ulDigits * 60 * 60 * 1000;
                                    break;
                            }
                            // Add this to the overall time
                            ulRet += ulMs;
                            // If we have processed to the beginning of the string,
                            // then we can break out. If not, then we need to
                            // NULL out the colon character and continue
                            if (pCh < pszTmp)
                            {
                                break;
                            }
                            else
                            {
                                *pCh = '\0';
                            }
                        }
                        // Assign the out parameter
                        *pulValue = ulRet;
                        // Clear the return value
                        retVal = HXR_OK;
                    }
                    HX_VECTOR_DELETE(pszTmp);
                }
            }
        }
    }

    return retVal;
}

HX_RESULT CHXASXElement::ParseYesNo(const char* pszStr, HXBOOL* pbValue)
{
    HX_RESULT retVal = HXR_FAIL;

    if (pszStr && pbValue)
    {
        // Get the string length
        INT32 lLen = (INT32) strlen(pszStr);
        HX_ASSERT(lLen > 0);
        if (lLen > 0)
        {
            // This function assumes that the whitespace has already
            // trimmed from both ends of pszStr
            HXBOOL bWhitespaceOnEnds = (isspace(pszStr[0]) || isspace(pszStr[lLen-1]));
            HX_ASSERT(!bWhitespaceOnEnds);
            if (!bWhitespaceOnEnds)
            {
                // Check if the value if "yes" or "no"
                if (!strcasecmp(pszStr, "yes"))
                {
                    *pbValue = TRUE;
                    retVal   = HXR_OK;
                }
                else if (!strcasecmp(pszStr, "no"))
                {
                    *pbValue = FALSE;
                    retVal   = HXR_OK;
                }
            }
        }
    }

    return retVal;
}

HX_RESULT CHXASXElement::ParseWhenDone(const char* pszStr, EventWhenDone* peValue)
{
    HX_RESULT retVal = HXR_FAIL;

    if (pszStr && peValue)
    {
        // Get the string length
        INT32 lLen = (INT32) strlen(pszStr);
        HX_ASSERT(lLen > 0);
        if (lLen > 0)
        {
            // This function assumes that the whitespace has already
            // trimmed from both ends of pszStr
            HXBOOL bWhitespaceOnEnds = (isspace(pszStr[0]) || isspace(pszStr[lLen-1]));
            HX_ASSERT(!bWhitespaceOnEnds);
            if (!bWhitespaceOnEnds)
            {
                // Check if the value is "resume", "next", or "break"
                if (!strcasecmp(pszStr, "resume"))
                {
                    *peValue = EventWhenDoneResume;
                    retVal   = HXR_OK;
                }
                else if (!strcasecmp(pszStr, "next"))
                {
                    *peValue = EventWhenDoneNext;
                    retVal   = HXR_OK;
                }
                else if (!strcasecmp(pszStr, "break"))
                {
                    *peValue = EventWhenDoneBreak;
                    retVal   = HXR_OK;
                }
            }
        }
    }

    return retVal;
}

CHXASXElementASX::CHXASXElementASX(IUnknown* pContext, HXASXElement eType, IHXValues* pAttr, UINT32 ulLine,
                                   UINT32 ulCol, CHXASXElement* pParent, HX_RESULT* pRet)
    : CHXASXElement(pContext, eType, pAttr, ulLine, ulCol, pParent, pRet)
    , m_ulVersion(0)
    , m_bPreviewMode(FALSE)
    , m_eBannerBar(BannerBarAuto)
{
    if (m_pAttr && pRet)
    {
        // Set the return value
        *pRet = HXR_FAIL;
        // Parse VERSION attribute
        CHXString  strTmp;
        IHXBuffer* pTmp = NULL;
        if (SUCCEEDED(m_pAttr->GetPropertyCString(HXASX_ATTRIBUTE_NAME_VERSION, pTmp)))
        {
            // Trim whitespace from both ends
            TrimString((const char*) pTmp->GetBuffer(), &strTmp);
            // Convert to floating point
            double dVer = atof((const char*) strTmp);
            // Split into integer and fractional parts
            double dInt = 0.0;
            double dFrac = modf(dVer, &dInt);
            // Get major version
            UINT32 ulMajorVer = (UINT32) dInt;
            // Convert fractional part to integer
            UINT32 ulMinorVer = (UINT32) (dFrac * 10.0);
            // Do we have a non-zero major version?
            if (ulMajorVer)
            {
                // Set the version
                m_ulVersion = HX_ENCODE_PROD_VERSION(ulMajorVer, ulMinorVer, 0, 0);
                // The version attribute is required, so if we have it, then we succeeded
                *pRet = HXR_OK;
            }
        }
        HX_RELEASE(pTmp);
        // Parse PREVIEWMODE attribute
        if (SUCCEEDED(m_pAttr->GetPropertyCString(HXASX_ATTRIBUTE_NAME_PREVIEWMODE, pTmp)))
        {
            // Trim whitespace from both ends
            TrimString((const char*) pTmp->GetBuffer(), &strTmp);
            // Parse the "YES" or