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: