annotate libmpdemux/stream.c @ 4559:5dc383bb1c82

added mga_top_reserved module parameter to skip a configurable amount of space at the top of video memory. this is needed to prevent corruption of the kernel's console font when using the "fastfont" option with matroxfb.
author rfelker
date Thu, 07 Feb 2002 02:07:29 +0000
parents 89369725b561
children 904cc3813582
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1428
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 1177
diff changeset
1
1430
1728d249c783 missing unistd.h (requires for off_t under freebsd)
arpi
parents: 1428
diff changeset
2 #include <stdio.h>
1728d249c783 missing unistd.h (requires for off_t under freebsd)
arpi
parents: 1428
diff changeset
3 #include <stdlib.h>
1728d249c783 missing unistd.h (requires for off_t under freebsd)
arpi
parents: 1428
diff changeset
4 #include <unistd.h>
1428
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 1177
diff changeset
5
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 1177
diff changeset
6 #include <sys/types.h>
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 1177
diff changeset
7 #include <sys/stat.h>
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 1177
diff changeset
8 #include <sys/ioctl.h>
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 1177
diff changeset
9 #include <fcntl.h>
2322
e22ec6fce385 cache2 support
arpi
parents: 2310
diff changeset
10 #include <signal.h>
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents: 537
diff changeset
11
1430
1728d249c783 missing unistd.h (requires for off_t under freebsd)
arpi
parents: 1428
diff changeset
12 #include "config.h"
1973
5216f108cb4f all error/warn/info messages moved to help_mp-en.h for translation
arpi
parents: 1642
diff changeset
13 #include "mp_msg.h"
5216f108cb4f all error/warn/info messages moved to help_mp-en.h for translation
arpi
parents: 1642
diff changeset
14 #include "help_mp.h"
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents: 537
diff changeset
15
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents: 537
diff changeset
16 #include "stream.h"
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents: 537
diff changeset
17
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents: 537
diff changeset
18 extern int verbose; // defined in mplayer.c
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
19
3261
caac174877b7 using #ifdef HAVE_VCD
arpi
parents: 3044
diff changeset
20 #ifdef HAVE_VCD
caac174877b7 using #ifdef HAVE_VCD
arpi
parents: 3044
diff changeset
21
958
162a78d3cc08 FreeBSD support by Vladimir Kushnir vkushnir@Alfacom.net
arpi_esp
parents: 692
diff changeset
22 #ifdef __FreeBSD__
2310
9e059416eea6 libdemuxer...
arpi
parents: 2144
diff changeset
23 #include "vcd_read_fbsd.h"
958
162a78d3cc08 FreeBSD support by Vladimir Kushnir vkushnir@Alfacom.net
arpi_esp
parents: 692
diff changeset
24 #else
2310
9e059416eea6 libdemuxer...
arpi
parents: 2144
diff changeset
25 #include "vcd_read.h"
958
162a78d3cc08 FreeBSD support by Vladimir Kushnir vkushnir@Alfacom.net
arpi_esp
parents: 692
diff changeset
26 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
27
3261
caac174877b7 using #ifdef HAVE_VCD
arpi
parents: 3044
diff changeset
28 #endif
caac174877b7 using #ifdef HAVE_VCD
arpi
parents: 3044
diff changeset
29
1595
1918610d2802 seeking in DVD
arpi
parents: 1430
diff changeset
30 #ifdef USE_DVDREAD
1918610d2802 seeking in DVD
arpi
parents: 1430
diff changeset
31 int dvd_read_sector(void* d,void* p2);
1918610d2802 seeking in DVD
arpi
parents: 1430
diff changeset
32 void dvd_seek(void* d,off_t pos);
1918610d2802 seeking in DVD
arpi
parents: 1430
diff changeset
33 #endif
1918610d2802 seeking in DVD
arpi
parents: 1430
diff changeset
34
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
35 //=================== STREAMER =========================
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
36
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
37 int stream_fill_buffer(stream_t *s){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
38 int len;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
39 if(s->eof){ s->buf_pos=s->buf_len=0; return 0; }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
40 switch(s->type){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
41 case STREAMTYPE_FILE:
692
14a2f35921a0 allow playing from stdin
arpi_esp
parents: 598
diff changeset
42 case STREAMTYPE_STREAM:
4042
d651a7b5d213 STREAMTYPE_PLAYLIST introduced. similar to STREAMTYPE_STREAM but used for playlists. patch by Alban Bedel <albeu@free.fr>
arpi
parents: 3291
diff changeset
43 case STREAMTYPE_PLAYLIST:
3044
606bb6943ae9 Added a network read function call and a seek network function call.
bertrand
parents: 2790
diff changeset
44 #ifdef STREAMING
606bb6943ae9 Added a network read function call and a seek network function call.
bertrand
parents: 2790
diff changeset
45 if( s->streaming_ctrl!=NULL ) {
606bb6943ae9 Added a network read function call and a seek network function call.
bertrand
parents: 2790
diff changeset
46 len=s->streaming_ctrl->streaming_read(s->fd,s->buffer,STREAM_BUFFER_SIZE, s->streaming_ctrl);break;
606bb6943ae9 Added a network read function call and a seek network function call.
bertrand
parents: 2790
diff changeset
47 } else {
606bb6943ae9 Added a network read function call and a seek network function call.
bertrand
parents: 2790
diff changeset
48 len=read(s->fd,s->buffer,STREAM_BUFFER_SIZE);break;
606bb6943ae9 Added a network read function call and a seek network function call.
bertrand
parents: 2790
diff changeset
49 }
606bb6943ae9 Added a network read function call and a seek network function call.
bertrand
parents: 2790
diff changeset
50 #else
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
51 len=read(s->fd,s->buffer,STREAM_BUFFER_SIZE);break;
3044
606bb6943ae9 Added a network read function call and a seek network function call.
bertrand
parents: 2790
diff changeset
52 #endif
3261
caac174877b7 using #ifdef HAVE_VCD
arpi
parents: 3044
diff changeset
53 #ifdef HAVE_VCD
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
54 case STREAMTYPE_VCD:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
55 #ifdef VCD_CACHE
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
56 len=vcd_cache_read(s->fd,s->buffer);break;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
57 #else
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
58 len=vcd_read(s->fd,s->buffer);break;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
59 #endif
3261
caac174877b7 using #ifdef HAVE_VCD
arpi
parents: 3044
diff changeset
60 #endif
1595
1918610d2802 seeking in DVD
arpi
parents: 1430
diff changeset
61 #ifdef USE_DVDREAD
1918610d2802 seeking in DVD
arpi
parents: 1430
diff changeset
62 case STREAMTYPE_DVD: {
1918610d2802 seeking in DVD
arpi
parents: 1430
diff changeset
63 off_t pos=dvd_read_sector(s->priv,s->buffer);
1918610d2802 seeking in DVD
arpi
parents: 1430
diff changeset
64 if(pos>=0){
1918610d2802 seeking in DVD
arpi
parents: 1430
diff changeset
65 len=2048; // full sector
1918610d2802 seeking in DVD
arpi
parents: 1430
diff changeset
66 s->pos=2048*pos-len;
1918610d2802 seeking in DVD
arpi
parents: 1430
diff changeset
67 } else len=-1; // error
1918610d2802 seeking in DVD
arpi
parents: 1430
diff changeset
68 break;
1918610d2802 seeking in DVD
arpi
parents: 1430
diff changeset
69 }
1918610d2802 seeking in DVD
arpi
parents: 1430
diff changeset
70 #endif
2790
98769cea155c added tv subsystem
alex
parents: 2322
diff changeset
71 #ifdef USE_TV
98769cea155c added tv subsystem
alex
parents: 2322
diff changeset
72 case STREAMTYPE_TV:
98769cea155c added tv subsystem
alex
parents: 2322
diff changeset
73 {
98769cea155c added tv subsystem
alex
parents: 2322
diff changeset
74 len = 0;
98769cea155c added tv subsystem
alex
parents: 2322
diff changeset
75 break;
98769cea155c added tv subsystem
alex
parents: 2322
diff changeset
76 }
98769cea155c added tv subsystem
alex
parents: 2322
diff changeset
77 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
78 default: len=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
79 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
80 if(len<=0){ s->eof=1; s->buf_pos=s->buf_len=0; return 0; }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
81 s->buf_pos=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
82 s->buf_len=len;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
83 s->pos+=len;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
84 // printf("[%d]",len);fflush(stdout);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
85 return len;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
86 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
87
1428
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 1177
diff changeset
88 int stream_seek_long(stream_t *s,off_t pos){
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 1177
diff changeset
89 off_t newpos;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
90
2144
99f079ff9374 new_memory_stream() added
arpi
parents: 2050
diff changeset
91 // if(verbose>=3) printf("seek_long to 0x%X\n",(unsigned int)pos);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
92
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
93 s->buf_pos=s->buf_len=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
94
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
95 switch(s->type){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
96 case STREAMTYPE_FILE:
692
14a2f35921a0 allow playing from stdin
arpi_esp
parents: 598
diff changeset
97 case STREAMTYPE_STREAM:
1428
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 1177
diff changeset
98 #ifdef _LARGEFILE_SOURCE
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 1177
diff changeset
99 newpos=pos&(~((long long)STREAM_BUFFER_SIZE-1));break;
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 1177
diff changeset
100 #else
492
888a85621f50 preliminary DVD support using libcss
lgb
parents: 180
diff changeset
101 newpos=pos&(~(STREAM_BUFFER_SIZE-1));break;
1428
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 1177
diff changeset
102 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
103 case STREAMTYPE_VCD:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
104 newpos=(pos/VCD_SECTOR_DATA)*VCD_SECTOR_DATA;break;
1595
1918610d2802 seeking in DVD
arpi
parents: 1430
diff changeset
105 case STREAMTYPE_DVD:
1918610d2802 seeking in DVD
arpi
parents: 1430
diff changeset
106 newpos=pos/2048; newpos*=2048; break;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
107 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
108
2050
18f4dd5d568f -Wall warnings fixed
arpi
parents: 1999
diff changeset
109 if(verbose>=3){
18f4dd5d568f -Wall warnings fixed
arpi
parents: 1999
diff changeset
110 #ifdef _LARGEFILE_SOURCE
18f4dd5d568f -Wall warnings fixed
arpi
parents: 1999
diff changeset
111 printf("s->pos=%llX newpos=%llX new_bufpos=%llX buflen=%X \n",
18f4dd5d568f -Wall warnings fixed
arpi
parents: 1999
diff changeset
112 (long long)s->pos,(long long)newpos,(long long)pos,s->buf_len);
18f4dd5d568f -Wall warnings fixed
arpi
parents: 1999
diff changeset
113 #else
18f4dd5d568f -Wall warnings fixed
arpi
parents: 1999
diff changeset
114 printf("s->pos=%X newpos=%X new_bufpos=%X buflen=%X \n",
18f4dd5d568f -Wall warnings fixed
arpi
parents: 1999
diff changeset
115 (unsigned int)s->pos,newpos,pos,s->buf_len);
18f4dd5d568f -Wall warnings fixed
arpi
parents: 1999
diff changeset
116 #endif
18f4dd5d568f -Wall warnings fixed
arpi
parents: 1999
diff changeset
117 }
18f4dd5d568f -Wall warnings fixed
arpi
parents: 1999
diff changeset
118
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
119 pos-=newpos;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
120
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
121 if(newpos==0 || newpos!=s->pos){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
122 switch(s->type){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
123 case STREAMTYPE_FILE:
692
14a2f35921a0 allow playing from stdin
arpi_esp
parents: 598
diff changeset
124 s->pos=newpos; // real seek
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
125 if(lseek(s->fd,s->pos,SEEK_SET)<0) s->eof=1;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
126 break;
3261
caac174877b7 using #ifdef HAVE_VCD
arpi
parents: 3044
diff changeset
127 #ifdef HAVE_VCD
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
128 case STREAMTYPE_VCD:
692
14a2f35921a0 allow playing from stdin
arpi_esp
parents: 598
diff changeset
129 s->pos=newpos; // real seek
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
130 #ifdef VCD_CACHE
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
131 vcd_cache_seek(s->pos/VCD_SECTOR_DATA);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
132 #else
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
133 vcd_set_msf(s->pos/VCD_SECTOR_DATA);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
134 #endif
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
135 break;
3261
caac174877b7 using #ifdef HAVE_VCD
arpi
parents: 3044
diff changeset
136 #endif
1595
1918610d2802 seeking in DVD
arpi
parents: 1430
diff changeset
137 #ifdef USE_DVDREAD
1918610d2802 seeking in DVD
arpi
parents: 1430
diff changeset
138 case STREAMTYPE_DVD:
1918610d2802 seeking in DVD
arpi
parents: 1430
diff changeset
139 s->pos=newpos; // real seek
1918610d2802 seeking in DVD
arpi
parents: 1430
diff changeset
140 dvd_seek(s->priv,s->pos/2048);
1918610d2802 seeking in DVD
arpi
parents: 1430
diff changeset
141 break;
1918610d2802 seeking in DVD
arpi
parents: 1430
diff changeset
142 #endif
692
14a2f35921a0 allow playing from stdin
arpi_esp
parents: 598
diff changeset
143 case STREAMTYPE_STREAM:
14a2f35921a0 allow playing from stdin
arpi_esp
parents: 598
diff changeset
144 //s->pos=newpos; // real seek
3044
606bb6943ae9 Added a network read function call and a seek network function call.
bertrand
parents: 2790
diff changeset
145 // Some streaming protocol allow to seek backward and forward
606bb6943ae9 Added a network read function call and a seek network function call.
bertrand
parents: 2790
diff changeset
146 // A function call that return -1 can tell that the protocol
606bb6943ae9 Added a network read function call and a seek network function call.
bertrand
parents: 2790
diff changeset
147 // doesn't support seeking.
606bb6943ae9 Added a network read function call and a seek network function call.
bertrand
parents: 2790
diff changeset
148 #ifdef STREAMING
606bb6943ae9 Added a network read function call and a seek network function call.
bertrand
parents: 2790
diff changeset
149 if( s->streaming_ctrl!=NULL ) {
606bb6943ae9 Added a network read function call and a seek network function call.
bertrand
parents: 2790
diff changeset
150 if( s->streaming_ctrl->streaming_seek( s->fd, pos, s->streaming_ctrl )<0 ) {
606bb6943ae9 Added a network read function call and a seek network function call.
bertrand
parents: 2790
diff changeset
151 mp_msg(MSGT_STREAM,MSGL_INFO,"Stream not seekable!\n");
606bb6943ae9 Added a network read function call and a seek network function call.
bertrand
parents: 2790
diff changeset
152 return 1;
606bb6943ae9 Added a network read function call and a seek network function call.
bertrand
parents: 2790
diff changeset
153 }
606bb6943ae9 Added a network read function call and a seek network function call.
bertrand
parents: 2790
diff changeset
154 }
606bb6943ae9 Added a network read function call and a seek network function call.
bertrand
parents: 2790
diff changeset
155 #else
692
14a2f35921a0 allow playing from stdin
arpi_esp
parents: 598
diff changeset
156 if(newpos<s->pos){
1973
5216f108cb4f all error/warn/info messages moved to help_mp-en.h for translation
arpi
parents: 1642
diff changeset
157 mp_msg(MSGT_STREAM,MSGL_INFO,"Cannot seek backward in linear streams!\n");
692
14a2f35921a0 allow playing from stdin
arpi_esp
parents: 598
diff changeset
158 return 1;
14a2f35921a0 allow playing from stdin
arpi_esp
parents: 598
diff changeset
159 }
14a2f35921a0 allow playing from stdin
arpi_esp
parents: 598
diff changeset
160 while(s->pos<newpos){
14a2f35921a0 allow playing from stdin
arpi_esp
parents: 598
diff changeset
161 if(stream_fill_buffer(s)<=0) break; // EOF
14a2f35921a0 allow playing from stdin
arpi_esp
parents: 598
diff changeset
162 }
3044
606bb6943ae9 Added a network read function call and a seek network function call.
bertrand
parents: 2790
diff changeset
163 #endif
692
14a2f35921a0 allow playing from stdin
arpi_esp
parents: 598
diff changeset
164 break;
2790
98769cea155c added tv subsystem
alex
parents: 2322
diff changeset
165 #ifdef USE_TV
98769cea155c added tv subsystem
alex
parents: 2322
diff changeset
166 case STREAMTYPE_TV:
98769cea155c added tv subsystem
alex
parents: 2322
diff changeset
167 s->pos=newpos; /* no sense */
98769cea155c added tv subsystem
alex
parents: 2322
diff changeset
168 break;
98769cea155c added tv subsystem
alex
parents: 2322
diff changeset
169 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
170 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
171 // putchar('.');fflush(stdout);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
172 //} else {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
173 // putchar('%');fflush(stdout);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
174 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
175
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
176 stream_fill_buffer(s);
1999
0c45328c9f8b fixed seek to EOF pos
arpi
parents: 1973
diff changeset
177 if(pos>=0 && pos<=s->buf_len){
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
178 s->buf_pos=pos; // byte position in sector
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
179 return 1;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
180 }
1973
5216f108cb4f all error/warn/info messages moved to help_mp-en.h for translation
arpi
parents: 1642
diff changeset
181
1999
0c45328c9f8b fixed seek to EOF pos
arpi
parents: 1973
diff changeset
182 // if(pos==s->buf_len) printf("XXX Seek to last byte of file -> EOF\n");
0c45328c9f8b fixed seek to EOF pos
arpi
parents: 1973
diff changeset
183
1428
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 1177
diff changeset
184 #ifdef _LARGEFILE_SOURCE
1973
5216f108cb4f all error/warn/info messages moved to help_mp-en.h for translation
arpi
parents: 1642
diff changeset
185 mp_msg(MSGT_STREAM,MSGL_V,"stream_seek: WARNING! Can't seek to 0x%llX !\n",(long long)(pos+newpos));
1428
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 1177
diff changeset
186 #else
1973
5216f108cb4f all error/warn/info messages moved to help_mp-en.h for translation
arpi
parents: 1642
diff changeset
187 mp_msg(MSGT_STREAM,MSGL_V,"stream_seek: WARNING! Can't seek to 0x%X !\n",(pos+newpos));
1428
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 1177
diff changeset
188 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
189 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
190 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
191
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
192
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
193 void stream_reset(stream_t *s){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
194 if(s->eof){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
195 s->pos=0; //ftell(f);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
196 // s->buf_pos=s->buf_len=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
197 s->eof=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
198 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
199 //stream_seek(s,0);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
200 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
201
2144
99f079ff9374 new_memory_stream() added
arpi
parents: 2050
diff changeset
202 stream_t* new_memory_stream(unsigned char* data,int len){
99f079ff9374 new_memory_stream() added
arpi
parents: 2050
diff changeset
203 stream_t *s=malloc(sizeof(stream_t)+len);
99f079ff9374 new_memory_stream() added
arpi
parents: 2050
diff changeset
204 s->fd=-1;
99f079ff9374 new_memory_stream() added
arpi
parents: 2050
diff changeset
205 s->type=STREAMTYPE_MEMORY;
99f079ff9374 new_memory_stream() added
arpi
parents: 2050
diff changeset
206 s->buf_pos=0; s->buf_len=len;
99f079ff9374 new_memory_stream() added
arpi
parents: 2050
diff changeset
207 s->start_pos=0; s->end_pos=len;
99f079ff9374 new_memory_stream() added
arpi
parents: 2050
diff changeset
208 stream_reset(s);
99f079ff9374 new_memory_stream() added
arpi
parents: 2050
diff changeset
209 s->pos=len;
99f079ff9374 new_memory_stream() added
arpi
parents: 2050
diff changeset
210 memcpy(s->buffer,data,len);
99f079ff9374 new_memory_stream() added
arpi
parents: 2050
diff changeset
211 return s;
99f079ff9374 new_memory_stream() added
arpi
parents: 2050
diff changeset
212 }
99f079ff9374 new_memory_stream() added
arpi
parents: 2050
diff changeset
213
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
214 stream_t* new_stream(int fd,int type){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
215 stream_t *s=malloc(sizeof(stream_t));
3291
2122a13b5a29 fixed startup crash
iive
parents: 3261
diff changeset
216 if(s==NULL) return NULL;
2122a13b5a29 fixed startup crash
iive
parents: 3261
diff changeset
217 memset(s,0,sizeof(stream_t));
2122a13b5a29 fixed startup crash
iive
parents: 3261
diff changeset
218
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
219 s->fd=fd;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
220 s->type=type;
180
afa2c05cfe43 terrible fatal bug fixed
arpi_esp
parents: 1
diff changeset
221 s->buf_pos=s->buf_len=0;
598
c7117e17e20b OSD seekbar fixed for mpeg/VCD
arpi_esp
parents: 578
diff changeset
222 s->start_pos=s->end_pos=0;
1642
78fa0713b823 free'ing priv struct
arpi
parents: 1595
diff changeset
223 s->priv=NULL;
2322
e22ec6fce385 cache2 support
arpi
parents: 2310
diff changeset
224 s->cache_pid=0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
225 stream_reset(s);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
226 return s;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
227 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
228
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
229 void free_stream(stream_t *s){
4464
89369725b561 overwrite old info
nexus
parents: 4042
diff changeset
230 printf("\n*** free_stream() called ***\n");
2322
e22ec6fce385 cache2 support
arpi
parents: 2310
diff changeset
231 if(s->cache_pid) kill(s->cache_pid,SIGTERM);
1642
78fa0713b823 free'ing priv struct
arpi
parents: 1595
diff changeset
232 if(s->priv) free(s->priv);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
233 free(s);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
234 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
235