[vlc-devel] [PATCH] TS demux: get time and length

Naohiro KORIYAMA nkoriyama at gmail.com
Mon Sep 19 02:06:21 CEST 2011


Hi,

>From last change, I  reflected your check points and added a new function.
Seek(p_demux, f_percent) for seeking a time position not a byte position.

2011/9/18 Laurent Aimar <fenrir at elivagar.org>:
>> +    mtime_t     i_time;
>  I don't think you need i_time (it will simplify a bit without).
>> +    int         i_mux_rate;

I deleted both i_time and i_mux_rate.

>  After looking at the full patch, I don't think i_mux_rate is usefull:
> GET_TIME/POSITION/LENGTH can be computed from i_first_pcr/i_last_pcr and it
> will be more precise than using the byte position I think (it will prevents
> having weird results with VBR streams).

GET_TIME/POSITION/LENGTH now is computed from
i_first_pcr/i_last_pcr/i_current_pcr.
Also SET_POSITION use a new function Seek(p_demux, f_percent).
Using this function, we can seek precise time position.
Without this function, seeking a byte position, it is a mess :-)

> A PCR of 0 is perfectly valid.
> static mtime_t GetPCR(block_t *p_pkt) returning -1 on error would fix that
> and be easier to use IMHO.

OK. If it fails, returns -1.

>  I think that simply calling GetPCR() on every packet until you actually get
> a PCR would achieve the same thing and be simpler.

I think so,  and I changed.

>> +    int64_t i_pos = i_last_pos - p_sys->i_packet_size * 1000; /* FIXME how many packets to get last pcr? */
>  The specs says that a PCR should be found every 100ms at most (some streams
> goes a bit beyong that).
>  If you plan for 62 mbit/s (DVB-S I think), you need 4122 so ~4500 with a
> margin.
>  When STREAM_CAN_FASTSEEK is true, it might be better to look at the end with
> a slower value, and if nothing is found, going back a bit further. But I am
> not sure it's worthwhile, and it can always be added later.

I cannot exactly decide how many packets now, but change this value to 4500.

>  You can simply test PIDGet( p_pkt ) == p_sys->i_pid_first_pcr and if true,
> then call GetPCR();

OK.

Thank you for your review.

Regards,

-- 
KORIYAMA, Naohiro
nkoriyama at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-TS-demux-2985-Enhance-TS-demuxer-to-support-duration.patch
Type: application/octet-stream
Size: 18521 bytes
Desc: not available
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20110919/db77698b/attachment.obj>


More information about the vlc-devel mailing list