[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> </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> </o:p></p>
<p class=MsoNormal>Branches: HEAD, P13_0<o:p></o:p></p>
<p class=MsoNormal> <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 "s=") this is changed to \
"s=0"<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> <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> </o:p></p>
<p class=MsoNormal> <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> </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> </o:p></p>
<p class=MsoNormal>Platforms Tested: win32-i386-vc7<o:p></o:p></p>
<p class=MsoNormal><o:p> </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> </o:p></p>
<p class=MsoNormal><o:p> </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