comparison libmpdemux/demux_avs.c @ 22449:08774fd8fd17

Implement percent-based seeking
author reimar
date Mon, 05 Mar 2007 13:27:42 +0000
parents 81d9984fa1eb
children e466ca5fb2c1
comparison
equal deleted inserted replaced
22448:81d9984fa1eb 22449:08774fd8fd17
415 sh_audio_t *sh_audio=demuxer->audio->sh; 415 sh_audio_t *sh_audio=demuxer->audio->sh;
416 AVS_T *AVS = demuxer->priv; 416 AVS_T *AVS = demuxer->priv;
417 double video_pos = sh_video ? 417 double video_pos = sh_video ?
418 (double)AVS->frameno / sh_video->fps : 418 (double)AVS->frameno / sh_video->fps :
419 (double)AVS->sampleno / sh_audio->samplerate; 419 (double)AVS->sampleno / sh_audio->samplerate;
420 double duration = sh_video ?
421 (double)AVS->video_info->num_frames / sh_video->fps :
422 (double)AVS->video_info->num_audio_samples / sh_audio->samplerate;
420 423
421 //mp_msg(MSGT_DEMUX, MSGL_V, "AVS: seek rel_seek_secs = %f - flags = %x\n", rel_seek_secs, flags); 424 //mp_msg(MSGT_DEMUX, MSGL_V, "AVS: seek rel_seek_secs = %f - flags = %x\n", rel_seek_secs, flags);
422 425
423 // seek absolute 426 // seek absolute
424 if (flags&1) video_pos=0; 427 if (flags&1) video_pos=0;
428 // seek precent
429 if (flags&2) rel_seek_secs *= duration;
425 430
426 video_pos += rel_seek_secs; 431 video_pos += rel_seek_secs;
427 if (video_pos < 0) video_pos = 0; 432 if (video_pos < 0) video_pos = 0;
428 433
429 if (sh_video) { 434 if (sh_video) {