[vlc-devel] [PATCH] demux: avformat: do not take account of invalid streams for PCR updating
Zhao Zhili
wantlamy at gmail.com
Thu Apr 6 11:40:26 CEST 2017
ping?
On Fri, Mar 24, 2017 at 4:18 PM, Zhao Zhili <wantlamy at gmail.com> wrote:
> I have a video with two data stream:
> Duration: 01:14:10.80, start: 0.000000, bitrate: 404 kb/s
> Stream #0:0: Audio: cook (cook / 0x6B6F6F63), 44100 Hz, stereo, fltp,
> 64 kb/s
> Stream #0:1: Video: rv40 (RV40 / 0x30345652), yuv420p, 608x256, 332
> kb/s, 30 fps, 30 tbr, 1k tbn, 1k tbc
> Stream #0:2: Data: none, 0 kb/s
> Stream #0:3: Data: none, 0 kb/s
> Unsupported codec with id 0 for input stream 2
> Unsupported codec with id 0 for input stream 3
>
> Without this patch, VLC doesn't refresh position (or time) information at
> the first few
> seconds. The MainLoop in input.c sleep too long before run
> MainLoopStatistics. I think
> PCR updating should not take account of those invalid streams, but I'm not
> sure.
>
> On Wed, Mar 22, 2017 at 4:13 PM, Jean-Baptiste Kempf <jb at videolan.org>
> wrote:
>
>> ping for review
>>
>> On Mon, 20 Mar 2017, at 16:56, Zhao Zhili wrote:
>> > ---
>> > modules/demux/avformat/demux.c | 11 ++++++++---
>> > 1 file changed, 8 insertions(+), 3 deletions(-)
>> >
>> > diff --git a/modules/demux/avformat/demux.c
>> > b/modules/demux/avformat/demux.c
>> > index 4824215..48ba7f8 100644
>> > --- a/modules/demux/avformat/demux.c
>> > +++ b/modules/demux/avformat/demux.c
>> > @@ -834,17 +834,22 @@ static int Demux( demux_t *p_demux )
>> > msg_Dbg( p_demux, "tk[%d] dts=%"PRId64" pts=%"PRId64,
>> > pkt.stream_index, p_frame->i_dts, p_frame->i_pts );
>> > #endif
>> > - if( p_frame->i_dts > VLC_TS_INVALID )
>> > + if( p_frame->i_dts > VLC_TS_INVALID && p_sys->tk[pkt.stream_index]
>> > != NULL )
>> > p_sys->tk_pcr[pkt.stream_index] = p_frame->i_dts;
>> >
>> > int64_t i_ts_max = INT64_MIN;
>> > for( int i = 0; i < p_sys->i_tk; i++ )
>> > - i_ts_max = __MAX( i_ts_max, p_sys->tk_pcr[i] );
>> > + {
>> > + if( p_sys->tk[i] != NULL )
>> > + i_ts_max = __MAX( i_ts_max, p_sys->tk_pcr[i] );
>> > + }
>> >
>> > int64_t i_ts_min = INT64_MAX;
>> > for( int i = 0; i < p_sys->i_tk; i++ )
>> > {
>> > - if( p_sys->tk_pcr[i] > VLC_TS_INVALID && p_sys->tk_pcr[i] + 10
>> *
>> > CLOCK_FREQ >= i_ts_max )
>> > + if( p_sys->tk[i] != NULL &&
>> > + p_sys->tk_pcr[i] > VLC_TS_INVALID &&
>> > + p_sys->tk_pcr[i] + 10 * CLOCK_FREQ >= i_ts_max )
>> > i_ts_min = __MIN( i_ts_min, p_sys->tk_pcr[i] );
>> > }
>> > if( i_ts_min >= p_sys->i_pcr )
>> > --
>> > 2.10.1 (Apple Git-78)
>> >
>> > _______________________________________________
>> > vlc-devel mailing list
>> > To unsubscribe or modify your subscription options:
>> > https://mailman.videolan.org/listinfo/vlc-devel
>> > Email had 1 attachment:
>> > + 0001-demux-avformat-do-not-take-account-of-invalid-stream.patch
>> > 2k (text/plain)
>>
>>
>> --
>> Jean-Baptiste Kempf - President
>> +33 672 704 734
>> _______________________________________________
>> vlc-devel mailing list
>> To unsubscribe or modify your subscription options:
>> https://mailman.videolan.org/listinfo/vlc-devel
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20170406/0fdf970e/attachment.html>
More information about the vlc-devel
mailing list