<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>APEG issues</title>
		<link>http://www.allegro.cc/forums/view/585995</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 21 Jun 2006 12:04:23 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I am having a problem with APEG, I&#39;m wondering if anyone can help me out. I made a function that uses apeg_play_mpg, but it won&#39;t move on to the next thing until I hit a button. Does anybody know what could be happening?</p><p>EDIT: There is no readkey() or ureadkey() or anything of the sort in it
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matt Kindy)</author>
		<pubDate>Tue, 20 Jun 2006 01:15:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It might help us help you if you could post the function.  I&#39;m not deeply familiar with apeg, but it&#39;s probably going to be hard to figure out your problem without seeing the relevant code.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Zaphos)</author>
		<pubDate>Tue, 20 Jun 2006 01:33:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">int</span> mpeg2screen<span class="k2">(</span><span class="k1">char</span> <span class="k3">*</span>filename, <span class="k1">int</span> screen_x_offset, <span class="k1">int</span> screen_y_offset<span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">2</td><td>    </td></tr><tr><td class="number">3</td><td>    <span class="k1">int</span> ret<span class="k3">=</span><span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">4</td><td>    <span class="k1">int</span> width<span class="k3">=</span><span class="n">0</span>, height<span class="k3">=</span><span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td>    </td></tr><tr><td class="number">6</td><td>    APEG_STREAM <span class="k3">*</span>movie<span class="k2">;</span>     <span class="c">// For getting info about the movie</span></td></tr><tr><td class="number">7</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>box<span class="k2">;</span>            <span class="c">// the sandbox for the movie</span></td></tr><tr><td class="number">8</td><td>    </td></tr><tr><td class="number">9</td><td>    <span class="c">// Find out the screen size of the movie</span></td></tr><tr><td class="number">10</td><td>    movie <span class="k3">=</span> apeg_open_stream<span class="k2">(</span>filename<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>    width <span class="k3">=</span> movie-&gt;w<span class="k2">;</span></td></tr><tr><td class="number">12</td><td>    height <span class="k3">=</span> movie-&gt;h<span class="k2">;</span></td></tr><tr><td class="number">13</td><td>    apeg_close_stream<span class="k2">(</span>movie<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_350.html" target="_blank">free</a><span class="k2">(</span>movie<span class="k2">)</span><span class="k2">;</span>        </td></tr><tr><td class="number">15</td><td>    </td></tr><tr><td class="number">16</td><td>    <span class="c">// SCREEN_W and SCREEN_H are globals set-up by Allegro</span></td></tr><tr><td class="number">17</td><td>    <span class="k1">if</span> <span class="k2">(</span>width<span class="k3">&lt;</span><span class="k3">=</span><a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a> <span class="k3">&amp;</span><span class="k3">&amp;</span> height<span class="k3">&lt;</span><span class="k3">=</span><a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">18</td><td>        </td></tr><tr><td class="number">19</td><td>        <span class="c">// Make a nice sandbox for the movie</span></td></tr><tr><td class="number">20</td><td>        box <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_sub_bitmap" target="_blank"><span class="a">create_sub_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, screen_x_offset, screen_y_offset, width, height<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>             </td></tr><tr><td class="number">22</td><td>        </td></tr><tr><td class="number">23</td><td>        </td></tr><tr><td class="number">24</td><td>        <span class="c">// Play the movie in the sandbox</span></td></tr><tr><td class="number">25</td><td>        ret <span class="k3">=</span> apeg_play_mpg<span class="k2">(</span>filename, box,<span class="n">0</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td>         </td></tr><tr><td class="number">27</td><td>               </td></tr><tr><td class="number">28</td><td>        <span class="c">// Note that you don't have to show the video</span></td></tr><tr><td class="number">29</td><td>        <span class="c">//ret = apeg_play_mpg(filename, NULL, 0, NULL);</span></td></tr><tr><td class="number">30</td><td>&#160;</td></tr><tr><td class="number">31</td><td>                 </td></tr><tr><td class="number">32</td><td>        </td></tr><tr><td class="number">33</td><td>        <span class="c">//free up the movie</span></td></tr><tr><td class="number">34</td><td>        apeg_close_stream<span class="k2">(</span>apeg_stream<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">35</td><td>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_350.html" target="_blank">free</a><span class="k2">(</span>apeg_stream<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">36</td><td>  </td></tr><tr><td class="number">37</td><td>        <a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span>box<span class="k2">)</span><span class="k2">;</span>        </td></tr><tr><td class="number">38</td><td>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_350.html" target="_blank">free</a><span class="k2">(</span>box<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>        <a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a><span class="k2">)</span><span class="k2">;</span>           </td></tr><tr><td class="number">40</td><td>&#160;</td></tr><tr><td class="number">41</td><td>      <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>box<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">42</td><td>        <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>  </td></tr><tr><td class="number">43</td><td>&#160;</td></tr><tr><td class="number">44</td><td>        <span class="c">// Error handling</span></td></tr><tr><td class="number">45</td><td>      <span class="k1">if</span><span class="k2">(</span>ret <span class="k3">=</span><span class="k3">=</span> APEG_ERROR<span class="k2">)</span></td></tr><tr><td class="number">46</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">47</td><td>            <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_TEXT, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">48</td><td>            <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"APEG Error: %s\n"</span>, apeg_error<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">49</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">50</td><td>    </td></tr><tr><td class="number">51</td><td><span class="k2">}</span></td></tr><tr><td class="number">52</td><td>    </td></tr><tr><td class="number">53</td><td>    <span class="k1">else</span> <span class="k2">{</span></td></tr><tr><td class="number">54</td><td>        </td></tr><tr><td class="number">55</td><td>        <span class="c">//Movie too big for screen</span></td></tr><tr><td class="number">56</td><td>        ret <span class="k3">=</span> <span class="k3">-</span><span class="n">999</span><span class="k2">;</span></td></tr><tr><td class="number">57</td><td>        </td></tr><tr><td class="number">58</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">59</td><td>        </td></tr><tr><td class="number">60</td><td>   <span class="k1">return</span> ret<span class="k2">;</span></td></tr><tr><td class="number">61</td><td>    </td></tr><tr><td class="number">62</td><td><span class="k2">}</span> <span class="c">// end of mpeg2screen()</span></td></tr></tbody></table></div></div><p>


