Hi Rémi,<div>Maybe I do not describe clearly previously, please refer my comment ( <font color="#ff0000">in red</font> ).</div><div><br></div><div>Regards,</div><div>Aaron<br><br><div class="gmail_quote">2012/8/1 Rémi Denis-Courmont <span dir="ltr"><<a href="mailto:remi@remlab.net" target="_blank">remi@remlab.net</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Le mercredi 1 août 2012 14:26:19 Hong Aaron, vous avez écrit :<br>
<div class="im">> 1. VLC picture pool size problem.<br>
>    VLC picture pool minimum size is 20 to keep DRI feature by default, if<br>
> pool size below the value, VLC using memory copy instead of DRI, but<br>
> hardware decoder can only provide 12 picture from system memory maximum for<br>
> 1080p video, and I using the buffer direct set to fb to improve<br>
> performance, How can I keep DRI feature and reduce the pool size less than<br>
> 20? and I found VLC does not release picture pool and drop some frame<br>
> before display sometime, so the buffer return to decoder is delayed, I<br>
> think the root cause maybe the pool size problem.<br>
<br>
</div>I think the requirement is actually 7 buffers plus a maximum number of<br>
bipredictive frames depending on the given codec. I am not familiar enough<br>
with that code to even guess how to reduce this requirement.<br>
<br>
In any case, I believe the restriction applies to the video output, not to the<br>
decoder. Indeed, the video output is responsible for providing the DR buffers.<br></blockquote><div><br></div><div style="font-family:arial,sans-serif;font-size:14px;background-color:rgb(255,255,255)"><font color="#ff0000">For some embedded SoC with HW decoder, the DR buffers are usually from the dedicated system memory of decoder,</font></div>
<div style="font-family:arial,sans-serif;font-size:14px;background-color:rgb(255,255,255)"><font color="#ff0000">these memory was reserved when power on, so the size is limited, such as allwinner A10's HW decoder.</font></div>
<div style="font-family:arial,sans-serif;font-size:14px;background-color:rgb(255,255,255)"><span style="color:rgb(255,0,0)">If VLC don't display and return the buffer(to decoder) in time, the decoder loop thread has no enough memory to continue decode next frame,</span></div>
<div style="font-family:arial,sans-serif;font-size:14px;background-color:rgb(255,255,255)"><span style="color:rgb(255,0,0)">as decode output and display buffer to the screen (linux fb) share the same buffer, </span><font color="#ff0000">So if the actual DR buffer number less than the required(20).</font></div>
<div style="font-family:arial,sans-serif;font-size:14px;background-color:rgb(255,255,255)"><font color="#ff0000">and VLC drop the DR buffer from decoder without calling the "Release" callback</font><span style="background-color:transparent"><font color="#ff0000"> sometimes, display output is viewed like drop frame, but I can not find where to config the DR buffer to specific value and keep DR method from VLC code.</font></span></div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im"><br>
> 2. VLC pts caculation<br>
>     If I do not use ffmpeg, VLC native demux PTS always be zero for many<br>
> video files, but ffmpeg demux PTS value output is right, even in seek. So<br>
> which module has responsibility to calculate PTS ? If the module is<br>
> decoder, such as A10 HW decoder plugin, it's need to know video container<br>
> type such as AVI / MOV / MKV etc, How can I get container info decode<br>
> module?<br>
<br>
</div>Starting at VLC_TS_0 is actually correct and expected of demuxers of most file<br>
formats. This is required to synchronize multiple files.<br></blockquote><div><br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px;background-color:rgb(255,255,255)"><font color="#ff0000">The first VLC_TS_0 is OK, but "p_block->i_pts" and "p_block->i_dts" is always 0 for some video files.</font></div>
<div><span style="color:rgb(255,0,0);background-color:rgb(255,255,255);font-family:arial,sans-serif;font-size:14px">If using "--demux=ffmpeg" option, PTS/DTS is correct. </span></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<br>
The demuxer is normally responsible for setting the PTS, but this may be<br>
codec-specific. I don't know the details for H.264 though.<br></blockquote><div><br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px;background-color:rgb(255,255,255)"><font color="#ff0000">Libve library supplied by allwinner can compute the PTS, but it need know the video container infomation,</font></div>
<div><span style="color:rgb(255,0,0);background-color:rgb(255,255,255);font-family:arial,sans-serif;font-size:14px">but i don't know how to get the info in VLC without breaking coding structure.</span> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<br>
IIRC, the input clock will translate PTS from demuxer range to system time<br>
before it gets to the decoders and outputs.<br>
<div class="HOEnZb"><div class="h5"><br>
--<br>
Rémi Denis-Courmont<br>
<a href="http://www.remlab.net/" target="_blank">http://www.remlab.net/</a><br>
<a href="http://fi.linkedin.com/in/remidenis" target="_blank">http://fi.linkedin.com/in/remidenis</a><br>
_______________________________________________<br>
vlc-devel mailing list<br>
To unsubscribe or modify your subscription options:<br>
<a href="http://mailman.videolan.org/listinfo/vlc-devel" target="_blank">http://mailman.videolan.org/listinfo/vlc-devel</a><br>
</div></div></blockquote></div><br></div>