<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>cooleyes's  devlog</title>
	<atom:link href="http://cooleyes.fx-world.org/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://cooleyes.fx-world.org/blog</link>
	<description></description>
	<pubDate>Mon, 09 Feb 2009 01:16:00 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>a new sample to decode all psp supported MP4AVC</title>
		<link>http://cooleyes.fx-world.org/blog/?p=16</link>
		<comments>http://cooleyes.fx-world.org/blog/?p=16#comments</comments>
		<pubDate>Mon, 09 Feb 2009 01:15:35 +0000</pubDate>
		<dc:creator>cooleyes</dc:creator>
		
		<category><![CDATA[PSP]]></category>

		<guid isPermaLink="false">http://www.fx-world.org/cooleyes/?p=16</guid>
		<description><![CDATA[Here is a sample code to decode a psp mp4(avc) file. 
it can decode baseline profile MP4AVC(&#60;=480*272),
it also can decode main profile MP4AVC(&#60;=720*480)

full source package,  you can download from here 
http://cooleyes.fx-world.org/downloads/samples/avcdecoder.rar
]]></description>
			<content:encoded><![CDATA[<p><span class="postbody">Here is a sample code to decode a psp mp4(avc) file. <br />
it can decode baseline profile MP4AVC(&lt;=480*272),<br />
it also can decode main profile MP4AVC(&lt;=720*480)</p>
<p>
full source package,  you can download from here <br />
<a href="http://cooleyes.fx-world.org/downloads/samples/avcdecoder.rar" target="_blank" class="postlink">http://cooleyes.fx-world.org/downloads/samples/avcdecoder.rar</a></span></p>
]]></content:encoded>
			<wfw:commentRss>http://cooleyes.fx-world.org/blog/?feed=rss2&amp;p=16</wfw:commentRss>
		</item>
		<item>
		<title>PMPlayer advance built(20090205-en) release</title>
		<link>http://cooleyes.fx-world.org/blog/?p=15</link>
		<comments>http://cooleyes.fx-world.org/blog/?p=15#comments</comments>
		<pubDate>Sat, 07 Feb 2009 00:03:45 +0000</pubDate>
		<dc:creator>cooleyes</dc:creator>
		
		<category><![CDATA[PSP]]></category>

		<category><![CDATA[Pmplayer advance]]></category>

		<guid isPermaLink="false">http://www.fx-world.org/cooleyes/?p=15</guid>
		<description><![CDATA[
[changelog]
Happy niu year!  
1. PSP&#38;IPhone MP4AVC suppported (&#60;=480*272)
2. ISO8859-6 charset supported, ISO8859-9 charset supported(update miniconv.prx to miniconv.eur.prx.20090206) 
3. 480P MP4AVC will come next release  
[download]
http://code.google.com/p/pmplayer-advance/downloads/list
]]></description>
			<content:encoded><![CDATA[<p><strong><br />
[changelog]</p>
<p>Happy niu year!  <br />
1. PSP&amp;IPhone MP4AVC suppported (&lt;=480*272)<br />
2. ISO8859-6 charset supported, ISO8859-9 charset supported(update miniconv.prx to miniconv.eur.prx.20090206) <br />
3. 480P MP4AVC will come next release <img src='http://www.fx-world.org/cooleyes/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> <br />
[download]<br />
<a href="http://code.google.com/p/pmplayer-advance/downloads/list" target="_blank">http://code.google.com/p/pmplayer-advance/downloads/list</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://cooleyes.fx-world.org/blog/?feed=rss2&amp;p=15</wfw:commentRss>
		</item>
		<item>
		<title>PMPlayer advance built(20081018-en) release</title>
		<link>http://cooleyes.fx-world.org/blog/?p=14</link>
		<comments>http://cooleyes.fx-world.org/blog/?p=14#comments</comments>
		<pubDate>Sun, 19 Oct 2008 01:21:12 +0000</pubDate>
		<dc:creator>cooleyes</dc:creator>
		
		<category><![CDATA[PSP]]></category>

		<category><![CDATA[Pmplayer advance]]></category>

		<guid isPermaLink="false">http://www.fx-world.org/cooleyes/?p=14</guid>
		<description><![CDATA[
[changelog]
1. fw5.00M33 supported.
2. xxx.sc.srt, xxx.tc.srt  subtitles supported,  sc is GBK, tc is BIG5 
3. can play rotate 180,  press X+Start when playing
[download]
http://code.google.com/p/pmplayer-advance/downloads/list
]]></description>
			<content:encoded><![CDATA[<p><strong><br />
[changelog]</p>
<p>1. fw5.00M33 supported.<br />
2. xxx.sc.srt, xxx.tc.srt  subtitles supported,  sc is GBK, tc is BIG5 <br />
3. can play rotate 180,  press X+Start when playing<br />
[download]<br />
<a target="_blank" href="http://code.google.com/p/pmplayer-advance/downloads/list">http://code.google.com/p/pmplayer-advance/downloads/list</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://cooleyes.fx-world.org/blog/?feed=rss2&amp;p=14</wfw:commentRss>
		</item>
		<item>
		<title>PMPlayer advance built(20080902-en) release</title>
		<link>http://cooleyes.fx-world.org/blog/?p=13</link>
		<comments>http://cooleyes.fx-world.org/blog/?p=13#comments</comments>
		<pubDate>Tue, 02 Sep 2008 03:12:31 +0000</pubDate>
		<dc:creator>cooleyes</dc:creator>
		
		<category><![CDATA[PSP]]></category>

		<category><![CDATA[Pmplayer advance]]></category>

		<guid isPermaLink="false">http://www.fx-world.org/cooleyes/?p=13</guid>
		<description><![CDATA[
[changelog]
1. clean all fw1xx code from source
2. fw4.01M33 supported.
3. xxx.eng.srt, xxx.cht.srt, xxx.chs.srt，。。。， such as these srt subtitles supported 
4. fixed codeset bugs for sub file(microdvd subtitle)
5. MP4(xvid+aac) supported 
6. use a new file &#8220;moviestat.dat&#8221; to instead of &#8220;*.pos&#8221; file, it can saved 20 records.

[download]
http://code.google.com/p/pmplayer-advance/downloads/list
]]></description>
			<content:encoded><![CDATA[<p><strong><br />
[changelog]</p>
<p>1. clean all fw1xx code from source<br />
2. fw4.01M33 supported.<br />
3. xxx.eng.srt, xxx.cht.srt, xxx.chs.srt，。。。， such as these srt subtitles supported <br />
4. fixed codeset bugs for sub file(microdvd subtitle)<br />
5. MP4(xvid+aac) supported <br />
6. use a new file &#8220;moviestat.dat&#8221; to instead of &#8220;*.pos&#8221; file, it can saved 20 records.<br />
<br />
[download]<br />
<a href="http://code.google.com/p/pmplayer-advance/downloads/list" target="_blank">http://code.google.com/p/pmplayer-advance/downloads/list</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://cooleyes.fx-world.org/blog/?feed=rss2&amp;p=13</wfw:commentRss>
		</item>
		<item>
		<title>Convert PMF to MP4AVC</title>
		<link>http://cooleyes.fx-world.org/blog/?p=12</link>
		<comments>http://cooleyes.fx-world.org/blog/?p=12#comments</comments>
		<pubDate>Mon, 14 Jul 2008 04:57:56 +0000</pubDate>
		<dc:creator>cooleyes</dc:creator>
		
		<category><![CDATA[PSP]]></category>

		<guid isPermaLink="false">http://www.fx-world.org/cooleyes/?p=12</guid>
		<description><![CDATA[Convert PMF to MP4AVC, we must recompress video data and audio data.
some software is required :
  1 Sony&#8217;s SonicStage
2 AviSynth
3 a MKV splitter
4 a AVC decoder

now you can convert pmf to mp4avc like :
   1.&#160; PMFVideoDumper.exe&#160; in.pmf
2.&#160; PMFAudioDumper.exe&#160; in.pmf
3.&#160; HIMDRENDER.exe -i in.pmf.0.oma -o in.pmf.0.wav ( you can use all tracks or just [...]]]></description>
			<content:encoded><![CDATA[<p><font face="Verdana">Convert PMF to MP4AVC, we must recompress video data and audio data.</p>
<p>some software is required :<br />
</font>  <font size="4" face="Verdana"><strong>1 Sony&#8217;s SonicStage<br />
2 AviSynth<br />
3 a MKV splitter<br />
4 a AVC decoder<br />
</strong></font><font face="Verdana"><br />
now you can convert pmf to mp4avc like :</p>
<p></font>  <font face="Verdana"> 1.&nbsp; PMFVideoDumper.exe&nbsp; in.pmf<br />
2.&nbsp; PMFAudioDumper.exe&nbsp; in.pmf<br />
3.&nbsp; HIMDRENDER.exe -i in.pmf.0.oma -o in.pmf.0.wav ( you can use all tracks or just one)<br />
4.&nbsp; neroAacEnc_SSE2.exe -br 128000 -if in.pmf.0.wav -of in.pmf.0.m4a<br />
5.&nbsp; mkvmerge -o &quot;in.pmf.mkv&quot;&nbsp; &#8211;default-duration 0:30000/1001fps -d 0 -A -S &quot;in.pmf.264&quot; &#8211;track-order 0:0<br />
6.&nbsp; edit a avs file (in.pmf.avs), it&#8217;s content like &quot;&nbsp; directshowsource(&quot;in.pmf.mkv&quot;, audio=false)&nbsp; &quot;<br />
7.&nbsp; you can use Q mode or 2pass to encode a avc stream<br />
&nbsp;&nbsp;&nbsp; x264.exe&nbsp; &#8211;pass 1 &#8211;bitrate 768 -A all &#8211;stats &quot;.stats&quot; &#8211;level 3 &#8211;aud &#8211;bframes 3 &#8211;no-psnr &#8211;threads auto &#8211;no-psnr &#8211;thread-input &#8211;progress &#8211;output NUL &quot;in.pmf.avs&quot;<br />
&nbsp;&nbsp;&nbsp; x264.exe&nbsp; &#8211;pass 2 &#8211;bitrate 768 -A all &#8211;stats &quot;.stats&quot; &#8211;level 3 &#8211;aud &#8211;bframes 3 &#8211;no-psnr &#8211;threads auto &#8211;no-psnr &#8211;thread-input &#8211;progress &#8211;output in.pmf.recompress.264 &quot;in.pmf.avs&quot;</p>
<p>8. using MP4Box to mux avc and aac stream into a MP4 file<br />
&nbsp;&nbsp;&nbsp; MP4Box -fps 29.97 -add in.pmf.recompress.264 out.mp4<br />
&nbsp;&nbsp;&nbsp; MP4Box -fps 29.97 -add in.pmf.0.m4a out.mp4</font></p>
<p><font face="Verdana">all tools, you can download it here<br />
<a href="http://www.fx-world.org/cooleyes/downloads/tools/PMF2MP4-20080714.rar" target="_blank" class="postlink">http://www.fx-world.org/cooleyes/downloads/tools/PMF2MP4-20080714.rar</a></font></p>
]]></content:encoded>
			<wfw:commentRss>http://cooleyes.fx-world.org/blog/?feed=rss2&amp;p=12</wfw:commentRss>
		</item>
		<item>
		<title>Update PMF2PMP to 20080712</title>
		<link>http://cooleyes.fx-world.org/blog/?p=11</link>
		<comments>http://cooleyes.fx-world.org/blog/?p=11#comments</comments>
		<pubDate>Sat, 12 Jul 2008 07:33:53 +0000</pubDate>
		<dc:creator>cooleyes</dc:creator>
		
		<category><![CDATA[PSP]]></category>

		<guid isPermaLink="false">http://www.fx-world.org/cooleyes/?p=11</guid>
		<description><![CDATA[【Changelog】
1.fixed PMFAudioDumper, can dump more audio tracks from PMF file
【Download】
http://www.fx-world.org/cooleyes/downloads/tools/PMF2PMP-20080712.rar
]]></description>
			<content:encoded><![CDATA[<p>【Changelog】<br />
1.fixed PMFAudioDumper, can dump more audio tracks from PMF file</p>
<p>【Download】</p>
<p><a class="postlink" target="_blank" href="http://www.fx-world.org/cooleyes/downloads/tools/PMF2PMP-20080712.rar">http://www.fx-world.org/cooleyes/downloads/tools/PMF2PMP-20080712.rar</a></p>
]]></content:encoded>
			<wfw:commentRss>http://cooleyes.fx-world.org/blog/?feed=rss2&amp;p=11</wfw:commentRss>
		</item>
		<item>
		<title>Convert PMF to PMP quickly</title>
		<link>http://cooleyes.fx-world.org/blog/?p=10</link>
		<comments>http://cooleyes.fx-world.org/blog/?p=10#comments</comments>
		<pubDate>Thu, 19 Jun 2008 09:19:47 +0000</pubDate>
		<dc:creator>cooleyes</dc:creator>
		
		<category><![CDATA[PSP]]></category>

		<guid isPermaLink="false">http://www.fx-world.org/cooleyes/?p=10</guid>
		<description><![CDATA[you must have installed Sony&#8217;s SonicStage
1.&#160; PMFVideoDumper.exe&#160; in.pmf
2.&#160; PMFAudioDumper.exe&#160; in.pmf
3.&#160; HIMDRENDER.exe -i in.pmf.oma -o in.pmf.wav
4.&#160; neroAacEnc_SSE2.exe -br 128000 -if in.pmf.wav -of in.pmf.m4a
5.&#160; pmp_muxer2.exe -v in.pmf.264 -a in.pmf.m4a -o out.pmp -d 1 -w 480 -h 272 -r 30000 -s 1001
6.&#160; del in.pmf.264
&#160;&#160;&#160;&#160; del in.pmf.oma
&#160;&#160;&#160;&#160; del in.pmf.wav
&#160;&#160;&#160;&#160; del in.pmf.m4a
all tools, you can download it here
http://www.fx-world.org/cooleyes/downloads/tools/PMF2PMP-20080619.rar
]]></description>
			<content:encoded><![CDATA[<p><font size="4"><strong>you must have installed Sony&#8217;s SonicStage</strong></font></p>
<p>1.&nbsp; PMFVideoDumper.exe&nbsp; in.pmf<br />
2.&nbsp; PMFAudioDumper.exe&nbsp; in.pmf<br />
3.&nbsp; HIMDRENDER.exe -i in.pmf.oma -o in.pmf.wav<br />
4.&nbsp; neroAacEnc_SSE2.exe -br 128000 -if in.pmf.wav -of in.pmf.m4a<br />
5.&nbsp; pmp_muxer2.exe -v in.pmf.264 -a in.pmf.m4a -o out.pmp -d 1 -w 480 -h 272 -r 30000 -s 1001<br />
6.&nbsp; del in.pmf.264<br />
&nbsp;&nbsp;&nbsp;&nbsp; del in.pmf.oma<br />
&nbsp;&nbsp;&nbsp;&nbsp; del in.pmf.wav<br />
&nbsp;&nbsp;&nbsp;&nbsp; del in.pmf.m4a</p>
<p>all tools, you can download it here</p>
<p><a href="http://www.fx-world.org/cooleyes/downloads/tools/PMF2PMP-20080619.rar" target="_blank" class="postlink">http://www.fx-world.org/cooleyes/downloads/tools/PMF2PMP-20080619.rar</a></p>
]]></content:encoded>
			<wfw:commentRss>http://cooleyes.fx-world.org/blog/?feed=rss2&amp;p=10</wfw:commentRss>
		</item>
		<item>
		<title>PMPlayer advance svn update(20080613)</title>
		<link>http://cooleyes.fx-world.org/blog/?p=9</link>
		<comments>http://cooleyes.fx-world.org/blog/?p=9#comments</comments>
		<pubDate>Fri, 13 Jun 2008 02:18:10 +0000</pubDate>
		<dc:creator>cooleyes</dc:creator>
		
		<category><![CDATA[Pmplayer advance]]></category>

		<guid isPermaLink="false">http://www.fx-world.org/cooleyes/?p=9</guid>
		<description><![CDATA[submit some new code to svn today,
add MP4(xvid) supported to PPA,
but the play fps is still not full,  
]]></description>
			<content:encoded><![CDATA[<p>submit some new code to svn today,<br />
add MP4(xvid) supported to PPA,<br />
but the play fps is still not full, <img src='http://www.fx-world.org/cooleyes/blog/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://cooleyes.fx-world.org/blog/?feed=rss2&amp;p=9</wfw:commentRss>
		</item>
		<item>
		<title>PMPlayer advance built(20080608-en) release</title>
		<link>http://cooleyes.fx-world.org/blog/?p=8</link>
		<comments>http://cooleyes.fx-world.org/blog/?p=8#comments</comments>
		<pubDate>Wed, 11 Jun 2008 08:28:43 +0000</pubDate>
		<dc:creator>cooleyes</dc:creator>
		
		<category><![CDATA[PSP]]></category>

		<category><![CDATA[Pmplayer advance]]></category>

		<guid isPermaLink="false">http://www.fx-world.org/cooleyes/?p=8</guid>
		<description><![CDATA[
[changelog]
1. fw3.95GEN supported.
2. more MP4AVC file supported
3.ISO8859-1 charset supported&#160; in English version release.
[download]
http://code.google.com/p/pmplayer-advance/downloads/list
]]></description>
			<content:encoded><![CDATA[<p><strong><br />
[changelog]</p>
<p>1. fw3.95GEN supported.<br />
2. more MP4AVC file </strong><strong>supported<br />
3.ISO8859-1 charset supported&nbsp; in English version release.</p>
<p>[download]<br />
<a target="_blank" href="http://code.google.com/p/pmplayer-advance/downloads/list">http://code.google.com/p/pmplayer-advance/downloads/list</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://cooleyes.fx-world.org/blog/?feed=rss2&amp;p=8</wfw:commentRss>
		</item>
		<item>
		<title>a sample code to decode a psp mp4(avc) file</title>
		<link>http://cooleyes.fx-world.org/blog/?p=7</link>
		<comments>http://cooleyes.fx-world.org/blog/?p=7#comments</comments>
		<pubDate>Tue, 11 Mar 2008 08:11:33 +0000</pubDate>
		<dc:creator>cooleyes</dc:creator>
		
		<category><![CDATA[PSP]]></category>

		<guid isPermaLink="false">http://www.fx-world.org/cooleyes/?p=7</guid>
		<description><![CDATA[to decode mp4(avc), we need a mpeg_vsh.prx from psp fw (ver &#62; 2.00) 
so I use the mpeg_vsh.prx from psp fw(3.30), 
I decompress and decrypt  mpeg_vsh.prx from psp fw(3.30) and rename to mpeg_vsh330.prx , and use it to decode mp4(avc) 
now, I can decode &#60;=480*272 avc frame from psp mp4 file, 
and I am [...]]]></description>
			<content:encoded><![CDATA[<p><span class="postbody">to decode mp4(avc), we need a mpeg_vsh.prx from psp fw (ver &gt; 2.00) <br />
so I use the mpeg_vsh.prx from psp fw(3.30), <br />
I decompress and decrypt  mpeg_vsh.prx from psp fw(3.30) and rename to mpeg_vsh330.prx , and use it to decode mp4(avc) </p>
<p>now, I can decode &lt;=480*272 avc frame from psp mp4 file, <br />
and I am trying to decode 720*480 avc frame from psp mp4 file.</p>
<p>[sample code]</p>
<div class="codeText">
<div class="codeHead">C++ code</div>
<ol start="1" class="dp-cpp">
<li class="alt"><span><span class="comment">/*</span>&nbsp;</span></li>
<li class=""><span><span class="comment">&nbsp;*&nbsp;&nbsp;&nbsp;Copyright&nbsp;(C)&nbsp;2008&nbsp;cooleyes</span>&nbsp;</span></li>
<li class="alt"><span><span class="comment">&nbsp;*&nbsp;&nbsp;&nbsp;eyes.cooleyes@gmail.com</span>&nbsp;</span></li>
<li class=""><span><span class="comment">&nbsp;*</span>&nbsp;</span></li>
<li class="alt"><span><span class="comment">&nbsp;*&nbsp;&nbsp;This&nbsp;Program&nbsp;is&nbsp;free&nbsp;software;&nbsp;you&nbsp;can&nbsp;redistribute&nbsp;it&nbsp;and/or&nbsp;modify</span>&nbsp;</span></li>
<li class=""><span><span class="comment">&nbsp;*&nbsp;&nbsp;it&nbsp;under&nbsp;the&nbsp;terms&nbsp;of&nbsp;the&nbsp;GNU&nbsp;General&nbsp;Public&nbsp;License&nbsp;as&nbsp;published&nbsp;by</span>&nbsp;</span></li>
<li class="alt"><span><span class="comment">&nbsp;*&nbsp;&nbsp;the&nbsp;Free&nbsp;Software&nbsp;Foundation;&nbsp;either&nbsp;version&nbsp;2,&nbsp;or&nbsp;(at&nbsp;your&nbsp;option)</span>&nbsp;</span></li>
<li class=""><span><span class="comment">&nbsp;*&nbsp;&nbsp;any&nbsp;later&nbsp;version.</span>&nbsp;</span></li>
<li class="alt"><span><span class="comment">&nbsp;*&nbsp;&nbsp;&nbsp;</span>&nbsp;</span></li>
<li class=""><span><span class="comment">&nbsp;*&nbsp;&nbsp;This&nbsp;Program&nbsp;is&nbsp;distributed&nbsp;in&nbsp;the&nbsp;hope&nbsp;that&nbsp;it&nbsp;will&nbsp;be&nbsp;useful,</span>&nbsp;</span></li>
<li class="alt"><span><span class="comment">&nbsp;*&nbsp;&nbsp;but&nbsp;WITHOUT&nbsp;ANY&nbsp;WARRANTY;&nbsp;without&nbsp;even&nbsp;the&nbsp;implied&nbsp;warranty&nbsp;of</span>&nbsp;</span></li>
<li class=""><span><span class="comment">&nbsp;*&nbsp;&nbsp;MERCHANTABILITY&nbsp;or&nbsp;FITNESS&nbsp;FOR&nbsp;A&nbsp;PARTICULAR&nbsp;PURPOSE.&nbsp;See&nbsp;the</span>&nbsp;</span></li>
<li class="alt"><span><span class="comment">&nbsp;*&nbsp;&nbsp;GNU&nbsp;General&nbsp;Public&nbsp;License&nbsp;for&nbsp;more&nbsp;details.</span>&nbsp;</span></li>
<li class=""><span><span class="comment">&nbsp;*&nbsp;&nbsp;&nbsp;</span>&nbsp;</span></li>
<li class="alt"><span><span class="comment">&nbsp;*&nbsp;&nbsp;You&nbsp;should&nbsp;have&nbsp;received&nbsp;a&nbsp;copy&nbsp;of&nbsp;the&nbsp;GNU&nbsp;General&nbsp;Public&nbsp;License</span>&nbsp;</span></li>
<li class=""><span><span class="comment">&nbsp;*&nbsp;&nbsp;along&nbsp;with&nbsp;GNU&nbsp;Make;&nbsp;see&nbsp;the&nbsp;file&nbsp;COPYING.&nbsp;&nbsp;If&nbsp;not,&nbsp;write&nbsp;to</span>&nbsp;</span></li>
<li class="alt"><span><span class="comment">&nbsp;*&nbsp;&nbsp;the&nbsp;Free&nbsp;Software&nbsp;Foundation,&nbsp;675&nbsp;Mass&nbsp;Ave,&nbsp;Cambridge,&nbsp;MA&nbsp;02139,&nbsp;USA.</span>&nbsp;</span></li>
<li class=""><span><span class="comment">&nbsp;*&nbsp;&nbsp;http://www.gnu.org/copyleft/gpl.html</span>&nbsp;</span></li>
<li class="alt"><span><span class="comment">&nbsp;*</span>&nbsp;</span></li>
<li class=""><span><span class="comment">&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span><span class="preprocessor">#include&nbsp;&lt;pspkernel.h&gt;</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span><span class="preprocessor">#include&nbsp;&lt;pspctrl.h&gt;</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span><span class="preprocessor">#include&nbsp;&lt;pspdisplay.h&gt;</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span><span class="preprocessor">#include&nbsp;&lt;psputils.h&gt;</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span><span class="preprocessor">#include&nbsp;&lt;pspgu.h&gt;</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span><span class="preprocessor">#include&nbsp;&lt;pspdebug.h&gt;</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span><span class="preprocessor">#include&nbsp;&lt;psppower.h&gt;</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span><span class="preprocessor">#include&nbsp;&lt;stdio.h&gt;</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span><span class="preprocessor">#include&nbsp;&lt;stdlib.h&gt;</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span><span class="preprocessor">#include&nbsp;&lt;psprtc.h&gt;</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span><span class="preprocessor">#include&nbsp;&lt;pspsdk.h&gt;</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span><span class="preprocessor">#include&nbsp;&lt;string.h&gt;</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span><span class="preprocessor">#include&nbsp;&lt;malloc.h&gt;</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span><span class="preprocessor">#include&nbsp;&quot;mem64.h&quot;</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span><span class="preprocessor">#include&nbsp;&quot;pspmpeg/pspmpeg.h&quot;</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span><span class="preprocessor">#include&nbsp;&quot;mp4ff.h&quot;</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;</span></li>
<li class=""><span><span class="datatypes">int</span><span>&nbsp;SetupCallbacks();&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;</span></li>
<li class=""><span>PSP_MODULE_INFO(<span class="string">&quot;avcdecode&nbsp;test&quot;</span><span>,&nbsp;0,&nbsp;1,&nbsp;1);&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>PSP_MAIN_THREAD_ATTR(0);&nbsp;&nbsp;</span></li>
<li class=""><span>PSP_HEAP_SIZE_KB(18*1024);&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;</span></li>
<li class=""><span>SceCtrlData&nbsp;input;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;</span></li>
<li class=""><span><span class="keyword">typedef</span><span>&nbsp;</span><span class="keyword">struct</span><span>&nbsp;{&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;ScePVoid&nbsp;sps_buffer;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;sps_size;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;ScePVoid&nbsp;pps_buffer;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;pps_size;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unkown0;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;ScePVoid&nbsp;nal_buffer;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;nal_size;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;mode;&nbsp;&nbsp;</span></li>
<li class="alt"><span>}&nbsp;AvcNalStruct;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;</span></li>
<li class="alt"><span><span class="keyword">typedef</span><span>&nbsp;</span><span class="keyword">struct</span><span>&nbsp;{&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown0;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown1;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;width;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;height;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown4;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown5;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown6;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown7;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown8;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown9;&nbsp;&nbsp;</span></li>
<li class=""><span>}&nbsp;AvcInfoStruct;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;</span></li>
<li class=""><span><span class="keyword">typedef</span><span>&nbsp;</span><span class="keyword">struct</span><span>&nbsp;{&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;ScePVoid&nbsp;buffer0;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;ScePVoid&nbsp;buffer1;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;ScePVoid&nbsp;buffer2;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;ScePVoid&nbsp;buffer3;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;ScePVoid&nbsp;buffer4;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;ScePVoid&nbsp;buffer5;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;ScePVoid&nbsp;buffer6;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;ScePVoid&nbsp;buffer7;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown0;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown1;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown2;&nbsp;&nbsp;</span></li>
<li class=""><span>}&nbsp;AvcYuvStruct;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;</span></li>
<li class="alt"><span><span class="keyword">typedef</span><span>&nbsp;</span><span class="keyword">struct</span><span>&nbsp;{&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown0;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown1;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown2;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown3;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;AvcInfoStruct*&nbsp;info_buffer;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown5;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown6;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown7;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown8;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown9;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown10;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;AvcYuvStruct*&nbsp;yuv_buffer;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown12;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown13;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown14;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown15;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown16;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown17;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown18;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown19;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown20;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown21;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown22;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;unknown23;&nbsp;&nbsp;</span></li>
<li class=""><span>}&nbsp;AvcCodecStruct;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;</span></li>
<li class=""><span><span class="keyword">typedef</span><span>&nbsp;</span><span class="keyword">struct</span><span>&nbsp;{&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;height;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;width;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;mode0;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;mode1;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;ScePVoid&nbsp;buffer0;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;ScePVoid&nbsp;buffer1;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;ScePVoid&nbsp;buffer2;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;ScePVoid&nbsp;buffer3;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;ScePVoid&nbsp;buffer4;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;ScePVoid&nbsp;buffer5;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;ScePVoid&nbsp;buffer6;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;ScePVoid&nbsp;buffer7;&nbsp;&nbsp;</span></li>
<li class="alt"><span>}&nbsp;AvcCscStruct;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;</span></li>
<li class="alt"><span><span class="keyword">typedef</span><span>&nbsp;</span><span class="keyword">struct</span><span>&nbsp;{&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;ScePVoid&nbsp;mpeg_buffer;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;SceMpeg&nbsp;mpeg;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;SceMpegRingbuffer&nbsp;mpeg_ringbuffer;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;SceMpegAu*&nbsp;mpeg_au;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;mpeg_mode;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;SceInt32&nbsp;mpeg_buffer_size;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;ScePVoid&nbsp;mpeg_ddrtop;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;ScePVoid&nbsp;mpeg_au_buffer;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;AvcNalStruct&nbsp;mpeg_nal;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;AvcCodecStruct*&nbsp;mpeg_codec_buffer;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;AvcYuvStruct*&nbsp;mpeg_yuv_buffer;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;AvcInfoStruct*&nbsp;mpeg_info_buffer;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class=""><span>}&nbsp;AvcDecodeStruct;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;</span></li>
<li class=""><span><span class="keyword">static</span><span>&nbsp;uint32_t&nbsp;mp4_read(</span><span class="keyword">void</span><span>&nbsp;*user_data,&nbsp;</span><span class="keyword">void</span><span>&nbsp;*buffer,&nbsp;uint32_t&nbsp;length)&nbsp;{&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;<span class="datatypes">FILE</span><span>**&nbsp;fp&nbsp;=&nbsp;(</span><span class="datatypes">FILE</span><span>**)user_data;&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;uint32_t&nbsp;res&nbsp;=&nbsp;fread(buffer,&nbsp;length,&nbsp;1,&nbsp;*fp);&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;(res*length);&nbsp;&nbsp;</span></span></li>
<li class=""><span>}&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;</span></li>
<li class=""><span><span class="keyword">static</span><span>&nbsp;uint32_t&nbsp;mp4_seek(</span><span class="keyword">void</span><span>&nbsp;*user_data,&nbsp;uint64_t&nbsp;position)&nbsp;{&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;<span class="datatypes">FILE</span><span>**&nbsp;fp&nbsp;=&nbsp;(</span><span class="datatypes">FILE</span><span>**)user_data;&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;fseek(*fp,&nbsp;position,&nbsp;PSP_SEEK_SET&nbsp;);&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>}&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;</span></li>
<li class="alt"><span>AvcDecodeStruct&nbsp;avc_struct;&nbsp;&nbsp;</span></li>
<li class=""><span>AvcDecodeStruct*&nbsp;avc&nbsp;=&nbsp;&amp;avc_struct;&nbsp;&nbsp;</span></li>
<li class="alt"><span>AvcCscStruct&nbsp;csc_struct;&nbsp;&nbsp;</span></li>
<li class=""><span>AvcCscStruct*&nbsp;csc&nbsp;=&nbsp;&amp;csc_struct;&nbsp;&nbsp;</span></li>
<li class="alt"><span><span class="comment">//unsigned&nbsp;char&nbsp;RGBBuffer[4*512*512];</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span>unsigned&nbsp;<span class="datatypes">char</span><span>&nbsp;RGBBuffer0[4*512*272];&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>unsigned&nbsp;<span class="datatypes">char</span><span>&nbsp;RGBBuffer1[4*512*272];&nbsp;&nbsp;</span></span></li>
<li class=""><span>unsigned&nbsp;<span class="datatypes">char</span><span>*&nbsp;FrameBuffer[]&nbsp;=&nbsp;{RGBBuffer0,&nbsp;RGBBuffer1};&nbsp;&nbsp;</span></span></li>
<li class="alt"><span><span class="datatypes">int</span><span>&nbsp;frame_index&nbsp;=&nbsp;0;&nbsp;&nbsp;</span></span></li>
<li class=""><span><span class="datatypes">char</span><span>&nbsp;filename[1024];&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;</span></li>
<li class=""><span>mp4ff_callback_t&nbsp;mp4_callback&nbsp;=&nbsp;{mp4_read,&nbsp;0,&nbsp;mp4_seek,&nbsp;0,&nbsp;0};&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;</span></li>
<li class=""><span><span class="datatypes">int</span><span>&nbsp;main(</span><span class="keyword">void</span><span>)&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>{&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;SetupCallbacks();&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;pspDebugScreenInit();&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;pspDebugScreenSetXY(0,&nbsp;2);&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;<span class="comment">//scePowerSetClockFrequency(333,333,166);</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;<span class="comment">//scePowerSetCpuClockFrequency(333);</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;<span class="comment">//scePowerSetBusClockFrequency(166);</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;scePowerSetClockFrequency(133,133,66);&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;scePowerSetCpuClockFrequency(133);&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;scePowerSetBusClockFrequency(66);&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;u32&nbsp;cpu&nbsp;=&nbsp;scePowerGetCpuClockFrequency();&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;u32&nbsp;bus&nbsp;=&nbsp;scePowerGetBusClockFrequency();&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;pspDebugScreenPrintf(<span class="string">&quot;cpu=%d,&nbsp;bus=%d\n&quot;</span><span>,&nbsp;cpu,&nbsp;bus);&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;getcwd(filename,&nbsp;256);&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;strcat(filename,&nbsp;<span class="string">&quot;/mpeg_vsh330.prx&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;pspDebugScreenPrintf(<span class="string">&quot;%s\n&quot;</span><span>,&nbsp;filename);&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;<span class="datatypes">FILE</span><span>*&nbsp;mp4_file&nbsp;=&nbsp;fopen(</span><span class="string">&quot;ms0:/VIDEO/Test.MP4&quot;</span><span>,&nbsp;</span><span class="string">&quot;rb&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;mp4_callback.user_data&nbsp;=&nbsp;&amp;mp4_file;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;mp4ff_t*&nbsp;mp4_handle&nbsp;=&nbsp;mp4ff_open_read(&amp;mp4_callback);&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;u32&nbsp;total_tracks&nbsp;=&nbsp;mp4ff_total_tracks(mp4_handle);&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;pspDebugScreenPrintf(<span class="string">&quot;total_tracks=%d\n&quot;</span><span>,&nbsp;total_tracks);&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;<span class="datatypes">int</span><span>&nbsp;ii;&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span>(ii&nbsp;=&nbsp;0;&nbsp;ii&nbsp;&lt;&nbsp;total_tracks;&nbsp;ii++)&nbsp;{&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pspDebugScreenPrintf(<span class="string">&quot;track%d&nbsp;:&nbsp;type&nbsp;0x%08X\n&quot;</span><span>,&nbsp;ii,&nbsp;mp4ff_get_track_type(mp4_handle,&nbsp;ii));&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pspDebugScreenPrintf(<span class="string">&quot;track%d&nbsp;:&nbsp;%d&nbsp;samples\n&quot;</span><span>,&nbsp;ii,&nbsp;mp4ff_num_samples(mp4_handle,&nbsp;ii));&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;u32&nbsp;total_samples&nbsp;=&nbsp;mp4ff_num_samples(mp4_handle,&nbsp;0);&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;unsigned&nbsp;<span class="datatypes">char</span><span>*&nbsp;sps_pps_buffer;&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;unsigned&nbsp;<span class="datatypes">int</span><span>&nbsp;sps_size,&nbsp;pps_size;&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(&nbsp;mp4ff_get_avc_sps_pps(mp4_handle,&nbsp;0,&nbsp;&amp;sps_pps_buffer,&nbsp;&amp;sps_size,&nbsp;&amp;pps_size)&nbsp;!=&nbsp;0&nbsp;||&nbsp;sps_size&nbsp;==&nbsp;0&nbsp;||&nbsp;pps_size&nbsp;==&nbsp;0&nbsp;)&nbsp;&nbsp;{&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pspDebugScreenPrintf(<span class="string">&quot;\nerr:&nbsp;get_avc_sps_pps\n&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">goto</span><span>&nbsp;wait;&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;<span class="comment">//pspDebugScreenPrintf(&quot;sps_size=%d,&nbsp;pps_size=%d\n&quot;,&nbsp;sps_size,&nbsp;pps_size);</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;<span class="datatypes">int</span><span>&nbsp;result;&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;sceUtilityLoadAvModule(0);&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(&nbsp;result&nbsp;&lt;&nbsp;0&nbsp;)&nbsp;{&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pspDebugScreenPrintf(<span class="string">&quot;\nerr:&nbsp;sceUtilityLoadAvModule(0)\n&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">goto</span><span>&nbsp;wait;&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;SceUID&nbsp;modid;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;<span class="datatypes">int</span><span>&nbsp;status;&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;modid&nbsp;=&nbsp;sceKernelLoadModule(filename,&nbsp;0,&nbsp;NULL);&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(modid&nbsp;&gt;=&nbsp;0)&nbsp;{&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modid&nbsp;=&nbsp;sceKernelStartModule(modid,&nbsp;0,&nbsp;0,&nbsp;&amp;status,&nbsp;NULL);&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;<span class="keyword">else</span><span>&nbsp;{&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pspDebugScreenPrintf(<span class="string">&quot;\nerr=0x%08X&nbsp;:&nbsp;sceKernelLoadModule\n&quot;</span><span>,&nbsp;modid);&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">goto</span><span>&nbsp;wait;&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;</span></li>
<li class=""><span><span class="comment">//&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;pspSdkLoadStartModule(&quot;ms0:/mpeg_vsh330.prx&quot;,&nbsp;PSP_MEMORY_PARTITION_USER);</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span><span class="comment">//&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;sceUtilityLoadAvModule(3);</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span><span class="comment">//&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;result&nbsp;&lt;&nbsp;0&nbsp;){</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span><span class="comment">//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pspDebugScreenPrintf(&quot;\nerr=0x%08X&nbsp;:&nbsp;sceUtilityLoadAvModule(3)\n&quot;,&nbsp;result);</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span><span class="comment">//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto&nbsp;wait;</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span><span class="comment">//&nbsp;&nbsp;&nbsp;}</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;sceMpegInit();&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(&nbsp;result&nbsp;!=&nbsp;0&nbsp;){&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pspDebugScreenPrintf(<span class="string">&quot;\nerr:&nbsp;sceMpegInit\n&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">goto</span><span>&nbsp;wait;&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;avc-&gt;mpeg_mode&nbsp;=&nbsp;4;&nbsp;&nbsp;</span></li>
<li class=""><span><span class="comment">//&nbsp;&nbsp;&nbsp;avc-&gt;mpeg_ddrtop&nbsp;=&nbsp;0&#215;09400000;</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span><span class="comment">//&nbsp;&nbsp;&nbsp;avc-&gt;mpeg_au_buffer&nbsp;=&nbsp;0&#215;09410000;</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;avc-&gt;mpeg_ddrtop&nbsp;=&nbsp;&nbsp;memalign(0&#215;400000,&nbsp;0&#215;400000);&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;avc-&gt;mpeg_au_buffer&nbsp;=&nbsp;avc-&gt;mpeg_ddrtop&nbsp;+&nbsp;0&#215;10000;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;</span></li>
<li class="alt"><span><span class="comment">//&nbsp;&nbsp;&nbsp;pspDebugScreenPrintf(&quot;\naddress=0x%08X\n&quot;,&nbsp;avc-&gt;mpeg_au_buffer);</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;sceMpegQueryMemSize(avc-&gt;mpeg_mode);&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(&nbsp;result&nbsp;&lt;&nbsp;0&nbsp;){&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pspDebugScreenPrintf(<span class="string">&quot;\nerr:&nbsp;sceMpegQueryMemSize(0x%08X)\n&quot;</span><span>,&nbsp;avc-&gt;mpeg_mode);&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">goto</span><span>&nbsp;wait;&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class=""><span><span class="comment">//&nbsp;&nbsp;&nbsp;pspDebugScreenPrintf(&quot;\n%d\n&quot;,&nbsp;result);</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;avc-&gt;mpeg_buffer_size&nbsp;=&nbsp;result;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(&nbsp;(result&nbsp;&amp;&nbsp;0xF)&nbsp;!=&nbsp;0&nbsp;)&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;(result&nbsp;&amp;&nbsp;0xFFFFFFF0)&nbsp;+&nbsp;16;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;avc-&gt;mpeg_buffer&nbsp;=&nbsp;malloc_64(result);&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(&nbsp;avc-&gt;mpeg_buffer&nbsp;==&nbsp;0&nbsp;)&nbsp;{&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pspDebugScreenPrintf(<span class="string">&quot;\nerr:&nbsp;alloc\n&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">goto</span><span>&nbsp;wait;&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;sceMpegCreate(&amp;avc-&gt;mpeg,&nbsp;avc-&gt;mpeg_buffer,&nbsp;avc-&gt;mpeg_buffer_size,&nbsp;&amp;avc-&gt;mpeg_ringbuffer,&nbsp;512,&nbsp;avc-&gt;mpeg_mode,&nbsp;avc-&gt;mpeg_ddrtop);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(&nbsp;result&nbsp;!=&nbsp;0){&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pspDebugScreenPrintf(<span class="string">&quot;\nerr:&nbsp;sceMpegCreate\n&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">goto</span><span>&nbsp;wait;&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;avc-&gt;mpeg_au&nbsp;=&nbsp;(SceMpegAu*)malloc_64(64);&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(&nbsp;avc-&gt;mpeg_au&nbsp;==&nbsp;0&nbsp;)&nbsp;{&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pspDebugScreenPrintf(<span class="string">&quot;\nerr:&nbsp;alloc\n&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">goto</span><span>&nbsp;wait;&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;memset(avc-&gt;mpeg_au,&nbsp;0xFF,&nbsp;64);&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(&nbsp;sceMpegInitAu(&amp;avc-&gt;mpeg,&nbsp;avc-&gt;mpeg_au_buffer,&nbsp;avc-&gt;mpeg_au)&nbsp;!=&nbsp;0&nbsp;){&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pspDebugScreenPrintf(<span class="string">&quot;\nerr:&nbsp;sceMpegInitAu\n&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">goto</span><span>&nbsp;wait;&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;unsigned&nbsp;<span class="datatypes">char</span><span>*&nbsp;nal_buffer&nbsp;=&nbsp;(unsigned&nbsp;</span><span class="datatypes">char</span><span>*)malloc_64(1024*1024);&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class=""><span><span class="comment">//&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;sps_pps_buffer[27];</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span><span class="comment">//&nbsp;&nbsp;&nbsp;</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span><span class="comment">//&nbsp;&nbsp;&nbsp;FILE*&nbsp;fp;</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span><span class="comment">//&nbsp;&nbsp;&nbsp;fp&nbsp;=&nbsp;fopen(&quot;ms0:/sps_pps.dat&quot;,&nbsp;&quot;rb&quot;);</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span><span class="comment">//&nbsp;&nbsp;&nbsp;fread(sps_pps_buffer,&nbsp;27,&nbsp;1,&nbsp;fp);</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span><span class="comment">//&nbsp;&nbsp;&nbsp;fclose(fp);</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span><span class="comment">//&nbsp;&nbsp;&nbsp;sps_size&nbsp;=&nbsp;23;</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span><span class="comment">//&nbsp;&nbsp;&nbsp;pps_size&nbsp;=&nbsp;4;</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;<span class="comment">//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;//</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;<span class="datatypes">float</span><span>&nbsp;curr_ms&nbsp;=&nbsp;1.0f;&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;u64&nbsp;last_tick;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;sceRtcGetCurrentTick(&amp;last_tick);&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;u32&nbsp;tick_frequency&nbsp;=&nbsp;sceRtcGetTickResolution();&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;<span class="datatypes">int</span><span>&nbsp;frame_count&nbsp;=&nbsp;0;&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;sceCtrlReadBufferPositive(&amp;input,&nbsp;1);&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;<span class="datatypes">int</span><span>&nbsp;pic_num;&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;sceDisplayWaitVblankStart();&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;sceDisplaySetFrameBuf(FrameBuffer[frame_index],&nbsp;512,&nbsp;PSP_DISPLAY_PIXEL_FORMAT_8888,&nbsp;PSP_DISPLAY_SETBUF_IMMEDIATE);&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class=""><span><span class="keyword">while</span><span>(!(input.Buttons&nbsp;&amp;&nbsp;PSP_CTRL_TRIANGLE))&nbsp;{&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;<span class="datatypes">float</span><span>&nbsp;curr_fps&nbsp;=&nbsp;1.0f&nbsp;/&nbsp;curr_ms;&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;<span class="comment">//pspDebugScreenSetXY(0,0);</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;<span class="comment">//pspDebugScreenPrintf(&quot;fps:&nbsp;%d.%03d&nbsp;\n&quot;,(int)curr_fps,(int)((curr_fps-(int)curr_fps)&nbsp;*&nbsp;1000.0f));</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;avc-&gt;mpeg_nal.sps_buffer&nbsp;=&nbsp;(&amp;sps_pps_buffer[0]);&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;avc-&gt;mpeg_nal.sps_size&nbsp;=&nbsp;sps_size;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;avc-&gt;mpeg_nal.pps_buffer&nbsp;=&nbsp;(&amp;sps_pps_buffer[sps_size]);&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;avc-&gt;mpeg_nal.pps_size&nbsp;=&nbsp;pps_size;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;avc-&gt;mpeg_nal.unkown0&nbsp;=&nbsp;4;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;memset(nal_buffer,&nbsp;0,&nbsp;1024*1024);&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;mp4ff_read_sample_v2(mp4_handle,&nbsp;0,&nbsp;frame_count,&nbsp;nal_buffer);&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;avc-&gt;mpeg_nal.nal_buffer&nbsp;=&nbsp;nal_buffer;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;avc-&gt;mpeg_nal.nal_size&nbsp;=&nbsp;mp4ff_read_sample_getsize(mp4_handle,&nbsp;0,&nbsp;frame_count);<span class="comment">//size1&nbsp;;</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(&nbsp;frame_count&nbsp;==&nbsp;0&nbsp;)&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;avc-&gt;mpeg_nal.mode&nbsp;=&nbsp;3;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;<span class="keyword">else</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;avc-&gt;mpeg_nal.mode&nbsp;=&nbsp;0;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;<span class="datatypes">FILE</span><span>*&nbsp;fp1;&nbsp;&nbsp;</span></span></li>
<li class=""><span><span class="comment">//&nbsp;&nbsp;&nbsp;memset(filename,0,1024);</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span><span class="comment">//&nbsp;&nbsp;&nbsp;sprintf(filename,&nbsp;&quot;ms0:/mpeg%d_0.dat&quot;,&nbsp;frame_count);</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span><span class="comment">//&nbsp;&nbsp;&nbsp;fp1&nbsp;=&nbsp;fopen(filename,&nbsp;&quot;wb&quot;);</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span><span class="comment">//&nbsp;&nbsp;&nbsp;fwrite(p1,&nbsp;512,&nbsp;1,&nbsp;fp1);</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span><span class="comment">//&nbsp;&nbsp;&nbsp;fclose(fp1);</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;sceMpegGetAvcNalAu(&amp;avc-&gt;mpeg,&nbsp;&amp;avc-&gt;mpeg_nal,&nbsp;avc-&gt;mpeg_au);&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;memset(filename,0,1024);&nbsp;&nbsp;</span></li>
<li class=""><span><span class="comment">//&nbsp;&nbsp;&nbsp;sprintf(filename,&nbsp;&quot;ms0:/au%d_1.dat&quot;,&nbsp;frame_count);</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span><span class="comment">//&nbsp;&nbsp;&nbsp;fp1&nbsp;=&nbsp;fopen(filename,&nbsp;&quot;wb&quot;);</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span><span class="comment">//&nbsp;&nbsp;&nbsp;fwrite(au0,&nbsp;64,&nbsp;1,&nbsp;fp1);</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span><span class="comment">//&nbsp;&nbsp;&nbsp;fclose(fp1);</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span><span class="comment">//&nbsp;&nbsp;&nbsp;pspDebugScreenPrintf(&quot;&nbsp;GetAvcNalAu=0x%08X\n&quot;,&nbsp;result);</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;sceMpegAvcDecode(&amp;avc-&gt;mpeg,&nbsp;avc-&gt;mpeg_au,&nbsp;512,&nbsp;0,&nbsp;&amp;pic_num);&nbsp;&nbsp;</span></li>
<li class="alt"><span><span class="comment">//&nbsp;&nbsp;&nbsp;pspDebugScreenPrintf(&quot;&nbsp;AvcDecode=0x%08X,0x%08X\n&quot;,&nbsp;result,&nbsp;pic_num);</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;sceMpegAvcDecodeDetail2(&amp;avc-&gt;mpeg,&nbsp;&amp;avc-&gt;mpeg_codec_buffer);&nbsp;&nbsp;</span></li>
<li class="alt"><span><span class="comment">//&nbsp;&nbsp;&nbsp;pspDebugScreenPrintf(&quot;&nbsp;AvcDecodeDetail2=0x%08X\n&quot;,&nbsp;result);</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(&nbsp;result&nbsp;==&nbsp;0&nbsp;)&nbsp;{&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;avc-&gt;mpeg_yuv_buffer&nbsp;=&nbsp;avc-&gt;mpeg_codec_buffer-&gt;yuv_buffer;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;avc-&gt;mpeg_info_buffer&nbsp;=&nbsp;avc-&gt;mpeg_codec_buffer-&gt;info_buffer;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(&nbsp;pic_num&nbsp;&gt;&nbsp;0&nbsp;)&nbsp;{&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="datatypes">int</span><span>&nbsp;i;&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span>(i=0;i&lt;pic_num;i++)&nbsp;{&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="datatypes">int</span><span>&nbsp;csc_mode&nbsp;=&nbsp;0;</span><span class="comment">//i&nbsp;%&nbsp;2;</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;csc-&gt;height&nbsp;=&nbsp;avc-&gt;mpeg_info_buffer-&gt;height&nbsp;&gt;&gt;&nbsp;4;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;csc-&gt;width&nbsp;=&nbsp;avc-&gt;mpeg_info_buffer-&gt;width&nbsp;&gt;&gt;&nbsp;4;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;csc-&gt;mode0&nbsp;=&nbsp;csc_mode;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;csc-&gt;mode1&nbsp;=&nbsp;csc_mode;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(&nbsp;csc_mode&nbsp;==&nbsp;0&nbsp;)&nbsp;{&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;csc-&gt;buffer0&nbsp;=&nbsp;avc-&gt;mpeg_yuv_buffer-&gt;buffer0&nbsp;;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;csc-&gt;buffer1&nbsp;=&nbsp;avc-&gt;mpeg_yuv_buffer-&gt;buffer1&nbsp;;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;csc-&gt;buffer2&nbsp;=&nbsp;avc-&gt;mpeg_yuv_buffer-&gt;buffer2&nbsp;;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;csc-&gt;buffer3&nbsp;=&nbsp;avc-&gt;mpeg_yuv_buffer-&gt;buffer3&nbsp;;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;csc-&gt;buffer4&nbsp;=&nbsp;avc-&gt;mpeg_yuv_buffer-&gt;buffer4&nbsp;;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;csc-&gt;buffer5&nbsp;=&nbsp;avc-&gt;mpeg_yuv_buffer-&gt;buffer5&nbsp;;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;csc-&gt;buffer6&nbsp;=&nbsp;avc-&gt;mpeg_yuv_buffer-&gt;buffer6&nbsp;;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;csc-&gt;buffer7&nbsp;=&nbsp;avc-&gt;mpeg_yuv_buffer-&gt;buffer7&nbsp;;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">else</span><span>&nbsp;{&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;csc-&gt;buffer0&nbsp;=&nbsp;avc-&gt;mpeg_yuv_buffer-&gt;buffer2&nbsp;;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;csc-&gt;buffer1&nbsp;=&nbsp;avc-&gt;mpeg_yuv_buffer-&gt;buffer3&nbsp;;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;csc-&gt;buffer2&nbsp;=&nbsp;avc-&gt;mpeg_yuv_buffer-&gt;buffer0&nbsp;;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;csc-&gt;buffer3&nbsp;=&nbsp;avc-&gt;mpeg_yuv_buffer-&gt;buffer1&nbsp;;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;csc-&gt;buffer4&nbsp;=&nbsp;avc-&gt;mpeg_yuv_buffer-&gt;buffer6&nbsp;;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;csc-&gt;buffer5&nbsp;=&nbsp;avc-&gt;mpeg_yuv_buffer-&gt;buffer7&nbsp;;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;csc-&gt;buffer6&nbsp;=&nbsp;avc-&gt;mpeg_yuv_buffer-&gt;buffer4&nbsp;;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;csc-&gt;buffer7&nbsp;=&nbsp;avc-&gt;mpeg_yuv_buffer-&gt;buffer5&nbsp;;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;sceMpegBaseCscAvc(FrameBuffer[frame_index],0,512,csc);&nbsp;&nbsp;</span></li>
<li class=""><span><span class="comment">//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pspDebugScreenPrintf(&quot;&nbsp;BaseCscAvc=0x%08X\n&quot;,&nbsp;result);</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(&nbsp;result&nbsp;==&nbsp;0&nbsp;)&nbsp;{&nbsp;&nbsp;</span></span></li>
<li class=""><span><span class="comment">//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(filename,0,1024);</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span><span class="comment">//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sprintf(filename,&nbsp;&quot;ms0:/RGB%d.%d.dat&quot;,&nbsp;frame_count,i);</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span><span class="comment">//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fp1&nbsp;=&nbsp;fopen(filename,&nbsp;&quot;wb&quot;);</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span><span class="comment">//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fwrite(RGBBuffer,&nbsp;4*512*512,&nbsp;1,&nbsp;fp1);</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span><span class="comment">//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fclose(fp1);</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sceDisplayWaitVblankStart();&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sceDisplaySetFrameBuf(FrameBuffer[frame_index],&nbsp;512,&nbsp;PSP_DISPLAY_PIXEL_FORMAT_8888,&nbsp;PSP_DISPLAY_SETBUF_IMMEDIATE);&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame_index&nbsp;=&nbsp;(frame_index+1)&nbsp;%&nbsp;2;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//sceKernelDelayThread(10000);</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
<li class="alt"><span><span class="comment">//&nbsp;&nbsp;&nbsp;memset(filename,0,1024);</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span><span class="comment">//&nbsp;&nbsp;&nbsp;sprintf(filename,&nbsp;&quot;ms0:/mpeg%d.dat&quot;,&nbsp;frame_count);</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span><span class="comment">//&nbsp;&nbsp;&nbsp;fp1&nbsp;=&nbsp;fopen(filename,&nbsp;&quot;wb&quot;);</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span><span class="comment">//&nbsp;&nbsp;&nbsp;fwrite(p1,&nbsp;512,&nbsp;1,&nbsp;fp1);</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span><span class="comment">//&nbsp;&nbsp;&nbsp;fclose(fp1);</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;++frame_count;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(&nbsp;frame_count&nbsp;&gt;=&nbsp;total_samples&nbsp;)&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">break</span><span>;&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;u64&nbsp;curr_tick;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;sceRtcGetCurrentTick(&amp;curr_tick);&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;((curr_tick-last_tick)&nbsp;&gt;=&nbsp;tick_frequency)&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="datatypes">float</span><span>&nbsp;time_span&nbsp;=&nbsp;((</span><span class="datatypes">int</span><span>)(curr_tick-last_tick))&nbsp;/&nbsp;(</span><span class="datatypes">float</span><span>)tick_frequency;&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curr_ms&nbsp;=&nbsp;time_span&nbsp;/&nbsp;frame_count;&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//frame_count&nbsp;=&nbsp;0;</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sceRtcGetCurrentTick(&amp;last_tick);&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;sceCtrlReadBufferPositive(&amp;input,&nbsp;1);&nbsp;&nbsp;</span></li>
<li class="alt"><span>}&nbsp;&nbsp;</span></li>
<li class=""><span><span class="comment">//&nbsp;&nbsp;&nbsp;fclose(fp);</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;</span></li>
<li class=""><span>wait:&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;mp4ff_close(mp4_handle);&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;fclose(mp4_file);&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;pspDebugScreenPrintf(<span class="string">&quot;\n&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;pspDebugScreenPrintf(<span class="string">&quot;press&nbsp;triangle&nbsp;to&nbsp;exit&#8230;\n&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;sceCtrlReadBufferPositive(&amp;input,&nbsp;1);&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;<span class="keyword">while</span><span>(!(input.Buttons&nbsp;&amp;&nbsp;PSP_CTRL_TRIANGLE))&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sceKernelDelayThread(10000);&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;wait&nbsp;10&nbsp;milliseconds</span><span>&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sceCtrlReadBufferPositive(&amp;input,&nbsp;1);&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;sceKernelExitGame();&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;0;&nbsp;&nbsp;</span></span></li>
<li class=""><span>}&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;</span></li>
<li class="alt"><span><span class="comment">/*&nbsp;Exit&nbsp;callback&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span><span class="datatypes">int</span><span>&nbsp;exit_callback(</span><span class="datatypes">int</span><span>&nbsp;arg1,&nbsp;</span><span class="datatypes">int</span><span>&nbsp;arg2,&nbsp;</span><span class="keyword">void</span><span>&nbsp;*common)&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>{&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;sceKernelExitGame();&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;0;&nbsp;&nbsp;</span></span></li>
<li class=""><span>}&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;</span></li>
<li class="alt"><span><span class="comment">/*&nbsp;Callback&nbsp;thread&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span><span class="datatypes">int</span><span>&nbsp;CallbackThread(SceSize&nbsp;args,&nbsp;</span><span class="keyword">void</span><span>&nbsp;*argp)&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>{&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;<span class="datatypes">int</span><span>&nbsp;cbid;&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;cbid&nbsp;=&nbsp;sceKernelCreateCallback(<span class="string">&quot;Exit&nbsp;Callback&quot;</span><span>,&nbsp;exit_callback,&nbsp;NULL);&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;sceKernelRegisterExitCallback(cbid);&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;sceKernelSleepThreadCB();&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;0;&nbsp;&nbsp;</span></span></li>
<li class=""><span>}&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;</span></li>
<li class="alt"><span><span class="comment">/*&nbsp;Sets&nbsp;up&nbsp;the&nbsp;callback&nbsp;thread&nbsp;and&nbsp;returns&nbsp;its&nbsp;thread&nbsp;id&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
<li class=""><span><span class="datatypes">int</span><span>&nbsp;SetupCallbacks(</span><span class="keyword">void</span><span>)&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>{&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;<span class="datatypes">int</span><span>&nbsp;thid&nbsp;=&nbsp;0;&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;thid&nbsp;=&nbsp;sceKernelCreateThread(<span class="string">&quot;update_thread&quot;</span><span>,&nbsp;CallbackThread,&nbsp;0&#215;11,&nbsp;0xFA0,&nbsp;0,&nbsp;0);&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(thid&nbsp;&gt;=&nbsp;0)&nbsp;&nbsp;</span></span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sceKernelStartThread(thid,&nbsp;0,&nbsp;0);&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;thid;&nbsp;&nbsp;</span></span></li>
<li class="alt"><span>}&nbsp;&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>[fw3xx Makefile]</p>
<div class="codeText">
<div class="codeHead">C++ code</div>
<ol start="1" class="dp-cpp">
<li class="alt"><span><span>TARGET&nbsp;=&nbsp;AvcDecodeTest&nbsp;&nbsp;</span></span></li>
<li class=""><span>OBJS&nbsp;=&nbsp;main.o&nbsp;mem64.o&nbsp;mpegbase.o&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;</span></li>
<li class=""><span>BUILD_PRX&nbsp;=&nbsp;1&nbsp;&nbsp;</span></li>
<li class="alt"><span>PSP_FW_VERSION=371&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;</span></li>
<li class="alt"><span>CFLAGS&nbsp;=&nbsp;-G0&nbsp;-Wall&nbsp;-O2&nbsp;&nbsp;</span></li>
<li class=""><span>CXXFLAGS&nbsp;=&nbsp;$(CFLAGS)&nbsp;-fno-exceptions&nbsp;-fno-rtti&nbsp;&nbsp;</span></li>
<li class="alt"><span>ASFLAGS&nbsp;=&nbsp;$(CFLAGS)&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;</span></li>
<li class="alt"><span>INCDIR&nbsp;=&nbsp;./mp4ff/include&nbsp;&nbsp;</span></li>
<li class=""><span>LIBDIR&nbsp;=&nbsp;&nbsp;.&nbsp;&nbsp;</span></li>
<li class="alt"><span>LDFLAGS&nbsp;=&nbsp;&nbsp;</span></li>
<li class=""><span>LIBS=&nbsp;-lpsppower&nbsp;-lm&nbsp;-lpsprtc&nbsp;-lpspgu&nbsp;-lpspmpeg&nbsp;-lmp4ff&nbsp;&nbsp;</span></li>
<li class="alt"><span>&nbsp;&nbsp;</span></li>
<li class=""><span>EXTRA_TARGETS&nbsp;=&nbsp;EBOOT.PBP&nbsp;&nbsp;</span></li>
<li class="alt"><span>PSP_EBOOT_TITLE&nbsp;=&nbsp;AvcDecode&nbsp;Test&nbsp;&nbsp;</span></li>
<li class=""><span>&nbsp;&nbsp;</span></li>
<li class="alt"><span>PSPSDK=$(shell&nbsp;psp-config&nbsp;&#8211;pspsdk-path)&nbsp;&nbsp;</span></li>
<li class=""><span>include&nbsp;$(PSPSDK)/lib/build.mak&nbsp;&nbsp;&nbsp;</span></li>
</ol>
</div>
<p></span></p>
]]></content:encoded>
			<wfw:commentRss>http://cooleyes.fx-world.org/blog/?feed=rss2&amp;p=7</wfw:commentRss>
		</item>
	</channel>
</rss>

