Mercurial > mplayer.hg
comparison mencoder.c @ 25955:eff9e1b25743
-chapter is now handled uniformly calling demuxer_seek_chapter() instead
of letting individual demuxers and stream readers do their nasty job
author | nicodvb |
---|---|
date | Mon, 11 Feb 2008 22:03:34 +0000 |
parents | afaf3ec733d3 |
children | afa125da85cf |
comparison
equal
deleted
inserted
replaced
25954:0b0d71ca6a92 | 25955:eff9e1b25743 |
---|---|
600 demuxer=demux_open(stream,file_format,audio_id,video_id,dvdsub_id,filename); | 600 demuxer=demux_open(stream,file_format,audio_id,video_id,dvdsub_id,filename); |
601 if(!demuxer){ | 601 if(!demuxer){ |
602 mp_msg(MSGT_DEMUXER, MSGL_FATAL, MSGTR_FormatNotRecognized); | 602 mp_msg(MSGT_DEMUXER, MSGL_FATAL, MSGTR_FormatNotRecognized); |
603 mp_msg(MSGT_DEMUXER, MSGL_FATAL, MSGTR_CannotOpenDemuxer); | 603 mp_msg(MSGT_DEMUXER, MSGL_FATAL, MSGTR_CannotOpenDemuxer); |
604 mencoder_exit(1,NULL); | 604 mencoder_exit(1,NULL); |
605 } | |
606 | |
607 if(dvd_chapter>1) { | |
608 float pts; | |
609 demuxer_seek_chapter(demuxer, dvd_chapter-1, 1, &pts, NULL, NULL); | |
605 } | 610 } |
606 | 611 |
607 d_audio=demuxer2 ? demuxer2->audio : demuxer->audio; | 612 d_audio=demuxer2 ? demuxer2->audio : demuxer->audio; |
608 d_video=demuxer->video; | 613 d_video=demuxer->video; |
609 d_dvdsub=demuxer->sub; | 614 d_dvdsub=demuxer->sub; |
1096 | 1101 |
1097 if(play_n_frames>=0){ | 1102 if(play_n_frames>=0){ |
1098 --play_n_frames; | 1103 --play_n_frames; |
1099 if(play_n_frames<0) break; | 1104 if(play_n_frames<0) break; |
1100 } | 1105 } |
1106 if(dvd_last_chapter>0) { | |
1107 int cur_chapter = demuxer_get_current_chapter(demuxer); | |
1108 if(cur_chapter!=-1 && cur_chapter+1>dvd_last_chapter) | |
1109 break; | |
1110 } | |
1101 | 1111 |
1102 goto_redo_edl: | 1112 goto_redo_edl: |
1103 if (next_edl_record && sh_video && sh_video->pts >= next_edl_record->start_sec) { | 1113 if (next_edl_record && sh_video && sh_video->pts >= next_edl_record->start_sec) { |
1104 if (next_edl_record->action == EDL_SKIP && edl_seeking) { | 1114 if (next_edl_record->action == EDL_SKIP && edl_seeking) { |
1105 float last_pos = d_video->pts; | 1115 float last_pos = d_video->pts; |