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

List:       helix-datatype-dev
Subject:    [datatype-dev] FW: Fixed a streaming issue for 3gp hinted files
From:       Mehran Azimi <mazimi () real ! com>
Date:       2010-03-25 20:16:58
Message-ID: 7ECCEA249B7CDC49A079EC0075E999AA07DBB3F63E () SEAMBX ! corp ! real ! com
[Download RAW message or body]

This is a MIME-formatted message.  If you see this text it means that your
E-mail software does not support MIME-formatted messages.

[Attachment #2 (multipart/alternative)]
This is a MIME-formatted message.  If you see this text it means that your
E-mail software does not support MIME-formatted messages.


From: Mehran Azimi
Sent: Wednesday, March 24, 2010 5:32 PM
To: tools-dev@real.com
Subject: CR: Fixed a streaming issue for 3gp hinted files with QTSS.

Synopsis
========
Fixed a streaming issue for 3gp hinted files with QTSS.

Branches:  HEAD, P13_0

Description
===========
This bug has been reported by Akami. Currently, 3gp files generated by HMP13 which \
are hinted cannot be streamed with QTSS. The issue turns out to be how the file level \
SDP is written, there were two issues in the SDP text: 1) the session parameter was \
not being properly set in mp4writer (was using "s=") this is changed to "s=0" 2) the \
duration param was being written as 0-0. The code is updated to write the proper \
duration obtained from fileheader at the end of stream.

Files Affected
==============
Changed files:
/datatype/mp4/filewriter/mp4sm.cpp
/datatype/mp4/filewriter/mp4sm.h
/datatype/mp4/filewriter/mp4wrtr.cpp


Testing Performed
=================
verified that h263 and h263 single rate and multi rate play OK with QTSS. Did not \
test with Helix server though.

Performance Tests:
- None

Platforms Tested: win32-i386-vc7

QA Hints
========


[Attachment #5 (text/html)]

<html xmlns:v="urn:schemas-microsoft-com:vml" \
xmlns:o="urn:schemas-microsoft-com:office:office" \
xmlns:w="urn:schemas-microsoft-com:office:word" \
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" \
xmlns="http://www.w3.org/TR/REC-html40">

<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
span.EmailStyle17
	{mso-style-type:personal;
	font-family:"Calibri","sans-serif";
	color:windowtext;}
span.EmailStyle18
	{mso-style-type:personal-reply;
	font-family:"Calibri","sans-serif";
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-size:10.0pt;}
@page Section1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.Section1
	{page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=EN-US link=blue vlink=purple>

<div class=Section1>

<div>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>

<p class=MsoNormal><b><span \
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span \
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> Mehran Azimi <br> \
<b>Sent:</b> Wednesday, March 24, 2010 5:32 PM<br> <b>To:</b> tools-dev@real.com<br>
<b>Subject:</b> CR: Fixed a streaming issue for 3gp hinted files with QTSS. \
<o:p></o:p></span></p>

</div>

</div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Synopsis<o:p></o:p></p>

<p class=MsoNormal>========<o:p></o:p></p>

<p class=MsoNormal>Fixed a streaming issue for 3gp hinted files with QTSS. \
<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Branches:&nbsp; HEAD, P13_0<o:p></o:p></p>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

<p class=MsoNormal>Description<o:p></o:p></p>

<p class=MsoNormal>===========<o:p></o:p></p>

<p class=MsoNormal>This bug has been reported by Akami. Currently, 3gp files
generated by HMP13 which are hinted cannot be streamed with QTSS. <o:p></o:p></p>

<p class=MsoNormal>The issue turns out to be how the file level SDP is written,
there were two issues in the SDP text: <o:p></o:p></p>

<p class=MsoNormal>1) the session parameter was not being properly set in
mp4writer (was using &quot;s=&quot;) this is changed to \
&quot;s=0&quot;<o:p></o:p></p>

<p class=MsoNormal>2) the duration param was being written as 0-0. The code is
updated to write the proper duration obtained from fileheader at the end of
stream. <o:p></o:p></p>

<p class=MsoNormal>&nbsp;&nbsp;&nbsp; <o:p></o:p></p>

<p class=MsoNormal>Files Affected<o:p></o:p></p>

<p class=MsoNormal>==============<o:p></o:p></p>

<p class=MsoNormal>Changed files:<o:p></o:p></p>

<p class=MsoNormal>/datatype/mp4/filewriter/mp4sm.cpp<o:p></o:p></p>

<p class=MsoNormal>/datatype/mp4/filewriter/mp4sm.h<o:p></o:p></p>

<p class=MsoNormal>/datatype/mp4/filewriter/mp4wrtr.cpp<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

<p class=MsoNormal>Testing Performed<o:p></o:p></p>

