<html>

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<style>
<!--
 
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:Arial;
        color:windowtext;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.Section1
        {page:Section1;}
-->
</style>

</head>

<body link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Hello,</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>I am having problems trying to create a Transport Stream
file from MPEG-2 Elementary Video files.&nbsp; I have successfully converted
from program stream using testMPEG1or2ProgramToTransportStream, and have successfully
streamed using testMPEG1or2VideoStreamer, but I would like to send using
transport stream instead.</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<div style='mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.5pt;
padding:0cm 0cm 16.0pt 0cm'>

<p class=MsoNormal style='border:none;padding:0cm'><font size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>I have made some slight
modifications to testMPEG1or2ProgramToTransportStream as noted below.&nbsp;
This program results in a choppy and condensed transport stream file where the video
seems to lack any sense of timing.&nbsp; I was hoping someone could verify the
following program.&nbsp; I am using Windows XP with MinGW compiler. </span></font></p>

</div>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=blue face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:blue'>#include</span></font><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'> &quot;liveMedia.hh&quot;</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=blue face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:blue'>#include</span></font><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>
&quot;BasicUsageEnvironment.hh&quot;</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp;</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=blue face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:blue'>char</span></font><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'> <font color=blue><span style='color:blue'>const</span></font>* inputFileName = &quot;in.mpg&quot;;</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=blue face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:blue'>char</span></font><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'> <font color=blue><span style='color:blue'>const</span></font>* outputFileName = &quot;out.ts&quot;;</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp;</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=blue face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:blue'>void</span></font><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'> afterPlaying(<font color=blue><span style='color:blue'>void</span></font>* clientData); <font color=green><span style='color:green'>// forward</span></font></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=green face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:green'>&nbsp;</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>UsageEnvironment* env;</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp;</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=blue face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:blue'>int</span></font><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'> main(<font color=blue><span style='color:blue'>int</span></font> argc, <font color=blue><span style='color:blue'>char</span></font>** argv) {</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp; <font color=green><span style='color:green'>// Begin by setting up our usage environment:</span></font></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp; TaskScheduler*
scheduler = BasicTaskScheduler::createNew();</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp; env =
BasicUsageEnvironment::createNew(*scheduler);</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp;</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp; <font color=green><span style='color:green'>// Open the input file as a 'byte-stream file source':</span></font></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp; FramedSource*
inputSource = ByteStreamFileSource::createNew(*env, inputFileName);</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp; <font color=blue><span style='color:blue'>if</span></font> (inputSource == NULL) {</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; *env
&lt;&lt; &quot;Unable to open file \&quot;&quot; &lt;&lt; inputFileName</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;&lt;
&quot;\&quot; as a byte-stream file source\n&quot;;</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; exit(1);</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp; }</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp; </span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp;
MPEG2TransportStreamFromESSource* tsFrames</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;
= MPEG2TransportStreamFromESSource::createNew(*env);</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=green face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:green'>// Add the elementary video file stream source</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp;
tsFrames-&gt;addNewVideoSource(inputSource, 2);</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp;</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp; <font color=green><span style='color:green'>// Open the output file as a 'file sink':</span></font></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp; MediaSink* outputSink
= FileSink::createNew(*env, outputFileName);</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp; <font color=blue><span style='color:blue'>if</span></font> (outputSink == NULL) {</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; *env
&lt;&lt; &quot;Unable to open file \&quot;&quot; &lt;&lt; outputFileName
&lt;&lt; &quot;\&quot; as a file sink\n&quot;;</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; exit(1);</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp; }</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp; </span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp; <font color=green><span style='color:green'>// Finally, start playing:</span></font></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp; *env &lt;&lt;
&quot;Beginning to read...\n&quot;;</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp;
outputSink-&gt;startPlaying(*tsFrames, afterPlaying, NULL);</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp;</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp; env-&gt;taskScheduler().doEventLoop();
<font color=green><span style='color:green'>// does not return</span></font></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=green face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:green'>&nbsp;</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp; <font color=blue><span style='color:blue'>return</span></font> 0; <font color=green><span style='color:green'>// only to prevent compiler warning</span></font></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>}</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp;</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=blue face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:blue'>void</span></font><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'> afterPlaying(<font color=blue><span style='color:blue'>void</span></font>* <font color=green><span style='color:green'>/*clientData*/</span></font>) {</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp; *env &lt;&lt;
&quot;Done reading.\n&quot;;</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp; *env &lt;&lt;
&quot;Wrote output file: \&quot;&quot; &lt;&lt; outputFileName &lt;&lt;
&quot;\&quot;\n&quot;;</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp; exit(0);</span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>}</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>___________________</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Thanks,</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Steve</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

</div>

</body>

<!--[object_id=#gdcanada.com#]--><FONT face=Tahoma><FONT color=#0000ff><SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Arial"><FONT color=#000000>
<P align=left><FONT face=Tahoma size=2><FONT color=#0000ff><FONT face=Arial color=#000000 size=1>The information contained in this e-mail message is PRIVATE. It may contain confidential information and may be legally privileged. It is intended for the exclusive use of the addressee(s). If you are not the intended recipient, you are hereby notified that any dissemination, distribution or reproduction of this communication is strictly prohibited. If the intended recipient(s) cannot be reached or if a transmission problem has occurred, please notify the sender immediately by return e-mail and destroy all copies of this message. <BR>Thank you.</FONT> </FONT></FONT></P></FONT></SPAN><FONT size=2></FONT></FONT></FONT></html>