From ext-anugrah.2.kashari at nokia.com  Mon Jan  4 00:45:56 2010
From: ext-anugrah.2.kashari at nokia.com (ext-anugrah.2.kashari@nokia.com)
Date: Mon Jan  4 08:13:26 2010
Subject: [Datatype-dev]: CR : TMAA-7YLAN6 -  Thumbnail not generated
Message-ID: 

"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: ext-anugrah.2.kashari@nokia.com

Review By:  Ashish.As.Gupta@nokia.com

TSW-ID: TMAA-7YLAN6

Date : 04/01/2010

Project: SymbianMmf_wm

Synopsis:  Thumbnail not generated

Overview :  In thumbnail generation, decoded picture is not send to client when decoder is trying to decode picture is time synchronized mode. Time synchronization is not required for thumbnail generation therefore there is no need to set clock source.

Fix:  For TNE, when disabling post-processor, disable the clock source as well.

Files modified & changes 210Cays , Brizo420 and Head :
/Datatype/mdf/video/renderer/mdfvideoadapter.cpp

Image Size and Heap Use impact: No major impact

Module Release testing (STIF) :  NA

Test case(s) Added : No

Memory leak check performed : Passed, No additional leaks introduced.

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

Platforms and Profiles Functionality verified: armv5

Branch : 210Cays, Brizo420 & Head :

CVS Diff:
Index: mdfvideoadapter.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/renderer/mdfvideoadapter.cpp,v
retrieving revision 1.3.2.102
diff -u -w -r1.3.2.102 mdfvideoadapter.cpp
--- mdfvideoadapter.cpp 30 Oct 2009 16:50:30 -0000      1.3.2.102
+++ mdfvideoadapter.cpp 4 Jan 2010 08:38:19 -0000
@@ -2517,6 +2517,7 @@
 void CMdfVideoAdapter::SetPostProcessing(HXBOOL bEnable)
 {
     m_bDisablePostProcessor = !bEnable;
+    m_bDisableVideoClock = !bEnable;
 }

 void CMdfVideoAdapter::SetPictureReturn(HXBOOL bEnable)

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100104/f2ec527c/attachment.html
From pbasic at real.com  Mon Jan  4 01:06:57 2010
From: pbasic at real.com (Petar Basic)
Date: Mon Jan  4 08:33:34 2010
Subject: [datatype-dev] CR: Added ability to output ID3v2 v2.3.0;
	added DTDriver engine 
	parameter for controlling the ID3v2 output in MP4 writer
Message-ID: <9b8350411001040106x55a13583had8dfd233ac989@mail.gmail.com>

Modified by: pbasic at real.com
Date: 2010/01/04
Project: GMP MetaEditor (meta3gp.exe)

Synopsis:
Added ability to output ID3v2 v2.3.0; added DTDriver engine parameter
for controlling the ID3v2 output in MP4 writer

Overview:
To allow testing of meta-data outputted by MP4 file-writer with other
software and with MP4 file-format it is useful to be able to output an
older version of ID3v2 tag.

Details:
1.) Extended ID3Tools methods to allow writing of ID3v2 according to
v2.3.0 specs.

2.) Added DTDriver engine parameter which controls the behaviour of
MP4 file-writer during ID3v2 tag output.

3.) Added ID3v2 related command-line options to GMPMetaEditor.  These
are mapped to DTDriver engine parameters.

Testing:
Verified that the portion of meta-info injected as ID3v2 by GMP
MetaEditor can be read with other software (iTunes 9, CT metadata
extractor 1.3) regardless of the version of ID3v2 outputted (v2.4.0 or
v2.3.0).  Verified that meta-info injected by other software can be
read with GMP MetaEditor.

Files Modified:
datatype/common/util/metautil.cpp
datatype/common/util/pub/metautil.h
datatype/mp4/filewriter/mp4sm.cpp
datatype/mp4/filewriter/mp4sm.h
datatype/tools/dtdriver/engine/ffdriver.cpp
datatype/tools/dtdriver/engine/pub/ffdriver.h
datatype/tools/dtdriver/apps/meta3gp/HXXmlInputParser.cpp
datatype/tools/dtdriver/apps/meta3gp/main.cpp

Platforms and Profiles Affected:
All

Image Size and Heap Use impact:
Small increase

Platforms and Profiles Build Verified:
system id: win32-i386-vc7
profile: helix-client-all-defines

Platforms and Profiles Functionality Verified:
x86 Windows XP SP2

Branch:
HEAD

Copyright assignment:
I am a RealNetworks employee or contractor.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: datatype_common_util.diff
Type: text/x-patch
Size: 39544 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100104/5c2b6090/datatype_common_util-0001.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: datatype_mp4_filewriter.diff
Type: text/x-patch
Size: 10411 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100104/5c2b6090/datatype_mp4_filewriter-0001.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: datatype_tools_dtdriver_apps_meta3gp.diff
Type: text/x-patch
Size: 23228 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100104/5c2b6090/datatype_tools_dtdriver_apps_meta3gp-0001.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: datatype_tools_dtdriver_engine.diff
Type: text/x-patch
Size: 14562 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100104/5c2b6090/datatype_tools_dtdriver_engine-0001.bin
From gahluwalia at real.com  Mon Jan  4 01:49:28 2010
From: gahluwalia at real.com (Gurpreet)
Date: Mon Jan  4 09:16:05 2010
Subject: [datatype-dev] Resend : CR: Fix for Bug 9915 a particular mp3 file
	cannot be played
In-Reply-To: <4B3849CB.4040901@real.com>
References: <4B384955.7020604@real.com> <4B3849CB.4040901@real.com>
Message-ID: <4B41B9A8.9050009@real.com>

Gurpreet wrote:
> Forgot to attach diff.
> PFA.
>
> Thanks,
> Gurpreet
>
> Gurpreet wrote:
>> Synopsis:
>> Fix for Bug 9915 a particular mp3 file cannot be played
>>
>> Overview:
>> This particular mp3 file mentioned in the bug is not recognized by 
>> the android player.
>> Reason for that is:
>> Frame Sync bits are at position 16128 where as we check till 512.
>> There fore for android we have increased the scan bytes value to 16 KB.
>>
>> Files Modified:
>> /common/system/recognizer.cpp
>>
>> Image Size and Heap Use impact (Client -Only):
>> None
>>
>> Platforms and Profiles Build Verified:
>> BIF branch            -> atlas 310, atlas 361, brizo  401, head
>> Target(s)                -> android_all
>> Profile                    -> helix-client-android-surf_8x50
>> SYSTEM_ID        -> android-donut-arm.eabi
>>
>> Files Attached::
>> common.diff
>>
>> Thanks & Best Regards,
>> Gurpreet
>>
>
> ------------------------------------------------------------------------
>
> Index: recognizer.cpp
> ===================================================================
> RCS file: /cvsroot/common/system/recognizer.cpp,v
> retrieving revision 1.12.8.4.2.7
> diff -u -r1.12.8.4.2.7 recognizer.cpp
> --- recognizer.cpp	6 Nov 2009 18:12:03 -0000	1.12.8.4.2.7
> +++ recognizer.cpp	28 Dec 2009 05:47:09 -0000
> @@ -26,7 +26,11 @@
>  #define HX_MIMETYPE_AMR		    "audio/amr"
>  
>  // length of buffer read from file and passed to recognizer
> +#if defined(ANDROID)
> +static const int KRecogLength = 16384;
> +#else
>  static const int KRecogLength = 512;
> +#endif
>  
>  #if !defined (_SYMBIAN)
>  HX_RESULT CHXFileRecognizer::GetMimeType(const char* pFileName, IHXBuffer* pBuffer, REF(IHXBuffer*) pMimeType)
>   



From sgarg at real.com  Mon Jan  4 03:27:31 2010
From: sgarg at real.com ( Sushant Garg)
Date: Mon Jan  4 10:54:04 2010
Subject: [datatype-dev] CR/CN: Fix for Bug 9845: Un-able to play the *.mp4
	files at http://vidfeed.homeip.net/films webpage
Message-ID: <00af01ca8d30$e9bdd800$8001a8c0@adroit02a604c1>

Skipped content of type multipart/alternative-------------- next part --------------
Index: atomizer.cpp
===================================================================
RCS file: /cvsroot/datatype/mp4/fileformat/atomizer.cpp,v
retrieving revision 1.18.8.3
diff -u -r1.18.8.3 atomizer.cpp
--- atomizer.cpp	28 Apr 2008 02:09:58 -0000	1.18.8.3
+++ atomizer.cpp	4 Jan 2010 09:54:13 -0000
@@ -159,14 +159,14 @@
     // Find out if syncrhonous use of input is possible
     if (SUCCEEDED(retVal))
     {
-	if (SUCCEEDED(m_pFileSwitcher->Advise(HX_FILEADVISE_SYNCACCESS)))
+	HX_RESULT adviseRes = m_pFileSwitcher->Advise(HX_FILEADVISE_SYNCACCESS);
+	if (SUCCEEDED(adviseRes) && adviseRes != HXR_ADVISE_NETWORK_ACCESS)
 	{
 	    m_bSyncAccessEnabled = TRUE;
 	    m_pFileSwitcher->Advise(HX_FILEADVISE_ASYNCACCESS);
 	}
 	
-	HX_RESULT adviseRes = 
-	    m_pFileSwitcher->Advise(HX_FILEADVISE_RANDOMACCESS);
+	adviseRes = m_pFileSwitcher->Advise(HX_FILEADVISE_RANDOMACCESS);
 
 	if (HXR_ADVISE_PREFER_LINEAR == adviseRes)
 	{
@@ -394,6 +394,10 @@
 	    return retVal;
 	}
     }
+    else if (m_ulFinalOffset != ATOMIZE_ALL && m_ulCurrentOffset > m_ulFinalOffset)
+    {
+        m_ulCurrentOffset = m_ulFinalOffset;
+    }
 
     CompleteAtomization(retVal);
 
@@ -564,6 +568,11 @@
 
     if (SUCCEEDED(status))
     {
+        if (m_ulFinalOffset != ATOMIZE_ALL)
+        {
+	    m_ulCurrentOffset = m_ulCurrentOffset > m_ulFinalOffset ? m_ulFinalOffset : m_ulCurrentOffset;
+        }
+
 	// See if parsing fully completed
 	if (((m_ulFinalOffset != ATOMIZE_ALL) &&
 	     (m_ulFinalOffset != m_ulCurrentOffset)) ||
Index: mempager.cpp
===================================================================
RCS file: /cvsroot/datatype/mp4/fileformat/mempager.cpp,v
retrieving revision 1.6
diff -u -r1.6 mempager.cpp
--- mempager.cpp	27 Apr 2005 13:57:41 -0000	1.6
+++ mempager.cpp	4 Jan 2010 09:54:14 -0000
@@ -198,7 +198,8 @@
 	}
 
 	// Page in here only if it can be done synchronously
-	if (SUCCEEDED(m_pFileSwitcher->Advise(HX_FILEADVISE_SYNCACCESS)))
+	HX_RESULT adviseRes = m_pFileSwitcher->Advise(HX_FILEADVISE_SYNCACCESS);
+	if (SUCCEEDED(adviseRes) && adviseRes != HXR_ADVISE_NETWORK_ACCESS)
 	{
 	    m_bSyncMode = TRUE;
 	    retVal = _LoadPage();
From vkathuria at real.com  Mon Jan  4 03:59:35 2010
From: vkathuria at real.com (Varun Kathuria)
Date: Mon Jan  4 11:26:16 2010
Subject: [datatype-dev] CR: Changes to fix [Bug 9762] It costs about 4 sec
	for some mov file
Message-ID: 

Skipped content of type multipart/alternative-------------- next part --------------
Index: qttrack.cpp
===================================================================
RCS file: /cvsroot/datatype/mp4/fileformat/qttrack.cpp,v
retrieving revision 1.30.2.3
diff -u -r1.30.2.3 qttrack.cpp
--- qttrack.cpp	24 Jul 2008 23:53:19 -0000	1.30.2.3
+++ qttrack.cpp	4 Jan 2010 11:27:53 -0000
@@ -883,20 +883,26 @@
 
     if (SUCCEEDED(retVal))
     {
-	do
-	{
-	    if (!m_SampleSize.EstablishBySample(
-		    m_TimeToSample.GetSampleNumber(),
-		    m_SampleToChunk.GetChunkSampleNum()))
-	    {
-		break;
-	    }
-
-	    ulTrackSize += m_SampleSize.GetSampleSize();
-	} while (AdvanceSample(m_TrackEdit,
-			       m_TimeToSample,
-			       m_SampleToChunk));
+        if(m_SampleSize.IsGenericSize())
+        {
+            ulTrackSize = m_SampleSize.GetSampleSize() * m_SampleSize.Get_NumEntries();
+        }
+        else
+        {
+            do
+            {
+                if (!m_SampleSize.EstablishBySample(
+                    m_TimeToSample.GetSampleNumber(),
+                    m_SampleToChunk.GetChunkSampleNum()))
+                {
+                    break;
+                }
 
+                ulTrackSize += m_SampleSize.GetSampleSize();
+            } while (AdvanceSample(m_TrackEdit,
+                                   m_TimeToSample,
+                                   m_SampleToChunk));
+        }
 	ulTrackSizeOut = ulTrackSize;
     }
 
Index: pub/qtatmmgs.h
===================================================================
RCS file: /cvsroot/datatype/mp4/fileformat/pub/qtatmmgs.h,v
retrieving revision 1.19.8.9
diff -u -r1.19.8.9 qtatmmgs.h
--- pub/qtatmmgs.h	31 Mar 2009 02:56:01 -0000	1.19.8.9
+++ pub/qtatmmgs.h	4 Jan 2010 11:27:54 -0000
@@ -332,7 +332,7 @@
     ULONG32 GetChunkSampleOffset(void)	{ return m_ulChunkSampleOffset; }
     ULONG32 GetChunkSize(void)		{ return m_ulChunkSize; }
     ULONG32 Get_NumEntries(void)		{ return m_ulNumEntries; }
-
+    HXBOOL IsGenericSize(void)		{ return m_ulGenericSize ? TRUE:FALSE; }
 private:
     CQT_stsz_Atom* m_pSampleSizeAtom;
 
From ehyche at real.com  Mon Jan  4 06:23:02 2010
From: ehyche at real.com (Eric Hyche)
Date: Mon Jan  4 13:49:35 2010
Subject: [datatype-dev] Re: [Porting-android] Re: CR: Fix for Bug 9915 a
 particular mp3 file	cannot be played
In-Reply-To: <4B3849CB.4040901@real.com>
References: <4B384955.7020604@real.com> <4B3849CB.4040901@real.com>
Message-ID: 

I think it's safe to increase this to 16k on all platforms, not just Android.

Eric

On Dec 28, 2009, at 1:01 AM, Gurpreet wrote:

> Forgot to attach diff.
> PFA.
> 
> Thanks,
> Gurpreet
> 
> Gurpreet wrote:
>> Synopsis:
>> Fix for Bug 9915 a particular mp3 file cannot be played
>> 
>> Overview:
>> This particular mp3 file mentioned in the bug is not recognized by the 
>> android player.
>> Reason for that is:
>> Frame Sync bits are at position 16128 where as we check till 512.
>> There fore for android we have increased the scan bytes value to 16 KB.
>> 
>> Files Modified:
>> /common/system/recognizer.cpp
>> 
>> Image Size and Heap Use impact (Client -Only):
>> None
>> 
>> Platforms and Profiles Build Verified:
>> BIF branch            -> atlas 310, atlas 361, brizo  401, head
>> Target(s)                -> android_all
>> Profile                    -> helix-client-android-surf_8x50
>> SYSTEM_ID        -> android-donut-arm.eabi
>> 
>> Files Attached::
>> common.diff
>> 
>> Thanks & Best Regards,
>> Gurpreet
>> 
> 
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From ehyche at real.com  Mon Jan  4 06:43:27 2010
From: ehyche at real.com (Eric Hyche)
Date: Mon Jan  4 14:09:54 2010
Subject: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays
	incorrect duration for a wav file recorded by gnome-sound-recorder.
In-Reply-To: <01ed01ca8492$b14289e0$8001a8c0@adroit02a604c1>
References: <011601ca78cd$6011f9a0$8001a8c0@adroit02a604c1>
	<7ECCEA249B7CDC49A079EC0075E999AA07D82CC716@SEAMBX.corp.real.com>
	<012301ca798f$c8a9dce0$8001a8c0@adroit02a604c1>
	<268FD6EA-49A7-42FA-AFC6-78547C20C18B@real.com>
	<01ed01ca8492$b14289e0$8001a8c0@adroit02a604c1>
Message-ID: <5FC21ACD-FE11-427F-BA16-49FA0D27F818@real.com>

You are treating IHXFileStat::Stat() like a synchronous call and there is 
no guarantee that it will be. Once you issue the call to Stat(), then
you will need to wait in StatDone() before calling back to InitDone().

Eric

On Dec 24, 2009, at 7:14 AM, Sushant Garg wrote:

> Eric,
>  
> Please find the updated diff.
>  
> Thanks & Regards
> Sushant Garg
> ----- Original Message -----
> From: Eric Hyche
> To: Sushant Grag
> Cc: Datatype-Dev
> Sent: Friday, December 11, 2009 12:04 AM
> Subject: Re: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-recorder.
> 
> Sushant,
> 
> After thinking about this some more, I think the Stat() call should be moved inside the RIFF reader, for a couple of reasons:
> 
> - centralize it in one place, so other uses of the RIFF reader don't have to do the same thing.
> - the most natural time to do the Stat is immediately after the IHXFileObject is Init'd, which in this case the RIFF reader does.
> 
> So I think the RIFF reader could do the IHXFileStat::Stat() call, and then store the filesize result. Then we could just add an accessor function on the RIFF reader so that users of the RIFF reader can read the size. The file size would only be valid after the CRIFFREader::Open() call had returned with a RIFFOpenDone() callback.
> 
> Eric
> 
> On Dec 10, 2009, at 6:56 AM, Sushant Grag wrote:
> 
> > Thanks Eric,
> >  
> > Please find the updated diff.
> >  
> > Thanks & Regards
> > Sushant Garg
> > ----- Original Message -----
> > From: Eric Hyche
> > To: Sushant Grag ; Datatype-Dev
> > Sent: Wednesday, December 09, 2009 7:17 PM
> > Subject: RE: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-recorder.
> > 
> > +UINT32 CRIFFReader::GetFileDataSize()
> > +{
> > + CHXString strFilePath = m_pFilename;
> > + const char* szFileProtocol = "file://";
> > + UINT32 ulFiledataSize =0;
> > + 
> > + if( !strFilePath.Left(strlen(szFileProtocol)).CompareNoCase(szFileProtocol) )
> > + {
> > +     strFilePath = strFilePath.Mid(strlen(szFileProtocol));
> > +     struct stat fileInfo;
> > +     if(!stat(strFilePath, &fileInfo))
> > +     {
> > +         ulFiledataSize = fileInfo.st_size;
> > +     }
> > + }
> > + return ulFiledataSize;
> > +}
> > +
> > 
> > I did not mean do a C-library stat() on the file. The file object that
> > the RIFF readers uses will not always be a local file that you can call stat() on.
> > What I meant was QI the file object for IHXFileStat and then call IHXFileStat::Stat().
> > You will have to implement IHXFileStatResponse::StatDone().
> > 
> > Eric
> > 
> > >-----Original Message-----
> > >From: datatype-dev-bounces@helixcommunity.org [mailto:datatype-dev-bounces@helixcommunity.org] On
> > >Behalf Of Sushant Grag
> > >Sent: Wednesday, December 09, 2009 7:45 AM
> > >To: Datatype-Dev
> > >Subject: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file
> > >recorded by gnome-sound-recorder.
> > >
> > >Project: RealPlayer for Netbook
> > >
> > >Synopsis:
> > >
> > >Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-
> > >recorder.
> > >
> > >
> > >
> > >Overview:
> > >
> > >There is an issue with wav files which are recorded from ubuntu sound recorder.
> > >
> > >The calculated file duration in Realplayer for linux is much & much larger then original file duration
> > >
> > >eg: file has duration of 6secs & Realplayer shows more than 3hr 22 min.
> > >
> > >Reason behind is, sound recorder adds garbage value in data chunk which leads to very big value of
> > >m_ulChunkBodyLen calculated in riff.cpp around line 380
> > >
> > >            if ( (UINT32)getlong(buf) == m_ulFindChunkId )
> > >
> > >            {
> > >
> > >                // Found the chunk we were asked for
> > >
> > >                m_state = RS_Ready;
> > >
> > >                m_ulChunkBodyLen = GetLong(&buf[4]);
> > >
> > >                m_ulChunkSize = m_ulChunkBodyLen;
> > >
> > >Which cause a very higher value of duration.
> > >
> > >
> > >
> > >Now I have created two different functions in riff.cpp;
> > >
> > >CRIFFReader::GetFileDataSize() & CRIFFReader::GetCurrentFileOffset() in which I am getting the length
> > >of file & the file offset and calling these functions in function CWaveFileFormat::RIFFFindChunkDone()
> > >, case WS_FindDataChunkPending to set m_ulDataSizeInBytes if "len" is greater then
> > >"ulDataSizeInBytes".
> > >
> > >
> > >
> > >Files Modified:
> > >/cvsroot/datatype/common/util/riff.cpp
> > >
> > >/cvsroot/datatype/common/util/pub/riff.h
> > >
> > >/cvsroot/datatype/wav/fileformat/wvffplin.cpp
> > >
> > >
> > >
> > >Files Added:
> > >
> > >None
> > >
> > >
> > >
> > >Platforms and Profiles Affected:
> > >Linux
> > >
> > >Distribution Libraries Affected:
> > >None.
> > >
> > >Platforms and Profiles Build Verified:
> > >Bif: realplay_gtk_atlas_restricted_gold_1.2
> > >Profile: helix-client-moblin
> > >Target: player_all
> > >
> > >Branch:
> > >Atlas347, Atlas310, Atlas3_4_10, 401 Brizo, Head
> > >
> > >
> > >
> > >Files Attached:
> > >
> > >9840_diff.txt
> > >
> > >
> > >
> > >Thanks & Regards
> > >Sushant Garg
> > <9840_diff.txt>
> 
> Eric Hyche (ehyche@real.com)
> Principal Engineer
> RealNetworks, Inc.
> 
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From ehyche at real.com  Mon Jan  4 09:04:06 2010
From: ehyche at real.com (Eric Hyche)
Date: Mon Jan  4 16:30:33 2010
Subject: [Datatype-dev]: CR : TMAA-7YLAN6 -  Thumbnail not generated
In-Reply-To: 
References: 
Message-ID: 

Looks good.

On Jan 4, 2010, at 3:45 AM,   wrote:

> "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: ext-anugrah.2.kashari@nokia.com
> 
> Review By:  Ashish.As.Gupta@nokia.com
> 
> TSW-ID: TMAA-7YLAN6
> 
> Date : 04/01/2010
> 
> Project: SymbianMmf_wm
> 
> Synopsis:  Thumbnail not generated
> 
> Overview :  In thumbnail generation, decoded picture is not send to client when decoder is trying to decode picture is time synchronized mode. Time synchronization is not required for thumbnail generation therefore there is no need to set clock source.
> 
> Fix:  For TNE, when disabling post-processor, disable the clock source as well.
> 
> Files modified & changes 210Cays , Brizo420 and Head :
> /Datatype/mdf/video/renderer/mdfvideoadapter.cpp
> 
> Image Size and Heap Use impact: No major impact
> 
> Module Release testing (STIF) :  NA
> 
> Test case(s) Added : No
> 
> Memory leak check performed : Passed, No additional leaks introduced.
> 
> Platforms and Profiles Build Verified: helix-client-s60-52-mmf-mdf-dsp                                                                              
> 
> Platforms and Profiles Functionality verified: armv5
> 
> Branch : 210Cays, Brizo420 & Head :
> 
> CVS Diff: 
> Index: mdfvideoadapter.cpp
> ===================================================================
> RCS file: /cvsroot/datatype/mdf/video/renderer/mdfvideoadapter.cpp,v
> retrieving revision 1.3.2.102
> diff -u -w -r1.3.2.102 mdfvideoadapter.cpp
> --- mdfvideoadapter.cpp 30 Oct 2009 16:50:30 -0000      1.3.2.102
> +++ mdfvideoadapter.cpp 4 Jan 2010 08:38:19 -0000
> @@ -2517,6 +2517,7 @@
> void CMdfVideoAdapter::SetPostProcessing(HXBOOL bEnable)
> {
>     m_bDisablePostProcessor = !bEnable;
> +    m_bDisableVideoClock = !bEnable;
> }
> 
> void CMdfVideoAdapter::SetPictureReturn(HXBOOL bEnable)
> 
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From rajesh.rathinasamy at nokia.com  Mon Jan  4 09:16:03 2010
From: rajesh.rathinasamy at nokia.com (rajesh.rathinasamy@nokia.com)
Date: Mon Jan  4 16:42:48 2010
Subject: [datatype-dev] CR: Changes to fix [Bug 9762] It costs about 4
	sec	for some mov file
In-Reply-To: 
References: 
Message-ID: 

Hi Varun,
   When this CR is approved, can you please check in the changes to 210CayS and 420Brizo too ?

Thanks,
Rajesh.


________________________________
From: datatype-dev-bounces@helixcommunity.org [mailto:datatype-dev-bounces@helixcommunity.org] On Behalf Of ext Varun Kathuria
Sent: Monday, January 04, 2010 6:00 AM
To: porting-android@helixcommunity.org
Cc: datatype-dev@helixcommunity.org
Subject: [datatype-dev] CR: Changes to fix [Bug 9762] It costs about 4 sec for some mov file


Synopsis:
Changes to fix [Bug 9762] It costs about 4 sec for some mov file

Overview:
In android player, when we scan some mov files it takes more than 4 sec to scan files. The problem in these files are audio track have sample size of 4 & sample count is 5990384. When it tries to calculate audio tracksize from CQTTrack::ComputeTrackSize() then it takes 5990384 iterations to compute audio track size. We know that the audio track has generic sample size . Added code to calculate tracksize based on generic size in a CQTTrack::ComputeTrackSize() so that it can be calculated in 1 iteration rather than 5990384 iterations. Now it saves around 3850ms approx in android platform.

Files Added:
None

Files Modified:
/cvsroot/datatype/mp4/fileformat/qttrack.cpp
/cvsroot/datatype/mp4/fileformat/pub/qtatmmgs.h

Image Size and Heap Use impact (Client -Only):
None.

Platforms and Profiles Affected:
None

Distribution Libraries Affected:
None

Distribution library impact and planned action:
None

Platforms and Profiles Build Verified:
BIF branch  -> hxclient_3_6_1_atlas_restricted
Target(s)   -> android_all
Profile     -> helix-client-android-full
SYSTEM_ID   -> android-donut-arm-qsd_8x50

Branch
atlas310, atlas361, head, 401brizo

Files Attached:
diff_9762.txt

Thanks
Varun Kathuria
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100104/0d29cc82/attachment.html
From ehyche at real.com  Mon Jan  4 09:53:05 2010
From: ehyche at real.com (Eric Hyche)
Date: Mon Jan  4 17:19:30 2010
Subject: [datatype-dev] CR: Add movie fragments support to mp4fformat
In-Reply-To: <4B3C272C.80802@real.com>
References: <4B3C272C.80802@real.com>
Message-ID: <046D7BA3-3F83-4991-9FDC-3F272A443320@real.com>

These changes look good to me. Couple of questions/requests:

- can you add HX_ASSERT()'s when we encounter the
  unsupported cases?
- how does random access work when there is no mfra? Do
  we have to simply read through the file, looking for
  moof's?

Eric

On Dec 30, 2009, at 11:23 PM, Jamie Gordon wrote:

> Synopsis
> ========
> Adds basic support for moof fragments
> 
> Branches: HEAD (SERVER_CURRENT)
> Suggested Reviewer: eric or milko, shantha or dean
> 
> 
> Description
> ===========
> Adds fragments support. Currently Only enabled for server profiles.
> This is needed in order to support content created by Flash Live
> Encoder, and this is the only encoder I currently have that will create
> fragmented files so that is all I have tested with.
> 
> The various atom definitions are updated to add the various accessors
> and missing values and to make trun a PagingAtom. trun and tfhd had
> to depart a bit from the structure of the other atom classes, due to
> the way they are defined. Most of the values are optional, and present
> or not depending on the flags. So they can't use the packed struct for
> accessing, and need to be parsed all at once.
> 
> A new class CQT_TrackFragment_Manager is added to the atom managers
> which manages the fragments associated with a track. Another manager
> is also added, CQT_Sample_Manager, which manages the
> CQT_TrackFragment_Manager and the stbl managers and the incredible
> awkwardness of switching between stbl and fragments. The logic in
> QTTrack that handles/depends on the structure of stbl atoms was moved
> into this class when reading stbl samples.
> 
> I did not add handling or usage of mfra atom, as Adobe's encoder does
> not add it. It just makes seeking more efficient.
> 
> I did not add support for the case where the traf atom does not have a
> base offset. In that case, the base offset of the first fragment in a
> moof is the file offset of the moof, and then for each following
> fragment is the end of the previous fragment. This will require passing 
> the file offset all the way down, etc.
> 
> In case hint tracks are present in a fragmented file, they will be
> ignored. Hint tracks and fragments don't really work together since
> hint tracks reference samples by the absolute stbl sample number.
> 
> There was a change somewhat recently that changed from passing
> ATOMIZE_ALL to the atomization of the file root to instead get the file
> size and pass that. (This was added to fix/improve progressive download
> case.) This is a problem however, as it causes the atomizer to stop
> parsing too soon, after it gets to the mdat. I just ifdef'd that logic
> out for server builds as we really want to do a true atomize all, but it
> will probably need to be fixed properly for the client.
> 
> 
> Files Affected
> ==============
> datatype/mp4/fileformat/qtatmmgs.cpp
> datatype/mp4/fileformat/qtatmmgs_inline.h
> datatype/mp4/fileformat/qtffplin.cpp
> datatype/mp4/fileformat/qttrack.cpp
> datatype/mp4/fileformat/qttrkmgr.cpp
> datatype/mp4/fileformat/pub/iqttrack.h
> datatype/mp4/fileformat/pub/qtatmmgs.h
> datatype/mp4/fileformat/pub/qtatoms.h
> datatype/mp4/fileformat/pub/qtatoms_inline.h
> datatype/mp4/fileformat/pub/qtswtrack.h
> datatype/mp4/fileformat/pub/qttrack.h
> datatype/mp4/fileformat/pub/qttrkmgr.h
> datatype/mp4/payload/Umakefil
> 
> 
> Testing Performed
> =================
> - Streaming and seeking of fragmented files
> - Streaming and seeking of normal files
> - Client local playback and seeking of normal files (with fragments 
> disabled at build)
> 
> Platforms Tested: win32-i386-vc7
> Build verified: linux-rhel5-i686, sunos-5.10-sparc-server,
> win32-i386-vc7
> 
> 
> QA Hints
> ===============
> 
> Normal 3GP/MP4 playback needs to be spot checked as well as Flash Live
> Encoder content.
> 
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From jgordon at real.com  Mon Jan  4 11:11:12 2010
From: jgordon at real.com (Jamie Gordon)
Date: Mon Jan  4 18:37:34 2010
Subject: [datatype-dev] CR: Add movie fragments support to mp4fformat
In-Reply-To: <046D7BA3-3F83-4991-9FDC-3F272A443320@real.com>
References: <4B3C272C.80802@real.com>
	<046D7BA3-3F83-4991-9FDC-3F272A443320@real.com>
Message-ID: <4B423D50.4020503@real.com>

On 1/4/2010 9:53 AM, Eric Hyche wrote:
> These changes look good to me. Couple of questions/requests:
> 
> - can you add HX_ASSERT()'s when we encounter the
>   unsupported cases?
Yeah that's probably a good idea, I will do that.

> - how does random access work when there is no mfra? Do
>   we have to simply read through the file, looking for
>   moof's?
> 
Basically! We have to go through each sample until we find the right
time. This can be improved in the future for cases where you are
seeking back into time already played or parsed. I added much of what is
needed for this, storing fragment start times and a reverse seek, but it
is not complete or in use yet.

Thanks,
Jamie

> Eric
> 
> On Dec 30, 2009, at 11:23 PM, Jamie Gordon wrote:
> 
>> Synopsis
>> ========
>> Adds basic support for moof fragments
>>
>> Branches: HEAD (SERVER_CURRENT)
>> Suggested Reviewer: eric or milko, shantha or dean
>>
>>
>> Description
>> ===========
>> Adds fragments support. Currently Only enabled for server profiles.
>> This is needed in order to support content created by Flash Live
>> Encoder, and this is the only encoder I currently have that will create
>> fragmented files so that is all I have tested with.
>>
>> The various atom definitions are updated to add the various accessors
>> and missing values and to make trun a PagingAtom. trun and tfhd had
>> to depart a bit from the structure of the other atom classes, due to
>> the way they are defined. Most of the values are optional, and present
>> or not depending on the flags. So they can't use the packed struct for
>> accessing, and need to be parsed all at once.
>>
>> A new class CQT_TrackFragment_Manager is added to the atom managers
>> which manages the fragments associated with a track. Another manager
>> is also added, CQT_Sample_Manager, which manages the
>> CQT_TrackFragment_Manager and the stbl managers and the incredible
>> awkwardness of switching between stbl and fragments. The logic in
>> QTTrack that handles/depends on the structure of stbl atoms was moved
>> into this class when reading stbl samples.
>>
>> I did not add handling or usage of mfra atom, as Adobe's encoder does
>> not add it. It just makes seeking more efficient.
>>
>> I did not add support for the case where the traf atom does not have a
>> base offset. In that case, the base offset of the first fragment in a
>> moof is the file offset of the moof, and then for each following
>> fragment is the end of the previous fragment. This will require passing 
>> the file offset all the way down, etc.
>>
>> In case hint tracks are present in a fragmented file, they will be
>> ignored. Hint tracks and fragments don't really work together since
>> hint tracks reference samples by the absolute stbl sample number.
>>
>> There was a change somewhat recently that changed from passing
>> ATOMIZE_ALL to the atomization of the file root to instead get the file
>> size and pass that. (This was added to fix/improve progressive download
>> case.) This is a problem however, as it causes the atomizer to stop
>> parsing too soon, after it gets to the mdat. I just ifdef'd that logic
>> out for server builds as we really want to do a true atomize all, but it
>> will probably need to be fixed properly for the client.
>>
>>
>> Files Affected
>> ==============
>> datatype/mp4/fileformat/qtatmmgs.cpp
>> datatype/mp4/fileformat/qtatmmgs_inline.h
>> datatype/mp4/fileformat/qtffplin.cpp
>> datatype/mp4/fileformat/qttrack.cpp
>> datatype/mp4/fileformat/qttrkmgr.cpp
>> datatype/mp4/fileformat/pub/iqttrack.h
>> datatype/mp4/fileformat/pub/qtatmmgs.h
>> datatype/mp4/fileformat/pub/qtatoms.h
>> datatype/mp4/fileformat/pub/qtatoms_inline.h
>> datatype/mp4/fileformat/pub/qtswtrack.h
>> datatype/mp4/fileformat/pub/qttrack.h
>> datatype/mp4/fileformat/pub/qttrkmgr.h
>> datatype/mp4/payload/Umakefil
>>
>>
>> Testing Performed
>> =================
>> - Streaming and seeking of fragmented files
>> - Streaming and seeking of normal files
>> - Client local playback and seeking of normal files (with fragments 
>> disabled at build)
>>
>> Platforms Tested: win32-i386-vc7
>> Build verified: linux-rhel5-i686, sunos-5.10-sparc-server,
>> win32-i386-vc7
>>
>>
>> QA Hints
>> ===============
>>
>> Normal 3GP/MP4 playback needs to be spot checked as well as Flash Live
>> Encoder content.
>>
>> 
> 
> Eric Hyche (ehyche@real.com)
> Principal Engineer
> RealNetworks, Inc.
> 
> 

From jgordon at real.com  Mon Jan  4 12:13:15 2010
From: jgordon at real.com (Jamie Gordon)
Date: Mon Jan  4 19:39:42 2010
Subject: [datatype-dev] Checkin: Add movie fragments support to mp4fformat
Message-ID: <4B424BDB.9070200@real.com>

Synopsis
========
Adds basic support for moof fragments

Branches: HEAD (SERVER_CURRENT)
Reviewer: ehyche


Description
===========
Adds fragments support. Currently Only enabled for server profiles.
This is needed in order to support content created by Flash Live
Encoder, and this is the only encoder I currently have that will create
fragmented files so that is all I have tested with.

The various atom definitions are updated to add the various accessors
and missing values and to make trun a PagingAtom. trun and tfhd had
to depart a bit from the structure of the other atom classes, due to
the way they are defined. Most of the values are optional, and present
or not depending on the flags. So they can't use the packed struct for
accessing, and need to be parsed all at once.

A new class CQT_TrackFragment_Manager is added to the atom managers
which manages the fragments associated with a track. Another manager
is also added, CQT_Sample_Manager, which manages the
CQT_TrackFragment_Manager and the stbl managers and the incredible
awkwardness of switching between stbl and fragments. The logic in
QTTrack that handles/depends on the structure of stbl atoms was moved
into this class when reading stbl samples.

I did not add handling or usage of mfra atom, as Adobe's encoder does
not add it. It just makes seeking more efficient.

I did not add support for the case where the traf atom does not have a
base offset. In that case, the base offset of the first fragment in a
moof is the file offset of the moof, and then for each following
fragment is the end of the previous fragment. This will require passing
the file offset all the way down, etc.

In case hint tracks are present in a fragmented file, they will be
ignored. Hint tracks and fragments don't really work together since
hint tracks reference samples by the absolute stbl sample number.

There was a change somewhat recently that changed from passing
ATOMIZE_ALL to the atomization of the file root to instead get the file
size and pass that. (This was added to fix/improve progressive download
case.) This is a problem however, as it causes the atomizer to stop
parsing too soon, after it gets to the mdat. I just ifdef'd that logic
out for server builds as we really want to do a true atomize all, but it
will probably need to be fixed properly for the client.


Files Affected
==============
datatype/mp4/fileformat/qtatmmgs.cpp
datatype/mp4/fileformat/qtatmmgs_inline.h
datatype/mp4/fileformat/qtffplin.cpp
datatype/mp4/fileformat/qttrack.cpp
datatype/mp4/fileformat/qttrkmgr.cpp
datatype/mp4/fileformat/pub/iqttrack.h
datatype/mp4/fileformat/pub/qtatmmgs.h
datatype/mp4/fileformat/pub/qtatoms.h
datatype/mp4/fileformat/pub/qtatoms_inline.h
datatype/mp4/fileformat/pub/qtswtrack.h
datatype/mp4/fileformat/pub/qttrack.h
datatype/mp4/fileformat/pub/qttrkmgr.h
datatype/mp4/payload/Umakefil


Testing Performed
=================
- Streaming and seeking of fragmented files
- Streaming and seeking of normal files
- Client local playback and seeking of normal files (with fragments
disabled at build)

Platforms Tested: win32-i386-vc7
Build verified: linux-rhel5-i686, sunos-5.10-sparc-server,
win32-i386-vc7


QA Hints
===============

Normal 3GP/MP4 playback needs to be spot checked as well as Flash Live
Encoder content.



From gahluwalia at real.com  Mon Jan  4 23:09:59 2010
From: gahluwalia at real.com (Gurpreet)
Date: Tue Jan  5 06:36:22 2010
Subject: [datatype-dev] CN: Fix for Bug 9915 a particular mp3 file	cannot be
	played
In-Reply-To: 
References: <4B384955.7020604@real.com> <4B3849CB.4040901@real.com>
	
Message-ID: <4B42E5C7.8080105@real.com>

Thanks Eric,
I have done this for all not just Android.
This is checked into at310, at361, head and brizo 401.

Thanks,
Gurpreet

Eric Hyche wrote:
> I think it's safe to increase this to 16k on all platforms, not just Android.
>
> Eric
>
> On Dec 28, 2009, at 1:01 AM, Gurpreet wrote:
>
>   
>> Forgot to attach diff.
>> PFA.
>>
>> Thanks,
>> Gurpreet
>>
>> Gurpreet wrote:
>>     
>>> Synopsis:
>>> Fix for Bug 9915 a particular mp3 file cannot be played
>>>
>>> Overview:
>>> This particular mp3 file mentioned in the bug is not recognized by the 
>>> android player.
>>> Reason for that is:
>>> Frame Sync bits are at position 16128 where as we check till 512.
>>> There fore for android we have increased the scan bytes value to 16 KB.
>>>
>>> Files Modified:
>>> /common/system/recognizer.cpp
>>>
>>> Image Size and Heap Use impact (Client -Only):
>>> None
>>>
>>> Platforms and Profiles Build Verified:
>>> BIF branch            -> atlas 310, atlas 361, brizo  401, head
>>> Target(s)                -> android_all
>>> Profile                    -> helix-client-android-surf_8x50
>>> SYSTEM_ID        -> android-donut-arm.eabi
>>>
>>> Files Attached::
>>> common.diff
>>>
>>> Thanks & Best Regards,
>>> Gurpreet
>>>
>>>       
>> 
>>     
>
> Eric Hyche (ehyche@real.com)
> Principal Engineer
> RealNetworks, Inc.
>
>
>
>   



From ehyche at real.com  Tue Jan  5 08:50:32 2010
From: ehyche at real.com (Eric Hyche)
Date: Tue Jan  5 16:19:37 2010
Subject: [datatype-dev] CR: Add ISO-based file format for RealMedia
Message-ID: <7ECCEA249B7CDC49A079EC0075E999AA07D84D8522@SEAMBX.corp.real.com>

Description
------------------------------------------------
For the NGV project, Sujeet and I are experimenting with a new ISO-based file format to contain RealAudio and RealVideo. This CR contains the player-related changes necessary to play this new file format.

These changes are only on the HEAD and are all cordoned off by the use of the HELIX_FEATURE_RMFF_ISO_BASED feature define. Therefore, these changes should have no effect on any current builds or products. In order to make use of these changes, this feature define would have to be added to a profile.

Files Modified
------------------------------------------------
See attached diff files. 

Branches
------------------------------------------------
HEAD only



Eric Hyche
Principal Engineer, RealNetworks
ehyche@real.com
-------------- next part --------------
Index: hxmime.h
===================================================================
RCS file: /cvsroot/common/include/hxmime.h,v
retrieving revision 1.3
diff -u -w -r1.3 hxmime.h
--- hxmime.h	21 Apr 2009 14:10:07 -0000	1.3
+++ hxmime.h	5 Jan 2010 16:25:37 -0000
@@ -61,6 +61,9 @@
 #define REALAUDIO_PD_MIME_TYPE        "audio/x-pn-realaudio-pd"
 #define REALVIDEO_MIME_TYPE           "video/x-pn-realvideo"
 #define REALVIDEO_ENCRYPTED_MIME_TYPE "video/x-pn-realvideo-encrypted"
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+#define REALVIDEO_UNPACKETIZED_MIME_TYPE "video/x-pn-realvideo-unpacketized"
+#endif
 #define IMAGEMAP_MIME_TYPE            "image_map/x-pn-realvideo"
 #define IMAGEMAP_ENCRYPTED_MIME_TYPE  "image_map/x-pn-realvideo-encrypted"
 #define SYNCMM_MIME_TYPE              "syncMM/x-pn-realvideo"
-------------- next part --------------
Index: qtatmmgs.cpp
===================================================================
RCS file: /cvsroot/datatype/mp4/fileformat/qtatmmgs.cpp,v
retrieving revision 1.67
diff -u -w -r1.67 qtatmmgs.cpp
--- qtatmmgs.cpp	4 Jan 2010 20:13:40 -0000	1.67
+++ qtatmmgs.cpp	5 Jan 2010 16:26:29 -0000
@@ -48,6 +48,9 @@
 #include "mp4desc.h"
 #include "hxstrutl.h"
 #include "iso639.h"
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+#include "rmngdefs.h"
+#endif
 
 #include "rtptypes.h"
 #include "rtsputil.h"
@@ -2807,6 +2810,17 @@
                         SkipToAvcC(m_pOpaqueData, ulSampleDescEntrySize);
                     }
                     break;
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+                case QT_rv41:
+                    if (ulSampleDescEntrySize > sizeof(CQT_stsd_Atom::VideoRVArrayEntry))
+                    {
+                        CQT_stsd_Atom::VideoRVArrayEntry* pEntry = (CQT_stsd_Atom::VideoRVArrayEntry*) pSampleDescEntry;
+                        m_ulFrameWidth  = CQTAtom::GetUI16((UINT8*) pEntry->pWidth);
+                        m_ulFrameHeight = CQTAtom::GetUI16((UINT8*) pEntry->pHeight);
+                        m_pOpaqueData   = pEntry->pOpaqueData;
+                    }
+                    break;
+#endif
                 case QT_sqcp:
                     if (ulSampleDescEntrySize >
                         sizeof(CQT_stsd_Atom::AudioQCELPArrayEntry))
@@ -2935,6 +2949,18 @@
                             SkipToAvcC(m_pOpaqueData, ulSampleDescEntrySize);                                   
                         }
                     }
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+                    else if (pSampleDescManager->GetDataFormat() == QT_rv41)
+                    {
+                        if (ulSampleDescEntrySize > sizeof(CQT_stsd_Atom::VideoRVArrayEntry))
+                        {
+                            CQT_stsd_Atom::VideoRVArrayEntry* pEntry = (CQT_stsd_Atom::VideoRVArrayEntry*) pSampleDescEntry;
+                            m_ulFrameWidth  = CQTAtom::GetUI16((UINT8*) pEntry->pWidth);
+                            m_ulFrameHeight = CQTAtom::GetUI16((UINT8*) pEntry->pHeight);
+                            m_pOpaqueData   = pEntry->pOpaqueData;
+                        }
+                    }
+#endif
                     break;
 		case QT_soun:
 		    if (ulSampleDescEntrySize >=
@@ -3158,6 +3184,11 @@
 	    case QT_avc1:
 		pMediaName = "X-HX-AVC1";
 		break;
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+            case QT_rv41:
+                pMediaName = HX_RMNG_STREAM_MIME_TYPE_RV10_SUFFIX;
+                break;
+#endif
 	    default:
 		// nothing to do
 		break;
Index: qtffplin.cpp
===================================================================
RCS file: /cvsroot/datatype/mp4/fileformat/qtffplin.cpp,v
retrieving revision 1.83
diff -u -w -r1.83 qtffplin.cpp
--- qtffplin.cpp	4 Jan 2010 20:13:40 -0000	1.83
+++ qtffplin.cpp	5 Jan 2010 16:26:29 -0000
@@ -91,6 +91,9 @@
 #include "metainfokeys.h"
 #include "metautil.h"
 #include "hxurl.h"
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+#include "rmngdefs.h"
+#endif
 
 /****************************************************************************
  * Constants
@@ -120,11 +123,23 @@
 #define ONM_MOV	    "QuickTime Files (*.mov, *.qt)"
 #define ONM_F4V	    "F4V Files (*.f4v)"
 
-const char* const CQTFileFormat::zm_pFileMimeTypes[] = {"application/x-pn-quicktime-stream", "audio/3gpp", "video/3gpp", "audio/x-m4a", "video/mp4", "audio/mp4", "video/3gpp2", "audio/mpeg4-generic", NULL};
-
-const char* const CQTFileFormat::zm_pFileExtensions[] = {EXT_MOV, EXT_MP4, EXT_3GP, EXT_3G2, EXT_M4A,EXT_F4V, NULL};
-
-const char* const CQTFileFormat::zm_pFileOpenNames[] = {ONM_MOV, ONM_MP4, ONM_3GP, ONM_F4V, NULL};
+const char* const CQTFileFormat::zm_pFileMimeTypes[] = {"application/x-pn-quicktime-stream", "audio/3gpp", "video/3gpp", "audio/x-m4a", "video/mp4", "audio/mp4", "video/3gpp2", "audio/mpeg4-generic",
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+                                                        HX_RMNG_MIME_TYPE,
+#endif
+                                                        NULL};
+
+const char* const CQTFileFormat::zm_pFileExtensions[] = {EXT_MOV, EXT_MP4, EXT_3GP, EXT_3G2, EXT_M4A,EXT_F4V,
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+                                                         HX_RMNG_EXTENSION,
+#endif
+                                                         NULL};
+
+const char* const CQTFileFormat::zm_pFileOpenNames[] = {ONM_MOV, ONM_MP4, ONM_3GP, ONM_F4V,
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+                                                        HX_RMNG_FILE_OPEN_DESC,
+#endif
+                                                        NULL};
 
 const char* const CQTFileFormat::zm_pPacketFormats[]  = {"rtp", "rdt", NULL};
 
Index: qtpacketizerfct.cpp
===================================================================
RCS file: /cvsroot/datatype/mp4/fileformat/qtpacketizerfct.cpp,v
retrieving revision 1.12
diff -u -w -r1.12 qtpacketizerfct.cpp
--- qtpacketizerfct.cpp	5 Oct 2009 20:50:08 -0000	1.12
+++ qtpacketizerfct.cpp	5 Jan 2010 16:26:29 -0000
@@ -402,6 +402,13 @@
 	case QT_FTYPE_EMC:
 	    retVal = HXR_NOTIMPL;
 	    break;
+
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+        case QT_FTYPE_RMNG:
+            retVal = HXR_NO_DATA;
+            break;
+#endif
+
 	default:
 	    retVal = HXR_FAIL;
 	    break;
Index: qttrack.cpp
===================================================================
RCS file: /cvsroot/datatype/mp4/fileformat/qttrack.cpp,v
retrieving revision 1.42
diff -u -w -r1.42 qttrack.cpp
--- qttrack.cpp	4 Jan 2010 20:13:40 -0000	1.42
+++ qttrack.cpp	5 Jan 2010 16:26:29 -0000
@@ -65,6 +65,8 @@
 #include "sdpchunk.h"
 #include "sdppyldinfo.h"
 #include "metautil.h"
+#include "hxpacketflags.h"
+#include "rule2flg.h"
 
 
 /****************************************************************************
@@ -81,6 +83,7 @@
     , m_pPacketAssembler(NULL)
     , m_pClassFactory(NULL)
     , m_ulTrackID(0)
+    , m_ulDataFormat0(0)
     , m_ulReadSize(0)
     , m_ulReadPageSize(0)
     , m_ulReadPageOffset(0)
@@ -355,6 +358,7 @@
     ULONG32 ulHeight = 0;
     ULONG32 ulFrameWidth = 0;
     ULONG32 ulFrameHeight = 0;
+    UINT32  ulDataFormat  = 0;
     HX_RESULT retVal = HXR_OK;
 
     if (m_TrackInfo.GetHeader(pHeader) == HXR_OK)
@@ -574,6 +578,14 @@
     }
 #endif
 
+    // Get the data format from the sample description manager
+    if (m_SampleDesc.EstablishByIdx(0))
+    {
+        // Get the first data forma in the sample description box
+        ulDataFormat = m_SampleDesc.GetDataFormat();
+        // Save this data format
+        m_ulDataFormat0 = ulDataFormat;
+    }
     // Set ASM Rule Book
     if (SUCCEEDED(retVal))
     {
@@ -647,6 +659,18 @@
 	}
 	else
 #endif	// QTCONFIG_SERVER
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+        if (ulDataFormat == QT_rv41)
+        {
+            // Set the ASMRuleBook for RealVideo
+            SafeSprintf(pRuleBook, 256,
+                        "#($Bandwidth >= %lu),Priority=9,AverageBandwidth=%lu,PNMKeyFrameRule=T;"
+                        "#($Bandwidth >= %lu),OnDepend=\"0\",Priority=5,AverageBandwidth=0,PNMNonKeyFrameRule=T;"
+                        "#($Bandwidth <  %lu),Priority=9,timestampdelivery=T,DropByN=T,PNMThinningRule=T;",
+                        ulAvgBitRate, ulAvgBitRate, ulAvgBitRate, ulAvgBitRate);
+        }
+        else
+#endif
 	{
 	    // Player Side
 	    SafeSprintf(pRuleBook, 128, "Marker=%d;Marker=%d;",
@@ -664,6 +688,34 @@
 	{
 	    pHeader->SetPropertyCString("ASMRuleBook", pASMRuleBook);
 	}
+
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+        if (ulDataFormat == QT_rv41)
+        {
+            // Compute the number of bytes needed for the RuleToFlag map
+            // One UINT16 for the number of rules and 3 UINT16's for the rules.
+            UINT32 ulMapBytes = sizeof(UINT16) + 3 * sizeof(UINT32);
+            // We need to set the Rule2Flag map.
+            BYTE* pRuleToFlagMap = new BYTE [ulMapBytes];
+            if (pRuleToFlagMap)
+            {
+                BYTE*  pBuf     = pRuleToFlagMap;
+                UINT32 ulBufLen = ulMapBytes;
+                // Pack the number of rules
+                PackUINT16BEInc(&pBuf, &ulBufLen, 3);
+                // Pack flags for rule 0
+                PackUINT16BEInc(&pBuf, &ulBufLen, HX_KEYFRAME_FLAG);
+                // Pack flags for rule 1
+                PackUINT16BEInc(&pBuf, &ulBufLen, 0);
+                // Pack flags for rule 2
+                PackUINT16BEInc(&pBuf, &ulBufLen, HX_KEYFRAME_FLAG);
+                // Set this into the stream header
+                SetBufferPropertyCCF(pHeader, RULE_TO_FLAG_MAP_PROPERTY, pRuleToFlagMap, ulMapBytes, (IUnknown*) m_pClassFactory);
+            }
+            HX_VECTOR_DELETE(pRuleToFlagMap);
+        }
+#endif
+
     }
 
     HX_RELEASE(pASMRuleBook);
@@ -1219,6 +1271,15 @@
     {
 	if (status == HXR_OK)
 	{
+            // Set the ASM rule number
+            UINT16 usASMRuleNum = m_uBaseRuleNumber + QTASM_MARKER_ON_RULE;
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+            if (m_ulDataFormat0 && m_ulDataFormat0 == QT_rv41)
+            {
+                // For RealVideo, if this is a keyframe, then rule 0. Non-keyframe: rule 1 (from the base rule)
+                usASMRuleNum = (m_SampleManager.IsOnSyncSample() ? m_uBaseRuleNumber : (m_uBaseRuleNumber + 1));
+            }
+#endif
 	    status = ((IHXRTPPacket*) pPacket)->SetRTP(
 		pBuffer,
 		ulTime,
@@ -1227,7 +1288,7 @@
 		m_SampleManager.IsOnSyncSample() ? 
 		    (HX_ASM_SWITCH_ON | HX_ASM_SWITCH_OFF) :
 		    HX_ASM_SWITCH_OFF,			    // ASM Flags
-		m_uBaseRuleNumber + QTASM_MARKER_ON_RULE);
+		usASMRuleNum);
 	}
 
 	pBuffer->Release();
Index: qttrkmgr.cpp
===================================================================
RCS file: /cvsroot/datatype/mp4/fileformat/qttrkmgr.cpp,v
retrieving revision 1.25
diff -u -w -r1.25 qttrkmgr.cpp
--- qttrkmgr.cpp	4 Jan 2010 20:13:40 -0000	1.25
+++ qttrkmgr.cpp	5 Jan 2010 16:26:30 -0000
@@ -1440,6 +1440,12 @@
             m_FType = QT_FTYPE_MP4;
             break;
 
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+                    case QT_rmng:    
+                        m_FType = QT_FTYPE_RMNG;
+                        break;
+#endif
+
         default:
             if (ulCompBrandIdx < ulNumCompBrands)
             {
Index: pub/qtatoms.h
===================================================================
RCS file: /cvsroot/datatype/mp4/fileformat/pub/qtatoms.h,v
retrieving revision 1.38
diff -u -w -r1.38 qtatoms.h
--- pub/qtatoms.h	4 Jan 2010 20:13:41 -0000	1.38
+++ pub/qtatoms.h	5 Jan 2010 16:26:30 -0000
@@ -206,6 +206,9 @@
     QT_alac = QT_ENCODE_TYPE('a', 'l', 'a', 'c'),
     QT_alaw = QT_ENCODE_TYPE('a', 'l', 'a', 'w'),    
     QT_ulaw = QT_ENCODE_TYPE('u','l','a','w'),
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+    QT_rv41 = QT_ENCODE_TYPE('r', 'v', '4', '1'),
+#endif
     // /-->> 3GPP Timed Text box types:
     QT_text = QT_ENCODE_TYPE('t', 'e', 'x', 't'),
     QT_tx3g = QT_ENCODE_TYPE('t', 'x', '3', 'g'),
@@ -233,6 +236,7 @@
 typedef enum
 {
     QT_isom = QT_ENCODE_TYPE('i', 's', 'o', 'm'),
+    QT_iso2 = QT_ENCODE_TYPE('i', 's', 'o', '2'),
     QT_3gp4 = QT_ENCODE_TYPE('3', 'g', 'p', '4'),
     QT_3gp5 = QT_ENCODE_TYPE('3', 'g', 'p', '5'),
     QT_mp41 = QT_ENCODE_TYPE('m', 'p', '4', '1'),
@@ -245,6 +249,9 @@
     QT_3gr6 = QT_ENCODE_TYPE('3', 'g', 'r', '6'),
     QT_3gs6 = QT_ENCODE_TYPE('3', 'g', 's', '6'),
     QT_MSNV = QT_ENCODE_TYPE('M', 'S', 'N', 'V')
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+    ,QT_rmng = QT_ENCODE_TYPE('r', 'm', 'n', 'g')
+#endif
 } QTKnownBrandType;
 
 /****************************************************************************
@@ -3341,6 +3348,14 @@
 	UINT8 pDecoderSpecificInfo[1];
     } PACKING;
 
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+    class VideoRVArrayEntry : public VideoArrayEntry
+    {
+    public:
+        UINT8 pOpaqueData[1];
+    } PACKING;
+#endif
+
     class AudioALACArrayEntry : public AudioArrayEntry
     {
     public:
Index: pub/qttrack.h
===================================================================
RCS file: /cvsroot/datatype/mp4/fileformat/pub/qttrack.h,v
retrieving revision 1.20
diff -u -w -r1.20 qttrack.h
--- pub/qttrack.h	4 Jan 2010 20:13:41 -0000	1.20
+++ pub/qttrack.h	5 Jan 2010 16:26:30 -0000
@@ -272,6 +272,7 @@
     IHXCommonClassFactory* m_pClassFactory;
 
     ULONG32 m_ulTrackID;
+    UINT32  m_ulDataFormat0;
 
     ULONG32 m_ulReadSize;
     ULONG32 m_ulReadPageSize;
Index: pub/qttrkmgr.h
===================================================================
RCS file: /cvsroot/datatype/mp4/fileformat/pub/qttrkmgr.h,v
retrieving revision 1.15
diff -u -w -r1.15 qttrkmgr.h
--- pub/qttrkmgr.h	4 Jan 2010 20:13:41 -0000	1.15
+++ pub/qttrkmgr.h	5 Jan 2010 16:26:30 -0000
@@ -59,6 +59,9 @@
     QT_FTYPE_QT,
     QT_FTYPE_MP4,
     QT_FTYPE_EMC
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+    ,QT_FTYPE_RMNG
+#endif
 } QT_FTYPE;
 
 typedef enum
-------------- next part --------------
? rvsh.cpp
? rvsh.h
Index: Umakefil
===================================================================
RCS file: /cvsroot/datatype/mp4/filewriter/Umakefil,v
retrieving revision 1.11
diff -u -w -r1.11 Umakefil
--- Umakefil	20 Apr 2009 17:24:05 -0000	1.11
+++ Umakefil	5 Jan 2010 16:26:47 -0000
@@ -17,6 +17,7 @@
 	'client/audiosvc/pub',
 	'client/common/container/pub',
 	'datatype/include',
+	'datatype/rm/include',
 	'datatype/common/util/pub',
 	'datatype/common/filewriter/pub',
 	'datatype/rm/audio/common/pub',
@@ -63,6 +64,9 @@
 
 project.AddSources('3gpmeta.cpp')
 
+if project.IsDefined("HELIX_FEATURE_RMFF_ISO_BASED"):
+    project.AddSources('rvsh.cpp')
+
 project.AddExportedFunctions('RMACreateInstance')
 
 DLLTarget('mp4wrtr')
Index: mp4atomgateway.cpp
===================================================================
RCS file: /cvsroot/datatype/mp4/filewriter/mp4atomgateway.cpp,v
retrieving revision 1.3
diff -u -w -r1.3 mp4atomgateway.cpp
--- mp4atomgateway.cpp	16 Oct 2009 16:46:17 -0000	1.3
+++ mp4atomgateway.cpp	5 Jan 2010 16:26:47 -0000
@@ -35,10 +35,25 @@
 #include "mp4wrtr.h"
 #include "mp4sm.h"
 #include "mp4atomgateway.h"
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+#include "rmngdefs.h"
+#endif
 
-const char* CMP4FileWriter::zm_pFileMimeTypes[] = {"audio/X-RN-MP4-RAWAU", NULL};
-const char* CMP4FileWriter::zm_pFileExtensions[] = {"m4a", "mp4", "3gp", "3g2", NULL};
-const char* CMP4FileWriter::zm_pFileOpenNames[] = {"MP4 Files (.mp4;.m4a;.3gp;.3g2)", NULL};
+const char* CMP4FileWriter::zm_pFileMimeTypes[] = {"audio/X-RN-MP4-RAWAU",
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+                                                   HX_RMNG_MIME_TYPE,
+#endif
+                                                   NULL};
+const char* CMP4FileWriter::zm_pFileExtensions[] = {"m4a", "mp4", "3gp", "3g2", 
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+                                                    HX_RMNG_EXTENSION,
+#endif
+                                                    NULL};
+const char* CMP4FileWriter::zm_pFileOpenNames[] = {"MP4 Files (.mp4;.m4a;.3gp;.3g2)",
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+                                                   HX_RMNG_FILE_OPEN_DESC,
+#endif
+                                                   NULL};
 
 // Build out an stsd entry for a specific stream
 HX_RESULT CMP4AtomsGateway::BuildSpecificStsdEntry(CMP4StreamMixer* pM4AStreamMixer,
Index: mp4atoms.h
===================================================================
RCS file: /cvsroot/datatype/mp4/filewriter/mp4atoms.h,v
retrieving revision 1.16
diff -u -w -r1.16 mp4atoms.h
--- mp4atoms.h	23 Oct 2009 09:47:54 -0000	1.16
+++ mp4atoms.h	5 Jan 2010 16:26:48 -0000
@@ -1654,6 +1654,73 @@
     UINT32   m_ulAVCCDataSize;
 };
 
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+
+// atom:      rv41
+// container: stsd
+// purpose:   RealVideo sample description entry
+class CMP4Atom_rv41 : public CMP4Atom_VisualSampleEntry
+{
+public:
+    CMP4Atom_rv41() : CMP4Atom_VisualSampleEntry(MP4_BUILD_ATOMID('r','v','4','1'))
+    {
+        m_pRVOpaqueData      = NULL;
+        m_ulRVOpaqueDataSize = 0;
+    }
+
+    ~CMP4Atom_rv41()
+    {
+        HX_VECTOR_DELETE(m_pRVOpaqueData);
+        m_ulRVOpaqueDataSize = 0;        
+    }
+
+    STDMETHOD_(UINT32,GetCurrentSize) (THIS_ HXBOOL bIncludeChildren = FALSE)
+    {
+        UINT32 len = CMP4Atom_VisualSampleEntry::GetCurrentSize(bIncludeChildren) + m_ulRVOpaqueDataSize;
+        return len;
+    }
+
+    STDMETHOD(WriteToBuffer) (THIS_ UCHAR*& pBuffer, HXBOOL bIncludeChildren = FALSE)
+    {
+        HX_RESULT retVal = HXR_OK;
+
+        if (pBuffer)
+        {
+            // Write out the base VisualSampleEntry class
+            CMP4Atom_VisualSampleEntry::WriteToBuffer(pBuffer, FALSE);
+            // Write out the RV Opaque Data
+            CMP4Atom::WriteToBufferAndInc(pBuffer, m_pRVOpaqueData, m_ulRVOpaqueDataSize);
+            // Write out any children
+            if (bIncludeChildren)
+            {
+                ChildrenWriteToBuffer(pBuffer);
+            }
+        }
+        
+        return retVal;
+    }
+
+    void SetRVOpaqueData(BYTE* pData, UINT32 ulSize) 
+    {
+        if (pData && ulSize)
+        {
+            HX_VECTOR_DELETE(m_pRVOpaqueData);
+            m_pRVOpaqueData = new BYTE [ulSize];
+            if (m_pRVOpaqueData)
+            {
+                memcpy(m_pRVOpaqueData, pData, ulSize);
+                m_ulRVOpaqueDataSize = ulSize;
+            }
+        }
+    }
+
+private:
+    BYTE*  m_pRVOpaqueData;
+    UINT32 m_ulRVOpaqueDataSize;
+};
+
+#endif /* #if defined(HELIX_FEATURE_RMFF_ISO_BASED) */
+
 // atom:      mp4v
 // container: stsd
 // purpose:   mp4v video sample description entry
Index: mp4sm.cpp
===================================================================
RCS file: /cvsroot/datatype/mp4/filewriter/mp4sm.cpp,v
retrieving revision 1.22
diff -u -w -r1.22 mp4sm.cpp
--- mp4sm.cpp	23 Dec 2009 03:05:44 -0000	1.22
+++ mp4sm.cpp	5 Jan 2010 16:26:48 -0000
@@ -41,6 +41,9 @@
 #include "mp4sm.h"
 #include "mp4atoms.h"
 #include "asmrulep.h"
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+#include "rmngdefs.h"
+#endif
 
 #include "m4amdatoms.h"
 #include "pspmeta.h"
@@ -1352,6 +1355,38 @@
     return retVal;
 }
 
+STDMETHODIMP_(HXBOOL) CMP4StreamMixer::ShouldIgnorePacket(IHXPacket* pPacket)
+{
+    HXBOOL bRet = FALSE;
+
+    if (pPacket)
+    {
+        // Get the stream number
+        UINT32 ulStreamNum = (UINT32) pPacket->GetStreamNumber();
+        // Sanity check
+        if (m_pStreamInfo && ulStreamNum < m_ulStreamCount)
+        {
+            // Get the ASM rule number
+            UINT32 ulASMRuleNum = (UINT32) pPacket->GetASMRuleNumber();
+            // Sanity check
+            if (m_pStreamInfo->m_pASMRuleInfo && ulASMRuleNum < m_pStreamInfo->m_ulNumASMRules)
+            {
+                // Is this a "thinning" rule? In RV streams, the rm session format generates
+                // a thiining rule which applies to keyframes. Therefore, the ASM Mux will duplicate
+                // keyframe packets - the first will belong to the keyframe rule, and the second to
+                // the thinning rule. We want to ignore the thinning rule packets.
+                if (m_pStreamInfo->m_pASMRuleInfo[ulASMRuleNum].m_bPNMThinning)
+                {
+                    // This is a thinning rule packet, so we should ignore it.
+                    bRet = TRUE;
+                }
+            }
+        }
+    }
+
+    return bRet;
+}
+
 HX_RESULT CMP4StreamMixer::BuildMP4Atoms()
 {
     HX_RESULT retVal = HXR_OUTOFMEMORY;
@@ -1444,6 +1479,15 @@
 
                 m_eMetaFlavor = META_3GPP;
             }
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+            else
+            if (stricmp(fileExt, HX_RMNG_EXTENSION_WITH_DOT) == 0)
+            {
+                pFtyp->SetMajorBrand(HX_RMNG_MAJOR_BRAND);
+                pFtyp->SetCompatibleBrands(HX_RMNG_COMPATIBLE_BRANDS);
+                pFtyp->SetMinorVersion(0);
+            }
+#endif
             else
             if (    stricmp(fileExt, ".m4a") == 0
                 ||  stricmp(fileExt, ".m4p") == 0 )
@@ -4616,6 +4660,11 @@
         case MP4_BUILD_ATOMID('a', 'm', 'r', ' '):
                 return BuildAMRStsdEntry(pStsd, usStreamNum);
                 break;
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+        case MP4_BUILD_ATOMID('r', 'v', '4', '1'):
+                return BuildRVStsdEntry(pStsd, usStreamNum);
+                break;
+#endif
         default:
                 return HXR_INVALID_PARAMETER;
                 break;
@@ -4921,6 +4970,45 @@
     return retVal;
 }
 
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+
+HX_RESULT CMP4StreamMixer::BuildRVStsdEntry( CMP4Atom_stsd* pStsd, UINT16 usStreamNum )
+{
+    IHXValues* pStreamHeader = m_pStreamInfo[usStreamNum].m_pStreamHeader;
+    HX_RESULT retVal = HXR_OUTOFMEMORY;
+    IHXBuffer* pDecoderInfo = NULL;
+
+    retVal = pStreamHeader->GetPropertyBuffer("DecoderInfo", pDecoderInfo);
+
+    if( SUCCEEDED( retVal ) )
+    {
+        UCHAR* pBuf = pDecoderInfo->GetBuffer();
+        UINT32 len  = pDecoderInfo->GetSize();
+
+        CMP4Atom_rv41* pRV41 = new CMP4Atom_rv41();
+        if (pRV41)
+        {
+            retVal = HXR_OK;
+            
+            UINT32 ulWidth = 0, ulHeight = 0;
+            m_pStreamInfo[usStreamNum].m_pStreamHeader->GetPropertyULONG32("Width", ulWidth);
+            m_pStreamInfo[usStreamNum].m_pStreamHeader->GetPropertyULONG32("Height", ulHeight);
+            // Set Width and Height - these are located in base VisualSampleEntry class
+            pRV41->SetWidth((UINT16) ulWidth);
+            pRV41->SetHeight((UINT16) ulHeight);
+            // Set the RV Opaque Data
+            pRV41->SetRVOpaqueData(pBuf, len);
+
+            pStsd->AddChild(pRV41);
+        }
+        HX_RELEASE(pDecoderInfo);
+    }
+
+    return retVal;
+}
+
+#endif /* #if defined(HELIX_FEATURE_RMFF_ISO_BASED) */
+
 HX_RESULT CMP4StreamMixer::UpdateTrackDuration( UINT16 usStreamNo, UINT32 ulDuration )
 {
 
Index: mp4sm.h
===================================================================
RCS file: /cvsroot/datatype/mp4/filewriter/mp4sm.h,v
retrieving revision 1.14
diff -u -w -r1.14 mp4sm.h
--- mp4sm.h	9 Nov 2009 19:51:43 -0000	1.14
+++ mp4sm.h	5 Jan 2010 16:26:48 -0000
@@ -97,6 +97,7 @@
     STDMETHOD(SetPacket)             (THIS_ IHXPacket* pPacket                          );
     STDMETHOD(StreamDone)            (THIS_ UINT16 unStreamNumber                       );
     STDMETHOD(MapThroughSwitchGroup) (THIS_ IHXPacket* pPacket, REF(IHXPacket*) rpPacket);
+    STDMETHOD_(HXBOOL,ShouldIgnorePacket) (THIS_ IHXPacket* pPacket                          );
 
     // XXXAQL
     HX_RESULT StartBuildStsdEntry( CMP4Atom_stsd* pStsd, UINT16 usStreamNum );
@@ -256,6 +257,9 @@
     HX_RESULT BuildAVC1StsdEntry( CMP4Atom_stsd* pStsd, UINT16 usStreamNum );
     HX_RESULT BuildH263StsdEntry( CMP4Atom_stsd* pStsd, UINT16 usStreamNum );
     HX_RESULT BuildAMRStsdEntry( CMP4Atom_stsd* pStsd, UINT16 usStreamNum );
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+    HX_RESULT BuildRVStsdEntry( CMP4Atom_stsd* pStsd, UINT16 usStreamNum );
+#endif
 
     // 3GP Utilities
     void Meta3GP_SetLanguageEncoding(C3GPAtom_LangBase* pAtom, const char* propertySpec = 0);
Index: mp4wrtr.cpp
===================================================================
RCS file: /cvsroot/datatype/mp4/filewriter/mp4wrtr.cpp,v
retrieving revision 1.12
diff -u -w -r1.12 mp4wrtr.cpp
--- mp4wrtr.cpp	7 May 2009 15:41:10 -0000	1.12
+++ mp4wrtr.cpp	5 Jan 2010 16:26:48 -0000
@@ -73,6 +73,9 @@
 #include "ra10sh.h"
 #include "m4avsh.h"
 #include "avcsh.h"
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+#include "rvsh.h"
+#endif
 #include "h263sh.h"
 #include "amrsh.h"
 
@@ -724,6 +727,22 @@
                             }
                         }
 
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+                        // RealVideo stream handler
+                        if( FAILED( retVal ) )
+                        {
+                            HX_RELEASE( pTempHandler );
+                            retVal = HXR_OUTOFMEMORY;
+                            pTempHandler = new CRVStreamHandler( m_pContext, m_pStreamMixer );
+                            
+                            if( pTempHandler )
+                            {
+                                pTempHandler->AddRef();
+                                retVal = TestForMimeSupport( pTempHandler, pStreamMimeType );
+                            }
+                        }
+#endif /* #if defined(HELIX_FEATURE_RMFF_ISO_BASED) */
+
                         //h.263 stream handler
                         if( FAILED( retVal ) )
                         {
@@ -824,6 +843,12 @@
 
     if (m_State == PacketsReady && m_pStreamMixer && pPacket)
     {
+        // Clear the return value
+        retVal = HXR_OK;
+        // Should we ignore this packet?
+        HXBOOL bIgnorePacket = m_pStreamMixer->ShouldIgnorePacket(pPacket);
+        if (!bIgnorePacket)
+        {
         // We need to map this packet through the switch group
         // to the proper stream number
         IHXPacket* pMappedPacket = NULL;
@@ -847,6 +872,7 @@
         }
         HX_RELEASE(pMappedPacket);
     }
+    }
         
     return retVal;
 }
Index: pub/mp4fwplg.h
===================================================================
RCS file: /cvsroot/datatype/mp4/filewriter/pub/mp4fwplg.h,v
retrieving revision 1.3
diff -u -w -r1.3 mp4fwplg.h
--- pub/mp4fwplg.h	7 May 2009 15:41:11 -0000	1.3
+++ pub/mp4fwplg.h	5 Jan 2010 16:26:48 -0000
@@ -92,6 +92,7 @@
     STDMETHOD(SetPacket)             (THIS_ IHXPacket* pPacket                          ) PURE;
     STDMETHOD(StreamDone)            (THIS_ UINT16 unStreamNumber                       ) PURE;
     STDMETHOD(MapThroughSwitchGroup) (THIS_ IHXPacket* pPacket, REF(IHXPacket*) rpPacket) PURE;
+    STDMETHOD_(HXBOOL,ShouldIgnorePacket) (THIS_ IHXPacket* pPacket                          ) PURE;
 };
 
 
-------------- next part --------------
? pub/rv_payload_format.h
? pub/rv_payload_format_unpacketized.h
Index: pub/rvxpyld.h
===================================================================
RCS file: /cvsroot/datatype/rm/video/common/pub/rvxpyld.h,v
retrieving revision 1.7
diff -u -w -r1.7 rvxpyld.h
--- pub/rvxpyld.h	10 May 2005 14:43:29 -0000	1.7
+++ pub/rvxpyld.h	5 Jan 2010 16:27:25 -0000
@@ -39,6 +39,7 @@
 /****************************************************************************
  *  Includes
  */
+#include "rv_payload_format.h"
 #include "hxalloc.h"
 
 class IHXUnknown;
@@ -49,7 +50,7 @@
 /****************************************************************************
  *  RVXPayloadFormat
  */
-class RVXPayloadFormat : public IHXPayloadFormatObject
+class RVXPayloadFormat : public IHXRVPayloadFormatObject
 {
   public:
     RVXPayloadFormat(IHX20MemoryAllocator* pOutputAllocator);
@@ -80,24 +81,18 @@
                           REF(IHXPacket*) pPacket);
     STDMETHOD(Flush) (THIS);
     
-    /*
-     *  Custom public interface methods
-     */
-    HX_RESULT CreateHXCodecPacket(HXCODEC_DATA* &pHXCodecDataOut);
-    void DisposeHXCodecPacket(HXCODEC_DATA* pHXCodecData);
-
-    ULONG32 GetBitstreamHeaderSize(void) { return m_ulBitStrmHeaderSize; }
-    const HX_MOF* GetBitstreamHeader(void) { return ((HX_MOF*) m_pBitStrmHeader); }
-    const HX_MOF* GetBitstreamHeaderNetOrder(void);
-
-    HXBOOL IsSureStream(void);
-    HX_RESULT GetFrameRate(UINT16 usASMRule, REF(float) rFrameRate);
-
-    HXBOOL IsKeyFramePacket(IHXPacket* pPacket);
-    HXBOOL IsFirstKeyFramePacket(IHXPacket* pPacket);
-    void SetVelocity(INT32 lVel);
-    void SetKeyFrameMode(HXBOOL bMode);
-
+    // IHXRVPayloadFormatObject methods
+    STDMETHOD(CreateHXCodecPacket)                       (THIS_ REF(HXCODEC_DATA*) rpCodecData);
+    STDMETHOD(DisposeHXCodecPacket)                      (THIS_ HXCODEC_DATA* pHXCodecData);
+    STDMETHOD_(ULONG32,GetBitstreamHeaderSize)           (THIS);
+    STDMETHOD_(const HX_MOF*,GetBitstreamHeader)         (THIS);
+    STDMETHOD_(const HX_MOF*,GetBitstreamHeaderNetOrder) (THIS);
+    STDMETHOD_(HXBOOL,IsSureStream)                      (THIS);
+    STDMETHOD(GetFrameRate)                              (THIS_ UINT16 usASMRule, REF(float) rfFrameRate);
+    STDMETHOD_(HXBOOL,IsKeyFramePacket)                  (THIS_ IHXPacket* pPacket);
+    STDMETHOD_(HXBOOL,IsFirstKeyFramePacket)             (THIS_ IHXPacket* pPacket);
+    STDMETHOD_(void,SetVelocity)                         (THIS_ INT32 lVel);
+    STDMETHOD_(void,SetKeyFrameMode)                     (THIS_ HXBOOL bMode);
   private:
     void _Close(void);
 
-------------- next part --------------
Index: rvxvdfmt.cpp
===================================================================
RCS file: /cvsroot/datatype/rm/video/renderer/rvxvdfmt.cpp,v
retrieving revision 1.40
diff -u -w -r1.40 rvxvdfmt.cpp
--- rvxvdfmt.cpp	13 Aug 2008 06:01:31 -0000	1.40
+++ rvxvdfmt.cpp	5 Jan 2010 16:27:57 -0000
@@ -93,6 +93,10 @@
 #include "bincount.h"
 #include "hxprefs.h"
 #include "hxprefutil.h"
+#include "hxmime.h"
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+#include "rv_payload_format_unpacketized.h"
+#endif
 
 #include "rvxvideo.h"
 
@@ -233,14 +237,43 @@
     // Create Packet Assembler
     if (SUCCEEDED(retVal))
     {
+        // Get the mime type
+        IHXBuffer* pMimeType = NULL;
+        retVal = pHeader->GetPropertyCString("MimeType", pMimeType);
+        if (SUCCEEDED(retVal))
+        {
+            // Set the return value
+            retVal = HXR_FAIL;
+            // Get the mime type string
+            const char* pszMimeType = (const char*) pMimeType->GetBuffer();
+            if (pszMimeType)
+            {
+                // Set the return value
 	retVal = HXR_OUTOFMEMORY;
-	m_pRssm = new RVXPayloadFormat(m_pInputAllocator);
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+                // Is this the unpacketized mime type?
+                if (strcmp(pszMimeType, REALVIDEO_UNPACKETIZED_MIME_TYPE) == 0)
+                {
+                    // Create the payload format object for unpacketized data
+                    m_pRssm = (IHXRVPayloadFormatObject*) new CHXRVPayloadFormatUnpacketized(m_pInputAllocator);
+                }
+                else
+                {
+                    // Create the payload format for RV-Packetized data
+                    m_pRssm = (IHXRVPayloadFormatObject*) new RVXPayloadFormat(m_pInputAllocator);
+                }
+#else /* #if defined(HELIX_FEATURE_RMFF_ISO_BASED) */
+                // Create the payload format for RV-Packetized data
+                m_pRssm = (IHXRVPayloadFormatObject*) new RVXPayloadFormat(m_pInputAllocator);
+#endif /* #if defined(HELIX_FEATURE_RMFF_ISO_BASED) */
 	if (m_pRssm)
 	{
 	    m_pRssm->AddRef();
 	    retVal = HXR_OK;
 	}
     }
+        }
+    }
     
     // Create Decoder
     if (SUCCEEDED(retVal))
@@ -1473,7 +1506,7 @@
         pCodecData->dataLength  = 0;
         pCodecData->data        = NULL;
         pCodecData->timestamp   = m_ulLastTimestamp;
-        pCodecData->sequenceNum = m_ulLastSequenceNumber + 1;
+        pCodecData->sequenceNum = (UINT16) m_ulLastSequenceNumber + 1;
         pCodecData->flags       = 0; // don't care
         pCodecData->lastPacket  = TRUE;
         pCodecData->numSegments = 1;
Index: rvxvideo.cpp
===================================================================
RCS file: /cvsroot/datatype/rm/video/renderer/rvxvideo.cpp,v
retrieving revision 1.22
diff -u -w -r1.22 rvxvideo.cpp
--- rvxvideo.cpp	10 Dec 2007 18:02:47 -0000	1.22
+++ rvxvideo.cpp	5 Jan 2010 16:27:57 -0000
@@ -123,6 +123,9 @@
 {
     REALVIDEO_MIME_TYPE,
     REALVIDEO_MULTIRATE_MIME_TYPE,
+#if defined(HELIX_FEATURE_RMFF_ISO_BASED)
+    REALVIDEO_UNPACKETIZED_MIME_TYPE,
+#endif
     NULL
 };
 
Index: pub/rvxvdfmt.h
===================================================================
RCS file: /cvsroot/datatype/rm/video/renderer/pub/rvxvdfmt.h,v
retrieving revision 1.16
diff -u -w -r1.16 rvxvdfmt.h
--- pub/rvxvdfmt.h	21 Jul 2008 13:43:41 -0000	1.16
+++ pub/rvxvdfmt.h	5 Jan 2010 16:27:57 -0000
@@ -49,6 +49,7 @@
 #include "hxformt.h"
 #include "rvxpyld.h"
 #include "rvxvdec.h"
+#include "rv_payload_format.h"
 
 /****************************************************************************
  *  Globals
@@ -178,7 +179,7 @@
     void _Reset(void);
     void ReleaseDecodedPacket(HXCODEC_DATA* &pDecodedData);
 
-    RVXPayloadFormat* m_pRssm;
+    IHXRVPayloadFormatObject* m_pRssm;
 
     CHXMemoryAllocator* m_pInputAllocator;
 
-------------- next part --------------
/* ***** 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 "hxcom.h"
#include "hxcomm.h"
#include "chxpckts.h"
#include "hxassert.h"

#include "mp4atoms.h"
#include "mp4sm.h"
#include "rvsh.h"
#include "hxmime.h"

#include "rmfftype.h"
#include "netbyte.h"   /* common/util/pub/netbyte.h, dwtohost */

//#include "mp4desc.h"    /* for parsing es descriptor/channel count */
    
// These are the mime types we support
const char* CRVStreamHandler::m_pszFileMimeTypes[] =
{
    REALVIDEO_UNPACKETIZED_MIME_TYPE,
    NULL
};
const char* CRVStreamHandler::m_pszFileExtensions[] =
{
    NULL
};
const char* CRVStreamHandler::m_pszFileOpenNames[] =
{
    NULL
};

// CRVStreamHandler code
CRVStreamHandler::CRVStreamHandler( IUnknown* pContext, IMP4StreamMixer* pMixer )
{
    m_lRefCount = 0;
    m_unStreamNumber = 0;

    HX_ASSERT(pMixer);
    pMixer->AddRef();
    m_pStreamMixer = pMixer;

    HX_ASSERT(pContext);
    pContext->AddRef();
    m_pContext = pContext;

    m_pCommonClassFactory = NULL;
}

CRVStreamHandler::~CRVStreamHandler()
{
    HX_RELEASE( m_pStreamMixer );
    HX_RELEASE( m_pContext );
    HX_RELEASE( m_pCommonClassFactory );
}

STDMETHODIMP CRVStreamHandler::QueryInterface( REFIID riid, void** ppvObj )
{
    // dont support, for now
    return HXR_NOINTERFACE;
}

STDMETHODIMP_(ULONG32) CRVStreamHandler::AddRef()
{
    return InterlockedIncrement( &m_lRefCount );
}

STDMETHODIMP_(ULONG32) CRVStreamHandler::Release()
{
    if( InterlockedDecrement( &m_lRefCount ) > 0 )
    {
	return m_lRefCount;
    }
    delete this;
    return 0;
}

STDMETHODIMP CRVStreamHandler::GetFormatInfo( const char*** pppFileMimeTypes, const char*** pppFileExtensions, const char*** pppFileOpenNames )
{
    if( pppFileMimeTypes )
    {
	*pppFileMimeTypes = m_pszFileMimeTypes;
    }
    if( pppFileExtensions )
    {
	*pppFileExtensions = m_pszFileExtensions;
    }
    if( pppFileOpenNames )
    {
	*pppFileOpenNames = m_pszFileOpenNames;
    }
    
    return HXR_OK;
}

// InitStreamHandler; this is called after the mp4 filewriter
// has determined it has a stream that actually matches our supported
// mime types, and allows us to do any initialization that would be
// inappropriate in the constructor (such as memory allocation)
STDMETHODIMP CRVStreamHandler::InitStreamHandler()
{
    HX_RESULT retVal;
    
    retVal = m_pContext->QueryInterface( IID_IHXCommonClassFactory, (void**) &m_pCommonClassFactory );

    return retVal;
}

STDMETHODIMP CRVStreamHandler::SetFileHeader( IHXValues* pHeader )
{
    // We dont need the fileheader at all
    return HXR_OK;
}

// SetStreamHeader; called when the stream header for this stream is available
STDMETHODIMP CRVStreamHandler::SetStreamHeader( IHXValues* pHeader )
{
    HX_RESULT retVal = HXR_OK;
    
    UINT32 ulStreamNumber;
    
    pHeader->GetPropertyULONG32("StreamNumber", ulStreamNumber);
    m_unStreamNumber = (UINT16) ulStreamNumber;


    IHXBuffer* pOpaqueData = NULL;
    UINT8* ucDecoderInfo = NULL;

    retVal = pHeader->GetPropertyBuffer("OpaqueData", pOpaqueData);

    UCHAR* pBuffer = pOpaqueData->GetBuffer();
    UINT32 ulLen = pOpaqueData->GetSize();

    IHXBuffer* pDecoderInfoBuffer = NULL;
    if (SUCCEEDED(retVal))
    {
	retVal = m_pCommonClassFactory->CreateInstance( IID_IHXBuffer, (void**) &pDecoderInfoBuffer );
    }

    if (SUCCEEDED(retVal))
    {
        pDecoderInfoBuffer->Set(pBuffer, ulLen);
        pHeader->SetPropertyBuffer("DecoderInfo", pDecoderInfoBuffer );
    }

    HX_RELEASE(pDecoderInfoBuffer);
    HX_RELEASE(pOpaqueData);

    if (SUCCEEDED(retVal))
    {
        // Indicate this is a video track with avc1 sample format
        pHeader->SetPropertyULONG32( "TrackType", MP4_BUILD_ATOMID('v','i','d','e') );
        // May have to parse the opaque data to know which codec. For now, assume 'rv41'
        pHeader->SetPropertyULONG32( "SampleFormat", MP4_BUILD_ATOMID('r','v','4','1') );

	m_pStreamMixer->SetStreamHeader( pHeader );
    }

    return retVal;
}

// SetPacket; called every time a packet comes in
STDMETHODIMP CRVStreamHandler::SetPacket( IHXPacket* pPacket )
{
    HX_RESULT retVal = HXR_FAIL;
    if( pPacket )
    {
	// pass through
	retVal = m_pStreamMixer->SetPacket( pPacket );
    }
    return HXR_OK;
}

// StreamDone; called after the final SetPacket() call for this stream
STDMETHODIMP CRVStreamHandler::StreamDone()
{
    m_pStreamMixer->StreamDone( m_unStreamNumber );
    return HXR_OK;
}

-------------- next part --------------
/* ***** 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 ***** */

#ifndef RVSH_H
#define RVSH_H

#include "mp4fwplg.h"

typedef _INTERFACE IHXCommonClassFactory IHXCommonClassFactory;

class CRVStreamHandler : public IMP4StreamHandler
{
public:
    CRVStreamHandler( IUnknown* pContext, IMP4StreamMixer* pMixer );
    ~CRVStreamHandler();
    
    /*
     * IUnknown
     */
    STDMETHOD(QueryInterface)   ( THIS_ REFIID riid, void** ppvObj );
    STDMETHOD_(ULONG32,AddRef)  ( THIS );
    STDMETHOD_(ULONG32,Release) ( THIS );

    /*
     * IMP4StreamHandler
     */
    STDMETHOD(GetFormatInfo)    ( THIS_
                                  const char*** /*OUT*/ pFileMimeTypes,
                                  const char*** /*OUT*/ pFileExtensions,
                                  const char*** /*OUT*/ pFileOpenNames
                                );
    
    STDMETHOD(InitStreamHandler) ( THIS );
    
    STDMETHOD(SetFileHeader)    ( THIS_ IHXValues* pHeader );
    STDMETHOD(SetStreamHeader)  ( THIS_ IHXValues* pHeader );
    STDMETHOD(SetPacket)        ( THIS_ IHXPacket* pPacket );
    
    STDMETHOD(StreamDone)       ( THIS );

private:
    static const char* m_pszFileMimeTypes[];
    static const char* m_pszFileExtensions[];
    static const char* m_pszFileOpenNames[];

    LONG32   m_lRefCount;
    UINT16   m_unStreamNumber;

    IMP4StreamMixer* m_pStreamMixer;

    IUnknown* m_pContext;
    IHXCommonClassFactory* m_pCommonClassFactory;
};

       

#endif /* #ifndef RVSH_H */
-------------- next part --------------
/* ***** BEGIN LICENSE BLOCK ***** 
 * 
 * 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): 
 *
 * ***** END LICENSE BLOCK ***** */ 

#ifndef RMNGDEFS_H
#define RMNGDEFS_H

// File extension for the ISO-based file format
#define HX_RMNG_EXTENSION          "rmng"
#define HX_RMNG_EXTENSION_WITH_DOT ".rmng"
// Mime type for the ISO-based file format
#define HX_RMNG_MIME_TYPE "video/x-pn-realmediang"
// Description for file open dialogs
#define HX_RMNG_FILE_OPEN_DESC "RealMedia Next Generation (*.rmng)"
// Mime type for unpacketized RealVideo 10 in this container
#define HX_RMNG_STREAM_MIME_TYPE_RV10 "video/x-pn-realvideo-unpacketized"
// Same as mime type above, but just with suffix
#define HX_RMNG_STREAM_MIME_TYPE_RV10_SUFFIX "x-pn-realvideo-unpacketized"
// Major brand for the ISO-based file format
#define HX_RMNG_MAJOR_BRAND "rmng"
// Compatible brands for the ISO-based file format
#define HX_RMNG_COMPATIBLE_BRANDS "iso2"
// Codec 4cc for RealAudio 10
#define HX_RMNG_4CC_REALAUDIO_10          0x72616163  // 'raac'
#define HX_RMNG_4CC_STRING_REALAUDIO_10   "raac"
// Codec 4cc for RealVideo 10
#define HX_RMNG_4CC_REALVIDEO_10          0x72763431  // 'rv41'
#define HX_RMNG_4CC_STRING_REALVIDEO_10   "rv41"
// Codec 4cc for RealVideo NGV
#define HX_RMNG_4CC_REALVIDEO_NGV         0x72766E67  // 'rvng'
#define HX_RMNG_4CC_STRING_REALVIDEO_NGV  "rvng"
// Producer output type
#define HX_RMNG_PRODUCER_OUTPUT_TYPE "rmng"

#endif /* #ifndef RMNGDEFS_H */
-------------- next part --------------
/* ***** BEGIN LICENSE BLOCK ***** 
 * 
 * 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): 
 *
 * ***** END LICENSE BLOCK ***** */ 

#ifndef RV_PAYLOAD_FORMAT_H
#define RV_PAYLOAD_FORMAT_H

#include "hxtypes.h"
#include "hxcom.h"
#include "hxformt.h"
#include "hxcodec.h"
#include "ihxpckts.h"

/****************************************************************************
 * 
 *  Interface:
 * 
 *      IHXRVPayloadFormatObject
 * 
 *  Purpose:
 * 
 *	Object that knows how to properly convert data into a particular
 *	payload format
 * 
 *  IID_IHXRVPayloadFormatObject:
 * 
 *      {6C723E29-5C2B-4271-8FF4-E72F96EF5F60}
 * 
 */
DEFINE_GUID(IID_IHXRVPayloadFormatObject, 0x6c723e29, 0x5c2b, 0x4271, 0x8f, 0xf4, 0xe7,
            0x2f, 0x96, 0xef, 0x5f, 0x60);

#undef  INTERFACE
#define INTERFACE  IHXRVPayloadFormatObject

DECLARE_INTERFACE_(IHXRVPayloadFormatObject, IHXPayloadFormatObject)
{
    // IUnknown metods
    STDMETHOD(QueryInterface)   (THIS_ REFIID riid, void** ppvObj) PURE;
    STDMETHOD_(ULONG32,AddRef)  (THIS) PURE;
    STDMETHOD_(ULONG32,Release) (THIS) PURE;

    // IHXPayloadFormatObject methods
    STDMETHOD(Init)            (THIS_ IUnknown* pContext, HXBOOL bPacketize) PURE;
    STDMETHOD(Close)           (THIS) PURE;
    STDMETHOD(Reset)           (THIS) PURE;
    STDMETHOD(SetStreamHeader) (THIS_ IHXValues* pHeader) PURE;
    STDMETHOD(GetStreamHeader) (THIS_ REF(IHXValues*) pHeader) PURE;
    STDMETHOD(SetPacket)       (THIS_ IHXPacket* pPacket) PURE;
    STDMETHOD(GetPacket)       (THIS_ REF(IHXPacket*) pPacket) PURE;
    STDMETHOD(Flush)           (THIS) PURE;

    // IHXRVPayloadFormatObject methods
    STDMETHOD(CreateHXCodecPacket)                       (THIS_ REF(HXCODEC_DATA*) rpCodecData) PURE;
    STDMETHOD(DisposeHXCodecPacket)                      (THIS_ HXCODEC_DATA* pHXCodecData) PURE;
    STDMETHOD_(ULONG32,GetBitstreamHeaderSize)           (THIS) PURE;
    STDMETHOD_(const HX_MOF*,GetBitstreamHeader)         (THIS) PURE;
    STDMETHOD_(const HX_MOF*,GetBitstreamHeaderNetOrder) (THIS) PURE;
    STDMETHOD_(HXBOOL,IsSureStream)                      (THIS) PURE;
    STDMETHOD(GetFrameRate)                              (THIS_ UINT16 usASMRule, REF(float) rfFrameRate) PURE;
    STDMETHOD_(HXBOOL,IsKeyFramePacket)                  (THIS_ IHXPacket* pPacket) PURE;
    STDMETHOD_(HXBOOL,IsFirstKeyFramePacket)             (THIS_ IHXPacket* pPacket) PURE;
    STDMETHOD_(void,SetVelocity)                         (THIS_ INT32 lVel) PURE;
    STDMETHOD_(void,SetKeyFrameMode)                     (THIS_ HXBOOL bMode) PURE;
};

#endif  /* #ifndef RV_PAYLOAD_FORMAT_H */
-------------- next part --------------
/* ***** BEGIN LICENSE BLOCK ***** 
 * 
 * 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): 
 *
 * ***** END LICENSE BLOCK ***** */ 

#ifndef RV_PAYLOAD_FORMAT_UNPACKETIZED_H
#define RV_PAYLOAD_FORMAT_UNPACKETIZED_H

#include "rv_payload_format.h"
#include "hxalloc.h"

class IHXUnknown;
class CRVXHeader;

class CHXRVPayloadFormatUnpacketized : public IHXRVPayloadFormatObject
{
public:
    CHXRVPayloadFormatUnpacketized(IHX20MemoryAllocator* pOutputAllocator);
    ~CHXRVPayloadFormatUnpacketized();

    // IUnknown methods
    STDMETHOD(QueryInterface)   (THIS_ REFIID riid, void** ppvObj);
    STDMETHOD_(ULONG32,AddRef)  (THIS);
    STDMETHOD_(ULONG32,Release) (THIS);

    // IHXPayloadFormatObject methods
    STDMETHOD(Init)            (THIS_ IUnknown* pContext, HXBOOL bPacketize);
    STDMETHOD(Close)           (THIS);
    STDMETHOD(Reset)           (THIS);
    STDMETHOD(SetStreamHeader) (THIS_ IHXValues* pHeader);
    STDMETHOD(GetStreamHeader) (THIS_ REF(IHXValues*) pHeader);
    STDMETHOD(SetPacket)       (THIS_ IHXPacket* pPacket);
    STDMETHOD(GetPacket)       (THIS_ REF(IHXPacket*) pPacket);
    STDMETHOD(Flush)           (THIS);

    // IHXRVPayloadFormatObject methods
    STDMETHOD(CreateHXCodecPacket)                       (THIS_ REF(HXCODEC_DATA*) rpCodecData);
    STDMETHOD(DisposeHXCodecPacket)                      (THIS_ HXCODEC_DATA* pHXCodecData);
    STDMETHOD_(ULONG32,GetBitstreamHeaderSize)           (THIS);
    STDMETHOD_(const HX_MOF*,GetBitstreamHeader)         (THIS);
    STDMETHOD_(const HX_MOF*,GetBitstreamHeaderNetOrder) (THIS);
    STDMETHOD_(HXBOOL,IsSureStream)                      (THIS);
    STDMETHOD(GetFrameRate)                              (THIS_ UINT16 usASMRule, REF(float) rfFrameRate);
    STDMETHOD_(HXBOOL,IsKeyFramePacket)                  (THIS_ IHXPacket* pPacket);
    STDMETHOD_(HXBOOL,IsFirstKeyFramePacket)             (THIS_ IHXPacket* pPacket);
    STDMETHOD_(void,SetVelocity)                         (THIS_ INT32 lVel);
    STDMETHOD_(void,SetKeyFrameMode)                     (THIS_ HXBOOL bMode);
private:
    void          _Close(void);
    HX_RESULT     SetAssemblerHeader(IHXValues* pHeader);
    HX_RESULT     SetAssemblerPacket(IHXPacket* pPacket);

    INT32                     m_lRefCount;
    IUnknown*                 m_pContext;
    IHXCommonClassFactory*    m_pCommonClassFactory;
    IHX20MemoryAllocator*     m_pOutputAllocator;
    IHXValues*                m_pStreamHeader;
    CRVXHeader*               m_pRVHeader;
    HXCODEC_DATA*             m_pCodecData;
    UINT32*                   m_pulBitStreamHeader;
    UINT32                    m_ulBitStreamHeaderSize;
    UINT16                    m_usSequenceNumber;
    HXBOOL                    m_bFlushed;
    HXBOOL                    m_bPacketize;
    INT32                     m_lPlaybackVelocity;
    HXBOOL                    m_bKeyFrameMode;
};

#endif  /* #ifndef RV_PAYLOAD_FORMAT_UNPACKETIZED_H */
From Yury.Ramanovich at nokia.com  Tue Jan  5 09:42:18 2010
From: Yury.Ramanovich at nokia.com (Yury.Ramanovich@nokia.com)
Date: Tue Jan  5 17:09:41 2010
Subject: [datatype-dev] RE: RESEND CR needed: CPHU-7YMRTM,
 ou1cimx1#218155 - crash during AVI file playback
Message-ID: 

seems like dec18 check-in got lost...; Checked in this change to 210Cays again today;

BR
Yury

_____________________________________________
From: Ramanovich Yury (Nokia-D/Dallas)
Sent: Friday, December 18, 2009 3:32 PM
To: Ramanovich Yury (Nokia-D/Dallas); 'datatype-dev@helixcommunity.org'
Subject: RE: RESEND CR needed: CPHU-7YMRTM, ou1cimx1#218155 - crash during AVI file playback


Checked in to 210Cays

BR
Yury

_____________________________________________
From: Ramanovich Yury (Nokia-D/Dallas)
Sent: Friday, December 18, 2009 1:52 PM
To: datatype-dev@helixcommunity.org
Subject: FW: RESEND CR needed: CPHU-7YMRTM, ou1cimx1#218155 - crash during AVI file playback


If no objections, will check this in shortly to 210Cays

BR
Yury

_____________________________________________
From: Ramanovich Yury (Nokia-D/Dallas)
Sent: Thursday, December 17, 2009 3:26 PM
To: datatype-dev@helixcommunity.org
Subject: RESEND CR needed: CPHU-7YMRTM, ou1cimx1#218155 - crash during AVI file playback




"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:  yury.ramanovich@nokia.com, dushyant.vipradas@nokia.com

Reviewed by:

Date: 12/16/2009

Project: SymbianMmf_wm

ErrorId: CPHU-7YMRTM, ou1cimx1#218155

Synopsis: crash during AVI file playback

Overview: AVI stream index was not set (NULL) for AVI v1.0 files, which lead to crash during CAVIIndex::GetMaxChunkSize()

Solution: set AVI stream index for all AVI v1.0 files


Files Added:
None.

Files Modified:
datatype/avi/fileformat/aviffpln.cpp


Image Size and Heap Use impact: minor

Module Release testing (STIF) :  MRT subset

Test case(s) Added  :  No.

Memory leak check performed : Yes. No new leaks introduced

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

helix-client-s60-52-mmf-mdf-dsp

Platforms and Profiles Functionality verified: armv5, winscw

Branch: cay210, brizo420, HEAD

 << File: diff.txt >>


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100105/3820a5cf/attachment.html
From ext-sudhir.1.mishra at nokia.com  Tue Jan  5 11:34:42 2010
From: ext-sudhir.1.mishra at nokia.com (ext-sudhir.1.mishra@nokia.com)
Date: Tue Jan  5 19:01:11 2010
Subject: [datatype-dev] CR: JPKN-7YXDS7 - Performance: File logging
	enabled in release build of Helix
In-Reply-To: 
References: <0D5D8A0728D4FC43BB0A2393C9AE8F17277837B3C7@NOK-EUMSG-02.mgdnok.nokia.com>
	
Message-ID: <0D5D8A0728D4FC43BB0A2393C9AE8F1727799CFC7C@NOK-EUMSG-02.mgdnok.nokia.com>

Checked into 210 cays, 420brizo & head.

Warm regards,
Sudhir 

-----Original Message-----
From: ext Eric Hyche [mailto:ehyche@real.com] 
Sent: Friday, December 25, 2009 2:31 PM
To: Mishra Sudhir.1 (EXT-Sasken/Dallas)
Cc: datatype-dev@helixcommunity.org
Subject: Re: [datatype-dev] CR: JPKN-7YXDS7 - Performance: File logging enabled in release build of Helix

Looks good.

On Dec 24, 2009, at 12:39 PM,  wrote:

> "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:  ext-sudhir.1.mishra@nokia.com
>  
> Reviewed by: Ashish.As.Gupta@nokia.com
>  
> Date:  12/23/2009
>  
> Project:  datatype
>  
> Error Id:  JPKN-7YXDS7
>  
> Synopsis:  Performance: File logging enabled in release build of Helix
>  
> Overview:       
>         In release build,  file logging of Helix slows down hxmetadataeng.dll several ms per method call.
>         The reason is, if HELIX_FEATURE_LOGLEVEL_NONE is not defined in release build, then file logging is enabled. This causes the performance to degrade.
>            
> Solution: 
>         Enable file logging in debug mode only further constrained by HELIX_FEATURE_LOGLEVEL_NONE flag.
>  
> Files added:  None
>  
> Files modified:  
> /cvsroot/datatype/tools/metadataeng/engine/pub/hxmetadatalog.h
>  
> Image size and heap use impact:  Minimal
>  
> Module release testing (STIF):  NA
>  
> Test case(s) added:  No
>  
> Memory leak check performed:  NA
>  
> Branch:  210 Cays, 420 brizo and head
>  
> CVS Diff:
>  
> Index: tools/metadataeng/engine/pub/hxmetadatalog.h
> ===================================================================
> RCS file: 
> /cvsroot/datatype/tools/metadataeng/engine/pub/hxmetadatalog.h,v
> retrieving revision 1.1.2.2
> diff -u -w -r1.1.2.2 hxmetadatalog.h
> --- tools/metadataeng/engine/pub/hxmetadatalog.h        24 Jan 2008 17:03:33 -0000      1.1.2.2
> +++ tools/metadataeng/engine/pub/hxmetadatalog.h        24 Dec 2009 14:59:49 -0000
> @@ -51,7 +51,7 @@
> #define _HX_METADATA_LOG_H_
>  
>  
> -#ifdef HELIX_FEATURE_LOGLEVEL_NONE
> +#if defined(HELIX_FEATURE_LOGLEVEL_NONE) || (!defined(_DEBUG))
>  
> #if defined(__GNUC__)
> #define FileLogNull(args...)
> @@ -61,7 +61,7 @@
>  
> #define MD_LOG FileLogNull
>  
> -#else // HELIX_FEATURE_LOGLEVEL_NONE
> +#else // defined(HELIX_FEATURE_LOGLEVEL_NONE) || (!defined(_DEBUG))
>  
>  
> #define MD_LOG FileLog
>  
>  
>  
>  
>  
>  
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From jgordon at real.com  Tue Jan  5 13:59:16 2010
From: jgordon at real.com (Jamie Gordon)
Date: Tue Jan  5 21:25:26 2010
Subject: [datatype-dev] CR: Add ISO-based file format for RealMedia
In-Reply-To: <7ECCEA249B7CDC49A079EC0075E999AA07D84D8522@SEAMBX.corp.real.com>
References: <7ECCEA249B7CDC49A079EC0075E999AA07D84D8522@SEAMBX.corp.real.com>
Message-ID: <4B43B634.5060308@real.com>

Looks good.

> +            // One UINT16 for the number of rules and 3 UINT16's for the rules.
> +            UINT32 ulMapBytes = sizeof(UINT16) + 3 * sizeof(UINT32);

I think you wanted sizeof(UINT16) here rather than sizeof(UINT32).

In the RV renderer, there is a new "unpacketized" payload format. What 
is the difference is between the payload formats?


On 1/5/2010 8:50 AM, Eric Hyche wrote:
> Description
> ------------------------------------------------
> For the NGV project, Sujeet and I are experimenting with a new ISO-based file format to contain RealAudio and RealVideo. This CR contains the player-related changes necessary to play this new file format.
> 
> These changes are only on the HEAD and are all cordoned off by the use of the HELIX_FEATURE_RMFF_ISO_BASED feature define. Therefore, these changes should have no effect on any current builds or products. In order to make use of these changes, this feature define would have to be added to a profile.
> 
> Files Modified
> ------------------------------------------------
> See attached diff files. 
> 
> Branches
> ------------------------------------------------
> HEAD only
> 
> 
> 
> Eric Hyche
> Principal Engineer, RealNetworks
> ehyche@real.com
> 

From vkathuria at real.com  Tue Jan  5 22:06:14 2010
From: vkathuria at real.com (Varun Kathuria)
Date: Wed Jan  6 05:32:32 2010
Subject: [datatype-dev] [Resending]CR: Changes to fix [Bug 9762] It costs
	about 4 secfor some mov file
Message-ID: 

Skipped content of type multipart/alternative-------------- next part --------------
Index: qttrack.cpp
===================================================================
RCS file: /cvsroot/datatype/mp4/fileformat/qttrack.cpp,v
retrieving revision 1.30.2.3
diff -u -r1.30.2.3 qttrack.cpp
--- qttrack.cpp	24 Jul 2008 23:53:19 -0000	1.30.2.3
+++ qttrack.cpp	4 Jan 2010 11:27:53 -0000
@@ -883,20 +883,26 @@
 
     if (SUCCEEDED(retVal))
     {
-	do
-	{
-	    if (!m_SampleSize.EstablishBySample(
-		    m_TimeToSample.GetSampleNumber(),
-		    m_SampleToChunk.GetChunkSampleNum()))
-	    {
-		break;
-	    }
-
-	    ulTrackSize += m_SampleSize.GetSampleSize();
-	} while (AdvanceSample(m_TrackEdit,
-			       m_TimeToSample,
-			       m_SampleToChunk));
+        if(m_SampleSize.IsGenericSize())
+        {
+            ulTrackSize = m_SampleSize.GetSampleSize() * m_SampleSize.Get_NumEntries();
+        }
+        else
+        {
+            do
+            {
+                if (!m_SampleSize.EstablishBySample(
+                    m_TimeToSample.GetSampleNumber(),
+                    m_SampleToChunk.GetChunkSampleNum()))
+                {
+                    break;
+                }
 
+                ulTrackSize += m_SampleSize.GetSampleSize();
+            } while (AdvanceSample(m_TrackEdit,
+                                   m_TimeToSample,
+                                   m_SampleToChunk));
+        }
 	ulTrackSizeOut = ulTrackSize;
     }
 
Index: pub/qtatmmgs.h
===================================================================
RCS file: /cvsroot/datatype/mp4/fileformat/pub/qtatmmgs.h,v
retrieving revision 1.19.8.9
diff -u -r1.19.8.9 qtatmmgs.h
--- pub/qtatmmgs.h	31 Mar 2009 02:56:01 -0000	1.19.8.9
+++ pub/qtatmmgs.h	4 Jan 2010 11:27:54 -0000
@@ -332,7 +332,7 @@
     ULONG32 GetChunkSampleOffset(void)	{ return m_ulChunkSampleOffset; }
     ULONG32 GetChunkSize(void)		{ return m_ulChunkSize; }
     ULONG32 Get_NumEntries(void)		{ return m_ulNumEntries; }
-
+    HXBOOL IsGenericSize(void)		{ return m_ulGenericSize ? TRUE:FALSE; }
 private:
     CQT_stsz_Atom* m_pSampleSizeAtom;
 
From ext-anugrah.2.kashari at nokia.com  Wed Jan  6 02:51:15 2010
From: ext-anugrah.2.kashari at nokia.com (ext-anugrah.2.kashari@nokia.com)
Date: Wed Jan  6 10:18:46 2010
Subject: [Datatype-dev]: CR : TMAA-7YLAN6 -  Thumbnail not generated
In-Reply-To: 
References: 
	
Message-ID: 

Thanks Eric, 
Checked in 210Cays, Brizo420 and Head

-----Original Message-----
From: ext Eric Hyche [mailto:ehyche@real.com] 
Sent: Monday, January 04, 2010 10:34 PM
To: Kashari Anugrah.2 (EXT-Sasken/Bangalore)
Cc: datatype-dev@helixcommunity.org
Subject: Re: [Datatype-dev]: CR : TMAA-7YLAN6 - Thumbnail not generated

Looks good.

On Jan 4, 2010, at 3:45 AM,   wrote:

> "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: ext-anugrah.2.kashari@nokia.com
> 
> Review By:  Ashish.As.Gupta@nokia.com
> 
> TSW-ID: TMAA-7YLAN6
> 
> Date : 04/01/2010
> 
> Project: SymbianMmf_wm
> 
> Synopsis:  Thumbnail not generated
> 
> Overview :  In thumbnail generation, decoded picture is not send to client when decoder is trying to decode picture is time synchronized mode. Time synchronization is not required for thumbnail generation therefore there is no need to set clock source.
> 
> Fix:  For TNE, when disabling post-processor, disable the clock source as well.
> 
> Files modified & changes 210Cays , Brizo420 and Head :
> /Datatype/mdf/video/renderer/mdfvideoadapter.cpp
> 
> Image Size and Heap Use impact: No major impact
> 
> Module Release testing (STIF) :  NA
> 
> Test case(s) Added : No
> 
> Memory leak check performed : Passed, No additional leaks introduced.
> 
> Platforms and Profiles Build Verified: helix-client-s60-52-mmf-mdf-dsp                                                                              
> 
> Platforms and Profiles Functionality verified: armv5
> 
> Branch : 210Cays, Brizo420 & Head :
> 
> CVS Diff: 
> Index: mdfvideoadapter.cpp
> ===================================================================
> RCS file: /cvsroot/datatype/mdf/video/renderer/mdfvideoadapter.cpp,v
> retrieving revision 1.3.2.102
> diff -u -w -r1.3.2.102 mdfvideoadapter.cpp
> --- mdfvideoadapter.cpp 30 Oct 2009 16:50:30 -0000      1.3.2.102
> +++ mdfvideoadapter.cpp 4 Jan 2010 08:38:19 -0000
> @@ -2517,6 +2517,7 @@
> void CMdfVideoAdapter::SetPostProcessing(HXBOOL bEnable)
> {
>     m_bDisablePostProcessor = !bEnable;
> +    m_bDisableVideoClock = !bEnable;
> }
> 
> void CMdfVideoAdapter::SetPictureReturn(HXBOOL bEnable)
> 
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From gahluwalia at real.com  Wed Jan  6 03:25:54 2010
From: gahluwalia at real.com (Gurpreet)
Date: Wed Jan  6 10:51:56 2010
Subject: [datatype-dev] CR: Bug 9948: When the .flv video files contains
 only audio, they can not be played
Message-ID: <4B447342.4020504@real.com>

Synopsis:
Bug 9948: When the .flv video files contains only audio, they can not be 
played

Overview:
The flv files that have width and height values in file header but are 
audio only.
These files are not playing because file format tries to find first 
video frame but fails.
So instead of checking for width and height in case of audio only files, 
we check if we have video stream.
For this a flag is added which is set to true in case we find a video 
stream.

Files Modified:
datatype/flash/flv/fileformat/flv_file_format.cpp
datatype/flash/flv/fileformat/pub/flv_file_format.h

Image Size and Heap Use impact (Client -Only):
None

Platforms and Profiles Build Verified:
BIF branch            -> atlas 310, atlas 361, brizo  401, head
Target(s)                -> android_all
Profile                    -> helix-client-android-surf_8x50
SYSTEM_ID        -> android-donut-arm.eabi

Files Attached::
flv.diff

Thanks & Best Regards,
Gurpreet
-------------- next part --------------
Index: flv_file_format.cpp
===================================================================
RCS file: /cvsroot/datatype/flash/flv/fileformat/flv_file_format.cpp,v
retrieving revision 1.9.2.25.2.3
diff -u -r1.9.2.25.2.3 flv_file_format.cpp
--- flv_file_format.cpp	10 Dec 2009 10:07:55 -0000	1.9.2.25.2.3
+++ flv_file_format.cpp	6 Jan 2010 10:13:13 -0000
@@ -162,6 +162,7 @@
     , m_bHaveFileSize(FALSE)
     , m_bHaveWidth(FALSE)
     , m_bHaveHeight(FALSE)
+    , m_bHaveVideo(FALSE)
     , m_bHaveDuration(FALSE)
     , m_bHaveAudioBitrate(FALSE)
     , m_bHaveVideoBitrate(FALSE)
@@ -1016,6 +1017,7 @@
                             }
                             if (SUCCEEDED(retVal))
                             {
+                                m_bHaveVideo = TRUE;
                                 // Were we able to get the width and height from the meta-data?
                                 if (!m_bHaveWidth || !m_bHaveHeight)
                                 {
@@ -1160,7 +1162,7 @@
                                     }
 
 				    // There are FLV files with no video flag in the Header but with actual video stream inside
-				    if(m_bAudioOnlyFile && m_bHaveWidth && m_bHaveHeight && m_bHaveVideoFrameRate)
+				    if(m_bAudioOnlyFile && m_bHaveVideo)
 				    {
 					m_cHeader.SetHasVideo();
 					m_bAudioOnlyFile = FALSE;
Index: pub/flv_file_format.h
===================================================================
RCS file: /cvsroot/datatype/flash/flv/fileformat/pub/flv_file_format.h,v
retrieving revision 1.7.2.10.4.1
diff -u -r1.7.2.10.4.1 flv_file_format.h
--- pub/flv_file_format.h	19 Nov 2009 03:59:11 -0000	1.7.2.10.4.1
+++ pub/flv_file_format.h	6 Jan 2010 10:13:13 -0000
@@ -269,6 +269,7 @@
     HX_BITFIELD          m_bHaveFileSize : 1;
     HX_BITFIELD          m_bHaveWidth : 1;
     HX_BITFIELD          m_bHaveHeight : 1;
+    HX_BITFIELD          m_bHaveVideo : 1;
     HX_BITFIELD          m_bHaveDuration : 1;
     HX_BITFIELD          m_bHaveAudioBitrate : 1;
     HX_BITFIELD          m_bHaveVideoBitrate : 1;
From sgarg at real.com  Wed Jan  6 03:53:38 2010
From: sgarg at real.com ( Sushant Garg)
Date: Wed Jan  6 11:19:42 2010
Subject: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays
	incorrect duration for a wav file recorded by gnome-sound-recorder.
References: <011601ca78cd$6011f9a0$8001a8c0@adroit02a604c1>
	<7ECCEA249B7CDC49A079EC0075E999AA07D82CC716@SEAMBX.corp.real.com>
	<012301ca798f$c8a9dce0$8001a8c0@adroit02a604c1>
	<268FD6EA-49A7-42FA-AFC6-78547C20C18B@real.com>
	<01ed01ca8492$b14289e0$8001a8c0@adroit02a604c1>
	<5FC21ACD-FE11-427F-BA16-49FA0D27F818@real.com>
Message-ID: <007401ca8ec6$e4d0abf0$8001a8c0@adroit02a604c1>

Skipped content of type multipart/alternative-------------- next part --------------
Index: riff.cpp
===================================================================
RCS file: /cvsroot/datatype/common/util/riff.cpp,v
retrieving revision 1.12.16.2
diff -u -r1.12.16.2 riff.cpp
--- riff.cpp	5 Jun 2008 08:33:31 -0000	1.12.16.2
+++ riff.cpp	6 Jan 2010 11:14:27 -0000
@@ -110,6 +110,8 @@
     , m_ulChunkBytesRead(0)
     , m_ulChunkSize(0)
     , m_ulChunkType(0)
+    , m_pFileStatObj(NULL)
+    , m_ulTotalFileSizeInBytes(0L) 
 {
     m_pContext = pContext;
     m_pResponse = pResponse;
@@ -192,6 +194,11 @@
 //    return HXR_OK;
 }
 
+UINT32 CRIFFReader::GetCurrentFileOffset()
+{
+    return m_ulCurOffset;
+}
+
 STDMETHODIMP
 CRIFFReader::InitDone(HX_RESULT status)
 {
@@ -205,8 +212,45 @@
 
     m_bFileIsOpen = TRUE;
 
+    HX_RELEASE(m_pFileStatObj);
+    if(m_pFileObject)
+    {
+        HX_RESULT retVal = m_pFileObject->QueryInterface(IID_IHXFileStat, (void **) &m_pFileStatObj);    
+        if(SUCCEEDED(retVal) && m_pFileStatObj)
+        {
+            m_pFileStatObj->Stat((IHXFileStatResponse *) this);
+        }
+    }
+    return status;
+}
+
+/////////////////////////////////////////////////////////////////////////
+//  Method:
+//	IHXFileFormatObject::StatDone
+//
+STDMETHODIMP
+CRIFFReader::StatDone(HX_RESULT status, UINT32 ulSize,
+				      ULONG32 ulCreationTime,
+                                      UINT32 ulAccessTime,
+				      UINT32 ulModificationTime,
+				      UINT32 ulMode)
+{
+    // We're finished with the IHXFileStat interface, so we'll release it:
+    HX_RELEASE(m_pFileStatObj);
+
+    if (SUCCEEDED(status))
+    {
+        // Now we know how big the file is, so we can calculate the
+        // actual duration for all streams using it.
+        m_ulTotalFileSizeInBytes = ulSize;
+    }
     m_state = RS_GetFileTypePending;
-    return m_pFileObject->Read(sizeof(UINT32) * 2);
+    return m_pFileObject->Read(sizeof(UINT32) * 2);	
+}
+
+UINT32 CRIFFReader::GetTotalFileSize()
+{
+    return m_ulTotalFileSizeInBytes;
 }
 
 HX_RESULT
@@ -233,6 +277,8 @@
 
     m_bFileIsOpen = FALSE;
 
+    HX_RELEASE(m_pFileStatObj);
+    m_ulTotalFileSizeInBytes = 0L;	
     return HXR_OK;
 }
 
Index: pub/riff.h
===================================================================
RCS file: /cvsroot/datatype/common/util/pub/riff.h,v
retrieving revision 1.6
diff -u -r1.6 riff.h
--- pub/riff.h	14 Mar 2005 19:24:45 -0000	1.6
+++ pub/riff.h	6 Jan 2010 11:14:27 -0000
@@ -49,6 +49,7 @@
 typedef _INTERFACE IHXFileObject IHXFileObject;
 
 class CRIFFReader : public IHXFileResponse,
+            public IHXFileStatResponse,	
             public IHXThreadSafeMethods
 {
 public:
@@ -61,6 +62,9 @@
      */
     HX_RESULT Open(char* filename);
 
+    IHXFileStat*           m_pFileStatObj; //for getting the file size.
+    UINT32			m_ulTotalFileSizeInBytes;
+    UINT32 GetCurrentFileOffset();
     /*
      * Close: Close the file
      */
@@ -126,6 +130,12 @@
 
     STDMETHOD(InitDone)      (THIS_
                   HX_RESULT status);
+    STDMETHOD(StatDone)  (THIS_
+                HX_RESULT status, UINT32 ulSize,
+				      ULONG32 ulCreationTime,
+				      UINT32 ulAccessTime,
+				      UINT32 ulModificationTime,
+				      UINT32 ulMode);	
     STDMETHOD(ReadDone)      (THIS_
                   HX_RESULT status,
                   IHXBuffer* pBuffer);
@@ -174,6 +184,7 @@
 
     UINT32 GetListType();
     UINT32 GetOffset();
+    UINT32 GetTotalFileSize();	
     UINT32 GetChunkType();
     UINT32 GetChunkRawSize(void);

Index: wvffplin.cpp
===================================================================
RCS file: /cvsroot/datatype/wav/fileformat/wvffplin.cpp,v
retrieving revision 1.12.2.1.6.1
diff -u -r1.12.2.1.6.1 wvffplin.cpp
--- wvffplin.cpp	2 Dec 2009 02:38:34 -0000	1.12.2.1.6.1
+++ wvffplin.cpp	6 Jan 2010 11:15:55 -0000
@@ -963,6 +963,14 @@
 		}
 	    
 	    m_ulDataSizeInBytes = len;
+	    UINT32 ulFileOffset = m_pRiffReader->GetCurrentFileOffset();
+           UINT32 ulTotalFileSizeInBytes  = m_pRiffReader->GetTotalFileSize();		
+	    UINT32 ulDataSizeInBytes = ulTotalFileSizeInBytes - ulFileOffset;
+	    if(ulDataSizeInBytes < len)
+	    {
+	        m_ulDataSizeInBytes = ulDataSizeInBytes;
+	    }
+
 	    m_ulAvgBitRate      = 8 * m_ulAvgBytesPerSec;
 
 	    // The duration is of course calculatable from the size of
From ehyche at real.com  Wed Jan  6 06:34:22 2010
From: ehyche at real.com (Eric Hyche)
Date: Wed Jan  6 14:00:40 2010
Subject: [datatype-dev] Re: [Porting-android] CR: Changes to fix [Bug 9762]
 It costs about 4	sec for some mov file
In-Reply-To: 
References: 
Message-ID: <9AF5AD05-0A2D-4648-B2EB-B4F0E8F598DD@real.com>

Good work on this optimization. This looks good to me.

Eric

On Jan 4, 2010, at 6:59 AM, Varun Kathuria wrote:

>  
> Synopsis:
> Changes to fix [Bug 9762] It costs about 4 sec for some mov file
>  
> Overview:
> In android player, when we scan some mov files it takes more than 4 sec to scan files. The problem in these files are audio track have sample size of 4 & sample count is 5990384. When it tries to calculate audio tracksize from CQTTrack::ComputeTrackSize() then it takes 5990384 iterations to compute audio track size. We know that the audio track has generic sample size . Added code to calculate tracksize based on generic size in a CQTTrack::ComputeTrackSize() so that it can be calculated in 1 iteration rather than 5990384 iterations. Now it saves around 3850ms approx in android platform.
>  
> Files Added:
> None
>  
> Files Modified:
> /cvsroot/datatype/mp4/fileformat/qttrack.cpp
> /cvsroot/datatype/mp4/fileformat/pub/qtatmmgs.h
>  
> Image Size and Heap Use impact (Client -Only):
> None.
>  
> Platforms and Profiles Affected:
> None 
>  
> Distribution Libraries Affected:
> None
>  
> Distribution library impact and planned action:
> None
>  
> Platforms and Profiles Build Verified:
> BIF branch  -> hxclient_3_6_1_atlas_restricted
> Target(s)   -> android_all
> Profile     -> helix-client-android-full
> SYSTEM_ID   -> android-donut-arm-qsd_8x50
>  
> Branch
> atlas310, atlas361, head, 401brizo
>  
> Files Attached:
> diff_9762.txt
>  
> Thanks
> Varun Kathuria
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From ehyche at real.com  Wed Jan  6 06:55:39 2010
From: ehyche at real.com (Eric Hyche)
Date: Wed Jan  6 14:21:37 2010
Subject: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays
	incorrect duration for a wav file recorded by gnome-sound-recorder.
In-Reply-To: <007401ca8ec6$e4d0abf0$8001a8c0@adroit02a604c1>
References: <011601ca78cd$6011f9a0$8001a8c0@adroit02a604c1>
	<7ECCEA249B7CDC49A079EC0075E999AA07D82CC716@SEAMBX.corp.real.com>
	<012301ca798f$c8a9dce0$8001a8c0@adroit02a604c1>
	<268FD6EA-49A7-42FA-AFC6-78547C20C18B@real.com>
	<01ed01ca8492$b14289e0$8001a8c0@adroit02a604c1>
	<5FC21ACD-FE11-427F-BA16-49FA0D27F818@real.com>
	<007401ca8ec6$e4d0abf0$8001a8c0@adroit02a604c1>
Message-ID: 

Looks good for the most part. However, if your QI for IHXFileStat fails, then we will hang, since no InitDone() back to the RIFF reader user will ever be made. So make sure that if either the QI for IHXFileStat fails, or the call to STat() returns failure that we properly make a failure InitDone() back to the RIFF reader user.

Actually, the QI for IHXFileStat should not be required, since file objects are not required to implement this. So if the QI for IHXFileStat fails, then the RIFF reader should continue on normally, just without knowing the file size. If the QI for IHXFileStat() succeeds but the call to STat() returns failure, then we can return failure in InitDone() back to the RIFF reader caller.

Eric

On Jan 6, 2010, at 6:53 AM, Sushant Garg wrote:

> Thanks Eric,
>  
> Please find the updated diff.
>  
> Now I am calling Read() from CRIFFReader::StatDone() rather then CRIFFReader::InitDone.
>  
> Thanks & Regards
> Sushant Garg
> ----- Original Message -----
> From: Eric Hyche
> To: Sushant Garg
> Cc: Datatype-Dev
> Sent: Monday, January 04, 2010 8:13 PM
> Subject: Re: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-recorder.
> 
> You are treating IHXFileStat::Stat() like a synchronous call and there is 
> no guarantee that it will be. Once you issue the call to Stat(), then
> you will need to wait in StatDone() before calling back to InitDone().
> 
> Eric
> 
> On Dec 24, 2009, at 7:14 AM, Sushant Garg wrote:
> 
> > Eric,
> >  
> > Please find the updated diff.
> >  
> > Thanks & Regards
> > Sushant Garg
> > ----- Original Message -----
> > From: Eric Hyche
> > To: Sushant Grag
> > Cc: Datatype-Dev
> > Sent: Friday, December 11, 2009 12:04 AM
> > Subject: Re: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-recorder.
> > 
> > Sushant,
> > 
> > After thinking about this some more, I think the Stat() call should be moved inside the RIFF reader, for a couple of reasons:
> > 
> > - centralize it in one place, so other uses of the RIFF reader don't have to do the same thing.
> > - the most natural time to do the Stat is immediately after the IHXFileObject is Init'd, which in this case the RIFF reader does.
> > 
> > So I think the RIFF reader could do the IHXFileStat::Stat() call, and then store the filesize result. Then we could just add an accessor function on the RIFF reader so that users of the RIFF reader can read the size. The file size would only be valid after the CRIFFREader::Open() call had returned with a RIFFOpenDone() callback.
> > 
> > Eric
> > 
> > On Dec 10, 2009, at 6:56 AM, Sushant Grag wrote:
> > 
> > > Thanks Eric,
> > >  
> > > Please find the updated diff.
> > >  
> > > Thanks & Regards
> > > Sushant Garg
> > > ----- Original Message -----
> > > From: Eric Hyche
> > > To: Sushant Grag ; Datatype-Dev
> > > Sent: Wednesday, December 09, 2009 7:17 PM
> > > Subject: RE: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-recorder.
> > > 
> > > +UINT32 CRIFFReader::GetFileDataSize()
> > > +{
> > > + CHXString strFilePath = m_pFilename;
> > > + const char* szFileProtocol = "file://";
> > > + UINT32 ulFiledataSize =0;
> > > + 
> > > + if( !strFilePath.Left(strlen(szFileProtocol)).CompareNoCase(szFileProtocol) )
> > > + {
> > > +     strFilePath = strFilePath.Mid(strlen(szFileProtocol));
> > > +     struct stat fileInfo;
> > > +     if(!stat(strFilePath, &fileInfo))
> > > +     {
> > > +         ulFiledataSize = fileInfo.st_size;
> > > +     }
> > > + }
> > > + return ulFiledataSize;
> > > +}
> > > +
> > > 
> > > I did not mean do a C-library stat() on the file. The file object that
> > > the RIFF readers uses will not always be a local file that you can call stat() on.
> > > What I meant was QI the file object for IHXFileStat and then call IHXFileStat::Stat().
> > > You will have to implement IHXFileStatResponse::StatDone().
> > > 
> > > Eric
> > > 
> > > >-----Original Message-----
> > > >From: datatype-dev-bounces@helixcommunity.org [mailto:datatype-dev-bounces@helixcommunity.org] On
> > > >Behalf Of Sushant Grag
> > > >Sent: Wednesday, December 09, 2009 7:45 AM
> > > >To: Datatype-Dev
> > > >Subject: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file
> > > >recorded by gnome-sound-recorder.
> > > >
> > > >Project: RealPlayer for Netbook
> > > >
> > > >Synopsis:
> > > >
> > > >Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-
> > > >recorder.
> > > >
> > > >
> > > >
> > > >Overview:
> > > >
> > > >There is an issue with wav files which are recorded from ubuntu sound recorder.
> > > >
> > > >The calculated file duration in Realplayer for linux is much & much larger then original file duration
> > > >
> > > >eg: file has duration of 6secs & Realplayer shows more than 3hr 22 min.
> > > >
> > > >Reason behind is, sound recorder adds garbage value in data chunk which leads to very big value of
> > > >m_ulChunkBodyLen calculated in riff.cpp around line 380
> > > >
> > > >            if ( (UINT32)getlong(buf) == m_ulFindChunkId )
> > > >
> > > >            {
> > > >
> > > >                // Found the chunk we were asked for
> > > >
> > > >                m_state = RS_Ready;
> > > >
> > > >                m_ulChunkBodyLen = GetLong(&buf[4]);
> > > >
> > > >                m_ulChunkSize = m_ulChunkBodyLen;
> > > >
> > > >Which cause a very higher value of duration.
> > > >
> > > >
> > > >
> > > >Now I have created two different functions in riff.cpp;
> > > >
> > > >CRIFFReader::GetFileDataSize() & CRIFFReader::GetCurrentFileOffset() in which I am getting the length
> > > >of file & the file offset and calling these functions in function CWaveFileFormat::RIFFFindChunkDone()
> > > >, case WS_FindDataChunkPending to set m_ulDataSizeInBytes if "len" is greater then
> > > >"ulDataSizeInBytes".
> > > >
> > > >
> > > >
> > > >Files Modified:
> > > >/cvsroot/datatype/common/util/riff.cpp
> > > >
> > > >/cvsroot/datatype/common/util/pub/riff.h
> > > >
> > > >/cvsroot/datatype/wav/fileformat/wvffplin.cpp
> > > >
> > > >
> > > >
> > > >Files Added:
> > > >
> > > >None
> > > >
> > > >
> > > >
> > > >Platforms and Profiles Affected:
> > > >Linux
> > > >
> > > >Distribution Libraries Affected:
> > > >None.
> > > >
> > > >Platforms and Profiles Build Verified:
> > > >Bif: realplay_gtk_atlas_restricted_gold_1.2
> > > >Profile: helix-client-moblin
> > > >Target: player_all
> > > >
> > > >Branch:
> > > >Atlas347, Atlas310, Atlas3_4_10, 401 Brizo, Head
> > > >
> > > >
> > > >
> > > >Files Attached:
> > > >
> > > >9840_diff.txt
> > > >
> > > >
> > > >
> > > >Thanks & Regards
> > > >Sushant Garg
> > > <9840_diff.txt>
> > 
> > Eric Hyche (ehyche@real.com)
> > Principal Engineer
> > RealNetworks, Inc.
> > 
> > 
> 
> Eric Hyche (ehyche@real.com)
> Principal Engineer
> RealNetworks, Inc.
> 
> <9840_diff.txt>

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From ehyche at real.com  Wed Jan  6 07:13:21 2010
From: ehyche at real.com (Eric Hyche)
Date: Wed Jan  6 14:39:20 2010
Subject: [datatype-dev] CR: Bug 9948: When the .flv video files contains
	only audio, they can not be played
In-Reply-To: <4B447342.4020504@real.com>
References: <4B447342.4020504@real.com>
Message-ID: 

Looks good.

On Jan 6, 2010, at 6:25 AM, Gurpreet wrote:

> Synopsis:
> Bug 9948: When the .flv video files contains only audio, they can not be 
> played
> 
> Overview:
> The flv files that have width and height values in file header but are 
> audio only.
> These files are not playing because file format tries to find first 
> video frame but fails.
> So instead of checking for width and height in case of audio only files, 
> we check if we have video stream.
> For this a flag is added which is set to true in case we find a video 
> stream.
> 
> Files Modified:
> datatype/flash/flv/fileformat/flv_file_format.cpp
> datatype/flash/flv/fileformat/pub/flv_file_format.h
> 
> Image Size and Heap Use impact (Client -Only):
> None
> 
> Platforms and Profiles Build Verified:
> BIF branch            -> atlas 310, atlas 361, brizo  401, head
> Target(s)                -> android_all
> Profile                    -> helix-client-android-surf_8x50
> SYSTEM_ID        -> android-donut-arm.eabi
> 
> Files Attached::
> flv.diff
> 
> Thanks & Best Regards,
> Gurpreet
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From pbasic at real.com  Wed Jan  6 09:49:44 2010
From: pbasic at real.com (Petar Basic)
Date: Wed Jan  6 17:16:19 2010
Subject: [datatype-dev] CN: Added ability to output ID3v2 v2.3.0;
	added DTDriver engine 
	parameter for controlling the ID3v2 output in MP4 writer
Message-ID: <9b8350411001060949q776a6ff4s8676c15f015297ea@mail.gmail.com>

Modified by: pbasic at real.com
Reviewed by: ehyche at real.com
Date: 2010/01/06
Project: GMP MetaEditor (meta3gp.exe)

Synopsis:
Added ability to output ID3v2 v2.3.0; added DTDriver engine parameter
for controlling the ID3v2 output in MP4 writer

Overview:
To allow testing of meta-data outputted by MP4 file-writer with other
software and with MP4 file-format it is useful to be able to output an
older version of ID3v2 tag.

Details:
1.) Extended ID3Tools methods to allow writing of ID3v2 according to
v2.3.0 specs.

2.) Added DTDriver engine parameter which controls the behaviour of
MP4 file-writer during ID3v2 tag output.

3.) Added ID3v2 related command-line options to GMPMetaEditor.  These
are mapped to DTDriver engine parameters.

Testing:
Verified that the portion of meta-info injected as ID3v2 by GMP
MetaEditor can be read with other software (iTunes 9, CT metadata
extractor 1.3) regardless of the version of ID3v2 outputted (v2.4.0 or
v2.3.0).  Verified that meta-info injected by other software can be
read with GMP MetaEditor.

Files Modified:
datatype/common/util/metautil.cpp
datatype/common/util/pub/metautil.h
datatype/mp4/filewriter/mp4sm.cpp
datatype/mp4/filewriter/mp4sm.h
datatype/tools/dtdriver/engine/ffdriver.cpp
datatype/tools/dtdriver/engine/pub/ffdriver.h
datatype/tools/dtdriver/apps/meta3gp/main.cpp

Platforms and Profiles Affected:
All

Image Size and Heap Use impact:
Small increase

Platforms and Profiles Build Verified:
system id: win32-i386-vc7
profile: helix-client-all-defines

Platforms and Profiles Functionality Verified:
x86 Windows XP SP2

Branch:
HEAD

Copyright assignment:
I am a RealNetworks employee or contractor.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: datatype_common_util.diff
Type: text/x-patch
Size: 39542 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100106/af12d71d/datatype_common_util-0001.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: datatype_mp4_filewriter.diff
Type: text/x-patch
Size: 10402 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100106/af12d71d/datatype_mp4_filewriter-0001.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: datatype_tools_dtdriver_apps_meta3gp.diff
Type: text/x-patch
Size: 20876 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100106/af12d71d/datatype_tools_dtdriver_apps_meta3gp-0001.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: datatype_tools_dtdriver_engine.diff
Type: text/x-patch
Size: 14560 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100106/af12d71d/datatype_tools_dtdriver_engine-0001.bin
From girish.shetty at nokia.com  Wed Jan  6 15:32:27 2010
From: girish.shetty at nokia.com (girish.shetty@nokia.com)
Date: Wed Jan  6 22:58:22 2010
Subject: RESEND: [datatype-dev] CR: Fix MIME type printing in MDF and
	print decoder, postprocessor id 
In-Reply-To: 
References: 
	
	
Message-ID: <888A0A0FAF11234F9E0D17809A78D7E4177134E656@NOK-EUMSG-03.mgdnok.nokia.com>

This mail is to communicate that below mentioned old CR which was checked-in only to head and cays210 is now checked-in to Brizo 420.

Regards
Girish


-----Original Message-----
From: datatype-dev-bounces@helixcommunity.org [mailto:datatype-dev-bounces@helixcommunity.org] On Behalf Of ext Eric Hyche
Sent: Tuesday, October 06, 2009 2:29 PM
To: Lliu Xiaolin (Nokia-D/Dallas)
Cc: datatype-dev@helixcommunity.org
Subject: Re: RESEND: [datatype-dev] CR: Fix MIME type printing in MDF and print decoder, postprocessor id 

Looks good.

On Oct 6, 2009, at 1:14 PM, xiaolin.lliu@nokia.com wrote:

>
> "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:  lliu.xiaolin@nokia.com
> Reviewed by:
> Date:  Oct   01 , 2009
> Project: SymbianMmf_wm
> ErrorId:  N/A
>
> Synopsis:   Fix MIME type printing  in MDF and print decoder,  
> postprocessor id .
>
> Overview:
>
> 1. Since mimetype is stored as a string without '\0', HXlog will  
> keep print it till hits a '\0', therefore, there are some unknown  
> characters after mimetype in the log. This change will attach a '\0'  
> to mimetype, then print it in the hxlog.
>  2. Print decoder and postprocessor id in hxlog
>
> Modified files:
>     datatype\mdf\video\renderer\mdfpluginmanager.cpp
>     datatype\mdf\video\renderer\mdfvideoadapter.cpp
>
> New files: None
> Image size and heap use impact:  N/A
> Module Release testing (STIF): Passed
> Test case(s) added: None
> Memory leak check performed: Yes, no new leaks introduced.
> Platforms and Profiles Build verified: helix-client-s60-50-mmf-mdf-arm
> Platforms and Profiles Functionality verified: armv5
> Branch:  Cays210 and head
>
>
> Index: mdfpluginmanager.cpp
> ===================================================================
> RCS file: /cvsroot/datatype/mdf/video/renderer/mdfpluginmanager.cpp,v
> retrieving revision 1.2.2.14
> diff -u -r1.2.2.14 mdfpluginmanager.cpp
> --- mdfpluginmanager.cpp 23 Jan 2008 23:51:28 -0000 1.2.2.14
> +++ mdfpluginmanager.cpp 1 Oct 2009 20:38:10 -0000
> @@ -193,9 +193,11 @@
>  void CMdfPluginManager::GetPackagesByMimeTypeL( const TDesC8&  
> aMimeType, RPointerArray& packageList )
>  {
>      MDFVIDEOLOG_ENTERFN( "GetPackagesByMimeTypeL" );
> +    HBufC8 *strMimeType = HBufC8::NewL(aMimeType.Length() + 1);
> +    strMimeType->Des().Copy(aMimeType);
> +    MDFVIDEOLOG_WRITE_FORMAT( "<-> Mimetype investigated for  
> support is %s", strMimeType->Des().PtrZ() );
> +    delete strMimeType;
>
> -    MDFVIDEOLOG_WRITE_FORMAT( "<-> Mimetype investigated for  
> support is %s", aMimeType.Ptr() );
> -
>      TBool foundPackage = EFalse;
>      TInt  entryLocation = -1;
>      TBool rulesMet = ETrue;
> @@ -401,8 +403,11 @@
>          for( TInt j = 0; j < countMimeType; j++ )
>          {
>              HBufC8* tdesc = supportedmimetypearray[ j ];
> -            MDFVIDEOLOG_WRITE_FORMAT( "<-> Mimetype targeted is  
> %s", tdesc->Ptr() );
> -
> +            HBufC8 *strMimeType = HBufC8::NewL(tdesc->Length() + 1);
> +            strMimeType->Des().Copy(*tdesc);
> +            MDFVIDEOLOG_WRITE_FORMAT( "<-> Mimetype targeted is  
> %s", strMimeType->Des().PtrZ() );
> +            delete strMimeType;
> +
>              CPluginPackage* pluginpackage = NULL;
>              TBool valid = EFalse;
>              TRAPD( error, pluginpackage = CPluginPackage::NewL 
> ( *tdesc ) );
> @@ -457,8 +462,7 @@
>
>                  TInt length = supportedMimeType.Length();
>                  const unsigned char* buffer = supportedMimeType.Ptr 
> ();
> -
> -                MDFVIDEOLOG_WRITE_FORMAT2( "    Mimetype %s is  
> supported", buffer );
> +
>
>                  pMimeType[ validPackage ] = new char[ length+1 ];
>
> @@ -468,6 +472,8 @@
>                      pMimeType[validPackage][m] = (char) buffer[m];
>                  }
>                  pMimeType[validPackage++][m] = '\0';
> +                MDFVIDEOLOG_WRITE_FORMAT2( "    Mimetype %s is  
> supported", (pMimeType[validPackage - 1]) );
> +
>              }
>          }
>          pMimeType[ validPackage ] = NULL;
> @@ -576,7 +582,11 @@
>      MDFVIDEOLOG_ENTERFN( "FindDecoderOnly" );
>
>      const TDesC8& aMimeType = aPluginPackage.GetHelixMimeType();
> -    MDFVIDEOLOG_WRITE_FORMAT( "FindDecoderOnly searching for  
> mimetype %s", aMimeType.Ptr() );
> +    HBufC8 *strMimeType = HBufC8::NewL(aMimeType.Length() + 1);
> +    strMimeType->Des().Copy(aMimeType);
> +    MDFVIDEOLOG_WRITE_FORMAT( "FindDecoderOnly searching for  
> mimetype %s", strMimeType->Des().PtrZ() );
> +    delete strMimeType;
> +
>      HX_RESULT retVal = HXR_FAIL;
>      TBool foundPackage = EFalse;
>
>
> Index: mdfvideoadapter.cpp
> ===================================================================
> RCS file: /cvsroot/datatype/mdf/video/renderer/mdfvideoadapter.cpp,v
> retrieving revision 1.3.2.96.4.4
> diff -u -r1.3.2.96.4.4 mdfvideoadapter.cpp
> --- mdfvideoadapter.cpp 23 Sep 2009 20:02:47 -0000 1.3.2.96.4.4
> +++ mdfvideoadapter.cpp 2 Oct 2009 19:56:01 -0000
> @@ -362,11 +362,15 @@
>      if( SUCCEEDED( retVal ) )
>      {
>          TUid formatId =  m_pPluginPackage->Uid();
> +        TUid hwDecoderId =  m_pPluginPackage->GetHwDecoderId();
> +        TUid hwPostProcessorId =  m_pPluginPackage- 
> >GetHwPostProcessorId();
> +
>          HX_DELETE( m_pPayloadFormatPluginDevice );
>          TRAPD( error, m_pPayloadFormatPluginDevice =  
> CPayloadFormatPluginDevice::NewL( formatId ) );
>          if( m_pPayloadFormatPluginDevice && error == KErrNone )
>          {
> -            MDFVIDEOLOG_WRITE_FORMAT2( "    Payload id 0x%08x is  
> successfully loaded", formatId.iUid );
> +            HXLOGL2(HXLOG_VIDE, "    Payload id 0x%08x is  
> successfully loaded, HW decoder:0x%08x, PostProcessor:0x%08x",   
> formatId.iUid,hwDecoderId.iUid,hwPostProcessorId.iUid );
> +
>
>              UINT32 disableMinPrerollCheck( 0 );
>
> @@ -462,8 +466,14 @@
>      TUid          decoderId                       =  
> pluginPackage.GetHwDecoderId();
>      TUid          postprocessorId                 =  
> pluginPackage.GetHwPostProcessorId();
>
> -    MDFVIDEOLOG_WRITE_FORMAT( "    Mimetype for the Helix is %s",  
> mimetypehelix.Ptr() );
> -    MDFVIDEOLOG_WRITE_FORMAT( "    Mimetype for the DevHw is %s",  
> mimetypevidhw.Ptr() );
> +    HBufC8 *strMimeType = HBufC8::NewL(mimetypehelix.Length() + 1);
> +    strMimeType->Des().Copy(mimetypehelix);
> +    MDFVIDEOLOG_WRITE_FORMAT( "    Mimetype for the Helix is %s",  
> strMimeType->Des().PtrZ() );
> +    delete strMimeType;
> +    HBufC8 *strMimeTypeVidhw = HBufC8::NewL(mimetypevidhw.Length()  
> + 1);
> +    strMimeTypeVidhw->Des().Copy(mimetypevidhw);
> +    MDFVIDEOLOG_WRITE_FORMAT( "    Mimetype for the DevHw is %s",  
> strMimeTypeVidhw->Des().PtrZ() );
> +    delete strMimeTypeVidhw;
>      MDFVIDEOLOG_WRITE_FORMAT( "    UID for decoder        is 0x%x",  
> decoderId.iUid );
>      MDFVIDEOLOG_WRITE_FORMAT( "    UID for postprocessor  is 0x%x",  
> postprocessorId.iUid );
>
> @@ -2343,7 +2353,10 @@
>          {
>              // if some rule exists for mimetype but it does not  
> have valid info, return error
>              // else do nothing, it'll fall back to use plugin  
> package already selected
> -            MDFVIDEOLOG_WRITE_FORMAT2( "    Error: Valid codec rule  
> not found for mimetype %s", aMimeType.Ptr() );
> +            HBufC8 *strMimeType = HBufC8::NewL(aMimeType.Length() +  
> 1);
> +            strMimeType->Des().Copy(aMimeType);
> +            MDFVIDEOLOG_WRITE_FORMAT2( "    Error: Valid codec rule  
> not found for mimetype %s", strMimeType->Des().PtrZ() );
> +            delete strMimeType;
>              retVal = HXR_UNSUPPORTED_VIDEO;
>          }
>      }
>
> _______________________________________________
> Datatype-dev mailing list
> Datatype-dev@helixcommunity.org
> http://lists.helixcommunity.org/mailman/listinfo/datatype-dev

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.




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

From vkathuria at real.com  Wed Jan  6 23:52:01 2010
From: vkathuria at real.com (Varun Kathuria)
Date: Thu Jan  7 07:18:05 2010
Subject: [datatype-dev] CN: Changes to fix [Bug 9762] It costs about 4 sec
	for some mov file
References: 
	<9AF5AD05-0A2D-4648-B2EB-B4F0E8F598DD@real.com>
Message-ID: <16BA9FD1FC154926A4F742DE6015CB28@abc>

Thanks Eric,

This has been checked into atlas310, atlas361, 401brizo, 420brizo, 
210cayennes, head.

Thanks
Varun Kathuria
----- Original Message ----- 
From: "Eric Hyche" 
To: "Varun Kathuria" 
Cc: ; 
Sent: Wednesday, January 06, 2010 8:04 PM
Subject: Re: [Porting-android] CR: Changes to fix [Bug 9762] It costs about 
4 sec for some mov file


Good work on this optimization. This looks good to me.

Eric

On Jan 4, 2010, at 6:59 AM, Varun Kathuria wrote:

>
> Synopsis:
> Changes to fix [Bug 9762] It costs about 4 sec for some mov file
>
> Overview:
> In android player, when we scan some mov files it takes more than 4 sec to 
> scan files. The problem in these files are audio track have sample size of 
> 4 & sample count is 5990384. When it tries to calculate audio tracksize 
> from CQTTrack::ComputeTrackSize() then it takes 5990384 iterations to 
> compute audio track size. We know that the audio track has generic sample 
> size . Added code to calculate tracksize based on generic size in a 
> CQTTrack::ComputeTrackSize() so that it can be calculated in 1 iteration 
> rather than 5990384 iterations. Now it saves around 3850ms approx in 
> android platform.
>
> Files Added:
> None
>
> Files Modified:
> /cvsroot/datatype/mp4/fileformat/qttrack.cpp
> /cvsroot/datatype/mp4/fileformat/pub/qtatmmgs.h
>
> Image Size and Heap Use impact (Client -Only):
> None.
>
> Platforms and Profiles Affected:
> None
>
> Distribution Libraries Affected:
> None
>
> Distribution library impact and planned action:
> None
>
> Platforms and Profiles Build Verified:
> BIF branch  -> hxclient_3_6_1_atlas_restricted
> Target(s)   -> android_all
> Profile     -> helix-client-android-full
> SYSTEM_ID   -> android-donut-arm-qsd_8x50
>
> Branch
> atlas310, atlas361, head, 401brizo
>
> Files Attached:
> diff_9762.txt
>
> Thanks
> Varun Kathuria
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.




From vkathuria at real.com  Thu Jan  7 00:55:13 2010
From: vkathuria at real.com (Varun Kathuria)
Date: Thu Jan  7 08:21:22 2010
Subject: [datatype-dev] CN: Changes to fix [Bug 9762] It costs about 4	sec
	for some mov file
References: 
	<9AF5AD05-0A2D-4648-B2EB-B4F0E8F598DD@real.com>
Message-ID: 

Also checked into atlas347 & atlas3410.

Thanks
Varun Kathuria
----- Original Message ----- 
From: "Eric Hyche" 
To: "Varun Kathuria" 
Cc: ; 
Sent: Wednesday, January 06, 2010 8:04 PM
Subject: Re: [Porting-android] CR: Changes to fix [Bug 9762] It costs about 
4 sec for some mov file


Good work on this optimization. This looks good to me.

Eric

On Jan 4, 2010, at 6:59 AM, Varun Kathuria wrote:

>
> Synopsis:
> Changes to fix [Bug 9762] It costs about 4 sec for some mov file
>
> Overview:
> In android player, when we scan some mov files it takes more than 4 sec to 
> scan files. The problem in these files are audio track have sample size of 
> 4 & sample count is 5990384. When it tries to calculate audio tracksize 
> from CQTTrack::ComputeTrackSize() then it takes 5990384 iterations to 
> compute audio track size. We know that the audio track has generic sample 
> size . Added code to calculate tracksize based on generic size in a 
> CQTTrack::ComputeTrackSize() so that it can be calculated in 1 iteration 
> rather than 5990384 iterations. Now it saves around 3850ms approx in 
> android platform.
>
> Files Added:
> None
>
> Files Modified:
> /cvsroot/datatype/mp4/fileformat/qttrack.cpp
> /cvsroot/datatype/mp4/fileformat/pub/qtatmmgs.h
>
> Image Size and Heap Use impact (Client -Only):
> None.
>
> Platforms and Profiles Affected:
> None
>
> Distribution Libraries Affected:
> None
>
> Distribution library impact and planned action:
> None
>
> Platforms and Profiles Build Verified:
> BIF branch  -> hxclient_3_6_1_atlas_restricted
> Target(s)   -> android_all
> Profile     -> helix-client-android-full
> SYSTEM_ID   -> android-donut-arm-qsd_8x50
>
> Branch
> atlas310, atlas361, head, 401brizo
>
> Files Attached:
> diff_9762.txt
>
> Thanks
> Varun Kathuria
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.




From sgarg at real.com  Thu Jan  7 00:55:52 2010
From: sgarg at real.com ( Sushant Garg)
Date: Thu Jan  7 08:21:45 2010
Subject: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays
	incorrect duration for a wav file recorded by gnome-sound-recorder.
References: <011601ca78cd$6011f9a0$8001a8c0@adroit02a604c1>
	<7ECCEA249B7CDC49A079EC0075E999AA07D82CC716@SEAMBX.corp.real.com>
	<012301ca798f$c8a9dce0$8001a8c0@adroit02a604c1>
	<268FD6EA-49A7-42FA-AFC6-78547C20C18B@real.com>
	<01ed01ca8492$b14289e0$8001a8c0@adroit02a604c1>
	<5FC21ACD-FE11-427F-BA16-49FA0D27F818@real.com>
	<007401ca8ec6$e4d0abf0$8001a8c0@adroit02a604c1>
	
Message-ID: <004901ca8f77$39950c70$8001a8c0@adroit02a604c1>

Before calling Stat() we have a condition to check whether QI is succeeded or not & if in case it does not then we will not send a call to Stat() & return status of InitDone().

 

+    HX_RELEASE(m_pFileStatObj);

+    if(m_pFileObject)

+    {

+        HX_RESULT retVal = m_pFileObject->QueryInterface(IID_IHXFileStat, (void **) &m_pFileStatObj);    

+        if(SUCCEEDED(retVal) && m_pFileStatObj)

+        {

+            m_pFileStatObj->Stat((IHXFileStatResponse *) this);

+        }

+    }

+    return status;

 

Now if Stat() fails then we will get error in StatDone() & hence we will not get the size of file. And so we will not change m_ulDataSizeInBytes in wvffplin.cpp



Thanks & Regards
Sushant Garg
  ----- Original Message ----- 
  From: Eric Hyche 
  To: Sushant Garg 
  Cc: Datatype-Dev 
  Sent: Wednesday, January 06, 2010 8:25 PM
  Subject: Re: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-recorder.


  Looks good for the most part. However, if your QI for IHXFileStat fails, then we will hang, since no InitDone() back to the RIFF reader user will ever be made. So make sure that if either the QI for IHXFileStat fails, or the call to STat() returns failure that we properly make a failure InitDone() back to the RIFF reader user.

  Actually, the QI for IHXFileStat should not be required, since file objects are not required to implement this. So if the QI for IHXFileStat fails, then the RIFF reader should continue on normally, just without knowing the file size. If the QI for IHXFileStat() succeeds but the call to STat() returns failure, then we can return failure in InitDone() back to the RIFF reader caller.

  Eric

  On Jan 6, 2010, at 6:53 AM, Sushant Garg wrote:

  > Thanks Eric,
  >  
  > Please find the updated diff.
  >  
  > Now I am calling Read() from CRIFFReader::StatDone() rather then CRIFFReader::InitDone.
  >  
  > Thanks & Regards
  > Sushant Garg
  > ----- Original Message -----
  > From: Eric Hyche
  > To: Sushant Garg
  > Cc: Datatype-Dev
  > Sent: Monday, January 04, 2010 8:13 PM
  > Subject: Re: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-recorder.
  > 
  > You are treating IHXFileStat::Stat() like a synchronous call and there is 
  > no guarantee that it will be. Once you issue the call to Stat(), then
  > you will need to wait in StatDone() before calling back to InitDone().
  > 
  > Eric
  > 
  > On Dec 24, 2009, at 7:14 AM, Sushant Garg wrote:
  > 
  > > Eric,
  > >  
  > > Please find the updated diff.
  > >  
  > > Thanks & Regards
  > > Sushant Garg
  > > ----- Original Message -----
  > > From: Eric Hyche
  > > To: Sushant Grag
  > > Cc: Datatype-Dev
  > > Sent: Friday, December 11, 2009 12:04 AM
  > > Subject: Re: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-recorder.
  > > 
  > > Sushant,
  > > 
  > > After thinking about this some more, I think the Stat() call should be moved inside the RIFF reader, for a couple of reasons:
  > > 
  > > - centralize it in one place, so other uses of the RIFF reader don't have to do the same thing.
  > > - the most natural time to do the Stat is immediately after the IHXFileObject is Init'd, which in this case the RIFF reader does.
  > > 
  > > So I think the RIFF reader could do the IHXFileStat::Stat() call, and then store the filesize result. Then we could just add an accessor function on the RIFF reader so that users of the RIFF reader can read the size. The file size would only be valid after the CRIFFREader::Open() call had returned with a RIFFOpenDone() callback.
  > > 
  > > Eric
  > > 
  > > On Dec 10, 2009, at 6:56 AM, Sushant Grag wrote:
  > > 
  > > > Thanks Eric,
  > > >  
  > > > Please find the updated diff.
  > > >  
  > > > Thanks & Regards
  > > > Sushant Garg
  > > > ----- Original Message -----
  > > > From: Eric Hyche
  > > > To: Sushant Grag ; Datatype-Dev
  > > > Sent: Wednesday, December 09, 2009 7:17 PM
  > > > Subject: RE: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-recorder.
  > > > 
  > > > +UINT32 CRIFFReader::GetFileDataSize()
  > > > +{
  > > > + CHXString strFilePath = m_pFilename;
  > > > + const char* szFileProtocol = "file://";
  > > > + UINT32 ulFiledataSize =0;
  > > > + 
  > > > + if( !strFilePath.Left(strlen(szFileProtocol)).CompareNoCase(szFileProtocol) )
  > > > + {
  > > > +     strFilePath = strFilePath.Mid(strlen(szFileProtocol));
  > > > +     struct stat fileInfo;
  > > > +     if(!stat(strFilePath, &fileInfo))
  > > > +     {
  > > > +         ulFiledataSize = fileInfo.st_size;
  > > > +     }
  > > > + }
  > > > + return ulFiledataSize;
  > > > +}
  > > > +
  > > > 
  > > > I did not mean do a C-library stat() on the file. The file object that
  > > > the RIFF readers uses will not always be a local file that you can call stat() on.
  > > > What I meant was QI the file object for IHXFileStat and then call IHXFileStat::Stat().
  > > > You will have to implement IHXFileStatResponse::StatDone().
  > > > 
  > > > Eric
  > > > 
  > > > >-----Original Message-----
  > > > >From: datatype-dev-bounces@helixcommunity.org [mailto:datatype-dev-bounces@helixcommunity.org] On
  > > > >Behalf Of Sushant Grag
  > > > >Sent: Wednesday, December 09, 2009 7:45 AM
  > > > >To: Datatype-Dev
  > > > >Subject: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file
  > > > >recorded by gnome-sound-recorder.
  > > > >
  > > > >Project: RealPlayer for Netbook
  > > > >
  > > > >Synopsis:
  > > > >
  > > > >Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-
  > > > >recorder.
  > > > >
  > > > >
  > > > >
  > > > >Overview:
  > > > >
  > > > >There is an issue with wav files which are recorded from ubuntu sound recorder.
  > > > >
  > > > >The calculated file duration in Realplayer for linux is much & much larger then original file duration
  > > > >
  > > > >eg: file has duration of 6secs & Realplayer shows more than 3hr 22 min.
  > > > >
  > > > >Reason behind is, sound recorder adds garbage value in data chunk which leads to very big value of
  > > > >m_ulChunkBodyLen calculated in riff.cpp around line 380
  > > > >
  > > > >            if ( (UINT32)getlong(buf) == m_ulFindChunkId )
  > > > >
  > > > >            {
  > > > >
  > > > >                // Found the chunk we were asked for
  > > > >
  > > > >                m_state = RS_Ready;
  > > > >
  > > > >                m_ulChunkBodyLen = GetLong(&buf[4]);
  > > > >
  > > > >                m_ulChunkSize = m_ulChunkBodyLen;
  > > > >
  > > > >Which cause a very higher value of duration.
  > > > >
  > > > >
  > > > >
  > > > >Now I have created two different functions in riff.cpp;
  > > > >
  > > > >CRIFFReader::GetFileDataSize() & CRIFFReader::GetCurrentFileOffset() in which I am getting the length
  > > > >of file & the file offset and calling these functions in function CWaveFileFormat::RIFFFindChunkDone()
  > > > >, case WS_FindDataChunkPending to set m_ulDataSizeInBytes if "len" is greater then
  > > > >"ulDataSizeInBytes".
  > > > >
  > > > >
  > > > >
  > > > >Files Modified:
  > > > >/cvsroot/datatype/common/util/riff.cpp
  > > > >
  > > > >/cvsroot/datatype/common/util/pub/riff.h
  > > > >
  > > > >/cvsroot/datatype/wav/fileformat/wvffplin.cpp
  > > > >
  > > > >
  > > > >
  > > > >Files Added:
  > > > >
  > > > >None
  > > > >
  > > > >
  > > > >
  > > > >Platforms and Profiles Affected:
  > > > >Linux
  > > > >
  > > > >Distribution Libraries Affected:
  > > > >None.
  > > > >
  > > > >Platforms and Profiles Build Verified:
  > > > >Bif: realplay_gtk_atlas_restricted_gold_1.2
  > > > >Profile: helix-client-moblin
  > > > >Target: player_all
  > > > >
  > > > >Branch:
  > > > >Atlas347, Atlas310, Atlas3_4_10, 401 Brizo, Head
  > > > >
  > > > >
  > > > >
  > > > >Files Attached:
  > > > >
  > > > >9840_diff.txt
  > > > >
  > > > >
  > > > >
  > > > >Thanks & Regards
  > > > >Sushant Garg
  > > > <9840_diff.txt>
  > > 
  > > Eric Hyche (ehyche@real.com)
  > > Principal Engineer
  > > RealNetworks, Inc.
  > > 
  > > 
  > 
  > Eric Hyche (ehyche@real.com)
  > Principal Engineer
  > RealNetworks, Inc.
  > 
  > <9840_diff.txt>

  Eric Hyche (ehyche@real.com)
  Principal Engineer
  RealNetworks, Inc.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100107/543a23dc/attachment-0001.html
From sgarg at real.com  Thu Jan  7 04:08:39 2010
From: sgarg at real.com ( Sushant Garg)
Date: Thu Jan  7 11:34:25 2010
Subject: [datatype-dev] CR/CN: Fix for Bug 9845: Un-able to play the *.mp4
	files at http://vidfeed.homeip.net/films webpage.
Message-ID: <007e01ca8f92$28120ff0$8001a8c0@adroit02a604c1>

Project: RealPlayer for Netbook

Synopsis:

Fix for Bug 9845: Un-able to play the *.mp4 files at http://vidfeed.homeip.net/films webpage.

 

Overview:

The issue was because Decoder Specific Info Descriptor, Size is 8 for files on this site, whereas generally for most of the files Descriptor size is 2. And therefore we are getting parsing issues while parsing code in gaConfig.cpp file in function Read().

 

Files Modified:
/cvsroot/datatype/mp4/common/gaConfig.cpp

 

Files Added: 

None

 

Platforms and Profiles Affected:
Linux

Distribution Libraries Affected:
None.

Platforms and Profiles Build Verified:
Bif: realplay_gtk_atlas_restricted_gold_1.1
Profile: helix-client-moblin
Target: player_all

Branch:
Atlas347, Atlas_3_4_10, Atlas310

 

Index: gaConfig.cpp

===================================================================

RCS file: /cvsroot/datatype/mp4/common/gaConfig.cpp,v

retrieving revision 1.4

diff -u -r1.4 gaConfig.cpp

--- gaConfig.cpp          3 Jul 2007 19:09:07 -0000      1.4

+++ gaConfig.cpp       7 Jan 2010 11:49:03 -0000

@@ -331,7 +331,7 @@

                                                            switch (extensionSamplingFrequencyIndex)

                                                            {

                                                            case 0xf: // ESC, read sr from bitstream

-                                                                       extensionSamplingFrequency.Read(bs) ;

+                                                                      extensionSamplingFrequency.Read(bs, 24) ;

                                                                        break ;

                                                            case 0xd: case 0xe: // these are reserved.

                                                                        return HXR_FAIL ; 

Thanks & Regards
Sushant Garg

 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100107/cae9485c/attachment.html
From ext-shashi.merapala at nokia.com  Thu Jan  7 06:21:02 2010
From: ext-shashi.merapala at nokia.com (ext-shashi.merapala@nokia.com)
Date: Thu Jan  7 13:48:07 2010
Subject: [datatype-dev] CR: ESLM-7YHD9L - Helix_wmv controller: Conflict
 between the list
 from SupportsMimeType and actually video type (mp4) for video playback
Message-ID: 

Skipped content of type multipart/alternative-------------- next part --------------
Index: build/BIF/hxclient_2_1_0_cayennes.bif
===================================================================
RCS file: /cvsroot/client/build/BIF/hxclient_2_1_0_cayennes.bif,v
retrieving revision 1.34
diff -u -w -r1.34 hxclient_2_1_0_cayennes.bif
--- build/BIF/hxclient_2_1_0_cayennes.bif	20 Oct 2009 15:01:08 -0000	1.34
+++ build/BIF/hxclient_2_1_0_cayennes.bif	6 Jan 2010 10:39:17 -0000
@@ -7742,7 +7742,7 @@
 
         
      
-     
+     
        
 
        

Index: symbianMmf/audiocontroller/10207B64.rss
===================================================================
RCS file: /cvsroot/clientapps/symbianMmf/audiocontroller/10207B64.rss,v
retrieving revision 1.1.2.4
diff -u -w -r1.1.2.4 10207B64.rss
--- symbianMmf/audiocontroller/10207B64.rss	30 Oct 2009 16:40:52 -0000	1.1.2.4
+++ symbianMmf/audiocontroller/10207B64.rss	6 Jan 2010 11:58:15 -0000
@@ -50,6 +50,16 @@
 					default_data = "?";
 					opaque_data = "Real0x101f5d07.rm.ra.RMF?application/x-pn-realmediaaudio/x-pn-realaudio";
 					rom_only = ROM_ONLY_FLAG;
+				},
+				IMPLEMENTATION_INFO
+			        {
+				        // WMA
+				        implementation_uid = 0x10283350;
+				        version_no = 1;
+				        display_name = "Helix Windows Media Audio";
+				        default_data = "?";
+				        opaque_data = "Nokia0x101f5d07.wma0&?uaudio/x-ms-wma";
+				        rom_only = ROM_ONLY_FLAG;
 				}
 			};
 		}
Index: symbianMmf/audiocontroller/controllersis
===================================================================
RCS file: /cvsroot/clientapps/symbianMmf/audiocontroller/controllersis,v
retrieving revision 1.1.2.8
diff -u -w -r1.1.2.8 controllersis
--- symbianMmf/audiocontroller/controllersis	13 Apr 2009 14:54:02 -0000	1.1.2.8
+++ symbianMmf/audiocontroller/controllersis	6 Jan 2010 11:58:15 -0000
@@ -142,6 +142,8 @@
 file = open(dll_names_file, 'w')
 for dll in lib_files_copy:
     file.write('%s\n' % os.path.basename(dll))
+for dll in additional_lib_names_copy:
+    file.write('%s\n' % os.path.basename(dll))    
 
 file.close()    
 
Index: symbianMmf/audiocontroller/installMMF.pcf
===================================================================
RCS file: /cvsroot/clientapps/symbianMmf/audiocontroller/installMMF.pcf,v
retrieving revision 1.1.2.4
diff -u -w -r1.1.2.4 installMMF.pcf
--- symbianMmf/audiocontroller/installMMF.pcf	26 Aug 2008 16:11:23 -0000	1.1.2.4
+++ symbianMmf/audiocontroller/installMMF.pcf	6 Jan 2010 11:58:15 -0000
@@ -118,6 +118,9 @@
 #
 lib_names = []
 
+# Plugin Dlls [built separately] that need to be included to the *dll_names*.txt files
+additional_lib_names = []
+
 # some dlls like vidplin aggregate functionality offered individually with
 # other dlls; this list tracks those dlls that can be removed from the list
 # of dlls to install because another dll duplicates or replaces the functionality
@@ -167,7 +170,10 @@
      'log'             : 'common/log/logsystem/[target]/log.dll',
      'logobserverfile' : 'common/log/logobserver/[target]/logobserverfile.dll',
      'arma'            : 'datatype/mp4/audio/mdf/[target]/arma.dll',
-     'hxmetadataeng'   : 'datatype/xps/fileformat/[target]/hxmetadataeng.dll'
+     'hxmetadataeng'   : 'datatype/xps/fileformat/[target]/hxmetadataeng.dll',
+     'asfff'           : 'datatype/wm/fileformat/[target]/asfff.dll',
+     'wma9'            : 'datatype/mdf/audio/arm/wma/[target]/wma9.dll',
+     'wmarender'       : 'datatype/wm/audio/renderer/[target]/wmarender.dll'
 }
 
 #
@@ -198,9 +204,22 @@
             newList.append(item)
     return newList
 
+def AddAdditionalDLLs(*files):
+    global additional_lib_names      
+    for f in files:
+        additional_lib_names.append(f)    
+
 # always add client core dll
 Add('clntcore')
 
+# always add asf file format
+Add('asfff')
+Add('wma9')
+Add('wmarender')
+
+# add hxwmdrmplugin to *dll_names*.txt 
+AddAdditionalDLLs('hxwmdrmplugin')
+
 if project.IsDefined("HELIX_FEATURE_METADATAENG"):
     Add('hxmetadataeng')
 
@@ -252,6 +271,13 @@
     path = os.path.normpath(path)
     lib_files_copy.append(path)
 
+additional_lib_names_copy = []
+for f in additional_lib_names:
+    path = os.path.join(playerDllDir, f)
+    path += ".dll"
+    path = os.path.normpath(path)
+    additional_lib_names_copy.append(path)    
+
 #
 # payld_dll_files, payld_rsc_files
 #
Index: symbianMmf/videocontroller/101F8513.rss
===================================================================
RCS file: /cvsroot/clientapps/symbianMmf/videocontroller/101F8513.rss,v
retrieving revision 1.3.2.13
diff -u -w -r1.3.2.13 101F8513.rss
--- symbianMmf/videocontroller/101F8513.rss	30 Oct 2009 16:47:48 -0000	1.3.2.13
+++ symbianMmf/videocontroller/101F8513.rss	6 Jan 2010 11:58:15 -0000
@@ -157,6 +157,16 @@
 					default_data = "?";
 					opaque_data = "Real0x101f5d07.aviRIFF????AVIapplication/x-pn-avi-pluginvideo/avivideo/x-msvideovideo/msvideo";
 					rom_only = ROM_ONLY_FLAG;
+				},
+				IMPLEMENTATION_INFO
+			        {
+				        // WMV
+				        implementation_uid = 0x10283349;
+				        version_no = 1;
+				        display_name = "Helix Windows Media 9";
+				        default_data = "?";
+				        opaque_data = "Nokia0x101f5d070x101f5d08.wmv0&?uvideo/x-ms-wmv";
+				        rom_only = ROM_ONLY_FLAG;
 				}
 			};
 		}
Index: symbianMmf/videocontroller/MmfSis
===================================================================
RCS file: /cvsroot/clientapps/symbianMmf/videocontroller/MmfSis,v
retrieving revision 1.2.2.12
diff -u -w -r1.2.2.12 MmfSis
--- symbianMmf/videocontroller/MmfSis	13 Apr 2009 14:54:02 -0000	1.2.2.12
+++ symbianMmf/videocontroller/MmfSis	6 Jan 2010 11:58:15 -0000
@@ -145,6 +145,8 @@
 file = open(dll_names_file, 'w')
 for dll in lib_files_copy:
     file.write('%s\n' % os.path.basename(dll))
+for dll in additional_lib_names_copy:
+    file.write('%s\n' % os.path.basename(dll))    
 
 file.close()    
 
Index: symbianMmf/videocontroller/installMMF.pcf
===================================================================
RCS file: /cvsroot/clientapps/symbianMmf/videocontroller/installMMF.pcf,v
retrieving revision 1.5.2.21
diff -u -w -r1.5.2.21 installMMF.pcf
--- symbianMmf/videocontroller/installMMF.pcf	16 Oct 2009 17:43:48 -0000	1.5.2.21
+++ symbianMmf/videocontroller/installMMF.pcf	6 Jan 2010 11:58:16 -0000
@@ -125,6 +125,9 @@
 #
 lib_names = []
 
+# Plugin Dlls [built separately] that need to be included to the *dll_names*.txt files
+additional_lib_names = []
+
 # some dlls like vidplin aggregate functionality offered individually with
 # other dlls; this list tracks those dlls that can be removed from the list
 # of dlls to install because another dll duplicates or replaces the functionality
@@ -180,7 +183,10 @@
      'XPSFileFormat'   : 'datatype/xps/fileformat/[target]/XPSFileFormat.dll',
      'hxmetadataeng'   : 'datatype/xps/fileformat/[target]/hxmetadataeng.dll',
      'avifformat'      : 'datatype/avi/fileformat/[target]/avifformat.dll',
-     'mkvff'           : 'datatype/mkv/fileformat/[target]/mkvff.dll'
+     'mkvff'           : 'datatype/mkv/fileformat/[target]/mkvff.dll',
+     'asfff'           : 'datatype/wm/fileformat/[target]/asfff.dll',
+     'wma9'            : 'datatype/mdf/audio/arm/wma/[target]/wma9.dll',
+     'wmarender'       : 'datatype/wm/audio/renderer/[target]/wmarender.dll'
 
 }
 
@@ -212,9 +218,22 @@
             newList.append(item)
     return newList
 
+def AddAdditionalDLLs(*files):
+    global additional_lib_names      
+    for f in files:
+        additional_lib_names.append(f)    
+
 # always add client core dll
 Add('clntcore')
 
+# always add asf file format
+Add('asfff')
+Add('wma9')
+Add('wmarender')
+
+# add hxwmdrmplugin to *dll_names*.txt 
+AddAdditionalDLLs('hxwmdrmplugin')
+
 if project.IsDefined("HELIX_FEATURE_S60_PROGDOWN"):
     Add('progdownfs')
 
@@ -338,6 +357,13 @@
     path = os.path.normpath(path)
     lib_files_copy.append(path)
 
+additional_lib_names_copy = []
+for f in additional_lib_names:
+    path = os.path.join(playerDllDir, f)
+    path += ".dll"
+    path = os.path.normpath(path)
+    additional_lib_names_copy.append(path)
+    
 #
 # payld_dll_files, payld_rsc_files
 #
@@ -349,7 +375,8 @@
     'mdfmp4payloadformat.dll'     : 'datatype/mdf/video/format/mp4/[target]/mdfmp4payloadformat.dll',
     'mdfrvxpayloadformat.dll'     : 'datatype/mdf/video/format/rm/[target]/mdfrvxpayloadformat.dll',
     'mdfh264payloadformat.dll'    : 'datatype/mdf/video/format/h264/[target]/mdfh264payloadformat.dll',
-    'mdfflvpayloadformat.dll'     : 'datatype/mdf/video/format/flv/[target]/mdfflvpayloadformat.dll' }
+    'mdfflvpayloadformat.dll'     : 'datatype/mdf/video/format/flv/[target]/mdfflvpayloadformat.dll',
+    'mdfwmvpayloadformat.dll'     : 'datatype/mdf/video/format/wmv/[target]/mdfwmvpayloadformat.dll' }
 
 payld_rsc_names = []
 
@@ -359,11 +386,13 @@
     'mdfrvxpayloadformat.rsc'     : 'datatype/mdf/video/format/rm/[target]/mdfrvxpayloadformat.rsc', 
     'mdfh264payloadformat.rsc'    : 'datatype/mdf/video/format/h264/[target]/mdfh264payloadformat.rsc',
     'mdfflvpayloadformat.rsc'     : 'datatype/mdf/video/format/flv/[target]/mdfflvpayloadformat.rsc',
+    'mdfwmvpayloadformat.rsc'     : 'datatype/mdf/video/format/wmv/[target]/mdfwmvpayloadformat.rsc',
     '10207474.rsc'                : 'datatype/mdf/video/format/h263/[target]/10207474.rsc', 
     '10207476.rsc'                : 'datatype/mdf/video/format/mp4/[target]/10207476.rsc',
     '10207478.rsc'                : 'datatype/mdf/video/format/rm/[target]/10207478.rsc',
     '1020747a.rsc'                : 'datatype/mdf/video/format/h264/[target]/1020747a.rsc',
-    '1028334d.rsc'                : 'datatype/mdf/video/format/flv/[target]/1028334d.rsc' }
+    '1028334d.rsc'                : 'datatype/mdf/video/format/flv/[target]/1028334d.rsc',
+    '10283353.rsc'                : 'datatype/mdf/video/format/wmv/[target]/10283353.rsc' }
 
 #
 # some helpers to reduce clutter...
@@ -383,6 +412,7 @@
 AddPayldDllMdf( 'mdfrvxpayloadformat.dll'  )
 AddPayldDllMdf( 'mdfh264payloadformat.dll' )
 AddPayldDllMdf( 'mdfflvpayloadformat.dll'  )
+AddPayldDllMdf( 'mdfwmvpayloadformat.dll'  )
 
 def AddPayldRsc(*files):
     ''' add files to list of files to install '''
@@ -400,12 +430,14 @@
     AddPayldRscMdf( 'mdfrvxpayloadformat.rsc'  )
     AddPayldRscMdf( 'mdfh264payloadformat.rsc' )
     AddPayldRscMdf( 'mdfflvpayloadformat.rsc'  )
+    AddPayldRscMdf( 'mdfwmvpayloadformat.rsc'  )
 else:
     AddPayldRscMdf( '10207474.rsc' )
     AddPayldRscMdf( '10207476.rsc' )
     AddPayldRscMdf( '10207478.rsc' )
     AddPayldRscMdf( '1020747a.rsc' )
     AddPayldRscMdf( '1028334d.rsc' )
+    AddPayldRscMdf( '10283353.rsc' )
 
 # add make copy output dir prefix and .dll suffix, e.g. '../../debug/foo.dll'
 payld_dll_files_copy = []

Index: tools/metadataeng/engine/platform/symbian/hxmetadata_dlls.txt
===================================================================
RCS file: /cvsroot/datatype/tools/metadataeng/engine/platform/symbian/hxmetadata_dlls.txt,v
retrieving revision 1.1.2.3
diff -u -w -r1.1.2.3 hxmetadata_dlls.txt
--- tools/metadataeng/engine/platform/symbian/hxmetadata_dlls.txt	16 Oct 2009 19:40:29 -0000	1.1.2.3
+++ tools/metadataeng/engine/platform/symbian/hxmetadata_dlls.txt	6 Jan 2010 12:11:13 -0000
@@ -3,3 +3,4 @@
 smplfsys.dll
 mkvff.dll
 avifformat.dll
+asfff.dll

From ehyche at real.com  Thu Jan  7 07:10:22 2010
From: ehyche at real.com (Eric Hyche)
Date: Thu Jan  7 14:36:06 2010
Subject: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays
	incorrect duration for a wav file recorded by gnome-sound-recorder.
In-Reply-To: <004901ca8f77$39950c70$8001a8c0@adroit02a604c1>
References: <011601ca78cd$6011f9a0$8001a8c0@adroit02a604c1>
	<7ECCEA249B7CDC49A079EC0075E999AA07D82CC716@SEAMBX.corp.real.com>
	<012301ca798f$c8a9dce0$8001a8c0@adroit02a604c1>
	<268FD6EA-49A7-42FA-AFC6-78547C20C18B@real.com>
	<01ed01ca8492$b14289e0$8001a8c0@adroit02a604c1>
	<5FC21ACD-FE11-427F-BA16-49FA0D27F818@real.com>
	<007401ca8ec6$e4d0abf0$8001a8c0@adroit02a604c1>
	
	<004901ca8f77$39950c70$8001a8c0@adroit02a604c1>
Message-ID: <0833E151-A5C6-4A11-9F0B-411840816C87@real.com>

But if I'm reading the diff correctly, if the QI for IHXFileStat fails, then we never call the RIFF reader user back with CRiffResponse::InitDone(), correct? If so, then we've hung the app.

Eric

On Jan 7, 2010, at 3:55 AM, Sushant Garg wrote:

> Before calling Stat() we have a condition to check whether QI is succeeded or not & if in case it does not then we will not send a call to Stat() & return status of InitDone().
>  
> +    HX_RELEASE(m_pFileStatObj);
> +    if(m_pFileObject)
> +    {
> +        HX_RESULT retVal = m_pFileObject->QueryInterface(IID_IHXFileStat, (void **) &m_pFileStatObj);   
> +        if(SUCCEEDED(retVal) && m_pFileStatObj)
> +        {
> +            m_pFileStatObj->Stat((IHXFileStatResponse *) this);
> +        }
> +    }
> +    return status;
>  
> Now if Stat() fails then we will get error in StatDone() & hence we will not get the size of file. And so we will not change m_ulDataSizeInBytes in wvffplin.cpp
>  
> Thanks & Regards
> Sushant Garg
> ----- Original Message -----
> From: Eric Hyche
> To: Sushant Garg
> Cc: Datatype-Dev
> Sent: Wednesday, January 06, 2010 8:25 PM
> Subject: Re: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-recorder.
> 
> Looks good for the most part. However, if your QI for IHXFileStat fails, then we will hang, since no InitDone() back to the RIFF reader user will ever be made. So make sure that if either the QI for IHXFileStat fails, or the call to STat() returns failure that we properly make a failure InitDone() back to the RIFF reader user.
> 
> Actually, the QI for IHXFileStat should not be required, since file objects are not required to implement this. So if the QI for IHXFileStat fails, then the RIFF reader should continue on normally, just without knowing the file size. If the QI for IHXFileStat() succeeds but the call to STat() returns failure, then we can return failure in InitDone() back to the RIFF reader caller.
> 
> Eric
> 
> On Jan 6, 2010, at 6:53 AM, Sushant Garg wrote:
> 
> > Thanks Eric,
> >  
> > Please find the updated diff.
> >  
> > Now I am calling Read() from CRIFFReader::StatDone() rather then CRIFFReader::InitDone.
> >  
> > Thanks & Regards
> > Sushant Garg
> > ----- Original Message -----
> > From: Eric Hyche
> > To: Sushant Garg
> > Cc: Datatype-Dev
> > Sent: Monday, January 04, 2010 8:13 PM
> > Subject: Re: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-recorder.
> > 
> > You are treating IHXFileStat::Stat() like a synchronous call and there is 
> > no guarantee that it will be. Once you issue the call to Stat(), then
> > you will need to wait in StatDone() before calling back to InitDone().
> > 
> > Eric
> > 
> > On Dec 24, 2009, at 7:14 AM, Sushant Garg wrote:
> > 
> > > Eric,
> > >  
> > > Please find the updated diff.
> > >  
> > > Thanks & Regards
> > > Sushant Garg
> > > ----- Original Message -----
> > > From: Eric Hyche
> > > To: Sushant Grag
> > > Cc: Datatype-Dev
> > > Sent: Friday, December 11, 2009 12:04 AM
> > > Subject: Re: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-recorder.
> > > 
> > > Sushant,
> > > 
> > > After thinking about this some more, I think the Stat() call should be moved inside the RIFF reader, for a couple of reasons:
> > > 
> > > - centralize it in one place, so other uses of the RIFF reader don't have to do the same thing.
> > > - the most natural time to do the Stat is immediately after the IHXFileObject is Init'd, which in this case the RIFF reader does.
> > > 
> > > So I think the RIFF reader could do the IHXFileStat::Stat() call, and then store the filesize result. Then we could just add an accessor function on the RIFF reader so that users of the RIFF reader can read the size. The file size would only be valid after the CRIFFREader::Open() call had returned with a RIFFOpenDone() callback.
> > > 
> > > Eric
> > > 
> > > On Dec 10, 2009, at 6:56 AM, Sushant Grag wrote:
> > > 
> > > > Thanks Eric,
> > > >  
> > > > Please find the updated diff.
> > > >  
> > > > Thanks & Regards
> > > > Sushant Garg
> > > > ----- Original Message -----
> > > > From: Eric Hyche
> > > > To: Sushant Grag ; Datatype-Dev
> > > > Sent: Wednesday, December 09, 2009 7:17 PM
> > > > Subject: RE: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-recorder.
> > > > 
> > > > +UINT32 CRIFFReader::GetFileDataSize()
> > > > +{
> > > > + CHXString strFilePath = m_pFilename;
> > > > + const char* szFileProtocol = "file://";
> > > > + UINT32 ulFiledataSize =0;
> > > > + 
> > > > + if( !strFilePath.Left(strlen(szFileProtocol)).CompareNoCase(szFileProtocol) )
> > > > + {
> > > > +     strFilePath = strFilePath.Mid(strlen(szFileProtocol));
> > > > +     struct stat fileInfo;
> > > > +     if(!stat(strFilePath, &fileInfo))
> > > > +     {
> > > > +         ulFiledataSize = fileInfo.st_size;
> > > > +     }
> > > > + }
> > > > + return ulFiledataSize;
> > > > +}
> > > > +
> > > > 
> > > > I did not mean do a C-library stat() on the file. The file object that
> > > > the RIFF readers uses will not always be a local file that you can call stat() on.
> > > > What I meant was QI the file object for IHXFileStat and then call IHXFileStat::Stat().
> > > > You will have to implement IHXFileStatResponse::StatDone().
> > > > 
> > > > Eric
> > > > 
> > > > >-----Original Message-----
> > > > >From: datatype-dev-bounces@helixcommunity.org [mailto:datatype-dev-bounces@helixcommunity.org] On
> > > > >Behalf Of Sushant Grag
> > > > >Sent: Wednesday, December 09, 2009 7:45 AM
> > > > >To: Datatype-Dev
> > > > >Subject: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file
> > > > >recorded by gnome-sound-recorder.
> > > > >
> > > > >Project: RealPlayer for Netbook
> > > > >
> > > > >Synopsis:
> > > > >
> > > > >Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-
> > > > >recorder.
> > > > >
> > > > >
> > > > >
> > > > >Overview:
> > > > >
> > > > >There is an issue with wav files which are recorded from ubuntu sound recorder.
> > > > >
> > > > >The calculated file duration in Realplayer for linux is much & much larger then original file duration
> > > > >
> > > > >eg: file has duration of 6secs & Realplayer shows more than 3hr 22 min.
> > > > >
> > > > >Reason behind is, sound recorder adds garbage value in data chunk which leads to very big value of
> > > > >m_ulChunkBodyLen calculated in riff.cpp around line 380
> > > > >
> > > > >            if ( (UINT32)getlong(buf) == m_ulFindChunkId )
> > > > >
> > > > >            {
> > > > >
> > > > >                // Found the chunk we were asked for
> > > > >
> > > > >                m_state = RS_Ready;
> > > > >
> > > > >                m_ulChunkBodyLen = GetLong(&buf[4]);
> > > > >
> > > > >                m_ulChunkSize = m_ulChunkBodyLen;
> > > > >
> > > > >Which cause a very higher value of duration.
> > > > >
> > > > >
> > > > >
> > > > >Now I have created two different functions in riff.cpp;
> > > > >
> > > > >CRIFFReader::GetFileDataSize() & CRIFFReader::GetCurrentFileOffset() in which I am getting the length
> > > > >of file & the file offset and calling these functions in function CWaveFileFormat::RIFFFindChunkDone()
> > > > >, case WS_FindDataChunkPending to set m_ulDataSizeInBytes if "len" is greater then
> > > > >"ulDataSizeInBytes".
> > > > >
> > > > >
> > > > >
> > > > >Files Modified:
> > > > >/cvsroot/datatype/common/util/riff.cpp
> > > > >
> > > > >/cvsroot/datatype/common/util/pub/riff.h
> > > > >
> > > > >/cvsroot/datatype/wav/fileformat/wvffplin.cpp
> > > > >
> > > > >
> > > > >
> > > > >Files Added:
> > > > >
> > > > >None
> > > > >
> > > > >
> > > > >
> > > > >Platforms and Profiles Affected:
> > > > >Linux
> > > > >
> > > > >Distribution Libraries Affected:
> > > > >None.
> > > > >
> > > > >Platforms and Profiles Build Verified:
> > > > >Bif: realplay_gtk_atlas_restricted_gold_1.2
> > > > >Profile: helix-client-moblin
> > > > >Target: player_all
> > > > >
> > > > >Branch:
> > > > >Atlas347, Atlas310, Atlas3_4_10, 401 Brizo, Head
> > > > >
> > > > >
> > > > >
> > > > >Files Attached:
> > > > >
> > > > >9840_diff.txt
> > > > >
> > > > >
> > > > >
> > > > >Thanks & Regards
> > > > >Sushant Garg
> > > > <9840_diff.txt>
> > > 
> > > Eric Hyche (ehyche@real.com)
> > > Principal Engineer
> > > RealNetworks, Inc.
> > > 
> > > 
> > 
> > Eric Hyche (ehyche@real.com)
> > Principal Engineer
> > RealNetworks, Inc.
> > 
> > <9840_diff.txt>
> 
> Eric Hyche (ehyche@real.com)
> Principal Engineer
> RealNetworks, Inc.
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From ehyche at real.com  Thu Jan  7 07:13:35 2010
From: ehyche at real.com (Eric Hyche)
Date: Thu Jan  7 14:40:11 2010
Subject: [datatype-dev] Re: [Nokia-private-dev] CR: ESLM-7YHD9L - Helix_wmv
 controller:
 Conflict between the list from SupportsMimeType and actually video type
 (mp4) for video playback
In-Reply-To: 
References: 
Message-ID: <553FE252-87A4-46E1-8434-2381CAED7A31@real.com>

Looks OK to me.

On Jan 7, 2010, at 9:21 AM,   wrote:

>  
> "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:  ext-shashi.merapala@nokia.com
>  
> Reviewed by:  ashish.as.gupta@nokia.com
>  
> Date:  01/07/2010
>  
> Project:  SymbianMmf_wm
>  
> Error Id:  ESLM-7YHD9L
>  
> Synopsis:  Helix_wmv controller: Conflict between the list from SupportsMimeType and actually video type (mp4) for video playback
>  
> Overview:  The WMV Extension Controller needs to be rolled up into the rest of Helix so that the Helix audio/video controllers support the Windows Media content.
>            
> Solution:  Diffs attached
>  
> Files removed:  The folder ?wmvextcontroller? and its contents are removed from \clientapps\symbianMmf\
>  
> Files added:  None
>  
> Files modified:  \client\build\BIF\hxclient_2_1_0_cayennes.bif
>                  \clientapps\symbianMmf\videocontroller\installMMF.pcf
>                  \clientapps\symbianMmf\videocontroller\MmfSis
>                  \clientapps\symbianMmf\audiocontroller\installMMF.pcf
>                  \clientapps\symbianMmf\audiocontroller\controllersis   
>                  \clientapps\symbianMmf\videocontroller\101F8513.rss
>                  \clientapps\symbianMmf\audiocontroller\10207B64.rss
>                  \datatype\tools\metadataeng\engine\platform\symbian\hxmetadata_dlls.txt
>                            
> Image size and heap use impact:  Approx. 289 kb of space saved on image creation
>  
> Module release testing (STIF):  Passed
>  
> Test case(s) added:  No
>  
> Memory leak check performed:  Yes. No new leaks introduced
>  
> Platforms and profiles build verified:  helix-client-s60-52-mmf-mdf-dsp
>  
> Platforms and profiles functionality verified:  armv5, winscw
>  
> Branch:  210CayS, HEAD, 420Brizo
>  
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From EXT-Edith.3.Hernandez at nokia.com  Thu Jan  7 14:36:45 2010
From: EXT-Edith.3.Hernandez at nokia.com (EXT-Edith.3.Hernandez@nokia.com)
Date: Thu Jan  7 22:02:23 2010
Subject: [datatype-dev] CR:PAMK-7YKKXV Helix Metadata Engine does not clean
	up archived data when upgraded/downgraded & PAMK-7YKK6F Helix
	engine thubmail does not clean up archived data when
	upgradeed/downgraded
Message-ID: 

"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:  EXT-Edith.3.Hernandez@nokia.com
Reviewed by:
Date: 07/01/2010
ErrorId:  PAMK-7YKKXV , PAMK-7YKK6F
Project: symbianMmf_wm
 
Synopsis:
PAMK-7YKKXV  Helix Metadata Engine does not clean up archived data when upgraded/downgraded
PAMK-7YKK6F  Helix engine thubmail does not clean up archived data when upgradeed/downgraded
 
Overview:
TNE needs to be able to recognize, when it starts up, that it has been upgraded/downgraded then clean up and regenerate archived data files (hxmetadata_archive.txt, hxthumbnail_archive.txt, MdfPluginArchive.txt, plugin_archive.txt ).  Versioning information should be stored in HXTNEngine_3_2.cfg.

MDE needs to be able to recognize, when it starts up, that it has been upgraded/downgraded then clean up and regenerate archived data files (hxmetadata_archive.txt, hxthumbnail_archive.txt, MdfPluginArchive.txt, plugin_archive.txt ).  Versioning information should be stored in HXMDEngine_3_2.cfg.

Solution:
In   CHXSymbianMetaDataEng::SetupPreferences() check 
 a) If MMFControllerVersion does not exist in config file: store MMFControllerVersion in the config file and delete required txt files.
 b) If MMFControllerVersion has changed: store the New MMFControllerVersion in the config file and delete required txt files.
 
Config file could be HXMDEngine_3_2.cfg  or  HXTNEngine_3_2.cfg, It depends on which file we are working on,  therefore same code fix both bugs.
 
Files modified:
/cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
/cvsroot/datatype/tools/metadataeng/engine/pub/platform/symbian/symbian_metadataeng.h
 
Files added: None
Image Size and Heap Use impact: None
Module Release testing (STIF) : Passed
Test case(s) Added  : No
Memory leak check performed : Yes
Platforms and Profiles Build Verified:helix-client-s60-50-mmf-mdf-arm
Platforms and Profiles Functionality verified: armv5, winscw
Branch:  223Cays, 221Cays, HEAD
 
-------------- next part --------------
? Makefile
? Umakefil.upp
? armv5-dbg32
? armv5-rel32
? hxmetadataeng_dll_stub.c
? hxmetadataeng_ordinal.dat
? hxmetadataeng{000a0000}.def
? platform/symbian/Copy of symbian_metadataeng.cpp
? pub/platform/symbian/Copy of symbian_metadataeng.h
Index: platform/symbian/symbian_metadataeng.cpp
===================================================================
RCS file: /cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp,v
retrieving revision 1.1.2.5
diff -u -w -r1.1.2.5 symbian_metadataeng.cpp
--- platform/symbian/symbian_metadataeng.cpp	19 Jan 2009 22:29:17 -0000	1.1.2.5
+++ platform/symbian/symbian_metadataeng.cpp	22 Dec 2009 18:44:37 -0000
@@ -61,6 +61,8 @@
 #include "dllpath.h"
 
 #include "hxmetadatalog.h"
+#include "platform.h" //TARVER_STR_PLATFORM
+#include "hxprefutil.h" // ReadPrefCSTRING( ) 
 
 
 static const int KMinMetaDataStartupMemory = 512*1024;
@@ -72,6 +74,8 @@
 
 #define DESTOSTR(x) (CHXSymbianString::DescToString(x))
 
+#define CHXAV_MMFControllerVersion   "MMFControllerVersion" // key preference in config file
+
 void GetInstallDrive(CHXString &strDrive)
 {
 
@@ -500,6 +504,39 @@
 
     if (SUCCEEDED(hxr))
     {
+        // once open the config file, verify if the MMFControllerVersion has changed
+        //get MMFControllerVersion from platform.h
+        CHXString strMmfControllerVerCur = TARVER_STR_PLATFORM;
+        
+        // get MMFControllerVersion from cfg file
+        //cfg file could be HXMDEngine_3_2.cfg  or  HXTNEngine_3_2.cfg, It depends on which file we are working on
+        CHXString strMmfControllerVerOld;
+        hxr = ReadPrefCSTRING( m_pPrefs, CHXAV_MMFControllerVersion, strMmfControllerVerOld );
+
+        if( !SUCCEEDED(hxr) ) 
+        {
+            // MMFControllerVersion does not exist in cfg file ... add  MMFControllerVersion and delete files 
+            CreatePrefIfNoExist( CHXAV_MMFControllerVersion,strMmfControllerVerCur );
+            DeleteFiles();
+        }
+        else 
+        {
+            //MMFControllerVersion exists in cfg file ..... compare MMFControllerVersion from cfg VS MMFControllerVersion  from platform.h
+            if ( strMmfControllerVerCur != strMmfControllerVerOld ) 
+            {
+                // MMFControllerVersions are diferent then delete files and replace in cfg the value of MMFControllerVersion  with the new value
+                DeleteFiles();              
+                IHXBuffer* pBuffer = new CHXBuffer;
+                if(pBuffer)
+                {
+                    pBuffer->AddRef();
+                    pBuffer->Set( (const unsigned char*)(const char*)strMmfControllerVerCur, strlen(strMmfControllerVerCur) + 1 );
+                    m_pPrefs->WritePref( CHXAV_MMFControllerVersion, pBuffer );
+                }
+                HX_RELEASE( pBuffer );
+            }
+        }
+
     //   set plugin archieve file name
     CHXString strPluginArchiveFileName;
     
@@ -775,3 +812,32 @@
   return;
 }
 
+//------------------------------------------------------------------------------
+// CHXSymbianMetaDataEng::DeleteFiles
+//Delete txt files. Called when MMFControllerVersion has changed in cfg file
+//------------------------------------------------------------------------------
+void CHXSymbianMetaDataEng::DeleteFiles()
+{
+	RFs fsrv;
+    _LIT(KHxmetadataArchiveAndPath, "c:\\data\\hxmetadata_archive.txt ");
+    _LIT(KMdfPluginArchiveAndPath, "c:\\data\\MdfPluginArchive.txt");
+    _LIT(KPluginArchiveAndPath, "c:\\data\\plugin_archive.txt ");
+    _LIT(KHxthumbnailArchiveAndPath, "c:\\data\\hxthumbnail_archive.txt ");
+     	    
+    TInt err = KErrNone;
+    CleanupClosePushL( fsrv );
+
+    err = fsrv.Connect();
+    if ( err != KErrNone )
+    {
+		User::Leave( err );
+    }
+ 
+    fsrv.Delete(KHxmetadataArchiveAndPath);
+    fsrv.Delete(KMdfPluginArchiveAndPath);
+    fsrv.Delete(KPluginArchiveAndPath);
+    fsrv.Delete(KHxthumbnailArchiveAndPath);
+ 
+    CleanupStack::PopAndDestroy( 1 );
+}
+
Index: pub/platform/symbian/symbian_metadataeng.h
===================================================================
RCS file: /cvsroot/datatype/tools/metadataeng/engine/pub/platform/symbian/symbian_metadataeng.h,v
retrieving revision 1.1.2.5
diff -u -w -r1.1.2.5 symbian_metadataeng.h
--- pub/platform/symbian/symbian_metadataeng.h	26 Jan 2009 20:50:27 -0000	1.1.2.5
+++ pub/platform/symbian/symbian_metadataeng.h	18 Dec 2009 17:20:31 -0000
@@ -176,6 +176,7 @@
   HX_RESULT     CheckRootConfigFile();  
   void          GetPropertyL(MHXEngineProperties::EHXEngineProperty 
                                 PropertyId, CHXString &sValue);
+  void          DeleteFiles();
   
 protected:
   CHXSymbianMetaDataEng();
From gahluwalia at real.com  Thu Jan  7 23:46:21 2010
From: gahluwalia at real.com (Gurpreet)
Date: Fri Jan  8 07:12:00 2010
Subject: [datatype-dev] CR/CN: Bug 9959: appear garbage picture when switch
 playing two VP6 files
Message-ID: <4B46E2CD.6060406@real.com>

Synopsis:
Bug 9959: appear garbage picture when switch playing two VP6 files

Overview:
The issue is because we are releasing active frame while its being 
blitted(in Color Conversion).
For hardware decoder we have implemented EndStream in respective 
renderer so that the active frame is released before decoder is closed 
but the active frame is being released with out check.
We have reverted earlier change and now the active frame is released 
when we have closed BltrPump and have DisplayMutex Lock.

Files Modified:
datatype/common/vidrend/vidrend.cpp
datatype/h263/renderer/h263video.cpp
datatype/h263/renderer/pub/h263video.h
datatype/mp4/video/renderer/mp4video.cpp
datatype/mp4/video/renderer/pub/mp4video.h
datatype/wm/video/renderer/wmvrender.cpp
datatype/wm/video/renderer/pub/wmvrender.h


Image Size and Heap Use impact (Client -Only):
None

Platforms and Profiles Build Verified:
BIF branch            -> atlas 361
Target(s)                -> android_all
Profile                    -> helix-client-android-surf_8x50
SYSTEM_ID        -> android-donut-arm.eabi

Files Attached::
vidrend.diff
mp4rend,diff
h263rend.diff
wmrend.diff

Thanks & Best Regards,
Gurpreet
-------------- next part --------------
Index: vidrend.cpp
===================================================================
RCS file: /cvsroot/datatype/common/vidrend/vidrend.cpp,v
retrieving revision 1.97.2.7.2.2
diff -u -r1.97.2.7.2.2 vidrend.cpp
--- vidrend.cpp	12 Nov 2009 10:08:37 -0000	1.97.2.7.2.2
+++ vidrend.cpp	8 Jan 2010 07:10:09 -0000
@@ -797,6 +797,12 @@
     }
 
     DisplayMutex_Lock();
+    if (m_pActiveVideoPacket)
+    {
+        m_pActiveVideoPacket->Clear();
+        delete m_pActiveVideoPacket;
+        m_pActiveVideoPacket = NULL;
+    }
     if (m_pVideoFormat)
     {
 	m_pVideoFormat->Close();
-------------- next part --------------
Index: mp4video.cpp
===================================================================
RCS file: /cvsroot/datatype/mp4/video/renderer/mp4video.cpp,v
retrieving revision 1.13.8.2.6.1
diff -u -r1.13.8.2.6.1 mp4video.cpp
--- mp4video.cpp	19 Nov 2009 04:03:20 -0000	1.13.8.2.6.1
+++ mp4video.cpp	8 Jan 2010 07:10:47 -0000
@@ -100,18 +100,6 @@
     HX_RELEASE(m_pMP4VideoFormat);
 }
 
-STDMETHODIMP CMP4VideoRenderer::EndStream()
-{
-    if (m_pActiveVideoPacket)
-    {
-        m_pActiveVideoPacket->Clear();
-        delete m_pActiveVideoPacket;
-        m_pActiveVideoPacket = NULL;
-    }
-    CVideoRenderer::EndStream();
-
-    return HXR_OK;
-}
 
 HX_RESULT STDAPICALLTYPE CMP4VideoRenderer::HXCreateInstance(IUnknown** ppIUnknown)
 {
Index: pub/mp4video.h
===================================================================
RCS file: /cvsroot/datatype/mp4/video/renderer/pub/mp4video.h,v
retrieving revision 1.7.8.2
diff -u -r1.7.8.2 mp4video.h
--- pub/mp4video.h	15 May 2009 15:55:09 -0000	1.7.8.2
+++ pub/mp4video.h	8 Jan 2010 07:10:48 -0000
@@ -115,7 +115,6 @@
 
     virtual HX_RESULT UntimedModeNotice(HXBOOL bUntimedRendering);
     
-    STDMETHOD (EndStream)	(THIS);    
     CHXMemoryAllocator* m_pOutputAllocator;
 };
 
-------------- next part --------------
Index: h263video.cpp
===================================================================
RCS file: /cvsroot/datatype/h263/renderer/h263video.cpp,v
retrieving revision 1.11.2.1.2.2
diff -u -r1.11.2.1.2.2 h263video.cpp
--- h263video.cpp	12 Nov 2009 05:15:31 -0000	1.11.2.1.2.2
+++ h263video.cpp	8 Jan 2010 07:11:28 -0000
@@ -279,15 +279,4 @@
                                       bitmapInfoHeader.biBitCount + 7) / 8;
 }
 
-STDMETHODIMP CH263VideoRenderer::EndStream()
-{
-    if (m_pActiveVideoPacket)
-    {
-        m_pActiveVideoPacket->Clear();
-        delete m_pActiveVideoPacket;
-        m_pActiveVideoPacket = NULL;
-    }
-    CVideoRenderer::EndStream();
 
-    return HXR_OK;
-}
Index: pub/h263video.h
===================================================================
RCS file: /cvsroot/datatype/h263/renderer/pub/h263video.h,v
retrieving revision 1.5.70.1
diff -u -r1.5.70.1 h263video.h
--- pub/h263video.h	6 Nov 2009 16:35:04 -0000	1.5.70.1
+++ pub/h263video.h	8 Jan 2010 07:11:29 -0000
@@ -125,7 +125,6 @@
 				REF(UINT32)       /*OUT*/ unInitialGranularity
 				);
 
-   STDMETHOD (EndStream)	(THIS);
 };
 
 #endif //__h263VIDEO_H__
-------------- next part --------------
Index: wmvrender.cpp
===================================================================
RCS file: /cvsroot/datatype/wm/video/renderer/wmvrender.cpp,v
retrieving revision 1.2.2.5
diff -u -r1.2.2.5 wmvrender.cpp
--- wmvrender.cpp	23 Sep 2009 06:05:21 -0000	1.2.2.5
+++ wmvrender.cpp	8 Jan 2010 07:12:45 -0000
@@ -276,16 +276,4 @@
 {
 	return m_dDecodeTimeRatio;
 }
-STDMETHODIMP CWMVideoRenderer::EndStream()
-{
-    if (m_pActiveVideoPacket)
-    {
-        m_pActiveVideoPacket->Clear();
-        delete m_pActiveVideoPacket;
-        m_pActiveVideoPacket = NULL;
-    }
 
-    CVideoRenderer::EndStream();
-
-    return HXR_OK;
-}
Index: pub/wmvrender.h
===================================================================
RCS file: /cvsroot/datatype/wm/video/renderer/pub/wmvrender.h,v
retrieving revision 1.1.1.1.24.3
diff -u -r1.1.1.1.24.3 wmvrender.h
--- pub/wmvrender.h	23 Sep 2009 06:05:22 -0000	1.1.1.1.24.3
+++ pub/wmvrender.h	8 Jan 2010 07:12:46 -0000
@@ -72,7 +72,6 @@
 	void SetDecodeTimeRatio(HXDOUBLE ratio);
 	HXDOUBLE GetDecodeTimeRatio();
 
-    STDMETHOD (EndStream)	(THIS);
 protected:
     CHXMemoryAllocator*     m_pOutputAllocator;
 	HXDOUBLE				m_dDecodeTimeRatio;
From sgarg at real.com  Fri Jan  8 04:31:35 2010
From: sgarg at real.com ( Sushant Garg)
Date: Fri Jan  8 11:57:12 2010
Subject: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays
	incorrect duration for a wav file recorded by gnome-sound-recorder.
References: <011601ca78cd$6011f9a0$8001a8c0@adroit02a604c1>
	<7ECCEA249B7CDC49A079EC0075E999AA07D82CC716@SEAMBX.corp.real.com>
	<012301ca798f$c8a9dce0$8001a8c0@adroit02a604c1>
	<268FD6EA-49A7-42FA-AFC6-78547C20C18B@real.com>
	<01ed01ca8492$b14289e0$8001a8c0@adroit02a604c1>
	<5FC21ACD-FE11-427F-BA16-49FA0D27F818@real.com>
	<007401ca8ec6$e4d0abf0$8001a8c0@adroit02a604c1>
	
	<004901ca8f77$39950c70$8001a8c0@adroit02a604c1>
	<0833E151-A5C6-4A11-9F0B-411840816C87@real.com>
Message-ID: <008601ca905e$868a8130$8001a8c0@adroit02a604c1>

Skipped content of type multipart/alternative-------------- next part --------------
Index: riff.cpp
===================================================================
RCS file: /cvsroot/datatype/common/util/riff.cpp,v
retrieving revision 1.12.16.2
diff -u -r1.12.16.2 riff.cpp
--- riff.cpp	5 Jun 2008 08:33:31 -0000	1.12.16.2
+++ riff.cpp	8 Jan 2010 12:26:54 -0000
@@ -110,6 +110,8 @@
     , m_ulChunkBytesRead(0)
     , m_ulChunkSize(0)
     , m_ulChunkType(0)
+    , m_pFileStatObj(NULL)
+    , m_ulTotalFileSizeInBytes(0L) 
 {
     m_pContext = pContext;
     m_pResponse = pResponse;
@@ -192,6 +194,11 @@
 //    return HXR_OK;
 }
 
+UINT32 CRIFFReader::GetCurrentFileOffset()
+{
+    return m_ulCurOffset;
+}
+
 STDMETHODIMP
 CRIFFReader::InitDone(HX_RESULT status)
 {
@@ -205,8 +212,50 @@
 
     m_bFileIsOpen = TRUE;
 
+    HX_RELEASE(m_pFileStatObj);
+    if ( !m_pFileObject )
+    return HXR_UNEXPECTED;
+
+    HX_RESULT retVal = m_pFileObject->QueryInterface(IID_IHXFileStat, (void **) &m_pFileStatObj);    
+    if(SUCCEEDED(retVal) && m_pFileStatObj)
+    {
+        m_pFileStatObj->Stat((IHXFileStatResponse *) this);
+    }
+    else
+    {
+        m_state = RS_GetFileTypePending;
+        return m_pFileObject->Read(sizeof(UINT32) * 2);
+    }
+    return status;
+}
+
+/////////////////////////////////////////////////////////////////////////
+//  Method:
+//	IHXFileFormatObject::StatDone
+//
+STDMETHODIMP
+CRIFFReader::StatDone(HX_RESULT status, UINT32 ulSize,
+				      ULONG32 ulCreationTime,
+                                      UINT32 ulAccessTime,
+				      UINT32 ulModificationTime,
+				      UINT32 ulMode)
+{
+    // We're finished with the IHXFileStat interface, so we'll release it:
+    HX_RELEASE(m_pFileStatObj);
+
+    if (SUCCEEDED(status))
+    {
+        // Now we know how big the file is, so we can calculate the
+        // actual duration for all streams using it.
+        m_ulTotalFileSizeInBytes = ulSize;
+    }
     m_state = RS_GetFileTypePending;
-    return m_pFileObject->Read(sizeof(UINT32) * 2);
+    return m_pFileObject->Read(sizeof(UINT32) * 2);	
+}
+
+UINT32 CRIFFReader::GetTotalFileSize()
+{
+    return m_ulTotalFileSizeInBytes;
 }
 
 HX_RESULT
@@ -233,6 +282,8 @@
 
     m_bFileIsOpen = FALSE;
 
+    HX_RELEASE(m_pFileStatObj);
+    m_ulTotalFileSizeInBytes = 0L;	
     return HXR_OK;
 } 
Index: pub/riff.h
===================================================================
RCS file: /cvsroot/datatype/common/util/pub/riff.h,v
retrieving revision 1.6
diff -u -r1.6 riff.h
--- pub/riff.h	14 Mar 2005 19:24:45 -0000	1.6
+++ pub/riff.h	6 Jan 2010 11:14:27 -0000
@@ -49,6 +49,7 @@
 typedef _INTERFACE IHXFileObject IHXFileObject;
 
 class CRIFFReader : public IHXFileResponse,
+            public IHXFileStatResponse,	
             public IHXThreadSafeMethods
 {
 public:
@@ -61,6 +62,9 @@
      */
     HX_RESULT Open(char* filename);
 
+    IHXFileStat*           m_pFileStatObj; //for getting the file size.
+    UINT32			m_ulTotalFileSizeInBytes;
+    UINT32 GetCurrentFileOffset();
     /*
      * Close: Close the file
      */
@@ -126,6 +130,12 @@
 
     STDMETHOD(InitDone)      (THIS_
                   HX_RESULT status);
+    STDMETHOD(StatDone)  (THIS_
+                HX_RESULT status, UINT32 ulSize,
+				      ULONG32 ulCreationTime,
+				      UINT32 ulAccessTime,
+				      UINT32 ulModificationTime,
+				      UINT32 ulMode);	
     STDMETHOD(ReadDone)      (THIS_
                   HX_RESULT status,
                   IHXBuffer* pBuffer);
@@ -174,6 +184,7 @@
 
     UINT32 GetListType();
     UINT32 GetOffset();
+    UINT32 GetTotalFileSize();	
     UINT32 GetChunkType();
     UINT32 GetChunkRawSize(void);
Index: wvffplin.cpp
===================================================================
RCS file: /cvsroot/datatype/wav/fileformat/wvffplin.cpp,v
retrieving revision 1.12.2.1.6.1
diff -u -r1.12.2.1.6.1 wvffplin.cpp
--- wvffplin.cpp	2 Dec 2009 02:38:34 -0000	1.12.2.1.6.1
+++ wvffplin.cpp	6 Jan 2010 11:15:55 -0000
@@ -963,6 +963,14 @@
 		}
 	    
 	    m_ulDataSizeInBytes = len;
+	    UINT32 ulFileOffset = m_pRiffReader->GetCurrentFileOffset();
+           UINT32 ulTotalFileSizeInBytes  = m_pRiffReader->GetTotalFileSize();		
+	    UINT32 ulDataSizeInBytes = ulTotalFileSizeInBytes - ulFileOffset;
+	    if(ulDataSizeInBytes < len)
+	    {
+	        m_ulDataSizeInBytes = ulDataSizeInBytes;
+	    }
+
 	    m_ulAvgBitRate      = 8 * m_ulAvgBytesPerSec;
 
 	    // The duration is of course calculatable from the size of
From ehyche at real.com  Fri Jan  8 05:45:29 2010
From: ehyche at real.com (Eric Hyche)
Date: Fri Jan  8 13:10:57 2010
Subject: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays
	incorrect duration for a wav file recorded by gnome-sound-recorder.
In-Reply-To: <008601ca905e$868a8130$8001a8c0@adroit02a604c1>
References: <011601ca78cd$6011f9a0$8001a8c0@adroit02a604c1>
	<7ECCEA249B7CDC49A079EC0075E999AA07D82CC716@SEAMBX.corp.real.com>
	<012301ca798f$c8a9dce0$8001a8c0@adroit02a604c1>
	<268FD6EA-49A7-42FA-AFC6-78547C20C18B@real.com>
	<01ed01ca8492$b14289e0$8001a8c0@adroit02a604c1>
	<5FC21ACD-FE11-427F-BA16-49FA0D27F818@real.com>
	<007401ca8ec6$e4d0abf0$8001a8c0@adroit02a604c1>
	
	<004901ca8f77$39950c70$8001a8c0@adroit02a604c1>
	<0833E151-A5C6-4A11-9F0B-411840816C87@real.com>
	<008601ca905e$868a8130$8001a8c0@adroit02a604c1>
Message-ID: 

Also if the call to IHXFileStat::Stat() returns failure, then we will never get a callback to StatDone(). So we should check the return value of the Stat() call, and if it fails, then we should also go ahead and call read (just like if the QI for IHXFileStat failed).

Eric

On Jan 8, 2010, at 7:31 AM, Sushant Garg wrote:

> Oops! missed to notice that.
>  
> Now changed that code to following:
>  
> in CRIFFReader::InitDone() function.
>  
> +    HX_RELEASE(m_pFileStatObj);
> +    if ( !m_pFileObject )
> +    return HXR_UNEXPECTED;
> +
> +    HX_RESULT retVal = m_pFileObject->QueryInterface(IID_IHXFileStat, (void **) &m_pFileStatObj);    
> +    if(SUCCEEDED(retVal) && m_pFileStatObj)
> +    {
> +        m_pFileStatObj->Stat((IHXFileStatResponse *) this);
> +    }
> +    else
> +    {
> +        m_state = RS_GetFileTypePending;
> +        return m_pFileObject->Read(sizeof(UINT32) * 2);
> +    }
> +    return status;
>  
> from
>  
> +    HX_RELEASE(m_pFileStatObj);
> +    if(m_pFileObject)
> +    {
> +        HX_RESULT retVal = m_pFileObject->QueryInterface(IID_IHXFileStat, (void **) &m_pFileStatObj);   
> +        if(SUCCEEDED(retVal) && m_pFileStatObj)
> +        {
> +            m_pFileStatObj->Stat((IHXFileStatResponse *) this);
> +        }
> +    }
> +    return status;
>  
> Please find the updated diff.
>  
> Thanks & Regards
> Sushant Garg
> ----- Original Message -----
> From: Eric Hyche
> To: Sushant Garg
> Cc: Datatype-Dev
> Sent: Thursday, January 07, 2010 8:40 PM
> Subject: Re: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-recorder.
> 
> But if I'm reading the diff correctly, if the QI for IHXFileStat fails, then we never call the RIFF reader user back with CRiffResponse::InitDone(), correct? If so, then we've hung the app.
> 
> Eric
> 
> On Jan 7, 2010, at 3:55 AM, Sushant Garg wrote:
> 
> > Before calling Stat() we have a condition to check whether QI is succeeded or not & if in case it does not then we will not send a call to Stat() & return status of InitDone().
> >  
> > +    HX_RELEASE(m_pFileStatObj);
> > +    if(m_pFileObject)
> > +    {
> > +        HX_RESULT retVal = m_pFileObject->QueryInterface(IID_IHXFileStat, (void **) &m_pFileStatObj);   
> > +        if(SUCCEEDED(retVal) && m_pFileStatObj)
> > +        {
> > +            m_pFileStatObj->Stat((IHXFileStatResponse *) this);
> > +        }
> > +    }
> > +    return status;
> >  
> > Now if Stat() fails then we will get error in StatDone() & hence we will not get the size of file. And so we will not change m_ulDataSizeInBytes in wvffplin.cpp
> >  
> > Thanks & Regards
> > Sushant Garg
> > ----- Original Message -----
> > From: Eric Hyche
> > To: Sushant Garg
> > Cc: Datatype-Dev
> > Sent: Wednesday, January 06, 2010 8:25 PM
> > Subject: Re: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-recorder.
> > 
> > Looks good for the most part. However, if your QI for IHXFileStat fails, then we will hang, since no InitDone() back to the RIFF reader user will ever be made. So make sure that if either the QI for IHXFileStat fails, or the call to STat() returns failure that we properly make a failure InitDone() back to the RIFF reader user.
> > 
> > Actually, the QI for IHXFileStat should not be required, since file objects are not required to implement this. So if the QI for IHXFileStat fails, then the RIFF reader should continue on normally, just without knowing the file size. If the QI for IHXFileStat() succeeds but the call to STat() returns failure, then we can return failure in InitDone() back to the RIFF reader caller.
> > 
> > Eric
> > 
> > On Jan 6, 2010, at 6:53 AM, Sushant Garg wrote:
> > 
> > > Thanks Eric,
> > >  
> > > Please find the updated diff.
> > >  
> > > Now I am calling Read() from CRIFFReader::StatDone() rather then CRIFFReader::InitDone.
> > >  
> > > Thanks & Regards
> > > Sushant Garg
> > > ----- Original Message -----
> > > From: Eric Hyche
> > > To: Sushant Garg
> > > Cc: Datatype-Dev
> > > Sent: Monday, January 04, 2010 8:13 PM
> > > Subject: Re: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-recorder.
> > > 
> > > You are treating IHXFileStat::Stat() like a synchronous call and there is 
> > > no guarantee that it will be. Once you issue the call to Stat(), then
> > > you will need to wait in StatDone() before calling back to InitDone().
> > > 
> > > Eric
> > > 
> > > On Dec 24, 2009, at 7:14 AM, Sushant Garg wrote:
> > > 
> > > > Eric,
> > > >  
> > > > Please find the updated diff.
> > > >  
> > > > Thanks & Regards
> > > > Sushant Garg
> > > > ----- Original Message -----
> > > > From: Eric Hyche
> > > > To: Sushant Grag
> > > > Cc: Datatype-Dev
> > > > Sent: Friday, December 11, 2009 12:04 AM
> > > > Subject: Re: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-recorder.
> > > > 
> > > > Sushant,
> > > > 
> > > > After thinking about this some more, I think the Stat() call should be moved inside the RIFF reader, for a couple of reasons:
> > > > 
> > > > - centralize it in one place, so other uses of the RIFF reader don't have to do the same thing.
> > > > - the most natural time to do the Stat is immediately after the IHXFileObject is Init'd, which in this case the RIFF reader does.
> > > > 
> > > > So I think the RIFF reader could do the IHXFileStat::Stat() call, and then store the filesize result. Then we could just add an accessor function on the RIFF reader so that users of the RIFF reader can read the size. The file size would only be valid after the CRIFFREader::Open() call had returned with a RIFFOpenDone() callback.
> > > > 
> > > > Eric
> > > > 
> > > > On Dec 10, 2009, at 6:56 AM, Sushant Grag wrote:
> > > > 
> > > > > Thanks Eric,
> > > > >  
> > > > > Please find the updated diff.
> > > > >  
> > > > > Thanks & Regards
> > > > > Sushant Garg
> > > > > ----- Original Message -----
> > > > > From: Eric Hyche
> > > > > To: Sushant Grag ; Datatype-Dev
> > > > > Sent: Wednesday, December 09, 2009 7:17 PM
> > > > > Subject: RE: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-recorder.
> > > > > 
> > > > > +UINT32 CRIFFReader::GetFileDataSize()
> > > > > +{
> > > > > + CHXString strFilePath = m_pFilename;
> > > > > + const char* szFileProtocol = "file://";
> > > > > + UINT32 ulFiledataSize =0;
> > > > > + 
> > > > > + if( !strFilePath.Left(strlen(szFileProtocol)).CompareNoCase(szFileProtocol) )
> > > > > + {
> > > > > +     strFilePath = strFilePath.Mid(strlen(szFileProtocol));
> > > > > +     struct stat fileInfo;
> > > > > +     if(!stat(strFilePath, &fileInfo))
> > > > > +     {
> > > > > +         ulFiledataSize = fileInfo.st_size;
> > > > > +     }
> > > > > + }
> > > > > + return ulFiledataSize;
> > > > > +}
> > > > > +
> > > > > 
> > > > > I did not mean do a C-library stat() on the file. The file object that
> > > > > the RIFF readers uses will not always be a local file that you can call stat() on.
> > > > > What I meant was QI the file object for IHXFileStat and then call IHXFileStat::Stat().
> > > > > You will have to implement IHXFileStatResponse::StatDone().
> > > > > 
> > > > > Eric
> > > > > 
> > > > > >-----Original Message-----
> > > > > >From: datatype-dev-bounces@helixcommunity.org [mailto:datatype-dev-bounces@helixcommunity.org] On
> > > > > >Behalf Of Sushant Grag
> > > > > >Sent: Wednesday, December 09, 2009 7:45 AM
> > > > > >To: Datatype-Dev
> > > > > >Subject: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file
> > > > > >recorded by gnome-sound-recorder.
> > > > > >
> > > > > >Project: RealPlayer for Netbook
> > > > > >
> > > > > >Synopsis:
> > > > > >
> > > > > >Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-
> > > > > >recorder.
> > > > > >
> > > > > >
> > > > > >
> > > > > >Overview:
> > > > > >
> > > > > >There is an issue with wav files which are recorded from ubuntu sound recorder.
> > > > > >
> > > > > >The calculated file duration in Realplayer for linux is much & much larger then original file duration
> > > > > >
> > > > > >eg: file has duration of 6secs & Realplayer shows more than 3hr 22 min.
> > > > > >
> > > > > >Reason behind is, sound recorder adds garbage value in data chunk which leads to very big value of
> > > > > >m_ulChunkBodyLen calculated in riff.cpp around line 380
> > > > > >
> > > > > >            if ( (UINT32)getlong(buf) == m_ulFindChunkId )
> > > > > >
> > > > > >            {
> > > > > >
> > > > > >                // Found the chunk we were asked for
> > > > > >
> > > > > >                m_state = RS_Ready;
> > > > > >
> > > > > >                m_ulChunkBodyLen = GetLong(&buf[4]);
> > > > > >
> > > > > >                m_ulChunkSize = m_ulChunkBodyLen;
> > > > > >
> > > > > >Which cause a very higher value of duration.
> > > > > >
> > > > > >
> > > > > >
> > > > > >Now I have created two different functions in riff.cpp;
> > > > > >
> > > > > >CRIFFReader::GetFileDataSize() & CRIFFReader::GetCurrentFileOffset() in which I am getting the length
> > > > > >of file & the file offset and calling these functions in function CWaveFileFormat::RIFFFindChunkDone()
> > > > > >, case WS_FindDataChunkPending to set m_ulDataSizeInBytes if "len" is greater then
> > > > > >"ulDataSizeInBytes".
> > > > > >
> > > > > >
> > > > > >
> > > > > >Files Modified:
> > > > > >/cvsroot/datatype/common/util/riff.cpp
> > > > > >
> > > > > >/cvsroot/datatype/common/util/pub/riff.h
> > > > > >
> > > > > >/cvsroot/datatype/wav/fileformat/wvffplin.cpp
> > > > > >
> > > > > >
> > > > > >
> > > > > >Files Added:
> > > > > >
> > > > > >None
> > > > > >
> > > > > >
> > > > > >
> > > > > >Platforms and Profiles Affected:
> > > > > >Linux
> > > > > >
> > > > > >Distribution Libraries Affected:
> > > > > >None.
> > > > > >
> > > > > >Platforms and Profiles Build Verified:
> > > > > >Bif: realplay_gtk_atlas_restricted_gold_1.2
> > > > > >Profile: helix-client-moblin
> > > > > >Target: player_all
> > > > > >
> > > > > >Branch:
> > > > > >Atlas347, Atlas310, Atlas3_4_10, 401 Brizo, Head
> > > > > >
> > > > > >
> > > > > >
> > > > > >Files Attached:
> > > > > >
> > > > > >9840_diff.txt
> > > > > >
> > > > > >
> > > > > >
> > > > > >Thanks & Regards
> > > > > >Sushant Garg
> > > > > <9840_diff.txt>
> > > > 
> > > > Eric Hyche (ehyche@real.com)
> > > > Principal Engineer
> > > > RealNetworks, Inc.
> > > > 
> > > > 
> > > 
> > > Eric Hyche (ehyche@real.com)
> > > Principal Engineer
> > > RealNetworks, Inc.
> > > 
> > > <9840_diff.txt>
> > 
> > Eric Hyche (ehyche@real.com)
> > Principal Engineer
> > RealNetworks, Inc.
> > 
> 
> Eric Hyche (ehyche@real.com)
> Principal Engineer
> RealNetworks, Inc.
> 
> <9840_diff.txt>

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From ehyche at real.com  Fri Jan  8 05:52:18 2010
From: ehyche at real.com (Eric Hyche)
Date: Fri Jan  8 13:17:44 2010
Subject: [datatype-dev] CR/CN: Bug 9959: appear garbage picture when
	switch playing two VP6 files
In-Reply-To: <4B46E2CD.6060406@real.com>
References: <4B46E2CD.6060406@real.com>
Message-ID: <2C59779A-D5ED-4A42-B633-ADDEF975FBCA@real.com>

Gurpreet,

You should also check all the other vidrend-derived video renderers to make
sure this fix makes it to them as well. Check your BIF file for a target
called "all_vidrend_renderers" and this should list all the video renderers
which derive from the base video renderer.

Eric

On Jan 8, 2010, at 2:46 AM, Gurpreet wrote:

> Synopsis:
> Bug 9959: appear garbage picture when switch playing two VP6 files
> 
> Overview:
> The issue is because we are releasing active frame while its being 
> blitted(in Color Conversion).
> For hardware decoder we have implemented EndStream in respective 
> renderer so that the active frame is released before decoder is closed 
> but the active frame is being released with out check.
> We have reverted earlier change and now the active frame is released 
> when we have closed BltrPump and have DisplayMutex Lock.
> 
> Files Modified:
> datatype/common/vidrend/vidrend.cpp
> datatype/h263/renderer/h263video.cpp
> datatype/h263/renderer/pub/h263video.h
> datatype/mp4/video/renderer/mp4video.cpp
> datatype/mp4/video/renderer/pub/mp4video.h
> datatype/wm/video/renderer/wmvrender.cpp
> datatype/wm/video/renderer/pub/wmvrender.h
> 
> 
> Image Size and Heap Use impact (Client -Only):
> None
> 
> Platforms and Profiles Build Verified:
> BIF branch            -> atlas 361
> Target(s)                -> android_all
> Profile                    -> helix-client-android-surf_8x50
> SYSTEM_ID        -> android-donut-arm.eabi
> 
> Files Attached::
> vidrend.diff
> mp4rend,diff
> h263rend.diff
> wmrend.diff
> 
> Thanks & Best Regards,
> Gurpreet
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From ckarusala at real.com  Fri Jan  8 15:14:40 2010
From: ckarusala at real.com (Chytanya Karusala)
Date: Fri Jan  8 22:40:34 2010
Subject: [datatype-dev] CR: Correcting an earlier fix to MP4A depacketizer
Message-ID: <6.2.5.6.2.20100108150604.063f37c0@real.com>

Synopsis
========
This CR corrects a bug with an earlier fix to MP4A depacketizer

Branch : HEAD
Suggested Reviewer : Jamie, Eric

Description
=========
I''ve updated MP4APayloadFormat earlier to add the 
"AudioSpecificConfig" to the stream header. But this was done at the 
wrong place, it should have been done after m_pAudioConfig has been 
initialized with the data and not before. Strangely, it worked all 
along until I ran the server with --nfm option (the 2 byte config 
must have been allocated earlier and the same memory might be getting 
reused for m_pAudioConfig). Fixed this to change the order.

Files Changed:
============
datatype/mp4/payload/mp4apyld.cpp

Testing Performed
=================
Unit Tests:
- Verified that the stream headers have correct "AudioSpecificConfig" 
even with --nfm run.

Integration Tests:
- None

Leak Tests:

Performance Tests:
- None

Build verified: win32-i386-vc7
Platform tested : win32-i386-vc7

Thanks,
Chytanya

Index: mp4apyld.cpp
===================================================================
RCS file: /cvsroot/datatype/mp4/payload/mp4apyld.cpp,v
retrieving revision 1.20
diff -u -r1.20 mp4apyld.cpp
--- mp4apyld.cpp        3 Dec 2009 21:50:22 -0000       1.20
+++ mp4apyld.cpp        8 Jan 2010 23:12:49 -0000
@@ -631,6 +631,15 @@
             }
         }

+
+       if (SUCCEEDED(retVal))
+       {
+           if (m_ulAudioConfigSize > 0)
+           {
+               memcpy(m_pAudioConfig, pCodecConfig, 
m_ulAudioConfigSize); /* Flawfinder: ignore */
+           }
+       }
+
  #ifdef HELIX_FEATURE_SERVER
      if (SUCCEEDED(retVal) && m_pAudioConfig)
      {
@@ -648,13 +657,6 @@
      }
  #endif //HELIX_FEATURE_SERVER

-       if (SUCCEEDED(retVal))
-       {
-           if (m_ulAudioConfigSize > 0)
-           {
-               memcpy(m_pAudioConfig, pCodecConfig, 
m_ulAudioConfigSize); /* Flawfinder: ignore */
-           }
-       }
      }

      HX_RELEASE(pConfigBuffer);




From jgordon at real.com  Fri Jan  8 15:16:46 2010
From: jgordon at real.com (Jamie Gordon)
Date: Fri Jan  8 22:42:07 2010
Subject: [datatype-dev] Re: CR: Correcting an earlier fix to MP4A
	depacketizer
In-Reply-To: <6.2.5.6.2.20100108150604.063f37c0@real.com>
References: <6.2.5.6.2.20100108150604.063f37c0@real.com>
Message-ID: <4B47BCDE.3030807@real.com>

ok

On 1/8/2010 3:14 PM, Chytanya Karusala wrote:
> Synopsis
> ========
> This CR corrects a bug with an earlier fix to MP4A depacketizer
> 
> Branch : HEAD
> Suggested Reviewer : Jamie, Eric
> 
> Description
> =========
> I''ve updated MP4APayloadFormat earlier to add the 
> "AudioSpecificConfig" to the stream header. But this was done at the 
> wrong place, it should have been done after m_pAudioConfig has been 
> initialized with the data and not before. Strangely, it worked all 
> along until I ran the server with --nfm option (the 2 byte config 
> must have been allocated earlier and the same memory might be getting 
> reused for m_pAudioConfig). Fixed this to change the order.
> 
> Files Changed:
> ============
> datatype/mp4/payload/mp4apyld.cpp
> 
> Testing Performed
> =================
> Unit Tests:
> - Verified that the stream headers have correct "AudioSpecificConfig" 
> even with --nfm run.
> 
> Integration Tests:
> - None
> 
> Leak Tests:
> 
> Performance Tests:
> - None
> 
> Build verified: win32-i386-vc7
> Platform tested : win32-i386-vc7
> 
> Thanks,
> Chytanya
> 
> Index: mp4apyld.cpp
> ===================================================================
> RCS file: /cvsroot/datatype/mp4/payload/mp4apyld.cpp,v
> retrieving revision 1.20
> diff -u -r1.20 mp4apyld.cpp
> --- mp4apyld.cpp        3 Dec 2009 21:50:22 -0000       1.20
> +++ mp4apyld.cpp        8 Jan 2010 23:12:49 -0000
> @@ -631,6 +631,15 @@
>              }
>          }
> 
> +
> +       if (SUCCEEDED(retVal))
> +       {
> +           if (m_ulAudioConfigSize > 0)
> +           {
> +               memcpy(m_pAudioConfig, pCodecConfig, 
> m_ulAudioConfigSize); /* Flawfinder: ignore */
> +           }
> +       }
> +
>   #ifdef HELIX_FEATURE_SERVER
>       if (SUCCEEDED(retVal) && m_pAudioConfig)
>       {
> @@ -648,13 +657,6 @@
>       }
>   #endif //HELIX_FEATURE_SERVER
> 
> -       if (SUCCEEDED(retVal))
> -       {
> -           if (m_ulAudioConfigSize > 0)
> -           {
> -               memcpy(m_pAudioConfig, pCodecConfig, 
> m_ulAudioConfigSize); /* Flawfinder: ignore */
> -           }
> -       }
>       }
> 
>       HX_RELEASE(pConfigBuffer);
> 
> 
> 

From EXT-Edith.3.Hernandez at nokia.com  Fri Jan  8 15:42:29 2010
From: EXT-Edith.3.Hernandez at nokia.com (EXT-Edith.3.Hernandez@nokia.com)
Date: Fri Jan  8 23:07:48 2010
Subject: [datatype-dev] RESEND: PAMK-7YKKXV Helix Metadata Engine does not
	clean up archived data when upgraded/downgraded & PAMK-7YKK6F
	Helix engine thubmail does not clean up archived data when
	upgradeed/downgraded
References: 
Message-ID: 

Sending the CR again with the updated diff file ...

"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:  EXT-Edith.3.Hernandez@nokia.com
Reviewed by:
Date: 07/01/2010
ErrorId:  PAMK-7YKKXV , PAMK-7YKK6F
Project: symbianMmf_wm
 
Synopsis:
PAMK-7YKKXV  Helix Metadata Engine does not clean up archived data when upgraded/downgraded
PAMK-7YKK6F  Helix engine thubmail does not clean up archived data when upgradeed/downgraded
 
Overview:
TNE needs to be able to recognize, when it starts up, that it has been upgraded/downgraded then clean up and regenerate archived data files (hxmetadata_archive.txt, hxthumbnail_archive.txt, MdfPluginArchive.txt, plugin_archive.txt ).  Versioning information should be stored in HXTNEngine_3_2.cfg.

MDE needs to be able to recognize, when it starts up, that it has been upgraded/downgraded then clean up and regenerate archived data files (hxmetadata_archive.txt, hxthumbnail_archive.txt, MdfPluginArchive.txt, plugin_archive.txt ).  Versioning information should be stored in HXMDEngine_3_2.cfg.

Solution:
In   CHXSymbianMetaDataEng::SetupPreferences() check 
 a) If MMFControllerVersion does not exist in config file: store MMFControllerVersion in the config file and delete required txt files.
 b) If MMFControllerVersion has changed: store the New MMFControllerVersion in the config file and delete required txt files.
 
Config file could be HXMDEngine_3_2.cfg  or  HXTNEngine_3_2.cfg, It depends on which file we are working on,  therefore same code fix both bugs.
 
Files modified:
/cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
/cvsroot/datatype/tools/metadataeng/engine/pub/platform/symbian/symbian_metadataeng.h
 
Files added: None
Image Size and Heap Use impact: None
Module Release testing (STIF) : Passed
Test case(s) Added  : No
Memory leak check performed : Yes
Platforms and Profiles Build Verified:helix-client-s60-50-mmf-mdf-arm
Platforms and Profiles Functionality verified: armv5, winscw
Branch:  223Cays, 221Cays, HEAD
 
-------------- next part --------------
? Makefile
? Umakefil.upp
? armv5-dbg32
? armv5-rel32
? hxmetadataeng_dll_stub.c
? hxmetadataeng_ordinal.dat
? hxmetadataeng{000a0000}.def
? platform/symbian/Copy of symbian_metadataeng.cpp
? platform/symbian/respaldo fix of symbian_metadataeng.cpp
? pub/platform/symbian/Copy of symbian_metadataeng.h
Index: platform/symbian/symbian_metadataeng.cpp
===================================================================
RCS file: /cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp,v
retrieving revision 1.1.2.5
diff -u -w -r1.1.2.5 symbian_metadataeng.cpp
--- platform/symbian/symbian_metadataeng.cpp	19 Jan 2009 22:29:17 -0000	1.1.2.5
+++ platform/symbian/symbian_metadataeng.cpp	8 Jan 2010 19:04:26 -0000
@@ -61,6 +61,8 @@
 #include "dllpath.h"
 
 #include "hxmetadatalog.h"
+#include "platform.h" //TARVER_STR_PLATFORM
+#include "hxprefutil.h" // ReadPrefCSTRING( ) 
 
 
 static const int KMinMetaDataStartupMemory = 512*1024;
@@ -72,6 +74,8 @@
 
 #define DESTOSTR(x) (CHXSymbianString::DescToString(x))
 
+#define CHXAV_MMFControllerVersion   "MMFControllerVersion" // key preference in config file
+
 void GetInstallDrive(CHXString &strDrive)
 {
 
@@ -500,6 +504,39 @@
 
     if (SUCCEEDED(hxr))
     {
+        // once open the config file, verify if the MMFControllerVersion has changed
+        //get MMFControllerVersion from platform.h
+        CHXString strMmfControllerVerCur = TARVER_STR_PLATFORM;
+        
+        // get MMFControllerVersion from cfg file
+        //cfg file could be HXMDEngine_3_2.cfg  or  HXTNEngine_3_2.cfg, It depends on which file we are working on
+        CHXString strMmfControllerVerOld;
+        hxr = ReadPrefCSTRING( m_pPrefs, CHXAV_MMFControllerVersion, strMmfControllerVerOld );
+
+        if( !SUCCEEDED(hxr) ) 
+        {
+            // MMFControllerVersion does not exist in cfg file ... add  MMFControllerVersion and delete files 
+            CreatePrefIfNoExist( CHXAV_MMFControllerVersion,strMmfControllerVerCur );
+            TRAPD( err, DeleteFilesL() );
+        }
+        else 
+        {
+            //MMFControllerVersion exists in cfg file ..... compare MMFControllerVersion from cfg VS MMFControllerVersion  from platform.h
+            if ( strMmfControllerVerCur != strMmfControllerVerOld ) 
+            {
+                // MMFControllerVersions are diferent then delete files and replace in cfg the value of MMFControllerVersion  with the new value
+                TRAPD( err, DeleteFilesL() );             
+
+                IHXBuffer* pBuffer = NULL;
+                if( m_pCCF->CreateInstance(CLSID_IHXBuffer, (void**)&pBuffer) == HXR_OK )
+                {
+                    pBuffer->Set( (const unsigned char*)(const char*)strMmfControllerVerCur, strlen(strMmfControllerVerCur) + 1 );
+                    m_pPrefs->WritePref( CHXAV_MMFControllerVersion, pBuffer );
+                }
+                HX_RELEASE( pBuffer );
+            }
+        }
+
     //   set plugin archieve file name
     CHXString strPluginArchiveFileName;
     
@@ -775,3 +812,32 @@
   return;
 }
 
+//------------------------------------------------------------------------------
+// CHXSymbianMetaDataEng::DeleteFiles
+//Delete txt files. Called when MMFControllerVersion has changed in cfg file
+//------------------------------------------------------------------------------
+void CHXSymbianMetaDataEng::DeleteFilesL()
+{
+	RFs fsrv;
+    _LIT(KHxmetadataArchiveAndPath, "c:\\data\\hxmetadata_archive.txt ");
+    _LIT(KMdfPluginArchiveAndPath, "c:\\data\\MdfPluginArchive.txt");
+    _LIT(KPluginArchiveAndPath, "c:\\data\\plugin_archive.txt ");
+    _LIT(KHxthumbnailArchiveAndPath, "c:\\data\\hxthumbnail_archive.txt ");
+
+    TInt err = KErrNone;
+    CleanupClosePushL( fsrv );
+
+    err = fsrv.Connect();
+    if ( err != KErrNone )
+    {
+		User::Leave( err );
+    }
+ 
+    fsrv.Delete(KHxmetadataArchiveAndPath);
+    fsrv.Delete(KMdfPluginArchiveAndPath);
+    fsrv.Delete(KPluginArchiveAndPath);
+    fsrv.Delete(KHxthumbnailArchiveAndPath);
+ 
+    CleanupStack::PopAndDestroy( 1 );
+}
+
Index: pub/platform/symbian/symbian_metadataeng.h
===================================================================
RCS file: /cvsroot/datatype/tools/metadataeng/engine/pub/platform/symbian/symbian_metadataeng.h,v
retrieving revision 1.1.2.5
diff -u -w -r1.1.2.5 symbian_metadataeng.h
--- pub/platform/symbian/symbian_metadataeng.h	26 Jan 2009 20:50:27 -0000	1.1.2.5
+++ pub/platform/symbian/symbian_metadataeng.h	8 Jan 2010 17:27:34 -0000
@@ -176,6 +176,7 @@
   HX_RESULT     CheckRootConfigFile();  
   void          GetPropertyL(MHXEngineProperties::EHXEngineProperty 
                                 PropertyId, CHXString &sValue);
+  void          DeleteFilesL();
   
 protected:
   CHXSymbianMetaDataEng();
From gwright at real.com  Fri Jan  8 15:55:31 2010
From: gwright at real.com (Gregory Wright)
Date: Fri Jan  8 23:20:50 2010
Subject: [datatype-dev] RESEND: PAMK-7YKKXV Helix Metadata Engine does
	not	clean up archived data when upgraded/downgraded & PAMK-7YKK6F	Helix
	engine thubmail does not clean up archived data
	when	upgradeed/downgraded
In-Reply-To: 
References: 
	
Message-ID: <0BE91E9E-9D00-4F55-9A61-7536F69ADE54@real.com>

Looks good to me.
--greg.

On Jan 8, 2010, at 3:42 PM,   wrote:

> Sending the CR again with the updated diff file ...
> 
> "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:  EXT-Edith.3.Hernandez@nokia.com
> Reviewed by:
> Date: 07/01/2010
> ErrorId:  PAMK-7YKKXV , PAMK-7YKK6F
> Project: symbianMmf_wm
> 
> Synopsis:
> PAMK-7YKKXV  Helix Metadata Engine does not clean up archived data when upgraded/downgraded
> PAMK-7YKK6F  Helix engine thubmail does not clean up archived data when upgradeed/downgraded
> 
> Overview:
> TNE needs to be able to recognize, when it starts up, that it has been upgraded/downgraded then clean up and regenerate archived data files (hxmetadata_archive.txt, hxthumbnail_archive.txt, MdfPluginArchive.txt, plugin_archive.txt ).  Versioning information should be stored in HXTNEngine_3_2.cfg.
> 
> MDE needs to be able to recognize, when it starts up, that it has been upgraded/downgraded then clean up and regenerate archived data files (hxmetadata_archive.txt, hxthumbnail_archive.txt, MdfPluginArchive.txt, plugin_archive.txt ).  Versioning information should be stored in HXMDEngine_3_2.cfg.
> 
> Solution:
> In   CHXSymbianMetaDataEng::SetupPreferences() check 
> a) If MMFControllerVersion does not exist in config file: store MMFControllerVersion in the config file and delete required txt files.
> b) If MMFControllerVersion has changed: store the New MMFControllerVersion in the config file and delete required txt files.
> 
> Config file could be HXMDEngine_3_2.cfg  or  HXTNEngine_3_2.cfg, It depends on which file we are working on,  therefore same code fix both bugs.
> 
> Files modified:
> /cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
> /cvsroot/datatype/tools/metadataeng/engine/pub/platform/symbian/symbian_metadataeng.h
> 
> Files added: None
> Image Size and Heap Use impact: None
> Module Release testing (STIF) : Passed
> Test case(s) Added  : No
> Memory leak check performed : Yes
> Platforms and Profiles Build Verified:helix-client-s60-50-mmf-mdf-arm
> Platforms and Profiles Functionality verified: armv5, winscw
> Branch:  223Cays, 221Cays, HEAD
> 
> 


From gahluwalia at real.com  Sun Jan 10 21:45:58 2010
From: gahluwalia at real.com (Gurpreet)
Date: Mon Jan 11 05:10:53 2010
Subject: [datatype-dev] CR: Bug 9955:  a particular flv can not be played
Message-ID: <4B4ABB16.2090300@real.com>

Synopsis:
Bug 9955:  a particular flv can not be played

Overview:
This particular file attached with bug is corrupt.
We are missing duration in header.
When fileformat tries to scan duration, it encounters bad tag size.
We return error if requested seekoffset is larger then file size.

Files Modified:
datatype/flash/flv/fileformat/flv_file_format.cpp

Image Size and Heap Use impact (Client -Only):
None

Platforms and Profiles Build Verified:
BIF branch            -> atlas 361
Target(s)                -> android_all
Profile                    -> helix-client-android-surf_8x50
SYSTEM_ID        -> android-donut-arm.eabi

Files Attached::
flv.diff

Thanks & Best Regards,
Gurpreet

-------------- next part --------------
Index: flv_file_format.cpp
===================================================================
RCS file: /cvsroot/datatype/flash/flv/fileformat/flv_file_format.cpp,v
retrieving revision 1.9.2.25.2.4
diff -u -r1.9.2.25.2.4 flv_file_format.cpp
--- flv_file_format.cpp	7 Jan 2010 05:18:45 -0000	1.9.2.25.2.4
+++ flv_file_format.cpp	11 Jan 2010 05:19:27 -0000
@@ -2121,8 +2121,16 @@
                 m_ulState = kStateGFHScanDurationSeekDonePending;
                 // Compute the absolute file offset of the previous tag
                 m_ulSeekOffsetRequested = m_ulFileOffset - ulPrevTagSize - 8;
-                // Seek to the previous tag
-                m_pFileObject->Seek(m_ulSeekOffsetRequested, FALSE);
+    		    if (m_ulSeekOffsetRequested > m_ulFileSize)
+	    	    {
+                    //Corrupt File
+                    m_pFormatResponse->FileHeaderReady(HXR_CORRUPT_FILE, NULL);
+                }
+                else
+                {
+                    // Seek to the previous tag
+                    m_pFileObject->Seek(m_ulSeekOffsetRequested, FALSE);
+                }
             }
         }
         if (FAILED(retVal))
From ehyche at real.com  Mon Jan 11 06:36:39 2010
From: ehyche at real.com (Eric Hyche)
Date: Mon Jan 11 14:01:23 2010
Subject: [datatype-dev] CR: Bug 9955:  a particular flv can not be played
In-Reply-To: <4B4ABB16.2090300@real.com>
References: <4B4ABB16.2090300@real.com>
Message-ID: <4FECA986-4340-4AE0-AE8F-99EA0E46614C@real.com>

Looks good to me.

On Jan 11, 2010, at 12:45 AM, Gurpreet wrote:

> Synopsis:
> Bug 9955:  a particular flv can not be played
> 
> Overview:
> This particular file attached with bug is corrupt.
> We are missing duration in header.
> When fileformat tries to scan duration, it encounters bad tag size.
> We return error if requested seekoffset is larger then file size.
> 
> Files Modified:
> datatype/flash/flv/fileformat/flv_file_format.cpp
> 
> Image Size and Heap Use impact (Client -Only):
> None
> 
> Platforms and Profiles Build Verified:
> BIF branch            -> atlas 361
> Target(s)                -> android_all
> Profile                    -> helix-client-android-surf_8x50
> SYSTEM_ID        -> android-donut-arm.eabi
> 
> Files Attached::
> flv.diff
> 
> Thanks & Best Regards,
> Gurpreet
> 
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From ehyche at real.com  Mon Jan 11 07:14:04 2010
From: ehyche at real.com (Eric Hyche)
Date: Mon Jan 11 14:38:46 2010
Subject: [datatype-dev] RESEND: PAMK-7YKKXV Helix Metadata Engine does
	not	clean up archived data when upgraded/downgraded & PAMK-7YKK6F	Helix
	engine thubmail does not clean up archived data
	when	upgradeed/downgraded
In-Reply-To: 
References: 
	
Message-ID: 

Looks good.

On Jan 8, 2010, at 6:42 PM,   wrote:

> Sending the CR again with the updated diff file ...
> 
> "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:  EXT-Edith.3.Hernandez@nokia.com
> Reviewed by:
> Date: 07/01/2010
> ErrorId:  PAMK-7YKKXV , PAMK-7YKK6F
> Project: symbianMmf_wm
> 
> Synopsis:
> PAMK-7YKKXV  Helix Metadata Engine does not clean up archived data when upgraded/downgraded
> PAMK-7YKK6F  Helix engine thubmail does not clean up archived data when upgradeed/downgraded
> 
> Overview:
> TNE needs to be able to recognize, when it starts up, that it has been upgraded/downgraded then clean up and regenerate archived data files (hxmetadata_archive.txt, hxthumbnail_archive.txt, MdfPluginArchive.txt, plugin_archive.txt ).  Versioning information should be stored in HXTNEngine_3_2.cfg.
> 
> MDE needs to be able to recognize, when it starts up, that it has been upgraded/downgraded then clean up and regenerate archived data files (hxmetadata_archive.txt, hxthumbnail_archive.txt, MdfPluginArchive.txt, plugin_archive.txt ).  Versioning information should be stored in HXMDEngine_3_2.cfg.
> 
> Solution:
> In   CHXSymbianMetaDataEng::SetupPreferences() check 
> a) If MMFControllerVersion does not exist in config file: store MMFControllerVersion in the config file and delete required txt files.
> b) If MMFControllerVersion has changed: store the New MMFControllerVersion in the config file and delete required txt files.
> 
> Config file could be HXMDEngine_3_2.cfg  or  HXTNEngine_3_2.cfg, It depends on which file we are working on,  therefore same code fix both bugs.
> 
> Files modified:
> /cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
> /cvsroot/datatype/tools/metadataeng/engine/pub/platform/symbian/symbian_metadataeng.h
> 
> Files added: None
> Image Size and Heap Use impact: None
> Module Release testing (STIF) : Passed
> Test case(s) Added  : No
> Memory leak check performed : Yes
> Platforms and Profiles Build Verified:helix-client-s60-50-mmf-mdf-arm
> Platforms and Profiles Functionality verified: armv5, winscw
> Branch:  223Cays, 221Cays, HEAD
> 
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From pbasic at real.com  Mon Jan 11 09:58:37 2010
From: pbasic at real.com (Petar Basic)
Date: Mon Jan 11 17:24:04 2010
Subject: [datatype-dev] CR/CN: Solaris-Sparc-GCC patches for GMPMetaEditor
	branch
Message-ID: <9b8350411001110958m6fb02f4fqa4ace1930abf35c1@mail.gmail.com>

Modified by: pbasic at real.com
Date: 2010/01/11
Project: GMP MetaEditor (meta3gp.exe)

Synopsis:
Solaris-Sparc-GCC patches for GMPMetaEditor branch

Overview:
This CR includes patches needed to successfully build/run meta3gp
project with GCC on Solaris-Sparc.

Checked into GMPMetaEditor branch immediately since I need to verify
the build on the farm ASAP.  Some points below can be discussed and
improved on later, however, at this time they seem irrelevant in the
context of GMPMetaEditor.

Details:
1.) "audio/fixptutil/pub/math64.h" was failing to compile due to
missing implementation of 64-bit operations for Solaris-Sparc-GCC
combo.

In the CVS log, one can find traces of Sparc specific blocks of code
which according to CVS comments had some bugs and were replaced by
platform independent (plain C) implementations for Solaris-SunStudio
combo.  Relevant ifdef statement has now been modified to also compile
platform independent implementations under Solaris-Sparc-GCC combo.

All tests performed by "audio/fixptutil/test/fixpttest.c" succeed,
although the execution proves slow.  Testing with MetaEditor reveals
that these operations are not used during meta-data
extraction/injection, so at this time optimization for
Solaris-Sparc-GCC does not seem important.

2.) statvfs on Solaris fails if passed an empty path argument, which
causes calling method CHXFileSpecUtils::IsDiskLocal to print out an
error to the console.  This is not acceptable for MetaEditor,
especially since everything works correctly.  The culprit is actually
in MemoryMapDataFile::Bind method in
"common/fileio/platform/unix/mmapdatf.cpp".  The code has been updated
to process empty paths as a special case before resorting to
CHXFileSpecUtils::IsDiskLocal.  Also, what seems as a duplicate code
block due to a bad check-in has been removed.

3.) RMAShutdown entry point which is now required by plugin handler
has been added to metaeditor.dll.

4.) Defaulting meta3gp executable to DTDriver synchronous mode since
asynchronous mode is not implemented on Solaris.

5.) Fixed various build busters.

6.) Reordered library dependencies in a few projects to allow the
Solaris linker to link all symbols correctly.

Testing:
Verified operation on GMP MetaEditor on Solaris 5.10 Sparc via
standard MetaEditor test scripts.

Files Modified:
audio/fixptutil/pub/math64.h
client/medpltfm/hxmedpltfmdll
client/medpltfm/pub/chxmedpltfmkicker.h
client/medpltfm/pub/chxmedpltfmsched.h
common/fileio/platform/unix/mmapdatf.cpp
datatype/mp4/filewriter/m4avsh.cpp
datatype/mp4/filewriter/mp4atoms.h
datatype/mp4/filewriter/mp4sm.cpp
datatype/mp4/filewriter/ra10sh.cpp
datatype/tools/dtdriver/apps/meta3gp/HXXmlInputParser.h
datatype/tools/dtdriver/apps/meta3gp/Umakefil_meta3gp
datatype/tools/dtdriver/apps/meta3gp/Umakefil_tests
datatype/tools/dtdriver/apps/meta3gp/main.cpp
datatype/tools/dtdriver/dtdrplin/dtdr_genr_lib
datatype/tools/dtdriver/dtdrplin/dtdr_platform_dll
datatype/tools/metaeditor/Umakefil
datatype/tools/metaeditor/hxdll.cpp

Platforms and Profiles Affected:
All

Image Size and Heap Use impact:
None

Platforms and Profiles Build Verified:
system id: win32-i386-vc7, sunos-5.8-sparc-gcc-server
profile: helix-client-all-defines

Platforms and Profiles Functionality Verified:
x86 Windows XP SP2
Sparc SunOS 5.10

Branch:
GMPMetaEditor

Copyright assignment:
I am a RealNetworks employee or contractor.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: audio_fixptutil.diff
Type: text/x-patch
Size: 1752 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100111/51a53ed8/audio_fixptutil-0001.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: client_medpltfm.diff
Type: text/x-patch
Size: 7972 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100111/51a53ed8/client_medpltfm-0001.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: common_fileio_platform_unix.diff
Type: text/x-patch
Size: 3706 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100111/51a53ed8/common_fileio_platform_unix-0001.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: datatype_mp4_filewriter.diff
Type: text/x-patch
Size: 13265 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100111/51a53ed8/datatype_mp4_filewriter-0001.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: datatype_tools_dtdriver_apps_meta3gp.diff
Type: text/x-patch
Size: 31904 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100111/51a53ed8/datatype_tools_dtdriver_apps_meta3gp-0001.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: datatype_tools_dtdriver_dtdrplin.diff
Type: text/x-patch
Size: 4813 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100111/51a53ed8/datatype_tools_dtdriver_dtdrplin-0001.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: datatype_tools_metaeditor.diff
Type: text/x-patch
Size: 4286 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100111/51a53ed8/datatype_tools_metaeditor-0001.bin
From Gang.Jia at nokia.com  Mon Jan 11 10:09:07 2010
From: Gang.Jia at nokia.com (Gang.Jia@nokia.com)
Date: Mon Jan 11 17:34:54 2010
Subject: [datatype-dev] CR: ESLM-7ZDRP4 AC-3 in a MP4 container does not play
Message-ID: <6F45DEE63C5BB542B6A7B0C4E41467D0152AFA744B@NOK-EUMSG-03.mgdnok.nokia.com>

Skipped content of type multipart/alternative-------------- next part --------------
Index: mdfaudfmt.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/audio/dsp/mdfaudfmt.cpp,v
retrieving revision 1.1.2.14
diff -u -w -r1.1.2.14 mdfaudfmt.cpp
--- mdfaudfmt.cpp	15 Dec 2009 20:37:34 -0000	1.1.2.14
+++ mdfaudfmt.cpp	8 Jan 2010 20:13:58 -0000
@@ -835,7 +835,12 @@
         //failure of SetConfig we limit the channels to 2 if it is more than 2.
         m_uChannels = (m_uChannels <= 2)? m_uChannels : 2;
 	}
-
+    if(m_uChannels==0)
+    {   
+        //number of channels here is a dummy value but we need it to be >0 
+        //to pass the renderer initialization
+        m_uChannels = 2;   
+    }
     m_uSamplesPerFrame = AC3_SAMPLES_PER_FRAME;
     m_uBytesPerFrame = (m_uBitsPerSample * m_uSamplesPerFrame) >>3;
     if (m_uBytesPerFrame==0)
@@ -963,7 +968,12 @@
         //failure of SetConfig we limit the channels to 2 if it is more than 2.
         m_uChannels = (m_uChannels <= 2)? m_uChannels : 2;
     }
-
+    if(m_uChannels==0)
+    {   
+        //number of channels here is a dummy value but we need it to be >0 
+        //to pass the renderer initialization
+        m_uChannels = 2;   
+    }
     m_uSamplesPerFrame = AC3_SAMPLES_PER_FRAME;
     m_uBytesPerFrame = (m_uBitsPerSample * m_uSamplesPerFrame) >>3;
     if (m_uBytesPerFrame==0)

Index: qtatmmgs.cpp
===================================================================
RCS file: /cvsroot/datatype/mp4/fileformat/qtatmmgs.cpp,v
retrieving revision 1.29.2.12
diff -u -w -r1.29.2.12 qtatmmgs.cpp
--- qtatmmgs.cpp	23 Dec 2009 03:12:15 -0000	1.29.2.12
+++ qtatmmgs.cpp	8 Jan 2010 20:17:13 -0000
@@ -2045,6 +2045,15 @@
 			    pSampleDescEntry)->pDecoderSpecificInfo;
 		    }
 		    break;
+        case QT_ac3:
+        case QT_eac3:
+            if (ulSampleDescEntrySize > 
+            sizeof(CQT_stsd_Atom::AudioDolbyDigitalArrayEntry))
+            {
+            m_pOpaqueData = ((CQT_stsd_Atom::AudioDolbyDigitalArrayEntry*) 
+                pSampleDescEntry)->pDecoderSpecificInfo;
+            }
+            break;
 #ifdef QTCONFIG_TIMEDTEXT_PACKETIZER
 		case QT_tx3g:
 		    m_ulNumSamplesInOpaqueData = 1;
@@ -2238,6 +2247,12 @@
 		case QT_sawb:
 		    pMediaName = "X-RN-3GPP-AMR-WB";
 		    break;
+        case QT_ac3:
+            pMediaName = "AC3";
+            break;
+        case QT_eac3:
+            pMediaName = "EAC3";
+            break;
 		default:
 		    // nothing to do
 		    break;

Index: qtpacketizerfct.cpp
===================================================================
RCS file: /cvsroot/datatype/mp4/fileformat/qtpacketizerfct.cpp,v
retrieving revision 1.6.2.1
diff -u -w -r1.6.2.1 qtpacketizerfct.cpp
--- qtpacketizerfct.cpp	12 Jan 2006 05:16:34 -0000	1.6.2.1
+++ qtpacketizerfct.cpp	8 Jan 2010 20:17:13 -0000
@@ -269,7 +269,9 @@
 		const char* pMimeType = pTrackInfo->GetMimeType();
 		if (pMimeType &&
 		    (!strcasecmp(pMimeType, "audio/X-RN-3GPP-AMR") ||
-		     !strcasecmp(pMimeType, "audio/X-RN-3GPP-AMR-WB")))
+		     !strcasecmp(pMimeType, "audio/X-RN-3GPP-AMR-WB") || 
+             !strcasecmp(pMimeType, "audio/AC3") ||
+             !strcasecmp(pMimeType, "audio/EAC3") ))
 		{
 		    retVal = 
 			HXConcatenatePayloadFormat::CreateInstance(pPacketizer);

Index: pub/qtatoms.h
===================================================================
RCS file: /cvsroot/datatype/mp4/fileformat/pub/qtatoms.h,v
retrieving revision 1.19.2.7
diff -u -w -r1.19.2.7 qtatoms.h
--- pub/qtatoms.h	20 Oct 2009 19:12:46 -0000	1.19.2.7
+++ pub/qtatoms.h	8 Jan 2010 20:17:13 -0000
@@ -143,6 +143,8 @@
     QT_avc1 = QT_ENCODE_TYPE('a', 'v', 'c', '1'),
     QT_sawb = QT_ENCODE_TYPE('s', 'a', 'w', 'b'),
     QT_alac = QT_ENCODE_TYPE('a', 'l', 'a', 'c'),
+    QT_ac3  = QT_ENCODE_TYPE('a', 'c', '-', '3'),
+    QT_eac3 = QT_ENCODE_TYPE('e', 'c', '-', '3'),
     // /-->> 3GPP Timed Text box types:
     QT_text = QT_ENCODE_TYPE('t', 'e', 'x', 't'),
     QT_tx3g = QT_ENCODE_TYPE('t', 'x', '3', 'g'),
@@ -2227,6 +2229,13 @@
 	UINT8 pDecoderSpecificInfo[1];
     } PACKING;
 
+    class AudioDolbyDigitalArrayEntry : public AudioArrayEntry
+    {
+    public:
+    UINT8 pDecoderSpecificInfo[1];
+    } PACKING;
+
+
     ////////////////////////////////
     // /  3GPP Timed Text structs: 
     ///
From stanb at real.com  Mon Jan 11 10:30:36 2010
From: stanb at real.com (Stan Bobrovskiy)
Date: Mon Jan 11 17:55:07 2010
Subject: [datatype-dev] CR: PR# 256027 - Converssion of FLV fails when using
 AVCQ.DLL dore decoding
Message-ID: <7ECCEA249B7CDC49A079EC0075E999AA07D8B6D8AE@SEAMBX.corp.real.com>

Modified by: stanb@real.com
Date: 01:11:10
Project: RealPlayer SP 1.5

Synopsis: Adding support for newly introduced output video format (UYVY) in DTDR system.

Files Added: none

Files Modified:
datatype/tools/dtdriver/decoder/video/vdecoder.cpp
datatype/tools/dtdriver/engine/cencsrchdlr.cpp

Platforms and Profiles Build Verified:
Platform: win32-i386-vc7

Profile: helix-client-all-defines

target(s): playinst

Branch: hxclient_3_1_0_atlas, hxclient_4_0_1_brizo, HEAD

Index: decoder/video/vdecoder.cpp
===================================================================
RCS file: /cvsroot/datatype/tools/dtdriver/decoder/video/vdecoder.cpp,v
retrieving revision 1.16.2.18
diff -u -1 -0 -r1.16.2.18 vdecoder.cpp
--- decoder/video/vdecoder.cpp 28 Dec 2009 16:43:33 -0000       1.16.2.18
+++ decoder/video/vdecoder.cpp          11 Jan 2010 18:22:40 -0000
@@ -864,21 +864,21 @@

        if(rSrcRect.left != 0 || rSrcRect.top != 0 || rSrcRect.right != pHeader->biWidth || rSrcRect.bottom != pHeader->biHeight)
        {
               m_bDoConversion = TRUE;
               m_bDoResizingVideo = TRUE;
               m_ulColorFormatOut = MapFourCCtoCID(pHeader->biCompression);
        }

        if (m_bDoResizingVideo)
        {
-           if (pHeader->biCompression != HX_I420)
+           if (pHeader->biCompression != HX_I420 && pHeader->biCompression != HX_UYVY)
            {
                m_bValidResizingInputFormat = FALSE;
                return HXR_UNSUPPORTED_VIDEO;
            }

            // Adjust the width/height as the aspect ratio
            if (m_bPreserveAspectRatio)
            {
               retVal = AdjustAspectRatio(m_ulOutputWidth, m_ulOutputHeight);
            }
Index: engine/cencsrchdlr.cpp
===================================================================
RCS file: /cvsroot/datatype/tools/dtdriver/engine/cencsrchdlr.cpp,v
retrieving revision 1.23.2.23
diff -u -1 -0 -r1.23.2.23 cencsrchdlr.cpp
--- engine/cencsrchdlr.cpp          29 Dec 2009 18:43:31 -0000       1.23.2.23
+++ engine/cencsrchdlr.cpp       11 Jan 2010 18:22:41 -0000
@@ -2434,21 +2434,21 @@
                pStreamState->m_ulFrameWidth = pStreamState->m_ulVideoWidth;
            }
            if(pStreamState->m_ulFrameHeight == 0)
            {
                pStreamState->m_ulFrameHeight = pStreamState->m_ulVideoHeight;
            }

         // Clear the return value
         retVal = HXR_OK;
         // Get the color format
-        if (!strcmp(pszMimeType, "video/X-HX-I420"))
+        if (!strcmp(pszMimeType, "video/X-HX-I420") || !strcmp(pszMimeType, "video/X-HX-UYVY"))
         {
             EHXTVideoColorFormat eColorFormat = HXT_VIDEO_FORMAT_I420;
             // Get the "ImageFormat" property (if available)
             UINT32 ulImageFormat = 0;
             if (SUCCEEDED(pStreamState->m_pStreamHeader->GetPropertyULONG32("ImageFormat", ulImageFormat)))
             {
                 switch (ulImageFormat)
                 {
                     case HX_I420: eColorFormat = HXT_VIDEO_FORMAT_I420; break;
                     case HX_YV12: eColorFormat = HXT_VIDEO_FORMAT_YV12; break;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100111/393431c6/attachment-0001.html
From ping at real.com  Mon Jan 11 10:42:16 2010
From: ping at real.com (Henry Ping)
Date: Mon Jan 11 18:06:58 2010
Subject: [datatype-dev] CR: PR# 256027 - Converssion of FLV fails when
	using AVCQ.DLL dore decoding
In-Reply-To: <7ECCEA249B7CDC49A079EC0075E999AA07D8B6D8AE@SEAMBX.corp.real.com>
References: <7ECCEA249B7CDC49A079EC0075E999AA07D8B6D8AE@SEAMBX.corp.real.com>
Message-ID: <766B5A29D28DA442AB229AAEE2AFC44507D839A8C6@SEAMBX.corp.real.com>

Looks good for the IR.

However, we shouldn't hang if we deal with un-supported video output. From the symptom, it's hard to relate it to un-supported video output. I suggest to at least insert an assert to remind us.

Thanks
Henry

________________________________
From: datatype-dev-bounces@helixcommunity.org [mailto:datatype-dev-bounces@helixcommunity.org] On Behalf Of Stan Bobrovskiy
Sent: Monday, January 11, 2010 10:31 AM
To: datatype-dev@helixcommunity.org
Subject: [datatype-dev] CR: PR# 256027 - Converssion of FLV fails when using AVCQ.DLL dore decoding

Modified by: stanb@real.com
Date: 01:11:10
Project: RealPlayer SP 1.5

Synopsis: Adding support for newly introduced output video format (UYVY) in DTDR system.

Files Added: none

Files Modified:
datatype/tools/dtdriver/decoder/video/vdecoder.cpp
datatype/tools/dtdriver/engine/cencsrchdlr.cpp

Platforms and Profiles Build Verified:
Platform: win32-i386-vc7

Profile: helix-client-all-defines

target(s): playinst

Branch: hxclient_3_1_0_atlas, hxclient_4_0_1_brizo, HEAD

Index: decoder/video/vdecoder.cpp
===================================================================
RCS file: /cvsroot/datatype/tools/dtdriver/decoder/video/vdecoder.cpp,v
retrieving revision 1.16.2.18
diff -u -1 -0 -r1.16.2.18 vdecoder.cpp
--- decoder/video/vdecoder.cpp 28 Dec 2009 16:43:33 -0000       1.16.2.18
+++ decoder/video/vdecoder.cpp          11 Jan 2010 18:22:40 -0000
@@ -864,21 +864,21 @@

        if(rSrcRect.left != 0 || rSrcRect.top != 0 || rSrcRect.right != pHeader->biWidth || rSrcRect.bottom != pHeader->biHeight)
        {
               m_bDoConversion = TRUE;
               m_bDoResizingVideo = TRUE;
               m_ulColorFormatOut = MapFourCCtoCID(pHeader->biCompression);
        }

        if (m_bDoResizingVideo)
        {
-           if (pHeader->biCompression != HX_I420)
+           if (pHeader->biCompression != HX_I420 && pHeader->biCompression != HX_UYVY)
            {
                m_bValidResizingInputFormat = FALSE;
                return HXR_UNSUPPORTED_VIDEO;
            }

            // Adjust the width/height as the aspect ratio
            if (m_bPreserveAspectRatio)
            {
               retVal = AdjustAspectRatio(m_ulOutputWidth, m_ulOutputHeight);
            }
Index: engine/cencsrchdlr.cpp
===================================================================
RCS file: /cvsroot/datatype/tools/dtdriver/engine/cencsrchdlr.cpp,v
retrieving revision 1.23.2.23
diff -u -1 -0 -r1.23.2.23 cencsrchdlr.cpp
--- engine/cencsrchdlr.cpp          29 Dec 2009 18:43:31 -0000       1.23.2.23
+++ engine/cencsrchdlr.cpp       11 Jan 2010 18:22:41 -0000
@@ -2434,21 +2434,21 @@
                pStreamState->m_ulFrameWidth = pStreamState->m_ulVideoWidth;
            }
            if(pStreamState->m_ulFrameHeight == 0)
            {
                pStreamState->m_ulFrameHeight = pStreamState->m_ulVideoHeight;
            }

         // Clear the return value
         retVal = HXR_OK;
         // Get the color format
-        if (!strcmp(pszMimeType, "video/X-HX-I420"))
+        if (!strcmp(pszMimeType, "video/X-HX-I420") || !strcmp(pszMimeType, "video/X-HX-UYVY"))
         {
             EHXTVideoColorFormat eColorFormat = HXT_VIDEO_FORMAT_I420;
             // Get the "ImageFormat" property (if available)
             UINT32 ulImageFormat = 0;
             if (SUCCEEDED(pStreamState->m_pStreamHeader->GetPropertyULONG32("ImageFormat", ulImageFormat)))
             {
                 switch (ulImageFormat)
                 {
                     case HX_I420: eColorFormat = HXT_VIDEO_FORMAT_I420; break;
                     case HX_YV12: eColorFormat = HXT_VIDEO_FORMAT_YV12; break;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100111/d90a5afe/attachment.html
From EXT-Edith.3.Hernandez at nokia.com  Mon Jan 11 14:25:08 2010
From: EXT-Edith.3.Hernandez at nokia.com (EXT-Edith.3.Hernandez@nokia.com)
Date: Mon Jan 11 21:49:44 2010
Subject: [datatype-dev] RESEND: PAMK-7YKKXV Helix Metadata Engine does
	not	clean up archived data when upgraded/downgraded &
	PAMK-7YKK6F	Helix engine thubmail does not clean up archived
	data when	upgradeed/downgraded
References: 
	
	
Message-ID: 

Thanks 
Cheked in to 223Cays, 221Cays, HEAD
 
Br,
Edith

________________________________

From: ext Eric Hyche [mailto:ehyche@real.com]
Sent: Mon 1/11/2010 5:14 PM
To: Hernandez Edith.3 (EXT-DextraTechnologies/USA)
Cc: datatype-dev@helixcommunity.org
Subject: Re: [datatype-dev] RESEND: PAMK-7YKKXV Helix Metadata Engine does not clean up archived data when upgraded/downgraded & PAMK-7YKK6F Helix engine thubmail does not clean up archived data when upgradeed/downgraded
 
Looks good.

On Jan 8, 2010, at 6:42 PM,   wrote:

> Sending the CR again with the updated diff file ...
>
> "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:  EXT-Edith.3.Hernandez@nokia.com
> Reviewed by:
> Date: 07/01/2010
> ErrorId:  PAMK-7YKKXV , PAMK-7YKK6F
> Project: symbianMmf_wm
>
> Synopsis:
> PAMK-7YKKXV  Helix Metadata Engine does not clean up archived data when upgraded/downgraded
> PAMK-7YKK6F  Helix engine thubmail does not clean up archived data when upgradeed/downgraded
>
> Overview:
> TNE needs to be able to recognize, when it starts up, that it has been upgraded/downgraded then clean up and regenerate archived data files (hxmetadata_archive.txt, hxthumbnail_archive.txt, MdfPluginArchive.txt, plugin_archive.txt ).  Versioning information should be stored in HXTNEngine_3_2.cfg.
>
> MDE needs to be able to recognize, when it starts up, that it has been upgraded/downgraded then clean up and regenerate archived data files (hxmetadata_archive.txt, hxthumbnail_archive.txt, MdfPluginArchive.txt, plugin_archive.txt ).  Versioning information should be stored in HXMDEngine_3_2.cfg.
>
> Solution:
> In   CHXSymbianMetaDataEng::SetupPreferences() check
> a) If MMFControllerVersion does not exist in config file: store MMFControllerVersion in the config file and delete required txt files.
> b) If MMFControllerVersion has changed: store the New MMFControllerVersion in the config file and delete required txt files.
>
> Config file could be HXMDEngine_3_2.cfg  or  HXTNEngine_3_2.cfg, It depends on which file we are working on,  therefore same code fix both bugs.
>
> Files modified:
> /cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
> /cvsroot/datatype/tools/metadataeng/engine/pub/platform/symbian/symbian_metadataeng.h
>
> Files added: None
> Image Size and Heap Use impact: None
> Module Release testing (STIF) : Passed
> Test case(s) Added  : No
> Memory leak check performed : Yes
> Platforms and Profiles Build Verified:helix-client-s60-50-mmf-mdf-arm
> Platforms and Profiles Functionality verified: armv5, winscw
> Branch:  223Cays, 221Cays, HEAD
>
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.




From sgarg at real.com  Mon Jan 11 21:55:41 2010
From: sgarg at real.com ( Sushant Garg)
Date: Tue Jan 12 05:20:21 2010
Subject: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays
	incorrect duration for a wav file recorded by gnome-sound-recorder.
References: <011601ca78cd$6011f9a0$8001a8c0@adroit02a604c1>
	<7ECCEA249B7CDC49A079EC0075E999AA07D82CC716@SEAMBX.corp.real.com>
	<012301ca798f$c8a9dce0$8001a8c0@adroit02a604c1>
	<268FD6EA-49A7-42FA-AFC6-78547C20C18B@real.com>
	<01ed01ca8492$b14289e0$8001a8c0@adroit02a604c1>
	<5FC21ACD-FE11-427F-BA16-49FA0D27F818@real.com>
	<007401ca8ec6$e4d0abf0$8001a8c0@adroit02a604c1>
	
	<004901ca8f77$39950c70$8001a8c0@adroit02a604c1>
	<0833E151-A5C6-4A11-9F0B-411840816C87@real.com>
	<008601ca905e$868a8130$8001a8c0@adroit02a604c1>
	
Message-ID: <009101ca934b$e2d12cb0$8001a8c0@adroit02a604c1>

Skipped content of type multipart/alternative-------------- next part --------------
Index: riff.cpp
===================================================================
RCS file: /cvsroot/datatype/common/util/riff.cpp,v
retrieving revision 1.12.16.2
diff -u -r1.12.16.2 riff.cpp
--- riff.cpp	5 Jun 2008 08:33:31 -0000	1.12.16.2
+++ riff.cpp	12 Jan 2010 05:34:00 -0000
@@ -110,6 +110,8 @@
     , m_ulChunkBytesRead(0)
     , m_ulChunkSize(0)
     , m_ulChunkType(0)
+    , m_pFileStatObj(NULL)
+    , m_ulTotalFileSizeInBytes(0L) 
 {
     m_pContext = pContext;
     m_pResponse = pResponse;
@@ -192,6 +194,11 @@
 //    return HXR_OK;
 }
 
+UINT32 CRIFFReader::GetCurrentFileOffset()
+{
+    return m_ulCurOffset;
+}
+
 STDMETHODIMP
 CRIFFReader::InitDone(HX_RESULT status)
 {
@@ -205,8 +212,49 @@
 
     m_bFileIsOpen = TRUE;
 
+    HX_RELEASE(m_pFileStatObj);
+    if ( !m_pFileObject )
+    return HXR_UNEXPECTED;
+
+    HX_RESULT retVal = m_pFileObject->QueryInterface(IID_IHXFileStat, (void **) &m_pFileStatObj);    
+    if(SUCCEEDED(retVal) && (m_pFileStatObj->Stat((IHXFileStatResponse *) this) == HXR_OK))
+    {
+        return status;
+    }
+    else
+    {
+        m_state = RS_GetFileTypePending;
+        return m_pFileObject->Read(sizeof(UINT32) * 2);
+    }
+}
+
+/////////////////////////////////////////////////////////////////////////
+//  Method:
+//	IHXFileFormatObject::StatDone
+//
+STDMETHODIMP
+CRIFFReader::StatDone(HX_RESULT status, UINT32 ulSize,
+				      ULONG32 ulCreationTime,
+                                      UINT32 ulAccessTime,
+				      UINT32 ulModificationTime,
+				      UINT32 ulMode)
+{
+    // We're finished with the IHXFileStat interface, so we'll release it:
+    HX_RELEASE(m_pFileStatObj);
+
+    if (SUCCEEDED(status))
+    {
+        // Now we know how big the file is, so we can calculate the
+        // actual duration for all streams using it.
+        m_ulTotalFileSizeInBytes = ulSize;
+    }
     m_state = RS_GetFileTypePending;
-    return m_pFileObject->Read(sizeof(UINT32) * 2);
+    return m_pFileObject->Read(sizeof(UINT32) * 2);	
+}
+
+UINT32 CRIFFReader::GetTotalFileSize()
+{
+    return m_ulTotalFileSizeInBytes;
 }
 
 HX_RESULT
@@ -233,6 +281,8 @@
 
     m_bFileIsOpen = FALSE;
 
+    HX_RELEASE(m_pFileStatObj);
+    m_ulTotalFileSizeInBytes = 0L;	
     return HXR_OK;
 } 
Index: pub/riff.h
===================================================================
RCS file: /cvsroot/datatype/common/util/pub/riff.h,v
retrieving revision 1.6
diff -u -r1.6 riff.h
--- pub/riff.h	14 Mar 2005 19:24:45 -0000	1.6
+++ pub/riff.h	6 Jan 2010 11:14:27 -0000
@@ -49,6 +49,7 @@
 typedef _INTERFACE IHXFileObject IHXFileObject;
 
 class CRIFFReader : public IHXFileResponse,
+            public IHXFileStatResponse,	
             public IHXThreadSafeMethods
 {
 public:
@@ -61,6 +62,9 @@
      */
     HX_RESULT Open(char* filename);
 
+    IHXFileStat*           m_pFileStatObj; //for getting the file size.
+    UINT32			m_ulTotalFileSizeInBytes;
+    UINT32 GetCurrentFileOffset();
     /*
      * Close: Close the file
      */
@@ -126,6 +130,12 @@
 
     STDMETHOD(InitDone)      (THIS_
                   HX_RESULT status);
+    STDMETHOD(StatDone)  (THIS_
+                HX_RESULT status, UINT32 ulSize,
+				      ULONG32 ulCreationTime,
+				      UINT32 ulAccessTime,
+				      UINT32 ulModificationTime,
+				      UINT32 ulMode);	
     STDMETHOD(ReadDone)      (THIS_
                   HX_RESULT status,
                   IHXBuffer* pBuffer);
@@ -174,6 +184,7 @@
 
     UINT32 GetListType();
     UINT32 GetOffset();
+    UINT32 GetTotalFileSize();	
     UINT32 GetChunkType();
     UINT32 GetChunkRawSize(void);
Index: wvffplin.cpp
===================================================================
RCS file: /cvsroot/datatype/wav/fileformat/wvffplin.cpp,v
retrieving revision 1.12.2.1.6.1
diff -u -r1.12.2.1.6.1 wvffplin.cpp
--- wvffplin.cpp	2 Dec 2009 02:38:34 -0000	1.12.2.1.6.1
+++ wvffplin.cpp	6 Jan 2010 11:15:55 -0000
@@ -963,6 +963,14 @@
 		}
 	    
 	    m_ulDataSizeInBytes = len;
+	    UINT32 ulFileOffset = m_pRiffReader->GetCurrentFileOffset();
+           UINT32 ulTotalFileSizeInBytes  = m_pRiffReader->GetTotalFileSize();		
+	    UINT32 ulDataSizeInBytes = ulTotalFileSizeInBytes - ulFileOffset;
+	    if(ulDataSizeInBytes < len)
+	    {
+	        m_ulDataSizeInBytes = ulDataSizeInBytes;
+	    }
+
 	    m_ulAvgBitRate      = 8 * m_ulAvgBytesPerSec;
 
 	    // The duration is of course calculatable from the size of
From pbasic at real.com  Tue Jan 12 04:19:44 2010
From: pbasic at real.com (Petar Basic)
Date: Tue Jan 12 11:44:27 2010
Subject: [datatype-dev] Re: CR/CN: Solaris-Sparc-GCC patches for
	GMPMetaEditor branch
In-Reply-To: <9b8350411001110958m6fb02f4fqa4ace1930abf35c1@mail.gmail.com>
References: <9b8350411001110958m6fb02f4fqa4ace1930abf35c1@mail.gmail.com>
Message-ID: <9b8350411001120419p7b849630ud12c8991378e0f54@mail.gmail.com>

Additional fixes for Solaris native compiler.


On Mon, Jan 11, 2010 at 6:58 PM, Petar Basic  wrote:
> Modified by: pbasic at real.com
> Date: 2010/01/11
> Project: GMP MetaEditor (meta3gp.exe)
>
> Synopsis:
> Solaris-Sparc-GCC patches for GMPMetaEditor branch
>
> Overview:
> This CR includes patches needed to successfully build/run meta3gp
> project with GCC on Solaris-Sparc.
>
> Checked into GMPMetaEditor branch immediately since I need to verify
> the build on the farm ASAP. ?Some points below can be discussed and
> improved on later, however, at this time they seem irrelevant in the
> context of GMPMetaEditor.
>
> Details:
> 1.) "audio/fixptutil/pub/math64.h" was failing to compile due to
> missing implementation of 64-bit operations for Solaris-Sparc-GCC
> combo.
>
> In the CVS log, one can find traces of Sparc specific blocks of code
> which according to CVS comments had some bugs and were replaced by
> platform independent (plain C) implementations for Solaris-SunStudio
> combo. ?Relevant ifdef statement has now been modified to also compile
> platform independent implementations under Solaris-Sparc-GCC combo.
>
> All tests performed by "audio/fixptutil/test/fixpttest.c" succeed,
> although the execution proves slow. ?Testing with MetaEditor reveals
> that these operations are not used during meta-data
> extraction/injection, so at this time optimization for
> Solaris-Sparc-GCC does not seem important.
>
> 2.) statvfs on Solaris fails if passed an empty path argument, which
> causes calling method CHXFileSpecUtils::IsDiskLocal to print out an
> error to the console. ?This is not acceptable for MetaEditor,
> especially since everything works correctly. ?The culprit is actually
> in MemoryMapDataFile::Bind method in
> "common/fileio/platform/unix/mmapdatf.cpp". ?The code has been updated
> to process empty paths as a special case before resorting to
> CHXFileSpecUtils::IsDiskLocal. ?Also, what seems as a duplicate code
> block due to a bad check-in has been removed.
>
> 3.) RMAShutdown entry point which is now required by plugin handler
> has been added to metaeditor.dll.
>
> 4.) Defaulting meta3gp executable to DTDriver synchronous mode since
> asynchronous mode is not implemented on Solaris.
>
> 5.) Fixed various build busters.
>
> 6.) Reordered library dependencies in a few projects to allow the
> Solaris linker to link all symbols correctly.
>
> Testing:
> Verified operation on GMP MetaEditor on Solaris 5.10 Sparc via
> standard MetaEditor test scripts.
>
> Files Modified:
> audio/fixptutil/pub/math64.h
> client/medpltfm/hxmedpltfmdll
> client/medpltfm/pub/chxmedpltfmkicker.h
> client/medpltfm/pub/chxmedpltfmsched.h
> common/fileio/platform/unix/mmapdatf.cpp
> datatype/mp4/filewriter/m4avsh.cpp
> datatype/mp4/filewriter/mp4atoms.h
> datatype/mp4/filewriter/mp4sm.cpp
> datatype/mp4/filewriter/ra10sh.cpp
> datatype/tools/dtdriver/apps/meta3gp/HXXmlInputParser.h
> datatype/tools/dtdriver/apps/meta3gp/Umakefil_meta3gp
> datatype/tools/dtdriver/apps/meta3gp/Umakefil_tests
> datatype/tools/dtdriver/apps/meta3gp/main.cpp
> datatype/tools/dtdriver/dtdrplin/dtdr_genr_lib
> datatype/tools/dtdriver/dtdrplin/dtdr_platform_dll
> datatype/tools/metaeditor/Umakefil
> datatype/tools/metaeditor/hxdll.cpp
>
> Platforms and Profiles Affected:
> All
>
> Image Size and Heap Use impact:
> None
>
> Platforms and Profiles Build Verified:
> system id: win32-i386-vc7, sunos-5.8-sparc-gcc-server
> profile: helix-client-all-defines
>
> Platforms and Profiles Functionality Verified:
> x86 Windows XP SP2
> Sparc SunOS 5.10
>
> Branch:
> GMPMetaEditor
>
> Copyright assignment:
> I am a RealNetworks employee or contractor.
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: client_core.2.diff
Type: application/octet-stream
Size: 2941 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100112/e6260882/client_core.2.obj
-------------- next part --------------
A non-text attachment was scrubbed...
Name: datatype_tools_dtdriver_dtdrplin.2.diff
Type: application/octet-stream
Size: 3459 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100112/e6260882/datatype_tools_dtdriver_dtdrplin.2.obj
From ext-shashi.merapala at nokia.com  Tue Jan 12 04:27:22 2010
From: ext-shashi.merapala at nokia.com (ext-shashi.merapala@nokia.com)
Date: Tue Jan 12 11:53:20 2010
Subject: [datatype-dev] RESEND CR: ESLM-7YHD9L - Helix_wmv controller:
 Conflict between the
 list from SupportsMimeType and actually video type (mp4) for video playback
Message-ID: 

Skipped content of type multipart/alternative-------------- next part --------------
Index: build/BIF/hxclient_2_1_0_cayennes.bif
===================================================================
RCS file: /cvsroot/client/build/BIF/hxclient_2_1_0_cayennes.bif,v
retrieving revision 1.34
diff -u -w -r1.34 hxclient_2_1_0_cayennes.bif
--- build/BIF/hxclient_2_1_0_cayennes.bif	20 Oct 2009 15:01:08 -0000	1.34
+++ build/BIF/hxclient_2_1_0_cayennes.bif	8 Jan 2010 14:14:45 -0000
@@ -7742,7 +7742,7 @@
 
         
      
-     
+     
        
 
        
Index: build/BIF/hxclient_4_2_0_brizo.bif
===================================================================
RCS file: /cvsroot/client/build/BIF/hxclient_4_2_0_brizo.bif,v
retrieving revision 1.8
diff -u -w -r1.8 hxclient_4_2_0_brizo.bif
--- build/BIF/hxclient_4_2_0_brizo.bif	16 Nov 2009 22:35:40 -0000	1.8
+++ build/BIF/hxclient_4_2_0_brizo.bif	8 Jan 2010 14:14:53 -0000
@@ -9165,7 +9165,7 @@
      
 
      
-     
+     
        
 
        
-------------- next part --------------
Index: build/BIF/helix.bif
===================================================================
RCS file: /cvsroot/common/build/BIF/helix.bif,v
retrieving revision 1.788
diff -u -w -r1.788 helix.bif
--- build/BIF/helix.bif	22 Dec 2009 01:43:00 -0000	1.788
+++ build/BIF/helix.bif	8 Jan 2010 14:25:16 -0000
@@ -9367,7 +9367,7 @@
      
 
      
-     
+     
        
 
        
-------------- next part --------------
Index: symbianMmf/audiocontroller/10207B64.rss
===================================================================
RCS file: /cvsroot/clientapps/symbianMmf/audiocontroller/10207B64.rss,v
retrieving revision 1.1.2.4
diff -u -w -r1.1.2.4 10207B64.rss
--- symbianMmf/audiocontroller/10207B64.rss	30 Oct 2009 16:40:52 -0000	1.1.2.4
+++ symbianMmf/audiocontroller/10207B64.rss	8 Jan 2010 14:33:42 -0000
@@ -50,6 +50,16 @@
 					default_data = "?";
 					opaque_data = "Real0x101f5d07.rm.ra.RMF?application/x-pn-realmediaaudio/x-pn-realaudio";
 					rom_only = ROM_ONLY_FLAG;
+				},
+				IMPLEMENTATION_INFO
+			        {
+				        // WMA
+				        implementation_uid = 0x10283350;
+				        version_no = 1;
+				        display_name = "Helix Windows Media Audio";
+				        default_data = "?";
+				        opaque_data = "Nokia0x101f5d07.wma0&?uaudio/x-ms-wma";
+				        rom_only = ROM_ONLY_FLAG;
 				}
 			};
 		}
Index: symbianMmf/audiocontroller/controllersis
===================================================================
RCS file: /cvsroot/clientapps/symbianMmf/audiocontroller/controllersis,v
retrieving revision 1.1.2.8
diff -u -w -r1.1.2.8 controllersis
--- symbianMmf/audiocontroller/controllersis	13 Apr 2009 14:54:02 -0000	1.1.2.8
+++ symbianMmf/audiocontroller/controllersis	8 Jan 2010 14:33:42 -0000
@@ -142,6 +142,8 @@
 file = open(dll_names_file, 'w')
 for dll in lib_files_copy:
     file.write('%s\n' % os.path.basename(dll))
+for dll in additional_lib_names_copy:
+    file.write('%s\n' % os.path.basename(dll))    
 
 file.close()    
 
Index: symbianMmf/audiocontroller/installMMF.pcf
===================================================================
RCS file: /cvsroot/clientapps/symbianMmf/audiocontroller/installMMF.pcf,v
retrieving revision 1.1.2.4
diff -u -w -r1.1.2.4 installMMF.pcf
--- symbianMmf/audiocontroller/installMMF.pcf	26 Aug 2008 16:11:23 -0000	1.1.2.4
+++ symbianMmf/audiocontroller/installMMF.pcf	8 Jan 2010 14:33:43 -0000
@@ -118,6 +118,9 @@
 #
 lib_names = []
 
+# Plugin Dlls [built separately] that need to be included to the *dll_names*.txt files
+additional_lib_names = []
+
 # some dlls like vidplin aggregate functionality offered individually with
 # other dlls; this list tracks those dlls that can be removed from the list
 # of dlls to install because another dll duplicates or replaces the functionality
@@ -167,7 +170,10 @@
      'log'             : 'common/log/logsystem/[target]/log.dll',
      'logobserverfile' : 'common/log/logobserver/[target]/logobserverfile.dll',
      'arma'            : 'datatype/mp4/audio/mdf/[target]/arma.dll',
-     'hxmetadataeng'   : 'datatype/xps/fileformat/[target]/hxmetadataeng.dll'
+     'hxmetadataeng'   : 'datatype/xps/fileformat/[target]/hxmetadataeng.dll',
+     'asfff'           : 'datatype/wm/fileformat/[target]/asfff.dll',
+     'wma9'            : 'datatype/mdf/audio/arm/wma/[target]/wma9.dll',
+     'wmarender'       : 'datatype/wm/audio/renderer/[target]/wmarender.dll'
 }
 
 #
@@ -198,9 +204,22 @@
             newList.append(item)
     return newList
 
+def AddAdditionalDLLs(*files):
+    global additional_lib_names      
+    for f in files:
+        additional_lib_names.append(f)    
+
 # always add client core dll
 Add('clntcore')
 
+# always add asf file format
+Add('asfff')
+Add('wma9')
+Add('wmarender')
+
+# add hxwmdrmplugin to *dll_names*.txt 
+AddAdditionalDLLs('hxwmdrmplugin')
+
 if project.IsDefined("HELIX_FEATURE_METADATAENG"):
     Add('hxmetadataeng')
 
@@ -252,6 +271,13 @@
     path = os.path.normpath(path)
     lib_files_copy.append(path)
 
+additional_lib_names_copy = []
+for f in additional_lib_names:
+    path = os.path.join(playerDllDir, f)
+    path += ".dll"
+    path = os.path.normpath(path)
+    additional_lib_names_copy.append(path)    
+
 #
 # payld_dll_files, payld_rsc_files
 #
Index: symbianMmf/videocontroller/101F8513.rss
===================================================================
RCS file: /cvsroot/clientapps/symbianMmf/videocontroller/101F8513.rss,v
retrieving revision 1.3.2.13
diff -u -w -r1.3.2.13 101F8513.rss
--- symbianMmf/videocontroller/101F8513.rss	30 Oct 2009 16:47:48 -0000	1.3.2.13
+++ symbianMmf/videocontroller/101F8513.rss	8 Jan 2010 14:33:43 -0000
@@ -157,6 +157,16 @@
 					default_data = "?";
 					opaque_data = "Real0x101f5d07.aviRIFF????AVIapplication/x-pn-avi-pluginvideo/avivideo/x-msvideovideo/msvideo";
 					rom_only = ROM_ONLY_FLAG;
+				},
+				IMPLEMENTATION_INFO
+			        {
+				        // WMV
+				        implementation_uid = 0x10283349;
+				        version_no = 1;
+				        display_name = "Helix Windows Media 9";
+				        default_data = "?";
+				        opaque_data = "Nokia0x101f5d070x101f5d08.wmv0&?uvideo/x-ms-wmv";
+				        rom_only = ROM_ONLY_FLAG;
 				}
 			};
 		}
Index: symbianMmf/videocontroller/MmfSis
===================================================================
RCS file: /cvsroot/clientapps/symbianMmf/videocontroller/MmfSis,v
retrieving revision 1.2.2.12
diff -u -w -r1.2.2.12 MmfSis
--- symbianMmf/videocontroller/MmfSis	13 Apr 2009 14:54:02 -0000	1.2.2.12
+++ symbianMmf/videocontroller/MmfSis	8 Jan 2010 14:33:43 -0000
@@ -145,6 +145,8 @@
 file = open(dll_names_file, 'w')
 for dll in lib_files_copy:
     file.write('%s\n' % os.path.basename(dll))
+for dll in additional_lib_names_copy:
+    file.write('%s\n' % os.path.basename(dll))    
 
 file.close()    
 
Index: symbianMmf/videocontroller/installMMF.pcf
===================================================================
RCS file: /cvsroot/clientapps/symbianMmf/videocontroller/installMMF.pcf,v
retrieving revision 1.5.2.21
diff -u -w -r1.5.2.21 installMMF.pcf
--- symbianMmf/videocontroller/installMMF.pcf	16 Oct 2009 17:43:48 -0000	1.5.2.21
+++ symbianMmf/videocontroller/installMMF.pcf	8 Jan 2010 14:33:43 -0000
@@ -125,6 +125,9 @@
 #
 lib_names = []
 
+# Plugin Dlls [built separately] that need to be included to the *dll_names*.txt files
+additional_lib_names = []
+
 # some dlls like vidplin aggregate functionality offered individually with
 # other dlls; this list tracks those dlls that can be removed from the list
 # of dlls to install because another dll duplicates or replaces the functionality
@@ -180,7 +183,10 @@
      'XPSFileFormat'   : 'datatype/xps/fileformat/[target]/XPSFileFormat.dll',
      'hxmetadataeng'   : 'datatype/xps/fileformat/[target]/hxmetadataeng.dll',
      'avifformat'      : 'datatype/avi/fileformat/[target]/avifformat.dll',
-     'mkvff'           : 'datatype/mkv/fileformat/[target]/mkvff.dll'
+     'mkvff'           : 'datatype/mkv/fileformat/[target]/mkvff.dll',
+     'asfff'           : 'datatype/wm/fileformat/[target]/asfff.dll',
+     'wma9'            : 'datatype/mdf/audio/arm/wma/[target]/wma9.dll',
+     'wmarender'       : 'datatype/wm/audio/renderer/[target]/wmarender.dll'
 
 }
 
@@ -212,9 +218,22 @@
             newList.append(item)
     return newList
 
+def AddAdditionalDLLs(*files):
+    global additional_lib_names      
+    for f in files:
+        additional_lib_names.append(f)    
+
 # always add client core dll
 Add('clntcore')
 
+# always add asf file format
+Add('asfff')
+Add('wma9')
+Add('wmarender')
+
+# add hxwmdrmplugin to *dll_names*.txt 
+AddAdditionalDLLs('hxwmdrmplugin')
+
 if project.IsDefined("HELIX_FEATURE_S60_PROGDOWN"):
     Add('progdownfs')
 
@@ -338,6 +357,13 @@
     path = os.path.normpath(path)
     lib_files_copy.append(path)
 
+additional_lib_names_copy = []
+for f in additional_lib_names:
+    path = os.path.join(playerDllDir, f)
+    path += ".dll"
+    path = os.path.normpath(path)
+    additional_lib_names_copy.append(path)
+    
 #
 # payld_dll_files, payld_rsc_files
 #
@@ -349,7 +375,8 @@
     'mdfmp4payloadformat.dll'     : 'datatype/mdf/video/format/mp4/[target]/mdfmp4payloadformat.dll',
     'mdfrvxpayloadformat.dll'     : 'datatype/mdf/video/format/rm/[target]/mdfrvxpayloadformat.dll',
     'mdfh264payloadformat.dll'    : 'datatype/mdf/video/format/h264/[target]/mdfh264payloadformat.dll',
-    'mdfflvpayloadformat.dll'     : 'datatype/mdf/video/format/flv/[target]/mdfflvpayloadformat.dll' }
+    'mdfflvpayloadformat.dll'     : 'datatype/mdf/video/format/flv/[target]/mdfflvpayloadformat.dll',
+    'mdfwmvpayloadformat.dll'     : 'datatype/mdf/video/format/wmv/[target]/mdfwmvpayloadformat.dll' }
 
 payld_rsc_names = []
 
@@ -359,11 +386,13 @@
     'mdfrvxpayloadformat.rsc'     : 'datatype/mdf/video/format/rm/[target]/mdfrvxpayloadformat.rsc', 
     'mdfh264payloadformat.rsc'    : 'datatype/mdf/video/format/h264/[target]/mdfh264payloadformat.rsc',
     'mdfflvpayloadformat.rsc'     : 'datatype/mdf/video/format/flv/[target]/mdfflvpayloadformat.rsc',
+    'mdfwmvpayloadformat.rsc'     : 'datatype/mdf/video/format/wmv/[target]/mdfwmvpayloadformat.rsc',
     '10207474.rsc'                : 'datatype/mdf/video/format/h263/[target]/10207474.rsc', 
     '10207476.rsc'                : 'datatype/mdf/video/format/mp4/[target]/10207476.rsc',
     '10207478.rsc'                : 'datatype/mdf/video/format/rm/[target]/10207478.rsc',
     '1020747a.rsc'                : 'datatype/mdf/video/format/h264/[target]/1020747a.rsc',
-    '1028334d.rsc'                : 'datatype/mdf/video/format/flv/[target]/1028334d.rsc' }
+    '1028334d.rsc'                : 'datatype/mdf/video/format/flv/[target]/1028334d.rsc',
+    '10283353.rsc'                : 'datatype/mdf/video/format/wmv/[target]/10283353.rsc' }
 
 #
 # some helpers to reduce clutter...
@@ -383,6 +412,7 @@
 AddPayldDllMdf( 'mdfrvxpayloadformat.dll'  )
 AddPayldDllMdf( 'mdfh264payloadformat.dll' )
 AddPayldDllMdf( 'mdfflvpayloadformat.dll'  )
+AddPayldDllMdf( 'mdfwmvpayloadformat.dll'  )
 
 def AddPayldRsc(*files):
     ''' add files to list of files to install '''
@@ -400,12 +430,14 @@
     AddPayldRscMdf( 'mdfrvxpayloadformat.rsc'  )
     AddPayldRscMdf( 'mdfh264payloadformat.rsc' )
     AddPayldRscMdf( 'mdfflvpayloadformat.rsc'  )
+    AddPayldRscMdf( 'mdfwmvpayloadformat.rsc'  )
 else:
     AddPayldRscMdf( '10207474.rsc' )
     AddPayldRscMdf( '10207476.rsc' )
     AddPayldRscMdf( '10207478.rsc' )
     AddPayldRscMdf( '1020747a.rsc' )
     AddPayldRscMdf( '1028334d.rsc' )
+    AddPayldRscMdf( '10283353.rsc' )
 
 # add make copy output dir prefix and .dll suffix, e.g. '../../debug/foo.dll'
 payld_dll_files_copy = []
-------------- next part --------------
Index: tools/metadataeng/engine/platform/symbian/hxmetadata_dlls.txt
===================================================================
RCS file: /cvsroot/datatype/tools/metadataeng/engine/platform/symbian/hxmetadata_dlls.txt,v
retrieving revision 1.1.2.3
diff -u -w -r1.1.2.3 hxmetadata_dlls.txt
--- tools/metadataeng/engine/platform/symbian/hxmetadata_dlls.txt	16 Oct 2009 19:40:29 -0000	1.1.2.3
+++ tools/metadataeng/engine/platform/symbian/hxmetadata_dlls.txt	8 Jan 2010 14:44:15 -0000
@@ -3,3 +3,4 @@
 smplfsys.dll
 mkvff.dll
 avifformat.dll
+asfff.dll
From ehyche at real.com  Tue Jan 12 07:16:58 2010
From: ehyche at real.com (Eric Hyche)
Date: Tue Jan 12 14:42:32 2010
Subject: [datatype-dev] Re: [Nokia-private-dev] RESEND CR: ESLM-7YHD9L -
 Helix_wmv
 controller: Conflict between the list from SupportsMimeType and actually
 video type (mp4) for video playback
In-Reply-To: 
References: 
Message-ID: <5701CE13-A77B-45A7-A614-3470F2637C85@real.com>

Looks good to me.

On Jan 12, 2010, at 7:27 AM,   wrote:

> Sending the CR again with updated diffs. This time the diffs of hxclient_4_2_0_brizo.bif and helix.bif have also been attached (which I had missed previously).
>  
> "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:  ext-shashi.merapala@nokia.com
>  
> Reviewed by:  ashish.as.gupta@nokia.com
>  
> Date:  01/12/2010
>  
> Project:  SymbianMmf_wm
>  
> Error Id:  ESLM-7YHD9L
>  
> Synopsis:  Helix_wmv controller: Conflict between the list from SupportsMimeType and actually video type (mp4) for video playback
>  
> Overview:  The WMV Extension Controller needs to be rolled up into the rest of Helix so that the Helix audio/video controllers support the Windows Media content.
>            
> Solution:  Diffs attached
>  
> Files removed:  The folder ?wmvextcontroller? and its contents are removed from \clientapps\symbianMmf\
>  
> Files added:  None
>  
> Files modified:  \client\build\BIF\hxclient_2_1_0_cayennes.bif
>                  \client\build\BIF\hxclient_4_2_0_brizo.bif
>                  \common\build\BIF\helix.bif
>                  \clientapps\symbianMmf\videocontroller\installMMF.pcf
>                  \clientapps\symbianMmf\videocontroller\MmfSis
>                  \clientapps\symbianMmf\audiocontroller\installMMF.pcf
>                  \clientapps\symbianMmf\audiocontroller\controllersis   
>                  \clientapps\symbianMmf\videocontroller\101F8513.rss
>                  \clientapps\symbianMmf\audiocontroller\10207B64.rss
>                  \datatype\tools\metadataeng\engine\platform\symbian\hxmetadata_dlls.txt
>                            
> Image size and heap use impact:  Approx. 289 kb of space saved on image creation
>  
> Module release testing (STIF):  Passed
>  
> Test case(s) added:  No
>  
> Memory leak check performed:  Yes. No new leaks introduced
>  
> Platforms and profiles build verified:  helix-client-s60-52-mmf-mdf-dsp
>  
> Platforms and profiles functionality verified:  armv5, winscw
>  
> Branch:  210CayS, HEAD, 420Brizo
>  
>  
>  
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From ehyche at real.com  Tue Jan 12 07:18:20 2010
From: ehyche at real.com (Eric Hyche)
Date: Tue Jan 12 14:43:26 2010
Subject: [datatype-dev] Re: [Nokia-private-dev] CR: ESLM-7ZDRP4 AC-3 in a
 MP4 container does	not play
In-Reply-To: <6F45DEE63C5BB542B6A7B0C4E41467D0152AFA744B@NOK-EUMSG-03.mgdnok.nokia.com>
References: <6F45DEE63C5BB542B6A7B0C4E41467D0152AFA744B@NOK-EUMSG-03.mgdnok.nokia.com>
Message-ID: <5C340DFB-CE1B-48E4-8D04-3F8D4F7BB16F@real.com>

Looks good, Gang. Thanks for making this addition.

Eric

On Jan 11, 2010, at 1:09 PM,   wrote:

> "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:  Gang.Jia@nokia.com
>  
> Reviewed by:
>  
> Date: 1/11/2010
>  
> Project: SymbianMmf_wm
>  
> ErrorId:  ESLM-7ZDRP4
>  
> Synopsis: CR: ESLM-7ZDRP4 AC-3 in a MP4 container does not play
>  
> Added new QT Atoms for ac3/eac3. Based on these atoms to parse the SampleDescriptionBox and convert to internal ac3/eac3 mimetype. Using the HXConcatenatePayloadFormat
> as packetizer and the audio plays fine.
>  
> Root Cause of the problem:  New feature.
>  
> Files Added:
> none.
>  
>  
> Files Modified:
>  
> /datatype/mdf/audio/dsp/mdfaudfmt.cpp
> /datatype/mp4/fileformat/qtatmmgs.cpp
> /datatype/mp4/fileformat/qtpacketizerfct.cpp
> /datatype/mp4/fileformat/pub/qtatoms.h
>  
>  
> Image Size and Heap Use impact:
> minor
>  
> Module Release testing (STIF) :  Passed local test cases.
>  
> Test case(s) Added  :  Yes.
>  
> Memory leak check performed : Yes. No new leaks introduced
>  
> Platforms and Profiles Build Verified: helix-client-s60-52-mmf-mdf-dsp
>  
> Platforms and Profiles Functionality verified: armv5
>  
> Branch: 210CayS,Head, 420Brizo
>  
>  
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From ehyche at real.com  Tue Jan 12 07:15:38 2010
From: ehyche at real.com (Eric Hyche)
Date: Tue Jan 12 14:45:06 2010
Subject: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays
	incorrect duration for a wav file recorded by gnome-sound-recorder.
In-Reply-To: <009101ca934b$e2d12cb0$8001a8c0@adroit02a604c1>
References: <011601ca78cd$6011f9a0$8001a8c0@adroit02a604c1>
	<7ECCEA249B7CDC49A079EC0075E999AA07D82CC716@SEAMBX.corp.real.com>
	<012301ca798f$c8a9dce0$8001a8c0@adroit02a604c1>
	<268FD6EA-49A7-42FA-AFC6-78547C20C18B@real.com>
	<01ed01ca8492$b14289e0$8001a8c0@adroit02a604c1>
	<5FC21ACD-FE11-427F-BA16-49FA0D27F818@real.com>
	<007401ca8ec6$e4d0abf0$8001a8c0@adroit02a604c1>
	
	<004901ca8f77$39950c70$8001a8c0@adroit02a604c1>
	<0833E151-A5C6-4A11-9F0B-411840816C87@real.com>
	<008601ca905e$868a8130$8001a8c0@adroit02a604c1>
	
	<009101ca934b$e2d12cb0$8001a8c0@adroit02a604c1>
Message-ID: 

Looks good to me.

On Jan 12, 2010, at 12:55 AM, Sushant Garg wrote:

> Thanks Eric,
> Now the code changes to
>
> +    HX_RESULT retVal = m_pFileObject->QueryInterface(IID_IHXFileStat, (void **) &m_pFileStatObj);
> +    if(SUCCEEDED(retVal) && (m_pFileStatObj->Stat((IHXFileStatResponse *) this) == HXR_OK))
> +    {
> +        return status;
> +    }
> +    else
> +    {
>
> from
> +    HX_RESULT retVal = m_pFileObject->QueryInterface(IID_IHXFileStat, (void **) &m_pFileStatObj);
> +    if(SUCCEEDED(retVal) && m_pFileStatObj)
> +    {
> +        m_pFileStatObj->Stat((IHXFileStatResponse *) this);
> +    }
> +    else
> +    {
> Please find updated diff.
>
> Thanks & Regards
> Sushant Garg
> ----- Original Message -----
> From: Eric Hyche
> To: Sushant Garg
> Cc: Datatype-Dev
> Sent: Friday, January 08, 2010 7:15 PM
> Subject: Re: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-recorder.
>
> Also if the call to IHXFileStat::Stat() returns failure, then we will never get a callback to StatDone(). So we should check the return value of the Stat() call, and if it fails, then we should also go ahead and call read (just like if the QI for IHXFileStat failed).
>
> Eric
>
> On Jan 8, 2010, at 7:31 AM, Sushant Garg wrote:
>
> > Oops! missed to notice that.
> >
> > Now changed that code to following:
> >
> > in CRIFFReader::InitDone() function.
> >
> > +    HX_RELEASE(m_pFileStatObj);
> > +    if ( !m_pFileObject )
> > +    return HXR_UNEXPECTED;
> > +
> > +    HX_RESULT retVal = m_pFileObject->QueryInterface(IID_IHXFileStat, (void **) &m_pFileStatObj);
> > +    if(SUCCEEDED(retVal) && m_pFileStatObj)
> > +    {
> > +        m_pFileStatObj->Stat((IHXFileStatResponse *) this);
> > +    }
> > +    else
> > +    {
> > +        m_state = RS_GetFileTypePending;
> > +        return m_pFileObject->Read(sizeof(UINT32) * 2);
> > +    }
> > +    return status;
> >
> > from
> >
> > +    HX_RELEASE(m_pFileStatObj);
> > +    if(m_pFileObject)
> > +    {
> > +        HX_RESULT retVal = m_pFileObject->QueryInterface(IID_IHXFileStat, (void **) &m_pFileStatObj);
> > +        if(SUCCEEDED(retVal) && m_pFileStatObj)
> > +        {
> > +            m_pFileStatObj->Stat((IHXFileStatResponse *) this);
> > +        }
> > +    }
> > +    return status;
> >
> > Please find the updated diff.
> >
> > Thanks & Regards
> > Sushant Garg
> > ----- Original Message -----
> > From: Eric Hyche
> > To: Sushant Garg
> > Cc: Datatype-Dev
> > Sent: Thursday, January 07, 2010 8:40 PM
> > Subject: Re: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-recorder.
> >
> > But if I'm reading the diff correctly, if the QI for IHXFileStat fails, then we never call the RIFF reader user back with CRiffResponse::InitDone(), correct? If so, then we've hung the app.
> >
> > Eric
> >
> > On Jan 7, 2010, at 3:55 AM, Sushant Garg wrote:
> >
> > > Before calling Stat() we have a condition to check whether QI is succeeded or not & if in case it does not then we will not send a call to Stat() & return status of InitDone().
> > >
> > > +    HX_RELEASE(m_pFileStatObj);
> > > +    if(m_pFileObject)
> > > +    {
> > > +        HX_RESULT retVal = m_pFileObject->QueryInterface(IID_IHXFileStat, (void **) &m_pFileStatObj);
> > > +        if(SUCCEEDED(retVal) && m_pFileStatObj)
> > > +        {
> > > +            m_pFileStatObj->Stat((IHXFileStatResponse *) this);
> > > +        }
> > > +    }
> > > +    return status;
> > >
> > > Now if Stat() fails then we will get error in StatDone() & hence we will not get the size of file. And so we will not change m_ulDataSizeInBytes in wvffplin.cpp
> > >
> > > Thanks & Regards
> > > Sushant Garg
> > > ----- Original Message -----
> > > From: Eric Hyche
> > > To: Sushant Garg
> > > Cc: Datatype-Dev
> > > Sent: Wednesday, January 06, 2010 8:25 PM
> > > Subject: Re: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-recorder.
> > >
> > > Looks good for the most part. However, if your QI for IHXFileStat fails, then we will hang, since no InitDone() back to the RIFF reader user will ever be made. So make sure that if either the QI for IHXFileStat fails, or the call to STat() returns failure that we properly make a failure InitDone() back to the RIFF reader user.
> > >
> > > Actually, the QI for IHXFileStat should not be required, since file objects are not required to implement this. So if the QI for IHXFileStat fails, then the RIFF reader should continue on normally, just without knowing the file size. If the QI for IHXFileStat() succeeds but the call to STat() returns failure, then we can return failure in InitDone() back to the RIFF reader caller.
> > >
> > > Eric
> > >
> > > On Jan 6, 2010, at 6:53 AM, Sushant Garg wrote:
> > >
> > > > Thanks Eric,
> > > >
> > > > Please find the updated diff.
> > > >
> > > > Now I am calling Read() from CRIFFReader::StatDone() rather then CRIFFReader::InitDone.
> > > >
> > > > Thanks & Regards
> > > > Sushant Garg
> > > > ----- Original Message -----
> > > > From: Eric Hyche
> > > > To: Sushant Garg
> > > > Cc: Datatype-Dev
> > > > Sent: Monday, January 04, 2010 8:13 PM
> > > > Subject: Re: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-recorder.
> > > >
> > > > You are treating IHXFileStat::Stat() like a synchronous call and there is
> > > > no guarantee that it will be. Once you issue the call to Stat(), then
> > > > you will need to wait in StatDone() before calling back to InitDone().
> > > >
> > > > Eric
> > > >
> > > > On Dec 24, 2009, at 7:14 AM, Sushant Garg wrote:
> > > >
> > > > > Eric,
> > > > >
> > > > > Please find the updated diff.
> > > > >
> > > > > Thanks & Regards
> > > > > Sushant Garg
> > > > > ----- Original Message -----
> > > > > From: Eric Hyche
> > > > > To: Sushant Grag
> > > > > Cc: Datatype-Dev
> > > > > Sent: Friday, December 11, 2009 12:04 AM
> > > > > Subject: Re: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-recorder.
> > > > >
> > > > > Sushant,
> > > > >
> > > > > After thinking about this some more, I think the Stat() call should be moved inside the RIFF reader, for a couple of reasons:
> > > > >
> > > > > - centralize it in one place, so other uses of the RIFF reader don't have to do the same thing.
> > > > > - the most natural time to do the Stat is immediately after the IHXFileObject is Init'd, which in this case the RIFF reader does.
> > > > >
> > > > > So I think the RIFF reader could do the IHXFileStat::Stat() call, and then store the filesize result. Then we could just add an accessor function on the RIFF reader so that users of the RIFF reader can read the size. The file size would only be valid after the CRIFFREader::Open() call had returned with a RIFFOpenDone() callback.
> > > > >
> > > > > Eric
> > > > >
> > > > > On Dec 10, 2009, at 6:56 AM, Sushant Grag wrote:
> > > > >
> > > > > > Thanks Eric,
> > > > > >
> > > > > > Please find the updated diff.
> > > > > >
> > > > > > Thanks & Regards
> > > > > > Sushant Garg
> > > > > > ----- Original Message -----
> > > > > > From: Eric Hyche
> > > > > > To: Sushant Grag ; Datatype-Dev
> > > > > > Sent: Wednesday, December 09, 2009 7:17 PM
> > > > > > Subject: RE: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-recorder.
> > > > > >
> > > > > > +UINT32 CRIFFReader::GetFileDataSize()
> > > > > > +{
> > > > > > + CHXString strFilePath = m_pFilename;
> > > > > > + const char* szFileProtocol = "file://";
> > > > > > + UINT32 ulFiledataSize =0;
> > > > > > +
> > > > > > + if( !strFilePath.Left(strlen(szFileProtocol)).CompareNoCase(szFileProtocol) )
> > > > > > + {
> > > > > > +     strFilePath = strFilePath.Mid(strlen(szFileProtocol));
> > > > > > +     struct stat fileInfo;
> > > > > > +     if(!stat(strFilePath, &fileInfo))
> > > > > > +     {
> > > > > > +         ulFiledataSize = fileInfo.st_size;
> > > > > > +     }
> > > > > > + }
> > > > > > + return ulFiledataSize;
> > > > > > +}
> > > > > > +
> > > > > >
> > > > > > I did not mean do a C-library stat() on the file. The file object that
> > > > > > the RIFF readers uses will not always be a local file that you can call stat() on.
> > > > > > What I meant was QI the file object for IHXFileStat and then call IHXFileStat::Stat().
> > > > > > You will have to implement IHXFileStatResponse::StatDone().
> > > > > >
> > > > > > Eric
> > > > > >
> > > > > > >-----Original Message-----
> > > > > > >From: datatype-dev-bounces@helixcommunity.org [mailto:datatype-dev-bounces@helixcommunity.org] On
> > > > > > >Behalf Of Sushant Grag
> > > > > > >Sent: Wednesday, December 09, 2009 7:45 AM
> > > > > > >To: Datatype-Dev
> > > > > > >Subject: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file
> > > > > > >recorded by gnome-sound-recorder.
> > > > > > >
> > > > > > >Project: RealPlayer for Netbook
> > > > > > >
> > > > > > >Synopsis:
> > > > > > >
> > > > > > >Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-
> > > > > > >recorder.
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >Overview:
> > > > > > >
> > > > > > >There is an issue with wav files which are recorded from ubuntu sound recorder.
> > > > > > >
> > > > > > >The calculated file duration in Realplayer for linux is much & much larger then original file duration
> > > > > > >
> > > > > > >eg: file has duration of 6secs & Realplayer shows more than 3hr 22 min.
> > > > > > >
> > > > > > >Reason behind is, sound recorder adds garbage value in data chunk which leads to very big value of
> > > > > > >m_ulChunkBodyLen calculated in riff.cpp around line 380
> > > > > > >
> > > > > > >            if ( (UINT32)getlong(buf) == m_ulFindChunkId )
> > > > > > >
> > > > > > >            {
> > > > > > >
> > > > > > >                // Found the chunk we were asked for
> > > > > > >
> > > > > > >                m_state = RS_Ready;
> > > > > > >
> > > > > > >                m_ulChunkBodyLen = GetLong(&buf[4]);
> > > > > > >
> > > > > > >                m_ulChunkSize = m_ulChunkBodyLen;
> > > > > > >
> > > > > > >Which cause a very higher value of duration.
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >Now I have created two different functions in riff.cpp;
> > > > > > >
> > > > > > >CRIFFReader::GetFileDataSize() & CRIFFReader::GetCurrentFileOffset() in which I am getting the length
> > > > > > >of file & the file offset and calling these functions in function CWaveFileFormat::RIFFFindChunkDone()
> > > > > > >, case WS_FindDataChunkPending to set m_ulDataSizeInBytes if "len" is greater then
> > > > > > >"ulDataSizeInBytes".
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >Files Modified:
> > > > > > >/cvsroot/datatype/common/util/riff.cpp
> > > > > > >
> > > > > > >/cvsroot/datatype/common/util/pub/riff.h
> > > > > > >
> > > > > > >/cvsroot/datatype/wav/fileformat/wvffplin.cpp
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >Files Added:
> > > > > > >
> > > > > > >None
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >Platforms and Profiles Affected:
> > > > > > >Linux
> > > > > > >
> > > > > > >Distribution Libraries Affected:
> > > > > > >None.
> > > > > > >
> > > > > > >Platforms and Profiles Build Verified:
> > > > > > >Bif: realplay_gtk_atlas_restricted_gold_1.2
> > > > > > >Profile: helix-client-moblin
> > > > > > >Target: player_all
> > > > > > >
> > > > > > >Branch:
> > > > > > >Atlas347, Atlas310, Atlas3_4_10, 401 Brizo, Head
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >Files Attached:
> > > > > > >
> > > > > > >9840_diff.txt
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >Thanks & Regards
> > > > > > >Sushant Garg
> > > > > > <9840_diff.txt>
> > > > >
> > > > > Eric Hyche (ehyche@real.com)
> > > > > Principal Engineer
> > > > > RealNetworks, Inc.
> > > > >
> > > > > 
> > > >
> > > > Eric Hyche (ehyche@real.com)
> > > > Principal Engineer
> > > > RealNetworks, Inc.
> > > >
> > > > <9840_diff.txt>
> > >
> > > Eric Hyche (ehyche@real.com)
> > > Principal Engineer
> > > RealNetworks, Inc.
> > >
> >
> > Eric Hyche (ehyche@real.com)
> > Principal Engineer
> > RealNetworks, Inc.
> >
> > <9840_diff.txt>
>
> Eric Hyche (ehyche@real.com)
> Principal Engineer
> RealNetworks, Inc.
>
> <9840_diff.txt>

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From Gang.Jia at nokia.com  Tue Jan 12 08:57:37 2010
From: Gang.Jia at nokia.com (Gang.Jia@nokia.com)
Date: Tue Jan 12 16:22:11 2010
Subject: [datatype-dev] RE: [Nokia-private-dev] CR: ESLM-7ZDRP4 AC-3 in a
 MP4 container does	not play
In-Reply-To: <5C340DFB-CE1B-48E4-8D04-3F8D4F7BB16F@real.com>
References: <6F45DEE63C5BB542B6A7B0C4E41467D0152AFA744B@NOK-EUMSG-03.mgdnok.nokia.com>
	<5C340DFB-CE1B-48E4-8D04-3F8D4F7BB16F@real.com>
Message-ID: <6F45DEE63C5BB542B6A7B0C4E41467D0152AFA7BA8@NOK-EUMSG-03.mgdnok.nokia.com>

Thanks Eric. Checked in to 210CayS & Head.

Gang

-----Original Message-----
From: ext Eric Hyche [mailto:ehyche@real.com] 
Sent: Tuesday, January 12, 2010 9:18 AM
To: Jia Gang (Nokia-D/Dallas)
Cc: datatype-dev@helixcommunity.org; nokia-private-dev@helixcommunity.org
Subject: Re: [Nokia-private-dev] CR: ESLM-7ZDRP4 AC-3 in a MP4 container does not play

Looks good, Gang. Thanks for making this addition.

Eric

On Jan 11, 2010, at 1:09 PM,   wrote:

> "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:  Gang.Jia@nokia.com
>  
> Reviewed by:
>  
> Date: 1/11/2010
>  
> Project: SymbianMmf_wm
>  
> ErrorId:  ESLM-7ZDRP4
>  
> Synopsis: CR: ESLM-7ZDRP4 AC-3 in a MP4 container does not play
>  
> Added new QT Atoms for ac3/eac3. Based on these atoms to parse the 
> SampleDescriptionBox and convert to internal ac3/eac3 mimetype. Using the HXConcatenatePayloadFormat as packetizer and the audio plays fine.
>  
> Root Cause of the problem:  New feature.
>  
> Files Added:
> none.
>  
>  
> Files Modified:
>  
> /datatype/mdf/audio/dsp/mdfaudfmt.cpp
> /datatype/mp4/fileformat/qtatmmgs.cpp
> /datatype/mp4/fileformat/qtpacketizerfct.cpp
> /datatype/mp4/fileformat/pub/qtatoms.h
>  
>  
> Image Size and Heap Use impact:
> minor
>  
> Module Release testing (STIF) :  Passed local test cases.
>  
> Test case(s) Added  :  Yes.
>  
> Memory leak check performed : Yes. No new leaks introduced
>  
> Platforms and Profiles Build Verified: helix-client-s60-52-mmf-mdf-dsp
>  
> Platforms and Profiles Functionality verified: armv5
>  
> Branch: 210CayS,Head, 420Brizo
>  
>  
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From stanb at real.com  Tue Jan 12 11:19:07 2010
From: stanb at real.com (Stan Bobrovskiy)
Date: Tue Jan 12 18:43:35 2010
Subject: [datatype-dev] CR: PR# 256084 - Hang when cancelling FLV conversion
	to M4V
Message-ID: <7ECCEA249B7CDC49A079EC0075E999AA07D8B6E182@SEAMBX.corp.real.com>

Modified by: stanb@real.com
Date: 01:12:10
Project: RealPlayer SP 1.5

Synopsis: This is request to reverse changes made about 6 weeks ago by umakantg with the following comment:
bug fix 9760: Low memory and media scanner died. CR: ehyche@real.com and sfu@real.com
The logic to release m_pContext is revoked back to its original (as seen in earlier
version of ffdriver.cpp 1.39.2.19)

This change introduces quite obvious deadlock in DTDR chain in case of CDataTypeMultiConverter involvement. Without reversing this change we cannot procede with our release schedule on RealPlayer.

Files Added: none

Files Modified:
datatype/tools/dtdriver/engine/ffdriver.cpp

Platforms and Profiles Build Verified:
Platform: win32-i386-vc7

Profile: helix-client-all-defines

target(s): playinst

Branch: hxclient_3_1_0_atlas

Index: ffdriver.cpp
===================================================================
RCS file: /cvsroot/datatype/tools/dtdriver/engine/ffdriver.cpp,v
retrieving revision 1.39.2.23
diff -u -1 -0 -r1.39.2.23 ffdriver.cpp
--- ffdriver.cpp   2 Dec 2009 22:00:51 -0000         1.39.2.23
+++ ffdriver.cpp            12 Jan 2010 18:58:36 -0000
@@ -384,25 +384,21 @@

     m_bUsingPreferredAudioPayload = FALSE;
     m_bUsingPreferredVideoPayload = FALSE;

     // Context must be the last object to close
     if (bCompleteShutdown || !m_bPersistentContext)
     {
            HX_RELEASE(m_pScheduler);
            HX_RELEASE(m_pClientContext);
            HX_RELEASE(m_pErrorMessages);
-        if(m_pContext)
-        {
-            m_pContext->Destruct();
-            m_pContext = NULL;
-        }
+        HX_RELEASE(m_pContext);
     }
 }


 void FFDriver::Stop()
 {
     HXLOGL1(HXLOG_DTDR, "FFDriver::Stop()");
     m_bStop = TRUE;
     if (m_pContext)
     {
@@ -1545,26 +1541,22 @@

                 m_ulContextEvents = m_pContext->GetProcessEventCount();

                 HX_RELEASE(m_pSourceHandlerStack);
                 ReleaseSourceHandlerList(m_pUtilizedSourceHandlerList);

                 if (MEMORY_TRACKING_NEEDED && !m_bPersistentContext)
                 {
                            HX_RELEASE(m_pScheduler);
                     HX_RELEASE(m_pErrorMessages);
-                    if(m_pContext)
-                    {
-                        m_pContext->Destruct();
-                        m_pContext = NULL;
-                    }
-                                    }
+                    HX_RELEASE(m_pContext);
+                }

                 MEMPROBE_FREEZE(MEMPRB_TOTAL);

                 m_state = State_RunReport;
                 break;

             case State_RunReport:
                 DT_LOGTIMING(pTimePointArray);
                 DT_LOGMEMORYUSE();
                 DT_LOGEVENTDATA();
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100112/b0d8fdd8/attachment.html
From awebster at real.com  Tue Jan 12 11:21:42 2010
From: awebster at real.com (Andrew Webster)
Date: Tue Jan 12 18:46:13 2010
Subject: [datatype-dev] Re: CR: PR# 256084 - Hang when cancelling FLV
	conversion to M4V
In-Reply-To: <7ECCEA249B7CDC49A079EC0075E999AA07D8B6E182@SEAMBX.corp.real.com>
Message-ID: 

As Stan indicates, this is delaying a build for our Preview release, currently scheduled for tomorrow, so please expedite approval.

Thanks much
Andrew




On 12/1/10 11:19, "Stan Bobrovskiy"  wrote:

Modified by: stanb@real.com
Date: 01:12:10
Project: RealPlayer SP 1.5

Synopsis: This is request to reverse changes made about 6 weeks ago by umakantg with the following comment:
bug fix 9760: Low memory and media scanner died. CR: ehyche@real.com and sfu@real.com
The logic to release m_pContext is revoked back to its original (as seen in earlier
version of ffdriver.cpp 1.39.2.19)

This change introduces quite obvious deadlock in DTDR chain in case of CDataTypeMultiConverter involvement. Without reversing this change we cannot procede with our release schedule on RealPlayer.

Files Added: none

Files Modified:
datatype/tools/dtdriver/engine/ffdriver.cpp

Platforms and Profiles Build Verified:
Platform: win32-i386-vc7

Profile: helix-client-all-defines

target(s): playinst

Branch: hxclient_3_1_0_atlas


Index: ffdriver.cpp
===================================================================
RCS file: /cvsroot/datatype/tools/dtdriver/engine/ffdriver.cpp,v
retrieving revision 1.39.2.23
diff -u -1 -0 -r1.39.2.23 ffdriver.cpp
--- ffdriver.cpp   2 Dec 2009 22:00:51 -0000         1.39.2.23
+++ ffdriver.cpp            12 Jan 2010 18:58:36 -0000
@@ -384,25 +384,21 @@

     m_bUsingPreferredAudioPayload = FALSE;
     m_bUsingPreferredVideoPayload = FALSE;

     // Context must be the last object to close
     if (bCompleteShutdown || !m_bPersistentContext)
     {
            HX_RELEASE(m_pScheduler);
            HX_RELEASE(m_pClientContext);
            HX_RELEASE(m_pErrorMessages);
-        if(m_pContext)
-        {
-           m_pContext->Destruct();
-           m_pContext = NULL;
-        }
+       HX_RELEASE(m_pContext);
     }
 }


 void FFDriver::Stop()
 {
     HXLOGL1(HXLOG_DTDR, "FFDriver::Stop()");
     m_bStop = TRUE;
     if (m_pContext)
     {
@@ -1545,26 +1541,22 @@

                m_ulContextEvents = m_pContext->GetProcessEventCount();

                HX_RELEASE(m_pSourceHandlerStack);
                ReleaseSourceHandlerList(m_pUtilizedSourceHandlerList);

                if (MEMORY_TRACKING_NEEDED && !m_bPersistentContext)
                {
                           HX_RELEASE(m_pScheduler);
                    HX_RELEASE(m_pErrorMessages);
-                   if(m_pContext)
-                   {
-                       m_pContext->Destruct();
-                       m_pContext = NULL;
-                   }
-                                   }
+                   HX_RELEASE(m_pContext);
+               }

                MEMPROBE_FREEZE(MEMPRB_TOTAL);

                m_state = State_RunReport;
                break;

            case State_RunReport:
                DT_LOGTIMING(pTimePointArray);
                DT_LOGMEMORYUSE();
                DT_LOGEVENTDATA();


Andrew Webster
General Manager
RealPlayer and International Development

Direct: 206 892 6334

awebster@real.com





-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100112/21a0a0fd/attachment-0001.html
From ehyche at real.com  Tue Jan 12 11:39:46 2010
From: ehyche at real.com (Eric Hyche)
Date: Tue Jan 12 19:04:15 2010
Subject: [datatype-dev] CR: PR# 256084 - Hang when cancelling FLV
	conversion	to M4V
In-Reply-To: <7ECCEA249B7CDC49A079EC0075E999AA07D8B6E182@SEAMBX.corp.real.com>
References: <7ECCEA249B7CDC49A079EC0075E999AA07D8B6E182@SEAMBX.corp.real.com>
Message-ID: 

Looks good.


On Jan 12, 2010, at 2:19 PM, Stan Bobrovskiy wrote:

> Modified by: stanb@real.com
> Date: 01:12:10
> Project: RealPlayer SP 1.5
> 
> Synopsis: This is request to reverse changes made about 6 weeks ago by umakantg with the following comment:
> bug fix 9760: Low memory and media scanner died. CR: ehyche@real.com and sfu@real.com
> The logic to release m_pContext is revoked back to its original (as seen in earlier
> version of ffdriver.cpp 1.39.2.19)
>  
> This change introduces quite obvious deadlock in DTDR chain in case of CDataTypeMultiConverter involvement. Without reversing this change we cannot procede with our release schedule on RealPlayer.
>  
> Files Added: none
> 
> Files Modified:
> datatype/tools/dtdriver/engine/ffdriver.cpp
> 
> Platforms and Profiles Build Verified:
> Platform: win32-i386-vc7
> 
> Profile: helix-client-all-defines
> 
> target(s): playinst
> 
> Branch: hxclient_3_1_0_atlas 
> 
> Index: ffdriver.cpp
> ===================================================================
> RCS file: /cvsroot/datatype/tools/dtdriver/engine/ffdriver.cpp,v
> retrieving revision 1.39.2.23
> diff -u -1 -0 -r1.39.2.23 ffdriver.cpp
> --- ffdriver.cpp   2 Dec 2009 22:00:51 -0000         1.39.2.23
> +++ ffdriver.cpp            12 Jan 2010 18:58:36 -0000
> @@ -384,25 +384,21 @@
>  
>      m_bUsingPreferredAudioPayload = FALSE;
>      m_bUsingPreferredVideoPayload = FALSE;
>  
>      // Context must be the last object to close
>      if (bCompleteShutdown || !m_bPersistentContext)
>      {
>             HX_RELEASE(m_pScheduler);
>             HX_RELEASE(m_pClientContext);
>             HX_RELEASE(m_pErrorMessages);
> -        if(m_pContext)
> -        {
> -            m_pContext->Destruct();
> -            m_pContext = NULL;
> -        }
> +        HX_RELEASE(m_pContext);
>      }
>  }
>  
>  
>  void FFDriver::Stop()
>  {
>      HXLOGL1(HXLOG_DTDR, "FFDriver::Stop()");
>      m_bStop = TRUE;
>      if (m_pContext)
>      {
> @@ -1545,26 +1541,22 @@
>  
>                  m_ulContextEvents = m_pContext->GetProcessEventCount();
>  
>                  HX_RELEASE(m_pSourceHandlerStack);
>                  ReleaseSourceHandlerList(m_pUtilizedSourceHandlerList);
>                 
>                  if (MEMORY_TRACKING_NEEDED && !m_bPersistentContext)
>                  {
>                             HX_RELEASE(m_pScheduler);
>                      HX_RELEASE(m_pErrorMessages);
> -                    if(m_pContext)
> -                    {
> -                        m_pContext->Destruct();
> -                        m_pContext = NULL;
> -                    }
> -                                    }
> +                    HX_RELEASE(m_pContext);
> +                }
>  
>                  MEMPROBE_FREEZE(MEMPRB_TOTAL);
>  
>                  m_state = State_RunReport;
>                  break;
>  
>              case State_RunReport:
>                  DT_LOGTIMING(pTimePointArray);
>                  DT_LOGMEMORYUSE();
>                  DT_LOGEVENTDATA();
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From pbasic at real.com  Tue Jan 12 13:35:49 2010
From: pbasic at real.com (Petar Basic)
Date: Tue Jan 12 21:00:55 2010
Subject: [datatype-dev] Re: CR/CN: Solaris-Sparc-GCC patches for
	GMPMetaEditor branch
In-Reply-To: <9b8350411001120419p7b849630ud12c8991378e0f54@mail.gmail.com>
References: <9b8350411001110958m6fb02f4fqa4ace1930abf35c1@mail.gmail.com>
	<9b8350411001120419p7b849630ud12c8991378e0f54@mail.gmail.com>
Message-ID: <9b8350411001121335r29363fc3m202f3540c31e868e@mail.gmail.com>

Latest set of patches to fix the Solaris native compiler build:

1.) STL headers in encodesvc projects must precede Helix headers at some places.

2.) Reverted back GNUC conditional in math64.h since GCC build is not
needed anymore.

Build tested with:
SYSTEM_ID=sunos-5.10-sparc-studio11


On Tue, Jan 12, 2010 at 1:19 PM, Petar Basic  wrote:
> Additional fixes for Solaris native compiler.
>
>
> On Mon, Jan 11, 2010 at 6:58 PM, Petar Basic  wrote:
>> Modified by: pbasic at real.com
>> Date: 2010/01/11
>> Project: GMP MetaEditor (meta3gp.exe)
>>
>> Synopsis:
>> Solaris-Sparc-GCC patches for GMPMetaEditor branch
>>
>> Overview:
>> This CR includes patches needed to successfully build/run meta3gp
>> project with GCC on Solaris-Sparc.
>>
>> Checked into GMPMetaEditor branch immediately since I need to verify
>> the build on the farm ASAP. ?Some points below can be discussed and
>> improved on later, however, at this time they seem irrelevant in the
>> context of GMPMetaEditor.
>>
>> Details:
>> 1.) "audio/fixptutil/pub/math64.h" was failing to compile due to
>> missing implementation of 64-bit operations for Solaris-Sparc-GCC
>> combo.
>>
>> In the CVS log, one can find traces of Sparc specific blocks of code
>> which according to CVS comments had some bugs and were replaced by
>> platform independent (plain C) implementations for Solaris-SunStudio
>> combo. ?Relevant ifdef statement has now been modified to also compile
>> platform independent implementations under Solaris-Sparc-GCC combo.
>>
>> All tests performed by "audio/fixptutil/test/fixpttest.c" succeed,
>> although the execution proves slow. ?Testing with MetaEditor reveals
>> that these operations are not used during meta-data
>> extraction/injection, so at this time optimization for
>> Solaris-Sparc-GCC does not seem important.
>>
>> 2.) statvfs on Solaris fails if passed an empty path argument, which
>> causes calling method CHXFileSpecUtils::IsDiskLocal to print out an
>> error to the console. ?This is not acceptable for MetaEditor,
>> especially since everything works correctly. ?The culprit is actually
>> in MemoryMapDataFile::Bind method in
>> "common/fileio/platform/unix/mmapdatf.cpp". ?The code has been updated
>> to process empty paths as a special case before resorting to
>> CHXFileSpecUtils::IsDiskLocal. ?Also, what seems as a duplicate code
>> block due to a bad check-in has been removed.
>>
>> 3.) RMAShutdown entry point which is now required by plugin handler
>> has been added to metaeditor.dll.
>>
>> 4.) Defaulting meta3gp executable to DTDriver synchronous mode since
>> asynchronous mode is not implemented on Solaris.
>>
>> 5.) Fixed various build busters.
>>
>> 6.) Reordered library dependencies in a few projects to allow the
>> Solaris linker to link all symbols correctly.
>>
>> Testing:
>> Verified operation on GMP MetaEditor on Solaris 5.10 Sparc via
>> standard MetaEditor test scripts.
>>
>> Files Modified:
>> audio/fixptutil/pub/math64.h
>> client/medpltfm/hxmedpltfmdll
>> client/medpltfm/pub/chxmedpltfmkicker.h
>> client/medpltfm/pub/chxmedpltfmsched.h
>> common/fileio/platform/unix/mmapdatf.cpp
>> datatype/mp4/filewriter/m4avsh.cpp
>> datatype/mp4/filewriter/mp4atoms.h
>> datatype/mp4/filewriter/mp4sm.cpp
>> datatype/mp4/filewriter/ra10sh.cpp
>> datatype/tools/dtdriver/apps/meta3gp/HXXmlInputParser.h
>> datatype/tools/dtdriver/apps/meta3gp/Umakefil_meta3gp
>> datatype/tools/dtdriver/apps/meta3gp/Umakefil_tests
>> datatype/tools/dtdriver/apps/meta3gp/main.cpp
>> datatype/tools/dtdriver/dtdrplin/dtdr_genr_lib
>> datatype/tools/dtdriver/dtdrplin/dtdr_platform_dll
>> datatype/tools/metaeditor/Umakefil
>> datatype/tools/metaeditor/hxdll.cpp
>>
>> Platforms and Profiles Affected:
>> All
>>
>> Image Size and Heap Use impact:
>> None
>>
>> Platforms and Profiles Build Verified:
>> system id: win32-i386-vc7, sunos-5.8-sparc-gcc-server
>> profile: helix-client-all-defines
>>
>> Platforms and Profiles Functionality Verified:
>> x86 Windows XP SP2
>> Sparc SunOS 5.10
>>
>> Branch:
>> GMPMetaEditor
>>
>> Copyright assignment:
>> I am a RealNetworks employee or contractor.
>>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: audio_fixptutil.3.diff
Type: application/octet-stream
Size: 1766 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100112/bdd11475/audio_fixptutil.3-0001.obj
-------------- next part --------------
A non-text attachment was scrubbed...
Name: client_encodesvc_common.3.diff
Type: application/octet-stream
Size: 13379 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100112/bdd11475/client_encodesvc_common.3-0001.obj
From sgarg at real.com  Wed Jan 13 20:34:38 2010
From: sgarg at real.com ( Sushant Garg)
Date: Thu Jan 14 03:58:49 2010
Subject: [datatype-dev] CN: Fix for Bug 9840: RealPlayer displays incorrect
	duration for a wav file recorded by gnome-sound-recorder.
References: <011601ca78cd$6011f9a0$8001a8c0@adroit02a604c1>
	<7ECCEA249B7CDC49A079EC0075E999AA07D82CC716@SEAMBX.corp.real.com>
	<012301ca798f$c8a9dce0$8001a8c0@adroit02a604c1>
	<268FD6EA-49A7-42FA-AFC6-78547C20C18B@real.com>
	<01ed01ca8492$b14289e0$8001a8c0@adroit02a604c1>
	<5FC21ACD-FE11-427F-BA16-49FA0D27F818@real.com>
	<007401ca8ec6$e4d0abf0$8001a8c0@adroit02a604c1>
	
	<004901ca8f77$39950c70$8001a8c0@adroit02a604c1>
	<0833E151-A5C6-4A11-9F0B-411840816C87@real.com>
	<008601ca905e$868a8130$8001a8c0@adroit02a604c1>
	
	<009101ca934b$e2d12cb0$8001a8c0@adroit02a604c1>
	
Message-ID: <007601ca94d2$e3dfd2e0$8001a8c0@adroit02a604c1>

Thanks Eric,

This is checked into Atlas310, Atlas3_4_10, Atlas347, Head, 401Brizo.

Thanks & Regards
Sushant Garg
  ----- Original Message ----- 
  From: Eric Hyche 
  To: Sushant Garg 
  Cc: Datatype-Dev 
  Sent: Tuesday, January 12, 2010 8:45 PM
  Subject: Re: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-recorder.


  Looks good to me.

  On Jan 12, 2010, at 12:55 AM, Sushant Garg wrote:

  > Thanks Eric,
  > Now the code changes to
  >
  > +    HX_RESULT retVal = m_pFileObject->QueryInterface(IID_IHXFileStat, (void **) &m_pFileStatObj);
  > +    if(SUCCEEDED(retVal) && (m_pFileStatObj->Stat((IHXFileStatResponse *) this) == HXR_OK))
  > +    {
  > +        return status;
  > +    }
  > +    else
  > +    {
  >
  > from
  > +    HX_RESULT retVal = m_pFileObject->QueryInterface(IID_IHXFileStat, (void **) &m_pFileStatObj);
  > +    if(SUCCEEDED(retVal) && m_pFileStatObj)
  > +    {
  > +        m_pFileStatObj->Stat((IHXFileStatResponse *) this);
  > +    }
  > +    else
  > +    {
  > Please find updated diff.
  >
  > Thanks & Regards
  > Sushant Garg
  > ----- Original Message -----
  > From: Eric Hyche
  > To: Sushant Garg
  > Cc: Datatype-Dev
  > Sent: Friday, January 08, 2010 7:15 PM
  > Subject: Re: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-recorder.
  >
  > Also if the call to IHXFileStat::Stat() returns failure, then we will never get a callback to StatDone(). So we should check the return value of the Stat() call, and if it fails, then we should also go ahead and call read (just like if the QI for IHXFileStat failed).
  >
  > Eric
  >
  > On Jan 8, 2010, at 7:31 AM, Sushant Garg wrote:
  >
  > > Oops! missed to notice that.
  > >
  > > Now changed that code to following:
  > >
  > > in CRIFFReader::InitDone() function.
  > >
  > > +    HX_RELEASE(m_pFileStatObj);
  > > +    if ( !m_pFileObject )
  > > +    return HXR_UNEXPECTED;
  > > +
  > > +    HX_RESULT retVal = m_pFileObject->QueryInterface(IID_IHXFileStat, (void **) &m_pFileStatObj);
  > > +    if(SUCCEEDED(retVal) && m_pFileStatObj)
  > > +    {
  > > +        m_pFileStatObj->Stat((IHXFileStatResponse *) this);
  > > +    }
  > > +    else
  > > +    {
  > > +        m_state = RS_GetFileTypePending;
  > > +        return m_pFileObject->Read(sizeof(UINT32) * 2);
  > > +    }
  > > +    return status;
  > >
  > > from
  > >
  > > +    HX_RELEASE(m_pFileStatObj);
  > > +    if(m_pFileObject)
  > > +    {
  > > +        HX_RESULT retVal = m_pFileObject->QueryInterface(IID_IHXFileStat, (void **) &m_pFileStatObj);
  > > +        if(SUCCEEDED(retVal) && m_pFileStatObj)
  > > +        {
  > > +            m_pFileStatObj->Stat((IHXFileStatResponse *) this);
  > > +        }
  > > +    }
  > > +    return status;
  > >
  > > Please find the updated diff.
  > >
  > > Thanks & Regards
  > > Sushant Garg
  > > ----- Original Message -----
  > > From: Eric Hyche
  > > To: Sushant Garg
  > > Cc: Datatype-Dev
  > > Sent: Thursday, January 07, 2010 8:40 PM
  > > Subject: Re: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-recorder.
  > >
  > > But if I'm reading the diff correctly, if the QI for IHXFileStat fails, then we never call the RIFF reader user back with CRiffResponse::InitDone(), correct? If so, then we've hung the app.
  > >
  > > Eric
  > >
  > > On Jan 7, 2010, at 3:55 AM, Sushant Garg wrote:
  > >
  > > > Before calling Stat() we have a condition to check whether QI is succeeded or not & if in case it does not then we will not send a call to Stat() & return status of InitDone().
  > > >
  > > > +    HX_RELEASE(m_pFileStatObj);
  > > > +    if(m_pFileObject)
  > > > +    {
  > > > +        HX_RESULT retVal = m_pFileObject->QueryInterface(IID_IHXFileStat, (void **) &m_pFileStatObj);
  > > > +        if(SUCCEEDED(retVal) && m_pFileStatObj)
  > > > +        {
  > > > +            m_pFileStatObj->Stat((IHXFileStatResponse *) this);
  > > > +        }
  > > > +    }
  > > > +    return status;
  > > >
  > > > Now if Stat() fails then we will get error in StatDone() & hence we will not get the size of file. And so we will not change m_ulDataSizeInBytes in wvffplin.cpp
  > > >
  > > > Thanks & Regards
  > > > Sushant Garg
  > > > ----- Original Message -----
  > > > From: Eric Hyche
  > > > To: Sushant Garg
  > > > Cc: Datatype-Dev
  > > > Sent: Wednesday, January 06, 2010 8:25 PM
  > > > Subject: Re: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-recorder.
  > > >
  > > > Looks good for the most part. However, if your QI for IHXFileStat fails, then we will hang, since no InitDone() back to the RIFF reader user will ever be made. So make sure that if either the QI for IHXFileStat fails, or the call to STat() returns failure that we properly make a failure InitDone() back to the RIFF reader user.
  > > >
  > > > Actually, the QI for IHXFileStat should not be required, since file objects are not required to implement this. So if the QI for IHXFileStat fails, then the RIFF reader should continue on normally, just without knowing the file size. If the QI for IHXFileStat() succeeds but the call to STat() returns failure, then we can return failure in InitDone() back to the RIFF reader caller.
  > > >
  > > > Eric
  > > >
  > > > On Jan 6, 2010, at 6:53 AM, Sushant Garg wrote:
  > > >
  > > > > Thanks Eric,
  > > > >
  > > > > Please find the updated diff.
  > > > >
  > > > > Now I am calling Read() from CRIFFReader::StatDone() rather then CRIFFReader::InitDone.
  > > > >
  > > > > Thanks & Regards
  > > > > Sushant Garg
  > > > > ----- Original Message -----
  > > > > From: Eric Hyche
  > > > > To: Sushant Garg
  > > > > Cc: Datatype-Dev
  > > > > Sent: Monday, January 04, 2010 8:13 PM
  > > > > Subject: Re: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-recorder.
  > > > >
  > > > > You are treating IHXFileStat::Stat() like a synchronous call and there is
  > > > > no guarantee that it will be. Once you issue the call to Stat(), then
  > > > > you will need to wait in StatDone() before calling back to InitDone().
  > > > >
  > > > > Eric
  > > > >
  > > > > On Dec 24, 2009, at 7:14 AM, Sushant Garg wrote:
  > > > >
  > > > > > Eric,
  > > > > >
  > > > > > Please find the updated diff.
  > > > > >
  > > > > > Thanks & Regards
  > > > > > Sushant Garg
  > > > > > ----- Original Message -----
  > > > > > From: Eric Hyche
  > > > > > To: Sushant Grag
  > > > > > Cc: Datatype-Dev
  > > > > > Sent: Friday, December 11, 2009 12:04 AM
  > > > > > Subject: Re: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-recorder.
  > > > > >
  > > > > > Sushant,
  > > > > >
  > > > > > After thinking about this some more, I think the Stat() call should be moved inside the RIFF reader, for a couple of reasons:
  > > > > >
  > > > > > - centralize it in one place, so other uses of the RIFF reader don't have to do the same thing.
  > > > > > - the most natural time to do the Stat is immediately after the IHXFileObject is Init'd, which in this case the RIFF reader does.
  > > > > >
  > > > > > So I think the RIFF reader could do the IHXFileStat::Stat() call, and then store the filesize result. Then we could just add an accessor function on the RIFF reader so that users of the RIFF reader can read the size. The file size would only be valid after the CRIFFREader::Open() call had returned with a RIFFOpenDone() callback.
  > > > > >
  > > > > > Eric
  > > > > >
  > > > > > On Dec 10, 2009, at 6:56 AM, Sushant Grag wrote:
  > > > > >
  > > > > > > Thanks Eric,
  > > > > > >
  > > > > > > Please find the updated diff.
  > > > > > >
  > > > > > > Thanks & Regards
  > > > > > > Sushant Garg
  > > > > > > ----- Original Message -----
  > > > > > > From: Eric Hyche
  > > > > > > To: Sushant Grag ; Datatype-Dev
  > > > > > > Sent: Wednesday, December 09, 2009 7:17 PM
  > > > > > > Subject: RE: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-recorder.
  > > > > > >
  > > > > > > +UINT32 CRIFFReader::GetFileDataSize()
  > > > > > > +{
  > > > > > > + CHXString strFilePath = m_pFilename;
  > > > > > > + const char* szFileProtocol = "file://";
  > > > > > > + UINT32 ulFiledataSize =0;
  > > > > > > +
  > > > > > > + if( !strFilePath.Left(strlen(szFileProtocol)).CompareNoCase(szFileProtocol) )
  > > > > > > + {
  > > > > > > +     strFilePath = strFilePath.Mid(strlen(szFileProtocol));
  > > > > > > +     struct stat fileInfo;
  > > > > > > +     if(!stat(strFilePath, &fileInfo))
  > > > > > > +     {
  > > > > > > +         ulFiledataSize = fileInfo.st_size;
  > > > > > > +     }
  > > > > > > + }
  > > > > > > + return ulFiledataSize;
  > > > > > > +}
  > > > > > > +
  > > > > > >
  > > > > > > I did not mean do a C-library stat() on the file. The file object that
  > > > > > > the RIFF readers uses will not always be a local file that you can call stat() on.
  > > > > > > What I meant was QI the file object for IHXFileStat and then call IHXFileStat::Stat().
  > > > > > > You will have to implement IHXFileStatResponse::StatDone().
  > > > > > >
  > > > > > > Eric
  > > > > > >
  > > > > > > >-----Original Message-----
  > > > > > > >From: datatype-dev-bounces@helixcommunity.org [mailto:datatype-dev-bounces@helixcommunity.org] On
  > > > > > > >Behalf Of Sushant Grag
  > > > > > > >Sent: Wednesday, December 09, 2009 7:45 AM
  > > > > > > >To: Datatype-Dev
  > > > > > > >Subject: [datatype-dev] CR: Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file
  > > > > > > >recorded by gnome-sound-recorder.
  > > > > > > >
  > > > > > > >Project: RealPlayer for Netbook
  > > > > > > >
  > > > > > > >Synopsis:
  > > > > > > >
  > > > > > > >Fix for Bug 9840: RealPlayer displays incorrect duration for a wav file recorded by gnome-sound-
  > > > > > > >recorder.
  > > > > > > >
  > > > > > > >
  > > > > > > >
  > > > > > > >Overview:
  > > > > > > >
  > > > > > > >There is an issue with wav files which are recorded from ubuntu sound recorder.
  > > > > > > >
  > > > > > > >The calculated file duration in Realplayer for linux is much & much larger then original file duration
  > > > > > > >
  > > > > > > >eg: file has duration of 6secs & Realplayer shows more than 3hr 22 min.
  > > > > > > >
  > > > > > > >Reason behind is, sound recorder adds garbage value in data chunk which leads to very big value of
  > > > > > > >m_ulChunkBodyLen calculated in riff.cpp around line 380
  > > > > > > >
  > > > > > > >            if ( (UINT32)getlong(buf) == m_ulFindChunkId )
  > > > > > > >
  > > > > > > >            {
  > > > > > > >
  > > > > > > >                // Found the chunk we were asked for
  > > > > > > >
  > > > > > > >                m_state = RS_Ready;
  > > > > > > >
  > > > > > > >                m_ulChunkBodyLen = GetLong(&buf[4]);
  > > > > > > >
  > > > > > > >                m_ulChunkSize = m_ulChunkBodyLen;
  > > > > > > >
  > > > > > > >Which cause a very higher value of duration.
  > > > > > > >
  > > > > > > >
  > > > > > > >
  > > > > > > >Now I have created two different functions in riff.cpp;
  > > > > > > >
  > > > > > > >CRIFFReader::GetFileDataSize() & CRIFFReader::GetCurrentFileOffset() in which I am getting the length
  > > > > > > >of file & the file offset and calling these functions in function CWaveFileFormat::RIFFFindChunkDone()
  > > > > > > >, case WS_FindDataChunkPending to set m_ulDataSizeInBytes if "len" is greater then
  > > > > > > >"ulDataSizeInBytes".
  > > > > > > >
  > > > > > > >
  > > > > > > >
  > > > > > > >Files Modified:
  > > > > > > >/cvsroot/datatype/common/util/riff.cpp
  > > > > > > >
  > > > > > > >/cvsroot/datatype/common/util/pub/riff.h
  > > > > > > >
  > > > > > > >/cvsroot/datatype/wav/fileformat/wvffplin.cpp
  > > > > > > >
  > > > > > > >
  > > > > > > >
  > > > > > > >Files Added:
  > > > > > > >
  > > > > > > >None
  > > > > > > >
  > > > > > > >
  > > > > > > >
  > > > > > > >Platforms and Profiles Affected:
  > > > > > > >Linux
  > > > > > > >
  > > > > > > >Distribution Libraries Affected:
  > > > > > > >None.
  > > > > > > >
  > > > > > > >Platforms and Profiles Build Verified:
  > > > > > > >Bif: realplay_gtk_atlas_restricted_gold_1.2
  > > > > > > >Profile: helix-client-moblin
  > > > > > > >Target: player_all
  > > > > > > >
  > > > > > > >Branch:
  > > > > > > >Atlas347, Atlas310, Atlas3_4_10, 401 Brizo, Head
  > > > > > > >
  > > > > > > >
  > > > > > > >
  > > > > > > >Files Attached:
  > > > > > > >
  > > > > > > >9840_diff.txt
  > > > > > > >
  > > > > > > >
  > > > > > > >
  > > > > > > >Thanks & Regards
  > > > > > > >Sushant Garg
  > > > > > > <9840_diff.txt>
  > > > > >
  > > > > > Eric Hyche (ehyche@real.com)
  > > > > > Principal Engineer
  > > > > > RealNetworks, Inc.
  > > > > >
  > > > > > 
  > > > >
  > > > > Eric Hyche (ehyche@real.com)
  > > > > Principal Engineer
  > > > > RealNetworks, Inc.
  > > > >
  > > > > <9840_diff.txt>
  > > >
  > > > Eric Hyche (ehyche@real.com)
  > > > Principal Engineer
  > > > RealNetworks, Inc.
  > > >
  > >
  > > Eric Hyche (ehyche@real.com)
  > > Principal Engineer
  > > RealNetworks, Inc.
  > >
  > > <9840_diff.txt>
  >
  > Eric Hyche (ehyche@real.com)
  > Principal Engineer
  > RealNetworks, Inc.
  >
  > <9840_diff.txt>

  Eric Hyche (ehyche@real.com)
  Principal Engineer
  RealNetworks, Inc.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100114/54e5e5c6/attachment-0001.html
From pbasic at real.com  Thu Jan 14 15:14:13 2010
From: pbasic at real.com (Petar Basic)
Date: Thu Jan 14 22:38:46 2010
Subject: [datatype-dev] CR/CN: Windows-Unicode command line patches for
	GMPMetaEditor branch
Message-ID: <9b8350411001141514m5fe592a5j1e7fc701fbd64f8@mail.gmail.com>

Modified by: pbasic at real.com
Date: 2010/01/14
Project: GMP MetaEditor (meta3gp.exe)

Synopsis:
Windows-Unicode command line patches for GMPMetaEditor branch

Details:
1.) Adjusted string types and transfers in meta3gp project to make
possible usage of Unicode command line on Windows.

2.) Fixed code-unit counting bugs in the following routines
IsUTF8StringAsciiOnly, IsUTF16StringAsciiOnly, IsUTF32StringAsciiOnly.

Testing:
Verified operation on GMP MetaEditor on Windows XP SP2 and Solaris
5.10 Sparc via standard MetaEditor test scripts.

Files Modified:
common/util/uniconv.cpp
datatype/tools/dtdriver/apps/meta3gp/HXXmlInputParser.cpp
datatype/tools/dtdriver/apps/meta3gp/HXXmlInputParser.h
datatype/tools/dtdriver/apps/meta3gp/main.cpp

Platforms and Profiles Affected:
All

Image Size and Heap Use impact:
None

Platforms and Profiles Build Verified:
system id: win32-i386-vc7, sunos-5.10-sparc-studio11
profile: helix-client-all-defines

Platforms and Profiles Functionality Verified:
x86 Windows XP SP2
Sparc SunOS 5.10

Branch:
GMPMetaEditor

Copyright assignment:
I am a RealNetworks employee or contractor.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: common_util.diff
Type: application/octet-stream
Size: 5464 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100115/59bfddc8/common_util-0001.obj
-------------- next part --------------
A non-text attachment was scrubbed...
Name: datatype_tools_dtdriver_apps_meta3gp.diff
Type: application/octet-stream
Size: 56908 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100115/59bfddc8/datatype_tools_dtdriver_apps_meta3gp-0001.obj
From jgordon at real.com  Thu Jan 14 19:14:55 2010
From: jgordon at real.com (Jamie Gordon)
Date: Fri Jan 15 02:38:44 2010
Subject: [datatype-dev] CR/Checkin: PR 256454 spin out while attempting to
	streaming RM content
Message-ID: <4B4FDDAF.70701@real.com>

Synopsis
========
Fixes PR 256454

Branches: HEAD (SERVER_CURRENT)
Suggested Reviewer: anyone


Description
===========
A checkin last night changed the CRIFFReader to use Stat and pass itself
cast as IHXFileStatResponse. But this change did not actually change
CRIFFReader to *actually* implement the IHXFileStatResponse interface. 
So the cast is invalid and caused the file object's Stat method to call
InitDone when trying to call StatDone, which is especially unfortunate
since InitDone calls Stat, thus super-fun recursion time.

Files Affected
==============
datatype/common/util/riff.cpp
datatype/common/util/pub/riff.h


Testing Performed
=================
Unit Tests:

Integration Tests:
Streamed an RM file. Noted that it streamed rather than blowing the
stack in infinite recursion.

Leak Tests:

Performance Tests:

Platforms Tested: linux-rhel5-i686
Build verified: linux-rhel5-i686


QA Hints
===============
n/a







-------------- next part --------------
Index: datatype/common/util/riff.cpp
===================================================================
RCS file: /cvsroot/datatype/common/util/riff.cpp,v
retrieving revision 1.17
diff -u -w -r1.17 riff.cpp
--- datatype/common/util/riff.cpp	14 Jan 2010 04:31:56 -0000	1.17
+++ datatype/common/util/riff.cpp	15 Jan 2010 03:07:47 -0000
@@ -63,6 +63,7 @@
     {
 	{ GET_IIDHANDLE(IID_IUnknown), this},
 	{ GET_IIDHANDLE(IID_IHXFileResponse), (IHXFileResponse*)this},
+	{ GET_IIDHANDLE(IID_IHXFileStatResponse), (IHXFileStatResponse*)this},
     };
 
     HX_RESULT retVal = ::QIFind(qiList, QILISTSIZE(qiList), riid, ppvObj);
Index: datatype/common/util/pub/riff.h
===================================================================
RCS file: /cvsroot/datatype/common/util/pub/riff.h,v
retrieving revision 1.8
diff -u -w -r1.8 riff.h
--- datatype/common/util/pub/riff.h	14 Jan 2010 04:31:56 -0000	1.8
+++ datatype/common/util/pub/riff.h	15 Jan 2010 03:07:47 -0000
@@ -48,7 +48,8 @@
 class CRIFFResponse;
 typedef _INTERFACE IHXFileObject IHXFileObject;
 
-class CRIFFReader : public IHXFileResponse
+class CRIFFReader : public IHXFileResponse, 
+                    public IHXFileStatResponse
 {
 public:
     CRIFFReader(IUnknown*, CRIFFResponse*, IHXFileObject*);
From ext-shashi.merapala at nokia.com  Fri Jan 15 03:56:26 2010
From: ext-shashi.merapala at nokia.com (ext-shashi.merapala@nokia.com)
Date: Fri Jan 15 11:21:18 2010
Subject: [datatype-dev] RE: [Nokia-private-dev] RESEND CR: ESLM-7YHD9L -
 Helix_wmv
 controller: Conflict between the list from SupportsMimeType and actually
 video type (mp4) for video playback
In-Reply-To: <5701CE13-A77B-45A7-A614-3470F2637C85@real.com>
References: 
	<5701CE13-A77B-45A7-A614-3470F2637C85@real.com>
Message-ID: 

Thanks Eric. Checked into 210CayS, HEAD & 420Brizo.

Thanks & Warm Regards,
Shashi Kiran Merapala


-----Original Message-----
From: ext Eric Hyche [mailto:ehyche@real.com] 
Sent: Tuesday, January 12, 2010 8:47 PM
To: Merapala Shashi (EXT-Sasken/Bangalore)
Cc: client-dev@helixcommunity.org; common-dev@helixcommunity.org; clientapps-dev@helixcommunity.org; datatype-dev@helixcommunity.org; nokia-private-dev@helixcommunity.org
Subject: Re: [Nokia-private-dev] RESEND CR: ESLM-7YHD9L - Helix_wmv controller: Conflict between the list from SupportsMimeType and actually video type (mp4) for video playback

Looks good to me.

On Jan 12, 2010, at 7:27 AM,   wrote:

> Sending the CR again with updated diffs. This time the diffs of hxclient_4_2_0_brizo.bif and helix.bif have also been attached (which I had missed previously).
>  
> "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:  ext-shashi.merapala@nokia.com
>  
> Reviewed by:  ashish.as.gupta@nokia.com
>  
> Date:  01/12/2010
>  
> Project:  SymbianMmf_wm
>  
> Error Id:  ESLM-7YHD9L
>  
> Synopsis:  Helix_wmv controller: Conflict between the list from SupportsMimeType and actually video type (mp4) for video playback
>  
> Overview:  The WMV Extension Controller needs to be rolled up into the rest of Helix so that the Helix audio/video controllers support the Windows Media content.
>            
> Solution:  Diffs attached
>  
> Files removed:  The folder 'wmvextcontroller' and its contents are removed from \clientapps\symbianMmf\
>  
> Files added:  None
>  
> Files modified:  \client\build\BIF\hxclient_2_1_0_cayennes.bif
>                  \client\build\BIF\hxclient_4_2_0_brizo.bif
>                  \common\build\BIF\helix.bif
>                  \clientapps\symbianMmf\videocontroller\installMMF.pcf
>                  \clientapps\symbianMmf\videocontroller\MmfSis
>                  \clientapps\symbianMmf\audiocontroller\installMMF.pcf
>                  \clientapps\symbianMmf\audiocontroller\controllersis   
>                  \clientapps\symbianMmf\videocontroller\101F8513.rss
>                  \clientapps\symbianMmf\audiocontroller\10207B64.rss
>                  \datatype\tools\metadataeng\engine\platform\symbian\hxmetadata_dlls.txt
>                            
> Image size and heap use impact:  Approx. 289 kb of space saved on image creation
>  
> Module release testing (STIF):  Passed
>  
> Test case(s) added:  No
>  
> Memory leak check performed:  Yes. No new leaks introduced
>  
> Platforms and profiles build verified:  helix-client-s60-52-mmf-mdf-dsp
>  
> Platforms and profiles functionality verified:  armv5, winscw
>  
> Branch:  210CayS, HEAD, 420Brizo
>  
>  
>  
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From pbasic at real.com  Fri Jan 15 04:37:27 2010
From: pbasic at real.com (Petar Basic)
Date: Fri Jan 15 12:01:41 2010
Subject: [datatype-dev] CR/CN: Updated UITS data ID3 Owner Identifier to the
	correct URL [GMPMetaEditor branch]
Message-ID: <9b8350411001150437y4f417a78g8f55d7bb1306e489@mail.gmail.com>

Modified by: pbasic at real.com
Date: 2010/01/15
Project: GMPMetaEditor (meta3gp.exe)

Synopsis:
Updated UITS data ID3 Owner Identifier to the correct URL

Details:
When stored inside the ID3 tag, UITS data must be placed into a PRIV
frame.  That PRIV frame should be marked with correct Owner Identifier
to be able to distinguish it from other various PRIV frames.  The
correct Owner Identifier to use for UITS is
"mailto:uits-info@umusic.com".

Files Modified:
datatype/include/metainfokeys.h

Platforms and Profiles Affected:
All

Image Size and Heap Use impact:
None

Platforms and Profiles Build Verified:
system id: win32-i386-vc7, sunos-5.10-sparc-studio11
profile: helix-client-all-defines

Platforms and Profiles Functionality Verified:
x86 Windows XP SP2
Sparc SunOS 5.10

Branch:
GMPMetaEditor

Copyright assignment:
I am a RealNetworks employee or contractor.

From pbasic at real.com  Fri Jan 15 04:38:44 2010
From: pbasic at real.com (Petar Basic)
Date: Fri Jan 15 12:02:54 2010
Subject: [datatype-dev] Re: CR/CN: Updated UITS data ID3 Owner Identifier to
	the correct URL [GMPMetaEditor branch]
In-Reply-To: <9b8350411001150437y4f417a78g8f55d7bb1306e489@mail.gmail.com>
References: <9b8350411001150437y4f417a78g8f55d7bb1306e489@mail.gmail.com>
Message-ID: <9b8350411001150438u368036cdo6308c26aff36e035@mail.gmail.com>

Forgot the diff file.  Attached here.


On Fri, Jan 15, 2010 at 1:37 PM, Petar Basic  wrote:
> Modified by: pbasic at real.com
> Date: 2010/01/15
> Project: GMPMetaEditor (meta3gp.exe)
>
> Synopsis:
> Updated UITS data ID3 Owner Identifier to the correct URL
>
> Details:
> When stored inside the ID3 tag, UITS data must be placed into a PRIV
> frame. ?That PRIV frame should be marked with correct Owner Identifier
> to be able to distinguish it from other various PRIV frames. ?The
> correct Owner Identifier to use for UITS is
> "mailto:uits-info@umusic.com".
>
> Files Modified:
> datatype/include/metainfokeys.h
>
> Platforms and Profiles Affected:
> All
>
> Image Size and Heap Use impact:
> None
>
> Platforms and Profiles Build Verified:
> system id: win32-i386-vc7, sunos-5.10-sparc-studio11
> profile: helix-client-all-defines
>
> Platforms and Profiles Functionality Verified:
> x86 Windows XP SP2
> Sparc SunOS 5.10
>
> Branch:
> GMPMetaEditor
>
> Copyright assignment:
> I am a RealNetworks employee or contractor.
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: datatype_include.diff
Type: application/octet-stream
Size: 2509 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100115/d171de7a/datatype_include.obj
From pbasic at real.com  Fri Jan 15 08:43:11 2010
From: pbasic at real.com (Petar Basic)
Date: Fri Jan 15 16:07:30 2010
Subject: [datatype-dev] CR/CN: Metadata atom order modification: udta-box
	comes before ID3-tag related meta-box [GMPMetaEditor branch]
Message-ID: <9b8350411001150843m4e2a2963t804fea0d0d11815f@mail.gmail.com>

Modified by: pbasic at real.com
Date: 2010/01/15
Project: GMPMetaEditor (meta3gp.exe)

Synopsis:
Metadata atom order modification: udta-box comes before ID3-tag
related meta-box [GMPMetaEditor branch]

Details:
Recognition of file type and metadata display work incorrectly with
particular metadata atom order on some HTC handsets.

'meta' atom which contains ID3 tag comes before 'udta' atom which
contains 3GPP assets in files produced by meta3gp, and the opposite is
true for files produced by CodingTech.  HTC code obviously gets
confused while parsing 'meta' atom or ID3 tag within it.  With
CodingTech files, HTC first reads textual metadata from 'udta' atom
then proceeds parsing ID3 and fails.  With meta3gp files, HTC finds
ID3 first and fails before reading textual metadata in 'udta' atom.
This is why the files produced by CodingTech work better to some
extent if CoverArt is injected (i.e. ID3 tag stored in the file).

To improve compatibility with HTC handsets, MP4 filewriter has been
changed to produce metadata atom order in which 'udta' atom always
comes before ID3-tag related 'meta' atom.  This does not influence the
position of other atoms in the file.

Files Modified:
datatype/mp4/filewriter/mp4sm.cpp
datatype/mp4/filewriter/mp4sm.h

Platforms and Profiles Affected:
All

Image Size and Heap Use impact:
None

Platforms and Profiles Build Verified:
system id: win32-i386-vc7, sunos-5.10-sparc-studio11
profile: helix-client-all-defines

Platforms and Profiles Functionality Verified:
x86 Windows XP SP2
Sparc SunOS 5.10

Branch:
GMPMetaEditor

Copyright assignment:
I am a RealNetworks employee or contractor.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: datatype_mp4_filewriter.diff
Type: application/octet-stream
Size: 10467 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100115/a199c5d3/datatype_mp4_filewriter-0001.obj
From pbasic at real.com  Sat Jan 16 14:36:20 2010
From: pbasic at real.com (Petar Basic)
Date: Sat Jan 16 22:00:24 2010
Subject: [datatype-dev] CR/CN: Implemented redirection of output into log
	file [GMPMetaEditor branch]
Message-ID: <9b8350411001161436w58490327rb923d790966fa59f@mail.gmail.com>

Modified by: pbasic at real.com
Date: 2010/01/16
Project: GMPMetaEditor (meta3gp.exe)

Synopsis:
Implemented redirection of output into log file [GMPMetaEditor branch]

Details:
Implemented -log option which redirects all output (stdout, stderr)
into specified log file.

Files Modified:
datatype/tools/dtdriver/apps/meta3gp/main.cpp

Platforms and Profiles Affected:
All

Image Size and Heap Use impact:
None

Platforms and Profiles Build Verified:
system id: win32-i386-vc7, sunos-5.10-sparc-studio11
profile: helix-client-all-defines

Platforms and Profiles Functionality Verified:
x86 Windows XP SP2
Sparc SunOS 5.10

Branch:
GMPMetaEditor

Copyright assignment:
I am a RealNetworks employee or contractor.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: datatype_tools_dtdriver_apps_meta3gp.diff
Type: application/octet-stream
Size: 53496 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100116/9239d9dd/datatype_tools_dtdriver_apps_meta3gp-0001.obj
From stanb at real.com  Sat Jan 16 19:18:13 2010
From: stanb at real.com (Stan Bobrovskiy)
Date: Sun Jan 17 02:41:33 2010
Subject: [datatype-dev] CN: tempory fx for DTDR crasing on VP6 FLVs wth Alpha
Message-ID: <7ECCEA249B7CDC49A079EC0075E999AA07D8CE8931@SEAMBX.corp.real.com>

Modified by: stanb@real.com
Date: 01:16:10
Project: RealPlayer SP 1.1

Synopsis: This simply adds processing of VP6 Alpha as for simple VP6 FLVs.


Files Added: none

Files Modified:
datatype/mp4/payload/flvpyld.cpp

Platforms and Profiles Build Verified:
Platform: win32-i386-vc7

Profile: helix-client-all-defines

target(s): playinst

Branch: hxclient_3_1_0_atlas

Index: flvpyld.cpp
===================================================================
RCS file: /cvsroot/datatype/mp4/payload/flvpyld.cpp,v
retrieving revision 1.4.2.2
diff -u -1 -0 -r1.4.2.2 flvpyld.cpp
--- flvpyld.cpp   2 Dec 2009 07:51:17 -0000         1.4.2.2
+++ flvpyld.cpp            17 Jan 2010 03:13:01 -0000
@@ -103,20 +103,21 @@
 #include "hxformt.h"
 #include "hxengin.h"

 #include "sdptools.h"
 #include "mp4desc.h"
 #include "flvpyld.h"
 #include "mp4pyldutil.h"
 #include "avcconfig.h"

 # define HX_FLV_VIDEO_TYPE_VP6 4
+# define HX_FLV_VIDEO_TYPE_VP6_ALPHA 5

 CHXFLVPayloadFormat::CHXFLVPayloadFormat(CHXBufferMemoryAllocator* pAllocator)
     : m_lRefCount          (0)
     , m_pClassFactory   (NULL)
     , m_pAllocator         (pAllocator)
     , m_pStreamHeader  (NULL)
     , m_pBitstreamHeader          (NULL)
     , m_ulBitstreamHeaderSize   (0)
     , m_ulSamplesPerSecond(1000)
     , m_ulFrameCount    (0)
@@ -352,21 +353,21 @@
                m_pCodecId = HX_SORENSEN_SPARK_CODEC_ID;
                m_bIsSpark = TRUE;
                pHeader->GetPropertyBuffer("OpaqueData", pOpaqueData);
                m_ulBitstreamHeaderSize = (ULONG32)pOpaqueData->GetSize();
                m_pBitstreamHeader =  new UINT8[m_ulBitstreamHeaderSize+1];
                memcpy(m_pBitstreamHeader,
                     pOpaqueData->GetBuffer(),
                     m_ulBitstreamHeaderSize);
                HX_RELEASE(pOpaqueData);
                }
-               else if(CodecId == HX_FLV_VIDEO_TYPE_VP6)
+              else if(CodecId == HX_FLV_VIDEO_TYPE_VP6 || CodecId == HX_FLV_VIDEO_TYPE_VP6_ALPHA)
                {
                m_pCodecId = HX_FLV_VP67_CODEC_ID;
                m_bIsVP6 = TRUE;
                }
             retVal = HXR_OK;
         }
     }

     if (SUCCEEDED(retVal))
     {
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100116/27ae74ea/attachment.html
From pbasic at real.com  Sun Jan 17 09:44:02 2010
From: pbasic at real.com (Petar Basic)
Date: Sun Jan 17 17:07:54 2010
Subject: [datatype-dev] CR/CN: Introduced differentiated program return
	codes for simpler errors [GMPMetaEditor branch]
Message-ID: <9b8350411001170944v39ea04b5h56dca273839da202@mail.gmail.com>

Modified by: pbasic at real.com
Date: 2010/01/17
Project: GMPMetaEditor (meta3gp.exe)

Synopsis:
Introduced differentiated program return codes for simpler errors
[GMPMetaEditor branch]

Details:
Added program return codes for each error condition that the main
executable can easily detect:
RC_SUCCESS
RC_ERROR_GENERIC
RC_ERROR_BAD_COMMAND_LINE
RC_ERROR_CANNOT_OPEN_LOG_FILE
RC_ERROR_MISSING_ENV_VAR
RC_ERROR_CANNOT_LOAD_DLL
RC_ERROR_CANNOT_INIT_PROGRAM_OBJECT
RC_ERROR_CANNOT_OPEN_INPUT_XML_FILE
RC_ERROR_BAD_INPUT_XML_FILE
RC_ERROR_INPUT_MEDIA_FILE_NOT_SPECIFIED
RC_ERROR_CANNOT_OPEN_INPUT_MEDIA_FILE
RC_ERROR_OUTPUT_MEDIA_FILE_EXISTS
RC_ERROR_SAME_INPUT_OUTPUT_MEDIA_FILE
RC_ERROR_CANNOT_OPEN_INPUT_PICTURE_FILE
RC_ERROR_UNSUPPORTED_INPUT_PICTURE_TYPE
RC_ERROR_CANNOT_OPEN_INPUT_UITS_FILE
RC_ERROR_UNSUPPORTED_INPUT_UITS_ENCODING
RC_ERROR_OUTPUT_PICTURE_FILE_EXISTS
RC_ERROR_CANNOT_OUTPUT_PICTURE_FILE
RC_ERROR_OUTPUT_UITS_FILE_EXISTS
RC_ERROR_CANNOT_OUTPUT_UITS_FILE
RC_ERROR_OUTPUT_XML_FILE_EXISTS
RC_ERROR_CANNOT_OUTPUT_XML_FILE
RC_ERROR_PROCESSING_MEDIA_FILE

Deep Helix errors are all reported as RC_ERROR_PROCESSING_MEDIA_FILE.

Files Modified:
datatype/tools/dtdriver/apps/meta3gp/main.cpp

Platforms and Profiles Affected:
All

Image Size and Heap Use impact:
None

Platforms and Profiles Build Verified:
system id: win32-i386-vc7, sunos-5.10-sparc-studio11
profile: helix-client-all-defines

Platforms and Profiles Functionality Verified:
x86 Windows XP SP2
Sparc SunOS 5.10

Branch:
GMPMetaEditor

Copyright assignment:
I am a RealNetworks employee or contractor.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: datatype_tools_dtdriver_apps_meta3gp.diff
Type: application/octet-stream
Size: 48881 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100117/15f87635/datatype_tools_dtdriver_apps_meta3gp-0001.obj
From pbasic at real.com  Mon Jan 18 04:06:49 2010
From: pbasic at real.com (Petar Basic)
Date: Mon Jan 18 11:29:51 2010
Subject: [datatype-dev] CR/CN: Added MP4 fileformat configuration defines to
	meta3gp project [GMPMetaEditor branch]
Message-ID: <9b8350411001180406h5c80983dxfd8431f90bfc572a@mail.gmail.com>

Modified by: pbasic at real.com
Date: 2010/01/17
Project: GMPMetaEditor (meta3gp.exe)

Synopsis:
Added MP4 fileformat configuration defines to meta3gp project
[GMPMetaEditor branch]

Details:
For meta3gp project, MP4 fileformat needs to be built with both
HELIX_FEATURE_3GPP_METAINFO and HELIX_FEATURE_ITUNES_METAINFO.
Both features have been defined in the BIF for meta3gp project to
avoid dependency on build profiles.

Files Modified:
GMPMetaEditor_internal.bif

Platforms and Profiles Affected:
All

Image Size and Heap Use impact:
None

Platforms and Profiles Build Verified:
system id: win32-i386-vc7, sunos-5.10-sparc-studio11
profile: helix-client-all-defines

Platforms and Profiles Functionality Verified:
x86 Windows XP SP2
Sparc SunOS 5.10

Branch:
GMPMetaEditor

Copyright assignment:
I am a RealNetworks employee or contractor.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: GMPMetaEditor_internal.bif.diff
Type: application/octet-stream
Size: 2216 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100118/3eaf1bc9/GMPMetaEditor_internal.bif.obj
From ext-shashi.merapala at nokia.com  Mon Jan 18 06:00:41 2010
From: ext-shashi.merapala at nokia.com (ext-shashi.merapala@nokia.com)
Date: Mon Jan 18 13:24:57 2010
Subject: [datatype-dev] RESEND CR: ESLM-7YHD9L - Helix_wmv controller:
 Conflict between the
 list from SupportsMimeType and actually video type (mp4) for video playback
References: 
	<5701CE13-A77B-45A7-A614-3470F2637C85@real.com> 
Message-ID: 

Skipped content of type multipart/alternative-------------- next part --------------
--- J:\x_brizo\clientapps\symbianMmf\audiocontroller\ng_installMMF.pcf	2009-03-04 06:47:07.000000000 +-0530
+++ J:\x_brizo\clientapps\symbianMmf\audiocontroller\Copy of ng_installMMF.pcf	2010-01-18 11:51:29.000000000 +-0530
@@ -118,12 +118,15 @@
 
 #
 # lib_files
 #
 lib_names = []
 
+# Plugin Dlls [built separately] that need to be included to the *dll_names*.txt files
+additional_lib_names = []
+
 # some dlls like vidplin aggregate functionality offered individually with
 # other dlls; this list tracks those dlls that can be removed from the list
 # of dlls to install because another dll duplicates or replaces the functionality
 lib_names_remove = []
 
 # maps lib short name to where it is output when built/distributed
@@ -168,13 +171,16 @@
      'dmp4'            : 'datatype_dist/rm/video/codec/g2mp4combo/dmp4.dll',
      'log'          : 'common/log/logsystem/[target]/log.dll',
      'logobserverfile' : 'common/log/logobserver/[target]/logobserverfile.dll',
      'arma'         : 'datatype/mp4/audio/mdf/[target]/arma.dll',
      'hxmetadataeng': 'datatype/xps/fileformat/[target]/hxmetadataeng.dll',
      'hxmedpltfm'   : 'client/medpltfm/[target]/hxmedpltfm.dll',
-     'hxmedplyeng'   : 'client/core/[target]/hxmedplyeng.dll'
+     'hxmedplyeng'   : 'client/core/[target]/hxmedplyeng.dll',
+     'asfff'           : 'datatype/wm/fileformat/[target]/asfff.dll',
+     'wma9'            : 'datatype/mdf/audio/arm/wma/[target]/wma9.dll',
+     'wmarender'       : 'datatype/wm/audio/renderer/[target]/wmarender.dll'
 }
 
 #
 # some helpers to reduce clutter...
 #
 def Add(*files):
@@ -198,15 +204,28 @@
     ''' return new list with duplicates removed '''
     newList = []
     for item in list:
         if (item not in newList):
             newList.append(item)
     return newList
+    
+def AddAdditionalDLLs(*files):
+    global additional_lib_names      
+    for f in files:
+        additional_lib_names.append(f)    
 
 Add('hxmedpltfm')
 Add('hxmedplyeng')
+
+# always add asf file format
+Add('asfff')
+Add('wma9')
+Add('wmarender')
+
+# add hxwmdrmplugin to *dll_names*.txt 
+AddAdditionalDLLs('hxwmdrmplugin')
 
 if project.IsDefined("HELIX_FEATURE_METADATAENG"):
     Add('hxmetadataeng')
 
 if project.IsDefined("HELIX_FEATURE_PLAYBACK_LOCAL"):
     Add('smplfsys')
@@ -252,12 +271,19 @@
 lib_files_copy = []
 for f in lib_names:
     path = os.path.join(playerDllDir, f)
     path += ".dll"
     path = os.path.normpath(path)
     lib_files_copy.append(path)
+    
+additional_lib_names_copy = []
+for f in additional_lib_names:
+    path = os.path.join(playerDllDir, f)
+    path += ".dll"
+    path = os.path.normpath(path)
+    additional_lib_names_copy.append(path)    
 
 #
 # payld_dll_files, payld_rsc_files
 #
 payld_dll_names = []
 
-------------- next part --------------
--- J:\x_brizo\clientapps\symbianMmf\videocontroller\ng_installMMF.pcf	2009-03-04 06:47:49.000000000 +-0530
+++ J:\x_brizo\clientapps\symbianMmf\videocontroller\Copy of ng_installMMF.pcf	2010-01-18 11:58:10.000000000 +-0530
@@ -128,12 +128,15 @@
 
 #
 # lib_files
 #
 lib_names = []
 
+# Plugin Dlls [built separately] that need to be included to the *dll_names*.txt files
+additional_lib_names = []
+
 # some dlls like vidplin aggregate functionality offered individually with
 # other dlls; this list tracks those dlls that can be removed from the list
 # of dlls to install because another dll duplicates or replaces the functionality
 lib_names_remove = []
 
 # maps lib short name to where it is output when built/distributed
@@ -185,13 +188,16 @@
      'XPSFileFormat'   : 'datatype/xps/fileformat/[target]/XPSFileFormat.dll',
      'hxmetadataeng'   : 'datatype/xps/fileformat/[target]/hxmetadataeng.dll',
      'hxmedpltfm'      : 'client/medpltfm/[target]/hxmedpltfm.dll',
      'hxmedplyeng'     : 'client/core/[target]/hxmedplyeng.dll',
      'hxnetwksvc'      : 'client/netwksvc/[target]/hxnetwksvc.dll',
      'rtspclnt'        : 'protocol/rtsp/[target]/rtspclnt.dll',
-     'avifformat'      : 'datatype/avi/fileformat/[target]/avifformat.dll'
+     'avifformat'      : 'datatype/avi/fileformat/[target]/avifformat.dll',
+     'asfff'           : 'datatype/wm/fileformat/[target]/asfff.dll',
+     'wma9'            : 'datatype/mdf/audio/arm/wma/[target]/wma9.dll',
+     'wmarender'       : 'datatype/wm/audio/renderer/[target]/wmarender.dll'
 
 }
 
 #
 # some helpers to reduce clutter...
 #
@@ -216,17 +222,30 @@
     ''' return new list with duplicates removed '''
     newList = []
     for item in list:
         if (item not in newList):
             newList.append(item)
     return newList
+    
+def AddAdditionalDLLs(*files):
+    global additional_lib_names      
+    for f in files:
+        additional_lib_names.append(f)    
 
 Add('hxmedpltfm')
 Add('hxmedplyeng')
 Add('rtspclnt')
 Add('hxnetwksvc')
+
+# always add asf file format
+Add('asfff')
+Add('wma9')
+Add('wmarender')
+
+# add hxwmdrmplugin to *dll_names*.txt 
+AddAdditionalDLLs('hxwmdrmplugin')
 
 if project.IsDefined("HELIX_FEATURE_S60_PROGDOWN"):
     Add('progdownfs')
 
 Add('httpfsys') 
 Add('aacff')
@@ -344,38 +363,48 @@
 for f in lib_names:
     path = os.path.join(playerDllDir, f)
     path += ".dll"
     path = os.path.normpath(path)
     lib_files_copy.append(path)
 
+additional_lib_names_copy = []
+for f in additional_lib_names:
+    path = os.path.join(playerDllDir, f)
+    path += ".dll"
+    path = os.path.normpath(path)
+    additional_lib_names_copy.append(path)
+    
 #
 # payld_dll_files, payld_rsc_files
 #
 payld_dll_names = []
 
 # maps short name to where it is output when built/distributed
 payld_dll_name_map = { 
     'mdfh263payloadformat.dll'    : 'datatype/mdf/video/format/h263/[target]/mdfh263payloadformat.dll', 
     'mdfmp4payloadformat.dll'     : 'datatype/mdf/video/format/mp4/[target]/mdfmp4payloadformat.dll',
     'mdfrvxpayloadformat.dll'     : 'datatype/mdf/video/format/rm/[target]/mdfrvxpayloadformat.dll',
     'mdfh264payloadformat.dll'    : 'datatype/mdf/video/format/h264/[target]/mdfh264payloadformat.dll',
-    'mdfflvpayloadformat.dll'     : 'datatype/mdf/video/format/flv/[target]/mdfflvpayloadformat.dll' }
+    'mdfflvpayloadformat.dll'     : 'datatype/mdf/video/format/flv/[target]/mdfflvpayloadformat.dll',
+    'mdfwmvpayloadformat.dll'     : 'datatype/mdf/video/format/wmv/[target]/mdfwmvpayloadformat.dll' }
 
 payld_rsc_names = []
 
 payld_rsc_name_map = { 
     'mdfh263payloadformat.rsc'    : 'datatype/mdf/video/format/h263/[target]/mdfh263payloadformat.rsc', 
     'mdfmp4payloadformat.rsc'     : 'datatype/mdf/video/format/mp4/[target]/mdfmp4payloadformat.rsc', 
     'mdfrvxpayloadformat.rsc'     : 'datatype/mdf/video/format/rm/[target]/mdfrvxpayloadformat.rsc', 
     'mdfh264payloadformat.rsc'    : 'datatype/mdf/video/format/h264/[target]/mdfh264payloadformat.rsc',
     'mdfflvpayloadformat.rsc'     : 'datatype/mdf/video/format/flv/[target]/mdfflvpayloadformat.rsc',
+    'mdfwmvpayloadformat.rsc'     : 'datatype/mdf/video/format/wmv/[target]/mdfwmvpayloadformat.rsc',
     'h263.rsc'                : 'datatype/mdf/video/format/h263/[target]/h263.rsc', 
     'mp4.rsc'                : 'datatype/mdf/video/format/mp4/[target]/mp4.rsc',
     'rm.rsc'                : 'datatype/mdf/video/format/rm/[target]/rm.rsc',
     'h264.rsc'                : 'datatype/mdf/video/format/h264/[target]/h264.rsc',
-    'flv.rsc'                : 'datatype/mdf/video/format/flv/[target]/flv.rsc' }
+    'flv.rsc'                : 'datatype/mdf/video/format/flv/[target]/flv.rsc',
+    'wmv.rsc'                : 'datatype/mdf/video/format/wmv/[target]/wmv.rsc' }
 
 #
 # some helpers to reduce clutter...
 #
 def AddPayldDll(*files):
     ''' add files to list of files to install '''
@@ -390,12 +419,13 @@
 
 AddPayldDllMdf( 'mdfh263payloadformat.dll' )
 AddPayldDllMdf( 'mdfmp4payloadformat.dll'  )
 AddPayldDllMdf( 'mdfrvxpayloadformat.dll'  )
 AddPayldDllMdf( 'mdfh264payloadformat.dll' )
 AddPayldDllMdf( 'mdfflvpayloadformat.dll'  )
+AddPayldDllMdf( 'mdfwmvpayloadformat.dll'  )
 
 def AddPayldRsc(*files):
     ''' add files to list of files to install '''
     global payld_rsc_names
     for f in files:
         payld_rsc_names.append(f)
@@ -407,18 +437,20 @@
 if project.IsDefined('HELIX_CONFIG_SYMBIAN_PLATFORM_SECURITY'):
     AddPayldRscMdf( 'mdfh263payloadformat.rsc' )
     AddPayldRscMdf( 'mdfmp4payloadformat.rsc'  )
     AddPayldRscMdf( 'mdfrvxpayloadformat.rsc'  )
     AddPayldRscMdf( 'mdfh264payloadformat.rsc' )
     AddPayldRscMdf( 'mdfflvpayloadformat.rsc'  )
+    AddPayldRscMdf( 'mdfwmvpayloadformat.rsc'  )
 else:
     AddPayldRscMdf( 'h263.rsc' )
     AddPayldRscMdf( 'mp4.rsc' )
     AddPayldRscMdf( 'rm.rsc' )
     AddPayldRscMdf( 'h264.rsc' )
     AddPayldRscMdf( 'flv.rsc' )
+    AddPayldRscMdf( 'wmv.rsc' )
 
 # add make copy output dir prefix and .dll suffix, e.g. '../../debug/foo.dll'
 payld_dll_files_copy = []
 for f in payld_dll_names:
     path = os.path.join(playerDllDir, f)
     path = os.path.normpath(path)
From Yury.Ramanovich at nokia.com  Mon Jan 18 10:55:40 2010
From: Yury.Ramanovich at nokia.com (Yury.Ramanovich@nokia.com)
Date: Mon Jan 18 18:19:13 2010
Subject: [datatype-dev] CR needed: (Symbian) video preroll reduction for
 local video playback 
Message-ID: 

Skipped content of type multipart/alternative-------------- next part --------------
Index: format/common/mdfpayloadformat.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/common/mdfpayloadformat.cpp,v
retrieving revision 1.2.2.16
diff -u -w -r1.2.2.16 mdfpayloadformat.cpp
--- format/common/mdfpayloadformat.cpp	26 Jan 2009 20:42:38 -0000	1.2.2.16
+++ format/common/mdfpayloadformat.cpp	18 Jan 2010 19:45:15 -0000
@@ -359,7 +359,7 @@
     MDFVIDEOLOG_LEAVEFN( "Reset" );
 }
 
-UINT32 CPayloadFormatPluginDevice::GetPreRollInMs() const
+UINT32 CPayloadFormatPluginDevice::GetPreRollInMs(HXBOOL /* bNetworkAccess */) const
 {
     MDFVIDEOLOG_ENTERFN( "GetPreRollInMs" );
     MDFVIDEOLOG_LEAVEFN( "GetPreRollInMs" );
Index: format/common/pub/mdfpayloadformat.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/common/pub/mdfpayloadformat.h,v
retrieving revision 1.2.2.13
diff -u -w -r1.2.2.13 mdfpayloadformat.h
--- format/common/pub/mdfpayloadformat.h	20 Sep 2008 05:41:11 -0000	1.2.2.13
+++ format/common/pub/mdfpayloadformat.h	18 Jan 2010 19:45:15 -0000
@@ -146,7 +146,7 @@
     virtual CMediaPacket* CreateAssembledPacket( IHXPacket* pPayloadData ) = 0;    
     virtual HX_RESULT     FillBuffer( TVideoInputBuffer& pVideoInputBuffer, const CMediaPacket* pMediaPacket ) const;
     virtual void          Reset( UINT32 ulBeginTime );
-    virtual UINT32        GetPreRollInMs() const;
+    virtual UINT32        GetPreRollInMs(HXBOOL bNetworkAccess = FALSE) const;
     virtual const TDesC8& GetVideoProfile() const = 0;
     virtual UINT32        GetVideoResolution() const;
 
Index: format/flv/mdfflvpayloadformat.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/flv/mdfflvpayloadformat.cpp,v
retrieving revision 1.1
diff -u -w -r1.1 mdfflvpayloadformat.cpp
--- format/flv/mdfflvpayloadformat.cpp	20 Feb 2008 17:52:19 -0000	1.1
+++ format/flv/mdfflvpayloadformat.cpp	18 Jan 2010 19:45:15 -0000
@@ -52,6 +52,7 @@
 #include "pckunpck.h"
 
 #define DEFAULT_FLV_PREROLL_IN_MS                2000
+#define DEFAULT_FLV_PREROLL_IN_MS_LOCAL          1000
 #define KUidFLVPayloadFormatPluginDeviceDefine  0x1028334e
 #define SYNCHRONIZE_DECODING_STRING_FLV         "SynchronizeDecoding_FLV"
 
@@ -167,11 +168,11 @@
     MDFVIDEOLOG_LEAVEFN( "Reset" );
 }
 
-UINT32 CFLVPayloadFormatPluginDevice::GetPreRollInMs() const
+UINT32 CFLVPayloadFormatPluginDevice::GetPreRollInMs(HXBOOL bNetworkAccess) const
 {
     MDFVIDEOLOG_ENTERFN( "GetPreRollInMs" );
     MDFVIDEOLOG_LEAVEFN( "GetPreRollInMs" );
-    return DEFAULT_FLV_PREROLL_IN_MS;
+    return (bNetworkAccess ? DEFAULT_FLV_PREROLL_IN_MS : DEFAULT_FLV_PREROLL_IN_MS_LOCAL);
 }
 
 const char* CFLVPayloadFormatPluginDevice::GetConfigString() const
Index: format/flv/pub/mdfflvpayloadformat.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/flv/pub/mdfflvpayloadformat.h,v
retrieving revision 1.1
diff -u -w -r1.1 mdfflvpayloadformat.h
--- format/flv/pub/mdfflvpayloadformat.h	20 Feb 2008 17:52:53 -0000	1.1
+++ format/flv/pub/mdfflvpayloadformat.h	18 Jan 2010 19:45:15 -0000
@@ -71,7 +71,7 @@
     virtual CMediaPacket* CreateAssembledPacket( IHXPacket* pPayloadData );
     virtual HX_RESULT     FillBuffer( TVideoInputBuffer& pVideoInputBuffer, const CMediaPacket* pMediaPacket ) const;
     virtual void          Reset( UINT32 ulBeginTime );
-    virtual UINT32        GetPreRollInMs() const;
+    virtual UINT32        GetPreRollInMs(HXBOOL bNetworkAccess = FALSE) const;
     virtual const char*   GetConfigString() const;
     virtual const TDesC8& GetVideoProfile() const;
 
Index: format/h263/mdfh263payloadformat.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/h263/mdfh263payloadformat.cpp,v
retrieving revision 1.2.2.13
diff -u -w -r1.2.2.13 mdfh263payloadformat.cpp
--- format/h263/mdfh263payloadformat.cpp	22 Apr 2009 14:31:05 -0000	1.2.2.13
+++ format/h263/mdfh263payloadformat.cpp	18 Jan 2010 19:45:15 -0000
@@ -51,6 +51,7 @@
 #include "sdpchunk.h"               //SDPParseChunk
 
 #define DEFAULT_H263_PREROLL_IN_MS                3500
+#define DEFAULT_H263_PREROLL_IN_MS_LOCAL          1000
 #define KUidH263PayloadFormatPluginDeviceDefine  0x10207475
 #define MP4V_RN_3GPP_H263_PAYLOAD_MIME_TYPE      "video/X-RN-3GPP-H263"
 #define SYNCHRONIZE_DECODING_STRING_H263         "SynchronizeDecoding_H263"
@@ -269,11 +270,11 @@
     return pFramePacket;
 }
 
-UINT32 CH263PayloadFormatPluginDevice::GetPreRollInMs() const
+UINT32 CH263PayloadFormatPluginDevice::GetPreRollInMs(HXBOOL bNetworkAccess) const
 {
     MDFVIDEOLOG_ENTERFN( "GetPreRollInMs" );
     MDFVIDEOLOG_LEAVEFN( "GetPreRollInMs" );
-    return DEFAULT_H263_PREROLL_IN_MS;
+    return (bNetworkAccess ? DEFAULT_H263_PREROLL_IN_MS : DEFAULT_H263_PREROLL_IN_MS_LOCAL);
 }
 
 const TDesC8& CH263PayloadFormatPluginDevice::GetVideoProfile() const
Index: format/h263/pub/mdfh263payloadformat.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/h263/pub/mdfh263payloadformat.h,v
retrieving revision 1.2.2.9
diff -u -w -r1.2.2.9 mdfh263payloadformat.h
--- format/h263/pub/mdfh263payloadformat.h	22 Apr 2009 14:34:03 -0000	1.2.2.9
+++ format/h263/pub/mdfh263payloadformat.h	18 Jan 2010 19:45:15 -0000
@@ -65,7 +65,7 @@
 public:  //derived
     virtual HX_RESULT     CreatePayloadFormat( IHXPayloadFormatObject*& aPayloadFormatObject  );
     CMediaPacket*         CreateAssembledPacket( IHXPacket* pPayloadData );
-    virtual UINT32        GetPreRollInMs() const;
+    virtual UINT32        GetPreRollInMs(HXBOOL bNetworkAccess = FALSE) const;
     virtual const TDesC8& GetVideoProfile() const;
 
 private:
Index: format/h264/mdfh264payloadformat.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/h264/mdfh264payloadformat.cpp,v
retrieving revision 1.1.2.21
diff -u -w -r1.1.2.21 mdfh264payloadformat.cpp
--- format/h264/mdfh264payloadformat.cpp	6 Nov 2009 19:57:11 -0000	1.1.2.21
+++ format/h264/mdfh264payloadformat.cpp	18 Jan 2010 19:45:15 -0000
@@ -56,6 +56,8 @@
 #define MP4V_H264_PAYLOAD_MIME_TYPE         "video/H264"
 
 #define DEFAULT_H264_PREROLL_IN_MS               3500
+#define DEFAULT_H264_PREROLL_IN_MS_LOCAL         1000
+
 #define KUidH264PayloadFormatPluginDeviceDefine  0x1020747B
 #define SYNCHRONIZE_DECODING_STRING_H264         "SynchronizeDecoding_H264"
 
@@ -371,11 +373,11 @@
     MDFVIDEOLOG_LEAVEFN( "Reset" );
 }
 
-UINT32 CH264PayloadFormatPluginDevice::GetPreRollInMs() const
+UINT32 CH264PayloadFormatPluginDevice::GetPreRollInMs(HXBOOL bNetworkAccess) const
 {
     MDFVIDEOLOG_ENTERFN( "GetPreRollInMs" );
     MDFVIDEOLOG_LEAVEFN( "GetPreRollInMs" );
-    return DEFAULT_H264_PREROLL_IN_MS;
+    return (bNetworkAccess ? DEFAULT_H264_PREROLL_IN_MS : DEFAULT_H264_PREROLL_IN_MS_LOCAL);
 }
 
 const TDesC8& CH264PayloadFormatPluginDevice::GetVideoProfile() const
Index: format/h264/pub/mdfh264payloadformat.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/h264/pub/mdfh264payloadformat.h,v
retrieving revision 1.1.2.8
diff -u -w -r1.1.2.8 mdfh264payloadformat.h
--- format/h264/pub/mdfh264payloadformat.h	30 Nov 2007 21:12:49 -0000	1.1.2.8
+++ format/h264/pub/mdfh264payloadformat.h	18 Jan 2010 19:45:15 -0000
@@ -69,7 +69,7 @@
     virtual CMediaPacket* CreateAssembledPacket( IHXPacket* pPayloadData );
     virtual HX_RESULT     FillBuffer( TVideoInputBuffer& pVideoInputBuffer, const CMediaPacket* pMediaPacket ) const;
     virtual void          Reset( UINT32 ulBeginTime );
-    virtual UINT32        GetPreRollInMs() const;
+    virtual UINT32        GetPreRollInMs(HXBOOL bNetworkAccess = FALSE) const;
     virtual const TDesC8& GetVideoProfile() const;
 
 private:
Index: format/mp4/mdfmp4payloadformat.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/mp4/mdfmp4payloadformat.cpp,v
retrieving revision 1.2.2.21
diff -u -w -r1.2.2.21 mdfmp4payloadformat.cpp
--- format/mp4/mdfmp4payloadformat.cpp	22 Apr 2009 14:41:52 -0000	1.2.2.21
+++ format/mp4/mdfmp4payloadformat.cpp	18 Jan 2010 19:45:15 -0000
@@ -51,6 +51,7 @@
 #include "sdpchunk.h"               //SDPParseChunk
 
 #define DEFAULT_MP4_PREROLL_IN_MS                3500
+#define DEFAULT_MP4_PREROLL_IN_MS_LOCAL          1000
 #define KUidMP4PayloadFormatPluginDeviceDefine   0x10207477
 #define SYNCHRONIZE_DECODING_STRING_MP4          "SynchronizeDecoding_MP4"
 
@@ -250,11 +251,11 @@
     MDFVIDEOLOG_LEAVEFN( "Reset" );
 }
 
-UINT32 CMP4PayloadFormatPluginDevice::GetPreRollInMs() const
+UINT32 CMP4PayloadFormatPluginDevice::GetPreRollInMs(HXBOOL bNetworkAccess) const
 {
     MDFVIDEOLOG_ENTERFN( "GetPreRollInMs" );
     MDFVIDEOLOG_LEAVEFN( "GetPreRollInMs" );
-    return DEFAULT_MP4_PREROLL_IN_MS;
+    return (bNetworkAccess ? DEFAULT_MP4_PREROLL_IN_MS : DEFAULT_MP4_PREROLL_IN_MS_LOCAL);
 }
 
 const TDesC8& CMP4PayloadFormatPluginDevice::GetVideoProfile() const
Index: format/mp4/pub/mdfmp4payloadformat.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/mp4/pub/mdfmp4payloadformat.h,v
retrieving revision 1.2.2.9
diff -u -w -r1.2.2.9 mdfmp4payloadformat.h
--- format/mp4/pub/mdfmp4payloadformat.h	30 Nov 2007 21:12:50 -0000	1.2.2.9
+++ format/mp4/pub/mdfmp4payloadformat.h	18 Jan 2010 19:45:15 -0000
@@ -68,7 +68,7 @@
     virtual CMediaPacket* CreateAssembledPacket( IHXPacket* pPayloadData );
     virtual HX_RESULT     FillBuffer( TVideoInputBuffer& pVideoInputBuffer, const CMediaPacket* pMediaPacket ) const;
     virtual void          Reset( UINT32 ulBeginTime );
-    virtual UINT32        GetPreRollInMs() const;
+    virtual UINT32        GetPreRollInMs(HXBOOL bNetworkAccess = FALSE) const;
     virtual const TDesC8& GetVideoProfile() const;
 
 private:
Index: format/rm/mdfrvxpayloadformat.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/rm/mdfrvxpayloadformat.cpp,v
retrieving revision 1.1.2.16
diff -u -w -r1.1.2.16 mdfrvxpayloadformat.cpp
--- format/rm/mdfrvxpayloadformat.cpp	20 Sep 2008 05:42:29 -0000	1.1.2.16
+++ format/rm/mdfrvxpayloadformat.cpp	18 Jan 2010 19:45:15 -0000
@@ -52,6 +52,7 @@
 #include 
 
 #define DEFAULT_RVX_PREROLL_IN_MS                3500
+#define DEFAULT_RVX_PREROLL_IN_MS_LOCAL          1000
 #define KUidRVXPayloadFormatPluginDeviceDefine   0x10207479
 #define SYNCHRONIZE_DECODING_STRING_RVX          "SynchronizeDecoding_RVX"
 
@@ -169,11 +170,11 @@
     return pFramePacket;
 }
 
-UINT32 CRVXPayloadFormatPluginDevice::GetPreRollInMs() const
+UINT32 CRVXPayloadFormatPluginDevice::GetPreRollInMs(HXBOOL bNetworkAccess) const
 {
     MDFVIDEOLOG_ENTERFN( "GetPreRollInMs" );
     MDFVIDEOLOG_LEAVEFN( "GetPreRollInMs" );
-    return DEFAULT_RVX_PREROLL_IN_MS;
+    return (bNetworkAccess ? DEFAULT_RVX_PREROLL_IN_MS : DEFAULT_RVX_PREROLL_IN_MS_LOCAL);
 }
 
 const TDesC8& CRVXPayloadFormatPluginDevice::GetVideoProfile() const
Index: format/rm/pub/mdfrvxpayloadformat.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/rm/pub/mdfrvxpayloadformat.h,v
retrieving revision 1.1.2.9
diff -u -w -r1.1.2.9 mdfrvxpayloadformat.h
--- format/rm/pub/mdfrvxpayloadformat.h	20 Sep 2008 05:42:12 -0000	1.1.2.9
+++ format/rm/pub/mdfrvxpayloadformat.h	18 Jan 2010 19:45:15 -0000
@@ -67,7 +67,7 @@
     virtual HX_RESULT     Init( IUnknown *pContext, IHXValues* pHeader );
     virtual HX_RESULT     CreatePayloadFormat( IHXPayloadFormatObject*& aPayloadFormatObject  );
     virtual CMediaPacket* CreateAssembledPacket( IHXPacket* pPayloadData );
-    virtual UINT32        GetPreRollInMs() const; 
+    virtual UINT32        GetPreRollInMs(HXBOOL bStreaming = FALSE) const; 
     virtual HX_RESULT     FillBuffer( TVideoInputBuffer& pVideoInputBuffer, const CMediaPacket* pMediaPacket ) const;
     virtual const TDesC8& GetVideoProfile() const;
 #ifdef HELIX_FEATURE_S60_TRICKPLAY
Index: format/wmv/mdfwmvpayloadformat.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/wmv/mdfwmvpayloadformat.cpp,v
retrieving revision 1.1.2.9
diff -u -w -r1.1.2.9 mdfwmvpayloadformat.cpp
--- format/wmv/mdfwmvpayloadformat.cpp	8 Apr 2008 21:16:13 -0000	1.1.2.9
+++ format/wmv/mdfwmvpayloadformat.cpp	18 Jan 2010 19:45:15 -0000
@@ -68,6 +68,7 @@
 
 
 #define DEFAULT_WMV_PREROLL_IN_MS                2000
+#define DEFAULT_WMV_PREROLL_IN_MS_LOCAL          1000
 #define KUidWMVPayloadFormatPluginDeviceDefine  0x10283354
 
 const TUid KUidWMVPayloadFormatPluginDevice =   {KUidWMVPayloadFormatPluginDeviceDefine};
@@ -375,11 +376,11 @@
     MDFVIDEOLOG_LEAVEFN( "Reset" );
 }
 
-UINT32 CWMVPayloadFormatPluginDevice::GetPreRollInMs() const
+UINT32 CWMVPayloadFormatPluginDevice::GetPreRollInMs(HXBOOL bNetworkAccess) const
 {
     MDFVIDEOLOG_ENTERFN( "GetPreRollInMs" );
     MDFVIDEOLOG_LEAVEFN( "GetPreRollInMs" );
-    return DEFAULT_WMV_PREROLL_IN_MS;
+    return (bNetworkAccess ? DEFAULT_WMV_PREROLL_IN_MS : DEFAULT_WMV_PREROLL_IN_MS_LOCAL);
 }
 
 const char* CWMVPayloadFormatPluginDevice::GetConfigString() const
Index: format/wmv/pub/mdfwmvpayloadformat.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/format/wmv/pub/mdfwmvpayloadformat.h,v
retrieving revision 1.1.2.3
diff -u -w -r1.1.2.3 mdfwmvpayloadformat.h
--- format/wmv/pub/mdfwmvpayloadformat.h	8 Apr 2008 21:15:22 -0000	1.1.2.3
+++ format/wmv/pub/mdfwmvpayloadformat.h	18 Jan 2010 19:45:15 -0000
@@ -86,7 +86,7 @@
     virtual CMediaPacket* CreateAssembledPacket( IHXPacket* pPayloadData );    
     virtual HX_RESULT     FillBuffer( TVideoInputBuffer& pVideoInputBuffer, const CMediaPacket* pMediaPacket ) const;
     virtual void          Reset( UINT32 ulBeginTime );
-    virtual UINT32        GetPreRollInMs() const;
+    virtual UINT32        GetPreRollInMs(HXBOOL bNetworkAccess = FALSE) const;
     virtual const char*   GetConfigString() const;
     virtual const TDesC8& GetVideoProfile() const;
 
Index: renderer/mdfvideoadapter.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/renderer/mdfvideoadapter.cpp,v
retrieving revision 1.3.2.103
diff -u -w -r1.3.2.103 mdfvideoadapter.cpp
--- renderer/mdfvideoadapter.cpp	6 Jan 2010 10:47:42 -0000	1.3.2.103
+++ renderer/mdfvideoadapter.cpp	18 Jan 2010 19:45:16 -0000
@@ -280,7 +280,8 @@
 HX_RESULT CMdfVideoAdapter::Init( const char*              pCurrentMimetype,
                                   MMMFClockSource*         pClockSource,
                                   IHXValues*               pHeader,
-                                  IUnknown*                pContext )
+                                  IUnknown*                pContext,
+                                  HXBOOL                   bNetworkAccess )                                 
 {
     MDFVIDEOLOG_ENTERFN2( "Init" );
     HX_RESULT retVal( HXR_OK );
@@ -370,37 +371,7 @@
         if( m_pPayloadFormatPluginDevice && error == KErrNone )
         {
             HXLOGL2(HXLOG_VIDE, "    Payload id 0x%08x is successfully loaded, HW decoder:0x%08x, PostProcessor:0x%08x", formatId.iUid,hwDecoderId.iUid,hwPostProcessorId.iUid );
-
-
-            UINT32 disableMinPrerollCheck( 0 );
-
-            pHeader->GetPropertyULONG32( "DisableMinPrerollCheck", disableMinPrerollCheck );
-            
-            MDFVIDEOLOG_WRITE_FORMAT2( "    DisableMinPrerollCheck is %d", disableMinPrerollCheck );
-
-            if( !disableMinPrerollCheck )
-            {
-                UINT32 ulPreroll = 0;
-                UINT32 ulMinPreroll = m_pPayloadFormatPluginDevice->GetPreRollInMs();
-        
-                pHeader->GetPropertyULONG32( "Preroll", ulPreroll);
-
-                // Make sure Preroll is above lower bound
-                if(ulPreroll < ulMinPreroll)
-                {
-                    ulPreroll = ulMinPreroll;
-                }
-                
-                // Limit the Preroll with upper bound
-                if(ulPreroll > MDF_MAX_PREROLL_IN_MSEC)
-                {
-                    ulPreroll = MDF_MAX_PREROLL_IN_MSEC;
-                }
-                
-                pHeader->SetPropertyULONG32( "Preroll", ulPreroll );
-            }
-            
-            retVal = HXR_OK;
+            retVal = SetHdrPreroll(pHeader,bNetworkAccess);
         }
         else
         {
@@ -2970,3 +2941,45 @@
         return FALSE;
     }
 }
+
+
+HX_RESULT CMdfVideoAdapter::SetHdrPreroll(IHXValues* pHeader, HXBOOL bNetworkAccess)
+{
+    UINT32 disableMinPrerollCheck = 0;
+    
+    if (pHeader)
+    {
+        pHeader->GetPropertyULONG32( "DisableMinPrerollCheck", disableMinPrerollCheck );
+           
+        HXLOGL3(HXLOG_VIDE,"CMdfVideoAdapter::SetHdrPreroll() DisableMinPrerollCheck %d", disableMinPrerollCheck );
+
+        if( !disableMinPrerollCheck)
+        {
+            UINT32 ulPreroll = 0;
+            UINT32 ulMinPreroll = m_pPayloadFormatPluginDevice->GetPreRollInMs(bNetworkAccess);
+            HXLOGL3(HXLOG_VIDE, "CMdfVideoAdapter::SetHdrPreroll() bNetworkAccess %d ulMinPreroll %d ", bNetworkAccess, ulMinPreroll );
+            
+            pHeader->GetPropertyULONG32( "Preroll", ulPreroll);
+            HXLOGL3(HXLOG_VIDE, "CMdfVideoAdapter::SetHdrPreroll() initial header preroll %d", ulPreroll );
+            
+            // Make sure Preroll is above lower bound
+            if(ulPreroll < ulMinPreroll)
+            {
+                ulPreroll = ulMinPreroll;
+            }
+                
+            // Limit the Preroll with upper bound
+            if(ulPreroll > MDF_MAX_PREROLL_IN_MSEC)
+            {
+                ulPreroll = MDF_MAX_PREROLL_IN_MSEC;
+            }
+               
+            pHeader->SetPropertyULONG32( "Preroll", ulPreroll );
+            
+            HXLOGL2(HXLOG_VIDE, "CMdfVideoAdapter::SetHdrPreroll() set header ulPreroll %d", ulPreroll );     
+         }
+    }
+    
+    return HXR_OK;
+}
+
Index: renderer/mdfvidrend.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/renderer/mdfvidrend.cpp,v
retrieving revision 1.4.2.28
diff -u -w -r1.4.2.28 mdfvidrend.cpp
--- renderer/mdfvidrend.cpp	2 Dec 2008 21:08:40 -0000	1.4.2.28
+++ renderer/mdfvidrend.cpp	18 Jan 2010 19:45:16 -0000
@@ -525,16 +525,7 @@
                
         if (!strncmp(pMimeTypeData,"video/X-HX-AVC1",sizeof("video/X-HX-AVC1")))        
         {    
-            IHXStreamSource* pStreamSource = NULL;
-            if(m_pStream && SUCCEEDED(m_pStream->GetSource(pStreamSource)) && pStreamSource)
-            {
-                IHXFileFormatObject* pFFObject = NULL;
-                retVal = pStreamSource->QueryInterface(IID_IHXFileFormatObject, (void**) &pFFObject);
-                if (SUCCEEDED(retVal))
-                {
-                    HX_RELEASE(pFFObject);   
-                }
-                else
+            if(IsStreaming())
                 {
 #ifdef HELIX_FEATURE_DTDR_THUMBNAIL
                     if (m_bUntimedRendering)
@@ -549,7 +540,9 @@
                         MDFVIDEOLOG_INOUTFN2( "Unsupported mimetype during streaming!" );
                     }                 
                 }    
-                HX_RELEASE(pStreamSource);
+            else
+            {
+                retVal = HXR_OK;
             }        
         }
         
@@ -599,7 +592,7 @@
 
     if( SUCCEEDED( retVal ) )
     {
-        retVal = m_pMdfVideoAdapter->Init( m_pCurrentMimetype, m_pClockSource, m_pHeader, m_pContext );
+        retVal = m_pMdfVideoAdapter->Init( m_pCurrentMimetype, m_pClockSource, m_pHeader, m_pContext, IsNetworkAccess());
         m_pHeader->GetPropertyULONG32( "PreRoll", m_ulPreroll );
         MDFVIDEOLOG_WRITE_FORMAT2("OnHeader PreRoll :: %lu", m_ulPreroll);
     }
@@ -1293,6 +1286,90 @@
     return bIsVideoOnlyPlayback;
 }
 
+HXBOOL CMdfVideoRenderer::IsStreaming()
+{
+
+    HXBOOL bStreaming = FALSE;
+    IHXStreamSource* pStreamSource = NULL;
+    HX_RESULT retVal = HXR_FAIL;
+    if(m_pStream && SUCCEEDED(m_pStream->GetSource(pStreamSource)) && pStreamSource)
+    {
+        IHXFileFormatObject* pFFObject = NULL;
+        retVal = pStreamSource->QueryInterface(IID_IHXFileFormatObject, (void**) &pFFObject);
+        if (SUCCEEDED(retVal))
+        {
+            HX_RELEASE(pFFObject);   
+        }
+        else
+        {
+            bStreaming = TRUE;
+        }
+        HX_RELEASE(pStreamSource);
+    }           
+    HXLOGL2(HXLOG_VIDE, "CMdfVideoRenderer::IsStreaming() bStreaming %d", bStreaming );
+    return bStreaming;
+}
+
+HXBOOL CMdfVideoRenderer::IsNetworkAccess()
+{
+    HXBOOL bNetworkAccess = FALSE;
+    IHXAdvise* pFFAdvise = NULL;
+    HX_RESULT adviseStatus = HXR_FAIL;
+       
+    IHXStreamSource* pStreamSource = NULL;
+    if(m_pStream && SUCCEEDED(m_pStream->GetSource(pStreamSource)) && pStreamSource)   
+    {   
+        // try IHXFileFormatObject first
+        IHXFileFormatObject* pFFObject = NULL;
+        pStreamSource->QueryInterface(IID_IHXFileFormatObject, (void**) &pFFObject);
+        HXLOGL2(HXLOG_VIDE, "CMdfVideoRenderer::IsNetworkAccess() pFFObject %p", pFFObject );
+        
+        if (pFFObject)
+        {
+            if(SUCCEEDED(pFFObject->QueryInterface(IID_IHXAdvise,(void**)&pFFAdvise)))
+            {
+                adviseStatus = pFFAdvise->Advise(HX_FILERESPONSEADVISE_NETWORKACCESS);
+                HXLOGL2(HXLOG_VIDE, "CMdfVideoRenderer::IsNetworkAccess() pFFAdvise %p", pFFAdvise );
+                HX_RELEASE(pFFAdvise);  
+            }
+            HX_RELEASE(pFFObject); 
+        }
+        else
+        {
+            // HXNetSource is used
+            // so we can set the adviseStatus to HXR_OK
+            adviseStatus = HXR_OK;
+        }
+        
+        // try IHXFileObject
+        if(FAILED(adviseStatus))
+        {
+            IHXFileObject*  pFileObject = NULL;
+            pStreamSource->QueryInterface(IID_IHXFileObject, (void**) &pFileObject);
+            HXLOGL2(HXLOG_VIDE, "CMdfVideoRenderer::IsNetworkAccess() pFileObject %p", pFileObject );
+            if(pFileObject)
+            {
+               adviseStatus = pFileObject->Advise(HX_FILEADVISE_NETWORKACCESS);             
+               HX_RELEASE(pFileObject);
+            }
+        }
+        
+        if(adviseStatus == HXR_ADVISE_LOCAL_ACCESS)
+        {
+            bNetworkAccess = FALSE;
+        }
+        else if(SUCCEEDED(adviseStatus))
+        {
+            bNetworkAccess = TRUE;
+        }
+         // done with pStreamSource
+        HX_RELEASE(pStreamSource);
+    } 
+    
+    HXLOGL2(HXLOG_VIDE, "CMdfVideoRenderer::IsNetworkAccess() adviseStatus 0x%08x bNetworkAccess %d", adviseStatus, bNetworkAccess );
+    return bNetworkAccess;
+}
+
 void CMdfVideoRenderer::CheckForBufferingStart()
 {
     UINT32 lTimeDelta = 0;
Index: renderer/pub/mdfvideoadapter.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/renderer/pub/mdfvideoadapter.h,v
retrieving revision 1.3.2.44
diff -u -w -r1.3.2.44 mdfvideoadapter.h
--- renderer/pub/mdfvideoadapter.h	30 Oct 2009 16:50:44 -0000	1.3.2.44
+++ renderer/pub/mdfvideoadapter.h	18 Jan 2010 19:45:16 -0000
@@ -136,7 +136,8 @@
     HX_RESULT   Init( const char*              pCurrentMimetype,
                       MMMFClockSource*         pClcokSource,
                       IHXValues*               pHeader,
-                      IUnknown*                pContext );
+                      IUnknown*                pContext,
+                      HXBOOL                   bNetworkAccess = FALSE );
 
     HX_RESULT   VideoPause();
     HX_RESULT   VideoResume();
@@ -177,6 +178,7 @@
     void        HandleInitComplete();
     TInt        GetLoggingMode();
     HXBOOL      IsPAREnabled(TYuvFormat& aYuvFormat, TSize& aPictureSize);
+    HX_RESULT   SetHdrPreroll(IHXValues* pHeader, HXBOOL bNetworkAccess = FALSE);
 public:
     // MMdfDevVideoClientObserver methods
     virtual void FatalError(TInt KErrNone);
Index: renderer/pub/mdfvidrend.h
===================================================================
RCS file: /cvsroot/datatype/mdf/video/renderer/pub/mdfvidrend.h,v
retrieving revision 1.3.2.11
diff -u -w -r1.3.2.11 mdfvidrend.h
--- renderer/pub/mdfvidrend.h	20 Sep 2008 05:46:19 -0000	1.3.2.11
+++ renderer/pub/mdfvidrend.h	18 Jan 2010 19:45:16 -0000
@@ -263,6 +263,8 @@
     UINT32 GetLateFrameRebufferingTolerance();
 
     HXBOOL IsVideoOnlyPlayback();
+    HXBOOL IsStreaming();
+    HXBOOL IsNetworkAccess();
     void CheckVideoRebufferPreference();
     inline HXBOOL IsVideoRebufferEnabled() {return m_bVideoRebufferEnabled;}
     
From pbasic at real.com  Mon Jan 18 12:44:28 2010
From: pbasic at real.com (Petar Basic)
Date: Mon Jan 18 20:07:52 2010
Subject: [datatype-dev] CR/CN: Implemented -xmlout program option,
	added support for -xmlin pictures [GMPMetaEditor branch]
Message-ID: <9b8350411001181244n36ce569bua06568c3911187a0@mail.gmail.com>

Modified by: pbasic at real.com
Date: 2010/01/18
Project: GMPMetaEditor (meta3gp.exe)

Synopsis:
Implemented -xmlout program option, added support for -xmlin pictures
[GMPMetaEditor branch]

Details:
1.) -xmlout option writes extracted or injected metadata into the
specified XML file.

2.) Added support for XML input file elements:
"albums/album/image/fileName", "albums/album/image/fileName2".

Files Modified:
datatype/common/util/pub/metautil.h
datatype/common/util/metautil.cpp
datatype/tools/dtdriver/apps/meta3gp/HXXmlInputParser.h
datatype/tools/dtdriver/apps/meta3gp/HXXmlInputParser.cpp
datatype/tools/dtdriver/apps/meta3gp/main.cpp

Platforms and Profiles Affected:
All

Image Size and Heap Use impact:
None

Platforms and Profiles Build Verified:
system id: win32-i386-vc7, sunos-5.10-sparc-studio11
profile: helix-client-all-defines

Platforms and Profiles Functionality Verified:
x86 Windows XP SP2
Sparc SunOS 5.10

Branch:
GMPMetaEditor

Copyright assignment:
I am a RealNetworks employee or contractor.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: datatype_common_util.diff
Type: application/octet-stream
Size: 23810 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100118/e5abd156/datatype_common_util-0001.obj
-------------- next part --------------
A non-text attachment was scrubbed...
Name: datatype_tools_dtdriver_apps_meta3gp.diff
Type: application/octet-stream
Size: 63675 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100118/e5abd156/datatype_tools_dtdriver_apps_meta3gp-0001.obj
From vkathuria at real.com  Tue Jan 19 03:44:53 2010
From: vkathuria at real.com (Varun Kathuria)
Date: Tue Jan 19 11:08:10 2010
Subject: [datatype-dev] CR/CN:Changes to add fmp4 fourcc to play FFmpeg
	MPEG-4 files.
Message-ID: 

Skipped content of type multipart/alternative-------------- next part --------------
Index: avistrm.cpp
===================================================================
RCS file: /cvsroot/datatype/avi/fileformat/avistrm.cpp,v
retrieving revision 1.10.2.13
diff -u -r1.10.2.13 avistrm.cpp
--- avistrm.cpp	9 Oct 2009 03:16:47 -0000	1.10.2.13
+++ avistrm.cpp	19 Jan 2010 12:35:14 -0000
@@ -259,7 +259,8 @@
 #define  VIDEO_FORMAT_h264 HX_MAKE4CC('4', '6', '2', 'h') 
 #define  VIDEO_FORMAT_AVC1 HX_MAKE4CC('1', 'C', 'V', 'A')
 #define  VIDEO_FORMAT_avc1 HX_MAKE4CC('1', 'c', 'v', 'a') 
-
+#define  VIDEO_FORMAT_FMP4 HX_MAKE4CC('4', 'P', 'M', 'F')
+#define  VIDEO_FORMAT_fmp4 HX_MAKE4CC('4', 'p', 'm', 'f')
 
 #define AVI_LIST_OBJECT     0x4c495354 /* 'LIST' */
 #define AVI_RECORD_TYPE     0x72656320 /* 'rec ' */
@@ -688,7 +689,9 @@
 					  (m_header.ulHandler == VIDEO_FORMAT_dx50) ||
                                           (m_header.ulHandler == VIDEO_FORMAT_DX50) ||
 					  (m_header.ulHandler == VIDEO_FORMAT_XVID)||
-					  (m_header.ulHandler == VIDEO_FORMAT_xvid))
+					  (m_header.ulHandler == VIDEO_FORMAT_xvid)||
+					  (m_header.ulHandler == VIDEO_FORMAT_FMP4)||
+					  (m_header.ulHandler == VIDEO_FORMAT_fmp4))	
                         {
                             strcpy(szStreamName, "Video Track");
                             strcpy (szMimeType, "video/X-HX-DIVX");
From ehyche at real.com  Tue Jan 19 06:53:48 2010
From: ehyche at real.com (Eric Hyche)
Date: Tue Jan 19 14:17:35 2010
Subject: [datatype-dev] Re: RESEND CR: ESLM-7YHD9L - Helix_wmv controller:
 Conflict between
 the list from SupportsMimeType and actually video type (mp4) for video
 playback
In-Reply-To: 
References: 
	<5701CE13-A77B-45A7-A614-3470F2637C85@real.com>
	
Message-ID: <61C65E33-DDBD-4A3D-9E04-C5B252B51331@real.com>

Looks ok to me.


On Jan 18, 2010, at 9:00 AM,  wrote:

> Hi Eric,
>  
> The following files in 420Brizo and HEAD require similar changes as was applied to 'installMMF.pcf' previously -
> \clientapps\symbianMmf\videocontroller\ng_installMMF.pcf
> \clientapps\symbianMmf\audiocontroller\ng_installMMF.pcf
>  
> Attached are the diffs for the same. Since CVS appears to be down, I have attached the diffs from the recently downloaded files. Kindly review.  
>  
> "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:  ext-shashi.merapala@nokia.com
>  
> Reviewed by:  ashish.as.gupta@nokia.com
>  
> Date:  01/18/2010
>  
> Project:  SymbianMmf_wm
>  
> Error Id:  ESLM-7YHD9L
>  
> Synopsis:  Helix_wmv controller: Conflict between the list from SupportsMimeType and actually video type (mp4) for video playback
>  
> Overview:  The WMV Extension Controller needs to be rolled up into the rest of Helix so that the Helix audio/video controllers support the Windows Media content.
>            
> Solution:  Diffs attached
>  
> Files removed:  The folder ?wmvextcontroller? and its contents are removed from \clientapps\symbianMmf\
>  
> Files added:  None
>  
> Files modified:  \client\build\BIF\hxclient_2_1_0_cayennes.bif
>                  \client\build\BIF\hxclient_4_2_0_brizo.bif
>                  \common\build\BIF\helix.bif
>                  \clientapps\symbianMmf\videocontroller\installMMF.pcf
>                  \clientapps\symbianMmf\videocontroller\MmfSis
>                  \clientapps\symbianMmf\audiocontroller\installMMF.pcf
>                  \clientapps\symbianMmf\audiocontroller\controllersis  
>                  \clientapps\symbianMmf\videocontroller\101F8513.rss
>                  \clientapps\symbianMmf\audiocontroller\10207B64.rss
>                  \datatype\tools\metadataeng\engine\platform\symbian\hxmetadata_dlls.txt
>                  \clientapps\symbianMmf\videocontroller\ng_installMMF.pcf
>                  \clientapps\symbianMmf\audiocontroller\ng_installMMF.pcf
>                           
> Image size and heap use impact:  Approx. 289 kb of space saved on image creation
>  
> Module release testing (STIF):  Passed
>  
> Test case(s) added:  No
>  
> Memory leak check performed:  Yes. No new leaks introduced
>  
> Platforms and profiles build verified:  helix-client-s60-52-mmf-mdf-dsp
>  
> Platforms and profiles functionality verified:  armv5, winscw
>  
> Branch:  210CayS, HEAD, 420Brizo
>  
>  
> -----Original Message-----
> From: Merapala Shashi (EXT-Sasken/Bangalore) 
> Sent: Friday, January 15, 2010 5:26 PM
> To: 'ext Eric Hyche'
> Cc: client-dev@helixcommunity.org; common-dev@helixcommunity.org; clientapps-dev@helixcommunity.org; datatype-dev@helixcommunity.org; nokia-private-dev@helixcommunity.org
> Subject: RE: [Nokia-private-dev] RESEND CR: ESLM-7YHD9L - Helix_wmv controller: Conflict between the list from SupportsMimeType and actually video type (mp4) for video playback
>  
> Thanks Eric. Checked into 210CayS, HEAD & 420Brizo.
>  
> Thanks & Warm Regards,
> Shashi Kiran Merapala
>  
>  
> -----Original Message-----
> From: ext Eric Hyche [mailto:ehyche@real.com]
> Sent: Tuesday, January 12, 2010 8:47 PM
> To: Merapala Shashi (EXT-Sasken/Bangalore)
> Cc: client-dev@helixcommunity.org; common-dev@helixcommunity.org; clientapps-dev@helixcommunity.org; datatype-dev@helixcommunity.org; nokia-private-dev@helixcommunity.org
> Subject: Re: [Nokia-private-dev] RESEND CR: ESLM-7YHD9L - Helix_wmv controller: Conflict between the list from SupportsMimeType and actually video type (mp4) for video playback
>  
> Looks good to me.
>  
> On Jan 12, 2010, at 7:27 AM,   wrote:
>  
> > Sending the CR again with updated diffs. This time the diffs of hxclient_4_2_0_brizo.bif and helix.bif have also been attached (which I had missed previously).
> > 
> > "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:  ext-shashi.merapala@nokia.com
> > 
> > Reviewed by:  ashish.as.gupta@nokia.com
> > 
> > Date:  01/12/2010
> > 
> > Project:  SymbianMmf_wm
> > 
> > Error Id:  ESLM-7YHD9L
> > 
> > Synopsis:  Helix_wmv controller: Conflict between the list from SupportsMimeType and actually video type (mp4) for video playback
> > 
> > Overview:  The WMV Extension Controller needs to be rolled up into the rest of Helix so that the Helix audio/video controllers support the Windows Media content.
> >           
> > Solution:  Diffs attached
> > 
> > Files removed:  The folder ?wmvextcontroller? and its contents are removed from \clientapps\symbianMmf\
> > 
> > Files added:  None
> > 
> > Files modified:  \client\build\BIF\hxclient_2_1_0_cayennes.bif
> >                  \client\build\BIF\hxclient_4_2_0_brizo.bif
> >                  \common\build\BIF\helix.bif
> >                  \clientapps\symbianMmf\videocontroller\installMMF.pcf
> >                  \clientapps\symbianMmf\videocontroller\MmfSis
> >                  \clientapps\symbianMmf\audiocontroller\installMMF.pcf
> >                  \clientapps\symbianMmf\audiocontroller\controllersis  
> >                  \clientapps\symbianMmf\videocontroller\101F8513.rss
> >                  \clientapps\symbianMmf\audiocontroller\10207B64.rss
> >                  \datatype\tools\metadataeng\engine\platform\symbian\hxmetadata_dlls.txt
> >                           
> > Image size and heap use impact:  Approx. 289 kb of space saved on image creation
> > 
> > Module release testing (STIF):  Passed
> > 
> > Test case(s) added:  No
> > 
> > Memory leak check performed:  Yes. No new leaks introduced
> > 
> > Platforms and profiles build verified:  helix-client-s60-52-mmf-mdf-dsp
> > 
> > Platforms and profiles functionality verified:  armv5, winscw
> > 
> > Branch:  210CayS, HEAD, 420Brizo
> > 
> > 
> > 
> > 
>  
> Eric Hyche (ehyche@real.com)
> Principal Engineer
> RealNetworks, Inc.
>  
>  
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From ehyche at real.com  Tue Jan 19 06:56:04 2010
From: ehyche at real.com (Eric Hyche)
Date: Tue Jan 19 14:18:44 2010
Subject: [datatype-dev] Re: [Nokia-private-dev] CR needed: (Symbian) video
 preroll reduction for local video playback 
In-Reply-To: 
References: 
Message-ID: 

Looks good.

On Jan 18, 2010, at 1:55 PM,  wrote:

> "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:  yury.ramanovich@nokia.com
>  
> Reviewed by:
>  
> Date: 01/18/2010
>  
> Project: SymbianMmf_wm
>  
> ErrorId: TBD
>  
> Synopsis: video preroll reduction for local video playback
>  
> Overview: mdf video adapter sets min and max limits on video preroll for all the video formats. Currently min video preroll is 3500ms for most video formats and max video preroll is 12000ms. In an effort to reduce the time it takes to start video playback for local cases, the minimum video preroll is reduced to 1000s.
>  
> Solution: Reduce mdf video min preroll for local video playback to 1000ms for each mdf PayloadFormatPluginDevice; leave min video preroll for networking cases as is. A new method CMdfVideoRenderer::IsNetworkAccess() is introduced to distinguish between local and networking cases, result of of which is passed to CMdfVideoAdapter::Init(). Consolidated code for setting video preroll in CMdfVideoAdapter::SetHdrPreroll() method. Added HXBOOL bNetworkAccess param to  GetPrerollInMs() methods for all PayloadFormatPluginDevices to differentiate returned min video preroll value between local and streaming cases for each video format. To improve code readability, also introduced CMdfVideoRenderer::IsStreaming() method, which is called from CMdfVideoRenderer::OnHeader().
>  
> Note that min video preroll is just a lower limit for the preroll value that can be set by a file format. Some file formats ( like Windows Media and Real Video) can set their video preroll higher than minimum (3000-5000ms) so the higher preroll takes effect, while others ( MPEG4, H.263, H.264) don?t set it, so the min preroll (1000ms) will be used.
>  
> Files Added:
> None.
>  
> Files Modified:
> /datatype/mdf/video/format/common/mdfpayloadformat.cpp    
> /datatype/mdf/video/format/common/pub/mdfpayloadformat.h  
> /datatype/mdf/video/format/flv/mdfflvpayloadformat.cpp    
> /datatype/mdf/video/format/flv/pub/mdfflvpayloadformat.h  
> /datatype/mdf/video/format/h263/mdfh263payloadformat.cpp  
> /datatype/mdf/video/format/h263/pub/mdfh263payloadformat.h
> /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/wmv/mdfwmvpayloadformat.cpp    
> /datatype/mdf/video/format/wmv/pub/mdfwmvpayloadformat.h  
> /datatype/mdf/video/renderer/mdfvideoadapter.cpp          
> /datatype/mdf/video/renderer/mdfvidrend.cpp               
> /datatype/mdf/video/renderer/pub/mdfvideoadapter.h        
> /datatype/mdf/video/renderer/pub/mdfvidrend.h             
>  
>  
> Image Size and Heap Use impact: minor
>  
> Module Release testing (STIF) :  MRT subset
>  
> Test case(s) Added  :  No.
>  
> Memory leak check performed : Yes. No new leaks introduced
>  
> Platforms and Profiles Build Verified:
> helix-client-s60-52-mmf-mdf-dsp
>  
> Platforms and Profiles Functionality verified: armv5, winscw
>  
> Branch: Cays210
>  
>  
>  
> BR
> Yury
>  
>  
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From Yury.Ramanovich at nokia.com  Tue Jan 19 10:45:15 2010
From: Yury.Ramanovich at nokia.com (Yury.Ramanovich@nokia.com)
Date: Tue Jan 19 18:08:04 2010
Subject: [datatype-dev] RE: [Nokia-private-dev] CR needed: (Symbian) video
 preroll reduction for local video playback 
In-Reply-To: 
References: 
	
Message-ID: 

Thanks Eric, checked in to 210Cays for now.

BR
Yury
>-----Original Message-----
>From: ext Eric Hyche [mailto:ehyche@real.com]
>Sent: Tuesday, January 19, 2010 8:56 AM
>To: Ramanovich Yury (Nokia-D/Dallas)
>Cc: datatype-dev@helixcommunity.org; nokia-private-
>dev@helixcommunity.org
>Subject: Re: [Nokia-private-dev] CR needed: (Symbian) video preroll
>reduction for local video playback
>
>Looks good.
>
>On Jan 18, 2010, at 1:55 PM,  wrote:
>
>> "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:  yury.ramanovich@nokia.com
>>
>> Reviewed by:
>>
>> Date: 01/18/2010
>>
>> Project: SymbianMmf_wm
>>
>> ErrorId: TBD
>>
>> Synopsis: video preroll reduction for local video playback
>>
>> Overview: mdf video adapter sets min and max limits on video preroll
>for all the video formats. Currently min video preroll is 3500ms for
>most video formats and max video preroll is 12000ms. In an effort to
>reduce the time it takes to start video playback for local cases, the
>minimum video preroll is reduced to 1000s.
>>
>> Solution: Reduce mdf video min preroll for local video playback to
>1000ms for each mdf PayloadFormatPluginDevice; leave min video preroll
>for networking cases as is. A new method
>CMdfVideoRenderer::IsNetworkAccess() is introduced to distinguish
>between local and networking cases, result of of which is passed to
>CMdfVideoAdapter::Init(). Consolidated code for setting video preroll in
>CMdfVideoAdapter::SetHdrPreroll() method. Added HXBOOL bNetworkAccess
>param to  GetPrerollInMs() methods for all PayloadFormatPluginDevices to
>differentiate returned min video preroll value between local and
>streaming cases for each video format. To improve code readability, also
>introduced CMdfVideoRenderer::IsStreaming() method, which is called from
>CMdfVideoRenderer::OnHeader().
>>
>> Note that min video preroll is just a lower limit for the preroll
>value that can be set by a file format. Some file formats ( like Windows
>Media and Real Video) can set their video preroll higher than minimum
>(3000-5000ms) so the higher preroll takes effect, while others ( MPEG4,
>H.263, H.264) don't set it, so the min preroll (1000ms) will be used.
>>
>> Files Added:
>> None.
>>
>> Files Modified:
>> /datatype/mdf/video/format/common/mdfpayloadformat.cpp
>> /datatype/mdf/video/format/common/pub/mdfpayloadformat.h
>> /datatype/mdf/video/format/flv/mdfflvpayloadformat.cpp
>> /datatype/mdf/video/format/flv/pub/mdfflvpayloadformat.h
>> /datatype/mdf/video/format/h263/mdfh263payloadformat.cpp
>> /datatype/mdf/video/format/h263/pub/mdfh263payloadformat.h
>> /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/wmv/mdfwmvpayloadformat.cpp
>> /datatype/mdf/video/format/wmv/pub/mdfwmvpayloadformat.h
>> /datatype/mdf/video/renderer/mdfvideoadapter.cpp
>> /datatype/mdf/video/renderer/mdfvidrend.cpp
>> /datatype/mdf/video/renderer/pub/mdfvideoadapter.h
>> /datatype/mdf/video/renderer/pub/mdfvidrend.h
>>
>>
>> Image Size and Heap Use impact: minor
>>
>> Module Release testing (STIF) :  MRT subset
>>
>> Test case(s) Added  :  No.
>>
>> Memory leak check performed : Yes. No new leaks introduced
>>
>> Platforms and Profiles Build Verified:
>> helix-client-s60-52-mmf-mdf-dsp
>>
>> Platforms and Profiles Functionality verified: armv5, winscw
>>
>> Branch: Cays210
>>
>>
>>
>> BR
>> Yury
>>
>>
>> 
>
>Eric Hyche (ehyche@real.com)
>Principal Engineer
>RealNetworks, Inc.
>


From ugundeli at real.com  Tue Jan 19 16:24:27 2010
From: ugundeli at real.com (Umakant Gundeli)
Date: Tue Jan 19 23:47:54 2010
Subject: [datatype-dev] Fix for Bug 9974: It costs 24 seconds for capturing
 thumbnail of a broken rmvb file
Message-ID: <766B5A29D28DA442AB229AAEE2AFC44507D79E6358@SEAMBX.corp.real.com>

Project: Real Player for Android

Synopsis: Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file.

Overview:

This bug was due to capturing thumbnail of a corrupted/broken RMVB file. In this given broken/corrupted RMVB file, The duration given in file header is around 111 minutes, whereas the actual clip is only around 7minutes. At some point in execution, the riff reader tries to seek to an offset (to around 111 minutes) which is way outside the file size limits and after this ->Seek() call, it takes about 24 seconds to return the control back to ::RIFFSeekDone() method.

To fix this bug, I added a check to make sure that desired seek offset falls within the file size limits. if desired seek offset is outside file size limits, we simply call RIFFSeekDone(HXR_FAILED).

 Files Added: None

 Files Modified:
 datatype/common/util/riff.cpp

 Platforms and Profiles Build and Functionality Verified:
 Platform: android-donut-arm.eabi
 Profile: helix-client-android
 target(s): android_all

 Branch: hxclient_3_6_1_atlas_restricted

DIFF:

Index: riff.cpp
===================================================================
RCS file: /cvsroot/datatype/common/util/riff.cpp,v
retrieving revision 1.12.16.2.28.1
diff -u -b -B -r1.12.16.2.28.1 riff.cpp
--- riff.cpp	23 Dec 2009 05:32:18 -0000	1.12.16.2.28.1
+++ riff.cpp	20 Jan 2010 00:56:28 -0000
@@ -734,7 +734,14 @@
 {
     m_ulSeekOffset = offset;
     m_state = RS_UserSeekPending;
+    if(m_ulSeekOffset <= m_TotalFileSize)
+    {
         return m_pFileObject->Seek(m_ulSeekOffset, FALSE);
+    }
+    else
+    {
+        return m_pResponse->RIFFSeekDone(HXR_FAILED);
+    }
 }
 

thanks,
-Umakant.
From ugundeli at real.com  Tue Jan 19 16:26:03 2010
From: ugundeli at real.com (Umakant Gundeli)
Date: Tue Jan 19 23:53:40 2010
Subject: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for
 capturing thumbnail of a broken rmvb file
Message-ID: <766B5A29D28DA442AB229AAEE2AFC44507D79E6359@SEAMBX.corp.real.com>

Project: Real Player for Android

Synopsis: Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file.

Overview:

This bug was due to capturing thumbnail of a corrupted/broken RMVB file. In this given broken/corrupted RMVB file, The duration given in file header is around 111 minutes, whereas the actual clip is only around 7minutes. At some point in execution, the riff reader tries to seek to an offset (to around 111 minutes) which is way outside the file size limits and after this ->Seek() call, it takes about 24 seconds to return the control back to ::RIFFSeekDone() method.

To fix this bug, I added a check to make sure that desired seek offset falls within the file size limits. if desired seek offset is outside file size limits, we simply call RIFFSeekDone(HXR_FAILED).

 Files Added: None

 Files Modified:
 datatype/common/util/riff.cpp

 Platforms and Profiles Build and Functionality Verified:
 Platform: android-donut-arm.eabi
 Profile: helix-client-android
 target(s): android_all

 Branch: hxclient_3_6_1_atlas_restricted

DIFF:

Index: riff.cpp
===================================================================
RCS file: /cvsroot/datatype/common/util/riff.cpp,v
retrieving revision 1.12.16.2.28.1
diff -u -b -B -r1.12.16.2.28.1 riff.cpp
--- riff.cpp    23 Dec 2009 05:32:18 -0000      1.12.16.2.28.1
+++ riff.cpp    20 Jan 2010 00:56:28 -0000
@@ -734,7 +734,14 @@
 {
     m_ulSeekOffset = offset;
     m_state = RS_UserSeekPending;
+    if(m_ulSeekOffset <= m_TotalFileSize)
+    {
         return m_pFileObject->Seek(m_ulSeekOffset, FALSE);
+    }
+    else
+    {
+        return m_pResponse->RIFFSeekDone(HXR_FAILED);
+    }
 }
 

thanks,
-Umakant.
From gahluwalia at real.com  Wed Jan 20 03:55:20 2010
From: gahluwalia at real.com (Gurpreet)
Date: Wed Jan 20 11:17:51 2010
Subject: [datatype-dev] CR: Fix for Bug 9857 no audio after seeking a
	particular amr file
Message-ID: <4B56EF28.90502@real.com>

Synopsis:
Fix for Bug 9857  no audio after seeking a particular amr file

Overview:
This particular amr file is corrupt, earlier we were not checking the 
frame start header and start to parse the frame
But end up with garbage audio data.
After seek we first check the frame start header and then start to parse 
packet but fails to find a good frame in this file.
Now we check frame start header for all and error out in case we fail to 
find it.

Files Modified:
datatype/amr/fileformat/amrff.cpp
datatype/mp4/payload/hxamrpack.cpp
 
Image Size and Heap Use impact (Client -Only):
None

Platforms and Profiles Build Verified:
BIF branch            -> atlas 361
Target(s)                -> android_all
Profile                    -> helix-client-android-surf_8x50
SYSTEM_ID        -> android-donut-arm.eabi

Files Attached::
amrff.diff
mp4payload.diff

Thanks & Best Regards,
Gurpreet
-------------- next part --------------
Index: hxamrpack.cpp
===================================================================
RCS file: /cvsroot/datatype/mp4/payload/hxamrpack.cpp,v
retrieving revision 1.3
diff -u -r1.3 hxamrpack.cpp
--- hxamrpack.cpp	14 Mar 2005 19:17:44 -0000	1.3
+++ hxamrpack.cpp	20 Jan 2010 12:37:28 -0000
@@ -178,10 +178,13 @@
     // but we choose to do it here. We don't force flushing yet,
     // since we may get more data. Once we get a call to flush,
     // then we process all the input, regardless of min size.
-    ProcessInputPacket(pPacket, m_bFlush, m_ulMinPacketSize,
-                       m_ulPacketBytesConsumed, m_ulDurationConsumed);
+    if (ProcessInputPacket(pPacket, m_bFlush, m_ulMinPacketSize,
+                       m_ulPacketBytesConsumed, m_ulDurationConsumed))
+    {
+        return HXR_OK;
+    }
 
-    return HXR_OK;
+    return HXR_FAIL;
 }
 
 STDMETHODIMP CHXAMRPayloadFormatPacketizer::GetPacket(REF(IHXPacket*) pOutPacket)
@@ -246,7 +249,7 @@
             UINT32 ulLen     = 0;
             UINT32 ulDur     = 0;
             UINT32 ulDurSum  = 0;
-            while (pBuf < pBufLimit &&
+            while (pBuf < pBufLimit && CAMRFrameHdr::ValidHdrByte(*pBuf) &&
                    FindAllAMRFramesLength(pBuf, pBufLimit - pBuf,
                                           ulMinSize,
                                           ulLen, ulDur))
-------------- next part --------------
Index: amrff.cpp
===================================================================
RCS file: /cvsroot/datatype/amr/fileformat/amrff.cpp,v
retrieving revision 1.12.8.1
diff -u -r1.12.8.1 amrff.cpp
--- amrff.cpp	10 Apr 2009 00:21:20 -0000	1.12.8.1
+++ amrff.cpp	20 Jan 2010 12:36:19 -0000
@@ -754,6 +754,18 @@
                         }
                         HX_RELEASE(pPacket);
                     }
+                    else if(m_pContext)
+                    {                        
+                        // QI for IHXErrorMessages
+                        IHXErrorMessages* pErrMsg = NULL;
+                        HX_RESULT rv = m_pContext->QueryInterface(IID_IHXErrorMessages, (void**) &pErrMsg);
+                        if (SUCCEEDED(rv))
+                        {
+	                        // Report the error
+	                        pErrMsg->Report(HXLOG_ERR, HXR_CORRUPT_FILE, 0, NULL, NULL);
+                        }
+                        HX_RELEASE(pErrMsg);
+                    }                    
                 }
                 HX_RELEASE(pRawPacket);
             }
From rajesh.rathinasamy at nokia.com  Wed Jan 20 04:02:55 2010
From: rajesh.rathinasamy at nokia.com (rajesh.rathinasamy@nokia.com)
Date: Wed Jan 20 11:26:18 2010
Subject: [datatype-dev] CR/CN:Changes to add fmp4 fourcc to play FFmpeg
	MPEG-4 files.
In-Reply-To: 
References: 
Message-ID: 

HI Varun,
   Can you please commit this change to 210Cays and 420Brizo too ?

Thanks,
Rajesh.

________________________________
From: datatype-dev-bounces@helixcommunity.org [mailto:datatype-dev-bounces@helixcommunity.org] On Behalf Of ext Varun Kathuria
Sent: Tuesday, January 19, 2010 5:45 AM
To: porting-android@helixcommunity.org; datatype-dev@helixcommunity.org
Subject: [datatype-dev] CR/CN:Changes to add fmp4 fourcc to play FFmpeg MPEG-4 files.


Synopsis:
Changes to add fmp4 fourcc to play FFmpeg MPEG-4 files.

Overview:
When we play some avi files with codecid 'fmp4' then we are not able to play it. Added fourcc for fmp4. Now files with this id can be played fine.

Files Added:
None

Files Modified:
/cvsroot/datatype/avi/fileformat/avistrm.cpp

Image Size and Heap Use impact (Client -Only):
None.

Platforms and Profiles Affected:
None

Distribution Libraries Affected:
None

Distribution library impact and planned action:
None

Platforms and Profiles Build Verified:
BIF branch  -> hxclient_3_6_1_atlas_restricted
Target(s)   -> android_all
Profile     -> helix-client-android-full
SYSTEM_ID   -> android-donut-arm-qsd_8x50

Branch
atlas310 & atlas361
Files Attached:
diff_fmp4.txt

Thanks
Varun Kathuria
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100120/46e6fe29/attachment.html
From vkathuria at real.com  Wed Jan 20 04:31:47 2010
From: vkathuria at real.com (Varun Kathuria)
Date: Wed Jan 20 11:54:45 2010
Subject: [datatype-dev] CR/CN:Changes to add fmp4 fourcc to play
	FFmpegMPEG-4 files.
References: 
	
Message-ID: <0CE7266EF5FB4831869F1897B0D97DAC@abc>

Also checked into 210Cays and 420Brizo.

Thanks
Varun Kathuria
  ----- Original Message ----- 
  From: rajesh.rathinasamy@nokia.com 
  To: vkathuria@real.com ; porting-android@helixcommunity.org ; datatype-dev@helixcommunity.org 
  Sent: Wednesday, January 20, 2010 5:32 PM
  Subject: RE: [datatype-dev] CR/CN:Changes to add fmp4 fourcc to play FFmpegMPEG-4 files.


  HI Varun,
     Can you please commit this change to 210Cays and 420Brizo too ?

  Thanks,
  Rajesh.



----------------------------------------------------------------------------
    From: datatype-dev-bounces@helixcommunity.org [mailto:datatype-dev-bounces@helixcommunity.org] On Behalf Of ext Varun Kathuria
    Sent: Tuesday, January 19, 2010 5:45 AM
    To: porting-android@helixcommunity.org; datatype-dev@helixcommunity.org
    Subject: [datatype-dev] CR/CN:Changes to add fmp4 fourcc to play FFmpeg MPEG-4 files.



    Synopsis:
    Changes to add fmp4 fourcc to play FFmpeg MPEG-4 files.

    Overview:
    When we play some avi files with codecid 'fmp4' then we are not able to play it. Added fourcc for fmp4. Now files with this id can be played fine.

    Files Added:
    None 

    Files Modified:

    /cvsroot/datatype/avi/fileformat/avistrm.cpp

    Image Size and Heap Use impact (Client -Only):
    None.
     
    Platforms and Profiles Affected:
    None 
     
    Distribution Libraries Affected:
    None
     
    Distribution library impact and planned action:
    None
     
    Platforms and Profiles Build Verified:
    BIF branch  -> hxclient_3_6_1_atlas_restricted
    Target(s)   -> android_all
    Profile     -> helix-client-android-full
    SYSTEM_ID   -> android-donut-arm-qsd_8x50
     
    Branch
    atlas310 & atlas361

    Files Attached:
    diff_fmp4.txt
     
    Thanks
    Varun Kathuria
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100120/bd11f362/attachment-0001.html
From ehyche at real.com  Wed Jan 20 05:45:21 2010
From: ehyche at real.com (Eric Hyche)
Date: Wed Jan 20 13:07:46 2010
Subject: [datatype-dev] CR: Fix for Bug 9857 no audio after seeking a
	particular amr file
In-Reply-To: <4B56EF28.90502@real.com>
References: <4B56EF28.90502@real.com>
Message-ID: <27279474-BBAD-4BF9-B6CA-7F158AB8B34E@real.com>

Minor point, but I think it's good coding practice to minimize the number of exit points from functions - preferably keeping it at a single exit point if possible. Can you please re-write the change in hxamrpack.cpp so that it doesn't introduce another exit point?

Thanks,

Eric

On Jan 20, 2010, at 6:55 AM, Gurpreet wrote:

> Synopsis:
> Fix for Bug 9857  no audio after seeking a particular amr file
> 
> Overview:
> This particular amr file is corrupt, earlier we were not checking the 
> frame start header and start to parse the frame
> But end up with garbage audio data.
> After seek we first check the frame start header and then start to parse 
> packet but fails to find a good frame in this file.
> Now we check frame start header for all and error out in case we fail to 
> find it.
> 
> Files Modified:
> datatype/amr/fileformat/amrff.cpp
> datatype/mp4/payload/hxamrpack.cpp
> 
> Image Size and Heap Use impact (Client -Only):
> None
> 
> Platforms and Profiles Build Verified:
> BIF branch            -> atlas 361
> Target(s)                -> android_all
> Profile                    -> helix-client-android-surf_8x50
> SYSTEM_ID        -> android-donut-arm.eabi
> 
> Files Attached::
> amrff.diff
> mp4payload.diff
> 
> Thanks & Best Regards,
> Gurpreet
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From pbasic at real.com  Wed Jan 20 11:18:01 2010
From: pbasic at real.com (Petar Basic)
Date: Wed Jan 20 18:41:07 2010
Subject: [datatype-dev] CR/CN: Accepting UTF8 command line arguments instead
	of wide chars. [GMPMetaEditor branch]
Message-ID: <9b8350411001201118y1a363b2coe0f53d952e123fdc@mail.gmail.com>

Modified by: pbasic at real.com
Date: 2010/01/20
Project: GMPMetaEditor (meta3gp.exe)

Synopsis:
Accepting UTF8 command line arguments instead of wide chars.
[GMPMetaEditor branch]

Details:
Although wide character program arguments are passed correctly from
the Windows console, this is not the case when the program gets called
from a batch script or from a WSH script.  To be able to pass
international characters to the program, -utf8in program option has
been implemented instead of using wmain main entry prototype.  -utf8in
tells the program to treat command line arguments as UTF8 formatted
strings.

Tested on Windows and Solaris from console and from batch scripts.

Files Modified:
datatype/tools/dtdriver/apps/meta3gp/main.cpp

Platforms and Profiles Affected:
All

Image Size and Heap Use impact:
None

Platforms and Profiles Build Verified:
system id: win32-i386-vc7, sunos-5.10-sparc-studio11
profile: helix-client-all-defines

Platforms and Profiles Functionality Verified:
x86 Windows XP SP2
Sparc SunOS 5.10

Branch:
GMPMetaEditor

Copyright assignment:
I am a RealNetworks employee or contractor.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: datatype_tools_dtdriver_apps_meta3gp.diff
Type: application/octet-stream
Size: 35128 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100120/6bec1a92/datatype_tools_dtdriver_apps_meta3gp-0001.obj
From jgordon at real.com  Wed Jan 20 14:15:07 2010
From: jgordon at real.com (Jamie Gordon)
Date: Wed Jan 20 21:37:29 2010
Subject: [datatype-dev] CR: PR 253132/250412 3gr6 branded files refused
Message-ID: <4B57806B.9070701@real.com>

Synopsis
========
Fixes PRs 253132 and 250412 (and other unreported bugs) regarding
weird handling of ftyp.

Branches: SERVER_14_0, HEAD (SERVER_CURRENT)
Suggested Reviewer: anyone


Description
===========
There is some very incorrect code attempting to reject unsupported
MP4 content with unsupported ftyp. It is incorrectly rejecting 3gr6
(which is most certainly supported), rejecting unsupported major
brands without bothering to check for a supported compatible brand,
and not rejecting unrecognized unsupported brands. This is ripped out
and replaced with a check of accepted supported brand (major brand if
supported or first supported compatible brand) and error log and
failure only in case of no supported compatible brand.

Additionally, any content with no supported brand found was being
treated as QuickTime content. This is changed to default to MPEG4
if an ftyp box is present, use QT if either ftyp is not present or
ftyp indicates QT.


Files Affected
==============
datatype/mp4/fileformat/qtffplin.cpp
datatype/mp4/fileformat/qttrkmgr.cpp
datatype/mp4/fileformat/pub/qtatoms.h
datatype/mp4/fileformat/pub/qttrkmgr.h


Testing Performed
=================
Unit Tests:

Integration Tests:
* Proper streaming of 3gr6
* Proper streaming of 3gr9 with 3gr6 compatible brand
* Proper error logged with no supported brand
* Proper streaming of mov (no ftyp)

Leak Tests:

Performance Tests:

Platforms Tested: linux-rhel5-i686
Build verified: linux-rhel5-i686


QA Hints
===============

If there are other bugs I have not noticed with MP3/3GP/F4V/MOV content
being refused, this might also fix those.





-------------- next part --------------
Index: datatype/mp4/fileformat/qtffplin.cpp
===================================================================
RCS file: /cvsroot/datatype/mp4/fileformat/qtffplin.cpp,v
retrieving revision 1.84
diff -u -w -r1.84 qtffplin.cpp
--- datatype/mp4/fileformat/qtffplin.cpp	6 Jan 2010 16:17:16 -0000	1.84
+++ datatype/mp4/fileformat/qtffplin.cpp	20 Jan 2010 22:38:51 -0000
@@ -1090,7 +1090,7 @@
             case QT_FTYPE_MP4:
             {
 		UINT32 ulBrand = 0;
-		m_TrackManager.GetMajorBrand(&ulBrand);
+		m_TrackManager.GetCompatibleBrand(&ulBrand);
 
 		switch (ulBrand)
 		{
@@ -1132,46 +1132,26 @@
 		    break;
 		}
             }
+            default:
+            {
+                break;
+            }
         }
     }
 
     // Reject unsupported brands
-    if (SUCCEEDED(status) && (m_TrackManager.GetEType() == QT_ETYPE_SERVER))
+    if (SUCCEEDED(status) && (m_TrackManager.GetEType() == QT_ETYPE_SERVER) &&
+        m_TrackManager.GetFType() != QT_FTYPE_QT)
     {
 	UINT32 ulBrand = 0;
-	HX_RESULT resBrand = m_TrackManager.GetMajorBrand(&ulBrand);
-
-	HXBOOL bIsSupportedBrand = TRUE;	
-	if (SUCCEEDED(resBrand))
-	{
-            // Reject 3gg6 (general) and 3gr6 (progressive download) profiles
-            if (ulBrand == QT_3gg6 || ulBrand == QT_3gr6)
-	    {
-		bIsSupportedBrand = FALSE;
-	    }
-
-	    // Reject probable rel7 / rel8 / rel9 brands
-	    else
-	    {
-		const UINT32 kul3GPPProfileMask = 0xffff00ff;
-		UINT32 ulMaskedBrand = ulBrand & kul3GPPProfileMask;
-
-		const UINT32 kul3GPPRel7 = QT_ENCODE_TYPE('3', 'g', 0, '7');
-		const UINT32 kul3GPPRel8 = QT_ENCODE_TYPE('3', 'g', 0, '8');
-		const UINT32 kul3GPPRel9 = QT_ENCODE_TYPE('3', 'g', 0, '9');
-
-		if (ulMaskedBrand == kul3GPPRel7 || ulMaskedBrand == kul3GPPRel8 || 
-		    ulMaskedBrand == kul3GPPRel9)
-		{
-		    bIsSupportedBrand = FALSE;
-		}
-	    }
-	}	
+	HX_RESULT resBrand = m_TrackManager.GetCompatibleBrand(&ulBrand);
 
-	// Log error message, if necessary
-	if (!bIsSupportedBrand)
+	if (SUCCEEDED(resBrand) && ulBrand == 0)
 	{
+	    // There is an ftype but we did not find a compatible brand,
+            // log an error
 	    char szBrand[10] = "(unknown)";	    
+            HX_RESULT resBrand = m_TrackManager.GetMajorBrand(&ulBrand);
 
 	    // Copy the brand 4cc
 	    if (SUCCEEDED(resBrand))
@@ -1184,36 +1164,13 @@
 	    }
 
 	    char szBuf[512] = ""; /* Flawfinder: ignore */
-
-            if (ulBrand == QT_3gr6)
-            {
-                SafeSprintf(szBuf, 512, "This server(proxy) does not support "
-                    "3GPP files with a major brand of %s "
-                    "(Progressive Download profile). "
-                    "Please use only files that are encoded with the "
-                    "\"Streaming Server profile (include hint tracks)\". "
-                    "See 3GPP TS 26.244, Rel-6.", szBrand);
-            }
-            else if (ulBrand == QT_3gg6)
-            {
-                SafeSprintf(szBuf, 512, "This server(proxy) does not support "
-                    "3GPP files with a major brand of %s "
-                    "(General profile). "
-                    "Please use only files that are encoded with the "
-                    "\"Streaming Server profile (include hint tracks)\". "
-                    "See 3GPP TS 26.244, Rel-6.", szBrand);
-            }
-            else
-            {
                 SafeSprintf(szBuf, 512, "This server(proxy) does not support "
-                    "3GPP files with a major brand of %s "
-                    "(Not Supported 3GPP Release - 7,8 or 9 Files).", szBrand);
-            }
+                    "\'%s\' branded MP4 or 3GP files.", szBrand);
 
-	    m_pErrorMessages->Report(HXLOG_ALERT, HXR_FAIL, 0, szBuf, NULL);
+	    m_pErrorMessages->Report(HXLOG_ALERT, HXR_NOT_SUPPORTED, 0, 
+                szBuf, NULL);
 
-	    return m_pFFResponse->FileHeaderReady(
-		HXR_FAIL, NULL);
+	    return m_pFFResponse->FileHeaderReady(HXR_NOT_SUPPORTED, NULL);
 	}
     }
 #endif	// QTCONFIG_SERVER
Index: datatype/mp4/fileformat/qttrkmgr.cpp
===================================================================
RCS file: /cvsroot/datatype/mp4/fileformat/qttrkmgr.cpp,v
retrieving revision 1.26
diff -u -w -r1.26 qttrkmgr.cpp
--- datatype/mp4/fileformat/qttrkmgr.cpp	6 Jan 2010 16:17:16 -0000	1.26
+++ datatype/mp4/fileformat/qttrkmgr.cpp	20 Jan 2010 22:38:51 -0000
@@ -69,6 +69,7 @@
     , m_bHintTracksActive(FALSE)
     , m_FType(QT_FTYPE_UNKNOWN)
     , m_EType(QT_ETYPE_UNKNOWN)
+    , m_ulCompatibleBrand(0)
     , m_bInitialSubscriptionWindowClosed(FALSE)
     , m_pTrackTable(NULL)
     , m_pStreamToTrackMap(NULL)
@@ -1265,6 +1266,28 @@
 }
 
 /****************************************************************************
+ *  GetCompatibleBrand
+ */
+HX_RESULT CQTTrackManager::GetCompatibleBrand(UINT32* pulBrand)
+{
+    HX_RESULT res = HXR_FAIL;
+
+    if (!pulBrand)
+    {
+	HX_ASSERT(FALSE);
+	return HXR_POINTER;
+    }
+
+    if (m_pFtypAtom)
+    {
+	*pulBrand = m_ulCompatibleBrand;
+	res = HXR_OK;
+    }
+
+    return res;
+}
+
+/****************************************************************************
  *  GetTrackAtomHdlr
  */
 CQT_hdlr_Atom* CQTTrackManager::GetTrackAtomHdlr(CQT_trak_Atom* pTrakAtom)
@@ -1415,6 +1438,9 @@
     UINT32 ulCompBrandIdx = 0;
     UINT32 ulNumCompBrands = 0;
     
+    // if there is an ftyp atom, default to mp4
+    m_FType = QT_FTYPE_MP4;
+
     ulBrand = m_pFtypAtom->Get_MajorBrand();
     ulNumCompBrands = m_pFtypAtom->Get_NumCompatibleBrands();
 
@@ -1437,12 +1463,19 @@
         case QT_3gr6:
         case QT_3gs6:
         case QT_MSNV:    
-            m_FType = QT_FTYPE_MP4;
+        case QT_f4v:
+            m_ulCompatibleBrand = ulBrand;
+            break;
+
+        case QT_qt:
+            m_FType = QT_FTYPE_QT;
+            m_ulCompatibleBrand = ulBrand;
             break;
 
 #if defined(HELIX_FEATURE_RMFF_ISO_BASED)
                     case QT_rmng:    
                         m_FType = QT_FTYPE_RMNG;
+            m_ulCompatibleBrand = ulBrand;
                         break;
 #endif
 
Index: datatype/mp4/fileformat/pub/qtatoms.h
===================================================================
RCS file: /cvsroot/datatype/mp4/fileformat/pub/qtatoms.h,v
retrieving revision 1.40
diff -u -w -r1.40 qtatoms.h
--- datatype/mp4/fileformat/pub/qtatoms.h	12 Jan 2010 16:54:34 -0000	1.40
+++ datatype/mp4/fileformat/pub/qtatoms.h	20 Jan 2010 22:38:51 -0000
@@ -250,7 +250,9 @@
     QT_3gp6 = QT_ENCODE_TYPE('3', 'g', 'p', '6'),
     QT_3gr6 = QT_ENCODE_TYPE('3', 'g', 'r', '6'),
     QT_3gs6 = QT_ENCODE_TYPE('3', 'g', 's', '6'),
-    QT_MSNV = QT_ENCODE_TYPE('M', 'S', 'N', 'V')
+    QT_MSNV = QT_ENCODE_TYPE('M', 'S', 'N', 'V'),
+    QT_qt   = QT_ENCODE_TYPE('q', 't', ' ', ' '),
+    QT_f4v  = QT_ENCODE_TYPE('f', '4', 'v', ' ')
 #if defined(HELIX_FEATURE_RMFF_ISO_BASED)
     ,QT_rmng = QT_ENCODE_TYPE('r', 'm', 'n', 'g')
 #endif
Index: datatype/mp4/fileformat/pub/qttrkmgr.h
===================================================================
RCS file: /cvsroot/datatype/mp4/fileformat/pub/qttrkmgr.h,v
retrieving revision 1.16
diff -u -w -r1.16 qttrkmgr.h
--- datatype/mp4/fileformat/pub/qttrkmgr.h	6 Jan 2010 16:17:16 -0000	1.16
+++ datatype/mp4/fileformat/pub/qttrkmgr.h	20 Jan 2010 22:38:51 -0000
@@ -159,6 +159,8 @@
 
     QT_FTYPE GetFType(void)	{ return m_FType; }
     HX_RESULT GetMajorBrand(UINT32* pulMajorBrand);
+    HX_RESULT GetCompatibleBrand(UINT32* pulBrand);
+
     QT_ETYPE GetEType(void)	{ return m_EType; }
     void SetEType(QT_ETYPE eEType)  { m_EType = eEType; }
     HXBOOL IsHintsEnabled(void)	{ return m_bHintTracksActive; }
@@ -251,6 +253,7 @@
     HXBOOL m_bHintTracksActive;
     QT_FTYPE m_FType;
     QT_ETYPE m_EType;
+    UINT32 m_ulCompatibleBrand;
 
     HXBOOL m_bInitialSubscriptionWindowClosed;
 
From ehyche at real.com  Wed Jan 20 17:42:59 2010
From: ehyche at real.com (Eric Hyche)
Date: Thu Jan 21 01:05:18 2010
Subject: [datatype-dev] CR: PR 253132/250412 3gr6 branded files refused
In-Reply-To: <4B57806B.9070701@real.com>
References: <4B57806B.9070701@real.com>
Message-ID: 

I can't tell from the diff - is there code for enumerating the compatible brands? That might be useful.
Rest looks good.

Eric

On Jan 20, 2010, at 5:15 PM, Jamie Gordon wrote:

> Synopsis
> ========
> Fixes PRs 253132 and 250412 (and other unreported bugs) regarding
> weird handling of ftyp.
> 
> Branches: SERVER_14_0, HEAD (SERVER_CURRENT)
> Suggested Reviewer: anyone
> 
> 
> Description
> ===========
> There is some very incorrect code attempting to reject unsupported
> MP4 content with unsupported ftyp. It is incorrectly rejecting 3gr6
> (which is most certainly supported), rejecting unsupported major
> brands without bothering to check for a supported compatible brand,
> and not rejecting unrecognized unsupported brands. This is ripped out
> and replaced with a check of accepted supported brand (major brand if
> supported or first supported compatible brand) and error log and
> failure only in case of no supported compatible brand.
> 
> Additionally, any content with no supported brand found was being
> treated as QuickTime content. This is changed to default to MPEG4
> if an ftyp box is present, use QT if either ftyp is not present or
> ftyp indicates QT.
> 
> 
> Files Affected
> ==============
> datatype/mp4/fileformat/qtffplin.cpp
> datatype/mp4/fileformat/qttrkmgr.cpp
> datatype/mp4/fileformat/pub/qtatoms.h
> datatype/mp4/fileformat/pub/qttrkmgr.h
> 
> 
> Testing Performed
> =================
> Unit Tests:
> 
> Integration Tests:
> * Proper streaming of 3gr6
> * Proper streaming of 3gr9 with 3gr6 compatible brand
> * Proper error logged with no supported brand
> * Proper streaming of mov (no ftyp)
> 
> Leak Tests:
> 
> Performance Tests:
> 
> Platforms Tested: linux-rhel5-i686
> Build verified: linux-rhel5-i686
> 
> 
> QA Hints
> ===============
> 
> If there are other bugs I have not noticed with MP3/3GP/F4V/MOV content
> being refused, this might also fix those.
> 
> 
> 
> 
> 
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From jgordon at real.com  Wed Jan 20 18:10:36 2010
From: jgordon at real.com (Jamie Gordon)
Date: Thu Jan 21 01:32:53 2010
Subject: [datatype-dev] CR: PR 253132/250412 3gr6 branded files refused
In-Reply-To: 
References: <4B57806B.9070701@real.com>
	
Message-ID: <4B57B79C.4050808@real.com>

I'm not positive I understand your question, do you mean where it
goes through the compatible brands to find one that is supported,
or a method that allows it? Currently only the atom has all of them
and CQTTrackManager::HandleFType goes through major brand then
compatible brands until it finds one it knows. I just updated that
to store the type it chose (major brand if supported, or first listed
compatible brand that is supported) as the compatible brand we are
handling the file as. But I did not add anything to expose the list
to CQTTrackManager users, just the chosen one. :)

Thanks,
Jamie

On 1/20/2010 5:42 PM, Eric Hyche wrote:
> I can't tell from the diff - is there code for enumerating the compatible brands? That might be useful.
> Rest looks good.
> 
> Eric
> 
> On Jan 20, 2010, at 5:15 PM, Jamie Gordon wrote:
> 
>> Synopsis
>> ========
>> Fixes PRs 253132 and 250412 (and other unreported bugs) regarding
>> weird handling of ftyp.
>>
>> Branches: SERVER_14_0, HEAD (SERVER_CURRENT)
>> Suggested Reviewer: anyone
>>
>>
>> Description
>> ===========
>> There is some very incorrect code attempting to reject unsupported
>> MP4 content with unsupported ftyp. It is incorrectly rejecting 3gr6
>> (which is most certainly supported), rejecting unsupported major
>> brands without bothering to check for a supported compatible brand,
>> and not rejecting unrecognized unsupported brands. This is ripped out
>> and replaced with a check of accepted supported brand (major brand if
>> supported or first supported compatible brand) and error log and
>> failure only in case of no supported compatible brand.
>>
>> Additionally, any content with no supported brand found was being
>> treated as QuickTime content. This is changed to default to MPEG4
>> if an ftyp box is present, use QT if either ftyp is not present or
>> ftyp indicates QT.
>>
>>
>> Files Affected
>> ==============
>> datatype/mp4/fileformat/qtffplin.cpp
>> datatype/mp4/fileformat/qttrkmgr.cpp
>> datatype/mp4/fileformat/pub/qtatoms.h
>> datatype/mp4/fileformat/pub/qttrkmgr.h
>>
>>
>> Testing Performed
>> =================
>> Unit Tests:
>>
>> Integration Tests:
>> * Proper streaming of 3gr6
>> * Proper streaming of 3gr9 with 3gr6 compatible brand
>> * Proper error logged with no supported brand
>> * Proper streaming of mov (no ftyp)
>>
>> Leak Tests:
>>
>> Performance Tests:
>>
>> Platforms Tested: linux-rhel5-i686
>> Build verified: linux-rhel5-i686
>>
>>
>> QA Hints
>> ===============
>>
>> If there are other bugs I have not noticed with MP3/3GP/F4V/MOV content
>> being refused, this might also fix those.
>>
>>
>>
>>
>>
>> 
> 
> Eric Hyche (ehyche@real.com)
> Principal Engineer
> RealNetworks, Inc.
> 
> 

From jgordon at real.com  Wed Jan 20 18:23:49 2010
From: jgordon at real.com (Jamie Gordon)
Date: Thu Jan 21 01:46:11 2010
Subject: [datatype-dev] CR: PR 256515: single rate RM files are completely
	broken
Message-ID: <4B57BAB5.8010803@real.com>

Synopsis
========
Fixes PR 256515

Branches: SERVER_14_0, HEAD ?
Suggested Reviewer: anyone


Description
===========
The change to do a Stat on InitDone is screwing something up with the
call flow and state in the case of RM interleaved streams so that
CRIFFReader is reading from the completely wrong offset.

This backs out the Stat call. It will be backed out on SERVER_14_0
because it is causing too many issues and the issue it was fixing is not
relevant. If someone knows a correct fix this can be fixed properly on
the HEAD, otherwise I will back this out on the head too until it can be
fixed. I would imagine several client branches are also having this
issue and may want some sort of fix.

Files Affected
==============
datatype/common/util/riff.cpp


Testing Performed
=================
Unit Tests:

Integration Tests:
Streaming of rm single rate content
SLTA broadcasting of rm single rate content

Leak Tests:

Performance Tests:

Platforms Tested: linux-rhel5-i686
Build verified: linux-rhel5-i686


QA Hints
===============

Regress PR 256515






-------------- next part --------------
Index: datatype/common/util/riff.cpp
===================================================================
RCS file: /cvsroot/datatype/common/util/riff.cpp,v
retrieving revision 1.18
diff -u -w -r1.18 riff.cpp
--- datatype/common/util/riff.cpp	15 Jan 2010 03:17:28 -0000	1.18
+++ datatype/common/util/riff.cpp	21 Jan 2010 02:52:41 -0000
@@ -216,21 +216,14 @@
 
     m_bFileIsOpen = TRUE;
 
-    HX_RELEASE(m_pFileStatObj);
     if ( !m_pFileObject )
-    return HXR_UNEXPECTED;
-
-    HX_RESULT retVal = m_pFileObject->QueryInterface(IID_IHXFileStat, (void **) &m_pFileStatObj);    
-    if(SUCCEEDED(retVal)  && (m_pFileStatObj->Stat((IHXFileStatResponse *) this) == HXR_OK))
     {
-        return status;
+        return HXR_UNEXPECTED;
     }
-    else
-    {
+
     m_state = RS_GetFileTypePending;
     return m_pFileObject->Read(sizeof(UINT32) * 2);
 }
-}
 
 /////////////////////////////////////////////////////////////////////////
 //  Method:
@@ -252,8 +245,7 @@
         // actual duration for all streams using it.
         m_ulTotalFileSizeInBytes = ulSize;
     }
-    m_state = RS_GetFileTypePending;
-    return m_pFileObject->Read(sizeof(UINT32) * 2);	
+    return HXR_OK;
 }
 
 UINT32 CRIFFReader::GetTotalFileSize()
From ehyche at real.com  Wed Jan 20 18:25:14 2010
From: ehyche at real.com (Eric Hyche)
Date: Thu Jan 21 01:47:31 2010
Subject: [datatype-dev] CR: PR 253132/250412 3gr6 branded files refused
In-Reply-To: <4B57B79C.4050808@real.com>
References: <4B57806B.9070701@real.com>
	
	<4B57B79C.4050808@real.com>
Message-ID: <85A34894-962F-4B8A-A022-9A13369B9608@real.com>

Ok - I understand - m_ulCompatibleBrand is just the first brand in the
list that is found to be compatible. Never mind my comment.

Change looks good to me.

Eric

On Jan 20, 2010, at 9:10 PM, Jamie Gordon wrote:

> I'm not positive I understand your question, do you mean where it
> goes through the compatible brands to find one that is supported,
> or a method that allows it? Currently only the atom has all of them
> and CQTTrackManager::HandleFType goes through major brand then
> compatible brands until it finds one it knows. I just updated that
> to store the type it chose (major brand if supported, or first listed
> compatible brand that is supported) as the compatible brand we are
> handling the file as. But I did not add anything to expose the list
> to CQTTrackManager users, just the chosen one. :)
> 
> Thanks,
> Jamie
> 
> On 1/20/2010 5:42 PM, Eric Hyche wrote:
>> I can't tell from the diff - is there code for enumerating the compatible brands? That might be useful.
>> Rest looks good.
>> 
>> Eric
>> 
>> On Jan 20, 2010, at 5:15 PM, Jamie Gordon wrote:
>> 
>>> Synopsis
>>> ========
>>> Fixes PRs 253132 and 250412 (and other unreported bugs) regarding
>>> weird handling of ftyp.
>>> 
>>> Branches: SERVER_14_0, HEAD (SERVER_CURRENT)
>>> Suggested Reviewer: anyone
>>> 
>>> 
>>> Description
>>> ===========
>>> There is some very incorrect code attempting to reject unsupported
>>> MP4 content with unsupported ftyp. It is incorrectly rejecting 3gr6
>>> (which is most certainly supported), rejecting unsupported major
>>> brands without bothering to check for a supported compatible brand,
>>> and not rejecting unrecognized unsupported brands. This is ripped out
>>> and replaced with a check of accepted supported brand (major brand if
>>> supported or first supported compatible brand) and error log and
>>> failure only in case of no supported compatible brand.
>>> 
>>> Additionally, any content with no supported brand found was being
>>> treated as QuickTime content. This is changed to default to MPEG4
>>> if an ftyp box is present, use QT if either ftyp is not present or
>>> ftyp indicates QT.
>>> 
>>> 
>>> Files Affected
>>> ==============
>>> datatype/mp4/fileformat/qtffplin.cpp
>>> datatype/mp4/fileformat/qttrkmgr.cpp
>>> datatype/mp4/fileformat/pub/qtatoms.h
>>> datatype/mp4/fileformat/pub/qttrkmgr.h
>>> 
>>> 
>>> Testing Performed
>>> =================
>>> Unit Tests:
>>> 
>>> Integration Tests:
>>> * Proper streaming of 3gr6
>>> * Proper streaming of 3gr9 with 3gr6 compatible brand
>>> * Proper error logged with no supported brand
>>> * Proper streaming of mov (no ftyp)
>>> 
>>> Leak Tests:
>>> 
>>> Performance Tests:
>>> 
>>> Platforms Tested: linux-rhel5-i686
>>> Build verified: linux-rhel5-i686
>>> 
>>> 
>>> QA Hints
>>> ===============
>>> 
>>> If there are other bugs I have not noticed with MP3/3GP/F4V/MOV content
>>> being refused, this might also fix those.
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>> 
>> Eric Hyche (ehyche@real.com)
>> Principal Engineer
>> RealNetworks, Inc.
>> 
>> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From jgordon at real.com  Wed Jan 20 21:09:52 2010
From: jgordon at real.com (Jamie Gordon)
Date: Thu Jan 21 04:32:13 2010
Subject: [datatype-dev] CR: PR 253132/250412 3gr6 branded files refused
In-Reply-To: <85A34894-962F-4B8A-A022-9A13369B9608@real.com>
References: <4B57806B.9070701@real.com>
	
	<4B57B79C.4050808@real.com>
	<85A34894-962F-4B8A-A022-9A13369B9608@real.com>
Message-ID: <4B57E1A0.9010100@real.com>

Thanks Eric!
This is checked in to SERVER_14_0 and HEAD.

On 1/20/2010 6:25 PM, Eric Hyche wrote:
> Ok - I understand - m_ulCompatibleBrand is just the first brand in the
> list that is found to be compatible. Never mind my comment.
> 
> Change looks good to me.
> 
> Eric
> 
> On Jan 20, 2010, at 9:10 PM, Jamie Gordon wrote:
> 
>> I'm not positive I understand your question, do you mean where it
>> goes through the compatible brands to find one that is supported,
>> or a method that allows it? Currently only the atom has all of them
>> and CQTTrackManager::HandleFType goes through major brand then
>> compatible brands until it finds one it knows. I just updated that
>> to store the type it chose (major brand if supported, or first listed
>> compatible brand that is supported) as the compatible brand we are
>> handling the file as. But I did not add anything to expose the list
>> to CQTTrackManager users, just the chosen one. :)
>>
>> Thanks,
>> Jamie
>>
>> On 1/20/2010 5:42 PM, Eric Hyche wrote:
>>> I can't tell from the diff - is there code for enumerating the compatible brands? That might be useful.
>>> Rest looks good.
>>>
>>> Eric
>>>
>>> On Jan 20, 2010, at 5:15 PM, Jamie Gordon wrote:
>>>
>>>> Synopsis
>>>> ========
>>>> Fixes PRs 253132 and 250412 (and other unreported bugs) regarding
>>>> weird handling of ftyp.
>>>>
>>>> Branches: SERVER_14_0, HEAD (SERVER_CURRENT)
>>>> Suggested Reviewer: anyone
>>>>
>>>>
>>>> Description
>>>> ===========
>>>> There is some very incorrect code attempting to reject unsupported
>>>> MP4 content with unsupported ftyp. It is incorrectly rejecting 3gr6
>>>> (which is most certainly supported), rejecting unsupported major
>>>> brands without bothering to check for a supported compatible brand,
>>>> and not rejecting unrecognized unsupported brands. This is ripped out
>>>> and replaced with a check of accepted supported brand (major brand if
>>>> supported or first supported compatible brand) and error log and
>>>> failure only in case of no supported compatible brand.
>>>>
>>>> Additionally, any content with no supported brand found was being
>>>> treated as QuickTime content. This is changed to default to MPEG4
>>>> if an ftyp box is present, use QT if either ftyp is not present or
>>>> ftyp indicates QT.
>>>>
>>>>
>>>> Files Affected
>>>> ==============
>>>> datatype/mp4/fileformat/qtffplin.cpp
>>>> datatype/mp4/fileformat/qttrkmgr.cpp
>>>> datatype/mp4/fileformat/pub/qtatoms.h
>>>> datatype/mp4/fileformat/pub/qttrkmgr.h
>>>>
>>>>
>>>> Testing Performed
>>>> =================
>>>> Unit Tests:
>>>>
>>>> Integration Tests:
>>>> * Proper streaming of 3gr6
>>>> * Proper streaming of 3gr9 with 3gr6 compatible brand
>>>> * Proper error logged with no supported brand
>>>> * Proper streaming of mov (no ftyp)
>>>>
>>>> Leak Tests:
>>>>
>>>> Performance Tests:
>>>>
>>>> Platforms Tested: linux-rhel5-i686
>>>> Build verified: linux-rhel5-i686
>>>>
>>>>
>>>> QA Hints
>>>> ===============
>>>>
>>>> If there are other bugs I have not noticed with MP3/3GP/F4V/MOV content
>>>> being refused, this might also fix those.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> 
>>> Eric Hyche (ehyche@real.com)
>>> Principal Engineer
>>> RealNetworks, Inc.
>>>
>>>
> 
> Eric Hyche (ehyche@real.com)
> Principal Engineer
> RealNetworks, Inc.
> 
> 

From gahluwalia at real.com  Wed Jan 20 23:13:33 2010
From: gahluwalia at real.com (Gurpreet)
Date: Thu Jan 21 06:35:52 2010
Subject: [datatype-dev] CN: Fix for Bug 9857 no audio after seeking
	a	particular amr file
In-Reply-To: <27279474-BBAD-4BF9-B6CA-7F158AB8B34E@real.com>
References: <4B56EF28.90502@real.com>
	<27279474-BBAD-4BF9-B6CA-7F158AB8B34E@real.com>
Message-ID: <4B57FE9D.4000208@real.com>

Thanks Eric,
I have made changes as per your suggestions.
 STDMETHODIMP CHXAMRPayloadFormatPacketizer::SetPacket(IHXPacket* pPacket)
 {
+    HX_RESULT retVal = HXR_FAIL;
     // Process this input packet into output queue packets.
     // We could have done this either in SetPacket() or GetPacket(),
     // but we choose to do it here. We don't force flushing yet,
     // since we may get more data. Once we get a call to flush,
     // then we process all the input, regardless of min size.
-    ProcessInputPacket(pPacket, m_bFlush, m_ulMinPacketSize,
-                       m_ulPacketBytesConsumed, m_ulDurationConsumed);
-
-    return HXR_OK;
+    if(ProcessInputPacket(pPacket, m_bFlush, m_ulMinPacketSize,
+                       m_ulPacketBytesConsumed, m_ulDurationConsumed))
+    {
+        retVal = HXR_OK;
+    }
+    return retVal;
 }

This is now checked into atlas 361

Gurpreet

Eric Hyche wrote:
> Minor point, but I think it's good coding practice to minimize the number of exit points from functions - preferably keeping it at a single exit point if possible. Can you please re-write the change in hxamrpack.cpp so that it doesn't introduce another exit point?
>
> Thanks,
>
> Eric
>
> On Jan 20, 2010, at 6:55 AM, Gurpreet wrote:
>
>   
>> Synopsis:
>> Fix for Bug 9857  no audio after seeking a particular amr file
>>
>> Overview:
>> This particular amr file is corrupt, earlier we were not checking the 
>> frame start header and start to parse the frame
>> But end up with garbage audio data.
>> After seek we first check the frame start header and then start to parse 
>> packet but fails to find a good frame in this file.
>> Now we check frame start header for all and error out in case we fail to 
>> find it.
>>
>> Files Modified:
>> datatype/amr/fileformat/amrff.cpp
>> datatype/mp4/payload/hxamrpack.cpp
>>
>> Image Size and Heap Use impact (Client -Only):
>> None
>>
>> Platforms and Profiles Build Verified:
>> BIF branch            -> atlas 361
>> Target(s)                -> android_all
>> Profile                    -> helix-client-android-surf_8x50
>> SYSTEM_ID        -> android-donut-arm.eabi
>>
>> Files Attached::
>> amrff.diff
>> mp4payload.diff
>>
>> Thanks & Best Regards,
>> Gurpreet
>> 
>>     
>
> Eric Hyche (ehyche@real.com)
> Principal Engineer
> RealNetworks, Inc.
>
>
>
>   



From ext-shashi.merapala at nokia.com  Thu Jan 21 01:27:47 2010
From: ext-shashi.merapala at nokia.com (ext-shashi.merapala@nokia.com)
Date: Thu Jan 21 08:52:01 2010
Subject: [datatype-dev] RE: RESEND CR: ESLM-7YHD9L - Helix_wmv controller:
 Conflict between
 the list from SupportsMimeType and actually video type (mp4) for video
 playback
In-Reply-To: <61C65E33-DDBD-4A3D-9E04-C5B252B51331@real.com>
References: 
	<5701CE13-A77B-45A7-A614-3470F2637C85@real.com>
	
	<61C65E33-DDBD-4A3D-9E04-C5B252B51331@real.com>
Message-ID: 

Thanks Eric. Checked into HEAD & 420Brizo.

Thanks & Warm Regards,
Shashi Kiran Merapala

-----Original Message-----
From: ext Eric Hyche [mailto:ehyche@real.com] 
Sent: Tuesday, January 19, 2010 8:24 PM
To: Merapala Shashi (EXT-Sasken/Bangalore)
Cc: client-dev@helixcommunity.org; common-dev@helixcommunity.org; clientapps-dev@helixcommunity.org; datatype-dev@helixcommunity.org; nokia-private-dev@helixcommunity.org
Subject: Re: RESEND CR: ESLM-7YHD9L - Helix_wmv controller: Conflict between the list from SupportsMimeType and actually video type (mp4) for video playback

Looks ok to me.


On Jan 18, 2010, at 9:00 AM,  wrote:

> Hi Eric,
>  
> The following files in 420Brizo and HEAD require similar changes as was applied to 'installMMF.pcf' previously -
> \clientapps\symbianMmf\videocontroller\ng_installMMF.pcf
> \clientapps\symbianMmf\audiocontroller\ng_installMMF.pcf
>  
> Attached are the diffs for the same. Since CVS appears to be down, I have attached the diffs from the recently downloaded files. Kindly review.  
>  
> "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:  ext-shashi.merapala@nokia.com
>  
> Reviewed by:  ashish.as.gupta@nokia.com
>  
> Date:  01/18/2010
>  
> Project:  SymbianMmf_wm
>  
> Error Id:  ESLM-7YHD9L
>  
> Synopsis:  Helix_wmv controller: Conflict between the list from SupportsMimeType and actually video type (mp4) for video playback
>  
> Overview:  The WMV Extension Controller needs to be rolled up into the rest of Helix so that the Helix audio/video controllers support the Windows Media content.
>            
> Solution:  Diffs attached
>  
> Files removed:  The folder 'wmvextcontroller' and its contents are removed from \clientapps\symbianMmf\
>  
> Files added:  None
>  
> Files modified:  \client\build\BIF\hxclient_2_1_0_cayennes.bif
>                  \client\build\BIF\hxclient_4_2_0_brizo.bif
>                  \common\build\BIF\helix.bif
>                  \clientapps\symbianMmf\videocontroller\installMMF.pcf
>                  \clientapps\symbianMmf\videocontroller\MmfSis
>                  \clientapps\symbianMmf\audiocontroller\installMMF.pcf
>                  \clientapps\symbianMmf\audiocontroller\controllersis  
>                  \clientapps\symbianMmf\videocontroller\101F8513.rss
>                  \clientapps\symbianMmf\audiocontroller\10207B64.rss
>                  \datatype\tools\metadataeng\engine\platform\symbian\hxmetadata_dlls.txt
>                  \clientapps\symbianMmf\videocontroller\ng_installMMF.pcf
>                  \clientapps\symbianMmf\audiocontroller\ng_installMMF.pcf
>                           
> Image size and heap use impact:  Approx. 289 kb of space saved on image creation
>  
> Module release testing (STIF):  Passed
>  
> Test case(s) added:  No
>  
> Memory leak check performed:  Yes. No new leaks introduced
>  
> Platforms and profiles build verified:  helix-client-s60-52-mmf-mdf-dsp
>  
> Platforms and profiles functionality verified:  armv5, winscw
>  
> Branch:  210CayS, HEAD, 420Brizo
>  
>  
> -----Original Message-----
> From: Merapala Shashi (EXT-Sasken/Bangalore) 
> Sent: Friday, January 15, 2010 5:26 PM
> To: 'ext Eric Hyche'
> Cc: client-dev@helixcommunity.org; common-dev@helixcommunity.org; clientapps-dev@helixcommunity.org; datatype-dev@helixcommunity.org; nokia-private-dev@helixcommunity.org
> Subject: RE: [Nokia-private-dev] RESEND CR: ESLM-7YHD9L - Helix_wmv controller: Conflict between the list from SupportsMimeType and actually video type (mp4) for video playback
>  
> Thanks Eric. Checked into 210CayS, HEAD & 420Brizo.
>  
> Thanks & Warm Regards,
> Shashi Kiran Merapala
>  
>  
> -----Original Message-----
> From: ext Eric Hyche [mailto:ehyche@real.com]
> Sent: Tuesday, January 12, 2010 8:47 PM
> To: Merapala Shashi (EXT-Sasken/Bangalore)
> Cc: client-dev@helixcommunity.org; common-dev@helixcommunity.org; clientapps-dev@helixcommunity.org; datatype-dev@helixcommunity.org; nokia-private-dev@helixcommunity.org
> Subject: Re: [Nokia-private-dev] RESEND CR: ESLM-7YHD9L - Helix_wmv controller: Conflict between the list from SupportsMimeType and actually video type (mp4) for video playback
>  
> Looks good to me.
>  
> On Jan 12, 2010, at 7:27 AM,   wrote:
>  
> > Sending the CR again with updated diffs. This time the diffs of hxclient_4_2_0_brizo.bif and helix.bif have also been attached (which I had missed previously).
> > 
> > "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:  ext-shashi.merapala@nokia.com
> > 
> > Reviewed by:  ashish.as.gupta@nokia.com
> > 
> > Date:  01/12/2010
> > 
> > Project:  SymbianMmf_wm
> > 
> > Error Id:  ESLM-7YHD9L
> > 
> > Synopsis:  Helix_wmv controller: Conflict between the list from SupportsMimeType and actually video type (mp4) for video playback
> > 
> > Overview:  The WMV Extension Controller needs to be rolled up into the rest of Helix so that the Helix audio/video controllers support the Windows Media content.
> >           
> > Solution:  Diffs attached
> > 
> > Files removed:  The folder 'wmvextcontroller' and its contents are removed from \clientapps\symbianMmf\
> > 
> > Files added:  None
> > 
> > Files modified:  \client\build\BIF\hxclient_2_1_0_cayennes.bif
> >                  \client\build\BIF\hxclient_4_2_0_brizo.bif
> >                  \common\build\BIF\helix.bif
> >                  \clientapps\symbianMmf\videocontroller\installMMF.pcf
> >                  \clientapps\symbianMmf\videocontroller\MmfSis
> >                  \clientapps\symbianMmf\audiocontroller\installMMF.pcf
> >                  \clientapps\symbianMmf\audiocontroller\controllersis  
> >                  \clientapps\symbianMmf\videocontroller\101F8513.rss
> >                  \clientapps\symbianMmf\audiocontroller\10207B64.rss
> >                  \datatype\tools\metadataeng\engine\platform\symbian\hxmetadata_dlls.txt
> >                           
> > Image size and heap use impact:  Approx. 289 kb of space saved on image creation
> > 
> > Module release testing (STIF):  Passed
> > 
> > Test case(s) added:  No
> > 
> > Memory leak check performed:  Yes. No new leaks introduced
> > 
> > Platforms and profiles build verified:  helix-client-s60-52-mmf-mdf-dsp
> > 
> > Platforms and profiles functionality verified:  armv5, winscw
> > 
> > Branch:  210CayS, HEAD, 420Brizo
> > 
> > 
> > 
> > 
>  
> Eric Hyche (ehyche@real.com)
> Principal Engineer
> RealNetworks, Inc.
>  
>  
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From sgarg at real.com  Thu Jan 21 01:31:09 2010
From: sgarg at real.com ( Sushant Garg)
Date: Thu Jan 21 08:53:26 2010
Subject: [datatype-dev] CR: Partial fix for bug 9771: Memory leak
	encountered while playing video using Real Player version: 307.
Message-ID: <008401ca9a7c$78fdc680$8001a8c0@adroit02a604c1>

Project: RealPlayer for Netbook

Synopsis:

Partial fix for bug 9771: Memory leak encountered while playing video using Real Player version: 307.

 

Overview:

Fixing some of memory leaks

 

Files Modified:


/cvsroot/xiph/vorbisrend/rvorbis.cpp

 

Files Added: 

None

 

Platforms and Profiles Affected:
Linux

Distribution Libraries Affected:
None.

Platforms and Profiles Build Verified:
Bif: realplay_gtk_atlas_restricted_gold_1.1
Profile: helix-client-moblin
Target: player_all

Branch:
Atlas347, Atlas310, Atlas3_4_10

 

 

Index: rvorbis.cpp
===================================================================
RCS file: /cvsroot/xiph/vorbisrend/rvorbis.cpp,v
retrieving revision 1.18.10.1.4.1
diff -u -r1.18.10.1.4.1 rvorbis.cpp
--- rvorbis.cpp 1 Dec 2009 03:02:37 -0000 1.18.10.1.4.1
+++ rvorbis.cpp 20 Jan 2010 12:24:57 -0000
@@ -955,6 +955,7 @@
         HX_RELEASE(pHlpr);
     }
 
+   HX_VECTOR_DELETE(m_pStreamMimeTypes);
     HX_DELETE(m_pDepack);
 }



 

Thanks & Regards
Sushant Garg
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100121/633d2b59/attachment.html
From ehyche at real.com  Thu Jan 21 06:21:49 2010
From: ehyche at real.com (Eric Hyche)
Date: Thu Jan 21 13:44:04 2010
Subject: [datatype-dev] CR: PR 256515: single rate RM files are
	completely	broken
In-Reply-To: <4B57BAB5.8010803@real.com>
References: <4B57BAB5.8010803@real.com>
Message-ID: 

What is the problem with the StatDone? I reviewed this CR, and it looked like all it did was do a stat in CRIFFReader::Init() before calling CRIFFReaderResponse::InitDone(). I agree it's not relevant to the server, but it seemed like a pretty useful thing for the CRIFFReader to know the file length.

Eric

On Jan 20, 2010, at 9:23 PM, Jamie Gordon wrote:

> Synopsis
> ========
> Fixes PR 256515
> 
> Branches: SERVER_14_0, HEAD ?
> Suggested Reviewer: anyone
> 
> 
> Description
> ===========
> The change to do a Stat on InitDone is screwing something up with the
> call flow and state in the case of RM interleaved streams so that
> CRIFFReader is reading from the completely wrong offset.
> 
> This backs out the Stat call. It will be backed out on SERVER_14_0
> because it is causing too many issues and the issue it was fixing is not
> relevant. If someone knows a correct fix this can be fixed properly on
> the HEAD, otherwise I will back this out on the head too until it can be
> fixed. I would imagine several client branches are also having this
> issue and may want some sort of fix.
> 
> Files Affected
> ==============
> datatype/common/util/riff.cpp
> 
> 
> Testing Performed
> =================
> Unit Tests:
> 
> Integration Tests:
> Streaming of rm single rate content
> SLTA broadcasting of rm single rate content
> 
> Leak Tests:
> 
> Performance Tests:
> 
> Platforms Tested: linux-rhel5-i686
> Build verified: linux-rhel5-i686
> 
> 
> QA Hints
> ===============
> 
> Regress PR 256515
> 
> 
> 
> 
> 
> 
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From ehyche at real.com  Thu Jan 21 06:51:15 2010
From: ehyche at real.com (Eric Hyche)
Date: Thu Jan 21 14:13:26 2010
Subject: [datatype-dev] CR: Partial fix for bug 9771: Memory leak
	encountered while playing video using Real Player version: 307.
In-Reply-To: <008401ca9a7c$78fdc680$8001a8c0@adroit02a604c1>
References: <008401ca9a7c$78fdc680$8001a8c0@adroit02a604c1>
Message-ID: 

Looks good.

On Jan 21, 2010, at 4:31 AM, Sushant Garg wrote:

> Project: RealPlayer for Netbook
> 
> Synopsis:
> Partial fix for bug 9771: Memory leak encountered while playing video using Real Player version: 307.
>  
> Overview:
> Fixing some of memory leaks
>  
> Files Modified:
> /cvsroot/xiph/vorbisrend/rvorbis.cpp
>  
> Files Added: 
> None
>  
> Platforms and Profiles Affected:
> Linux
> 
> Distribution Libraries Affected:
> None.
> 
> Platforms and Profiles Build Verified:
> Bif: realplay_gtk_atlas_restricted_gold_1.1
> Profile: helix-client-moblin
> Target: player_all
> 
> Branch:
> Atlas347, Atlas310, Atlas3_4_10
>  
>  
> Index: rvorbis.cpp
> ===================================================================
> RCS file: /cvsroot/xiph/vorbisrend/rvorbis.cpp,v
> retrieving revision 1.18.10.1.4.1
> diff -u -r1.18.10.1.4.1 rvorbis.cpp
> --- rvorbis.cpp 1 Dec 2009 03:02:37 -0000 1.18.10.1.4.1
> +++ rvorbis.cpp 20 Jan 2010 12:24:57 -0000
> @@ -955,6 +955,7 @@
>          HX_RELEASE(pHlpr);
>      }
>  
> +   HX_VECTOR_DELETE(m_pStreamMimeTypes);
>      HX_DELETE(m_pDepack);
>  }
>  
>  
> Thanks & Regards
> Sushant Garg
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From jgordon at real.com  Thu Jan 21 11:13:31 2010
From: jgordon at real.com (Jamie Gordon)
Date: Thu Jan 21 18:35:41 2010
Subject: [datatype-dev] CR: PR 256515: single rate RM files are completely
	broken
In-Reply-To: 
References: <4B57BAB5.8010803@real.com>
	
Message-ID: <4B58A75B.9030108@real.com>

On 1/21/2010 6:21 AM, Eric Hyche wrote:
> What is the problem with the StatDone? I reviewed this CR, and it looked like all it did was do a stat in CRIFFReader::Init() before calling CRIFFReaderResponse::InitDone(). I agree it's not relevant to the server, but it seemed like a pretty useful thing for the CRIFFReader to know the file length.
> 
> Eric
> 
Yeah, the implementation looks fine and I haven't quite figured out
what is happening differently or where the final fix belongs. But
somehow the call flow is different enough that CRIFFReader::Open
is called and with the Stat/StatDone going on, it eventually calls
back into the caller with the header for the media data when the caller
was expecting the file header.

It is likely that ultimately this code is fine and the rmff needs to be
fixed on the HEAD, etc. to work with the RIFFreader change. But in the
meanwhile the consequences are quite bad, definitely for SERVER_14_0 we
don't care about the WAV file issue it was fixing anyway so I am
definitely leaning toward pulling the Stat out on the branch.

-j

> On Jan 20, 2010, at 9:23 PM, Jamie Gordon wrote:
> 
>> Synopsis
>> ========
>> Fixes PR 256515
>>
>> Branches: SERVER_14_0, HEAD ?
>> Suggested Reviewer: anyone
>>
>>
>> Description
>> ===========
>> The change to do a Stat on InitDone is screwing something up with the
>> call flow and state in the case of RM interleaved streams so that
>> CRIFFReader is reading from the completely wrong offset.
>>
>> This backs out the Stat call. It will be backed out on SERVER_14_0
>> because it is causing too many issues and the issue it was fixing is not
>> relevant. If someone knows a correct fix this can be fixed properly on
>> the HEAD, otherwise I will back this out on the head too until it can be
>> fixed. I would imagine several client branches are also having this
>> issue and may want some sort of fix.
>>
>> Files Affected
>> ==============
>> datatype/common/util/riff.cpp
>>
>>
>> Testing Performed
>> =================
>> Unit Tests:
>>
>> Integration Tests:
>> Streaming of rm single rate content
>> SLTA broadcasting of rm single rate content
>>
>> Leak Tests:
>>
>> Performance Tests:
>>
>> Platforms Tested: linux-rhel5-i686
>> Build verified: linux-rhel5-i686
>>
>>
>> QA Hints
>> ===============
>>
>> Regress PR 256515
>>
>>
>>
>>
>>
>>
>> 
> 
> Eric Hyche (ehyche@real.com)
> Principal Engineer
> RealNetworks, Inc.
> 
> 

From ehyche at real.com  Thu Jan 21 11:27:31 2010
From: ehyche at real.com (Eric Hyche)
Date: Thu Jan 21 18:50:00 2010
Subject: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for
	capturing thumbnail of a broken rmvb file
In-Reply-To: <7ECCEA249B7CDC49A079EC0075E999AA07D8EB96A3@SEAMBX.corp.real.com>
References: <7ECCEA249B7CDC49A079EC0075E999AA07D8EB96A3@SEAMBX.corp.real.com>
Message-ID: <7ECCEA249B7CDC49A079EC0075E999AA07D84D870D@SEAMBX.corp.real.com>

I don't think the seek should fail if you try to seek past the end of the file. I think it should just seek to the end of the file and return success.

Eric

Eric Hyche
Principal Engineer, RealNetworks
ehyche@real.com
________________________________________
From: Chintan Daiya
Sent: Thursday, January 21, 2010 2:24 PM
To: Eric Hyche
Cc: Umakant Gundeli
Subject: FW: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file

Hi Eric,

Can you please review this CR for us today - we need to get this fix checked in by end of day for a partner release scheduled for tomorrow.

Thanks,
Chintan

-----Original Message-----
From: datatype-dev-bounces@helixcommunity.org [mailto:datatype-dev-bounces@helixcommunity.org] On Behalf Of Umakant Gundeli
Sent: Tuesday, January 19, 2010 4:26 PM
To: datatype-dev@helixcommunity.org
Subject: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file

Project: Real Player for Android

Synopsis: Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file.

Overview:

This bug was due to capturing thumbnail of a corrupted/broken RMVB file. In this given broken/corrupted RMVB file, The duration given in file header is around 111 minutes, whereas the actual clip is only around 7minutes. At some point in execution, the riff reader tries to seek to an offset (to around 111 minutes) which is way outside the file size limits and after this ->Seek() call, it takes about 24 seconds to return the control back to ::RIFFSeekDone() method.

To fix this bug, I added a check to make sure that desired seek offset falls within the file size limits. if desired seek offset is outside file size limits, we simply call RIFFSeekDone(HXR_FAILED).

 Files Added: None

 Files Modified:
 datatype/common/util/riff.cpp

 Platforms and Profiles Build and Functionality Verified:
 Platform: android-donut-arm.eabi
 Profile: helix-client-android
 target(s): android_all

 Branch: hxclient_3_6_1_atlas_restricted

DIFF:

Index: riff.cpp
===================================================================
RCS file: /cvsroot/datatype/common/util/riff.cpp,v
retrieving revision 1.12.16.2.28.1
diff -u -b -B -r1.12.16.2.28.1 riff.cpp
--- riff.cpp    23 Dec 2009 05:32:18 -0000      1.12.16.2.28.1
+++ riff.cpp    20 Jan 2010 00:56:28 -0000
@@ -734,7 +734,14 @@
 {
     m_ulSeekOffset = offset;
     m_state = RS_UserSeekPending;
+    if(m_ulSeekOffset <= m_TotalFileSize)
+    {
         return m_pFileObject->Seek(m_ulSeekOffset, FALSE);
+    }
+    else
+    {
+        return m_pResponse->RIFFSeekDone(HXR_FAILED);
+    }
 }


thanks,
-Umakant.
_______________________________________________
Datatype-dev mailing list
Datatype-dev@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/datatype-dev
From ehyche at real.com  Thu Jan 21 12:20:43 2010
From: ehyche at real.com (Eric Hyche)
Date: Thu Jan 21 19:54:39 2010
Subject: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for
	capturing thumbnail of a broken rmvb file
In-Reply-To: <766B5A29D28DA442AB229AAEE2AFC44507D79E635D@SEAMBX.corp.real.com>
References: <7ECCEA249B7CDC49A079EC0075E999AA07D8EB96A3@SEAMBX.corp.real.com>,
	<7ECCEA249B7CDC49A079EC0075E999AA07D84D870D@SEAMBX.corp.real.com>,
	<766B5A29D28DA442AB229AAEE2AFC44507D79E635D@SEAMBX.corp.real.com>
Message-ID: <7ECCEA249B7CDC49A079EC0075E999AA07D84D870F@SEAMBX.corp.real.com>

But you know the size of the file, right? If so, then just cap any requests at the file size and seek to there. So you'll never actually be making a seek request that's longer than the file size.

Eric

Eric Hyche
Principal Engineer, RealNetworks
ehyche@real.com
________________________________________
From: Umakant Gundeli
Sent: Thursday, January 21, 2010 3:19 PM
To: Eric Hyche
Cc: datatype-dev@helixcommunity.org
Subject: RE: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file

Hi Eric,

I agree that the seek does not fail if we try to seek past the end of file, but on android for some unknown reason it takes too much time (~ 25 seconds) to return to SeekDone() when we try to seek past end of file. and thats why there is increase in the time (~25 seconds) to capture thumbnail of this corrupted rmvb file. With my proposed fix/patch, it is taking about 40 milliseconds.

If you are Ok, We can check in this fix to ONLY 361 atlas branch .i.e. just for this project.

thanks,
-Umakant.

________________________________________
From: Eric Hyche
Sent: Thursday, January 21, 2010 11:27 AM
To: Chintan Daiya
Cc: Umakant Gundeli; datatype-dev@helixcommunity.org
Subject: RE: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file

I don't think the seek should fail if you try to seek past the end of the file. I think it should just seek to the end of the file and return success.

Eric

Eric Hyche
Principal Engineer, RealNetworks
ehyche@real.com
________________________________________
From: Chintan Daiya
Sent: Thursday, January 21, 2010 2:24 PM
To: Eric Hyche
Cc: Umakant Gundeli
Subject: FW: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file

Hi Eric,

Can you please review this CR for us today - we need to get this fix checked in by end of day for a partner release scheduled for tomorrow.

Thanks,
Chintan

-----Original Message-----
From: datatype-dev-bounces@helixcommunity.org [mailto:datatype-dev-bounces@helixcommunity.org] On Behalf Of Umakant Gundeli
Sent: Tuesday, January 19, 2010 4:26 PM
To: datatype-dev@helixcommunity.org
Subject: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file

Project: Real Player for Android

Synopsis: Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file.

Overview:

This bug was due to capturing thumbnail of a corrupted/broken RMVB file. In this given broken/corrupted RMVB file, The duration given in file header is around 111 minutes, whereas the actual clip is only around 7minutes. At some point in execution, the riff reader tries to seek to an offset (to around 111 minutes) which is way outside the file size limits and after this ->Seek() call, it takes about 24 seconds to return the control back to ::RIFFSeekDone() method.

To fix this bug, I added a check to make sure that desired seek offset falls within the file size limits. if desired seek offset is outside file size limits, we simply call RIFFSeekDone(HXR_FAILED).

 Files Added: None

 Files Modified:
 datatype/common/util/riff.cpp

 Platforms and Profiles Build and Functionality Verified:
 Platform: android-donut-arm.eabi
 Profile: helix-client-android
 target(s): android_all

 Branch: hxclient_3_6_1_atlas_restricted

DIFF:

Index: riff.cpp
===================================================================
RCS file: /cvsroot/datatype/common/util/riff.cpp,v
retrieving revision 1.12.16.2.28.1
diff -u -b -B -r1.12.16.2.28.1 riff.cpp
--- riff.cpp    23 Dec 2009 05:32:18 -0000      1.12.16.2.28.1
+++ riff.cpp    20 Jan 2010 00:56:28 -0000
@@ -734,7 +734,14 @@
 {
     m_ulSeekOffset = offset;
     m_state = RS_UserSeekPending;
+    if(m_ulSeekOffset <= m_TotalFileSize)
+    {
         return m_pFileObject->Seek(m_ulSeekOffset, FALSE);
+    }
+    else
+    {
+        return m_pResponse->RIFFSeekDone(HXR_FAILED);
+    }
 }


thanks,
-Umakant.
_______________________________________________
Datatype-dev mailing list
Datatype-dev@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/datatype-dev
From ugundeli at real.com  Thu Jan 21 12:19:59 2010
From: ugundeli at real.com (Umakant Gundeli)
Date: Thu Jan 21 19:55:29 2010
Subject: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for
	capturing thumbnail of a broken rmvb file
In-Reply-To: <7ECCEA249B7CDC49A079EC0075E999AA07D84D870D@SEAMBX.corp.real.com>
References: <7ECCEA249B7CDC49A079EC0075E999AA07D8EB96A3@SEAMBX.corp.real.com>,
	<7ECCEA249B7CDC49A079EC0075E999AA07D84D870D@SEAMBX.corp.real.com>
Message-ID: <766B5A29D28DA442AB229AAEE2AFC44507D79E635D@SEAMBX.corp.real.com>

Hi Eric,

I agree that the seek does not fail if we try to seek past the end of file, but on android for some unknown reason it takes too much time (~ 25 seconds) to return to SeekDone() when we try to seek past end of file. and thats why there is increase in the time (~25 seconds) to capture thumbnail of this corrupted rmvb file. With my proposed fix/patch, it is taking about 40 milliseconds.

If you are Ok, We can check in this fix to ONLY 361 atlas branch .i.e. just for this project.

thanks,
-Umakant.

________________________________________
From: Eric Hyche
Sent: Thursday, January 21, 2010 11:27 AM
To: Chintan Daiya
Cc: Umakant Gundeli; datatype-dev@helixcommunity.org
Subject: RE: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file

I don't think the seek should fail if you try to seek past the end of the file. I think it should just seek to the end of the file and return success.

Eric

Eric Hyche
Principal Engineer, RealNetworks
ehyche@real.com
________________________________________
From: Chintan Daiya
Sent: Thursday, January 21, 2010 2:24 PM
To: Eric Hyche
Cc: Umakant Gundeli
Subject: FW: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file

Hi Eric,

Can you please review this CR for us today - we need to get this fix checked in by end of day for a partner release scheduled for tomorrow.

Thanks,
Chintan

-----Original Message-----
From: datatype-dev-bounces@helixcommunity.org [mailto:datatype-dev-bounces@helixcommunity.org] On Behalf Of Umakant Gundeli
Sent: Tuesday, January 19, 2010 4:26 PM
To: datatype-dev@helixcommunity.org
Subject: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file

Project: Real Player for Android

Synopsis: Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file.

Overview:

This bug was due to capturing thumbnail of a corrupted/broken RMVB file. In this given broken/corrupted RMVB file, The duration given in file header is around 111 minutes, whereas the actual clip is only around 7minutes. At some point in execution, the riff reader tries to seek to an offset (to around 111 minutes) which is way outside the file size limits and after this ->Seek() call, it takes about 24 seconds to return the control back to ::RIFFSeekDone() method.

To fix this bug, I added a check to make sure that desired seek offset falls within the file size limits. if desired seek offset is outside file size limits, we simply call RIFFSeekDone(HXR_FAILED).

 Files Added: None

 Files Modified:
 datatype/common/util/riff.cpp

 Platforms and Profiles Build and Functionality Verified:
 Platform: android-donut-arm.eabi
 Profile: helix-client-android
 target(s): android_all

 Branch: hxclient_3_6_1_atlas_restricted

DIFF:

Index: riff.cpp
===================================================================
RCS file: /cvsroot/datatype/common/util/riff.cpp,v
retrieving revision 1.12.16.2.28.1
diff -u -b -B -r1.12.16.2.28.1 riff.cpp
--- riff.cpp    23 Dec 2009 05:32:18 -0000      1.12.16.2.28.1
+++ riff.cpp    20 Jan 2010 00:56:28 -0000
@@ -734,7 +734,14 @@
 {
     m_ulSeekOffset = offset;
     m_state = RS_UserSeekPending;
+    if(m_ulSeekOffset <= m_TotalFileSize)
+    {
         return m_pFileObject->Seek(m_ulSeekOffset, FALSE);
+    }
+    else
+    {
+        return m_pResponse->RIFFSeekDone(HXR_FAILED);
+    }
 }


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

From ugundeli at real.com  Thu Jan 21 12:53:00 2010
From: ugundeli at real.com (Umakant Gundeli)
Date: Thu Jan 21 20:16:48 2010
Subject: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for
	capturing thumbnail of a broken rmvb file
In-Reply-To: <7ECCEA249B7CDC49A079EC0075E999AA07D84D870F@SEAMBX.corp.real.com>
References: <7ECCEA249B7CDC49A079EC0075E999AA07D8EB96A3@SEAMBX.corp.real.com>,
	<7ECCEA249B7CDC49A079EC0075E999AA07D84D870D@SEAMBX.corp.real.com>,
	<766B5A29D28DA442AB229AAEE2AFC44507D79E635D@SEAMBX.corp.real.com>,
	<7ECCEA249B7CDC49A079EC0075E999AA07D84D870F@SEAMBX.corp.real.com>
Message-ID: <766B5A29D28DA442AB229AAEE2AFC44507D79E635E@SEAMBX.corp.real.com>

Hi Eric,

thanks for review.

I modified the fix as per your suggestions. Please check the updated DIFF given below.

Index: riff.cpp
===================================================================
RCS file: /cvsroot/datatype/common/util/riff.cpp,v
retrieving revision 1.12.16.2.28.1
diff -u -b -B -r1.12.16.2.28.1 riff.cpp
--- riff.cpp	23 Dec 2009 05:32:18 -0000	1.12.16.2.28.1
+++ riff.cpp	21 Jan 2010 21:45:47 -0000
@@ -734,6 +734,10 @@
 {
     m_ulSeekOffset = offset;
     m_state = RS_UserSeekPending;
+    if(m_ulSeekOffset >= m_TotalFileSize && m_TotalFileSize != 0)
+    { 
+       m_ulSeekOffset = m_TotalFileSize;          
+    }
     return m_pFileObject->Seek(m_ulSeekOffset, FALSE);
 }

thanks,
-Umakant.

________________________________________
From: Eric Hyche
Sent: Thursday, January 21, 2010 12:20 PM
To: Umakant Gundeli
Cc: datatype-dev@helixcommunity.org
Subject: RE: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file

But you know the size of the file, right? If so, then just cap any requests at the file size and seek to there. So you'll never actually be making a seek request that's longer than the file size.

Eric

Eric Hyche
Principal Engineer, RealNetworks
ehyche@real.com
________________________________________
From: Umakant Gundeli
Sent: Thursday, January 21, 2010 3:19 PM
To: Eric Hyche
Cc: datatype-dev@helixcommunity.org
Subject: RE: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file

Hi Eric,

I agree that the seek does not fail if we try to seek past the end of file, but on android for some unknown reason it takes too much time (~ 25 seconds) to return to SeekDone() when we try to seek past end of file. and thats why there is increase in the time (~25 seconds) to capture thumbnail of this corrupted rmvb file. With my proposed fix/patch, it is taking about 40 milliseconds.

If you are Ok, We can check in this fix to ONLY 361 atlas branch .i.e. just for this project.

thanks,
-Umakant.

________________________________________
From: Eric Hyche
Sent: Thursday, January 21, 2010 11:27 AM
To: Chintan Daiya
Cc: Umakant Gundeli; datatype-dev@helixcommunity.org
Subject: RE: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file

I don't think the seek should fail if you try to seek past the end of the file. I think it should just seek to the end of the file and return success.

Eric

Eric Hyche
Principal Engineer, RealNetworks
ehyche@real.com
________________________________________
From: Chintan Daiya
Sent: Thursday, January 21, 2010 2:24 PM
To: Eric Hyche
Cc: Umakant Gundeli
Subject: FW: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file

Hi Eric,

Can you please review this CR for us today - we need to get this fix checked in by end of day for a partner release scheduled for tomorrow.

Thanks,
Chintan

-----Original Message-----
From: datatype-dev-bounces@helixcommunity.org [mailto:datatype-dev-bounces@helixcommunity.org] On Behalf Of Umakant Gundeli
Sent: Tuesday, January 19, 2010 4:26 PM
To: datatype-dev@helixcommunity.org
Subject: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file

Project: Real Player for Android

Synopsis: Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file.

Overview:

This bug was due to capturing thumbnail of a corrupted/broken RMVB file. In this given broken/corrupted RMVB file, The duration given in file header is around 111 minutes, whereas the actual clip is only around 7minutes. At some point in execution, the riff reader tries to seek to an offset (to around 111 minutes) which is way outside the file size limits and after this ->Seek() call, it takes about 24 seconds to return the control back to ::RIFFSeekDone() method.

To fix this bug, I added a check to make sure that desired seek offset falls within the file size limits. if desired seek offset is outside file size limits, we simply call RIFFSeekDone(HXR_FAILED).

 Files Added: None

 Files Modified:
 datatype/common/util/riff.cpp

 Platforms and Profiles Build and Functionality Verified:
 Platform: android-donut-arm.eabi
 Profile: helix-client-android
 target(s): android_all

 Branch: hxclient_3_6_1_atlas_restricted

DIFF:

Index: riff.cpp
===================================================================
RCS file: /cvsroot/datatype/common/util/riff.cpp,v
retrieving revision 1.12.16.2.28.1
diff -u -b -B -r1.12.16.2.28.1 riff.cpp
--- riff.cpp    23 Dec 2009 05:32:18 -0000      1.12.16.2.28.1
+++ riff.cpp    20 Jan 2010 00:56:28 -0000
@@ -734,7 +734,14 @@
 {
     m_ulSeekOffset = offset;
     m_state = RS_UserSeekPending;
+    if(m_ulSeekOffset <= m_TotalFileSize)
+    {
         return m_pFileObject->Seek(m_ulSeekOffset, FALSE);
+    }
+    else
+    {
+        return m_pResponse->RIFFSeekDone(HXR_FAILED);
+    }
 }


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

From ehyche at real.com  Thu Jan 21 12:57:06 2010
From: ehyche at real.com (Eric Hyche)
Date: Thu Jan 21 20:19:16 2010
Subject: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for
	capturing thumbnail of a broken rmvb file
In-Reply-To: <766B5A29D28DA442AB229AAEE2AFC44507D79E635E@SEAMBX.corp.real.com>
References: <7ECCEA249B7CDC49A079EC0075E999AA07D8EB96A3@SEAMBX.corp.real.com>,
	<7ECCEA249B7CDC49A079EC0075E999AA07D84D870D@SEAMBX.corp.real.com>,
	<766B5A29D28DA442AB229AAEE2AFC44507D79E635D@SEAMBX.corp.real.com>,
	<7ECCEA249B7CDC49A079EC0075E999AA07D84D870F@SEAMBX.corp.real.com>,
	<766B5A29D28DA442AB229AAEE2AFC44507D79E635E@SEAMBX.corp.real.com>
Message-ID: <7ECCEA249B7CDC49A079EC0075E999AA07D84D8713@SEAMBX.corp.real.com>

Looks good.

Eric Hyche
Principal Engineer, RealNetworks
ehyche@real.com
________________________________________
From: Umakant Gundeli
Sent: Thursday, January 21, 2010 3:53 PM
To: Eric Hyche
Cc: datatype-dev@helixcommunity.org
Subject: RE: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file

Hi Eric,

thanks for review.

I modified the fix as per your suggestions. Please check the updated DIFF given below.

Index: riff.cpp
===================================================================
RCS file: /cvsroot/datatype/common/util/riff.cpp,v
retrieving revision 1.12.16.2.28.1
diff -u -b -B -r1.12.16.2.28.1 riff.cpp
--- riff.cpp    23 Dec 2009 05:32:18 -0000      1.12.16.2.28.1
+++ riff.cpp    21 Jan 2010 21:45:47 -0000
@@ -734,6 +734,10 @@
 {
     m_ulSeekOffset = offset;
     m_state = RS_UserSeekPending;
+    if(m_ulSeekOffset >= m_TotalFileSize && m_TotalFileSize != 0)
+    {
+       m_ulSeekOffset = m_TotalFileSize;
+    }
     return m_pFileObject->Seek(m_ulSeekOffset, FALSE);
 }

thanks,
-Umakant.

________________________________________
From: Eric Hyche
Sent: Thursday, January 21, 2010 12:20 PM
To: Umakant Gundeli
Cc: datatype-dev@helixcommunity.org
Subject: RE: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file

But you know the size of the file, right? If so, then just cap any requests at the file size and seek to there. So you'll never actually be making a seek request that's longer than the file size.

Eric

Eric Hyche
Principal Engineer, RealNetworks
ehyche@real.com
________________________________________
From: Umakant Gundeli
Sent: Thursday, January 21, 2010 3:19 PM
To: Eric Hyche
Cc: datatype-dev@helixcommunity.org
Subject: RE: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file

Hi Eric,

I agree that the seek does not fail if we try to seek past the end of file, but on android for some unknown reason it takes too much time (~ 25 seconds) to return to SeekDone() when we try to seek past end of file. and thats why there is increase in the time (~25 seconds) to capture thumbnail of this corrupted rmvb file. With my proposed fix/patch, it is taking about 40 milliseconds.

If you are Ok, We can check in this fix to ONLY 361 atlas branch .i.e. just for this project.

thanks,
-Umakant.

________________________________________
From: Eric Hyche
Sent: Thursday, January 21, 2010 11:27 AM
To: Chintan Daiya
Cc: Umakant Gundeli; datatype-dev@helixcommunity.org
Subject: RE: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file

I don't think the seek should fail if you try to seek past the end of the file. I think it should just seek to the end of the file and return success.

Eric

Eric Hyche
Principal Engineer, RealNetworks
ehyche@real.com
________________________________________
From: Chintan Daiya
Sent: Thursday, January 21, 2010 2:24 PM
To: Eric Hyche
Cc: Umakant Gundeli
Subject: FW: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file

Hi Eric,

Can you please review this CR for us today - we need to get this fix checked in by end of day for a partner release scheduled for tomorrow.

Thanks,
Chintan

-----Original Message-----
From: datatype-dev-bounces@helixcommunity.org [mailto:datatype-dev-bounces@helixcommunity.org] On Behalf Of Umakant Gundeli
Sent: Tuesday, January 19, 2010 4:26 PM
To: datatype-dev@helixcommunity.org
Subject: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file

Project: Real Player for Android

Synopsis: Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file.

Overview:

This bug was due to capturing thumbnail of a corrupted/broken RMVB file. In this given broken/corrupted RMVB file, The duration given in file header is around 111 minutes, whereas the actual clip is only around 7minutes. At some point in execution, the riff reader tries to seek to an offset (to around 111 minutes) which is way outside the file size limits and after this ->Seek() call, it takes about 24 seconds to return the control back to ::RIFFSeekDone() method.

To fix this bug, I added a check to make sure that desired seek offset falls within the file size limits. if desired seek offset is outside file size limits, we simply call RIFFSeekDone(HXR_FAILED).

 Files Added: None

 Files Modified:
 datatype/common/util/riff.cpp

 Platforms and Profiles Build and Functionality Verified:
 Platform: android-donut-arm.eabi
 Profile: helix-client-android
 target(s): android_all

 Branch: hxclient_3_6_1_atlas_restricted

DIFF:

Index: riff.cpp
===================================================================
RCS file: /cvsroot/datatype/common/util/riff.cpp,v
retrieving revision 1.12.16.2.28.1
diff -u -b -B -r1.12.16.2.28.1 riff.cpp
--- riff.cpp    23 Dec 2009 05:32:18 -0000      1.12.16.2.28.1
+++ riff.cpp    20 Jan 2010 00:56:28 -0000
@@ -734,7 +734,14 @@
 {
     m_ulSeekOffset = offset;
     m_state = RS_UserSeekPending;
+    if(m_ulSeekOffset <= m_TotalFileSize)
+    {
         return m_pFileObject->Seek(m_ulSeekOffset, FALSE);
+    }
+    else
+    {
+        return m_pResponse->RIFFSeekDone(HXR_FAILED);
+    }
 }


thanks,
-Umakant.
_______________________________________________
Datatype-dev mailing list
Datatype-dev@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/datatype-dev
From saleem.adookkattil at nokia.com  Thu Jan 21 13:40:38 2010
From: saleem.adookkattil at nokia.com (saleem.adookkattil@nokia.com)
Date: Thu Jan 21 21:03:29 2010
Subject: [datatype-dev] CR:-Fixed thumbnail generation failure in helix HEAD
 and hxclient_4_2_0_brizo when asynchronous file reading is enabled.
Message-ID: <19113978AB61DA44AC317B211CF1C32A26B6EBBB20@NOK-EUMSG-02.mgdnok.nokia.com>

"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: saleem.adookkattil@nokia.com

Reviewed by:

Date: 01/21/2010

Project: symbianMmf_wm

ErrorId: N/A

Synopsis: Fixed thumbnail generation failure in helix HEAD and hxclient_4_2_0_brizo when asynchronous file reading is enabled.

Overview: Thumbnail generation in hxclient_2_1_0_cayennes works fine when asynchronous file reading is enabled. Then the following changes cause the failure in helix head/hxclient_4_2_0_brizo.

1) New interface introduced to handle 64bit file reading IHXMMFDataSource2 - CHXSymbianMetaDataEng::QueryInterface failed to return IHXMMFDataSource2 this interface pointer. Modified QueryInterface method to return this interface.

2) Asynchronous file reading needed the current thread to return to active object scheduler in order to run file read active object. hxclient_2_1_0_cayennes branch source has new State_RecognizeFormatPending switch case to handle it. Added this case to fix it.

3) Changes made to helix head/hxclient_4_2_0_brizo dtdriver context method MiniContext::FindPluginForFile - Logical condition to find the file format plugin in hxclient_2_1_0_cayennes branch uses only the mime type. Changes made to    MiniContext::FindPluginForFile method uses both mime type and file extension. Fixed this failure by not passing file name to the method.

4) STDMETHODIMP CHXTNEngine::OnTermination(HX_RESULT status) method call with HX_CLOSE status and setting m_LastError to HX_CLOSE failed to process packet in CHXTNEngine::OnPacket. Added condition to not to set this value.

5) Missing thumbnail utility implementation - Added hxtnutil_impl.cpp, hxtnutil.cpp and path../engine/pub/platform/symbian to symbian.pcf file to have thumbnail utility implementation.

In addition made changes to CHXSymbianMetaDataEng class implementation to pass actual file instead of dummy file to FFDriver instance.

Files modified:

cvsroot\datatype\tools\metadataeng\engine\platform\symbian\symbian_metadataeng.cpp
cvsroot\datatype\tools\metadataeng\engine\platform\symbian\symbian_thumbnaileng.cpp
cvsroot\datatype\tools\dtdriver\engine\ffdriver.cpp
cvsroot\datatype\tools\metadataeng\utility\symbian.pcf

Files added: None

Image Size and Heap Use impact: None.

Module Release testing (STIF) :  N/A

Test case(s) Added  : No

Memory leak check performed : Yes

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

Platforms and Profiles Functionality verified: armv5, winscw

Branch: 4_2_0_brizo, HEAD

Index: symbian.pcf
===================================================================
RCS file: /cvsroot/datatype/tools/metadataeng/utility/symbian.pcf,v
retrieving revision 1.4
diff -u -w -r1.4 symbian.pcf
--- symbian.pcf 6 Jul 2007 22:02:07 -0000       1.4
+++ symbian.pcf 20 Jan 2010 02:03:06 -0000
@@ -60,4 +60,10 @@

 project.AddSources("platform/symbian/hxmetadatautil.cpp")

+project.AddIncludes("../engine/pub/platform/symbian")
+
+if project.IsDefined('HELIX_FEATURE_DTDR_THUMBNAIL'):
+        project.AddSources("platform/symbian/hxtnutil.cpp",
+                           "platform/symbian/hxtnutil_impl.cpp")
+


Index: ffdriver.cpp
===================================================================
RCS file: /cvsroot/datatype/tools/dtdriver/engine/ffdriver.cpp,v
retrieving revision 1.59
diff -u -w -r1.59 ffdriver.cpp
--- ffdriver.cpp        11 Feb 2009 17:22:21 -0000      1.59
+++ ffdriver.cpp        20 Jan 2010 02:23:07 -0000
@@ -836,6 +836,7 @@
         switch (m_state)
         {
             case State_InitFileObjectDonePending:
+            case State_RecognizeFormatPending:
             case State_InitFileFormatDonePending:
             case State_FileHeaderDonePending:
             case State_StreamHeadersDonePending:
@@ -1037,7 +1038,7 @@
                 const char *pMimeType = NULL;
                 pMimeType = m_strMimeType;
                 status = m_pContext->FindFileFormat(m_pFileFormat,
-                                m_pInputFileName,
+                                NULL,
                                 m_ulFormatAttemptCount,
                                 NULL,
                                 (char *)pMimeType);

Index: symbian_thumbnaileng.cpp
===================================================================
RCS file: /cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_thumbnaileng.cpp,v
retrieving revision 1.4.14.1
diff -u -w -r1.4.14.1 symbian_thumbnaileng.cpp
--- symbian_thumbnaileng.cpp    9 Oct 2009 20:33:45 -0000       1.4.14.1
+++ symbian_thumbnaileng.cpp    20 Jan 2010 02:24:49 -0000
@@ -226,7 +226,7 @@

 {
     m_pFFDriver->OnTermination(status);
-    if (status != HXR_OK)
+    if (status != HXR_OK && status != HXR_CLOSED)
     {
        m_LastError = status;
     }


Index: symbian_metadataeng.cpp
===================================================================
RCS file: /cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp,v
retrieving revision 1.12
diff -u -w -r1.12 symbian_metadataeng.cpp
--- symbian_metadataeng.cpp     1 Sep 2009 21:44:59 -0000       1.12
+++ symbian_metadataeng.cpp     20 Jan 2010 02:49:34 -0000
@@ -67,7 +67,8 @@

 static const int KMinMetaDataStartupMemory = 512*1024;

-const char * const METADATA_DUMMYSOURCE_NAME = "file://c:\\dummy.3gp";
+_LIT(KFileScheme, "file://");
+const char * const METADATA_DUMMYFILE_NAME = "c:\\dummy.3gp";

 #include "symbian_dll_map_inst.h"
 #include "symbian_dll_map.h"
@@ -199,7 +200,11 @@
         AddRef();
         return HXR_OK;
        }
-       else if ( IsEqualIID(riid, IID_IHXMMFDataSource) && (m_pDataSource) )
+               else if ( (IsEqualIID(riid, IID_IHXMMFDataSource)
+#ifdef HELIX_FEATURE_64_BIT_FILE_SUPPORT
+                         || IsEqualIID(riid, IID_IHXMMFDataSource2)
+#endif
+                         ) && (m_pDataSource) )
        {
            res = m_pDataSource->QueryInterface(riid, ppvObj);
        }
@@ -271,27 +276,38 @@

 STDMETHODIMP CHXSymbianMetaDataEng::OpenSource(CHXMediaSource &aMediaSource)
 {
-    HX_RESULT hxr;
-
-    if (!m_pFFDriver)
+    HX_RESULT hxr = HXR_NOT_INITIALIZED;
+    if (m_pFFDriver)
+    {
+        hxr = HXR_NOT_SUPPORTED;
+        if (aMediaSource.m_pData)
     {
-        return HXR_NOT_INITIALIZED;
-    }
-
-    HX_RELEASE(m_pDataSource);
     m_pDataSource = CHXDataSourceFactory::Build(aMediaSource, TRUE /* bPeek */);

-    MD_LOG("CHXSymbianMetaDataEng::OpenSource m_pDataSource=%p\n",
-            m_pDataSource);
+            MD_LOG("CHXSymbianMetaDataEng::OpenSource m_pDataSource=%p\n", m_pDataSource);

     if (m_pDataSource)
     {
         HX_ADDREF(m_pDataSource);
-        hxr = DoOpenSource(METADATA_DUMMYSOURCE_NAME);
+                if ( aMediaSource.mType == CHXMediaSource::ERFile)
+                {
+                    RFile* pFile = (RFile*)aMediaSource.m_pData;
+                    TBuf FileName;
+                    if ( KErrNone == pFile->FullName(FileName) )
+                    {
+                        hxr = DoOpenSource((const char*)(FileName.PtrZ()));
     }
-    else
+                }
+                else if ( aMediaSource.mType == CHXMediaSource::EFileName)
     {
-        hxr = HXR_NOT_SUPPORTED;
+                    hxr = DoOpenSource((const char*)(aMediaSource.m_pData));
+                }
+                else if ( aMediaSource.mType == CHXMediaSource::EDescriptor )
+                {
+                    hxr = DoOpenSource(METADATA_DUMMYFILE_NAME);
+                }
+            }
+        }
     }

     return hxr;
@@ -300,15 +316,13 @@
 // Checks if content is protected and can't be played.
 // content is passed to FFDriver if required.

-STDMETHODIMP CHXSymbianMetaDataEng::DoOpenSource(const char *pName)
+STDMETHODIMP CHXSymbianMetaDataEng::DoOpenSource(const char *pFileName)
 {
     MD_LOG("CHXSymbianMetaDataEng::DoOpenSource\n");

     HX_RESULT hxr = HXR_OK;
-
     m_LastError = HXR_OK;

-
     m_bProtectedAndCantPlay = IsProtected(*m_pDataSource) && (!CanPlay(*m_pDataSource));

     if (m_bProtectedAndCantPlay)
@@ -327,14 +341,24 @@
     }
     else
     {
-
-        hxr = m_pFFDriver->Drive((char*)pName, NULL);
-
+        // Generate File URL using File name
+        HBufC8 *pFileURL = HBufC8::New(strlen(pFileName) + ((TDesC8&)KFileScheme).Length() + 1);
+        if (pFileURL)
+        {
+           pFileURL->Des().Copy(KFileScheme);
+           pFileURL->Des().Append((const TUint8*)pFileName, strlen(pFileName));
+           hxr = m_pFFDriver->Drive((char*)pFileURL->Des().PtrZ(), NULL);
+           delete pFileURL;
            if (hxr == HXR_OK)
            {
               hxr = m_LastError;
            }
          }
+         else
+         {
+            hxr = HXR_OUTOFMEMORY;
+         }
+    }

     MD_LOG("CHXSymbianMetaDataEng::DoOpenSource hxr=%d\n", hxr);
     return hxr;

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100121/00242370/attachment-0001.html
From ugundeli at real.com  Thu Jan 21 14:33:39 2010
From: ugundeli at real.com (Umakant Gundeli)
Date: Thu Jan 21 21:57:29 2010
Subject: [datatype-dev] RE: CR/CN : Fix for Bug 9974: It costs 24 seconds
 for capturing thumbnail of a broken rmvb file
Message-ID: <766B5A29D28DA442AB229AAEE2AFC44507D79E635F@SEAMBX.corp.real.com>

Checked-in.

thanks,
-Umakant.
________________________________________
From: Eric Hyche
Sent: Thursday, January 21, 2010 12:57 PM
To: Umakant Gundeli
Cc: datatype-dev@helixcommunity.org
Subject: RE: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file

Looks good.

Eric Hyche
Principal Engineer, RealNetworks
ehyche@real.com
________________________________________
From: Umakant Gundeli
Sent: Thursday, January 21, 2010 3:53 PM
To: Eric Hyche
Cc: datatype-dev@helixcommunity.org
Subject: RE: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file

Hi Eric,

thanks for review.

I modified the fix as per your suggestions. Please check the updated DIFF given below.

Index: riff.cpp
===================================================================
RCS file: /cvsroot/datatype/common/util/riff.cpp,v
retrieving revision 1.12.16.2.28.1
diff -u -b -B -r1.12.16.2.28.1 riff.cpp
--- riff.cpp    23 Dec 2009 05:32:18 -0000      1.12.16.2.28.1
+++ riff.cpp    21 Jan 2010 21:45:47 -0000
@@ -734,6 +734,10 @@
 {
     m_ulSeekOffset = offset;
     m_state = RS_UserSeekPending;
+    if(m_ulSeekOffset >= m_TotalFileSize && m_TotalFileSize != 0)
+    {
+       m_ulSeekOffset = m_TotalFileSize;
+    }
     return m_pFileObject->Seek(m_ulSeekOffset, FALSE);
 }

thanks,
-Umakant.

________________________________________
From: Eric Hyche
Sent: Thursday, January 21, 2010 12:20 PM
To: Umakant Gundeli
Cc: datatype-dev@helixcommunity.org
Subject: RE: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file

But you know the size of the file, right? If so, then just cap any requests at the file size and seek to there. So you'll never actually be making a seek request that's longer than the file size.

Eric

Eric Hyche
Principal Engineer, RealNetworks
ehyche@real.com
________________________________________
From: Umakant Gundeli
Sent: Thursday, January 21, 2010 3:19 PM
To: Eric Hyche
Cc: datatype-dev@helixcommunity.org
Subject: RE: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file

Hi Eric,

I agree that the seek does not fail if we try to seek past the end of file, but on android for some unknown reason it takes too much time (~ 25 seconds) to return to SeekDone() when we try to seek past end of file. and thats why there is increase in the time (~25 seconds) to capture thumbnail of this corrupted rmvb file. With my proposed fix/patch, it is taking about 40 milliseconds.

If you are Ok, We can check in this fix to ONLY 361 atlas branch .i.e. just for this project.

thanks,
-Umakant.

________________________________________
From: Eric Hyche
Sent: Thursday, January 21, 2010 11:27 AM
To: Chintan Daiya
Cc: Umakant Gundeli; datatype-dev@helixcommunity.org
Subject: RE: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file

I don't think the seek should fail if you try to seek past the end of the file. I think it should just seek to the end of the file and return success.

Eric

Eric Hyche
Principal Engineer, RealNetworks
ehyche@real.com
________________________________________
From: Chintan Daiya
Sent: Thursday, January 21, 2010 2:24 PM
To: Eric Hyche
Cc: Umakant Gundeli
Subject: FW: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file

Hi Eric,

Can you please review this CR for us today - we need to get this fix checked in by end of day for a partner release scheduled for tomorrow.

Thanks,
Chintan

-----Original Message-----
From: datatype-dev-bounces@helixcommunity.org [mailto:datatype-dev-bounces@helixcommunity.org] On Behalf Of Umakant Gundeli
Sent: Tuesday, January 19, 2010 4:26 PM
To: datatype-dev@helixcommunity.org
Subject: [datatype-dev] CR : Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file

Project: Real Player for Android

Synopsis: Fix for Bug 9974: It costs 24 seconds for capturing thumbnail of a broken rmvb file.

Overview:

This bug was due to capturing thumbnail of a corrupted/broken RMVB file. In this given broken/corrupted RMVB file, The duration given in file header is around 111 minutes, whereas the actual clip is only around 7minutes. At some point in execution, the riff reader tries to seek to an offset (to around 111 minutes) which is way outside the file size limits and after this ->Seek() call, it takes about 24 seconds to return the control back to ::RIFFSeekDone() method.

To fix this bug, I added a check to make sure that desired seek offset falls within the file size limits. if desired seek offset is outside file size limits, we simply call RIFFSeekDone(HXR_FAILED).

 Files Added: None

 Files Modified:
 datatype/common/util/riff.cpp

 Platforms and Profiles Build and Functionality Verified:
 Platform: android-donut-arm.eabi
 Profile: helix-client-android
 target(s): android_all

 Branch: hxclient_3_6_1_atlas_restricted

DIFF:

Index: riff.cpp
===================================================================
RCS file: /cvsroot/datatype/common/util/riff.cpp,v
retrieving revision 1.12.16.2.28.1
diff -u -b -B -r1.12.16.2.28.1 riff.cpp
--- riff.cpp    23 Dec 2009 05:32:18 -0000      1.12.16.2.28.1
+++ riff.cpp    20 Jan 2010 00:56:28 -0000
@@ -734,7 +734,14 @@
 {
     m_ulSeekOffset = offset;
     m_state = RS_UserSeekPending;
+    if(m_ulSeekOffset <= m_TotalFileSize)
+    {
         return m_pFileObject->Seek(m_ulSeekOffset, FALSE);
+    }
+    else
+    {
+        return m_pResponse->RIFFSeekDone(HXR_FAILED);
+    }
 }


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

From sgarg at real.com  Thu Jan 21 20:48:23 2010
From: sgarg at real.com ( Sushant Garg)
Date: Fri Jan 22 04:10:35 2010
Subject: [datatype-dev] CN:[Correcting bug # to 9971] Partial fix for bug
	9771: Memory leakencountered while playing video using Real
	Player version: 307.
References: <008401ca9a7c$78fdc680$8001a8c0@adroit02a604c1>
	
Message-ID: <004901ca9b1e$2380fae0$8001a8c0@adroit02a604c1>

Thanks Eric for review,

Correcting bug # to 9971.

This is checked in to Atlas_310, Atlas_347, Atlas_3_4_10.

Thanks & Regards
Sushant Garg
  ----- Original Message ----- 
  From: Eric Hyche 
  To: Sushant Garg 
  Cc: Datatype-Dev 
  Sent: Thursday, January 21, 2010 8:21 PM
  Subject: Re: [datatype-dev] CR: Partial fix for bug 9771: Memory leakencountered while playing video using Real Player version: 307.


  Looks good.

  On Jan 21, 2010, at 4:31 AM, Sushant Garg wrote:

  > Project: RealPlayer for Netbook
  > 
  > Synopsis:
  > Partial fix for bug 9771: Memory leak encountered while playing video using Real Player version: 307.
  >  
  > Overview:
  > Fixing some of memory leaks
  >  
  > Files Modified:
  > /cvsroot/xiph/vorbisrend/rvorbis.cpp
  >  
  > Files Added: 
  > None
  >  
  > Platforms and Profiles Affected:
  > Linux
  > 
  > Distribution Libraries Affected:
  > None.
  > 
  > Platforms and Profiles Build Verified:
  > Bif: realplay_gtk_atlas_restricted_gold_1.1
  > Profile: helix-client-moblin
  > Target: player_all
  > 
  > Branch:
  > Atlas347, Atlas310, Atlas3_4_10
  >  
  >  
  > Index: rvorbis.cpp
  > ===================================================================
  > RCS file: /cvsroot/xiph/vorbisrend/rvorbis.cpp,v
  > retrieving revision 1.18.10.1.4.1
  > diff -u -r1.18.10.1.4.1 rvorbis.cpp
  > --- rvorbis.cpp 1 Dec 2009 03:02:37 -0000 1.18.10.1.4.1
  > +++ rvorbis.cpp 20 Jan 2010 12:24:57 -0000
  > @@ -955,6 +955,7 @@
  >          HX_RELEASE(pHlpr);
  >      }
  >  
  > +   HX_VECTOR_DELETE(m_pStreamMimeTypes);
  >      HX_DELETE(m_pDepack);
  >  }
  >  
  >  
  > Thanks & Regards
  > Sushant Garg
  > 

  Eric Hyche (ehyche@real.com)
  Principal Engineer
  RealNetworks, Inc.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100122/02e97a9d/attachment.html
From sgarg at real.com  Fri Jan 22 02:10:59 2010
From: sgarg at real.com ( Sushant Garg)
Date: Fri Jan 22 09:33:06 2010
Subject: [datatype-dev] 
	CR/CN: Merging code from Atlas310, fixing memory leak,
	related to bug 9971.
Message-ID: <00a901ca9b4b$3409f240$8001a8c0@adroit02a604c1>

Project: RealPlayer for Netbook

Synopsis:

Merging code from Atlas310, fixing memory leak, related to bug 9971.

 

Overview:

Just merging code from Atlas310

 

Files Modified:


 /cvsroot/datatype/common/vidrend/vidrendf.cpp

 

Files Added: 

None

 

Platforms and Profiles Affected:
Linux

Distribution Libraries Affected:
None.

Platforms and Profiles Build Verified:
Bif: realplay_gtk_atlas_restricted_gold_1.1
Profile: helix-client-moblin
Target: player_all

Branch:
Atlas347 

 

Index: vidrendf.cpp
===================================================================
RCS file: /cvsroot/datatype/common/vidrend/vidrendf.cpp,v
retrieving revision 1.32.2.1
diff -u -r1.32.2.1 vidrendf.cpp
--- vidrendf.cpp 22 Apr 2008 15:07:01 -0000 1.32.2.1
+++ vidrendf.cpp 22 Jan 2010 10:50:36 -0000
@@ -664,9 +664,15 @@
 
   m_ulLastDecodedFrameTime = pDecodedPacket->m_ulTime;
   HXLOGL4(HXLOG_BVID, "CVideoFormat::DecodeFrame Putting decoded frame PTS=%lu on output queue", pDecodedPacket->m_ulTime);
-  m_pOutputQueue->Put(pDecodedPacket, TRUE);
-
-  if (pDecodedPacket->m_pData)
+  HXBOOL bPutRet = m_pOutputQueue->Put(pDecodedPacket, TRUE);
+  if(!bPutRet)
+  {
+      HXLOGL4(HXLOG_BVID, "No Space in output queue for frame PTS=%lu, dropping frame", pDecodedPacket->m_ulTime);
+      pDecodedPacket->Clear();
+      pDecodedPacket = NULL;
+      m_pVideoRenderer->ReportDroppedFrame();
+  }
+  if (pDecodedPacket && pDecodedPacket->m_pData)
   {
       m_pDecoderMutex->Unlock();
       m_pVideoRenderer->BltIfNeeded();



 

Thanks & Regards
Sushant Garg
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100122/9eaa0bd2/attachment.html
From mmanjunath at real.com  Fri Jan 22 02:26:20 2010
From: mmanjunath at real.com (manju)
Date: Fri Jan 22 09:48:34 2010
Subject: [datatype-dev] CR/CN: Error handling in spark codec wrapper
Message-ID: <000601ca9b4d$59506af0$1b01a8c0@com2>

Synopsis:
Error handling in Sorenson spark codec wrapper

Overview:
This change handles error value returned while trying to create decoder
instance in Sorenson spark codec wrapper.

Files Modified:
/datatype/h263/decoder_spark/spark_codec.cpp

Files attached:
diff.txt

-Verified on android board and real player Linux

-Committed code to 361, 310, 347, 3410 atlas, 401brizo and head

Thanks,
-Manju

-------------- next part --------------
Index: spark_codec.cpp
===================================================================
RCS file: /cvsroot/datatype/h263/decoder_spark/spark_codec.cpp,v
retrieving revision 1.5
diff -u -r1.5 spark_codec.cpp
--- spark_codec.cpp	10 Nov 2009 13:17:59 -0000	1.5
+++ spark_codec.cpp	22 Jan 2010 10:53:30 -0000
@@ -460,7 +460,9 @@
                                       0,0);
                 prv10Init = &rv10Init;
 
-                ret = m_fpRV20toYUV420Init((void *)prv10Init, ((void **)&m_pStreamRef));//get decoder state here
+                ret = m_fpRV20toYUV420Init((void *)prv10Init, ((void **)&m_pStreamRef));//get decoder state here
+                if(ret == HXR_OK)
+                {
                 ret = QueryInterface(IID_IHX20Stream,pStreamRef);//return the decoder instance as we have both HXCODEC, HXSTREAM 
                                                  //implemented in same class  
             
@@ -482,6 +484,7 @@
                                   (pOut->uiHeight +
                                   pOut->uiPadHeightTop +
                                   pOut->uiPadHeightBottom));
+                }
                 }
             }
         }
From ehyche at real.com  Fri Jan 22 05:38:07 2010
From: ehyche at real.com (Eric Hyche)
Date: Fri Jan 22 13:00:25 2010
Subject: [datatype-dev] Re: [Nokia-private-dev] CR:-Fixed thumbnail
 generation failure in
 helix HEAD and hxclient_4_2_0_brizo when asynchronous file reading is
 enabled.
In-Reply-To: <19113978AB61DA44AC317B211CF1C32A26B6EBBB20@NOK-EUMSG-02.mgdnok.nokia.com>
References: <19113978AB61DA44AC317B211CF1C32A26B6EBBB20@NOK-EUMSG-02.mgdnok.nokia.com>
Message-ID: <95D416E0-1BFE-43AC-B4E9-55946884F85B@real.com>

These changes look fine to me.


On Jan 21, 2010, at 4:40 PM,   wrote:

> "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: saleem.adookkattil@nokia.com
>  
> Reviewed by:
>  
> Date: 01/21/2010
>  
> Project: symbianMmf_wm
>  
> ErrorId: N/A
>  
> Synopsis: Fixed thumbnail generation failure in helix HEAD and hxclient_4_2_0_brizo when asynchronous file reading is enabled.
>  
> Overview: Thumbnail generation in hxclient_2_1_0_cayennes works fine when asynchronous file reading is enabled. Then the following changes cause the failure in helix head/hxclient_4_2_0_brizo.
>  
> 1) New interface introduced to handle 64bit file reading IHXMMFDataSource2 - CHXSymbianMetaDataEng::QueryInterface failed to return IHXMMFDataSource2 this interface pointer. Modified QueryInterface method to return this interface.
>  
> 2) Asynchronous file reading needed the current thread to return to active object scheduler in order to run file read active object. hxclient_2_1_0_cayennes branch source has new State_RecognizeFormatPending switch case to handle it. Added this case to fix it.
>  
> 3) Changes made to helix head/hxclient_4_2_0_brizo dtdriver context method MiniContext::FindPluginForFile - Logical condition to find the file format plugin in hxclient_2_1_0_cayennes branch uses only the mime type. Changes made to    MiniContext::FindPluginForFile method uses both mime type and file extension. Fixed this failure by not passing file name to the method.
>  
> 4) STDMETHODIMP CHXTNEngine::OnTermination(HX_RESULT status) method call with HX_CLOSE status and setting m_LastError to HX_CLOSE failed to process packet in CHXTNEngine::OnPacket. Added condition to not to set this value.
>  
> 5) Missing thumbnail utility implementation - Added hxtnutil_impl.cpp, hxtnutil.cpp and path../engine/pub/platform/symbian to symbian.pcf file to have thumbnail utility implementation.
>  
> In addition made changes to CHXSymbianMetaDataEng class implementation to pass actual file instead of dummy file to FFDriver instance.
>  
> Files modified:
>  
> cvsroot\datatype\tools\metadataeng\engine\platform\symbian\symbian_metadataeng.cpp
> cvsroot\datatype\tools\metadataeng\engine\platform\symbian\symbian_thumbnaileng.cpp
> cvsroot\datatype\tools\dtdriver\engine\ffdriver.cpp
> cvsroot\datatype\tools\metadataeng\utility\symbian.pcf
>  
> Files added: None
>  
> Image Size and Heap Use impact: None.
>  
> Module Release testing (STIF) :  N/A
>  
> Test case(s) Added  : No
>  
> Memory leak check performed : Yes
>  
> Platforms and Profiles Build Verified: helix-client-s60-52-mmf-mdf-dsp
>  
> Platforms and Profiles Functionality verified: armv5, winscw
>  
> Branch: 4_2_0_brizo, HEAD
>  
> Index: symbian.pcf
> ===================================================================
> RCS file: /cvsroot/datatype/tools/metadataeng/utility/symbian.pcf,v
> retrieving revision 1.4
> diff -u -w -r1.4 symbian.pcf
> --- symbian.pcf 6 Jul 2007 22:02:07 -0000       1.4
> +++ symbian.pcf 20 Jan 2010 02:03:06 -0000
> @@ -60,4 +60,10 @@
>  
> project.AddSources("platform/symbian/hxmetadatautil.cpp")
>  
> +project.AddIncludes("../engine/pub/platform/symbian")
> +
> +if project.IsDefined('HELIX_FEATURE_DTDR_THUMBNAIL'):
> +        project.AddSources("platform/symbian/hxtnutil.cpp",
> +                           "platform/symbian/hxtnutil_impl.cpp")
> +
>  
>  
> Index: ffdriver.cpp
> ===================================================================
> RCS file: /cvsroot/datatype/tools/dtdriver/engine/ffdriver.cpp,v
> retrieving revision 1.59
> diff -u -w -r1.59 ffdriver.cpp
> --- ffdriver.cpp        11 Feb 2009 17:22:21 -0000      1.59
> +++ ffdriver.cpp        20 Jan 2010 02:23:07 -0000
> @@ -836,6 +836,7 @@
>          switch (m_state)
>          {
>              case State_InitFileObjectDonePending:
> +            case State_RecognizeFormatPending:
>              case State_InitFileFormatDonePending:
>              case State_FileHeaderDonePending:
>              case State_StreamHeadersDonePending:
> @@ -1037,7 +1038,7 @@
>                  const char *pMimeType = NULL;
>                  pMimeType = m_strMimeType;
>                  status = m_pContext->FindFileFormat(m_pFileFormat,
> -                                m_pInputFileName,
> +                                NULL,
>                                  m_ulFormatAttemptCount,
>                                  NULL,
>                                  (char *)pMimeType);
>  
> Index: symbian_thumbnaileng.cpp
> ===================================================================
> RCS file: /cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_thumbnaileng.cpp,v
> retrieving revision 1.4.14.1
> diff -u -w -r1.4.14.1 symbian_thumbnaileng.cpp
> --- symbian_thumbnaileng.cpp    9 Oct 2009 20:33:45 -0000       1.4.14.1
> +++ symbian_thumbnaileng.cpp    20 Jan 2010 02:24:49 -0000
> @@ -226,7 +226,7 @@
>  
> {
>      m_pFFDriver->OnTermination(status);
> -    if (status != HXR_OK)
> +    if (status != HXR_OK && status != HXR_CLOSED)
>      {
>         m_LastError = status;
>      }                                    
>  
>  
> Index: symbian_metadataeng.cpp
> ===================================================================
> RCS file: /cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp,v
> retrieving revision 1.12
> diff -u -w -r1.12 symbian_metadataeng.cpp
> --- symbian_metadataeng.cpp     1 Sep 2009 21:44:59 -0000       1.12
> +++ symbian_metadataeng.cpp     20 Jan 2010 02:49:34 -0000
> @@ -67,7 +67,8 @@
>  
> static const int KMinMetaDataStartupMemory = 512*1024;
>  
> -const char * const METADATA_DUMMYSOURCE_NAME = "file://c:\\dummy.3gp";
> +_LIT(KFileScheme, "file://");
> +const char * const METADATA_DUMMYFILE_NAME = "c:\\dummy.3gp";
>  
> #include "symbian_dll_map_inst.h"
> #include "symbian_dll_map.h"
> @@ -199,7 +200,11 @@
>          AddRef();
>          return HXR_OK;
>         }
> -       else if ( IsEqualIID(riid, IID_IHXMMFDataSource) && (m_pDataSource) )
> +               else if ( (IsEqualIID(riid, IID_IHXMMFDataSource)
> +#ifdef HELIX_FEATURE_64_BIT_FILE_SUPPORT
> +                         || IsEqualIID(riid, IID_IHXMMFDataSource2)
> +#endif
> +                         ) && (m_pDataSource) )
>         {
>             res = m_pDataSource->QueryInterface(riid, ppvObj);    
>         }
> @@ -271,27 +276,38 @@
>  
> STDMETHODIMP CHXSymbianMetaDataEng::OpenSource(CHXMediaSource &aMediaSource)
> {
> -    HX_RESULT hxr;
> -
> -    if (!m_pFFDriver)
> +    HX_RESULT hxr = HXR_NOT_INITIALIZED;
> +    if (m_pFFDriver)
> +    {
> +        hxr = HXR_NOT_SUPPORTED;
> +        if (aMediaSource.m_pData)
>      {
> -        return HXR_NOT_INITIALIZED;
> -    }
> -
> -    HX_RELEASE(m_pDataSource);
>      m_pDataSource = CHXDataSourceFactory::Build(aMediaSource, TRUE /* bPeek */);
>  
> -    MD_LOG("CHXSymbianMetaDataEng::OpenSource m_pDataSource=%p\n",
> -            m_pDataSource);
> +            MD_LOG("CHXSymbianMetaDataEng::OpenSource m_pDataSource=%p\n", m_pDataSource);
>  
>      if (m_pDataSource)
>      {
>          HX_ADDREF(m_pDataSource);
> -        hxr = DoOpenSource(METADATA_DUMMYSOURCE_NAME);
> +                if ( aMediaSource.mType == CHXMediaSource::ERFile)
> +                {
> +                    RFile* pFile = (RFile*)aMediaSource.m_pData;
> +                    TBuf FileName;
> +                    if ( KErrNone == pFile->FullName(FileName) )
> +                    {
> +                        hxr = DoOpenSource((const char*)(FileName.PtrZ()));
>      }
> -    else
> +                }
> +                else if ( aMediaSource.mType == CHXMediaSource::EFileName)
>      {
> -        hxr = HXR_NOT_SUPPORTED;
> +                    hxr = DoOpenSource((const char*)(aMediaSource.m_pData));
> +                }
> +                else if ( aMediaSource.mType == CHXMediaSource::EDescriptor )
> +                {
> +                    hxr = DoOpenSource(METADATA_DUMMYFILE_NAME);
> +                }
> +            }
> +        }
>      }
>  
>      return hxr;
> @@ -300,15 +316,13 @@
> // Checks if content is protected and can't be played.
> // content is passed to FFDriver if required.
>  
> -STDMETHODIMP CHXSymbianMetaDataEng::DoOpenSource(const char *pName)
> +STDMETHODIMP CHXSymbianMetaDataEng::DoOpenSource(const char *pFileName)
> {
>      MD_LOG("CHXSymbianMetaDataEng::DoOpenSource\n");
>  
>      HX_RESULT hxr = HXR_OK;
> -
>      m_LastError = HXR_OK;
>  
> -
>      m_bProtectedAndCantPlay = IsProtected(*m_pDataSource) && (!CanPlay(*m_pDataSource));
>  
>      if (m_bProtectedAndCantPlay)
> @@ -327,14 +341,24 @@
>      }
>      else
>      {
> -
> -        hxr = m_pFFDriver->Drive((char*)pName, NULL);
> -
> +        // Generate File URL using File name
> +        HBufC8 *pFileURL = HBufC8::New(strlen(pFileName) + ((TDesC8&)KFileScheme).Length() + 1);
> +        if (pFileURL)
> +        {
> +           pFileURL->Des().Copy(KFileScheme);
> +           pFileURL->Des().Append((const TUint8*)pFileName, strlen(pFileName));
> +           hxr = m_pFFDriver->Drive((char*)pFileURL->Des().PtrZ(), NULL);
> +           delete pFileURL;
>             if (hxr == HXR_OK)
>             {
>                hxr = m_LastError;
>             }
>           }
> +         else
> +         {
> +            hxr = HXR_OUTOFMEMORY;
> +         }
> +    }
>  
>      MD_LOG("CHXSymbianMetaDataEng::DoOpenSource hxr=%d\n", hxr);
>      return hxr;
>  
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From saleem.adookkattil at nokia.com  Sat Jan 23 13:05:17 2010
From: saleem.adookkattil at nokia.com (saleem.adookkattil@nokia.com)
Date: Sat Jan 23 20:27:27 2010
Subject: [datatype-dev] RE: [Nokia-private-dev] CR:-Fixed thumbnail
 generation failure in
 helix HEAD and hxclient_4_2_0_brizo when asynchronous file reading is
 enabled.
In-Reply-To: <95D416E0-1BFE-43AC-B4E9-55946884F85B@real.com>
References: <19113978AB61DA44AC317B211CF1C32A26B6EBBB20@NOK-EUMSG-02.mgdnok.nokia.com>
	<95D416E0-1BFE-43AC-B4E9-55946884F85B@real.com>
Message-ID: <19113978AB61DA44AC317B211CF1C32A26B6EBBB27@NOK-EUMSG-02.mgdnok.nokia.com>

These changes checked into both HEAD and 4_2_0_brizo

-----Original Message-----
From: ext Eric Hyche [mailto:ehyche@real.com]
Sent: Friday, January 22, 2010 7:38 AM
To: Adookkattil Saleem (Nokia-D/Dallas)
Cc: datatype-dev@helixcommunity.org; nokia-private-dev@helixcommunity.org
Subject: Re: [Nokia-private-dev] CR:-Fixed thumbnail generation failure in helix HEAD and hxclient_4_2_0_brizo when asynchronous file reading is enabled.

These changes look fine to me.


On Jan 21, 2010, at 4:40 PM,   wrote:

> "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: saleem.adookkattil@nokia.com
>
> Reviewed by:
>
> Date: 01/21/2010
>
> Project: symbianMmf_wm
>
> ErrorId: N/A
>
> Synopsis: Fixed thumbnail generation failure in helix HEAD and hxclient_4_2_0_brizo when asynchronous file reading is enabled.
>
> Overview: Thumbnail generation in hxclient_2_1_0_cayennes works fine when asynchronous file reading is enabled. Then the following changes cause the failure in helix head/hxclient_4_2_0_brizo.
>
> 1) New interface introduced to handle 64bit file reading IHXMMFDataSource2 - CHXSymbianMetaDataEng::QueryInterface failed to return IHXMMFDataSource2 this interface pointer. Modified QueryInterface method to return this interface.
>
> 2) Asynchronous file reading needed the current thread to return to active object scheduler in order to run file read active object. hxclient_2_1_0_cayennes branch source has new State_RecognizeFormatPending switch case to handle it. Added this case to fix it.
>
> 3) Changes made to helix head/hxclient_4_2_0_brizo dtdriver context method MiniContext::FindPluginForFile - Logical condition to find the file format plugin in hxclient_2_1_0_cayennes branch uses only the mime type. Changes made to    MiniContext::FindPluginForFile method uses both mime type and file extension. Fixed this failure by not passing file name to the method.
>
> 4) STDMETHODIMP CHXTNEngine::OnTermination(HX_RESULT status) method call with HX_CLOSE status and setting m_LastError to HX_CLOSE failed to process packet in CHXTNEngine::OnPacket. Added condition to not to set this value.
>
> 5) Missing thumbnail utility implementation - Added hxtnutil_impl.cpp, hxtnutil.cpp and path../engine/pub/platform/symbian to symbian.pcf file to have thumbnail utility implementation.
>
> In addition made changes to CHXSymbianMetaDataEng class implementation to pass actual file instead of dummy file to FFDriver instance.
>
> Files modified:
>
> cvsroot\datatype\tools\metadataeng\engine\platform\symbian\symbian_met
> adataeng.cpp
> cvsroot\datatype\tools\metadataeng\engine\platform\symbian\symbian_thu
> mbnaileng.cpp cvsroot\datatype\tools\dtdriver\engine\ffdriver.cpp
> cvsroot\datatype\tools\metadataeng\utility\symbian.pcf
>
> Files added: None
>
> Image Size and Heap Use impact: None.
>
> Module Release testing (STIF) :  N/A
>
> Test case(s) Added  : No
>
> Memory leak check performed : Yes
>
> Platforms and Profiles Build Verified: helix-client-s60-52-mmf-mdf-dsp
>
> Platforms and Profiles Functionality verified: armv5, winscw
>
> Branch: 4_2_0_brizo, HEAD
>
> Index: symbian.pcf
> ===================================================================
> RCS file: /cvsroot/datatype/tools/metadataeng/utility/symbian.pcf,v
> retrieving revision 1.4
> diff -u -w -r1.4 symbian.pcf
> --- symbian.pcf 6 Jul 2007 22:02:07 -0000       1.4
> +++ symbian.pcf 20 Jan 2010 02:03:06 -0000
> @@ -60,4 +60,10 @@
>
> project.AddSources("platform/symbian/hxmetadatautil.cpp")
>
> +project.AddIncludes("../engine/pub/platform/symbian")
> +
> +if project.IsDefined('HELIX_FEATURE_DTDR_THUMBNAIL'):
> +        project.AddSources("platform/symbian/hxtnutil.cpp",
> +                           "platform/symbian/hxtnutil_impl.cpp")
> +
>
>
> Index: ffdriver.cpp
> ===================================================================
> RCS file: /cvsroot/datatype/tools/dtdriver/engine/ffdriver.cpp,v
> retrieving revision 1.59
> diff -u -w -r1.59 ffdriver.cpp
> --- ffdriver.cpp        11 Feb 2009 17:22:21 -0000      1.59
> +++ ffdriver.cpp        20 Jan 2010 02:23:07 -0000
> @@ -836,6 +836,7 @@
>          switch (m_state)
>          {
>              case State_InitFileObjectDonePending:
> +            case State_RecognizeFormatPending:
>              case State_InitFileFormatDonePending:
>              case State_FileHeaderDonePending:
>              case State_StreamHeadersDonePending:
> @@ -1037,7 +1038,7 @@
>                  const char *pMimeType = NULL;
>                  pMimeType = m_strMimeType;
>                  status = m_pContext->FindFileFormat(m_pFileFormat,
> -                                m_pInputFileName,
> +                                NULL,
>                                  m_ulFormatAttemptCount,
>                                  NULL,
>                                  (char *)pMimeType);
>
> Index: symbian_thumbnaileng.cpp
> ===================================================================
> RCS file:
> /cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_th
> umbnaileng.cpp,v
> retrieving revision 1.4.14.1
> diff -u -w -r1.4.14.1 symbian_thumbnaileng.cpp
> --- symbian_thumbnaileng.cpp    9 Oct 2009 20:33:45 -0000       1.4.14.1
> +++ symbian_thumbnaileng.cpp    20 Jan 2010 02:24:49 -0000
> @@ -226,7 +226,7 @@
>
> {
>      m_pFFDriver->OnTermination(status);
> -    if (status != HXR_OK)
> +    if (status != HXR_OK && status != HXR_CLOSED)
>      {
>         m_LastError = status;
>      }
>
>
> Index: symbian_metadataeng.cpp
> ===================================================================
> RCS file:
> /cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_me
> tadataeng.cpp,v
> retrieving revision 1.12
> diff -u -w -r1.12 symbian_metadataeng.cpp
> --- symbian_metadataeng.cpp     1 Sep 2009 21:44:59 -0000       1.12
> +++ symbian_metadataeng.cpp     20 Jan 2010 02:49:34 -0000
> @@ -67,7 +67,8 @@
>
> static const int KMinMetaDataStartupMemory = 512*1024;
>
> -const char * const METADATA_DUMMYSOURCE_NAME =
> "file://c:\\dummy.3gp";
> +_LIT(KFileScheme, "file://");
> +const char * const METADATA_DUMMYFILE_NAME = "c:\\dummy.3gp";
>
> #include "symbian_dll_map_inst.h"
> #include "symbian_dll_map.h"
> @@ -199,7 +200,11 @@
>          AddRef();
>          return HXR_OK;
>         }
> -       else if ( IsEqualIID(riid, IID_IHXMMFDataSource) && (m_pDataSource) )
> +               else if ( (IsEqualIID(riid, IID_IHXMMFDataSource)
> +#ifdef HELIX_FEATURE_64_BIT_FILE_SUPPORT
> +                         || IsEqualIID(riid, IID_IHXMMFDataSource2)
> +#endif
> +                         ) && (m_pDataSource) )
>         {
>             res = m_pDataSource->QueryInterface(riid, ppvObj);
>         }
> @@ -271,27 +276,38 @@
>
> STDMETHODIMP CHXSymbianMetaDataEng::OpenSource(CHXMediaSource
> &aMediaSource) {
> -    HX_RESULT hxr;
> -
> -    if (!m_pFFDriver)
> +    HX_RESULT hxr = HXR_NOT_INITIALIZED;
> +    if (m_pFFDriver)
> +    {
> +        hxr = HXR_NOT_SUPPORTED;
> +        if (aMediaSource.m_pData)
>      {
> -        return HXR_NOT_INITIALIZED;
> -    }
> -
> -    HX_RELEASE(m_pDataSource);
>      m_pDataSource = CHXDataSourceFactory::Build(aMediaSource, TRUE /*
> bPeek */);
>
> -    MD_LOG("CHXSymbianMetaDataEng::OpenSource m_pDataSource=%p\n",
> -            m_pDataSource);
> +            MD_LOG("CHXSymbianMetaDataEng::OpenSource
> + m_pDataSource=%p\n", m_pDataSource);
>
>      if (m_pDataSource)
>      {
>          HX_ADDREF(m_pDataSource);
> -        hxr = DoOpenSource(METADATA_DUMMYSOURCE_NAME);
> +                if ( aMediaSource.mType == CHXMediaSource::ERFile)
> +                {
> +                    RFile* pFile = (RFile*)aMediaSource.m_pData;
> +                    TBuf FileName;
> +                    if ( KErrNone == pFile->FullName(FileName) )
> +                    {
> +                        hxr = DoOpenSource((const
> + char*)(FileName.PtrZ()));
>      }
> -    else
> +                }
> +                else if ( aMediaSource.mType ==
> + CHXMediaSource::EFileName)
>      {
> -        hxr = HXR_NOT_SUPPORTED;
> +                    hxr = DoOpenSource((const char*)(aMediaSource.m_pData));
> +                }
> +                else if ( aMediaSource.mType == CHXMediaSource::EDescriptor )
> +                {
> +                    hxr = DoOpenSource(METADATA_DUMMYFILE_NAME);
> +                }
> +            }
> +        }
>      }
>
>      return hxr;
> @@ -300,15 +316,13 @@
> // Checks if content is protected and can't be played.
> // content is passed to FFDriver if required.
>
> -STDMETHODIMP CHXSymbianMetaDataEng::DoOpenSource(const char *pName)
> +STDMETHODIMP CHXSymbianMetaDataEng::DoOpenSource(const char
> +*pFileName)
> {
>      MD_LOG("CHXSymbianMetaDataEng::DoOpenSource\n");
>
>      HX_RESULT hxr = HXR_OK;
> -
>      m_LastError = HXR_OK;
>
> -
>      m_bProtectedAndCantPlay = IsProtected(*m_pDataSource) &&
> (!CanPlay(*m_pDataSource));
>
>      if (m_bProtectedAndCantPlay)
> @@ -327,14 +341,24 @@
>      }
>      else
>      {
> -
> -        hxr = m_pFFDriver->Drive((char*)pName, NULL);
> -
> +        // Generate File URL using File name
> +        HBufC8 *pFileURL = HBufC8::New(strlen(pFileName) + ((TDesC8&)KFileScheme).Length() + 1);
> +        if (pFileURL)
> +        {
> +           pFileURL->Des().Copy(KFileScheme);
> +           pFileURL->Des().Append((const TUint8*)pFileName, strlen(pFileName));
> +           hxr = m_pFFDriver->Drive((char*)pFileURL->Des().PtrZ(), NULL);
> +           delete pFileURL;
>             if (hxr == HXR_OK)
>             {
>                hxr = m_LastError;
>             }
>           }
> +         else
> +         {
> +            hxr = HXR_OUTOFMEMORY;
> +         }
> +    }
>
>      MD_LOG("CHXSymbianMetaDataEng::DoOpenSource hxr=%d\n", hxr);
>      return hxr;
>
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From deepakj at real.com  Mon Jan 25 04:16:31 2010
From: deepakj at real.com (Deepak Jain)
Date: Mon Jan 25 11:37:55 2010
Subject: [datatype-dev] CR: Fix for invalid timestamp issue while doing FF
 in Mpeg4 for LG-MID ARM
Message-ID: <4B5D8B9F.1050108@real.com>

Skipped content of type multipart/alternative-------------- next part --------------
Index: mp4vpyld.cpp
===================================================================
RCS file: /cvsroot/datatype/mp4/payload/mp4vpyld.cpp,v
retrieving revision 1.20.8.7
diff -u -r1.20.8.7 mp4vpyld.cpp
--- mp4vpyld.cpp	14 Sep 2009 04:41:02 -0000	1.20.8.7
+++ mp4vpyld.cpp	25 Jan 2010 12:58:04 -0000
@@ -1576,13 +1576,20 @@
 
     if (m_bUsesRTPPackets && (m_ulSamplesPerSecond != 0))
     {
-	ulTime = ((IHXRTPPacket*) pPacket)->GetRTPTime();
-
-	ulTime = m_TSConverter.Convert(ulTime);
+        ulTime = ((IHXRTPPacket*) pPacket)->GetRTPTime();
+        if (ulTime == 0xFFFFFFFF)
+        {
+            m_bUsesRTPPackets = FALSE;
+            ulTime = pPacket->GetTime();
+        }
+        else
+        {
+            ulTime = m_TSConverter.Convert(ulTime);
+        }
     }
     else
     {
-	ulTime = pPacket->GetTime();
+        ulTime = pPacket->GetTime();
     }
 
     return ulTime;

From ehyche at real.com  Mon Jan 25 07:23:49 2010
From: ehyche at real.com (Eric Hyche)
Date: Mon Jan 25 14:45:02 2010
Subject: [datatype-dev] CR: Fix for invalid timestamp issue while doing
	FF in Mpeg4 for LG-MID ARM
In-Reply-To: <4B5D8B9F.1050108@real.com>
References: <4B5D8B9F.1050108@real.com>
Message-ID: <5A3AC884-90C2-45A1-81B3-2200ABA40037@real.com>

Deepak,

It seems to me that the bug is in velproxy.cpp. If the incoming packet is an IHXRTPPacket, then the outgoing packet should be an IHXRTPPacket as well, just with a scaled timestamps. Sounds like velproxy is making everything into an IHXPacket.

Eric

On Jan 25, 2010, at 7:16 AM, Deepak Jain wrote:

> Project: Real Player for MID - ARM.
> 
> Synopsis: Fix for invalid timestamp issue while doing FF in Mpeg4 for LG-MID ARM
> 
> Overview: 
> When we do FF in a Mp4 file, we get the packet from the assembler from the function CreateHXCodecPacket().
> In mp4vpyld, we are setting the packet time from function GetPacketTime() and we use RTP Packet time.
> This RTP packet time gets set in CreateHXCodecPacket() function while creating the packet.
> 
> Now when we do FF, in file velproxy.cpp, inside function ReTimeStampAndSendPacket(), we create a IHXPacket and sets RTP time as 0xFFFFFFFF.
> Now when this time is received in GetPacketTime() inside mp4vpyld.cpp and subsequently this packet time is further provided to the Hardware decoder, it do not work correctly.
> 
> This issue is resolved by applying a check in GetPacketTime() function.
> If we get RTP time as 0xFFFFFFFF, we set time from the packet time instead and set the m_bUsesRTPPackets=FALSE.
> Attached is the diff.
> 
> Files Modified:
> datatype/mp4/payload/mp4vpyld.cpp
> 
> Image Size and Heap Use impact (Client -Only):
> None.
> 
> Platforms and Profiles Affected:
> None.
> 
> Distribution Libraries Affected:
> None.
> 
> Distribution library impact and planned action:
> None.
> 
> Platforms and Profiles Build Verified:
> BIF: hxclient_3_4_11_atlas_restricted
> Target: player_mid_all_installers
> Profile: helix-client-mid-arm
> 
> Branch:
> Atlas_3411
> 
> Files Attached:
> mp4vpyld.txt
> 
> Thanks,
> Deepak Jain
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From tyeager at real.com  Mon Jan 25 10:58:36 2010
From: tyeager at real.com (Tad Yeager)
Date: Mon Jan 25 18:19:30 2010
Subject: [datatype-dev] CR: flash filewriter write metadata bitrates in Kbps
Message-ID: <6.2.1.2.2.20100125103246.077e02a0@corpmail.real.com>

Synopsis:
flash filewriter should write metadata bitrates in Kbps

Overview:
When reading in the video and audio bitrates from the flash metadata packet 
(HX_FLV_TAG_TYPE_META: 
datatype\flash\flv\fileformat\flv_file_format.cpp@1143, 1133)  the bitrate 
is converted from a float value in Kbps to a UINT32 in bps.  Other file 
format plugins do this too (eg, datatype\aac\fileformat\aacff.cpp@1059). 
This value is later written back in the filewriter without converting back 
to Kbps.  The fix attached converts back to Kbps.

Files Modified:
datatype\flash\flv\filewriter\flvarch.cpp

Image Size and Heap Use impact (Client -Only):
None.

Platforms and Profiles Affected:
Windows, Mac & Linux

Distribution Libraries Affected:
None.

Distribution library impact and planned action:
None.

Platforms and Profiles Build Verified:
Profile: win32-i386-vc7
Platform: win32

Platforms and Profiles Functionality verified:
Profile: win32-i386-vc7
Platform: win32

Branch: 310Atlas, HEAD.  If the fix is OK, please let me know where else 
you'd like this change merged!  Assuming Brizo and other Alas branches but 
will wait until confirmed.

Copyright assignment: I am a RealNetworks employee.

? Makefile
? Umakefil.upp
? datatype_flash_flv_filewriter.sln
? datatype_flash_flv_filewriter.vcproj
? dbg32
? flvwrtr.def
? ribosome_logs
Index: flvarch.cpp
===================================================================
RCS file: /cvsroot/datatype/flash/flv/filewriter/flvarch.cpp,v
retrieving revision 1.1.2.1
diff -u -2 -0 -r1.1.2.1 flvarch.cpp
--- flvarch.cpp	18 Sep 2009 19:21:19 -0000	1.1.2.1
+++ flvarch.cpp	25 Jan 2010 18:28:48 -0000
@@ -858,48 +858,48 @@
                  Byte* pData = pBuffer->GetBuffer();

                  // Header
                  PackUINT8Inc(&pData, &nPacketSize, 
HX_FLV_META_AMF_TYPE_STRING);
                  PackUINT16BEInc(&pData, &nPacketSize, strlen(szOnMetaData));

                  memcpy(pData, szOnMetaData, strlen(szOnMetaData));
                  pData += strlen(szOnMetaData);
                  nPacketSize -= strlen(szOnMetaData);

                  PackUINT8Inc(&pData, &nPacketSize, 
HX_FLV_META_AMF_TYPE_MIXEDARRAY);
                  PackUINT32BEInc(&pData, &nPacketSize, nNumFields);

                  PackNumberField(&pData, &nPacketSize, szDuration, 
(double)m_nDuration/1000.);
                  m_nDurationOffset = m_ulFileOffset + pData - 
pBuffer->GetBuffer() - 8;

                  if(m_bHasVideo)
                  {
                      PackNumberField(&pData, &nPacketSize, szWidth, 
(double)m_nWidth);
                      PackNumberField(&pData, &nPacketSize, szHeight, 
(double)m_nHeight);
-                    PackNumberField(&pData, &nPacketSize, szVideoDataRate, 
(double)m_nVideoBitRate);
+                    PackNumberField(&pData, &nPacketSize, szVideoDataRate, 
(double)(m_nVideoBitRate / 1000) + 0.5);
                      PackNumberField(&pData, &nPacketSize, szFrameRate, 
m_dVideoFrameRate);
                      PackNumberField(&pData, &nPacketSize, szVideoCodecID, 
(double)m_nVideoType);
                  }

                  if(m_bHasAudio)
                  {
-                    PackNumberField(&pData, &nPacketSize, szAudioDataRate, 
(double)m_nAudioBitRate);
+                    PackNumberField(&pData, &nPacketSize, szAudioDataRate, 
(double)(m_nAudioBitRate / 1000) + 0.5);
                      PackNumberField(&pData, &nPacketSize, szAudioCodecID, 
(double)m_nAudioType);
                  }

                  HX_ASSERT(nPacketSize == 0);

                  nResult = WriteBuffer(pBuffer);
                  HX_RELEASE(pBuffer);
              }
          }
      }

      m_nAudioPacketInfo = m_nAudioType << 4;
      switch(m_nSamplesPerSecond)
      {
          case 11025:
              m_nAudioPacketInfo |= 0x1 << 2;
              break;
          case 22050:
              m_nAudioPacketInfo |= 0x2 << 2;
              break;


From anuj.dhamija at nokia.com  Mon Jan 25 12:30:13 2010
From: anuj.dhamija at nokia.com (anuj.dhamija@nokia.com)
Date: Mon Jan 25 19:51:45 2010
Subject: [datatype-dev] CR: ELDG-7ZGKST / ou1cimx1#233117 - Helix crashes
 when seeking a mkv clip with 6 channel AC3 audio
In-Reply-To: 
References: 
	
Message-ID: 

"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: anuj.dhamija@nokia.com

Reviewed by:

Date: 01/25/2010

TSW/Case ID: ELDG-7ZGKST / ou1cimx1#233117
Synopsis: Helix crashes when seeking a mkv clip with 6 channel AC3 audio
Overview:
Crash because for a block based MKV file, when data block is found, it breaks out of loop without skipping the element in source file causing corruption for subsequent reads.

Fix:
Skip the element read when breaking out of block read loop in SeekNextPacket method in matroska parser.

Files modified & changes:
/datatype/mkv/libmatroska/matroska.cpp

Image Size and Heap Use impact: None

Module Release testing (STIF, Audio) : Passed

Test case(s) Added  : None

Memory leak check performed : Passed, No leaks found

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

Branches: 210Cays, HEAD, 420Brizo, 401Brizo, 310Atlas

CVS Diff:

Index: Matroska.cpp
===================================================================
RCS file: /cvsroot/xiph/matroskalib/Matroska.cpp,v
retrieving revision 1.1.1.1.2.2
diff -u -r1.1.1.1.2.2 Matroska.cpp
--- Matroska.cpp        10 Dec 2009 22:35:46 -0000      1.1.1.1.2.2
+++ Matroska.cpp        25 Jan 2010 18:37:36 -0000
@@ -643,6 +643,8 @@

                        //reset level
                        level = 0;
+
+                       pElement = m_pES->FindNextElement(*(KaxCluster::ClassInfos->Context), level, 0xFFFFFFFFL, false, 1 );

                }
                else
@@ -766,11 +768,10 @@
                        {
                                pElement->SkipData(*m_pES, *pElement->Generic().Context);
                                delete pElement;
+                               pElement = m_pES->FindNextElement(*(KaxCluster::ClassInfos->Context), level, 0xFFFFFFFFL, false, 1 );
                        }
                }

-               pElement = m_pES->FindNextElement(*(KaxCluster::ClassInfos->Context), level, 0xFFFFFFFFL, false, 1 );
-
        }

        if(streamNumber >= 0)
@@ -828,6 +829,7 @@

                        //reset level
                        level = 0;
+                       pElement = m_pES->FindNextElement(*(KaxCluster::ClassInfos->Context), level, 0xFFFFFFFFL, false, 1 );

                }
                else
@@ -928,10 +930,16 @@
                                        {
                                                delete pBlock;
                                                pBlock = NULL;
+
+                                               //since we break out of outmost while loop
+                                               //delete pElement
+                                               pElement->SkipData(*m_pES, *pElement->Generic().Context);
+                                               delete pElement;
+
                                                break;
                                        }
                                }
-                               else if(pBlock)
+                               if(pBlock)
                                {
                                        delete pBlock;
                                }
@@ -1003,11 +1011,10 @@
                                        delete pElement;
                                }
                                bPreserve = FALSE;
+                               pElement = m_pES->FindNextElement(*(KaxCluster::ClassInfos->Context), level, 0xFFFFFFFFL, false, 1 );
                        }
                }

-               pElement = m_pES->FindNextElement(*(KaxCluster::ClassInfos->Context), level, 0xFFFFFFFFL, false, 1 );
-
        }

        if(pLastSimpleBlock)

thnx & regds
AD


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100125/04952935/attachment-0001.html
From ext-shashi.merapala at nokia.com  Mon Jan 25 22:54:27 2010
From: ext-shashi.merapala at nokia.com (ext-shashi.merapala@nokia.com)
Date: Tue Jan 26 06:15:47 2010
Subject: [datatype-dev] CR: OULM-7Z6EUR - Phone crashes while playing a MP4
 file from SD card with error:MMFcontrollerProxyserver-246
Message-ID: 

Skipped content of type multipart/alternative-------------- next part --------------
Index: mp4/payload/mp4apyld.cpp
===================================================================
RCS file: /cvsroot/datatype/mp4/payload/mp4apyld.cpp,v
retrieving revision 1.14.6.4
diff -u -w -r1.14.6.4 mp4apyld.cpp
--- mp4/payload/mp4apyld.cpp	13 Nov 2009 19:33:44 -0000	1.14.6.4
+++ mp4/payload/mp4apyld.cpp	22 Jan 2010 12:47:57 -0000
@@ -429,11 +429,14 @@
 	if (pDCDesc)
 	{
 	    pDSIDesc = pDCDesc->m_pDecSpecificInfo;
+	    if(pDSIDesc)
+	    {	
 	    retVal = HXR_OK;
 	}
     }
+    }
 
-    if (SUCCEEDED(retVal) && pDSIDesc)
+    if (SUCCEEDED(retVal))
     {
 	m_ulAudioConfigSize = pDSIDesc->m_ulLength;
 
Index: mp4/payload/mp4vpyld.cpp
===================================================================
RCS file: /cvsroot/datatype/mp4/payload/mp4vpyld.cpp,v
retrieving revision 1.18.2.4
diff -u -w -r1.18.2.4 mp4vpyld.cpp
--- mp4/payload/mp4vpyld.cpp	6 Nov 2009 20:00:24 -0000	1.18.2.4
+++ mp4/payload/mp4vpyld.cpp	22 Jan 2010 12:47:57 -0000
@@ -476,11 +476,14 @@
 	if (pDCDesc)
 	{
 	    pDSIDesc = pDCDesc->m_pDecSpecificInfo;
+	    if(pDSIDesc)
+	    { 
 	    retVal = HXR_OK;
 	}
     }
+    }
 
-    if (SUCCEEDED(retVal) && pDSIDesc)
+    if (SUCCEEDED(retVal))
     {
 	m_ulBitstreamHeaderSize = pDSIDesc->m_ulLength;
 
From ext-ram.mukunda at nokia.com  Tue Jan 26 00:08:35 2010
From: ext-ram.mukunda at nokia.com (ext-ram.mukunda@nokia.com)
Date: Tue Jan 26 07:31:22 2010
Subject: [datatype-dev] CR: EMVK-7ZHK6H : Frame rate and MCU load during
 H.264 720p 30fps with multichannel audio local Video Playb 
Message-ID: 

Skipped content of type multipart/alternative-------------- next part --------------
Index: mdfvideoadapter.cpp
===================================================================
RCS file: /cvsroot/datatype/mdf/video/renderer/mdfvideoadapter.cpp,v
retrieving revision 1.3.2.104
diff -u -w -r1.3.2.104 mdfvideoadapter.cpp
--- mdfvideoadapter.cpp 19 Jan 2010 19:18:31 -0000      1.3.2.104
+++ mdfvideoadapter.cpp 25 Jan 2010 10:08:38 -0000
@@ -410,6 +410,10 @@
             {
                 retVal = HXR_UNSUPPORTED_VIDEO;
             }
+            else if(error == KErrCorrupt || retVal == HXR_CORRUPT_FILE)
+            {
+                retVal = HXR_CORRUPT_FILE;
+            }
             else
             {
                 retVal = HXR_FAIL;  


 
From rajesh.rathinasamy at nokia.com  Tue Jan 26 08:16:27 2010
From: rajesh.rathinasamy at nokia.com (rajesh.rathinasamy@nokia.com)
Date: Tue Jan 26 15:37:58 2010
Subject: [datatype-dev] CR: GetPacket call re-entrancy failure in fileformats
Message-ID: 




"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: 25-jan-2010

Project:  SymbianMmf

Error Id:  DALM-7ZEU4L

Synopsis: GetPacket call re-entrancy failure in fileformats

Overview:
Recent change in file source for async I/O is to call GetPacket within PacketReady callback. Some fileformats does not handle re-entrancy.

AVi fileformat ended up in calling ReadHeader on RIFF twice consequtively leading to wrong section of data being interpreted as chunk header. This resulted in huge file seek offset.
Added a state in AVIState which is set and reset during PacketReady callback and avoided the ScanState when in PacketReady sent state.

XPSFileformat had the issue of losing the getpacket outstanding flag value. Now the flag is reset before passing the packet ready call to filesource.

Following Fileformats were tested with this changes:
3GP / Mp4, rm, asf, mp3, xps, mkv

Also tested thumbnail for avi, 3gp, wmv and rm.


Files removed: None

Files added:  None

Files modified:
datatype/avi/fileformat/aviffpln.cpp
datatype/avi/fileformat/pub/aviffpln.h
datatype/xps/fileformat/CXPSFileformat.cpp


Image size and heap use impact:  None

Module release testing (STIF):  PASSED. Tested on 5.0 as STIF is crashing on 9.2

Test case(s) added:  No

Memory leak check performed:  No. Unable to execute due to existing leaks.

Platforms and profiles build verified: helix-client-s60-50-mmf-mdf-dsp, helix-client-s60-52-mmf-mdf-dsp

Platforms and profiles functionality verified:  armv5, winscw

Branch:  210CayS, HEAD, 420Brizo

Index: aviffpln.cpp
===================================================================
RCS file: /cvsroot/datatype/avi/fileformat/aviffpln.cpp,v
retrieving revision 1.5.6.4
diff -w -u -b -r1.5.6.4 aviffpln.cpp
--- aviffpln.cpp        5 Jan 2010 17:41:09 -0000       1.5.6.4
+++ aviffpln.cpp        26 Jan 2010 01:05:33 -0000
@@ -691,7 +691,11 @@
         m_pFFResponse->StreamDone(unStreamNumber);
     }

+    // Re-entrancy Check
+    if(m_state != AS_SendingPacketReady)
+    {
     ScanState();
+    }

     return HXR_OK;
 }
@@ -1539,7 +1543,7 @@
                            }
                            else
                            {
-                               m_pFFResponse->PacketReady(pnr, NULL);
+                               SendPacketReady(pnr, NULL);
                            }
                        }
             break;
@@ -1742,7 +1746,7 @@

                 HXLOGL4(HXLOG_AVIX,"CAVIFileFormat[%p]::ScanState\tPacketReady, stream: %lu\ttimestamp: %lu", this, pPending
Packet->GetStreamNumber(), pPendingPacket->GetTime());
                 // Warning: core call
-                m_pFFResponse->PacketReady(HXR_OK, pPendingPacket);
+                SendPacketReady(HXR_OK, pPendingPacket);
                 HX_RELEASE(pPendingPacket);

                 // Reentrancy ch eck; if we're closed, return:
@@ -2086,3 +2090,29 @@
 {
     return ((char) ulChunkId - '0')*10 + ((char) (ulChunkId >> 8) - '0');
 }
+
+void CAVIFileFormat::SendPacketReady(HX_RESULT rv, IHXPacket* pPacket)
+{
+
+  if(m_pFFResponse != NULL)
+  {
+    // Store current state
+    AVIState PrevState = m_state;
+    m_state = AS_SendingPacketReady;
+
+    m_pFFResponse->PacketReady(rv, pPacket);
+
+    // Check & restore if the state is still the same and not changed because of
+    // other re-entrant calls. Eg. AS_Closed.
+    if(m_state == AS_SendingPacketReady)
+    {
+
+      m_state = PrevState;
+    }
+    else
+    {
+      HXLOGL1(HXLOG_AVIX,"CAVIFileFormat[%p]::SendPacketReady() WARNING PrevState:%d CurrState:%d", this, PrevState, m_state
);
+    }
+  } // End of if(m_pFFResponse != NULL)
+
+}
cvs diff: Diffing platform
cvs diff: Diffing platform/mac
cvs diff: Diffing platform/win
cvs diff: Diffing pub
Index: pub/aviffpln.h
===================================================================
RCS file: /cvsroot/datatype/avi/fileformat/pub/aviffpln.h,v
retrieving revision 1.4.6.2
diff -w -u -b -r1.4.6.2 aviffpln.h
--- pub/aviffpln.h      2 Dec 2009 18:37:13 -0000       1.4.6.2
+++ pub/aviffpln.h      26 Jan 2010 01:05:33 -0000
@@ -318,6 +318,8 @@

     void IOEvent();

+    void SendPacketReady(HX_RESULT rv, IHXPacket* pPacket);
+
     char*  m_pszTitle;
     char*  m_pszAuthor;
     char*  m_pszCopyright;
@@ -393,6 +395,7 @@
         , AS_GetODMLStreamFilePending // used to initialise stream for ODML index case
 #endif
         , AS_IOEvent                // PacketReady
+        , AS_SendingPacketReady     // Packet sent to fileformat response obj. Added to handle re-entrancy
         , AS_Ready
         , AS_Closed
     }



Index: CXPSFileformat.cpp
===================================================================
RCS file: /cvsroot/datatype/xps/fileformat/CXPSFileformat.cpp,v
retrieving revision 1.1.1.1.2.16
diff -w -u -b -r1.1.1.1.2.16 CXPSFileformat.cpp
--- CXPSFileformat.cpp  14 Sep 2009 05:41:06 -0000      1.1.1.1.2.16
+++ CXPSFileformat.cpp  26 Jan 2010 01:06:27 -0000
@@ -907,8 +907,9 @@
             {
                 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);
+                m_pFFResponse->PacketReady(HXR_OK, pPacket);
+

                 if( (m_parrStreams[uStreamid].IsStreamDone()) &&
                     (m_parrStreams[uStreamid].IsStreamEmpty()) )


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100126/ab060fed/attachment-0001.html
From sfu at real.com  Tue Jan 26 08:29:14 2010
From: sfu at real.com (Sheldon Fu)
Date: Tue Jan 26 15:49:52 2010
Subject: [datatype-dev] CN: CR: add MIXV color id for MIX-API video frame
	type
In-Reply-To: <4B2F9CAA.3050806@real.com>
References: <4B2F9CAA.3050806@real.com>
Message-ID: <4B5F185A.8080705@real.com>

This never got CR-ed but since they are trivial changes I just checked 
them in.

fxd

Sheldon Fu wrote:
> Overview:
>
> This is yet another 'frame ref id' type of color format for Intel 
> MIX-API video frame, similar to OMXV.
>
> Brizo401 and Head.
>
> Files modified:
>
> datatype/rm/include/hxmtypes.h
> client/include/hxvsurf.h
> video/include/ciddefs.h
>
> fxd
>
> ===================================================================
> RCS file: /cvsroot/datatype/rm/include/hxmtypes.h,v
> retrieving revision 1.7.8.2
> diff -u -w -r1.7.8.2 hxmtypes.h
> --- hxmtypes.h    4 Dec 2009 14:32:24 -0000    1.7.8.2
> +++ hxmtypes.h    21 Dec 2009 14:41:38 -0000
> @@ -74,6 +74,7 @@
> #define RA_WTIMAGE_ID    0x52493130L    // 'RI10'
> #define HX_NV21_ID    0x4e563231L     // 'NV21'
> #define HX_OMXV_ID      0x4f4d5856L     // 'OMXV'   +#define 
> HX_MIXV_ID      0x4d495856L     // 'MIXV'  
> // ICM codecs
> #define ICM_CVID    0x43564944L    // 'CVID'
>
>
> ===================================================================
> RCS file: /cvsroot/client/include/hxvsurf.h,v
> retrieving revision 1.6
> diff -u -w -r1.6 hxvsurf.h
> --- hxvsurf.h    1 Jun 2009 13:42:40 -0000    1.6
> +++ hxvsurf.h    21 Dec 2009 14:44:13 -0000
> @@ -177,6 +177,7 @@
> #define HX_DVPF        MKFOURCC('D','V','P','F') /* dvpf           */
> #define HX_NV21        MKFOURCC('N','V','2','1') /* Qualcomm YVU 
> semi-planar */
> #define HX_OMXV        MKFOURCC('O','M','X','V') /* OpenMax buffer 
> header pointer */
> +#define HX_MIXV        MKFOURCC('M','I','X','V') /* MIX-API frame 
> data */
>
> /*
>  * Non-standard FOURCC formats (these are just few aliases to what can be
>
>
> ===================================================================
> RCS file: /cvsroot/video/include/ciddefs.h,v
> retrieving revision 1.8
> diff -u -w -r1.8 ciddefs.h
> --- ciddefs.h    1 Jun 2009 18:45:54 -0000    1.8
> +++ ciddefs.h    21 Dec 2009 14:45:39 -0000
> @@ -104,8 +104,15 @@
>  * DWORD : OMX_BUFFERHEADERTYPE* pointer */
> #define CID_OMXV        26
>
> +/* MIX-API decoded frame type
> + *
> + * DWORD : MixVideo pointer
> + * DWORD : MixFrame pointer
> +*/
> +#define CID_MIXV        27
> +
> /* the number of formats: */
> -#define NFORMATS        (CID_OMXV  + 1)
> +#define NFORMATS        (CID_MIXV  + 1)
> #endif
>
>


From ehyche at real.com  Tue Jan 26 08:35:03 2010
From: ehyche at real.com (Eric Hyche)
Date: Tue Jan 26 15:56:02 2010
Subject: [datatype-dev] CR: GetPacket call re-entrancy failure in
	fileformats
In-Reply-To: 
References: 
Message-ID: <04CB7997-C5A9-428E-84CA-C8725CE1B65D@real.com>

Looks good.

On Jan 26, 2010, at 11:16 AM,   wrote:

>  
>  
>  
> "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: 25-jan-2010
>  
> Project:  SymbianMmf
>  
> Error Id:  DALM-7ZEU4L
>  
> Synopsis: GetPacket call re-entrancy failure in fileformats
>  
> Overview: 
> Recent change in file source for async I/O is to call GetPacket within PacketReady callback. Some fileformats does not handle re-entrancy.
>  
> AVi fileformat ended up in calling ReadHeader on RIFF twice consequtively leading to wrong section of data being interpreted as chunk header. This resulted in huge file seek offset.
> Added a state in AVIState which is set and reset during PacketReady callback and avoided the ScanState when in PacketReady sent state.
>  
> XPSFileformat had the issue of losing the getpacket outstanding flag value. Now the flag is reset before passing the packet ready call to filesource.
>  
> Following Fileformats were tested with this changes:
> 3GP / Mp4, rm, asf, mp3, xps, mkv
>  
> Also tested thumbnail for avi, 3gp, wmv and rm.
>  
>  
> Files removed: None
>  
> Files added:  None
>  
> Files modified: 
> datatype/avi/fileformat/aviffpln.cpp
> datatype/avi/fileformat/pub/aviffpln.h
> datatype/xps/fileformat/CXPSFileformat.cpp
>  
>  
> Image size and heap use impact:  None
>  
> Module release testing (STIF):  PASSED. Tested on 5.0 as STIF is crashing on 9.2
>  
> Test case(s) added:  No
>  
> Memory leak check performed:  No. Unable to execute due to existing leaks.
>  
> Platforms and profiles build verified: helix-client-s60-50-mmf-mdf-dsp, helix-client-s60-52-mmf-mdf-dsp
>  
> Platforms and profiles functionality verified:  armv5, winscw
>  
> Branch:  210CayS, HEAD, 420Brizo
>  
> Index: aviffpln.cpp
> ===================================================================
> RCS file: /cvsroot/datatype/avi/fileformat/aviffpln.cpp,v
> retrieving revision 1.5.6.4
> diff -w -u -b -r1.5.6.4 aviffpln.cpp
> --- aviffpln.cpp        5 Jan 2010 17:41:09 -0000       1.5.6.4
> +++ aviffpln.cpp        26 Jan 2010 01:05:33 -0000
> @@ -691,7 +691,11 @@
>          m_pFFResponse->StreamDone(unStreamNumber);
>      }
>  
> +    // Re-entrancy Check
> +    if(m_state != AS_SendingPacketReady)
> +    {
>      ScanState();
> +    }
>  
>      return HXR_OK;
> }
> @@ -1539,7 +1543,7 @@
>                             }
>                             else
>                             {
> -                               m_pFFResponse->PacketReady(pnr, NULL);
> +                               SendPacketReady(pnr, NULL);
>                             }
>                         }
>              break;
> @@ -1742,7 +1746,7 @@
>  
>                  HXLOGL4(HXLOG_AVIX,"CAVIFileFormat[%p]::ScanState\tPacketReady, stream: %lu\ttimestamp: %lu", this, pPending
> Packet->GetStreamNumber(), pPendingPacket->GetTime());
>                  // Warning: core call
> -                m_pFFResponse->PacketReady(HXR_OK, pPendingPacket);
> +                SendPacketReady(HXR_OK, pPendingPacket);
>                  HX_RELEASE(pPendingPacket);
>  
>                  // Reentrancy ch eck; if we're closed, return:
> @@ -2086,3 +2090,29 @@
> {
>      return ((char) ulChunkId - '0')*10 + ((char) (ulChunkId >> 8) - '0');
> }
> +
> +void CAVIFileFormat::SendPacketReady(HX_RESULT rv, IHXPacket* pPacket)
> +{
> +
> +  if(m_pFFResponse != NULL)
> +  {
> +    // Store current state
> +    AVIState PrevState = m_state;
> +    m_state = AS_SendingPacketReady;
> +
> +    m_pFFResponse->PacketReady(rv, pPacket);
> +
> +    // Check & restore if the state is still the same and not changed because of
> +    // other re-entrant calls. Eg. AS_Closed.
> +    if(m_state == AS_SendingPacketReady)
> +    {
> +
> +      m_state = PrevState;
> +    }
> +    else
> +    {
> +      HXLOGL1(HXLOG_AVIX,"CAVIFileFormat[%p]::SendPacketReady() WARNING PrevState:%d CurrState:%d", this, PrevState, m_state
> );
> +    }
> +  } // End of if(m_pFFResponse != NULL)
> +
> +}
> cvs diff: Diffing platform
> cvs diff: Diffing platform/mac
> cvs diff: Diffing platform/win
> cvs diff: Diffing pub
> Index: pub/aviffpln.h
> ===================================================================
> RCS file: /cvsroot/datatype/avi/fileformat/pub/aviffpln.h,v
> retrieving revision 1.4.6.2
> diff -w -u -b -r1.4.6.2 aviffpln.h
> --- pub/aviffpln.h      2 Dec 2009 18:37:13 -0000       1.4.6.2
> +++ pub/aviffpln.h      26 Jan 2010 01:05:33 -0000
> @@ -318,6 +318,8 @@
>  
>      void IOEvent();
>  
> +    void SendPacketReady(HX_RESULT rv, IHXPacket* pPacket);
> +
>      char*  m_pszTitle;
>      char*  m_pszAuthor;
>      char*  m_pszCopyright;
> @@ -393,6 +395,7 @@
>          , AS_GetODMLStreamFilePending // used to initialise stream for ODML index case
> #endif
>          , AS_IOEvent                // PacketReady
> +        , AS_SendingPacketReady     // Packet sent to fileformat response obj. Added to handle re-entrancy
>          , AS_Ready
>          , AS_Closed
>      }
>  
>  
>  
> Index: CXPSFileformat.cpp
> ===================================================================
> RCS file: /cvsroot/datatype/xps/fileformat/CXPSFileformat.cpp,v
> retrieving revision 1.1.1.1.2.16
> diff -w -u -b -r1.1.1.1.2.16 CXPSFileformat.cpp
> --- CXPSFileformat.cpp  14 Sep 2009 05:41:06 -0000      1.1.1.1.2.16
> +++ CXPSFileformat.cpp  26 Jan 2010 01:06:27 -0000
> @@ -907,8 +907,9 @@
>              {
>                  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);
> +                m_pFFResponse->PacketReady(HXR_OK, pPacket);
> +
>  
>                  if( (m_parrStreams[uStreamid].IsStreamDone()) &&
>                      (m_parrStreams[uStreamid].IsStreamEmpty()) )
>  
>  
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From ehyche at real.com  Tue Jan 26 08:36:40 2010
From: ehyche at real.com (Eric Hyche)
Date: Tue Jan 26 15:57:50 2010
Subject: [datatype-dev] Re: [Nokia-private-dev] CR: EMVK-7ZHK6H : Frame rate
 and MCU load
 during H.264 720p 30fps with multichannel audio local Video Playb 
In-Reply-To: 
References: 
Message-ID: 

Looks good.

On Jan 26, 2010, at 3:08 AM,   wrote:

> "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: ext-anugrah.2.kashari@nokia.com
>  
> Review By: yury.ramanovich@nokia.com
>  
> Error-ID:  EMVK-7ZHK6H
>  
> Date : 26/01/2010
>  
> Project: SymbianMmf_wm
>  
> Synopsis:  Frame rate and MCU load during H.264 720p 30fps with multichannel audio local Video Playb
>  
> Overview :  CMMFDevVideoPlay:: ConfigureDecoderL() leaves with error code KErrCorrupt (-20). In CMDFDevVideoClient this is converted to HXR_CORRUPT_FILE, but in CMdfVideoAdapter it is again converted to the generic HXR_FAIL. HXMMFCtrlImp converts HXR_FAIL to KErrGeneral(-2) therefore UI displays wrong message to user.
>  
> Fix:  We have kept current error mapping intact and added check for KErrCorrupt.
>  
> Files modified & changes 210Cays , Brizo420 and Head :
> /cvsroot/datatype/mdf/video/renderer/mdfvideoadapter.cpp                    
>  
> Image Size and Heap Use impact: No major impact
>  
> Module Release testing (STIF) :  NA
>  
> Test case(s) Added : No
>  
> Memory leak check performed : Passed, No additional leaks introduced.
>  
> Platforms and Profiles Build Verified: helix-client-s60-52-mmf-mdf-dsp                                                                              
>  
> Platforms and Profiles Functionality verified: armv5
>  
> Branch : 210Cays, Brizo420 & Head :
>  
> CVS Diff: attached.
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From ehyche at real.com  Tue Jan 26 08:38:41 2010
From: ehyche at real.com (Eric Hyche)
Date: Tue Jan 26 16:00:01 2010
Subject: [datatype-dev] Re: CR: flash filewriter write metadata bitrates in
	Kbps
In-Reply-To: <6.2.1.2.2.20100125103246.077e02a0@corpmail.real.com>
References: <6.2.1.2.2.20100125103246.077e02a0@corpmail.real.com>
Message-ID: <3067B248-A30F-4209-AF37-DD9EBB6B062F@real.com>

Looks good.

On Jan 25, 2010, at 1:58 PM, Tad Yeager wrote:

> Synopsis:
> flash filewriter should write metadata bitrates in Kbps
> 
> Overview:
> When reading in the video and audio bitrates from the flash metadata packet 
> (HX_FLV_TAG_TYPE_META: 
> datatype\flash\flv\fileformat\flv_file_format.cpp@1143, 1133)  the bitrate 
> is converted from a float value in Kbps to a UINT32 in bps.  Other file 
> format plugins do this too (eg, datatype\aac\fileformat\aacff.cpp@1059). 
> This value is later written back in the filewriter without converting back 
> to Kbps.  The fix attached converts back to Kbps.
> 
> Files Modified:
> datatype\flash\flv\filewriter\flvarch.cpp
> 
> Image Size and Heap Use impact (Client -Only):
> None.
> 
> Platforms and Profiles Affected:
> Windows, Mac & Linux
> 
> Distribution Libraries Affected:
> None.
> 
> Distribution library impact and planned action:
> None.
> 
> Platforms and Profiles Build Verified:
> Profile: win32-i386-vc7
> Platform: win32
> 
> Platforms and Profiles Functionality verified:
> Profile: win32-i386-vc7
> Platform: win32
> 
> Branch: 310Atlas, HEAD.  If the fix is OK, please let me know where else 
> you'd like this change merged!  Assuming Brizo and other Alas branches but 
> will wait until confirmed.
> 
> Copyright assignment: I am a RealNetworks employee.
> 
> ? Makefile
> ? Umakefil.upp
> ? datatype_flash_flv_filewriter.sln
> ? datatype_flash_flv_filewriter.vcproj
> ? dbg32
> ? flvwrtr.def
> ? ribosome_logs
> Index: flvarch.cpp
> ===================================================================
> RCS file: /cvsroot/datatype/flash/flv/filewriter/flvarch.cpp,v
> retrieving revision 1.1.2.1
> diff -u -2 -0 -r1.1.2.1 flvarch.cpp
> --- flvarch.cpp	18 Sep 2009 19:21:19 -0000	1.1.2.1
> +++ flvarch.cpp	25 Jan 2010 18:28:48 -0000
> @@ -858,48 +858,48 @@
>                  Byte* pData = pBuffer->GetBuffer();
> 
>                  // Header
>                  PackUINT8Inc(&pData, &nPacketSize, 
> HX_FLV_META_AMF_TYPE_STRING);
>                  PackUINT16BEInc(&pData, &nPacketSize, strlen(szOnMetaData));
> 
>                  memcpy(pData, szOnMetaData, strlen(szOnMetaData));
>                  pData += strlen(szOnMetaData);
>                  nPacketSize -= strlen(szOnMetaData);
> 
>                  PackUINT8Inc(&pData, &nPacketSize, 
> HX_FLV_META_AMF_TYPE_MIXEDARRAY);
>                  PackUINT32BEInc(&pData, &nPacketSize, nNumFields);
> 
>                  PackNumberField(&pData, &nPacketSize, szDuration, 
> (double)m_nDuration/1000.);
>                  m_nDurationOffset = m_ulFileOffset + pData - 
> pBuffer->GetBuffer() - 8;
> 
>                  if(m_bHasVideo)
>                  {
>                      PackNumberField(&pData, &nPacketSize, szWidth, 
> (double)m_nWidth);
>                      PackNumberField(&pData, &nPacketSize, szHeight, 
> (double)m_nHeight);
> -                    PackNumberField(&pData, &nPacketSize, szVideoDataRate, 
> (double)m_nVideoBitRate);
> +                    PackNumberField(&pData, &nPacketSize, szVideoDataRate, 
> (double)(m_nVideoBitRate / 1000) + 0.5);
>                      PackNumberField(&pData, &nPacketSize, szFrameRate, 
> m_dVideoFrameRate);
>                      PackNumberField(&pData, &nPacketSize, szVideoCodecID, 
> (double)m_nVideoType);
>                  }
> 
>                  if(m_bHasAudio)
>                  {
> -                    PackNumberField(&pData, &nPacketSize, szAudioDataRate, 
> (double)m_nAudioBitRate);
> +                    PackNumberField(&pData, &nPacketSize, szAudioDataRate, 
> (double)(m_nAudioBitRate / 1000) + 0.5);
>                      PackNumberField(&pData, &nPacketSize, szAudioCodecID, 
> (double)m_nAudioType);
>                  }
> 
>                  HX_ASSERT(nPacketSize == 0);
> 
>                  nResult = WriteBuffer(pBuffer);
>                  HX_RELEASE(pBuffer);
>              }
>          }
>      }
> 
>      m_nAudioPacketInfo = m_nAudioType << 4;
>      switch(m_nSamplesPerSecond)
>      {
>          case 11025:
>              m_nAudioPacketInfo |= 0x1 << 2;
>              break;
>          case 22050:
>              m_nAudioPacketInfo |= 0x2 << 2;
>              break;
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From ehyche at real.com  Tue Jan 26 08:39:20 2010
From: ehyche at real.com (Eric Hyche)
Date: Tue Jan 26 16:00:30 2010
Subject: [datatype-dev] Re: [Nokia-private-dev] CR: ELDG-7ZGKST /
 ou1cimx1#233117 - Helix
 crashes when seeking a mkv clip with 6 channel AC3 audio
In-Reply-To: 
References: 
	
	
Message-ID: 

Looks good to me.

On Jan 25, 2010, at 3:30 PM,   wrote:

> "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: anuj.dhamija@nokia.com
>  
> Reviewed by:
>  
> Date: 01/25/2010
> TSW/Case ID: ELDG-7ZGKST / ou1cimx1#233117
> Synopsis: Helix crashes when seeking a mkv clip with 6 channel AC3 audio
> Overview:
> Crash because for a block based MKV file, when data block is found, it breaks out of loop without skipping the element in source file causing corruption for subsequent reads.
>  
> Fix:
> Skip the element read when breaking out of block read loop in SeekNextPacket method in matroska parser.
>  
> Files modified & changes:
> /datatype/mkv/libmatroska/matroska.cpp
>  
> Image Size and Heap Use impact: None
>  
> Module Release testing (STIF, Audio) : Passed
>  
> Test case(s) Added  : None
>  
> Memory leak check performed : Passed, No leaks found
>  
> Platforms and Profiles Build Verified: helix-client-s60-52-mmf-mdf-dsp
>  
> Branches: 210Cays, HEAD, 420Brizo, 401Brizo, 310Atlas
>  
> CVS Diff:
>  
> Index: Matroska.cpp
> ===================================================================
> RCS file: /cvsroot/xiph/matroskalib/Matroska.cpp,v
> retrieving revision 1.1.1.1.2.2
> diff -u -r1.1.1.1.2.2 Matroska.cpp
> --- Matroska.cpp        10 Dec 2009 22:35:46 -0000      1.1.1.1.2.2
> +++ Matroska.cpp        25 Jan 2010 18:37:36 -0000
> @@ -643,6 +643,8 @@
>  
>                         //reset level
>                         level = 0;
> +
> +                       pElement = m_pES->FindNextElement(*(KaxCluster::ClassInfos->Context), level, 0xFFFFFFFFL, false, 1 );
>  
>                 }
>                 else
> @@ -766,11 +768,10 @@
>                         {
>                                 pElement->SkipData(*m_pES, *pElement->Generic().Context);
>                                 delete pElement;
> +                               pElement = m_pES->FindNextElement(*(KaxCluster::ClassInfos->Context), level, 0xFFFFFFFFL, false, 1 );
>                         }
>                 }
>  
> -               pElement = m_pES->FindNextElement(*(KaxCluster::ClassInfos->Context), level, 0xFFFFFFFFL, false, 1 );
> -
>         }
>  
>         if(streamNumber >= 0)
> @@ -828,6 +829,7 @@
>  
>                         //reset level
>                         level = 0;
> +                       pElement = m_pES->FindNextElement(*(KaxCluster::ClassInfos->Context), level, 0xFFFFFFFFL, false, 1 );
>  
>                 }
>                 else
> @@ -928,10 +930,16 @@
>                                         {
>                                                 delete pBlock;
>                                                 pBlock = NULL;
> +
> +                                               //since we break out of outmost while loop
> +                                               //delete pElement
> +                                               pElement->SkipData(*m_pES, *pElement->Generic().Context);
> +                                               delete pElement;
> +
>                                                 break;
>                                         }
>                                 }
> -                               else if(pBlock)
> +                               if(pBlock)
>                                 {
>                                         delete pBlock;
>                                 }
> @@ -1003,11 +1011,10 @@
>                                         delete pElement;
>                                 }
>                                 bPreserve = FALSE;
> +                               pElement = m_pES->FindNextElement(*(KaxCluster::ClassInfos->Context), level, 0xFFFFFFFFL, false, 1 );
>                         }
>                 }
>  
> -               pElement = m_pES->FindNextElement(*(KaxCluster::ClassInfos->Context), level, 0xFFFFFFFFL, false, 1 );
> -
>         }
>  
>         if(pLastSimpleBlock)
>  
> thnx & regds
> AD
>  
>  
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From ehyche at real.com  Tue Jan 26 08:36:13 2010
From: ehyche at real.com (Eric Hyche)
Date: Tue Jan 26 16:07:27 2010
Subject: [datatype-dev] Re: [Nokia-private-dev] CR: OULM-7Z6EUR - Phone
 crashes while
 playing a MP4 file from SD card with error:MMFcontrollerProxyserver-246
In-Reply-To: 
References: 
Message-ID: <7DECF6B5-E056-47A9-8B54-0A66E2825C5F@real.com>

Looks good to me.

On Jan 26, 2010, at 1:54 AM,   wrote:

>  
> "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:  ext-shashi.merapala@nokia.com
>  
> Reviewed by:  patrick.amick@nokia.com
>  
> Date:  01/26/2010
>  
> Project:  SymbianMmf_wm
>  
> Error Id:  OULM-7Z6EUR
>  
> Synopsis:  Helix Phone crashes while playing a MP4 file from SD card with error:MMFcontrollerProxyserver-246
>  
> Overview:  Error reported mp4 file does not comply with mp4 standards. In ESDS Box, it does not contain DeSpecificTag(0x05), due to which helix crashes. Correction has been made to discard the non-compliant media content and play the file partially.
>            
> Solution:  Diffs attached
>  
> Files added:  None
>  
> Files modified:  \datatype\mp4\payload\mp4apyld.cpp  
>                  \datatype\mp4\payload\mp4vpyld.cpp           
>                            
> Image size and heap use impact:  None
>  
> Module release testing (STIF):  Passed
>  
> Test case(s) added:  No
>  
> Memory leak check performed:  Yes. No new leaks introduced
>  
> Platforms and profiles build verified:  helix-client-s60-52-mmf-mdf-dsp
>  
> Platforms and profiles functionality verified:  armv5, winscw
>  
> Branch:  210CayS, HEAD, 420Brizo
>  
>  
>  
>  
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From ext-liz.fu at nokia.com  Tue Jan 26 08:46:27 2010
From: ext-liz.fu at nokia.com (ext-liz.fu@nokia.com)
Date: Tue Jan 26 16:08:03 2010
Subject: [datatype-dev] CR: Enabling WMDRM feature in Phonon
Message-ID: <218D7B58E1EF544A8DF24C14758BE77028B9226E3A@NOK-EUMSG-02.mgdnok.nokia.com>

Skipped content of type multipart/alternative-------------- next part --------------
Index: Umakefil
===================================================================
RCS file: /cvsroot/datatype/wm/wmdrm/Umakefil,v
retrieving revision 1.1
diff -u -b -r1.1 Umakefil
--- Umakefil	21 Jan 2009 23:01:57 -0000	1.1
+++ Umakefil	25 Jan 2010 23:27:21 -0000
@@ -87,7 +87,7 @@
 project.ExportFunction("CanUnload2", "void")
                 
 
-DLLTarget('hxwmdrmplugin')
+DLLTarget('hxsymwmdrmplugin')
 
 DependTarget()
 
Index: symbian.pcf
===================================================================
RCS file: /cvsroot/datatype/wm/wmdrm/symbian.pcf,v
retrieving revision 1.1
diff -u -b -r1.1 symbian.pcf
--- symbian.pcf	21 Jan 2009 23:02:17 -0000	1.1
+++ symbian.pcf	25 Jan 2010 23:27:21 -0000
@@ -65,4 +65,4 @@
 
 project.AddSources("platform\symbian\symbian_wmdrmplugin.cpp")
 
-project.AddSystemLibraries("AKNNOTIFY.LIB","euser.lib","estlib.lib", "WmDrmDecrypter.lib", "flogger.lib", "efsrv.lib" )
+project.AddSystemLibraries("AKNNOTIFY.LIB","euser.lib","estlib.lib", "wmdrmaccess.lib", "flogger.lib", "efsrv.lib" )
Index: platform/symbian/symbian_wmdrmplugin.cpp
===================================================================
RCS file: /cvsroot/datatype/wm/wmdrm/platform/symbian/symbian_wmdrmplugin.cpp,v
retrieving revision 1.1
diff -u -b -r1.1 symbian_wmdrmplugin.cpp
--- platform/symbian/symbian_wmdrmplugin.cpp	21 Jan 2009 23:02:24 -0000	1.1
+++ platform/symbian/symbian_wmdrmplugin.cpp	25 Jan 2010 23:27:21 -0000
@@ -63,7 +63,7 @@
 #include 
 #include "symbian_wmdrmplugin.h"
 #if defined(HELIX_FEATURE_S60_WMDRM_DOMAIN_API)
-#include "wmdrmdecrypter.h"
+#include "wmdrmaccess.h"
 #endif
 #include "pckunpck.h"
 #include "hxtlogutil.h"
@@ -213,7 +213,7 @@
     
 #if defined(HELIX_FEATURE_S60_WMDRM_DOMAIN_API)
      
-    m_pDrm = CWmDrmDecrypter::NewL();
+    m_pDrm = CWmDrmAccess::NewL();
     if(m_pDrm)
     {
        retCode = HXR_OK;
@@ -317,7 +317,8 @@
         if (pValues->GetPropertyBuffer("WMDRM_V2_Data", pBuffer) == HXR_OK)
         {
 #if defined(HELIX_FEATURE_S60_WMDRM_DOMAIN_API)         
-          dr = m_pDrm->BindRights(pBuffer->GetBuffer(),pBuffer->GetSize());
+            TPtrC8 fileHeader((TUint8 *)pBuffer->GetBuffer(),pBuffer->GetSize());
+            dr = m_pDrm->Initialize (fileHeader);
 #endif          
           if (dr == KErrNone)
           {
@@ -441,7 +442,8 @@
                {
                     pMultiPlayloadPacket->GetPayloadInfo(i, playloadOffSet, playloadSize);
 #if defined(HELIX_FEATURE_S60_WMDRM_DOMAIN_API)                    
-                    dr = m_pDrm->Decrypt(pBufferDataOut, playloadOffSet, playloadSize);
+                    TPtr8 payloadData((TUint8 *)(pBufferDataOut+playloadOffSet), playloadSize, playloadSize);                    
+                    dr = m_pDrm->Decrypt(payloadData);
 #endif                    
                     if (dr == KErrNone)
                     {
Index: pub/platform/symbian/symbian_wmdrmplugin.h
===================================================================
RCS file: /cvsroot/datatype/wm/wmdrm/pub/platform/symbian/symbian_wmdrmplugin.h,v
retrieving revision 1.1
diff -u -b -r1.1 symbian_wmdrmplugin.h
--- pub/platform/symbian/symbian_wmdrmplugin.h	21 Jan 2009 23:02:31 -0000	1.1
+++ pub/platform/symbian/symbian_wmdrmplugin.h	25 Jan 2010 23:27:21 -0000
@@ -72,10 +72,8 @@
 
 #include 
 
-#define HELIX_FEATURE_S60_WMDRM_DOMAIN_API 1
-
 #if defined(HELIX_FEATURE_S60_WMDRM_DOMAIN_API)
-class CWmDrmDecrypter;
+class CWmDrmAccess;
 #endif
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -164,7 +162,7 @@
     UINT32                  m_ulRefCount;
     IUnknown*               m_pContext;
 #if defined(HELIX_FEATURE_S60_WMDRM_DOMAIN_API)    
-    CWmDrmDecrypter*        m_pDrm;
+    CWmDrmAccess*        		m_pDrm;
 #endif    
     IHXErrorMessages*       m_pErrorMsg;
     IHXSourceInput*         m_pSourceSink;
-------------- next part --------------
Index: PhononSis
===================================================================
RCS file: /cvsroot/clientapps/appframeworks/phonon/PhononSis,v
retrieving revision 1.1.2.1
diff -u -b -r1.1.2.1 PhononSis
--- PhononSis	5 Nov 2009 23:38:19 -0000	1.1.2.1
+++ PhononSis	25 Jan 2010 23:30:45 -0000
@@ -135,6 +135,12 @@
             fileHandle.write('copy /B %s %%Prefix%%%s\n' % (fileNames, self.DllDest))
         fileHandle.write('\n')
 
+        for fileNames in additional_lib_names_copy:
+            f = os.path.basename(fileNames)
+            fileNames = fileNames.replace(f, PrefixNameSpace(f))
+            fileHandle.write('copy /B %s %%Prefix%%%s\n' % (fileNames, self.DllDest))
+        fileHandle.write('\n')
+
         for fileNames in cfg_files_copy:
             fileHandle.write('copy %s %%Prefix%%%s\n' % (fileNames, self.CfgDest))
 
@@ -215,6 +221,11 @@
         file = file.replace(f, PrefixNameSpace(f))
         pkg.AddFile(file, '!:\\Sys\\bin\\%s' % os.path.basename(file))
 
+    for file in additional_lib_names_copy:
+        f = os.path.basename(file)
+        file = file.replace(f, PrefixNameSpace(f))
+        pkg.AddFile(file, '!:\\Sys\\bin\\%s' % os.path.basename(file))
+
 else:
 
     pkg.AddPackageDependency(0x101F7960, 0, 0, 0, 'Series60ProductID')
@@ -233,6 +244,11 @@
         file = file.replace(f, PrefixNameSpace(f))
         pkg.AddFile(file, '!:\\system\\libs\\plugins\\dlls\\%s' % os.path.basename(file))
 
+    for file in additional_lib_names_copy:
+        f = os.path.basename(file)
+        file = file.replace(f, PrefixNameSpace(f))
+        pkg.AddFile(file, '!:\\Sys\\bin\\%s' % os.path.basename(file))
+
 if project.IsDefined('HELIX_CONFIG_SYMBIAN_PLATFORM_SECURITY'):
     for file in payld_dll_files_copy:
         pkg.AddFile(file, '!:\\sys\\bin\\%s' % os.path.basename(file))
Index: install.pcf
===================================================================
RCS file: /cvsroot/clientapps/appframeworks/phonon/install.pcf,v
retrieving revision 1.1.2.1
diff -u -b -r1.1.2.1 install.pcf
--- install.pcf	5 Nov 2009 23:38:19 -0000	1.1.2.1
+++ install.pcf	25 Jan 2010 23:30:45 -0000
@@ -214,6 +214,10 @@
      'asfff'           : 'datatype/wm/fileformat/[target]/asfff.dll'
 }
 
+additional_names_map = {
+     'hxsymwmdrmplugin': 'datatype/wm/wmdrm/[target]/hxsymwmdrmplugin.dll'
+}
+
 #
 # some helpers to reduce clutter...
 #
@@ -372,8 +376,8 @@
 # add ASF file format for metadata engine entry 
 AddMetaDataEntry('asfff') 
 
-# add hxwmdrmplugin to *dll_names*.txt 
-#AddAdditionalDLLs('hxwmdrmplugin')
+# add hxsymwmdrmplugin to *dll_names*.txt 
+AddAdditionalDLLs('hxsymwmdrmplugin')
 
 # remove duplicates that fall under multiple features; sort so we can find more easily
 lib_names = StripDupes(lib_names)
-------------- next part --------------
Index: hxclient_4_2_0_brizo.bif
===================================================================
RCS file: /cvsroot/client/build/BIF/hxclient_4_2_0_brizo.bif,v
retrieving revision 1.10
diff -u -b -r1.10 hxclient_4_2_0_brizo.bif
--- hxclient_4_2_0_brizo.bif	14 Jan 2010 12:40:19 -0000	1.10
+++ hxclient_4_2_0_brizo.bif	26 Jan 2010 17:10:50 -0000
@@ -3854,6 +3854,7 @@
             datatype_wm_common
             datatype_dist_wm_rtsp_fileformat
             datatype_dist_wm_http_fileformat
+		        datatype_wm_wmdrm
         
     
     
@@ -4121,6 +4122,31 @@
         
     
 
+    
+    
+        
+        
+
+        
+            common_include
+            common_runtime
+            common_system
+            common_util
+            common_container
+            common_dbgtool
+        
+
+        
+            common_util
+            common_container
+            common_dbgtool
+            common_runtime
+            common_log_logutil
+            common_system
+        
+    
+
+
     
     
       

Index: helix-client-s60-52-ng.pf
===================================================================
RCS file: /cvsroot/ribosome/build/umakepf/helix-client-s60-52-ng.pf,v
retrieving revision 1.1
diff -u -b -r1.1 helix-client-s60-52-ng.pf
--- helix-client-s60-52-ng.pf	21 Aug 2009 18:59:37 -0000	1.1
+++ helix-client-s60-52-ng.pf	26 Jan 2010 17:11:32 -0000
@@ -72,3 +72,8 @@
 exec_profile_file("helix-client-s60-armaudio.pfi")
 exec_profile_file("helix-client-s60-50-common.pfi")
 exec_profile_file("helix-client-s60-52-common.pfi")
+
+project.AddDefines("HELIX_FEATURE_DRM")
+project.AddDefines("HELIX_FEATURE_S60_WMDRM_DOMAIN_API")
+
+
From ext-liz.fu at nokia.com  Tue Jan 26 08:54:38 2010
From: ext-liz.fu at nokia.com (ext-liz.fu@nokia.com)
Date: Tue Jan 26 16:16:42 2010
Subject: [datatype-dev] CR: Enabling WMDRM feature in Phonon
Message-ID: <218D7B58E1EF544A8DF24C14758BE77028B9226E4A@NOK-EUMSG-02.mgdnok.nokia.com>


"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:  ext-liz.fu@nokia.com

Reviewed by:  junhong.liu@nokia.com

Date: 01/25/2010

Project: Phonon_backend

ErrorId: N/A

Synopsis:  Enabling WMDRM in ng-helix

Overview:  WMDRM plug-in was developed more than one year ago with connection to old WMDRM model. In order to use the new model, the domain app of the plug-in needs to be modified. Additionally, WMDRM feature also needs to be enabled in phonon backend.

Solution:
1) Made changes in wmdrm plug-in to connect with wmdrmaccess module.
2) Changed plug-in dll name from hxwmdrmplgin.dll to hxsymwmdrmplugin.dll to avoid conflict with original wmdrm. 3) Enabled hxsymwmdrmplugin.dll in build files.

Files Added:
None.

Files Modified:
/cvsroot/clientapps/appframeworks/phonon/PhononSis
/cvsroot/clientapps/appframeworks/phonon/install.pcf
/cvsroot/client/build/BIF/hxclient_4_2_0_brizo.bif
/cvsroot/ribosome/build/umakepf/helix-client-s60-52-ng.pf
/cvsroot/datatype/wm/wmdrm/Umakefil
/cvsroot/datatype/wm/wmdrm/symbian.pcf
/cvsroot/datatype/wm/wmdrm/platform/symbian/symbian_wmdrmplugin.cpp
/cvsroot/datatype/wm/wmdrm/pub/platform/symbian/symbian_wmdrmplugin.h


Image Size and Heap Use impact: minor

Module Release testing (STIF):  Currently WMDRM only works with audio (either audio only clips, or turn off video for video clips)

Test case(s) Added :  No.

Memory leak check performed : No

Platforms and Profiles Build Verified: helix-client-s60-52-ng

Platforms and Profiles Functionality verified: armv5

Branch: Brizo420, Head

Thanks,
- Liz

Index: hxclient_4_2_0_brizo.bif
===================================================================
RCS file: /cvsroot/client/build/BIF/hxclient_4_2_0_brizo.bif,v
retrieving revision 1.10
diff -u -b -r1.10 hxclient_4_2_0_brizo.bif
--- hxclient_4_2_0_brizo.bif                      14 Jan 2010 12:40:19 -0000                    1.10
+++ hxclient_4_2_0_brizo.bif                   26 Jan 2010 17:10:50 -0000
@@ -3854,6 +3854,7 @@
             datatype_wm_common
             datatype_dist_wm_rtsp_fileformat
             datatype_dist_wm_http_fileformat
+                                                 datatype_wm_wmdrm
         
     

@@ -4121,6 +4122,31 @@
         
     

+    
+    
+        
+        
+
+        
+            common_include
+            common_runtime
+            common_system
+            common_util
+            common_container
+            common_dbgtool
+        
+
+        
+            common_util
+            common_container
+            common_dbgtool
+            common_runtime
+            common_log_logutil
+            common_system
+        
+    
+
+
     
     
       

Index: helix-client-s60-52-ng.pf
===================================================================
RCS file: /cvsroot/ribosome/build/umakepf/helix-client-s60-52-ng.pf,v
retrieving revision 1.1
diff -u -b -r1.1 helix-client-s60-52-ng.pf
--- helix-client-s60-52-ng.pf                      21 Aug 2009 18:59:37 -0000                    1.1
+++ helix-client-s60-52-ng.pf                   26 Jan 2010 17:11:32 -0000
@@ -72,3 +72,8 @@
 exec_profile_file("helix-client-s60-armaudio.pfi")
 exec_profile_file("helix-client-s60-50-common.pfi")
 exec_profile_file("helix-client-s60-52-common.pfi")
+
+project.AddDefines("HELIX_FEATURE_DRM")
+project.AddDefines("HELIX_FEATURE_S60_WMDRM_DOMAIN_API")
+
+

Index: PhononSis
===================================================================
RCS file: /cvsroot/clientapps/appframeworks/phonon/PhononSis,v
retrieving revision 1.1.2.1
diff -u -b -r1.1.2.1 PhononSis
--- PhononSis                     5 Nov 2009 23:38:19 -0000                      1.1.2.1
+++ PhononSis                  25 Jan 2010 23:30:45 -0000
@@ -135,6 +135,12 @@
             fileHandle.write('copy /B %s %%Prefix%%%s\n' % (fileNames, self.DllDest))
         fileHandle.write('\n')

+        for fileNames in additional_lib_names_copy:
+            f = os.path.basename(fileNames)
+            fileNames = fileNames.replace(f, PrefixNameSpace(f))
+            fileHandle.write('copy /B %s %%Prefix%%%s\n' % (fileNames, self.DllDest))
+        fileHandle.write('\n')
+
         for fileNames in cfg_files_copy:
             fileHandle.write('copy %s %%Prefix%%%s\n' % (fileNames, self.CfgDest))

@@ -215,6 +221,11 @@
         file = file.replace(f, PrefixNameSpace(f))
         pkg.AddFile(file, '!:\\Sys\\bin\\%s' % os.path.basename(file))

+    for file in additional_lib_names_copy:
+        f = os.path.basename(file)
+        file = file.replace(f, PrefixNameSpace(f))
+        pkg.AddFile(file, '!:\\Sys\\bin\\%s' % os.path.basename(file))
+
 else:

     pkg.AddPackageDependency(0x101F7960, 0, 0, 0, 'Series60ProductID')
@@ -233,6 +244,11 @@
         file = file.replace(f, PrefixNameSpace(f))
         pkg.AddFile(file, '!:\\system\\libs\\plugins\\dlls\\%s' % os.path.basename(file))

+    for file in additional_lib_names_copy:
+        f = os.path.basename(file)
+        file = file.replace(f, PrefixNameSpace(f))
+        pkg.AddFile(file, '!:\\Sys\\bin\\%s' % os.path.basename(file))
+
 if project.IsDefined('HELIX_CONFIG_SYMBIAN_PLATFORM_SECURITY'):
     for file in payld_dll_files_copy:
         pkg.AddFile(file, '!:\\sys\\bin\\%s' % os.path.basename(file))
Index: install.pcf
===================================================================
RCS file: /cvsroot/clientapps/appframeworks/phonon/install.pcf,v
retrieving revision 1.1.2.1
diff -u -b -r1.1.2.1 install.pcf
--- install.pcf  5 Nov 2009 23:38:19 -0000                      1.1.2.1
+++ install.pcf                     25 Jan 2010 23:30:45 -0000
@@ -214,6 +214,10 @@
      'asfff'           : 'datatype/wm/fileformat/[target]/asfff.dll'
 }

+additional_names_map = {
+     'hxsymwmdrmplugin': 'datatype/wm/wmdrm/[target]/hxsymwmdrmplugin.dll'
+}
+
 #
 # some helpers to reduce clutter...
 #
@@ -372,8 +376,8 @@
 # add ASF file format for metadata engine entry
 AddMetaDataEntry('asfff')

-# add hxwmdrmplugin to *dll_names*.txt
-#AddAdditionalDLLs('hxwmdrmplugin')
+# add hxsymwmdrmplugin to *dll_names*.txt
+AddAdditionalDLLs('hxsymwmdrmplugin')

 # remove duplicates that fall under multiple features; sort so we can find more easily
 lib_names = StripDupes(lib_names)

Index: Umakefil
===================================================================
RCS file: /cvsroot/datatype/wm/wmdrm/Umakefil,v
retrieving revision 1.1
diff -u -b -r1.1 Umakefil
--- Umakefil   21 Jan 2009 23:01:57 -0000                    1.1
+++ Umakefil                      25 Jan 2010 23:27:21 -0000
@@ -87,7 +87,7 @@
 project.ExportFunction("CanUnload2", "void")


-DLLTarget('hxwmdrmplugin')
+DLLTarget('hxsymwmdrmplugin')

 DependTarget()

Index: symbian.pcf
===================================================================
RCS file: /cvsroot/datatype/wm/wmdrm/symbian.pcf,v
retrieving revision 1.1
diff -u -b -r1.1 symbian.pcf
--- symbian.pcf                   21 Jan 2009 23:02:17 -0000                    1.1
+++ symbian.pcf                25 Jan 2010 23:27:21 -0000
@@ -65,4 +65,4 @@

 project.AddSources("platform\symbian\symbian_wmdrmplugin.cpp")

-project.AddSystemLibraries("AKNNOTIFY.LIB","euser.lib","estlib.lib", "WmDrmDecrypter.lib", "flogger.lib", "efsrv.lib" )
+project.AddSystemLibraries("AKNNOTIFY.LIB","euser.lib","estlib.lib", "wmdrmaccess.lib", "flogger.lib", "efsrv.lib" )
Index: platform/symbian/symbian_wmdrmplugin.cpp
===================================================================
RCS file: /cvsroot/datatype/wm/wmdrm/platform/symbian/symbian_wmdrmplugin.cpp,v
retrieving revision 1.1
diff -u -b -r1.1 symbian_wmdrmplugin.cpp
--- platform/symbian/symbian_wmdrmplugin.cpp         21 Jan 2009 23:02:24 -0000                    1.1
+++ platform/symbian/symbian_wmdrmplugin.cpp      25 Jan 2010 23:27:21 -0000
@@ -63,7 +63,7 @@
 #include 
 #include "symbian_wmdrmplugin.h"
 #if defined(HELIX_FEATURE_S60_WMDRM_DOMAIN_API)
-#include "wmdrmdecrypter.h"
+#include "wmdrmaccess.h"
 #endif
 #include "pckunpck.h"
 #include "hxtlogutil.h"
@@ -213,7 +213,7 @@

 #if defined(HELIX_FEATURE_S60_WMDRM_DOMAIN_API)

-    m_pDrm = CWmDrmDecrypter::NewL();
+    m_pDrm = CWmDrmAccess::NewL();
     if(m_pDrm)
     {
        retCode = HXR_OK;
@@ -317,7 +317,8 @@
         if (pValues->GetPropertyBuffer("WMDRM_V2_Data", pBuffer) == HXR_OK)
         {
 #if defined(HELIX_FEATURE_S60_WMDRM_DOMAIN_API)
-          dr = m_pDrm->BindRights(pBuffer->GetBuffer(),pBuffer->GetSize());
+            TPtrC8 fileHeader((TUint8 *)pBuffer->GetBuffer(),pBuffer->GetSize());
+            dr = m_pDrm->Initialize (fileHeader);
 #endif
           if (dr == KErrNone)
           {
@@ -441,7 +442,8 @@
                {
                     pMultiPlayloadPacket->GetPayloadInfo(i, playloadOffSet, playloadSize);
 #if defined(HELIX_FEATURE_S60_WMDRM_DOMAIN_API)
-                    dr = m_pDrm->Decrypt(pBufferDataOut, playloadOffSet, playloadSize);
+                    TPtr8 payloadData((TUint8 *)(pBufferDataOut+playloadOffSet), playloadSize, playloadSize);
+                    dr = m_pDrm->Decrypt(payloadData);
 #endif
                     if (dr == KErrNone)
                     {
Index: pub/platform/symbian/symbian_wmdrmplugin.h
===================================================================
RCS file: /cvsroot/datatype/wm/wmdrm/pub/platform/symbian/symbian_wmdrmplugin.h,v
retrieving revision 1.1
diff -u -b -r1.1 symbian_wmdrmplugin.h
--- pub/platform/symbian/symbian_wmdrmplugin.h      21 Jan 2009 23:02:31 -0000                    1.1
+++ pub/platform/symbian/symbian_wmdrmplugin.h   25 Jan 2010 23:27:21 -0000
@@ -72,10 +72,8 @@

 #include 

-#define HELIX_FEATURE_S60_WMDRM_DOMAIN_API 1
-
 #if defined(HELIX_FEATURE_S60_WMDRM_DOMAIN_API)
-class CWmDrmDecrypter;
+class CWmDrmAccess;
 #endif

 ///////////////////////////////////////////////////////////////////////////////
@@ -164,7 +162,7 @@
     UINT32                  m_ulRefCount;
     IUnknown*               m_pContext;
 #if defined(HELIX_FEATURE_S60_WMDRM_DOMAIN_API)
-    CWmDrmDecrypter*        m_pDrm;
+    CWmDrmAccess*                                                  m_pDrm;
 #endif
     IHXErrorMessages*       m_pErrorMsg;
     IHXSourceInput*         m_pSourceSink;

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100126/0c99b502/attachment-0001.html
From rajesh.rathinasamy at nokia.com  Tue Jan 26 09:48:17 2010
From: rajesh.rathinasamy at nokia.com (rajesh.rathinasamy@nokia.com)
Date: Tue Jan 26 17:10:02 2010
Subject: [datatype-dev] CN: GetPacket call re-entrancy failure in
	fileformats
In-Reply-To: <04CB7997-C5A9-428E-84CA-C8725CE1B65D@real.com>
References: 
	<04CB7997-C5A9-428E-84CA-C8725CE1B65D@real.com>
Message-ID: 

Thanks Eric.

The changes are committed to Head, 210CayS and 420Brizo. 

The initial change in file source (Calling FillBuffer from PacketReady) for Head and Brizo is still pending due to difference between the branches. A separate CR will be sent for head and Brizo.

Thanks,
Rajesh.
 

>-----Original Message-----
>From: ext Eric Hyche [mailto:ehyche@real.com] 
>Sent: Tuesday, January 26, 2010 10:35 AM
>To: Rathinasamy Rajesh (Nokia-D/Dallas)
>Cc: datatype-dev@helixcommunity.org
>Subject: Re: [datatype-dev] CR: GetPacket call re-entrancy 
>failure in fileformats
>
>Looks good.
>
>On Jan 26, 2010, at 11:16 AM,  
> wrote:
>
>>  
>>  
>>  
>> "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: 25-jan-2010
>>  
>> Project:  SymbianMmf
>>  
>> Error Id:  DALM-7ZEU4L
>>  
>> Synopsis: GetPacket call re-entrancy failure in fileformats
>>  
>> Overview: 
>> Recent change in file source for async I/O is to call 
>GetPacket within PacketReady callback. Some fileformats does 
>not handle re-entrancy.
>>  
>> AVi fileformat ended up in calling ReadHeader on RIFF twice 
>consequtively leading to wrong section of data being 
>interpreted as chunk header. This resulted in huge file seek offset.
>> Added a state in AVIState which is set and reset during 
>PacketReady callback and avoided the ScanState when in 
>PacketReady sent state.
>>  
>> XPSFileformat had the issue of losing the getpacket 
>outstanding flag value. Now the flag is reset before passing 
>the packet ready call to filesource.
>>  
>> Following Fileformats were tested with this changes:
>> 3GP / Mp4, rm, asf, mp3, xps, mkv
>>  
>> Also tested thumbnail for avi, 3gp, wmv and rm.
>>  
>>  
>> Files removed: None
>>  
>> Files added:  None
>>  
>> Files modified: 
>> datatype/avi/fileformat/aviffpln.cpp
>> datatype/avi/fileformat/pub/aviffpln.h
>> datatype/xps/fileformat/CXPSFileformat.cpp
>>  
>>  
>> Image size and heap use impact:  None
>>  
>> Module release testing (STIF):  PASSED. Tested on 5.0 as STIF is 
>> crashing on 9.2
>>  
>> Test case(s) added:  No
>>  
>> Memory leak check performed:  No. Unable to execute due to 
>existing leaks.
>>  
>> Platforms and profiles build verified: 
>> helix-client-s60-50-mmf-mdf-dsp, helix-client-s60-52-mmf-mdf-dsp
>>  
>> Platforms and profiles functionality verified:  armv5, winscw
>>  
>> Branch:  210CayS, HEAD, 420Brizo
>>  
>> Index: aviffpln.cpp
>> ===================================================================
>> RCS file: /cvsroot/datatype/avi/fileformat/aviffpln.cpp,v
>> retrieving revision 1.5.6.4
>> diff -w -u -b -r1.5.6.4 aviffpln.cpp
>> --- aviffpln.cpp        5 Jan 2010 17:41:09 -0000       1.5.6.4
>> +++ aviffpln.cpp        26 Jan 2010 01:05:33 -0000
>> @@ -691,7 +691,11 @@
>>          m_pFFResponse->StreamDone(unStreamNumber);
>>      }
>>  
>> +    // Re-entrancy Check
>> +    if(m_state != AS_SendingPacketReady)
>> +    {
>>      ScanState();
>> +    }
>>  
>>      return HXR_OK;
>> }
>> @@ -1539,7 +1543,7 @@
>>                             }
>>                             else
>>                             {
>> -                               
>m_pFFResponse->PacketReady(pnr, NULL);
>> +                               SendPacketReady(pnr, NULL);
>>                             }
>>                         }
>>              break;
>> @@ -1742,7 +1746,7 @@
>>  
>>                  
>> HXLOGL4(HXLOG_AVIX,"CAVIFileFormat[%p]::ScanState\tPacketReady, 
>> stream: %lu\ttimestamp: %lu", this, pPending
>> Packet->GetStreamNumber(), pPendingPacket->GetTime());
>>                  // Warning: core call
>> -                m_pFFResponse->PacketReady(HXR_OK, pPendingPacket);
>> +                SendPacketReady(HXR_OK, pPendingPacket);
>>                  HX_RELEASE(pPendingPacket);
>>  
>>                  // Reentrancy ch eck; if we're closed, return:
>> @@ -2086,3 +2090,29 @@
>> {
>>      return ((char) ulChunkId - '0')*10 + ((char) (ulChunkId >> 8) - 
>> '0'); }
>> +
>> +void CAVIFileFormat::SendPacketReady(HX_RESULT rv, IHXPacket* 
>> +pPacket) {
>> +
>> +  if(m_pFFResponse != NULL)
>> +  {
>> +    // Store current state
>> +    AVIState PrevState = m_state;
>> +    m_state = AS_SendingPacketReady;
>> +
>> +    m_pFFResponse->PacketReady(rv, pPacket);
>> +
>> +    // Check & restore if the state is still the same and 
>not changed because of
>> +    // other re-entrant calls. Eg. AS_Closed.
>> +    if(m_state == AS_SendingPacketReady)
>> +    {
>> +
>> +      m_state = PrevState;
>> +    }
>> +    else
>> +    {
>> +      HXLOGL1(HXLOG_AVIX,"CAVIFileFormat[%p]::SendPacketReady() 
>> + WARNING PrevState:%d CurrState:%d", this, PrevState, m_state
>> );
>> +    }
>> +  } // End of if(m_pFFResponse != NULL)
>> +
>> +}
>> cvs diff: Diffing platform
>> cvs diff: Diffing platform/mac
>> cvs diff: Diffing platform/win
>> cvs diff: Diffing pub
>> Index: pub/aviffpln.h
>> ===================================================================
>> RCS file: /cvsroot/datatype/avi/fileformat/pub/aviffpln.h,v
>> retrieving revision 1.4.6.2
>> diff -w -u -b -r1.4.6.2 aviffpln.h
>> --- pub/aviffpln.h      2 Dec 2009 18:37:13 -0000       1.4.6.2
>> +++ pub/aviffpln.h      26 Jan 2010 01:05:33 -0000
>> @@ -318,6 +318,8 @@
>>  
>>      void IOEvent();
>>  
>> +    void SendPacketReady(HX_RESULT rv, IHXPacket* pPacket);
>> +
>>      char*  m_pszTitle;
>>      char*  m_pszAuthor;
>>      char*  m_pszCopyright;
>> @@ -393,6 +395,7 @@
>>          , AS_GetODMLStreamFilePending // used to initialise stream 
>> for ODML index case #endif
>>          , AS_IOEvent                // PacketReady
>> +        , AS_SendingPacketReady     // Packet sent to 
>fileformat response obj. Added to handle re-entrancy
>>          , AS_Ready
>>          , AS_Closed
>>      }
>>  
>>  
>>  
>> Index: CXPSFileformat.cpp
>> ===================================================================
>> RCS file: /cvsroot/datatype/xps/fileformat/CXPSFileformat.cpp,v
>> retrieving revision 1.1.1.1.2.16
>> diff -w -u -b -r1.1.1.1.2.16 CXPSFileformat.cpp
>> --- CXPSFileformat.cpp  14 Sep 2009 05:41:06 -0000      1.1.1.1.2.16
>> +++ CXPSFileformat.cpp  26 Jan 2010 01:06:27 -0000
>> @@ -907,8 +907,9 @@
>>              {
>>                  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);
>> +                m_pFFResponse->PacketReady(HXR_OK, pPacket);
>> +
>>  
>>                  if( (m_parrStreams[uStreamid].IsStreamDone()) &&
>>                      (m_parrStreams[uStreamid].IsStreamEmpty()) )
>>  
>>  
>> 
>
>Eric Hyche (ehyche@real.com)
>Principal Engineer
>RealNetworks, Inc.
>
>
>
From ext-liz.fu at nokia.com  Tue Jan 26 09:48:14 2010
From: ext-liz.fu at nokia.com (ext-liz.fu@nokia.com)
Date: Tue Jan 26 17:10:49 2010
Subject: [datatype-dev] RE: CR: Enabling WMDRM feature in Phonon
In-Reply-To: <218D7B58E1EF544A8DF24C14758BE77028B9226E4A@NOK-EUMSG-02.mgdnok.nokia.com>
References: <218D7B58E1EF544A8DF24C14758BE77028B9226E4A@NOK-EUMSG-02.mgdnok.nokia.com>
Message-ID: <218D7B58E1EF544A8DF24C14758BE77028B9226E9D@NOK-EUMSG-02.mgdnok.nokia.com>

Missed one file

Index: helix.bif
===================================================================
RCS file: /cvsroot/common/build/BIF/helix.bif,v
retrieving revision 1.792
diff -u -b -r1.792 helix.bif
--- helix.bif 21 Jan 2010 02:05:51 -0000 1.792
+++ helix.bif 26 Jan 2010 18:40:54 -0000
@@ -3835,6 +3835,7 @@
             datatype_wm_common
             datatype_dist_wm_rtsp_fileformat
             datatype_dist_wm_http_fileformat
+          datatype_wm_wmdrm
         
     

@@ -4129,6 +4130,30 @@
         
     

+    
+    
+        
+        
+
+        
+            common_include
+            common_runtime
+            common_system
+            common_util
+            common_container
+            common_dbgtool
+        
+
+        
+            common_util
+            common_container
+            common_dbgtool
+            common_runtime
+            common_log_logutil
+            common_system
+        
+    
+
     
     
         


________________________________
From: nokia-private-dev-bounces@helixcommunity.org [mailto:nokia-private-dev-bounces@helixcommunity.org] On Behalf Of Fu Liz (EXT-DextraTech/Dallas)
Sent: Tuesday, January 26, 2010 10:55 AM
To: ribosome-dev@helixcommunity.org; clientapp-dev@helixcommunity.org; datatype-dev@helixcommunity.org; nokia-private-dev@helixcommunity.org
Subject: [Nokia-private-dev] CR: Enabling WMDRM feature in Phonon


"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:  ext-liz.fu@nokia.com

Reviewed by:  junhong.liu@nokia.com

Date: 01/25/2010

Project: Phonon_backend

ErrorId: N/A

Synopsis:  Enabling WMDRM in ng-helix

Overview:  WMDRM plug-in was developed more than one year ago with connection to old WMDRM model. In order to use the new model, the domain app of the plug-in needs to be modified. Additionally, WMDRM feature also needs to be enabled in phonon backend.

Solution:
1) Made changes in wmdrm plug-in to connect with wmdrmaccess module.
2) Changed plug-in dll name from hxwmdrmplgin.dll to hxsymwmdrmplugin.dll to avoid conflict with original wmdrm. 3) Enabled hxsymwmdrmplugin.dll in build files.

Files Added:
None.

Files Modified:
/cvsroot/clientapps/appframeworks/phonon/PhononSis
/cvsroot/clientapps/appframeworks/phonon/install.pcf
/cvsroot/client/build/BIF/hxclient_4_2_0_brizo.bif
/cvsroot/ribosome/build/umakepf/helix-client-s60-52-ng.pf
/cvsroot/datatype/wm/wmdrm/Umakefil
/cvsroot/datatype/wm/wmdrm/symbian.pcf
/cvsroot/datatype/wm/wmdrm/platform/symbian/symbian_wmdrmplugin.cpp
/cvsroot/datatype/wm/wmdrm/pub/platform/symbian/symbian_wmdrmplugin.h


Image Size and Heap Use impact: minor

Module Release testing (STIF):  Currently WMDRM only works with audio (either audio only clips, or turn off video for video clips)

Test case(s) Added :  No.

Memory leak check performed : No

Platforms and Profiles Build Verified: helix-client-s60-52-ng

Platforms and Profiles Functionality verified: armv5

Branch: Brizo420, Head

Thanks,
- Liz

Index: hxclient_4_2_0_brizo.bif
===================================================================
RCS file: /cvsroot/client/build/BIF/hxclient_4_2_0_brizo.bif,v
retrieving revision 1.10
diff -u -b -r1.10 hxclient_4_2_0_brizo.bif
--- hxclient_4_2_0_brizo.bif                      14 Jan 2010 12:40:19 -0000                    1.10
+++ hxclient_4_2_0_brizo.bif                   26 Jan 2010 17:10:50 -0000
@@ -3854,6 +3854,7 @@
             datatype_wm_common
             datatype_dist_wm_rtsp_fileformat
             datatype_dist_wm_http_fileformat
+                                                 datatype_wm_wmdrm
         
     

@@ -4121,6 +4122,31 @@
         
     

+    
+    
+        
+        
+
+        
+            common_include
+            common_runtime
+            common_system
+            common_util
+            common_container
+            common_dbgtool
+        
+
+        
+            common_util
+            common_container
+            common_dbgtool
+            common_runtime
+            common_log_logutil
+            common_system
+        
+    
+
+
     
     
       

Index: helix-client-s60-52-ng.pf
===================================================================
RCS file: /cvsroot/ribosome/build/umakepf/helix-client-s60-52-ng.pf,v
retrieving revision 1.1
diff -u -b -r1.1 helix-client-s60-52-ng.pf
--- helix-client-s60-52-ng.pf                      21 Aug 2009 18:59:37 -0000                    1.1
+++ helix-client-s60-52-ng.pf                   26 Jan 2010 17:11:32 -0000
@@ -72,3 +72,8 @@
 exec_profile_file("helix-client-s60-armaudio.pfi")
 exec_profile_file("helix-client-s60-50-common.pfi")
 exec_profile_file("helix-client-s60-52-common.pfi")
+
+project.AddDefines("HELIX_FEATURE_DRM")
+project.AddDefines("HELIX_FEATURE_S60_WMDRM_DOMAIN_API")
+
+

Index: PhononSis
===================================================================
RCS file: /cvsroot/clientapps/appframeworks/phonon/PhononSis,v
retrieving revision 1.1.2.1
diff -u -b -r1.1.2.1 PhononSis
--- PhononSis                     5 Nov 2009 23:38:19 -0000                      1.1.2.1
+++ PhononSis                  25 Jan 2010 23:30:45 -0000
@@ -135,6 +135,12 @@
             fileHandle.write('copy /B %s %%Prefix%%%s\n' % (fileNames, self.DllDest))
         fileHandle.write('\n')

+        for fileNames in additional_lib_names_copy:
+            f = os.path.basename(fileNames)
+            fileNames = fileNames.replace(f, PrefixNameSpace(f))
+            fileHandle.write('copy /B %s %%Prefix%%%s\n' % (fileNames, self.DllDest))
+        fileHandle.write('\n')
+
         for fileNames in cfg_files_copy:
             fileHandle.write('copy %s %%Prefix%%%s\n' % (fileNames, self.CfgDest))

@@ -215,6 +221,11 @@
         file = file.replace(f, PrefixNameSpace(f))
         pkg.AddFile(file, '!:\\Sys\\bin\\%s' % os.path.basename(file))

+    for file in additional_lib_names_copy:
+        f = os.path.basename(file)
+        file = file.replace(f, PrefixNameSpace(f))
+        pkg.AddFile(file, '!:\\Sys\\bin\\%s' % os.path.basename(file))
+
 else:

     pkg.AddPackageDependency(0x101F7960, 0, 0, 0, 'Series60ProductID')
@@ -233,6 +244,11 @@
         file = file.replace(f, PrefixNameSpace(f))
         pkg.AddFile(file, '!:\\system\\libs\\plugins\\dlls\\%s' % os.path.basename(file))

+    for file in additional_lib_names_copy:
+        f = os.path.basename(file)
+        file = file.replace(f, PrefixNameSpace(f))
+        pkg.AddFile(file, '!:\\Sys\\bin\\%s' % os.path.basename(file))
+
 if project.IsDefined('HELIX_CONFIG_SYMBIAN_PLATFORM_SECURITY'):
     for file in payld_dll_files_copy:
         pkg.AddFile(file, '!:\\sys\\bin\\%s' % os.path.basename(file))
Index: install.pcf
===================================================================
RCS file: /cvsroot/clientapps/appframeworks/phonon/install.pcf,v
retrieving revision 1.1.2.1
diff -u -b -r1.1.2.1 install.pcf
--- install.pcf  5 Nov 2009 23:38:19 -0000                      1.1.2.1
+++ install.pcf                     25 Jan 2010 23:30:45 -0000
@@ -214,6 +214,10 @@
      'asfff'           : 'datatype/wm/fileformat/[target]/asfff.dll'
 }

+additional_names_map = {
+     'hxsymwmdrmplugin': 'datatype/wm/wmdrm/[target]/hxsymwmdrmplugin.dll'
+}
+
 #
 # some helpers to reduce clutter...
 #
@@ -372,8 +376,8 @@
 # add ASF file format for metadata engine entry
 AddMetaDataEntry('asfff')

-# add hxwmdrmplugin to *dll_names*.txt
-#AddAdditionalDLLs('hxwmdrmplugin')
+# add hxsymwmdrmplugin to *dll_names*.txt
+AddAdditionalDLLs('hxsymwmdrmplugin')

 # remove duplicates that fall under multiple features; sort so we can find more easily
 lib_names = StripDupes(lib_names)

Index: Umakefil
===================================================================
RCS file: /cvsroot/datatype/wm/wmdrm/Umakefil,v
retrieving revision 1.1
diff -u -b -r1.1 Umakefil
--- Umakefil   21 Jan 2009 23:01:57 -0000                    1.1
+++ Umakefil                      25 Jan 2010 23:27:21 -0000
@@ -87,7 +87,7 @@
 project.ExportFunction("CanUnload2", "void")


-DLLTarget('hxwmdrmplugin')
+DLLTarget('hxsymwmdrmplugin')

 DependTarget()

Index: symbian.pcf
===================================================================
RCS file: /cvsroot/datatype/wm/wmdrm/symbian.pcf,v
retrieving revision 1.1
diff -u -b -r1.1 symbian.pcf
--- symbian.pcf                   21 Jan 2009 23:02:17 -0000                    1.1
+++ symbian.pcf                25 Jan 2010 23:27:21 -0000
@@ -65,4 +65,4 @@

 project.AddSources("platform\symbian\symbian_wmdrmplugin.cpp")

-project.AddSystemLibraries("AKNNOTIFY.LIB","euser.lib","estlib.lib", "WmDrmDecrypter.lib", "flogger.lib", "efsrv.lib" )
+project.AddSystemLibraries("AKNNOTIFY.LIB","euser.lib","estlib.lib", "wmdrmaccess.lib", "flogger.lib", "efsrv.lib" )
Index: platform/symbian/symbian_wmdrmplugin.cpp
===================================================================
RCS file: /cvsroot/datatype/wm/wmdrm/platform/symbian/symbian_wmdrmplugin.cpp,v
retrieving revision 1.1
diff -u -b -r1.1 symbian_wmdrmplugin.cpp
--- platform/symbian/symbian_wmdrmplugin.cpp         21 Jan 2009 23:02:24 -0000                    1.1
+++ platform/symbian/symbian_wmdrmplugin.cpp      25 Jan 2010 23:27:21 -0000
@@ -63,7 +63,7 @@
 #include 
 #include "symbian_wmdrmplugin.h"
 #if defined(HELIX_FEATURE_S60_WMDRM_DOMAIN_API)
-#include "wmdrmdecrypter.h"
+#include "wmdrmaccess.h"
 #endif
 #include "pckunpck.h"
 #include "hxtlogutil.h"
@@ -213,7 +213,7 @@

 #if defined(HELIX_FEATURE_S60_WMDRM_DOMAIN_API)

-    m_pDrm = CWmDrmDecrypter::NewL();
+    m_pDrm = CWmDrmAccess::NewL();
     if(m_pDrm)
     {
        retCode = HXR_OK;
@@ -317,7 +317,8 @@
         if (pValues->GetPropertyBuffer("WMDRM_V2_Data", pBuffer) == HXR_OK)
         {
 #if defined(HELIX_FEATURE_S60_WMDRM_DOMAIN_API)
-          dr = m_pDrm->BindRights(pBuffer->GetBuffer(),pBuffer->GetSize());
+            TPtrC8 fileHeader((TUint8 *)pBuffer->GetBuffer(),pBuffer->GetSize());
+            dr = m_pDrm->Initialize (fileHeader);
 #endif
           if (dr == KErrNone)
           {
@@ -441,7 +442,8 @@
                {
                     pMultiPlayloadPacket->GetPayloadInfo(i, playloadOffSet, playloadSize);
 #if defined(HELIX_FEATURE_S60_WMDRM_DOMAIN_API)
-                    dr = m_pDrm->Decrypt(pBufferDataOut, playloadOffSet, playloadSize);
+                    TPtr8 payloadData((TUint8 *)(pBufferDataOut+playloadOffSet), playloadSize, playloadSize);
+                    dr = m_pDrm->Decrypt(payloadData);
 #endif
                     if (dr == KErrNone)
                     {
Index: pub/platform/symbian/symbian_wmdrmplugin.h
===================================================================
RCS file: /cvsroot/datatype/wm/wmdrm/pub/platform/symbian/symbian_wmdrmplugin.h,v
retrieving revision 1.1
diff -u -b -r1.1 symbian_wmdrmplugin.h
--- pub/platform/symbian/symbian_wmdrmplugin.h      21 Jan 2009 23:02:31 -0000                    1.1
+++ pub/platform/symbian/symbian_wmdrmplugin.h   25 Jan 2010 23:27:21 -0000
@@ -72,10 +72,8 @@

 #include 

-#define HELIX_FEATURE_S60_WMDRM_DOMAIN_API 1
-
 #if defined(HELIX_FEATURE_S60_WMDRM_DOMAIN_API)
-class CWmDrmDecrypter;
+class CWmDrmAccess;
 #endif

 ///////////////////////////////////////////////////////////////////////////////
@@ -164,7 +162,7 @@
     UINT32                  m_ulRefCount;
     IUnknown*               m_pContext;
 #if defined(HELIX_FEATURE_S60_WMDRM_DOMAIN_API)
-    CWmDrmDecrypter*        m_pDrm;
+    CWmDrmAccess*                                                  m_pDrm;
 #endif
     IHXErrorMessages*       m_pErrorMsg;
     IHXSourceInput*         m_pSourceSink;

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100126/7409121f/attachment-0001.html
From ehyche at real.com  Tue Jan 26 10:32:09 2010
From: ehyche at real.com (Eric Hyche)
Date: Tue Jan 26 17:53:09 2010
Subject: [datatype-dev] Re: [Nokia-private-dev] CR: Enabling WMDRM feature
	in Phonon
In-Reply-To: <218D7B58E1EF544A8DF24C14758BE77028B9226E3A@NOK-EUMSG-02.mgdnok.nokia.com>
References: <218D7B58E1EF544A8DF24C14758BE77028B9226E3A@NOK-EUMSG-02.mgdnok.nokia.com>
Message-ID: <3D3F59AC-771B-470C-9FDD-89DFD61428B0@real.com>

Changes look good to me.

Eric

On Jan 26, 2010, at 11:46 AM,   wrote:

>  
> "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:  ext-liz.fu@nokia.com
>  
> Reviewed by:  junhong.liu@nokia.com
>  
> Date: 01/25/2010
>  
> Project: Phonon_backend
>  
> ErrorId: N/A
>  
> Synopsis:  Enabling WMDRM in ng-helix
>  
> Overview:  WMDRM plug-in was developed more than one year ago with connection to old WMDRM model. In order to use the new model, the domain app of the plug-in needs to be modified. Additionally, WMDRM feature also needs to be enabled in phonon backend.
>            
> Solution: 
> 1) Made changes in wmdrm plug-in to connect with wmdrmaccess module.  
> 2) Changed plug-in dll name from hxwmdrmplgin.dll to hxsymwmdrmplugin.dll to avoid conflict with original wmdrm. 3) Enabled hxsymwmdrmplugin.dll in build files.
>  
> Files Added:
> None.
>  
> Files Modified:
> /cvsroot/clientapps/appframeworks/phonon/PhononSis
> /cvsroot/clientapps/appframeworks/phonon/install.pcf
> /cvsroot/client/build/BIF/hxclient_4_2_0_brizo.bif
> /cvsroot/ribosome/build/umakepf/helix-client-s60-52-ng.pf
> /cvsroot/datatype/wm/wmdrm/Umakefil
> /cvsroot/datatype/wm/wmdrm/symbian.pcf
> /cvsroot/datatype/wm/wmdrm/platform/symbian/symbian_wmdrmplugin.cpp
> /cvsroot/datatype/wm/wmdrm/pub/platform/symbian/symbian_wmdrmplugin.h
>  
>  
> Image Size and Heap Use impact: minor
>  
> Module Release testing (STIF):  Currently WMDRM only works with audio (either audio only clips, or turn off video for video clips)
>  
> Test case(s) Added :  No.
>  
> Memory leak check performed : No
>  
> Platforms and Profiles Build Verified: helix-client-s60-52-ng
>  
> Platforms and Profiles Functionality verified: armv5
>  
> Branch: Brizo420, Head
>  
> Thanks,
> - Liz
>  
>  
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From ext-sudhir.1.mishra at nokia.com  Tue Jan 26 10:39:46 2010
From: ext-sudhir.1.mishra at nokia.com (ext-sudhir.1.mishra@nokia.com)
Date: Tue Jan 26 18:01:00 2010
Subject: [datatype-dev] RE: [Nokia-private-dev] CR: OULM-7Z6EUR - Phone
	crashes while playing a MP4 file from SD card with
	error:MMFcontrollerProxyserver-246
In-Reply-To: <7DECF6B5-E056-47A9-8B54-0A66E2825C5F@real.com>
References: 
	<7DECF6B5-E056-47A9-8B54-0A66E2825C5F@real.com>
Message-ID: <0D5D8A0728D4FC43BB0A2393C9AE8F17277B7E789E@NOK-EUMSG-02.mgdnok.nokia.com>

Checked into  210CayS,  420Brizo, HEAD.

Thanks.

Warm regards,
Sudhir

-----Original Message-----
From: nokia-private-dev-bounces@helixcommunity.org [mailto:nokia-private-dev-bounces@helixcommunity.org] On Behalf Of ext Eric Hyche
Sent: Tuesday, January 26, 2010 10:36 AM
To: Merapala Shashi (EXT-Sasken/Bangalore)
Cc: nokia-private-dev@helixcommunity.org; datatype-dev@helixcommunity.org
Subject: Re: [Nokia-private-dev] CR: OULM-7Z6EUR - Phone crashes while playing a MP4 file from SD card with error:MMFcontrollerProxyserver-246

Looks good to me.

On Jan 26, 2010, at 1:54 AM,   wrote:

>  
> "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:  ext-shashi.merapala@nokia.com
>  
> Reviewed by:  patrick.amick@nokia.com
>  
> Date:  01/26/2010
>  
> Project:  SymbianMmf_wm
>  
> Error Id:  OULM-7Z6EUR
>  
> Synopsis:  Helix Phone crashes while playing a MP4 file from SD card 
> with error:MMFcontrollerProxyserver-246
>  
> Overview:  Error reported mp4 file does not comply with mp4 standards. In ESDS Box, it does not contain DeSpecificTag(0x05), due to which helix crashes. Correction has been made to discard the non-compliant media content and play the file partially.
>            
> Solution:  Diffs attached
>  
> Files added:  None
>  
> Files modified:  \datatype\mp4\payload\mp4apyld.cpp  
>                  \datatype\mp4\payload\mp4vpyld.cpp           
>                            
> Image size and heap use impact:  None
>  
> Module release testing (STIF):  Passed
>  
> Test case(s) added:  No
>  
> Memory leak check performed:  Yes. No new leaks introduced
>  
> Platforms and profiles build verified:  
> helix-client-s60-52-mmf-mdf-dsp
>  
> Platforms and profiles functionality verified:  armv5, winscw
>  
> Branch:  210CayS, HEAD, 420Brizo
>  
>  
>  
>  
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



_______________________________________________
Nokia-private-dev mailing list
Nokia-private-dev@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/nokia-private-dev

From anuj.dhamija at nokia.com  Tue Jan 26 10:59:00 2010
From: anuj.dhamija at nokia.com (anuj.dhamija@nokia.com)
Date: Tue Jan 26 18:21:24 2010
Subject: [datatype-dev] CN: ELDG-7ZGKST / ou1cimx1#233117 - Helix crashes
 when seeking a mkv clip with 6 channel AC3 audio
In-Reply-To: 
References: 
	
	
	
Message-ID: 

Checked in: 210Cays, HEAD, 420Brizo, 401Brizo, 310Atlas

Thnx & regds
AD

-----Original Message-----
From: ext Eric Hyche [mailto:ehyche@real.com] 
Sent: Tuesday, January 26, 2010 10:39 AM
To: Dhamija Anuj (Nokia-D/Dallas)
Cc: datatype-dev@helixcommunity.org; nokia-private-dev@helixcommunity.org
Subject: Re: [Nokia-private-dev] CR: ELDG-7ZGKST / ou1cimx1#233117 - Helix crashes when seeking a mkv clip with 6 channel AC3 audio

Looks good to me.

On Jan 25, 2010, at 3:30 PM,   wrote:

> "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: anuj.dhamija@nokia.com
>  
> Reviewed by:
>  
> Date: 01/25/2010
> TSW/Case ID: ELDG-7ZGKST / ou1cimx1#233117
> Synopsis: Helix crashes when seeking a mkv clip with 6 channel AC3 audio
> Overview:
> Crash because for a block based MKV file, when data block is found, it breaks out of loop without skipping the element in source file causing corruption for subsequent reads.
>  
> Fix:
> Skip the element read when breaking out of block read loop in SeekNextPacket method in matroska parser.
>  
> Files modified & changes:
> /datatype/mkv/libmatroska/matroska.cpp
>  
> Image Size and Heap Use impact: None
>  
> Module Release testing (STIF, Audio) : Passed
>  
> Test case(s) Added  : None
>  
> Memory leak check performed : Passed, No leaks found
>  
> Platforms and Profiles Build Verified: helix-client-s60-52-mmf-mdf-dsp
>  
> Branches: 210Cays, HEAD, 420Brizo, 401Brizo, 310Atlas
>  
> CVS Diff:
>  
> Index: Matroska.cpp
> ===================================================================
> RCS file: /cvsroot/xiph/matroskalib/Matroska.cpp,v
> retrieving revision 1.1.1.1.2.2
> diff -u -r1.1.1.1.2.2 Matroska.cpp
> --- Matroska.cpp        10 Dec 2009 22:35:46 -0000      1.1.1.1.2.2
> +++ Matroska.cpp        25 Jan 2010 18:37:36 -0000
> @@ -643,6 +643,8 @@
>  
>                         //reset level
>                         level = 0;
> +
> +                       pElement = m_pES->FindNextElement(*(KaxCluster::ClassInfos->Context), level, 0xFFFFFFFFL, false, 1 );
>  
>                 }
>                 else
> @@ -766,11 +768,10 @@
>                         {
>                                 pElement->SkipData(*m_pES, *pElement->Generic().Context);
>                                 delete pElement;
> +                               pElement = m_pES->FindNextElement(*(KaxCluster::ClassInfos->Context), level, 0xFFFFFFFFL, false, 1 );
>                         }
>                 }
>  
> -               pElement = m_pES->FindNextElement(*(KaxCluster::ClassInfos->Context), level, 0xFFFFFFFFL, false, 1 );
> -
>         }
>  
>         if(streamNumber >= 0)
> @@ -828,6 +829,7 @@
>  
>                         //reset level
>                         level = 0;
> +                       pElement = m_pES->FindNextElement(*(KaxCluster::ClassInfos->Context), level, 0xFFFFFFFFL, false, 1 );
>  
>                 }
>                 else
> @@ -928,10 +930,16 @@
>                                         {
>                                                 delete pBlock;
>                                                 pBlock = NULL;
> +
> +                                               //since we break out of outmost while loop
> +                                               //delete pElement
> +                                               pElement->SkipData(*m_pES, *pElement->Generic().Context);
> +                                               delete pElement;
> +
>                                                 break;
>                                         }
>                                 }
> -                               else if(pBlock)
> +                               if(pBlock)
>                                 {
>                                         delete pBlock;
>                                 }
> @@ -1003,11 +1011,10 @@
>                                         delete pElement;
>                                 }
>                                 bPreserve = FALSE;
> +                               pElement = m_pES->FindNextElement(*(KaxCluster::ClassInfos->Context), level, 0xFFFFFFFFL, false, 1 );
>                         }
>                 }
>  
> -               pElement = m_pES->FindNextElement(*(KaxCluster::ClassInfos->Context), level, 0xFFFFFFFFL, false, 1 );
> -
>         }
>  
>         if(pLastSimpleBlock)
>  
> thnx & regds
> AD
>  
>  
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From ext-anugrah.2.kashari at nokia.com  Tue Jan 26 20:36:22 2010
From: ext-anugrah.2.kashari at nokia.com (ext-anugrah.2.kashari@nokia.com)
Date: Wed Jan 27 03:57:24 2010
Subject: [datatype-dev] RE: [Nokia-private-dev] CR: EMVK-7ZHK6H : Frame rate
	and MCU load
	during H.264 720p 30fps with multichannel audio local Video Playb 
In-Reply-To: 
References: 
	
Message-ID: 

Thanks Eric, 
Checked in 210Cays, Brizo420 & Head 

-----Original Message-----
From: nokia-private-dev-bounces@helixcommunity.org [mailto:nokia-private-dev-bounces@helixcommunity.org] On Behalf Of ext Eric Hyche
Sent: Tuesday, January 26, 2010 10:07 PM
To: Mukunda Ram (EXT-Sasken/Bangalore)
Cc: nokia-private-dev@helixcommunity.org; datatype-dev@helixcommunity.org
Subject: Re: [Nokia-private-dev] CR: EMVK-7ZHK6H : Frame rate and MCU load during H.264 720p 30fps with multichannel audio local Video Playb 

Looks good.

On Jan 26, 2010, at 3:08 AM,   wrote:

> "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: ext-anugrah.2.kashari@nokia.com
>  
> Review By: yury.ramanovich@nokia.com
>  
> Error-ID:  EMVK-7ZHK6H
>  
> Date : 26/01/2010
>  
> Project: SymbianMmf_wm
>  
> Synopsis:  Frame rate and MCU load during H.264 720p 30fps with multichannel audio local Video Playb
>  
> Overview :  CMMFDevVideoPlay:: ConfigureDecoderL() leaves with error code KErrCorrupt (-20). In CMDFDevVideoClient this is converted to HXR_CORRUPT_FILE, but in CMdfVideoAdapter it is again converted to the generic HXR_FAIL. HXMMFCtrlImp converts HXR_FAIL to KErrGeneral(-2) therefore UI displays wrong message to user.
>  
> Fix:  We have kept current error mapping intact and added check for KErrCorrupt.
>  
> Files modified & changes 210Cays , Brizo420 and Head :
> /cvsroot/datatype/mdf/video/renderer/mdfvideoadapter.cpp                    
>  
> Image Size and Heap Use impact: No major impact
>  
> Module Release testing (STIF) :  NA
>  
> Test case(s) Added : No
>  
> Memory leak check performed : Passed, No additional leaks introduced.
>  
> Platforms and Profiles Build Verified: helix-client-s60-52-mmf-mdf-dsp                                                                              
>  
> Platforms and Profiles Functionality verified: armv5
>  
> Branch : 210Cays, Brizo420 & Head :
>  
> CVS Diff: attached.
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



_______________________________________________
Nokia-private-dev mailing list
Nokia-private-dev@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/nokia-private-dev

From deepakj at real.com  Wed Jan 27 04:05:18 2010
From: deepakj at real.com (Deepak Jain)
Date: Wed Jan 27 11:26:11 2010
Subject: [datatype-dev] CR: Fix for invalid timestamp issue while doing
	FF in Mpeg4 for LG-MID ARM
In-Reply-To: <5A3AC884-90C2-45A1-81B3-2200ABA40037@real.com>
References: <4B5D8B9F.1050108@real.com>
	<5A3AC884-90C2-45A1-81B3-2200ABA40037@real.com>
Message-ID: <4B602BFE.5090706@real.com>

Hi Eric,

Your suggestion is incorporated and attached is the updated diff.

Thanks,
Deepak Jain


Eric Hyche wrote:
> Deepak,
>
> It seems to me that the bug is in velproxy.cpp. If the incoming packet is an IHXRTPPacket, then the outgoing packet should be an IHXRTPPacket as well, just with a scaled timestamps. Sounds like velproxy is making everything into an IHXPacket.
>
> Eric
>
> On Jan 25, 2010, at 7:16 AM, Deepak Jain wrote:
>
>   
>> Project: Real Player for MID - ARM.
>>
>> Synopsis: Fix for invalid timestamp issue while doing FF in Mpeg4 for LG-MID ARM
>>
>> Overview: 
>> When we do FF in a Mp4 file, we get the packet from the assembler from the function CreateHXCodecPacket().
>> In mp4vpyld, we are setting the packet time from function GetPacketTime() and we use RTP Packet time.
>> This RTP packet time gets set in CreateHXCodecPacket() function while creating the packet.
>>
>> Now when we do FF, in file velproxy.cpp, inside function ReTimeStampAndSendPacket(), we create a IHXPacket and sets RTP time as 0xFFFFFFFF.
>> Now when this time is received in GetPacketTime() inside mp4vpyld.cpp and subsequently this packet time is further provided to the Hardware decoder, it do not work correctly.
>>
>> This issue is resolved by applying a check in GetPacketTime() function.
>> If we get RTP time as 0xFFFFFFFF, we set time from the packet time instead and set the m_bUsesRTPPackets=FALSE.
>> Attached is the diff.
>>
>> Files Modified:
>> datatype/mp4/payload/mp4vpyld.cpp
>>
>> Image Size and Heap Use impact (Client -Only):
>> None.
>>
>> Platforms and Profiles Affected:
>> None.
>>
>> Distribution Libraries Affected:
>> None.
>>
>> Distribution library impact and planned action:
>> None.
>>
>> Platforms and Profiles Build Verified:
>> BIF: hxclient_3_4_11_atlas_restricted
>> Target: player_mid_all_installers
>> Profile: helix-client-mid-arm
>>
>> Branch:
>> Atlas_3411
>>
>> Files Attached:
>> mp4vpyld.txt
>>
>> Thanks,
>> Deepak Jain
>> 
>>     
>
> Eric Hyche (ehyche@real.com)
> Principal Engineer
> RealNetworks, Inc.
>
>
>
>   

-------------- next part --------------
A non-text attachment was scrubbed...
Name: velproxy.diff
Type: text/x-patch
Size: 2894 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100127/a5d29452/velproxy-0001.bin
From gahluwalia at real.com  Wed Jan 27 04:37:04 2010
From: gahluwalia at real.com (Gurpreet)
Date: Wed Jan 27 11:57:56 2010
Subject: [datatype-dev] CR: Fix for Bug 10021: a mp4 file with simple@L1
 profile can not be played in OI File Manager: Merge from Head
Message-ID: <4B603370.8010909@real.com>

Synopsis:
Fix for Bug 10021: a mp4 file with simple@L1 profile can not be played 
in OI File Manager

Overview:
In this mp4 file.
'mp4v' sample descriptor contain a Pixel Aspect Ratio ('pasp') atom 
before MPEG-4 Elementary Stream Descriptor Atom ('esds')
Thus shifting the Opaquedata offset by 16 bytes.
This fix is merged from head.

Files Modified:
datatype/mp4/fileformat/qtatmmgs.cpp 

Image Size and Heap Use impact (Client -Only):
None

Platforms and Profiles Build Verified:
BIF branch            -> atlas 361
Target(s)                -> android_all
Profile                    -> helix-client-android-surf_8x50
SYSTEM_ID        -> android-donut-arm.eabi

Files Attached::
mp4ff.diff

Thanks & Best Regards,
Gurpreet
-------------- next part --------------
Index: qtatmmgs.cpp
===================================================================
RCS file: /cvsroot/datatype/mp4/fileformat/qtatmmgs.cpp,v
retrieving revision 1.33.2.22.2.5
diff -u -r1.33.2.22.2.5 qtatmmgs.cpp
--- qtatmmgs.cpp	23 Dec 2009 03:13:02 -0000	1.33.2.22.2.5
+++ qtatmmgs.cpp	27 Jan 2010 12:16:56 -0000
@@ -2073,8 +2073,27 @@
                            (((CQT_stsd_Atom::VideoMP4ArrayEntry*)
                            pSampleDescEntry)->pHeight));
 
-			m_pOpaqueData = ((CQT_stsd_Atom::VideoMP4ArrayEntry*)
-			    pSampleDescEntry)->pESDescriptor;
+                 UINT8* pExtnAtomsBuffer = ((UINT8*)(((CQT_stsd_Atom::VideoMP4ArrayEntry*)pSampleDescEntry)->pClutID)) + 2;
+                 UINT32 ulExtnAtomsSize = ulSampleDescEntrySize -(pExtnAtomsBuffer - ((UINT8*)pSampleDescEntry));
+
+                 UINT32 ulSize = 0;
+                 while(ulExtnAtomsSize >= ulSize + 8)
+                 {
+                     // 0x65736473 is the 'esds' atom type.
+                     if (CQTAtom::GetUL32(pExtnAtomsBuffer + ulSize + 4) == 0x65736473)
+                     {
+                         m_pOpaqueData = ((CQT_stsd_Atom::VideoMP4ArrayEntry*)
+                         pSampleDescEntry)->pESDescriptor + ulSize;
+                         break;
+                     }
+                     // Getting next atom size and checking for infinite looping
+                     UINT32 ulAtomSize = CQTAtom::GetUL32(pExtnAtomsBuffer + ulSize);
+                     if ( ulAtomSize == 0 )
+                     {
+                         break;
+                     }
+                     ulSize += ulAtomSize;
+                 }
 		    }
 		    break;
 		case QT_MJPG:
From pbasic at real.com  Wed Jan 27 05:08:43 2010
From: pbasic at real.com (Petar Basic)
Date: Wed Jan 27 12:30:00 2010
Subject: [datatype-dev] CR/CN: Added installer/archiver project.
	[GMPMetaEditor branch]
Message-ID: <9b8350411001270508n3eee42f3gd033b581a6769067@mail.gmail.com>

Modified by: pbasic at real.com
Date: 2010/01/27
Project: GMPMetaEditor (meta3gp.exe)

Synopsis:
Added installer/archiver project. [GMPMetaEditor branch]

Details:
A simple archive is all that is currently needed to distribute
GMPMetaEditor application.  Umakefil writes out customized target
command which calls a python script to build the archive.
'create_dist_archive.py' script copies program binaries and some other
files to the staging area.  As the last step, the script archives the
whole staging directory into a single file (ZIP on Windows, TGZ on
Solaris).

Files Modified:
datatype_rn/tools/dtdriver/apps/meta3gp/installer/Umakefil
datatype_rn/tools/dtdriver/apps/meta3gp/installer/create_dist_archive.py
datatype_rn/tools/dtdriver/apps/meta3gp/installer/platform/win32/msvcp71.dll
datatype_rn/tools/dtdriver/apps/meta3gp/installer/platform/win32/msvcp71d.dll
datatype_rn/tools/dtdriver/apps/meta3gp/installer/platform/win32/msvcr71.dll
datatype_rn/tools/dtdriver/apps/meta3gp/installer/platform/win32/msvcr71d.dll
GMPMetaEditor_internal.bif

Platforms and Profiles Affected:
All

Image Size and Heap Use impact:
None

Platforms and Profiles Build Verified:
system id: win32-i386-vc7, sunos-5.10-sparc-server
profile: helix-client-all-defines

Platforms and Profiles Functionality Verified:
x86 Windows XP SP2
Sparc SunOS 5.10

Branch:
GMPMetaEditor

Copyright assignment:
I am a RealNetworks employee or contractor.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: datatype_rn_tools_dtdriver_apps_meta3gp_installer.diff
Type: application/octet-stream
Size: 8507 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100127/b70c3248/datatype_rn_tools_dtdriver_apps_meta3gp_installer.obj
-------------- next part --------------
A non-text attachment was scrubbed...
Name: GMPMetaEditor_internal.bif.diff
Type: application/octet-stream
Size: 4677 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100127/b70c3248/GMPMetaEditor_internal.bif.obj
From ehyche at real.com  Wed Jan 27 07:32:43 2010
From: ehyche at real.com (Eric Hyche)
Date: Wed Jan 27 14:53:23 2010
Subject: [datatype-dev] CR: Fix for Bug 10021: a mp4 file with simple@L1
	profile can not be played in OI File Manager: Merge from Head
In-Reply-To: <4B603370.8010909@real.com>
References: <4B603370.8010909@real.com>
Message-ID: <79AD54DB-C9A1-4887-9FF2-1581163D821C@real.com>

Looks good.

On Jan 27, 2010, at 7:37 AM, Gurpreet wrote:

> Synopsis:
> Fix for Bug 10021: a mp4 file with simple@L1 profile can not be played 
> in OI File Manager
> 
> Overview:
> In this mp4 file.
> 'mp4v' sample descriptor contain a Pixel Aspect Ratio ('pasp') atom 
> before MPEG-4 Elementary Stream Descriptor Atom ('esds')
> Thus shifting the Opaquedata offset by 16 bytes.
> This fix is merged from head.
> 
> Files Modified:
> datatype/mp4/fileformat/qtatmmgs.cpp 
> 
> Image Size and Heap Use impact (Client -Only):
> None
> 
> Platforms and Profiles Build Verified:
> BIF branch            -> atlas 361
> Target(s)                -> android_all
> Profile                    -> helix-client-android-surf_8x50
> SYSTEM_ID        -> android-donut-arm.eabi
> 
> Files Attached::
> mp4ff.diff
> 
> Thanks & Best Regards,
> Gurpreet
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From ext-liz.fu at nokia.com  Wed Jan 27 12:33:04 2010
From: ext-liz.fu at nokia.com (ext-liz.fu@nokia.com)
Date: Wed Jan 27 19:54:16 2010
Subject: [datatype-dev] CN: Enabling WMDRM feature in Phonon
In-Reply-To: <3D3F59AC-771B-470C-9FDD-89DFD61428B0@real.com>
References: <218D7B58E1EF544A8DF24C14758BE77028B9226E3A@NOK-EUMSG-02.mgdnok.nokia.com>
	<3D3F59AC-771B-470C-9FDD-89DFD61428B0@real.com>
Message-ID: <218D7B58E1EF544A8DF24C14758BE77028B9227986@NOK-EUMSG-02.mgdnok.nokia.com>

Checked in on 420Brizo.

Thanks,
Liz 

-----Original Message-----
From: ext Eric Hyche [mailto:ehyche@real.com] 
Sent: Tuesday, January 26, 2010 12:32 PM
To: Fu Liz (EXT-DextraTech/Dallas)
Cc: clientapp-dev@helixcommunity.org; datatype-dev@helixcommunity.org; nokia-private-dev@helixcommunity.org
Subject: Re: [Nokia-private-dev] CR: Enabling WMDRM feature in Phonon

Changes look good to me.

Eric

On Jan 26, 2010, at 11:46 AM,   wrote:

>  
> "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:  ext-liz.fu@nokia.com
>  
> Reviewed by:  junhong.liu@nokia.com
>  
> Date: 01/25/2010
>  
> Project: Phonon_backend
>  
> ErrorId: N/A
>  
> Synopsis:  Enabling WMDRM in ng-helix
>  
> Overview:  WMDRM plug-in was developed more than one year ago with connection to old WMDRM model. In order to use the new model, the domain app of the plug-in needs to be modified. Additionally, WMDRM feature also needs to be enabled in phonon backend.
>            
> Solution: 
> 1) Made changes in wmdrm plug-in to connect with wmdrmaccess module.  
> 2) Changed plug-in dll name from hxwmdrmplgin.dll to hxsymwmdrmplugin.dll to avoid conflict with original wmdrm. 3) Enabled hxsymwmdrmplugin.dll in build files.
>  
> Files Added:
> None.
>  
> Files Modified:
> /cvsroot/clientapps/appframeworks/phonon/PhononSis
> /cvsroot/clientapps/appframeworks/phonon/install.pcf
> /cvsroot/client/build/BIF/hxclient_4_2_0_brizo.bif
> /cvsroot/ribosome/build/umakepf/helix-client-s60-52-ng.pf
> /cvsroot/datatype/wm/wmdrm/Umakefil
> /cvsroot/datatype/wm/wmdrm/symbian.pcf
> /cvsroot/datatype/wm/wmdrm/platform/symbian/symbian_wmdrmplugin.cpp
> /cvsroot/datatype/wm/wmdrm/pub/platform/symbian/symbian_wmdrmplugin.h
>  
>  
> Image Size and Heap Use impact: minor
>  
> Module Release testing (STIF):  Currently WMDRM only works with audio 
> (either audio only clips, or turn off video for video clips)
>  
> Test case(s) Added :  No.
>  
> Memory leak check performed : No
>  
> Platforms and Profiles Build Verified: helix-client-s60-52-ng
>  
> Platforms and Profiles Functionality verified: armv5
>  
> Branch: Brizo420, Head
>  
> Thanks,
> - Liz
>  
>  
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From ext-liz.fu at nokia.com  Wed Jan 27 14:02:39 2010
From: ext-liz.fu at nokia.com (ext-liz.fu@nokia.com)
Date: Wed Jan 27 21:23:43 2010
Subject: [datatype-dev] RE: [Nokia-private-dev] CR: Enabling WMDRM feature
	in Phonon
In-Reply-To: <3D3F59AC-771B-470C-9FDD-89DFD61428B0@real.com>
References: <218D7B58E1EF544A8DF24C14758BE77028B9226E3A@NOK-EUMSG-02.mgdnok.nokia.com>
	<3D3F59AC-771B-470C-9FDD-89DFD61428B0@real.com>
Message-ID: <218D7B58E1EF544A8DF24C14758BE77028B92279D3@NOK-EUMSG-02.mgdnok.nokia.com>

Checked into HEAD.

Thanks,
Liz 

-----Original Message-----
From: ext Eric Hyche [mailto:ehyche@real.com] 
Sent: Tuesday, January 26, 2010 12:32 PM
To: Fu Liz (EXT-DextraTech/Dallas)
Cc: clientapp-dev@helixcommunity.org; datatype-dev@helixcommunity.org; nokia-private-dev@helixcommunity.org
Subject: Re: [Nokia-private-dev] CR: Enabling WMDRM feature in Phonon

Changes look good to me.

Eric

On Jan 26, 2010, at 11:46 AM,   wrote:

>  
> "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:  ext-liz.fu@nokia.com
>  
> Reviewed by:  junhong.liu@nokia.com
>  
> Date: 01/25/2010
>  
> Project: Phonon_backend
>  
> ErrorId: N/A
>  
> Synopsis:  Enabling WMDRM in ng-helix
>  
> Overview:  WMDRM plug-in was developed more than one year ago with connection to old WMDRM model. In order to use the new model, the domain app of the plug-in needs to be modified. Additionally, WMDRM feature also needs to be enabled in phonon backend.
>            
> Solution: 
> 1) Made changes in wmdrm plug-in to connect with wmdrmaccess module.  
> 2) Changed plug-in dll name from hxwmdrmplgin.dll to hxsymwmdrmplugin.dll to avoid conflict with original wmdrm. 3) Enabled hxsymwmdrmplugin.dll in build files.
>  
> Files Added:
> None.
>  
> Files Modified:
> /cvsroot/clientapps/appframeworks/phonon/PhononSis
> /cvsroot/clientapps/appframeworks/phonon/install.pcf
> /cvsroot/client/build/BIF/hxclient_4_2_0_brizo.bif
> /cvsroot/ribosome/build/umakepf/helix-client-s60-52-ng.pf
> /cvsroot/datatype/wm/wmdrm/Umakefil
> /cvsroot/datatype/wm/wmdrm/symbian.pcf
> /cvsroot/datatype/wm/wmdrm/platform/symbian/symbian_wmdrmplugin.cpp
> /cvsroot/datatype/wm/wmdrm/pub/platform/symbian/symbian_wmdrmplugin.h
>  
>  
> Image Size and Heap Use impact: minor
>  
> Module Release testing (STIF):  Currently WMDRM only works with audio 
> (either audio only clips, or turn off video for video clips)
>  
> Test case(s) Added :  No.
>  
> Memory leak check performed : No
>  
> Platforms and Profiles Build Verified: helix-client-s60-52-ng
>  
> Platforms and Profiles Functionality verified: armv5
>  
> Branch: Brizo420, Head
>  
> Thanks,
> - Liz
>  
>  
> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From deepakj at real.com  Wed Jan 27 23:28:34 2010
From: deepakj at real.com (Deepak Jain)
Date: Thu Jan 28 06:49:08 2010
Subject: [datatype-dev] [RESENDING] CR: Fix for invalid timestamp issue
 while doing FF in Mpeg4 for LG-MID ARM]
Message-ID: <4B613CA2.6080401@real.com>

Skipped content of type multipart/alternative-------------- next part --------------
An embedded message was scrubbed...
From: Deepak Jain 
Subject: Re: [datatype-dev] CR: Fix for invalid timestamp issue while doing
	FF in Mpeg4 for LG-MID ARM
Date: Wed, 27 Jan 2010 17:35:18 +0530
Size: 10168
Url: http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100128/2d6a4f50/FixforinvalidtimestampissuewhiledoingFFinMpeg4forLG-MIDARM-0001.eml
From ehyche at real.com  Thu Jan 28 13:19:27 2010
From: ehyche at real.com (Eric Hyche)
Date: Thu Jan 28 20:40:03 2010
Subject: [datatype-dev] CR: fix broken RealMedia file format due to RIFF
	Reader
Message-ID: <7ECCEA249B7CDC49A079EC0075E999AA07D91EBBEC@SEAMBX.corp.real.com>

Suggested Reviewer: Jamie

Description
-------------------------------------------------------
A recent change in the RIFF reader caused the Realmedia file format to fail completely on single-rate RealMedia files. Jamie backed out the fix on server branches (I think), and the CR here fixes this on the HEAD.

The problem was that the RIFF reader was assuming that the file object it got was seeked all the way back to the beginning, and after the previous change, it was not. This CR always seeks file object owned by the RIFF reader owned by the interleaved stream class back to 0 before using it.

Files Modified
-----------------------------------
datatype/common/util/riff.cpp
datatype/common/util/pub/riff.h

Branches
-----------------------------------
HEAD only


Eric Hyche
Principal Engineer, RealNetworks
ehyche@real.com
-------------- next part --------------
Index: riff.cpp
===================================================================
RCS file: /cvsroot/datatype/common/util/riff.cpp,v
retrieving revision 1.18
diff -u -w -r1.18 riff.cpp
--- riff.cpp	15 Jan 2010 03:17:28 -0000	1.18
+++ riff.cpp	28 Jan 2010 16:44:57 -0000
@@ -218,18 +218,31 @@
 
     HX_RELEASE(m_pFileStatObj);
     if ( !m_pFileObject )
+    {
     return HXR_UNEXPECTED;
+    }
 
+    // QI for IHXFileStat
     HX_RESULT retVal = m_pFileObject->QueryInterface(IID_IHXFileStat, (void **) &m_pFileStatObj);    
-    if(SUCCEEDED(retVal)  && (m_pFileStatObj->Stat((IHXFileStatResponse *) this) == HXR_OK))
+    if (SUCCEEDED(retVal))
     {
-        return status;
+        // QI for IHXFileStat succeeded, so set the state
+        m_state = RS_StatDonePending;
+        // Do the Stat
+        retVal = m_pFileStatObj->Stat((IHXFileStatResponse *) this);
     }
     else
     {
-    m_state = RS_GetFileTypePending;
-    return m_pFileObject->Read(sizeof(UINT32) * 2);
+        // QI for IHXFileStat failed, so skip the Stat and seek to 
+        // the beginning of the file. Set the state.
+        m_state = RS_InitialSeekDonePending;
+        // Set the desired seek offset
+        m_ulSeekOffset = 0;
+        // Seek the file to the beginning
+        retVal = m_pFileObject->Seek(m_ulSeekOffset, FALSE);
 }
+
+    return retVal;
 }
 
 /////////////////////////////////////////////////////////////////////////
@@ -243,6 +256,11 @@
 				      UINT32 ulModificationTime,
 				      UINT32 ulMode)
 {
+    // Check the state
+    if (m_state != RS_StatDonePending)
+    {
+        return HXR_UNEXPECTED;
+    }
     // We're finished with the IHXFileStat interface, so we'll release it:
     HX_RELEASE(m_pFileStatObj);
 
@@ -252,8 +270,12 @@
         // actual duration for all streams using it.
         m_ulTotalFileSizeInBytes = ulSize;
     }
-    m_state = RS_GetFileTypePending;
-    return m_pFileObject->Read(sizeof(UINT32) * 2);	
+    // Now we need to seek the file to the beginning, so set the state
+    m_state = RS_InitialSeekDonePending;
+    // Set the desired seek offset
+    m_ulSeekOffset = 0;
+    // Seek the file to the beginning
+    return m_pFileObject->Seek(m_ulSeekOffset, FALSE);
 }
 
 UINT32 CRIFFReader::GetTotalFileSize()
@@ -736,6 +758,15 @@
 
     switch ( m_state )
     {
+        case RS_InitialSeekDonePending:
+            // We have seeked the file object back to the beginning,
+            // so now we can read the first chunk header.
+            //
+            // Set the state
+            m_state = RS_GetFileTypePending;
+            // Read the first two UINT32's in the file
+            result = m_pFileObject->Read(sizeof(UINT32) * 2);
+            return (HXR_OK == status ? result : status);
         case RS_ChunkBodySeekPending:
             m_state = RS_ChunkHeaderReadPending;
             result = m_pFileObject->Read(sizeof(UINT32) + sizeof(UINT32));
Index: pub\riff.h
===================================================================
RCS file: /cvsroot/datatype/common/util/pub/riff.h,v
retrieving revision 1.9
diff -u -w -r1.9 riff.h
--- pub\riff.h	15 Jan 2010 03:17:31 -0000	1.9
+++ pub\riff.h	28 Jan 2010 16:44:57 -0000
@@ -231,6 +231,8 @@
     {
     RS_Ready,
     RS_InitPending,
+        RS_StatDonePending,
+        RS_InitialSeekDonePending,
     RS_ChunkHeaderReadPending,
     RS_FileStartSeekPending,
     RS_ChunkBodySeekPending,
From jgordon at real.com  Thu Jan 28 13:33:44 2010
From: jgordon at real.com (Jamie Gordon)
Date: Thu Jan 28 20:54:16 2010
Subject: [datatype-dev] CR: fix broken RealMedia file format due to RIFF
	Reader
In-Reply-To: <7ECCEA249B7CDC49A079EC0075E999AA07D91EBBEC@SEAMBX.corp.real.com>
References: <7ECCEA249B7CDC49A079EC0075E999AA07D91EBBEC@SEAMBX.corp.real.com>
Message-ID: <4B6202B8.7040001@real.com>

Looks good Eric.

On 1/28/2010 1:19 PM, Eric Hyche wrote:
> Suggested Reviewer: Jamie
> 
> Description
> -------------------------------------------------------
> A recent change in the RIFF reader caused the Realmedia file format to fail completely on single-rate RealMedia files. Jamie backed out the fix on server branches (I think), and the CR here fixes this on the HEAD.
> 
> The problem was that the RIFF reader was assuming that the file object it got was seeked all the way back to the beginning, and after the previous change, it was not. This CR always seeks file object owned by the RIFF reader owned by the interleaved stream class back to 0 before using it.
> 
> Files Modified
> -----------------------------------
> datatype/common/util/riff.cpp
> datatype/common/util/pub/riff.h
> 
> Branches
> -----------------------------------
> HEAD only
> 
> 
> Eric Hyche
> Principal Engineer, RealNetworks
> ehyche@real.com
> 

From ehyche at real.com  Thu Jan 28 13:43:01 2010
From: ehyche at real.com (Eric Hyche)
Date: Thu Jan 28 21:03:22 2010
Subject: [datatype-dev] CR: fix broken RealMedia file format due to RIFF
	Reader
In-Reply-To: <4B620338.2060903@real.com>
References: <7ECCEA249B7CDC49A079EC0075E999AA07D91EBBEC@SEAMBX.corp.real.com>
	<4B620338.2060903@real.com>
Message-ID: 

Sushant: the checkin you made here:

http://lists.helixcommunity.org/pipermail/datatype-dev/2010-January/008906.html

broke RealMedia file format for interleaved streams. Can you please merge the
fix below into all the branches (besides HEAD, I'll do that) for which you 
checked in the RIFF reader changes above?

Thanks,

Eric

On Jan 28, 2010, at 4:35 PM, Jamie Gordon wrote:

> You might find you need this in other branches - if I recall correctly
> the Stat change went into like 4-5 client branches
> 
> On 1/28/2010 1:19 PM, Eric Hyche wrote:
>> Suggested Reviewer: Jamie
>> 
>> Description
>> -------------------------------------------------------
>> A recent change in the RIFF reader caused the Realmedia file format to fail completely on single-rate RealMedia files. Jamie backed out the fix on server branches (I think), and the CR here fixes this on the HEAD.
>> 
>> The problem was that the RIFF reader was assuming that the file object it got was seeked all the way back to the beginning, and after the previous change, it was not. This CR always seeks file object owned by the RIFF reader owned by the interleaved stream class back to 0 before using it.
>> 
>> Files Modified
>> -----------------------------------
>> datatype/common/util/riff.cpp
>> datatype/common/util/pub/riff.h
>> 
>> Branches
>> -----------------------------------
>> HEAD only
>> 
>> 
>> Eric Hyche
>> Principal Engineer, RealNetworks
>> ehyche@real.com
>> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



From ltani at real.com  Thu Jan 28 13:54:11 2010
From: ltani at real.com (Leina Tani)
Date: Thu Jan 28 21:14:35 2010
Subject: [datatype-dev] CR: fix broken RealMedia file format due to RIFF
	Reader
In-Reply-To: 
References: <7ECCEA249B7CDC49A079EC0075E999AA07D91EBBEC@SEAMBX.corp.real.com>
	<4B620338.2060903@real.com>
	
Message-ID: <766B5A29D28DA442AB229AAEE2AFC44507D90A2F46@SEAMBX.corp.real.com>

Hi Eric,

Sushant was notified by Enyro of the break last night but didn't have a resolution yet.  Thanks for the help on this one and Sushant will complete the requested merges tomorrow.

-leina


-----Original Message-----
From: datatype-dev-bounces@helixcommunity.org [mailto:datatype-dev-bounces@helixcommunity.org] On Behalf Of Eric Hyche
Sent: Thursday, January 28, 2010 1:43 PM
To: datatype-dev@helixcommunity.org
Subject: Re: [datatype-dev] CR: fix broken RealMedia file format due to RIFF Reader

Sushant: the checkin you made here:

http://lists.helixcommunity.org/pipermail/datatype-dev/2010-January/008906.html

broke RealMedia file format for interleaved streams. Can you please merge the
fix below into all the branches (besides HEAD, I'll do that) for which you 
checked in the RIFF reader changes above?

Thanks,

Eric

On Jan 28, 2010, at 4:35 PM, Jamie Gordon wrote:

> You might find you need this in other branches - if I recall correctly
> the Stat change went into like 4-5 client branches
> 
> On 1/28/2010 1:19 PM, Eric Hyche wrote:
>> Suggested Reviewer: Jamie
>> 
>> Description
>> -------------------------------------------------------
>> A recent change in the RIFF reader caused the Realmedia file format to fail completely on single-rate RealMedia files. Jamie backed out the fix on server branches (I think), and the CR here fixes this on the HEAD.
>> 
>> The problem was that the RIFF reader was assuming that the file object it got was seeked all the way back to the beginning, and after the previous change, it was not. This CR always seeks file object owned by the RIFF reader owned by the interleaved stream class back to 0 before using it.
>> 
>> Files Modified
>> -----------------------------------
>> datatype/common/util/riff.cpp
>> datatype/common/util/pub/riff.h
>> 
>> Branches
>> -----------------------------------
>> HEAD only
>> 
>> 
>> Eric Hyche
>> Principal Engineer, RealNetworks
>> ehyche@real.com
>> 

Eric Hyche (ehyche@real.com)
Principal Engineer
RealNetworks, Inc.



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

From jgordon at real.com  Thu Jan 28 16:08:12 2010
From: jgordon at real.com (Jamie Gordon)
Date: Thu Jan 28 23:28:47 2010
Subject: [datatype-dev] CR: PR 257042: Higher bitrate MP4 file from CS4
 encoder has bad QoS via RTSP-RTP
Message-ID: <4B6226EC.9060701@real.com>

Synopsis
========
Fixes PR 257042 and probably several other unhinted h.264 bugs

Branches: SERVER_14_0, HEAD (SERVER_CURRENT)
Suggested Reviewer: anyone (ehyche?)


Description
===========
This fixes several problems with the h.264 packetizer.

Primary issue is that it was not converting to the proper RTP clock
rate (90kHz), instead passing through the rate and timestamps
from the source samples. Most encoders use 90kHz anyway so it works,
but CS4 is using 30kHz. This is fixed to convert to correct clock rate.

The above fix uncovered a strange issue with the timestamp converter
that is badly screwing up in some cases. It seems that when the fixed
point converter was added, it was set as the default rather than the
floating point converter. The floating point version does not exhibit
the issues seen by the fixed point one, and I'm pretty sure that float
is what we want anyway on server platforms. So I set server profiles to
the floating point timestamp converter.

The packetizer was not quite setting the ASMRule and ASMFlags correctly
in some cases such as NALU fragmented over more than two packets.
ASMRule was also clearly incorrect for multi-rate, as it is hard-coding
0 and 1.


Files Affected
==============
datatype/mp4/payload/h264packetizer.cpp
datatype/mp4/payload/pub/h264packetizer.h
ribosome/build/umakepf/helix-server-client-common.pf


Testing Performed
=================
Unit Tests:

Integration Tests:
On two boxes, tested the content in the PR with RealPlayer (w/native
h.264), QuickTime, and VLC, each using every supported transport
combination (rtp and rdt with udp, tcp, and http)

Leak Tests:

Performance Tests:

Platforms Tested: linux-rhel5-i686
Build verified: linux-rhel5-i686


QA Hints
===============

This should fix various unhinted h.264 bugs - I need to still go through
the other open bugs and test and resolve as appropriate.

All testing done using PPM. There appear to be separate issues
with MDP which affect this and I think are already logged.

Playback still stinks with QuickTime. This is clearly a player issue, as
local playback of the file is identically awful.

The high and quite variable bitrate of the content tends to cause packet
loss over UDP, especially near the beginning. With RealPlayer RDT/UDP,
all resends are successful and playback is flawless and uninterrupted.
With RTP/UDP, minor effects of the loss are noticeable with both RP and
VLC (not noticeable with QT because playback is so bad anyway!)




-------------- next part --------------
Index: datatype/mp4/payload/h264packetizer.cpp
===================================================================
RCS file: /cvsroot/datatype/mp4/payload/h264packetizer.cpp,v
retrieving revision 1.8
diff -u -w -r1.8 h264packetizer.cpp
--- datatype/mp4/payload/h264packetizer.cpp	27 Oct 2009 15:50:45 -0000	1.8
+++ datatype/mp4/payload/h264packetizer.cpp	28 Jan 2010 23:34:43 -0000
@@ -64,6 +64,8 @@
 #include "sdptools.h"
 #include "rtsputil.h"
 #include "pckunpck.h"
+#include "tsconvrt.h"
+
 #include "hxver.h"
 #include "mp4payload.ver"
 
@@ -93,6 +95,7 @@
 #define DOND_ATOM_LENGTH          1
 #define TS_OFFSET_16_ATOM_LENGTH  2
 #define TS_OFFSET_24_ATOM_LENGTH  3
+#define RTP_H264_CLOCK_RATE         90000
 #define MP4V_H264_PAYLOAD_MIME_TYPE         "video/H264"
 
 const char* const H264Packetizer::zm_pDescription    = "RealNetworks H264 Packetizer Plugin";
@@ -110,6 +113,8 @@
     , m_bPendingFlush(FALSE)
     , m_bInterleavingDone(FALSE)
     , m_pContext(NULL)
+    , m_pTSConverter(NULL)
+    , m_bFirstPacket(FALSE)
 {}
 
 H264Packetizer::~H264Packetizer()
@@ -330,6 +335,7 @@
     Reset();
         
     HX_RELEASE(m_pCCF);
+    HX_DELETE(m_pTSConverter);
 
     return HXR_OK;
 }
@@ -342,6 +348,12 @@
     m_bFragmented = FALSE;
     m_bPendingFlush = FALSE; 
     m_bInterleavingDone = FALSE;
+    m_bFirstPacket = TRUE;
+
+    if (m_pTSConverter)
+    {
+        m_pTSConverter->Reset();
+    }
 
     return HXR_OK;
 }
@@ -360,6 +372,10 @@
     res = AddHeaderMimeType();
     if(SUCCEEDED(res))
     {
+        res = InitClockRate();
+    }
+    if(SUCCEEDED(res))
+    {
         res = AddHeaderSDPData();
     }
     m_pHeader->SetPropertyULONG32("Hinted", 0);
@@ -389,6 +405,19 @@
     return res;
 }
 
+HX_RESULT
+H264Packetizer::InitClockRate()
+{
+    HX_RESULT res = HXR_OK;
+    UINT32 ulInputRate = 1000;
+    m_pHeader->GetPropertyULONG32("SamplesPerSecond", ulInputRate);
+    if (ulInputRate != RTP_H264_CLOCK_RATE)
+    {
+        m_pTSConverter = new CTSConverter(ulInputRate, RTP_H264_CLOCK_RATE);
+        res = m_pHeader->SetPropertyULONG32("SamplesPerSecond", RTP_H264_CLOCK_RATE);
+    }
+    return res;
+}
 
 HX_RESULT
 H264Packetizer::AddHeaderSDPData()
@@ -600,19 +629,35 @@
     if (pNALPacket)
     {
         pNALPacket->packetValid = TRUE;
-        pNALPacket->rtpPacket = FALSE;
-        pNALPacket->pBuffer = pPacket->GetBuffer();
-        pNALPacket->ulTimeStamp = pPacket->GetTime();
-        pNALPacket->usStream = pPacket->GetStreamNumber();
-        pNALPacket->uASMFlags = pPacket->GetASMFlags();
-        pNALPacket->usASMRule = ASM_RULE_0;
 
         if (pPacket->QueryInterface(IID_IHXRTPPacket, (void **)&pRPkt) == HXR_OK)
         {
+            UINT32 ulRTPInTime = 0;
+            pRPkt->GetRTP(pNALPacket->pBuffer, pNALPacket->ulTimeStamp, 
+                            ulRTPInTime, pNALPacket->usStream, 
+                            pNALPacket->uASMFlags, pNALPacket->usASMRule);
+
+            if (m_bFirstPacket)
+            {
+                m_pTSConverter->SetOffset(ulRTPInTime, FALSE);
+                m_bFirstPacket = FALSE;
+            }
             pNALPacket->rtpPacket = TRUE;
-            pNALPacket->ulRTPTimeStamp = pRPkt->GetRTPTime();
+            pNALPacket->ulRTPTimeStamp = !m_pTSConverter ? ulRTPInTime :
+                m_pTSConverter->Convert(ulRTPInTime);
+
             HX_RELEASE(pRPkt);
         }
+        else
+        {
+            pPacket->Get(pNALPacket->pBuffer, pNALPacket->ulTimeStamp, 
+                        pNALPacket->usStream, pNALPacket->uASMFlags, 
+                        pNALPacket->usASMRule);
+            pNALPacket->rtpPacket = FALSE;
+        }
+        // Set NAL packet's ASM rule to the base rule
+        // (even rule, marker bit off)
+        pNALPacket->usASMRule &= 0xFFFE;
     }
     return pNALPacket;
 }
@@ -684,7 +729,8 @@
     if(bPacketAdded)
     {
         pNALPacket = (CNALPacket *)m_NALPacketList.GetTail();
-        pNALPacket->usASMRule = pPacket->GetASMRuleNumber();
+        // set the last NAL packet of the access unit to marker ON rule
+        pNALPacket->usASMRule |= 0x0001;
     }
     HX_RELEASE(pBuf);
 
@@ -793,29 +839,33 @@
                                                       (void**)&pBuf)) &&
                     (HXR_OK == pBuf->SetSize(ulPacketLength)))
                 {
-                    UINT8 uiASMFlags = pNALPacket->uASMFlags;
-
+                    UINT8 uiASMFlags = 0;
                     if (pNALPacket->firstPacket)
                     {
-                        uiASMFlags &= ~HX_ASM_SIDE_EFFECT;
-                        uiASMFlags |= HX_ASM_SWITCH_OFF;
-                    }
-                    else if (pNALPacket->usASMRule == 0)
+                        // Start of access unit. Switch off.
+                        uiASMFlags = HX_ASM_SWITCH_OFF;
+
+                        if (pNALPacket->uASMFlags & HX_ASM_SWITCH_ON)
                     {
-                        uiASMFlags &= ~(HX_ASM_SWITCH_ON | HX_ASM_SWITCH_OFF | HX_ASM_SIDE_EFFECT);
+                            // And switch on if this is a sync frame
+                            uiASMFlags |= HX_ASM_SWITCH_ON;
                     }
-                    else
-                    {
-                        if (uiASMFlags & HX_ASM_SWITCH_ON)
-                        {
-                            uiASMFlags &= ~HX_ASM_SWITCH_OFF;
-                            uiASMFlags |= HX_ASM_SIDE_EFFECT;
                         }
-                        else
+                    else if (pNALPacket->usASMRule & 0x0001)
                         {
-                            uiASMFlags &= ~(HX_ASM_SWITCH_OFF | HX_ASM_SIDE_EFFECT);
+                        // If this is marker bit packet and not first packet,
+                        // it is the first packet of the unit for the marker
+                        // rule, so it is a switch-off side-effect packet.
+                        uiASMFlags = HX_ASM_SWITCH_OFF | HX_ASM_SIDE_EFFECT;
+
+                        if (pNALPacket->uASMFlags & HX_ASM_SWITCH_ON)
+                        {
+                            // And it is switch-on (side-effect) if this
+                            // is a sync frame
+                            uiASMFlags |= HX_ASM_SWITCH_ON;
                         }
                     }
+
                     memcpy(pBuf->GetBuffer(), pNALPacket->pData, pNALPacket->ulSize);
                     if (pNALPacket->rtpPacket)
                     {
@@ -1124,12 +1174,13 @@
     UINT8* pData = pNALPacket->pData;
     UINT32 ulPacketLength = pNALPacket->ulSize;
     HXBOOL bFirstFragment = TRUE;
+    HXBOOL bLastFragment = FALSE;
     IHXPacket* pNewPkt = NULL;
     IHXBuffer* pBuf = NULL;
     UINT32 offset = 0;
     UINT32 ulBufSize = 0;
     UINT32 ulHeaderSize = 2;
-    UINT16 usASMRule = ASM_RULE_0;
+    UINT16 usASMRule = pNALPacket->usASMRule & 0xFFFE; // marker off
     UINT8 uiASMFlags = 0;
 
     // Devide NAL octet in to FUIndicator and FUHeader.
@@ -1143,18 +1194,23 @@
     {
 #ifdef QTCONFIG_INTERLEAVE_MODE
         if(bFirstFragment)
+        {
             ulHeaderSize = 4; //For DON
+        }
         else
+        {
             ulHeaderSize = 2;
+        }
 #else
         ulHeaderSize = 2;
 #endif
-        if(ulPacketLength > MAX_PACKET_SIZE)
+        if(ulPacketLength + ulHeaderSize > MAX_PACKET_SIZE)
         {
             ulBufSize = MAX_PACKET_SIZE;            
         }
         else 
         {
+            bLastFragment = TRUE;
             ulBufSize = ulPacketLength + ulHeaderSize;
         }
 
@@ -1204,63 +1260,60 @@
                 else
                 {
                     tmp2[0] = uFUIndicator + FU_A;
-                    if(ulPacketLength < MAX_PACKET_SIZE)
+                    if (bLastFragment)
+                    {
                         tmp2[1] = 0x40 + uFUHeaderType;
+                        // this is the last fragment of the NALU, so now
+                        // we set the marker bit if this is the end of 
+                        // the AU
+                        usASMRule = pNALPacket->usASMRule;
+                    }
                     else
+                    {
                         tmp2[1] = uFUHeaderType;
+                    }
 
                     memcpy(pCurPos, tmp2, 2);
                     pCurPos +=2;
                 }
-                uiASMFlags = pNALPacket->uASMFlags;
-                if(ulPacketLength > MAX_PACKET_SIZE - ulHeaderSize)
+
+                if(!bLastFragment)
                 {
                     memcpy(pCurPos, pData, MAX_PACKET_SIZE - ulHeaderSize);
                     pData += (MAX_PACKET_SIZE - ulHeaderSize);
                     ulPacketLength -= (MAX_PACKET_SIZE - ulHeaderSize);
-                    if (uiASMFlags & HX_ASM_SWITCH_ON)
-                    {
-                        if (bFirstFragment && pNALPacket->firstPacket)
-                        {
-                            uiASMFlags &= ~HX_ASM_SIDE_EFFECT;
-                            uiASMFlags |= HX_ASM_SWITCH_OFF;
-                        }
-                        else
-                        {
-                            uiASMFlags &= ~(HX_ASM_SWITCH_ON | HX_ASM_SWITCH_OFF | HX_ASM_SIDE_EFFECT);
-                        }
-                    }
-                    else
-                    {
-                        uiASMFlags &= ~(HX_ASM_SWITCH_OFF | HX_ASM_SIDE_EFFECT);
-                        if (bFirstFragment && pNALPacket->firstPacket)
-                            uiASMFlags |= HX_ASM_SWITCH_OFF;
-                    }
                 }
                 else
                 {
                     memcpy(pCurPos, pData, ulPacketLength);
                     ulPacketLength = 0;
-                    if (uiASMFlags & HX_ASM_SWITCH_ON)
-                    {
-                        if (pNALPacket->usASMRule != 0)
-                        {
-                            uiASMFlags &= ~HX_ASM_SWITCH_OFF;
-                            uiASMFlags |= HX_ASM_SIDE_EFFECT;
                         }
-                        else
+
+                uiASMFlags = 0;
+                if (bFirstFragment && pNALPacket->firstPacket)
+                {
+                    // Start of access unit. Switch off.
+                    uiASMFlags = HX_ASM_SWITCH_OFF;
+
+                    if (pNALPacket->uASMFlags & HX_ASM_SWITCH_ON)
                         {
-                            uiASMFlags &= ~(HX_ASM_SWITCH_ON | HX_ASM_SWITCH_OFF | HX_ASM_SIDE_EFFECT);
+                        // And switch on if this is a sync frame
+                        uiASMFlags |= HX_ASM_SWITCH_ON;
                         }
                     }
-                    else
+                else if (usASMRule & 0x0001)
                     {
-                        uiASMFlags &= ~(HX_ASM_SWITCH_OFF | HX_ASM_SIDE_EFFECT);
-                        if (bFirstFragment && pNALPacket->firstPacket)
-                            uiASMFlags |= HX_ASM_SWITCH_OFF;
+                    // If this is marker bit packet and not first packet,
+                    // it is the first packet of the unit for the marker
+                    // rule, so it is a switch-off side-effect packet.
+                    uiASMFlags = HX_ASM_SWITCH_OFF | HX_ASM_SIDE_EFFECT;
+
+                    if (pNALPacket->uASMFlags & HX_ASM_SWITCH_ON)
+                    {
+                        // And it is switch-on (side-effect) if this 
+                        // is a sync frame
+                        uiASMFlags |= HX_ASM_SWITCH_ON;
                     }
-                    // ASMRULE should be set according to last packet
-                    usASMRule   = pNALPacket->usASMRule;
                 }
 
                 if (pNALPacket->rtpPacket)
@@ -1288,18 +1341,9 @@
             }
             else
             {
-                if (pRPkt)
-                {
-                    HX_DELETE(pRPkt);
-                }
-                if(pNewPkt)
-                {
-                    HX_DELETE(pNewPkt);
-                }
-                if(pBuf)
-                {
-                    HX_DELETE(pBuf);
-                }
+                HX_RELEASE(pRPkt);
+                HX_RELEASE(pNewPkt);
+                HX_RELEASE(pBuf);
             }
         }
         HX_RELEASE(pBuf);
Index: datatype/mp4/payload/pub/h264packetizer.h
===================================================================
RCS file: /cvsroot/datatype/mp4/payload/pub/h264packetizer.h,v
retrieving revision 1.4
diff -u -w -r1.4 h264packetizer.h
--- datatype/mp4/payload/pub/h264packetizer.h	29 Jun 2009 10:03:58 -0000	1.4
+++ datatype/mp4/payload/pub/h264packetizer.h	28 Jan 2010 23:34:43 -0000
@@ -61,6 +61,7 @@
 
 struct PreparedBuffer;
 struct DONPacket;
+class CTSConverter;
 
 class H264Packetizer : public IHXPayloadFormatObject,
                        public IHXPlugin,
@@ -176,6 +177,8 @@
 
     HX_RESULT AddHeaderMimeType();
     HX_RESULT AddHeaderSDPData();
+    HX_RESULT InitClockRate();
+
     CNALPacket* AllocateNALPacket(IHXPacket* pPacket);
     HX_RESULT CreateSingleNALPacket();
     HX_RESULT ConstructAggregationPacket();
@@ -190,6 +193,8 @@
     IHXCommonClassFactory* m_pCCF;
     IHXValues* m_pHeader;
     IUnknown*		    m_pContext;
+    CTSConverter* m_pTSConverter;
+    HXBOOL m_bFirstPacket;
 
 	CHXSimpleList m_NALPacketList;
 	CHXSimpleList m_FinishedPktList;
@@ -201,6 +206,7 @@
 	HXBOOL m_bFragmented;
 	HXBOOL m_bPendingFlush;
 	HXBOOL m_bInterleavingDone;
+
     static const char* const    zm_pDescription;
     static const char* const    zm_pCopyright;
     static const char* const    zm_pMoreInfoURL;
-------------- next part --------------
Index: ribosome/build/umakepf/helix-server-client-common.pf
===================================================================
RCS file: /cvsroot/ribosome/build/umakepf/helix-server-client-common.pf,v
retrieving revision 1.11
diff -u -w -r1.11 helix-server-client-common.pf
--- ribosome/build/umakepf/helix-server-client-common.pf	8 Feb 2008 18:47:45 -0000	1.11
+++ ribosome/build/umakepf/helix-server-client-common.pf	28 Jan 2010 23:40:01 -0000
@@ -77,6 +77,9 @@
 #
 project.AddDefines('HELIX_FEATURE_DBG_LOG')
 
+# floating point timestamp converter
+project.AddDefines('HELIX_FEATURE_FLP_T_CONVERTER')
+
 #client engine
 
 project.AddDefines('HELIX_FEATURE_PLUGINHANDLER2')
From sgarg at real.com  Thu Jan 28 21:41:26 2010
From: sgarg at real.com ( Sushant Garg)
Date: Fri Jan 29 05:01:46 2010
Subject: [datatype-dev] CR: fix broken RealMedia file format due to
	RIFFReader
References: <7ECCEA249B7CDC49A079EC0075E999AA07D91EBBEC@SEAMBX.corp.real.com><4B620338.2060903@real.com>
	<766B5A29D28DA442AB229AAEE2AFC44507D90A2F46@SEAMBX.corp.real.com>
Message-ID: <00ac01caa0a5$b5aad440$8001a8c0@adroit02a604c1>

Thanks Eric for looking into this.

I have merged & checked in your changes to following branches
Atlas310
Atlas347
Atlas_3_4_10
401Brizo

Regards
Sushant.
  ----- Original Message ----- 
  From: Leina Tani 
  To: Eric Hyche ; datatype-dev@helixcommunity.org 
  Sent: Friday, January 29, 2010 3:24 AM
  Subject: RE: [datatype-dev] CR: fix broken RealMedia file format due to RIFFReader


  Hi Eric,

  Sushant was notified by Enyro of the break last night but didn't have a resolution yet.  Thanks for the help on this one and Sushant will complete the requested merges tomorrow.

  -leina


  -----Original Message-----
  From: datatype-dev-bounces@helixcommunity.org [mailto:datatype-dev-bounces@helixcommunity.org] On Behalf Of Eric Hyche
  Sent: Thursday, January 28, 2010 1:43 PM
  To: datatype-dev@helixcommunity.org
  Subject: Re: [datatype-dev] CR: fix broken RealMedia file format due to RIFF Reader

  Sushant: the checkin you made here:

  http://lists.helixcommunity.org/pipermail/datatype-dev/2010-January/008906.html

  broke RealMedia file format for interleaved streams. Can you please merge the
  fix below into all the branches (besides HEAD, I'll do that) for which you 
  checked in the RIFF reader changes above?

  Thanks,

  Eric

  On Jan 28, 2010, at 4:35 PM, Jamie Gordon wrote:

  > You might find you need this in other branches - if I recall correctly
  > the Stat change went into like 4-5 client branches
  > 
  > On 1/28/2010 1:19 PM, Eric Hyche wrote:
  >> Suggested Reviewer: Jamie
  >> 
  >> Description
  >> -------------------------------------------------------
  >> A recent change in the RIFF reader caused the Realmedia file format to fail completely on single-rate RealMedia files. Jamie backed out the fix on server branches (I think), and the CR here fixes this on the HEAD.
  >> 
  >> The problem was that the RIFF reader was assuming that the file object it got was seeked all the way back to the beginning, and after the previous change, it was not. This CR always seeks file object owned by the RIFF reader owned by the interleaved stream class back to 0 before using it.
  >> 
  >> Files Modified
  >> -----------------------------------
  >> datatype/common/util/riff.cpp
  >> datatype/common/util/pub/riff.h
  >> 
  >> Branches
  >> -----------------------------------
  >> HEAD only
  >> 
  >> 
  >> Eric Hyche
  >> Principal Engineer, RealNetworks
  >> ehyche@real.com
  >> 

  Eric Hyche (ehyche@real.com)
  Principal Engineer
  RealNetworks, Inc.



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

  _______________________________________________
  Datatype-dev mailing list
  Datatype-dev@helixcommunity.org
  http://lists.helixcommunity.org/mailman/listinfo/datatype-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.helixcommunity.org/pipermail/datatype-dev/attachments/20100129/e48e13bf/attachment.html
From gahluwalia at real.com  Fri Jan 29 02:42:29 2010
From: gahluwalia at real.com (Gurpreet)
Date: Fri Jan 29 10:03:04 2010
Subject: [datatype-dev] CN: Fix for Bug 10021: a mp4 file with simple@L1
 profile can not be played in OI File Manager: Merge from Head
In-Reply-To: <79AD54DB-C9A1-4887-9FF2-1581163D821C@real.com>
References: <4B603370.8010909@real.com>
	<79AD54DB-C9A1-4887-9FF2-1581163D821C@real.com>
Message-ID: <4B62BB95.6070705@real.com>

Thanks Eric,
This is check in.

Gurpreet

Eric Hyche wrote:
> Looks good.
>
> On Jan 27, 2010, at 7:37 AM, Gurpreet wrote:
>
>   
>> Synopsis:
>> Fix for Bug 10021: a mp4 file with simple@L1 profile can not be played 
>> in OI File Manager
>>
>> Overview:
>> In this mp4 file.
>> 'mp4v' sample descriptor contain a Pixel Aspect Ratio ('pasp') atom 
>> before MPEG-4 Elementary Stream Descriptor Atom ('esds')
>> Thus shifting the Opaquedata offset by 16 bytes.
>> This fix is merged from head.
>>
>> Files Modified:
>> datatype/mp4/fileformat/qtatmmgs.cpp 
>>
>> Image Size and Heap Use impact (Client -Only):
>> None
>>
>> Platforms and Profiles Build Verified:
>> BIF branch            -> atlas 361
>> Target(s)                -> android_all
>> Profile                    -> helix-client-android-surf_8x50
>> SYSTEM_ID        -> android-donut-arm.eabi
>>
>> Files Attached::
>> mp4ff.diff
>>
>> Thanks & Best Regards,
>> Gurpreet
>> 
>>     
>
> Eric Hyche (ehyche@real.com)
> Principal Engineer
> RealNetworks, Inc.
>
>
>
>   



 


Copyright © 1995-2007 RealNetworks, Inc. All rights reserved. RealNetworks and Helix are trademarks of RealNetworks.
All other trademarks or registered trademarks are the property of their respective holders.