<p class=MsoNormal>=================<o:p></o:p></p>

<p class=MsoNormal>verified that h263 and h263 single rate and multi rate play
OK with QTSS. Did not test with Helix server though.<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Performance Tests:<o:p></o:p></p>

<p class=MsoNormal>- None<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Platforms Tested: win32-i386-vc7<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>QA Hints<o:p></o:p></p>

<p class=MsoNormal>========<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

</body>

</html>


["datatype-mp4.diff" (application/octet-stream)]

"Running cvs diff using -u -w -b options"
Index: mp4sm.cpp
===================================================================
RCS file: /cvsroot/datatype/mp4/filewriter/mp4sm.cpp,v
retrieving revision 1.14.2.5
diff -u -w -b -r1.14.2.5 mp4sm.cpp
--- mp4sm.cpp   23 Dec 2009 03:06:27 -0000      1.14.2.5
+++ mp4sm.cpp   25 Mar 2010 00:10:02 -0000
@@ -645,7 +645,10 @@
     , m_eIsRtp(UNCHECKED)
     , m_bMoovAtEnd(FALSE)
     , m_bForceMoovFirst(FALSE)
+    , m_pRootAtom(NULL)
     , m_pMvhd(NULL)
+    , m_pMdhd(NULL)
+    , m_pRTP(NULL)
     , m_pFileHeader(NULL)
     , m_pStreamInfo(NULL)
     , m_ulStreamCount(0)
@@ -788,6 +791,14 @@
     HX_RESULT retVal = HXR_OK;
 
     pFileHeader->AddRef();
+
+    if (m_pFileHeader)
+    {
+        HX_RELEASE(m_pFileHeader);
+        m_pFileHeader = pFileHeader;
+    }
+    else
+    {
     m_pFileHeader = pFileHeader;
 
     //get stream count; this may be bigger than the actual number of tracks in
@@ -805,6 +816,7 @@
     m_ulStreamHeaderReceived = 0;
     m_ulStreamDoneReceived = 0;
 
+       }
     return retVal;
 }
 
@@ -1174,6 +1186,17 @@
         if( m_ulReportedDuration != m_ulActualDuration )
         {
             UpdateDuration( m_ulActualDuration );
+            if (m_pRTP)
+            {
+                // Re-Generate the movie-level SDP
+                CHXString strMovieLevelSDP;
+                retVal = GenerateMovieLevelSDP(&strMovieLevelSDP);
+                if (SUCCEEDED(retVal))
+                {
+                    // Add this new SDP to m_pRTP which is the \
CMP4Atom_RTPMovieHintInformation box +                    retVal = \
m_pRTP->SetSDP((const char*) strMovieLevelSDP, strMovieLevelSDP.GetLength()); +       \
} +            }
         }
 
         CMP4Atom_mdat* pMdat = (CMP4Atom_mdat*)m_pRootAtom->FindChild("mdat");
Index: mp4sm.h
===================================================================
RCS file: /cvsroot/datatype/mp4/filewriter/mp4sm.h,v
retrieving revision 1.11.2.1
diff -u -w -b -r1.11.2.1 mp4sm.h
--- mp4sm.h     10 Jun 2009 15:57:03 -0000      1.11.2.1
+++ mp4sm.h     25 Mar 2010 00:07:31 -0000
@@ -52,6 +52,8 @@
 class CMP4Atom_stsd;
 class CMP4Atom_sdp;
 class CMP4Atom_udta;
+class CMP4Atom_meta;
+class CMP4Atom_RTPMovieHintInformation;
 class CMP4Archiver;
 
 class CMP4VersionedAtom;
@@ -278,6 +280,7 @@
     // multiple atom searches
     CMP4Atom_mvhd* m_pMvhd;
     CMP4Atom_mdhd* m_pMdhd;
+    CMP4Atom_RTPMovieHintInformation* m_pRTP;   
 
     UINT32     m_ulReportedDuration;
     UINT32     m_ulActualDuration;
Index: mp4wrtr.cpp
===================================================================
RCS file: /cvsroot/datatype/mp4/filewriter/mp4wrtr.cpp,v
retrieving revision 1.12
diff -u -w -b -r1.12 mp4wrtr.cpp
--- mp4wrtr.cpp 7 May 2009 15:41:10 -0000       1.12
+++ mp4wrtr.cpp 25 Mar 2010 00:10:50 -0000
@@ -516,6 +516,12 @@
                 }
 
                 HX_RELEASE(pNewHeader);
+
+                if(m_pStreamMixer)
+                {
+                    m_pStreamMixer->SetFileHeader( m_FileHeaderInfo.m_pFileHeader );
+                }
+
             }
         }
     }



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


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

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