Mercurial > mplayer.hg
comparison libmpdemux/demuxer.c @ 5084:2fd327bf64fc
added get_sh_video/audio and realmedia seeking
author | alex |
---|---|
date | Fri, 15 Mar 2002 15:53:11 +0000 |
parents | 64bf084309cf |
children | 441f62626ff4 |
comparison
equal
deleted
inserted
replaced
5083:ce6952225939 | 5084:2fd327bf64fc |
---|---|
15 | 15 |
16 #include "stream.h" | 16 #include "stream.h" |
17 #include "demuxer.h" | 17 #include "demuxer.h" |
18 #include "stheader.h" | 18 #include "stheader.h" |
19 #include "mf.h" | 19 #include "mf.h" |
20 | |
21 #include "../libvo/fastmemcpy.h" | |
20 | 22 |
21 void free_demuxer_stream(demux_stream_t *ds){ | 23 void free_demuxer_stream(demux_stream_t *ds){ |
22 ds_free_packs(ds); | 24 ds_free_packs(ds); |
23 free(ds); | 25 free(ds); |
24 } | 26 } |
65 stream_reset(stream); | 67 stream_reset(stream); |
66 stream_seek(stream,stream->start_pos); | 68 stream_seek(stream,stream->start_pos); |
67 return d; | 69 return d; |
68 } | 70 } |
69 | 71 |
72 sh_audio_t *get_sh_audio(demuxer_t *demuxer, int id) | |
73 { | |
74 if(id > MAX_A_STREAMS-1 || id < 0) | |
75 { | |
76 mp_msg(MSGT_DEMUXER,MSGL_WARN,"Requested audio stream id overflow (%d > %d)\n", | |
77 id, MAX_A_STREAMS); | |
78 return NULL; | |
79 } | |
80 return demuxer->a_streams[id]; | |
81 } | |
82 | |
70 sh_audio_t* new_sh_audio(demuxer_t *demuxer,int id){ | 83 sh_audio_t* new_sh_audio(demuxer_t *demuxer,int id){ |
71 if(id > MAX_A_STREAMS-1) | 84 if(id > MAX_A_STREAMS-1 || id < 0) |
72 { | 85 { |
73 mp_msg(MSGT_DEMUXER,MSGL_WARN,"Requested audio stream id overflow (%d > %d)\n", | 86 mp_msg(MSGT_DEMUXER,MSGL_WARN,"Requested audio stream id overflow (%d > %d)\n", |
74 id, MAX_A_STREAMS); | 87 id, MAX_A_STREAMS); |
75 return NULL; | 88 return NULL; |
76 } | 89 } |
89 if(sh->a_buffer) free(sh->a_buffer); | 102 if(sh->a_buffer) free(sh->a_buffer); |
90 if(sh->wf) free(sh->wf); | 103 if(sh->wf) free(sh->wf); |
91 free(sh); | 104 free(sh); |
92 } | 105 } |
93 | 106 |
107 sh_video_t *get_sh_video(demuxer_t *demuxer, int id) | |
108 { | |
109 if(id > MAX_V_STREAMS-1 || id < 0) | |
110 { | |
111 mp_msg(MSGT_DEMUXER,MSGL_WARN,"Requested video stream id overflow (%d > %d)\n", | |
112 id, MAX_V_STREAMS); | |
113 return NULL; | |
114 } | |
115 return demuxer->v_streams[id]; | |
116 } | |
117 | |
94 sh_video_t* new_sh_video(demuxer_t *demuxer,int id){ | 118 sh_video_t* new_sh_video(demuxer_t *demuxer,int id){ |
95 if(id > MAX_V_STREAMS-1) | 119 if(id > MAX_V_STREAMS-1 || id < 0) |
96 { | 120 { |
97 mp_msg(MSGT_DEMUXER,MSGL_WARN,"Requested video stream id overflow (%d > %d)\n", | 121 mp_msg(MSGT_DEMUXER,MSGL_WARN,"Requested video stream id overflow (%d > %d)\n", |
98 id, MAX_V_STREAMS); | 122 id, MAX_V_STREAMS); |
99 return NULL; | 123 return NULL; |
100 } | 124 } |
849 int demux_seek_y4m(demuxer_t *demuxer,float rel_seek_secs,int flags); | 873 int demux_seek_y4m(demuxer_t *demuxer,float rel_seek_secs,int flags); |
850 int demux_seek_fli(demuxer_t *demuxer,float rel_seek_secs,int flags); | 874 int demux_seek_fli(demuxer_t *demuxer,float rel_seek_secs,int flags); |
851 int demux_seek_mf(demuxer_t *demuxer,float rel_seek_secs,int flags); | 875 int demux_seek_mf(demuxer_t *demuxer,float rel_seek_secs,int flags); |
852 int demux_seek_nuv(demuxer_t *demuxer,float rel_seek_secs,int flags); | 876 int demux_seek_nuv(demuxer_t *demuxer,float rel_seek_secs,int flags); |
853 void demux_seek_mov(demuxer_t *demuxer,float pts,int flags); | 877 void demux_seek_mov(demuxer_t *demuxer,float pts,int flags); |
878 int demux_seek_real(demuxer_t *demuxer,float rel_seek_secs,int flags); | |
854 extern void demux_audio_seek(demuxer_t *demuxer,float rel_seek_secs,int flags); | 879 extern void demux_audio_seek(demuxer_t *demuxer,float rel_seek_secs,int flags); |
855 extern void demux_demuxers_seek(demuxer_t *demuxer,float rel_seek_secs,int flags); | 880 extern void demux_demuxers_seek(demuxer_t *demuxer,float rel_seek_secs,int flags); |
856 | 881 |
857 int demux_seek(demuxer_t *demuxer,float rel_seek_secs,int flags){ | 882 int demux_seek(demuxer_t *demuxer,float rel_seek_secs,int flags){ |
858 demux_stream_t *d_audio=demuxer->audio; | 883 demux_stream_t *d_audio=demuxer->audio; |
899 case DEMUXER_TYPE_MPEG_PS: | 924 case DEMUXER_TYPE_MPEG_PS: |
900 demux_seek_mpg(demuxer,rel_seek_secs,flags); break; | 925 demux_seek_mpg(demuxer,rel_seek_secs,flags); break; |
901 | 926 |
902 case DEMUXER_TYPE_MOV: | 927 case DEMUXER_TYPE_MOV: |
903 demux_seek_mov(demuxer,rel_seek_secs,flags); break; | 928 demux_seek_mov(demuxer,rel_seek_secs,flags); break; |
929 | |
930 case DEMUXER_TYPE_REAL: | |
931 demux_seek_real(demuxer,rel_seek_secs,flags); break; | |
904 | 932 |
905 case DEMUXER_TYPE_Y4M: | 933 case DEMUXER_TYPE_Y4M: |
906 demux_seek_y4m(demuxer,rel_seek_secs,flags); break; | 934 demux_seek_y4m(demuxer,rel_seek_secs,flags); break; |
907 | 935 |
908 case DEMUXER_TYPE_MF: | 936 case DEMUXER_TYPE_MF: |