From: Thibaut M. <tma...@no...> - 2002-09-19 21:49:53
|
Hi, Yes, I'm still alive, and I still try to improve the engine. I've made a patch that improve seeking on my slow laptop (celeron 400),=20 seeking was already fast, but sometimes it was not smooth when moving the= =20 slider. Seeking was slow with bringiton_002.mov using the alsa driver for= =20 example. With this patch the audio_out plugin should not influence the sp= eed=20 of seeking. It's a big patch (25 ko), and needs some explanations. Here is what it does : The flush of the audio driver is done in audio_out loop. -> don't block audio_decoder when the audio buffer is full xine_demux_flush_engine() flush also video_out and audio_out fifos -> decoders are not blocked if the fifos are full underground metronom (discontinuity handling) ... -> detect earlier the end of the discontinuity seeking slowdown if it's too fast (wait until a frame is produced befor= e=20 seeking again) -> display frames when moving the slider even if the stream is not in=20 memory, I ve tested on a celeron 400 and a celeron 200. little cleanup : move allow_full_ao_fill_gap to ao_instance_t Comments ? Is there a part that I can commit ? http://xine.sourceforge.net/tmattern/seeking/xine-lib.patch (patch against current cvs) Cheers, Thibaut |
From: Michael R. <mr...@us...> - 2002-09-27 13:43:38
Attachments:
engine.patch.gz
engine_inc.patch.gz
|
Hi Thibaut, > It's a big patch (25 ko), and needs some explanations. > > Here is what it does : > > The flush of the audio driver is done in audio_out loop. > -> don't block audio_decoder when the audio buffer is full > > xine_demux_flush_engine() flush also video_out and audio_out fifos > -> decoders are not blocked if the fifos are full > > underground metronom (discontinuity handling) ... > -> detect earlier the end of the discontinuity > > seeking slowdown if it's too fast (wait until a frame is produced > before seeking again) > -> display frames when moving the slider even if the stream is not > in memory, I ve tested on a celeron 400 and a celeron 200. > > little cleanup : move allow_full_ao_fill_gap to ao_instance_t > > Comments ? I have tested your patch a bit and it is great. It does not only improve seeking, also some difficult parts on DVDs (menu transitions) work a bit better now. But since we are discussing metronom changes, I would like to present some additional changes I made. I have attached a new (gzipped) patch against current cvs (engine.patch) and a version (engine_inc.patch) incremental to your patch. I made those additional changes: * allow jumps (force_audio_jump = force_video_jump = 1) on DISC_STREAMSTART * reset video_drift on DISC_STREAMSTART and DISC_STREAMSEEK * use drift to match audio_vpts and video_vpts on discontinuities (Until now, audio_vpts and video_vpts would be set to the higher one of both on every discontinuity. I changed that so that below a certain threshold, this would be done more smoothly with video_drift.) Especially the last point further improves DVD playback, especially streams with multiangled cells play seamlessly now. Maybe you and some other willing developers could check this patch on some corner case streams? Michael -- Who the fuck is "General Failure", and why is he reading my disk? |
From: Thibaut M. <tma...@no...> - 2002-09-28 09:45:10
|
Le Vendredi 27 Septembre 2002 15:43, Michael Roitzsch a =E9crit : > Hi Thibaut, > > > It's a big patch (25 ko), and needs some explanations. > > > > Here is what it does : > > > > The flush of the audio driver is done in audio_out loop. > > -> don't block audio_decoder when the audio buffer is full > > > > xine_demux_flush_engine() flush also video_out and audio_out fifos > > -> decoders are not blocked if the fifos are full > > > > underground metronom (discontinuity handling) ... > > -> detect earlier the end of the discontinuity > > > > seeking slowdown if it's too fast (wait until a frame is produced > > before seeking again) > > -> display frames when moving the slider even if the stream is not > > in memory, I ve tested on a celeron 400 and a celeron 200. > > > > little cleanup : move allow_full_ao_fill_gap to ao_instance_t > > > > Comments ? > > I have tested your patch a bit and it is great. It does not only improv= e > seeking, also some difficult parts on DVDs (menu transitions) work a > bit better now. But since we are discussing metronom changes, I would Strange, there is a bug in my patch, the video_out fifo should be flushed= only=20 when seeking (DISC_STREAMSEEK), and not during menu navigation. > like to present some additional changes I made. > > I have attached a new (gzipped) patch against current cvs (engine.patch= ) > and a version (engine_inc.patch) incremental to your patch. > > I made those additional changes: > * allow jumps (force_audio_jump =3D force_video_jump =3D 1) on > DISC_STREAMSTART Ok. > * reset video_drift on DISC_STREAMSTART and DISC_STREAMSEEK Ok. > * use drift to match audio_vpts and video_vpts on discontinuities > (Until now, audio_vpts and video_vpts would be set to the higher > one of both on every discontinuity. I changed that so that below > a certain threshold, this would be done more smoothly with > video_drift.) > Especially the last point further improves DVD playback, especially > streams with multiangled cells play seamlessly now. I don't have this kind of dvd. > Maybe you and some other willing developers could check this patch on > some corner case streams? I'm testing. > Michael Thibaut |
From: Thibaut M. <tma...@no...> - 2002-09-28 18:05:35
Attachments:
xine-lib.patch
|
Hi Michael, If you want a fast navigation, try the attached patch. It's against current cvs. What about the new read-ahead implementation ? Thibaut |