annotate libmpdemux/stream.h @ 4564:5e1221d4655e

completely reworked FILM demuxer to support both audio and video...neither of which work yet (CVID video and uncompressed audio)...but the demuxer is working well now
author melanson
date Thu, 07 Feb 2002 05:55:29 +0000
parents 716b00618bfc
children 41d2da3bd082
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
4029
3c87dee7a324 patch for missing include by Steven M. Schultz <sms@2BSD.COM>
pl
parents: 3998
diff changeset
4 #include <inttypes.h>
3c87dee7a324 patch for missing include by Steven M. Schultz <sms@2BSD.COM>
pl
parents: 3998
diff changeset
5
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
6 #define STREAM_BUFFER_SIZE 2048
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
7
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
8 #define STREAMTYPE_FILE 0
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
9 #define STREAMTYPE_VCD 1
692
14a2f35921a0 allow playing from stdin
arpi_esp
parents: 598
diff changeset
10 #define STREAMTYPE_STREAM 2 // same as FILE but no seeking (for stdin)
1594
dbb3496efe01 new type: DVD
arpi
parents: 1491
diff changeset
11 #define STREAMTYPE_DVD 3
2144
99f079ff9374 new_memory_stream() added
arpi
parents: 1594
diff changeset
12 #define STREAMTYPE_MEMORY 4
2790
98769cea155c added tv subsystem
alex
parents: 2555
diff changeset
13 #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
14 #define STREAMTYPE_PLAYLIST 6
4551
716b00618bfc add mfi support
pontscho
parents: 4407
diff changeset
15 #define STREAMTYPE_MF 7
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
16
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
17 #define VCD_SECTOR_SIZE 2352
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
18 #define VCD_SECTOR_OFFS 24
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
19 #define VCD_SECTOR_DATA 2324
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
20
3043
02a43ca97b52 Added a new struct to stream_t to handle, network streaming.
bertrand
parents: 2935
diff changeset
21 #ifdef STREAMING
02a43ca97b52 Added a new struct to stream_t to handle, network streaming.
bertrand
parents: 2935
diff changeset
22 #include "network.h"
02a43ca97b52 Added a new struct to stream_t to handle, network streaming.
bertrand
parents: 2935
diff changeset
23 #endif
02a43ca97b52 Added a new struct to stream_t to handle, network streaming.
bertrand
parents: 2935
diff changeset
24
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
25 int vcd_seek_to_track(int fd,int track);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
26 void vcd_read_toc(int fd);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
27
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
28 #ifdef VCD_CACHE
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
29 void vcd_cache_init(int s);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
30 #endif
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 typedef struct {
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
33 int fd;
1428
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 998
diff changeset
34 off_t pos;
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
35 int eof;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
36 int type; // 0=file 1=VCD
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
37 unsigned int buf_pos,buf_len;
1428
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 998
diff changeset
38 off_t start_pos,end_pos;
2322
e22ec6fce385 cache2 support
arpi
parents: 2310
diff changeset
39 unsigned int cache_pid;
e22ec6fce385 cache2 support
arpi
parents: 2310
diff changeset
40 void* cache_data;
2144
99f079ff9374 new_memory_stream() added
arpi
parents: 1594
diff changeset
41 void* priv; // used for DVD
583
da08ded03883 silly bug fixed - badly allocated stream buffer
arpi_esp
parents: 578
diff changeset
42 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
43 #ifdef STREAMING
02a43ca97b52 Added a new struct to stream_t to handle, network streaming.
bertrand
parents: 2935
diff changeset
44 streaming_ctrl_t *streaming_ctrl;
02a43ca97b52 Added a new struct to stream_t to handle, network streaming.
bertrand
parents: 2935
diff changeset
45 #endif
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
46 } stream_t;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
47
2322
e22ec6fce385 cache2 support
arpi
parents: 2310
diff changeset
48 #ifdef USE_STREAM_CACHE
3600
3094e7b6a15b pre-cache fixed
arpi
parents: 3562
diff changeset
49 void stream_enable_cache(stream_t *stream,int size,int min,int prefill);
2322
e22ec6fce385 cache2 support
arpi
parents: 2310
diff changeset
50 #else
e22ec6fce385 cache2 support
arpi
parents: 2310
diff changeset
51 // no cache
e22ec6fce385 cache2 support
arpi
parents: 2310
diff changeset
52 #define cache_stream_fill_buffer(x) stream_fill_buffer(x)
e22ec6fce385 cache2 support
arpi
parents: 2310
diff changeset
53 #define cache_stream_seek_long(x,y) stream_seek_long(x,y)
e22ec6fce385 cache2 support
arpi
parents: 2310
diff changeset
54 #define stream_enable_cache(x,y)
e22ec6fce385 cache2 support
arpi
parents: 2310
diff changeset
55 #endif
1428
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 998
diff changeset
56
2322
e22ec6fce385 cache2 support
arpi
parents: 2310
diff changeset
57 int cache_stream_fill_buffer(stream_t *s);
e22ec6fce385 cache2 support
arpi
parents: 2310
diff changeset
58 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
59
3726
1acf2f1f9dc8 missing #include's
pl
parents: 3600
diff changeset
60 #include <string.h>
1acf2f1f9dc8 missing #include's
pl
parents: 3600
diff changeset
61
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
62 inline static int stream_read_char(stream_t *s){
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
63 return (s->buf_pos<s->buf_len)?s->buffer[s->buf_pos++]:
2322
e22ec6fce385 cache2 support
arpi
parents: 2310
diff changeset
64 (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
65 // 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
66 // stream_fill_buffer(s);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
67 // 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
68 // return 0; // EOF
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
69 }
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
70
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
71 inline static unsigned int stream_read_word(stream_t *s){
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
72 int x,y;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
73 x=stream_read_char(s);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
74 y=stream_read_char(s);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
75 return (x<<8)|y;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
76 }
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
77
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
78 inline static unsigned int stream_read_dword(stream_t *s){
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
79 unsigned int y;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
80 y=stream_read_char(s);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
81 y=(y<<8)|stream_read_char(s);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
82 y=(y<<8)|stream_read_char(s);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
83 y=(y<<8)|stream_read_char(s);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
84 return y;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
85 }
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
86
4189
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4042
diff changeset
87 #define stream_read_fourcc stream_read_dword_le
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4042
diff changeset
88
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
89 inline static unsigned int stream_read_word_le(stream_t *s){
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
90 int x,y;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
91 x=stream_read_char(s);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
92 y=stream_read_char(s);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
93 return (y<<8)|x;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
94 }
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
95
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
96 inline static unsigned int stream_read_dword_le(stream_t *s){
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
97 unsigned int y;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
98 y=stream_read_char(s);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
99 y|=stream_read_char(s)<<8;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
100 y|=stream_read_char(s)<<16;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
101 y|=stream_read_char(s)<<24;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
102 return y;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
103 }
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
104
3998
0dbec5edd431 added stream_read_qword by Chris Bednar
alex
parents: 3962
diff changeset
105 inline static uint64_t stream_read_qword(stream_t *s){
0dbec5edd431 added stream_read_qword by Chris Bednar
alex
parents: 3962
diff changeset
106 uint64_t y;
0dbec5edd431 added stream_read_qword by Chris Bednar
alex
parents: 3962
diff changeset
107 y = stream_read_char(s);
0dbec5edd431 added stream_read_qword by Chris Bednar
alex
parents: 3962
diff changeset
108 y=(y<<8)|stream_read_char(s);
0dbec5edd431 added stream_read_qword by Chris Bednar
alex
parents: 3962
diff changeset
109 y=(y<<8)|stream_read_char(s);
0dbec5edd431 added stream_read_qword by Chris Bednar
alex
parents: 3962
diff changeset
110 y=(y<<8)|stream_read_char(s);
0dbec5edd431 added stream_read_qword by Chris Bednar
alex
parents: 3962
diff changeset
111 y=(y<<8)|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 return y;
0dbec5edd431 added stream_read_qword by Chris Bednar
alex
parents: 3962
diff changeset
116 }
0dbec5edd431 added stream_read_qword by Chris Bednar
alex
parents: 3962
diff changeset
117
2347
f6a10f4b6119 stream_read() now returns no. of bytes readed
arpi
parents: 2322
diff changeset
118 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
119 int len=total;
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
120 while(len>0){
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
121 int x;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
122 x=s->buf_len-s->buf_pos;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
123 if(x==0){
2347
f6a10f4b6119 stream_read() now returns no. of bytes readed
arpi
parents: 2322
diff changeset
124 if(!cache_stream_fill_buffer(s)) return total-len; // EOF
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
125 x=s->buf_len-s->buf_pos;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
126 }
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
127 if(s->buf_pos>s->buf_len) printf("stream_read: WARNING! s->buf_pos>s->buf_len\n");
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
128 if(x>len) x=len;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
129 memcpy(mem,&s->buffer[s->buf_pos],x);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
130 s->buf_pos+=x; mem+=x; len-=x;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
131 }
2347
f6a10f4b6119 stream_read() now returns no. of bytes readed
arpi
parents: 2322
diff changeset
132 return total;
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
133 }
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
134
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
135 inline static int stream_eof(stream_t *s){
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
136 return s->eof;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
137 }
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
138
1428
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 998
diff changeset
139 inline static off_t stream_tell(stream_t *s){
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
140 return s->pos+s->buf_pos-s->buf_len;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
141 }
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
142
1428
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 998
diff changeset
143 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
144
1428
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 998
diff changeset
145 // if(verbose>=3) printf("seek to 0x%qX\n",(long long)pos);
578
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 if(pos<s->pos){
1428
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 998
diff changeset
148 off_t x=pos-(s->pos-s->buf_len);
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
149 if(x>=0){
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
150 s->buf_pos=x;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
151 // putchar('*');fflush(stdout);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
152 return 1;
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 }
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
155
2322
e22ec6fce385 cache2 support
arpi
parents: 2310
diff changeset
156 return cache_stream_seek_long(s,pos);
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
157 }
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
158
3962
449fc79d1ae3 stream_skip len s/be off_t
steve
parents: 3753
diff changeset
159 inline static int stream_skip(stream_t *s,off_t len){
692
14a2f35921a0 allow playing from stdin
arpi_esp
parents: 598
diff changeset
160 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
161 // negative or big skip!
1491
41e82ba06d1b return type of stream_seek changed void->int
arpi
parents: 1428
diff changeset
162 return stream_seek(s,stream_tell(s)+len);
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
163 }
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
164 while(len>0){
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
165 int x=s->buf_len-s->buf_pos;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
166 if(x==0){
2322
e22ec6fce385 cache2 support
arpi
parents: 2310
diff changeset
167 if(!cache_stream_fill_buffer(s)) return 0; // EOF
578
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
168 x=s->buf_len-s->buf_pos;
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 if(x>len) x=len;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
171 //memcpy(mem,&s->buf[s->buf_pos],x);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
172 s->buf_pos+=x; len-=x;
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
173 }
1491
41e82ba06d1b return type of stream_seek changed void->int
arpi
parents: 1428
diff changeset
174 return 1;
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
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
177 void stream_reset(stream_t *s);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
178 stream_t* new_stream(int fd,int type);
c2377cd0069f something moved to brand new stream.h
arpi_esp
parents:
diff changeset
179 void free_stream(stream_t *s);
2144
99f079ff9374 new_memory_stream() added
arpi
parents: 1594
diff changeset
180 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
181 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
182
66837325b929 config.h cleanup, few things added to steram/demuxer headers
arpi
parents: 2347
diff changeset
183 //#ifdef USE_DVDREAD
4407
760481d8421c warning (proper) fix
pl
parents: 4343
diff changeset
184 struct config;
2555
66837325b929 config.h cleanup, few things added to steram/demuxer headers
arpi
parents: 2347
diff changeset
185 extern int dvd_title;
66837325b929 config.h cleanup, few things added to steram/demuxer headers
arpi
parents: 2347
diff changeset
186 extern int dvd_chapter;
4291
e889d37f25b2 Add option -last-chapter for DVD playing/encoding
kmkaplan
parents: 4189
diff changeset
187 extern int dvd_last_chapter;
2555
66837325b929 config.h cleanup, few things added to steram/demuxer headers
arpi
parents: 2347
diff changeset
188 extern int dvd_angle;
4343
b0c8eed7473c Extended DVD chapter specification. Remove -last-chapter option.
kmkaplan
parents: 4315
diff changeset
189 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
190 //#endif
998
8c83e3ff26cc Added ifndef to prevent multiple header file inclusion.
bertrand
parents: 692
diff changeset
191
2935
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
192 #ifdef USE_DVDREAD
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
193
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
194 #include <dvdread/dvd_reader.h>
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
195 #include <dvdread/ifo_types.h>
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
196 #include <dvdread/ifo_read.h>
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
197 #include <dvdread/nav_read.h>
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
198
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
199 typedef struct {
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
200 int id; // 0 - 31 mpeg; 128 - 159 ac3; 160 - 191 pcm
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
201 int language;
3751
d9d2ee82a243 subtitle_t + audio_stream_t -> stream_language_t (cleanup)
arpi
parents: 3726
diff changeset
202 } stream_language_t;
3048
b01551d725d4 add subtitle language detect.
pontscho
parents: 3043
diff changeset
203
b01551d725d4 add subtitle language detect.
pontscho
parents: 3043
diff changeset
204 typedef struct {
2935
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
205 dvd_reader_t *dvd;
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
206 dvd_file_t *title;
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
207 ifo_handle_t *vmg_file;
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
208 tt_srpt_t *tt_srpt;
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
209 ifo_handle_t *vts_file;
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
210 vts_ptt_srpt_t *vts_ptt_srpt;
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
211 pgc_t *cur_pgc;
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
212 //
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
213 int cur_cell;
4291
e889d37f25b2 Add option -last-chapter for DVD playing/encoding
kmkaplan
parents: 4189
diff changeset
214 int last_cell;
2935
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
215 int cur_pack;
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
216 int cell_last_pack;
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
217 // Navi:
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
218 int packs_left;
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
219 dsi_t dsi_pack;
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
220 int angle_seek;
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
221 // audio datas
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
222 int nr_of_channels;
3751
d9d2ee82a243 subtitle_t + audio_stream_t -> stream_language_t (cleanup)
arpi
parents: 3726
diff changeset
223 stream_language_t audio_streams[32];
3048
b01551d725d4 add subtitle language detect.
pontscho
parents: 3043
diff changeset
224 // subtitles
b01551d725d4 add subtitle language detect.
pontscho
parents: 3043
diff changeset
225 int nr_of_subtitles;
3751
d9d2ee82a243 subtitle_t + audio_stream_t -> stream_language_t (cleanup)
arpi
parents: 3726
diff changeset
226 stream_language_t subtitles[32];
2935
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
227 } dvd_priv_t;
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
228
3753
d3fc41a04cb7 dvd language->aid/sid functions
arpi
parents: 3751
diff changeset
229 int dvd_aid_from_lang(stream_t *stream, unsigned char* lang);
d3fc41a04cb7 dvd language->aid/sid functions
arpi
parents: 3751
diff changeset
230 int dvd_sid_from_lang(stream_t *stream, unsigned char* lang);
d3fc41a04cb7 dvd language->aid/sid functions
arpi
parents: 3751
diff changeset
231
2935
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
232 #endif
bc6cb25ad067 add dvd audio stream detect
pontscho
parents: 2790
diff changeset
233
998
8c83e3ff26cc Added ifndef to prevent multiple header file inclusion.
bertrand
parents: 692
diff changeset
234 #endif // __STREAM_H