EDIT: Everything after the apeg_play_mpg is ignored, at least until a key is pressed, then it will display, but you still have to press a key... it basically is doing the effects of a readkey(), without the readkey()???!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matt Kindy)</author>
		<pubDate>Tue, 20 Jun 2006 02:02:31 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>That function looks a bit convoluted, and you&#39;re free&#39;ing streams after they&#39;re already closed, and closing the internal stream handle. <tt>apeg_close_stream</tt> invalidates the pointer (meaning it frees it for you, just like <tt>apeg_open_stream</tt> creates it for you. And you should never do anything to <tt>apeg_stream</tt> except use it for reference it in the callback to <tt>apeg_play_mpg</tt>.</p><p>That said, there does seem to be a bug in the apeg_play_mpg function that causes it to not quit when it hits the end of the stream (though it&#39;ll still run the callback, which if none is specified, causes it to quit when a key is pressed). Since you&#39;re Already using the stream functions, why bother with the blocking play function? Something like this would work:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">int</span> mpeg2screen<span class="k2">(</span><span class="k1">char</span> <span class="k3">*</span>filename, <span class="k1">int</span> screen_x_offset, <span class="k1">int</span> screen_y_offset<span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">2</td><td>    </td></tr><tr><td class="number">3</td><td>    <span class="k1">int</span> ret<span class="k2">;</span></td></tr><tr><td class="number">4</td><td>    <span class="k1">int</span> width, height<span class="k2">;</span></td></tr><tr><td class="number">5</td><td>    </td></tr><tr><td class="number">6</td><td>    APEG_STREAM <span class="k3">*</span>movie<span class="k2">;</span>     <span class="c">// For getting info about the movie</span></td></tr><tr><td class="number">7</td><td>    </td></tr><tr><td class="number">8</td><td>    <span class="c">// Find out the screen size of the movie</span></td></tr><tr><td class="number">9</td><td>    movie <span class="k3">=</span> apeg_open_stream<span class="k2">(</span>filename<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td>    <span class="c">// Video may need to be stretched to the proper aspect ratio</span></td></tr><tr><td class="number">11</td><td>    <span class="c">// This gives the full size to stretch to</span></td></tr><tr><td class="number">12</td><td>    apeg_get_video_area<span class="k2">(</span><span class="k3">&amp;</span>width, <span class="k3">&amp;</span>height<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>&#160;</td></tr><tr><td class="number">14</td><td>    <span class="k1">while</span><span class="k2">(</span><span class="k2">(</span>ret<span class="k3">=</span>apeg_advance_stream<span class="k2">(</span>movie, FALSE<span class="k2">)</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> APEG_OK <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k3">!</span><a href="http://www.allegro.cc/manual/keypressed" target="_blank"><span class="a">keypressed</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">15</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">16</td><td>        <span class="k1">if</span><span class="k2">(</span>movie-&gt;frame_updated <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">17</td><td>            <a href="http://www.allegro.cc/manual/stretch_blit" target="_blank"><span class="a">stretch_blit</span></a><span class="k2">(</span>movie-&gt;bitmap, <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <span class="n">0</span>, <span class="n">0</span>, movie-&gt;w, movie-&gt;h, screen_x_offset, screen_y_offset, width, height<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>        <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>movie-&gt;frame_updated <span class="k3">&lt;</span> <span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k3">!</span>movie-&gt;audio.flushed<span class="k2">)</span></td></tr><tr><td class="number">19</td><td>            <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">21</td><td>&#160;</td></tr><tr><td class="number">22</td><td>    apeg_close_stream<span class="k2">(</span>movie<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>&#160;</td></tr><tr><td class="number">24</td><td>    <span class="k1">if</span><span class="k2">(</span>ret <span class="k3">!</span><span class="k3">=</span> APEG_OK<span class="k2">)</span></td></tr><tr><td class="number">25</td><td>        <a href="http://www.allegro.cc/manual/alert" target="_blank"><span class="a">alert</span></a><span class="k2">(</span><span class="s">"Video Error"</span>, <span class="s">""</span>, apeg_error, <span class="s">"Ok"</span>, NULL, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td>&#160;</td></tr><tr><td class="number">27</td><td>    <span class="k1">return</span> ret<span class="k3">!</span><span class="k3">=</span>APEG_OK<span class="k2">;</span> <span class="c">/* return 0 = ok, non-0 = bad */</span></td></tr><tr><td class="number">28</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kitty Cat)</author>
		<pubDate>Tue, 20 Jun 2006 04:40:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><span class="source-code"><a href="http://www.allegro.cc/manual/simulate_keypress" target="_blank"><span class="a">simulate_keypress</span></a><span class="k2">(</span><span class="k2">)</span></span> perhaps?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Marco Radaelli)</author>
		<pubDate>Tue, 20 Jun 2006 04:41:20 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I get a linker error to apeg_get_video_area...</p><p>simulate_keypress() would probably work, except for the fact that it would not execute until a key is pressed(paradox)...the movie isn&#39;t closing, so no code is executed, and I wouldn&#39;t want the closing code to execute while this was running...the blocking way would work, but only if the movie closed(like it&#39;s supposed to).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matt Kindy)</author>
		<pubDate>Tue, 20 Jun 2006 19:13:55 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It&#39;s <tt>apeg_get_video_size</tt>, sorry.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kitty Cat)</author>
		<pubDate>Wed, 21 Jun 2006 12:04:23 +0000</pubDate>
	</item>
</rss>
