[vlc-devel] Re: Doing an lseek() with VOB files ...

Jean-Paul Saman saman at natlab.research.philips.com
Thu Aug 14 17:12:46 CEST 2003


Here is an integrated patch. I am not sure if all the structs that needs 
the have the marker (b_discontinuity) are now in. Please test.

Jean-Paul Saman wrote:
> John Michael Zorko wrote:
> 
>> The fopen / fprintf / fclose I put in there wasn't trying to find 
>> where the bit it set, but rather to see if the bit was set by the 
>> server VLC whenever it did a seek (since the code that looks to see if 
>> it is is on the client VLC).  My tests indicate that it's not, so now 
>> i'm trying to find out where it would be / should be.  So far, my best 
>> guess is a function in vlc_root/modules/mux/mpeg/ts.c called PEStoTS() 
>> or something like that.  This function seems to fill out the TS header 
>> (found it by grepping for the sync byte code), so this is what i'm 
>> endeavoring to do right now:
>>
> Indeed it looks like it is doing just that.
> 
>> 1. figure out how to set the discontinuity bit here -- can you help 
>> with this?
> 
> 
> At line 1307 of modules/demux/system.c you find this code that detects a 
>  TS discontinuity, which is good.
> 
>      /* discontinuity_indicator */
>                     if( p[5] & 0x80 )
>                     {
> 
>> 2. set this bit whenever the server VLC does a seel
> 
> 
> Which functions do you use to perform a ff/rewind? And in which files do 
> you use them?
> 
> Somehow the muxer should get the indication that we are in ff/rewind 
> mode and that a timer discontinuity has happend so the bit can be set 
> there.
> 
> In the attached patches I coded the setting of the discontinuity bit in 
> the TS header when it reaches the muxer. Now you must follow the path 
> backwards of the PES data to the input and also pass over the 
> discontinuity flag where appropriate.
> 
> Also where a discontinuity is detected after a ff/rewind seek jump it 
> must be set in the structure (input, demux, etc.). Or right after the jump.
> 
>> 3. see if this bit gets over to the client in the TS header
> 
> 
> If it is set on the right PID's this will be done automatically ;-)
> 
>> 4. see if this fixes the jumbled video problem
> 
> 
> That depends on what frame type you begin with streaming a I-Frame iso 
> of a P-Frame or B-Frame. Why?
> 
> An P frame needs an I frame to be decoded
> An B frame needs an P frame or another B-frame to be decode
> Only the I-Frame is standalone and can be jumped to easily without 
> artefacts.
> 
> There is one caveat the stream should contain I-Frames at regular 
> intervals.
> 
>>
>>> Can you tell which scenario you were using when this fopen/fprint/fclose
>>> gets triggered?
>>
>>
>>
>> The test scenario is a VLC acting as a server, and another VLC acting 
>> as a client (same or different machine -- i'm currently using a Mac 
>> dual G4 running OSX 10.2.6 as the server, and a Mac iBook 900 as the 
>> client, but I also see the issue on RedHat Linux 9).  Using the rc 
>> interface or the GUI on the server VLC, I do the seek, and see what 
>> the client behavior is (if the video is jumbled for a bit after the 
>> seek).
> 
> 
> Ok
> 

-- 
Kind greetings,

Jean-Paul Saman

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: ts_discontinuity.diff
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20030814/634326ce/attachment.ksh>


More information about the vlc-devel mailing list