<HTML><HEAD><TITLE>Samsung Enterprise Portal mySingle</TITLE>
<META content="text/html; charset=windows-1252" http-equiv=Content-Type>
<STYLE id=mysingle_style>P {
        MARGIN-TOP: 5px; FONT-FAMILY: Times New Roman, arial; MARGIN-BOTTOM: 5px; FONT-SIZE: 9pt
}
TD {
        MARGIN-TOP: 5px; FONT-FAMILY: Times New Roman, arial; MARGIN-BOTTOM: 5px; FONT-SIZE: 9pt
}
LI {
        MARGIN-TOP: 5px; FONT-FAMILY: Times New Roman, arial; MARGIN-BOTTOM: 5px; FONT-SIZE: 9pt
}
BODY {
        FONT-FAMILY: Times New Roman, arial; FONT-SIZE: 9pt
}
</STYLE>

<META name=GENERATOR content=ActiveSquare></HEAD>
<BODY>
<P>&nbsp;</P>
<P>Whether the buffer with the eos flag has the actual data is not important.</P>
<P>My component(h.264) have only two buffer in queue for output buffer.</P>
<P>At first, gst-openmax push this two buffers into queue.</P>
<P>And it execute the dedcoing with pop-push operation</P>
<P>When my component meet the buffer with eos flag, gst-openmax pop buffer queue. (only pop, not push)<BR>So&nbsp;only one buffer is remained in the queue.</P>
<P>&nbsp;</P>
<P>In next loop (second play time),</P>
<P>gst-openmax execute pop-push operation with only one buffer in queue.</P>
<P>When my component meet the buffer with eos flag, gst-openmax pop buffer queue. (only pop, not push)</P>
<P>&nbsp;</P>
<P>Finally,</P>
<P>there in no buffer in queue at third loop.</P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P>Regards,</P>
<P>Mickey</P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P>&nbsp;</P><BR><BR>------- <B>Original Message</B> -------<BR><B>Sender</B> : Clark, Rob&lt;rob@ti.com&gt;<BR><B>Date</B> : 2010-08-16 23:53 (GMT+09:00)<BR><B>Title</B> : Re: [Gstreamer-openmax] Repeat Mode of Totem Player<BR><BR>Just&nbsp;so&nbsp;I&nbsp;understand&nbsp;properly,&nbsp;is&nbsp;the&nbsp;issue&nbsp;that&nbsp;in&nbsp;the&nbsp;case&nbsp;of&nbsp;your&nbsp;OMX&nbsp;IL&nbsp;component,&nbsp;the&nbsp;buffer&nbsp;with&nbsp;the&nbsp;EOS&nbsp;flag&nbsp;set&nbsp;is&nbsp;containing&nbsp;actual&nbsp;data&nbsp;that&nbsp;should&nbsp;not&nbsp;be&nbsp;thrown&nbsp;out?&nbsp;&nbsp;If&nbsp;not,&nbsp;then&nbsp;I'm&nbsp;not&nbsp;entirely&nbsp;sure&nbsp;that&nbsp;I&nbsp;understand. <BR><BR>Is&nbsp;the&nbsp;buffer&nbsp;lost&nbsp;from&nbsp;the&nbsp;(n+1)'th&nbsp;playback? <BR><BR>Perhaps&nbsp;if&nbsp;possible,&nbsp;sharing&nbsp;a&nbsp;log&nbsp;w/&nbsp;GST_DEBUG="*omx*:5"&nbsp;would&nbsp;be&nbsp;helpful <BR><BR><BR>BR, <BR>-R <BR><BR><BR><BR>On&nbsp;Aug&nbsp;15,&nbsp;2010,&nbsp;at&nbsp;11:02&nbsp;PM,&nbsp;Mickey&nbsp;Kim&nbsp;wrote: <BR><BR>&gt;&nbsp; <BR>&gt;&nbsp;I'm&nbsp;using&nbsp;Totem&nbsp;Player&nbsp;on&nbsp;Ubuntu. <BR>&gt;&nbsp;When&nbsp;I&nbsp;check&nbsp;repeat&nbsp;mode&nbsp;option&nbsp;in&nbsp;totem,&nbsp;player&nbsp;stops&nbsp;after&nbsp;only&nbsp;two&nbsp;time&nbsp;repeatation. <BR>&gt;&nbsp; <BR>&gt;&nbsp;I&nbsp;could&nbsp;find&nbsp;that&nbsp;totem&nbsp;doesn't&nbsp;change&nbsp;the&nbsp;state,&nbsp;when&nbsp;it&nbsp;meet&nbsp;the&nbsp;end&nbsp;of&nbsp;stream. <BR>&gt;&nbsp;But&nbsp;I&nbsp;also&nbsp;could&nbsp;find&nbsp;gst-openmax&nbsp;code&nbsp;doesn't&nbsp;consider&nbsp;this&nbsp;case. <BR>&gt;&nbsp;When&nbsp;gst-openmax&nbsp;meet&nbsp;EOS,&nbsp;it&nbsp;throw&nbsp;output&nbsp;buffer&nbsp;of&nbsp;queue&nbsp;(in&nbsp;output_loop()). <BR>&gt;&nbsp;So&nbsp;there&nbsp;is&nbsp;one&nbsp;buffer&nbsp;loss&nbsp;during&nbsp;one&nbsp;time&nbsp;repeatation. <BR>&gt;&nbsp; <BR>&gt;&nbsp; <BR>&gt;&nbsp;To&nbsp;resolve&nbsp;this&nbsp;issue,&nbsp;I&nbsp;have&nbsp;modified&nbsp;two&nbsp;function&nbsp;as&nbsp;below. <BR>&gt;&nbsp; <BR>&gt;&nbsp;output_loop&nbsp;() <BR>&gt;&nbsp;{ <BR>&gt;&nbsp;... <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(G_UNLIKELY&nbsp;(omx_buffer-&gt;nFlags&nbsp;&amp;&nbsp;OMX_BUFFERFLAG_EOS)) <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GST_DEBUG_OBJECT&nbsp;(self,&nbsp;"got&nbsp;eos"); <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gst_pad_push_event&nbsp;(self-&gt;srcpad,&nbsp;gst_event_new_eos&nbsp;()); <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;GST_FLOW_UNEXPECTED; <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;by&nbsp;Mickey <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;for&nbsp;repeat&nbsp;mode&nbsp;of&nbsp;totem&nbsp;player <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;In&nbsp;original&nbsp;code, <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;When&nbsp;gst-omx&nbsp;detect&nbsp;EOS&nbsp;buffer,&nbsp;this&nbsp;buffer&nbsp;are&nbsp;popped&nbsp;from&nbsp;queue&nbsp;and&nbsp;not&nbsp;pushed&nbsp;to&nbsp;queue. <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;This&nbsp;lead&nbsp;to&nbsp;empty&nbsp;queue&nbsp;in&nbsp;repeat&nbsp;mode. <BR>&gt;&nbsp;#if&nbsp;1 <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_omx_port_push_buffer&nbsp;(out_port,&nbsp;omx_buffer); <BR>&gt;&nbsp;#endif <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto&nbsp;leave; <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <BR>&gt;&nbsp;... <BR>&gt;&nbsp;} <BR>&gt;&nbsp; <BR>&gt;&nbsp;g_omx_port_flush() <BR>&gt;&nbsp;{ <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(port-&gt;type&nbsp;==&nbsp;GOMX_PORT_OUTPUT) <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;{ <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OMX_BUFFERHEADERTYPE&nbsp;*omx_buffer; <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;((omx_buffer&nbsp;=&nbsp;async_queue_pop_forced&nbsp;(port-&gt;queue))) <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;by&nbsp;Mickey <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;for&nbsp;repeat&nbsp;mode&nbsp;of&nbsp;totem&nbsp;player <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;When&nbsp;gst-omx&nbsp;detect&nbsp;EOS,&nbsp;output_loop&nbsp;push&nbsp;buffer&nbsp;with&nbsp;EOS&nbsp;(to&nbsp;queue). <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Then,&nbsp;g_omx_port_flush()&nbsp;push&nbsp;this&nbsp;buffer&nbsp;with&nbsp;no&nbsp;EOS&nbsp;flag&nbsp;(to&nbsp;queue). <BR>&gt;&nbsp;#if&nbsp;1 <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(omx_buffer-&gt;nFlags&nbsp;&amp;&nbsp;OMX_BUFFERFLAG_EOS) <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;omx_buffer-&gt;nFlags&nbsp;=&nbsp;0; <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_omx_port_push_buffer&nbsp;(port,&nbsp;omx_buffer); <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;omx_buffer-&gt;nFilledLen&nbsp;=&nbsp;0; <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_omx_port_release_buffer&nbsp;(port,&nbsp;omx_buffer); <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <BR>&gt;&nbsp;#else <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;omx_buffer-&gt;nFilledLen&nbsp;=&nbsp;0; <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_omx_port_release_buffer&nbsp;(port,&nbsp;omx_buffer); <BR>&gt;&nbsp;#endif <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;} <BR>&gt;&nbsp;.... <BR>&gt;&nbsp;} <BR>&gt;&nbsp; <BR>&gt;&nbsp; <BR>&gt;&nbsp;Please&nbsp;give&nbsp;your&nbsp;opinion. <BR>&gt;&nbsp; <BR>&gt;&nbsp;Regards, <BR>&gt;&nbsp;Mickey <BR>&gt;&nbsp; <BR>&gt;&nbsp; <BR>&gt;&nbsp; <BR>&gt;&nbsp; <BR>&gt;&nbsp; <BR>&gt;&nbsp; <BR>&gt;&nbsp; <BR>&gt;&nbsp;------------------------------------------------------------------------------ <BR>&gt;&nbsp;This&nbsp;SF.net&nbsp;email&nbsp;is&nbsp;sponsored&nbsp;by&nbsp; <BR>&gt;&nbsp; <BR>&gt;&nbsp;Make&nbsp;an&nbsp;app&nbsp;they&nbsp;can't&nbsp;live&nbsp;without <BR>&gt;&nbsp;Enter&nbsp;the&nbsp;BlackBerry&nbsp;Developer&nbsp;Challenge <BR>&gt;&nbsp;http://p.sf.net/sfu/RIM-dev2dev&nbsp; <BR>&gt;&nbsp;_______________________________________________ <BR>&gt;&nbsp;Gstreamer-openmax&nbsp;mailing&nbsp;list <BR>&gt;&nbsp;Gstreamer-openmax@lists.sourceforge.net <BR>&gt;&nbsp;https://lists.sourceforge.net/lists/listinfo/gstreamer-openmax <BR><BR><BR>
<TABLE id=confidentialsignimg>
<TBODY>
<TR>
<TD NAMO_LOCK>
<P><IMG border=0 src="cid:QKNMBDIFBEI0@namo.co.kr" width=520></P></TD></TR></TBODY></TABLE>
<P></P></BODY></HTML>