annotate libmpdemux/stream.h @ 5929:9e7d54e7be58

- frame_time delayed one frame, as it's really duration of current frame, as suggested by Atmosfear some time ago, when talking about -mf... - limiting usleep time, to avoid sound skips and ensure responsiveness, inspired by asf patch from Albeu. it solves problem with very low fps .wmv files
author arpi
date Thu, 02 May 2002 02:03:59 +0000
parents 194bca17117b
children 79b2b4c3c435
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
998
8c83e3ff26cc Added ifndef to prevent multiple header file inclusion.
bertrand
parents: 692
diff changeset
1 #ifndef __STREAM_H
8c83e3ff26cc Added ifndef to prevent multiple header file inclusion.
bertrand
parents: 692
diff changeset
2 #define __STREAM_H
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
3
5086
69778ca88835 mp_msg'ized (for i18n ;)
alex
parents: 4825
diff changeset
4 #include "mp_msg.h"
4029
3c87dee7a324 patch for missing include by Steven M. Schultz <sms@2BSD.COM>
pl
parents: 3998
diff changeset
5 #include <inttypes.h>
5292
1863e0c6af59 sys/types.h required for off_t
arpi
parents: 5133
diff changeset
6 #include <sys/types.h>
4029
3c87dee7a324 patch for missing include by Steven M. Schultz <sms@2BSD.COM>
pl
parents: 3998
diff changeset
7
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
8 #define STREAM_BUFFER_SIZE 2048
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
9
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
10 #define STREAMTYPE_FILE 0
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
11 #define STREAMTYPE_VCD 1
692
14a2f35921a0 allow playing from stdin
arpi_esp
parents: 598
diff changeset
12 #define STREAMTYPE_STREAM 2 // same as FILE but no seeking (for stdin)
1594
dbb3496efe01 new type: DVD
arpi
parents: 1491
diff changeset
13 #define STREAMTYPE_DVD 3
2144
99f079ff9374 new_memory_stream() added
arpi
parents: 1594
diff changeset
14 #define STREAMTYPE_MEMORY 4
2790
98769cea155c added tv subsystem
alex
parents: 2555
diff changeset
15 #define STREAMTYPE_TV 5
4042
d651a7b5d213 STREAMTYPE_PLAYLIST introduced. similar to STREAMTYPE_STREAM but used for playlists. patch by Alban Bedel <albeu@free.fr>
arpi
parents: 4029
diff changeset
16 #define STREAMTYPE_PLAYLIST 6
4551
716b00618bfc add mfi support
pontscho
parents: 4407
diff changeset
17 #define STREAMTYPE_MF 7
5133
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5086
diff changeset
18 #define STREAMTYPE_DS 8
5471
348c7d83e710 dvdnav_stream functions - dvdnav patch by Kees Cook <mplayer@outflux.net>
arpi
parents: 5380
diff changeset
19 #define STREAMTYPE_DVDNAV 9 // we cannot safely "seek" in this...
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
20
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
21 #define VCD_SECTOR_SIZE 2352
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
22 #define VCD_SECTOR_OFFS 24
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
23 #define VCD_SECTOR_DATA 2324
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
24
3043
02a43ca97b52 Added a new struct to stream_t to handle, network streaming.
bertrand
parents: 2935
diff changeset
25 #ifdef STREAMING
02a43ca97b52 Added a new struct to stream_t to handle, network streaming.
bertrand
parents: 2935
diff changeset
26 #include "network.h"
02a43ca97b52 Added a new struct to stream_t to handle, network streaming.
bertrand
parents: 2935
diff changeset
27 #endif
02a43ca97b52 Added a new struct to stream_t to handle, network streaming.
bertrand
parents: 2935
diff changeset
28
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
29 int vcd_seek_to_track(int fd,int track);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
30 void vcd_read_toc(int fd);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
31
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
32 #ifdef VCD_CACHE
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
33 void vcd_cache_init(int s);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
34 #endif
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
35
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
36 typedef struct {
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
37 int fd;
1428
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 998
diff changeset
38 off_t pos;
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
39 int eof;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
40 int type; // 0=file 1=VCD
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
41 unsigned int buf_pos,buf_len;
1428
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 998
diff changeset
42 off_t start_pos,end_pos;
2322
e22ec6fce385 cache2 support
arpi
parents: 2310
diff changeset
43 unsigned int cache_pid;
e22ec6fce385 cache2 support
arpi
parents: 2310
diff changeset
44 void* cache_data;
2144
99f079ff9374 new_memory_stream() added
arpi
parents: 1594
diff changeset
45 void* priv; // used for DVD
583
da08ded03883 silly bug fixed - badly allocated stream buffer
arpi_esp
parents: 578
diff changeset
46 unsigned char buffer[STREAM_BUFFER_SIZE>VCD_SECTOR_SIZE?STREAM_BUFFER_SIZE:VCD_SECTOR_SIZE];
3043
02a43ca97b52 Added a new struct to stream_t to handle, network streaming.
bertrand
parents: 2935
diff changeset
47 #ifdef STREAMING
02a43ca97b52 Added a new struct to stream_t to handle, network streaming.
bertrand
parents: 2935
diff changeset
48 streaming_ctrl_t *streaming_ctrl;
02a43ca97b52 Added a new struct to stream_t to handle, network streaming.
bertrand
parents: 2935
diff changeset
49 #endif
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
50 } stream_t;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
51
2322
e22ec6fce385 cache2 support
arpi
parents: 2310
diff changeset
52 #ifdef USE_STREAM_CACHE
4825
41d2da3bd082 Make blocking call in libmpdemux interuptable (only with new input,
albeu
parents: 4551
diff changeset
53 int stream_enable_cache(stream_t *stream,int size,int min,int prefill);
2322
e22ec6fce385 cache2 support
arpi
parents: 2310
diff changeset
54 #else
e22ec6fce385 cache2 support
arpi
parents: 2310
diff changeset
55 // no cache
e22ec6fce385 cache2 support
arpi
parents: 2310
diff changeset
56 #define cache_stream_fill_buffer(x) stream_fill_buffer(x)
e22ec6fce385 cache2 support
arpi
parents: 2310
diff changeset
57 #define cache_stream_seek_long(x,y) stream_seek_long(x,y)
5292
1863e0c6af59 sys/types.h required for off_t
arpi
parents: 5133
diff changeset
58 #define stream_enable_cache(x,y,z,w) 1
2322
e22ec6fce385 cache2 support
arpi
parents: 2310
diff changeset
59 #endif
1428
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 998
diff changeset
60
2322
e22ec6fce385 cache2 support
arpi
parents: 2310
diff changeset
61 int cache_stream_fill_buffer(stream_t *s);
e22ec6fce385 cache2 support
arpi
parents: 2310
diff changeset
62 int cache_stream_seek_long(stream_t *s,off_t pos);
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
63
3726
1acf2f1f9dc8 missing #include's
pl
parents: 3600
diff changeset
64 #include <string.h>
1acf2f1f9dc8 missing #include's
pl
parents: 3600
diff changeset
65
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
66 inline static int stream_read_char(stream_t *s){
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
67 return (s->buf_pos<s->buf_len)?s->buffer[s->buf_pos++]:
2322
e22ec6fce385 cache2 support
arpi
parents: 2310
diff changeset
68 (cache_stream_fill_buffer(s)?s->buffer[s->buf_pos++]:-256);
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
69 // if(s->buf_pos<s->buf_len) return s->buffer[s->buf_pos++];
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
70 // stream_fill_buffer(s);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
71 // if(s->buf_pos<s->buf_len) return s->buffer[s->buf_pos++];
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
72 // return 0; // EOF
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
73 }
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
74
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
75 inline static unsigned int stream_read_word(stream_t *s){
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
76 int x,y;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
77 x=stream_read_char(s);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
78 y=stream_read_char(s);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
79 return (x<<8)|y;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
80 }
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
81
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
82 inline static unsigned int stream_read_dword(stream_t *s){
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
83 unsigned int y;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
84 y=stream_read_char(s);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
85 y=(y<<8)|stream_read_char(s);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
86 y=(y<<8)|stream_read_char(s);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
87 y=(y<<8)|stream_read_char(s);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
88 return y;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
89 }
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
90
4189
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4042
diff changeset
91 #define stream_read_fourcc stream_read_dword_le
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4042
diff changeset
92
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
93 inline static unsigned int stream_read_word_le(stream_t *s){
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
94 int x,y;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
95 x=stream_read_char(s);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
96 y=stream_read_char(s);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
97 return (y<<8)|x;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
98 }
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
99
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
100 inline static unsigned int stream_read_dword_le(stream_t *s){
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
101 unsigned int y;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
102 y=stream_read_char(s);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
103 y|=stream_read_char(s)<<8;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
104 y|=stream_read_char(s)<<16;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
105 y|=stream_read_char(s)<<24;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
106 return y;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
107 }
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
108
3998
0dbec5edd431 added stream_read_qword by Chris Bednar
alex
parents: 3962
diff changeset
109 inline static uint64_t stream_read_qword(stream_t *s){
0dbec5edd431 added stream_read_qword by Chris Bednar
alex
parents: 3962
diff changeset
110 uint64_t y;
0dbec5edd431 added stream_read_qword by Chris Bednar
alex
parents: 3962
diff changeset
111 y = stream_read_char(s);
0dbec5edd431 added stream_read_qword by Chris Bednar
alex
parents: 3962
diff changeset
112 y=(y<<8)|stream_read_char(s);
0dbec5edd431 added stream_read_qword by Chris Bednar
alex
parents: 3962
diff changeset
113 y=(y<<8)|stream_read_char(s);
0dbec5edd431 added stream_read_qword by Chris Bednar
alex
parents: 3962
diff changeset
114 y=(y<<8)|stream_read_char(s);
0dbec5edd431 added stream_read_qword by Chris Bednar
alex
parents: 3962
diff changeset
115 y=(y<<8)|stream_read_char(s);
0dbec5edd431 added stream_read_qword by Chris Bednar
alex
parents: 3962
diff changeset
116 y=(y<<8)|stream_read_char(s);
0dbec5edd431 added stream_read_qword by Chris Bednar
alex
parents: 3962
diff changeset
117 y=(y<<8)|stream_read_char(s);
0dbec5edd431 added stream_read_qword by Chris Bednar
alex
parents: 3962
diff changeset
118 y=(y<<8)|stream_read_char(s);
0dbec5edd431 added stream_read_qword by Chris Bednar
alex
parents: 3962
diff changeset
119 return y;
0dbec5edd431 added stream_read_qword by Chris Bednar
alex
parents: 3962
diff changeset
120 }
0dbec5edd431 added stream_read_qword by Chris Bednar
alex
parents: 3962
diff changeset
121
5301
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents: 5292
diff changeset
122 inline static unsigned int stream_read_int24(stream_t *s){
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents: 5292
diff changeset
123 unsigned int y;
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents: 5292
diff changeset
124 y = stream_read_char(s);
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents: 5292
diff changeset
125 y=(y<<8)|stream_read_char(s);
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents: 5292
diff changeset
126 y=(y<<8)|stream_read_char(s);
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents: 5292
diff changeset
127 return y;
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents: 5292
diff changeset
128 }
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents: 5292
diff changeset
129
2347
f6a10f4b6119 stream_read() now returns no. of bytes readed
arpi
parents: 2322
diff changeset
130 inline static int stream_read(stream_t *s,char* mem,int total){
f6a10f4b6119 stream_read() now returns no. of bytes readed
arpi
parents: 2322
diff changeset
131 int len=total;
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
132 while(len>0){
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
133 int x;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
134 x=s->buf_len-s->buf_pos;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
135 if(x==0){
2347
f6a10f4b6119 stream_read() now returns no. of bytes readed
arpi
parents: 2322
diff changeset
136 if(!cache_stream_fill_buffer(s)) return total-len; // EOF
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
137 x=s->buf_len-s->buf_pos;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
138 }
5086
69778ca88835 mp_msg'ized (for i18n ;)
alex
parents: 4825
diff changeset
139 if(s->buf_pos>s->buf_len) mp_msg(MSGT_DEMUX, MSGL_WARN, "stream_read: WARNING! s->buf_pos>s->buf_len\n");
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
140 if(x>len) x=len;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
141 memcpy(mem,&s->buffer[s->buf_pos],x);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
142 s->buf_pos+=x; mem+=x; len-=x;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
143 }
2347
f6a10f4b6119 stream_read() now returns no. of bytes readed
arpi
parents: 2322
diff changeset
144 return total;
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
145 }
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
146
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
147 inline static int stream_eof(stream_t *s){
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
148 return s->eof;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
149 }
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
150
1428
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 998
diff changeset
151 inline static off_t stream_tell(stream_t *s){
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
152 return s->pos+s->buf_pos-s->buf_len;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
153 }
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
154
1428
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 998
diff changeset
155 inline static int stream_seek(stream_t *s,off_t pos){
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
156
5086
69778ca88835 mp_msg'ized (for i18n ;)
alex
parents: 4825
diff changeset
157 mp_dbg(MSGT_DEMUX, MSGL_DBG3, "seek to 0x%qX\n",(long long)pos);
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
158
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
159 if(pos<s->pos){
1428
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 998
diff changeset
160 off_t x=pos-(s->pos-s->buf_len);
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
161 if(x>=0){
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
162 s->buf_pos=x;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
163 // putchar('*');fflush(stdout);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
164 return 1;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
165 }
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
166 }
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
167
2322
e22ec6fce385 cache2 support
arpi
parents: 2310
diff changeset
168 return cache_stream_seek_long(s,pos);
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
169 }
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
170
3962
449fc79d1ae3 stream_skip len s/be off_t
steve
parents: 3753
diff changeset
171 inline static int stream_skip(stream_t *s,off_t len){
692
14a2f35921a0 allow playing from stdin
arpi_esp
parents: 598
diff changeset
172 if(len<0 || (len>2*STREAM_BUFFER_SIZE && s->type!=STREAMTYPE_STREAM)){
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
173 // negative or big skip!
1491
41e82ba06d1b return type of stream_seek changed void->int
arpi
parents: 1428
diff changeset
174 return stream_seek(s,stream_tell(s)+len);
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
175 }
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
176 while(len>0){
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
177 int x=s->buf_len-s->buf_pos;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
178 if(x==0){
2322
e22ec6fce385 cache2 support
arpi
parents: 2310
diff changeset
179 if(!cache_stream_fill_buffer(s)) return 0; // EOF
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
180 x=s->buf_len-s->buf_pos;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
181 }
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
182 if(x>len) x=len;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
183 //memcpy(mem,&s->buf[s->buf_pos],x);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
184 s->buf_pos+=x; len-=x;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
185 }
1491
41e82ba06d1b return type of stream_seek changed void->int
arpi
parents: 1428
diff changeset
186 return 1;
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
187 }
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
188
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
189 void stream_reset(stream_t *s);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
190 stream_t* new_stream(int fd,int type);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
191 void free_stream(stream_t *s);
2144
99f079ff9374 new_memory_stream() added
arpi
parents: 1594
diff changeset
192 stream_t* new_memory_stream(unsigned char* data,int len);
2555
66837325b929 config.h cleanup, few things added to steram/demuxer headers
arpi
parents: 2347
diff changeset
193 stream_t* open_stream(char* filename,int vcd_track,int* file_format);
66837325b929 config.h cleanup, few things added to steram/demuxer headers
arpi
parents: 2347
diff changeset
194
66837325b929 config.h cleanup, few things added to steram/demuxer headers
arpi
parents: 2347
diff changeset
195 //#ifdef USE_DVDREAD
4407
760481d8421c warning (proper) fix
pl
parents: 4343
diff changeset
196 struct config;
2555
66837325b929 config.h cleanup, few things added to steram/demuxer headers
arpi
parents: 2347
diff changeset
197 extern int dvd_title;
66837325b929 config.h cleanup, few things added to steram/demuxer headers
arpi
parents: 2347
diff changeset
198 extern int dvd_chapter;
4291
e889d37f25b2 Add option -last-chapter for DVD playing/encoding
kmkaplan
parents: 4189
diff changeset
199 extern int dvd_last_chapter;
2555
66837325b929 config.h cleanup, few things added to steram/demuxer headers
arpi
parents: 2347
diff changeset
200 extern int dvd_angle;
5380
8a01cde9cf39 DVDnav support patch by David Holm and Kees Cook <mplayer@outflux.net>
arpi
parents: 5301
diff changeset
201 extern int dvd_nav;
4343
b0c8eed7473c Extended DVD chapter specification. Remove -last-chapter option.
kmkaplan
parents: 4315
diff changeset
202 int dvd_parse_chapter_range(struct config*, const char*);
2555
66837325b929 config.h cleanup, few things added to steram/demuxer headers
arpi
parents: 2347
diff changeset
203 //#endif
998
8c83e3ff26cc Added ifndef to prevent multiple header file inclusion.
bertrand
parents: 692
diff changeset
204
5471
348c7d83e710 dvdnav_stream functions - dvdnav patch by Kees Cook <mplayer@outflux.net>
arpi
parents: 5380
diff changeset
205 #ifdef USE_DVDNAV
348c7d83e710 dvdnav_stream functions - dvdnav patch by Kees Cook <mplayer@outflux.net>
arpi
parents: 5380
diff changeset
206 #include "dvdnav_stream.h"
348c7d83e710 dvdnav_stream functions - dvdnav patch by Kees Cook <mplayer@outflux.net>
arpi
parents: 5380
diff changeset
207 #endif
348c7d83e710 dvdnav_stream functions - dvdnav patch by Kees Cook <mplayer@outflux.net>
arpi
parents: 5380
diff changeset
208
2935
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
209 #ifdef USE_DVDREAD
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
210
5819
194bca17117b DVDKIT support
arpi
parents: 5471
diff changeset
211 #ifdef USE_MPDVDKIT
194bca17117b DVDKIT support
arpi
parents: 5471
diff changeset
212 #include "../libmpdvdkit/dvd_reader.h"
194bca17117b DVDKIT support
arpi
parents: 5471
diff changeset
213 #include "../libmpdvdkit/ifo_types.h"
194bca17117b DVDKIT support
arpi
parents: 5471
diff changeset
214 #include "../libmpdvdkit/ifo_read.h"
194bca17117b DVDKIT support
arpi
parents: 5471
diff changeset
215 #include "../libmpdvdkit/nav_read.h"
194bca17117b DVDKIT support
arpi
parents: 5471
diff changeset
216 #else
2935
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
217 #include <dvdread/dvd_reader.h>
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
218 #include <dvdread/ifo_types.h>
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
219 #include <dvdread/ifo_read.h>
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
220 #include <dvdread/nav_read.h>
5819
194bca17117b DVDKIT support
arpi
parents: 5471
diff changeset
221 #endif
2935
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
222
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
223 typedef struct {
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
224 int id; // 0 - 31 mpeg; 128 - 159 ac3; 160 - 191 pcm
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
225 int language;
3751
d9d2ee82a243 subtitle_t + audio_stream_t -> stream_language_t (cleanup)
arpi
parents: 3726
diff changeset
226 } stream_language_t;
3048
b01551d725d4 add subtitle language detect.
pontscho
parents: 3043
diff changeset
227
b01551d725d4 add subtitle language detect.
pontscho
parents: 3043
diff changeset
228 typedef struct {
2935
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
229 dvd_reader_t *dvd;
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
230 dvd_file_t *title;
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
231 ifo_handle_t *vmg_file;
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
232 tt_srpt_t *tt_srpt;
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
233 ifo_handle_t *vts_file;
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
234 vts_ptt_srpt_t *vts_ptt_srpt;
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
235 pgc_t *cur_pgc;
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
236 //
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
237 int cur_cell;
4291
e889d37f25b2 Add option -last-chapter for DVD playing/encoding
kmkaplan
parents: 4189
diff changeset
238 int last_cell;
2935
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
239 int cur_pack;
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
240 int cell_last_pack;
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
241 // Navi:
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
242 int packs_left;
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
243 dsi_t dsi_pack;
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
244 int angle_seek;
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
245 // audio datas
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
246 int nr_of_channels;
3751
d9d2ee82a243 subtitle_t + audio_stream_t -> stream_language_t (cleanup)
arpi
parents: 3726
diff changeset
247 stream_language_t audio_streams[32];
3048
b01551d725d4 add subtitle language detect.
pontscho
parents: 3043
diff changeset
248 // subtitles
b01551d725d4 add subtitle language detect.
pontscho
parents: 3043
diff changeset
249 int nr_of_subtitles;
3751
d9d2ee82a243 subtitle_t + audio_stream_t -> stream_language_t (cleanup)
arpi
parents: 3726
diff changeset
250 stream_language_t subtitles[32];
2935
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
251 } dvd_priv_t;
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
252
3753
d3fc41a04cb7 dvd language->aid/sid functions
arpi
parents: 3751
diff changeset
253 int dvd_aid_from_lang(stream_t *stream, unsigned char* lang);
d3fc41a04cb7 dvd language->aid/sid functions
arpi
parents: 3751
diff changeset
254 int dvd_sid_from_lang(stream_t *stream, unsigned char* lang);
d3fc41a04cb7 dvd language->aid/sid functions
arpi
parents: 3751
diff changeset
255
2935
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
256 #endif
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
257
998
8c83e3ff26cc Added ifndef to prevent multiple header file inclusion.
bertrand
parents: 692
diff changeset
258 #endif // __STREAM_H