author | llornkcor <llornkcor> | 2002-04-20 20:11:06 (UTC) |
---|---|---|
committer | llornkcor <llornkcor> | 2002-04-20 20:11:06 (UTC) |
commit | 99904a1df601bb5d1c0e6d43a3e04a63fe13cf51 (patch) (unidiff) | |
tree | 51ea12679f08c7007bf5367fa4b6cede2d4fc187 | |
parent | 5d70d17bf478808387cf6e555cc1a65777e6399a (diff) | |
download | opie-99904a1df601bb5d1c0e6d43a3e04a63fe13cf51.zip opie-99904a1df601bb5d1c0e6d43a3e04a63fe13cf51.tar.gz opie-99904a1df601bb5d1c0e6d43a3e04a63fe13cf51.tar.bz2 |
removed .mp3 files from using libmpeg
-rw-r--r-- | core/multimedia/opieplayer/libmpeg3/libmpeg3.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/core/multimedia/opieplayer/libmpeg3/libmpeg3.c b/core/multimedia/opieplayer/libmpeg3/libmpeg3.c index c0fc570..acaecf7 100644 --- a/core/multimedia/opieplayer/libmpeg3/libmpeg3.c +++ b/core/multimedia/opieplayer/libmpeg3/libmpeg3.c | |||
@@ -1,264 +1,264 @@ | |||
1 | #include "libmpeg3.h" | 1 | #include "libmpeg3.h" |
2 | #include "mpeg3protos.h" | 2 | #include "mpeg3protos.h" |
3 | 3 | ||
4 | #include <stdlib.h> | 4 | #include <stdlib.h> |
5 | #include <string.h> | 5 | #include <string.h> |
6 | 6 | ||
7 | #define MAX(a, b) ((a) > (b) ? (a) : (b)) | 7 | #define MAX(a, b) ((a) > (b) ? (a) : (b)) |
8 | 8 | ||
9 | mpeg3_t* mpeg3_new(char *path) | 9 | mpeg3_t* mpeg3_new(char *path) |
10 | { | 10 | { |
11 | int i; | 11 | int i; |
12 | mpeg3_t *file = (mpeg3_t*)calloc(1, sizeof(mpeg3_t)); | 12 | mpeg3_t *file = (mpeg3_t*)calloc(1, sizeof(mpeg3_t)); |
13 | file->cpus = 1; | 13 | file->cpus = 1; |
14 | file->fs = mpeg3_new_fs(path); | 14 | file->fs = mpeg3_new_fs(path); |
15 | file->have_mmx = mpeg3_mmx_test(); | 15 | file->have_mmx = mpeg3_mmx_test(); |
16 | file->demuxer = mpeg3_new_demuxer(file, 0, 0, -1); | 16 | file->demuxer = mpeg3_new_demuxer(file, 0, 0, -1); |
17 | return file; | 17 | return file; |
18 | } | 18 | } |
19 | 19 | ||
20 | int mpeg3_delete(mpeg3_t *file) | 20 | int mpeg3_delete(mpeg3_t *file) |
21 | { | 21 | { |
22 | int i; | 22 | int i; |
23 | 23 | ||
24 | for(i = 0; i < file->total_vstreams; i++) | 24 | for(i = 0; i < file->total_vstreams; i++) |
25 | mpeg3_delete_vtrack(file, file->vtrack[i]); | 25 | mpeg3_delete_vtrack(file, file->vtrack[i]); |
26 | 26 | ||
27 | for(i = 0; i < file->total_astreams; i++) | 27 | for(i = 0; i < file->total_astreams; i++) |
28 | mpeg3_delete_atrack(file, file->atrack[i]); | 28 | mpeg3_delete_atrack(file, file->atrack[i]); |
29 | 29 | ||
30 | mpeg3_delete_fs(file->fs); | 30 | mpeg3_delete_fs(file->fs); |
31 | mpeg3_delete_demuxer(file->demuxer); | 31 | mpeg3_delete_demuxer(file->demuxer); |
32 | free(file); | 32 | free(file); |
33 | } | 33 | } |
34 | 34 | ||
35 | int mpeg3_check_sig(char *path) | 35 | int mpeg3_check_sig(char *path) |
36 | { | 36 | { |
37 | mpeg3_fs_t *fs; | 37 | mpeg3_fs_t *fs; |
38 | unsigned int bits; | 38 | unsigned int bits; |
39 | char *ext; | 39 | char *ext; |
40 | int result = 0; | 40 | int result = 0; |
41 | 41 | ||
42 | fs = mpeg3_new_fs(path); | 42 | fs = mpeg3_new_fs(path); |
43 | if(mpeg3io_open_file(fs)) | 43 | if(mpeg3io_open_file(fs)) |
44 | { | 44 | { |
45 | /* File not found */ | 45 | /* File not found */ |
46 | return 0; | 46 | return 0; |
47 | } | 47 | } |
48 | 48 | ||
49 | bits = mpeg3io_read_int32(fs); | 49 | bits = mpeg3io_read_int32(fs); |
50 | /* Test header */ | 50 | /* Test header */ |
51 | if(bits == MPEG3_TOC_PREFIX || bits == MPEG3_TOC_PREFIXLOWER) | 51 | if(bits == MPEG3_TOC_PREFIX || bits == MPEG3_TOC_PREFIXLOWER) |
52 | { | 52 | { |
53 | result = 1; | 53 | result = 1; |
54 | } | 54 | } |
55 | else | 55 | else |
56 | if((((bits >> 24) & 0xff) == MPEG3_SYNC_BYTE) || | 56 | if((((bits >> 24) & 0xff) == MPEG3_SYNC_BYTE) || |
57 | (bits == MPEG3_PACK_START_CODE) || | 57 | (bits == MPEG3_PACK_START_CODE) || |
58 | ((bits & 0xfff00000) == 0xfff00000) || | 58 | ((bits & 0xfff00000) == 0xfff00000) || |
59 | (bits == MPEG3_SEQUENCE_START_CODE) || | 59 | (bits == MPEG3_SEQUENCE_START_CODE) || |
60 | (bits == MPEG3_PICTURE_START_CODE) || | 60 | (bits == MPEG3_PICTURE_START_CODE) || |
61 | (((bits & 0xffff0000) >> 16) == MPEG3_AC3_START_CODE) || | 61 | (((bits & 0xffff0000) >> 16) == MPEG3_AC3_START_CODE) || |
62 | ((bits >> 8) == MPEG3_ID3_PREFIX) || | 62 | ((bits >> 8) == MPEG3_ID3_PREFIX) || |
63 | (bits == MPEG3_RIFF_CODE)) | 63 | (bits == MPEG3_RIFF_CODE)) |
64 | { | 64 | { |
65 | result = 1; | 65 | result = 1; |
66 | 66 | ||
67 | ext = strrchr(path, '.'); | 67 | ext = strrchr(path, '.'); |
68 | if(ext) | 68 | if(ext) |
69 | { | 69 | { |
70 | /* Test file extension. */ | 70 | /* Test file extension. */ |
71 | if(strncasecmp(ext, ".mp2", 4) && | 71 | if(strncasecmp(ext, ".mp2", 4) && |
72 | strncasecmp(ext, ".mp3", 4) && | 72 | // strncasecmp(ext, ".mp3", 4) && |
73 | strncasecmp(ext, ".m1v", 4) && | 73 | strncasecmp(ext, ".m1v", 4) && |
74 | strncasecmp(ext, ".m2v", 4) && | 74 | strncasecmp(ext, ".m2v", 4) && |
75 | strncasecmp(ext, ".m2s", 4) && | 75 | strncasecmp(ext, ".m2s", 4) && |
76 | strncasecmp(ext, ".mpg", 4) && | 76 | strncasecmp(ext, ".mpg", 4) && |
77 | strncasecmp(ext, ".vob", 4) && | 77 | strncasecmp(ext, ".vob", 4) && |
78 | strncasecmp(ext, ".mpeg", 4) && | 78 | strncasecmp(ext, ".mpeg", 4) && |
79 | strncasecmp(ext, ".ac3", 4)) | 79 | strncasecmp(ext, ".ac3", 4)) |
80 | result = 0; | 80 | result = 0; |
81 | } | 81 | } |
82 | } | 82 | } |
83 | 83 | ||
84 | mpeg3io_close_file(fs); | 84 | mpeg3io_close_file(fs); |
85 | mpeg3_delete_fs(fs); | 85 | mpeg3_delete_fs(fs); |
86 | return result; | 86 | return result; |
87 | } | 87 | } |
88 | 88 | ||
89 | mpeg3_t* mpeg3_open_copy(char *path, mpeg3_t *old_file) | 89 | mpeg3_t* mpeg3_open_copy(char *path, mpeg3_t *old_file) |
90 | { | 90 | { |
91 | mpeg3_t *file = 0; | 91 | mpeg3_t *file = 0; |
92 | unsigned int bits; | 92 | unsigned int bits; |
93 | int i, done; | 93 | int i, done; |
94 | 94 | ||
95 | /* Initialize the file structure */ | 95 | /* Initialize the file structure */ |
96 | file = mpeg3_new(path); | 96 | file = mpeg3_new(path); |
97 | 97 | ||
98 | /* Need to perform authentication before reading a single byte. */ | 98 | /* Need to perform authentication before reading a single byte. */ |
99 | if(mpeg3io_open_file(file->fs)) | 99 | if(mpeg3io_open_file(file->fs)) |
100 | { | 100 | { |
101 | mpeg3_delete(file); | 101 | mpeg3_delete(file); |
102 | return 0; | 102 | return 0; |
103 | } | 103 | } |
104 | 104 | ||
105 | /* =============================== Create the title objects ========================= */ | 105 | /* =============================== Create the title objects ========================= */ |
106 | bits = mpeg3io_read_int32(file->fs); | 106 | bits = mpeg3io_read_int32(file->fs); |
107 | 107 | ||
108 | if(bits == MPEG3_TOC_PREFIX || bits == MPEG3_TOC_PREFIXLOWER) /* TOCV */ | 108 | if(bits == MPEG3_TOC_PREFIX || bits == MPEG3_TOC_PREFIXLOWER) /* TOCV */ |
109 | { | 109 | { |
110 | /* Table of contents for another file */ | 110 | /* Table of contents for another file */ |
111 | if(mpeg3_read_toc(file)) | 111 | if(mpeg3_read_toc(file)) |
112 | { | 112 | { |
113 | mpeg3_delete(file); | 113 | mpeg3_delete(file); |
114 | return 0; | 114 | return 0; |
115 | } | 115 | } |
116 | mpeg3io_close_file(file->fs); | 116 | mpeg3io_close_file(file->fs); |
117 | } | 117 | } |
118 | else | 118 | else |
119 | if(((bits >> 24) & 0xff) == MPEG3_SYNC_BYTE) | 119 | if(((bits >> 24) & 0xff) == MPEG3_SYNC_BYTE) |
120 | { | 120 | { |
121 | /* Transport stream */ | 121 | /* Transport stream */ |
122 | file->packet_size = MPEG3_TS_PACKET_SIZE; | 122 | file->packet_size = MPEG3_TS_PACKET_SIZE; |
123 | file->is_transport_stream = 1; | 123 | file->is_transport_stream = 1; |
124 | } | 124 | } |
125 | else | 125 | else |
126 | if(bits == MPEG3_PACK_START_CODE) | 126 | if(bits == MPEG3_PACK_START_CODE) |
127 | { | 127 | { |
128 | /* Program stream */ | 128 | /* Program stream */ |
129 | file->packet_size = MPEG3_DVD_PACKET_SIZE; | 129 | file->packet_size = MPEG3_DVD_PACKET_SIZE; |
130 | file->is_program_stream = 1; | 130 | file->is_program_stream = 1; |
131 | } | 131 | } |
132 | else | 132 | else |
133 | if((bits & 0xfff00000) == 0xfff00000 || | 133 | if((bits & 0xfff00000) == 0xfff00000 || |
134 | ((bits >> 8) == MPEG3_ID3_PREFIX) || | 134 | ((bits >> 8) == MPEG3_ID3_PREFIX) || |
135 | (bits == MPEG3_RIFF_CODE)) | 135 | (bits == MPEG3_RIFF_CODE)) |
136 | { | 136 | { |
137 | /* MPEG Audio only */ | 137 | /* MPEG Audio only */ |
138 | file->packet_size = MPEG3_DVD_PACKET_SIZE; | 138 | file->packet_size = MPEG3_DVD_PACKET_SIZE; |
139 | file->has_audio = 1; | 139 | file->has_audio = 1; |
140 | file->is_audio_stream = 1; | 140 | file->is_audio_stream = 1; |
141 | } | 141 | } |
142 | else | 142 | else |
143 | if(bits == MPEG3_SEQUENCE_START_CODE || | 143 | if(bits == MPEG3_SEQUENCE_START_CODE || |
144 | bits == MPEG3_PICTURE_START_CODE) | 144 | bits == MPEG3_PICTURE_START_CODE) |
145 | { | 145 | { |
146 | /* Video only */ | 146 | /* Video only */ |
147 | file->packet_size = MPEG3_DVD_PACKET_SIZE; | 147 | file->packet_size = MPEG3_DVD_PACKET_SIZE; |
148 | file->is_video_stream = 1; | 148 | file->is_video_stream = 1; |
149 | } | 149 | } |
150 | else | 150 | else |
151 | if(((bits & 0xffff0000) >> 16) == MPEG3_AC3_START_CODE) | 151 | if(((bits & 0xffff0000) >> 16) == MPEG3_AC3_START_CODE) |
152 | { | 152 | { |
153 | /* AC3 Audio only */ | 153 | /* AC3 Audio only */ |
154 | file->packet_size = MPEG3_DVD_PACKET_SIZE; | 154 | file->packet_size = MPEG3_DVD_PACKET_SIZE; |
155 | file->has_audio = 1; | 155 | file->has_audio = 1; |
156 | file->is_audio_stream = 1; | 156 | file->is_audio_stream = 1; |
157 | } | 157 | } |
158 | else | 158 | else |
159 | { | 159 | { |
160 | /* file->packet_size = MPEG3_DVD_PACKET_SIZE; */ | 160 | /* file->packet_size = MPEG3_DVD_PACKET_SIZE; */ |
161 | /* file->is_audio_stream = 1; */ | 161 | /* file->is_audio_stream = 1; */ |
162 | mpeg3_delete(file); | 162 | mpeg3_delete(file); |
163 | fprintf(stderr, "mpeg3_open: not an MPEG 2 stream\n"); | 163 | fprintf(stderr, "mpeg3_open: not an MPEG 2 stream\n"); |
164 | return 0; | 164 | return 0; |
165 | } | 165 | } |
166 | 166 | ||
167 | /* Create title */ | 167 | /* Create title */ |
168 | /* Copy timecodes from an old demuxer */ | 168 | /* Copy timecodes from an old demuxer */ |
169 | if(old_file && mpeg3_get_demuxer(old_file)) | 169 | if(old_file && mpeg3_get_demuxer(old_file)) |
170 | { | 170 | { |
171 | mpeg3demux_copy_titles(file->demuxer, mpeg3_get_demuxer(old_file)); | 171 | mpeg3demux_copy_titles(file->demuxer, mpeg3_get_demuxer(old_file)); |
172 | } | 172 | } |
173 | else | 173 | else |
174 | /* Start from scratch */ | 174 | /* Start from scratch */ |
175 | if(!file->demuxer->total_titles) | 175 | if(!file->demuxer->total_titles) |
176 | { | 176 | { |
177 | mpeg3demux_create_title(file->demuxer, 0, 0); | 177 | mpeg3demux_create_title(file->demuxer, 0, 0); |
178 | } | 178 | } |
179 | 179 | ||
180 | /* =============================== Get title information ========================= */ | 180 | /* =============================== Get title information ========================= */ |
181 | if(file->is_transport_stream || file->is_program_stream) | 181 | if(file->is_transport_stream || file->is_program_stream) |
182 | { | 182 | { |
183 | /* Create video tracks */ | 183 | /* Create video tracks */ |
184 | /* Video must be created before audio because audio uses the video timecode */ | 184 | /* Video must be created before audio because audio uses the video timecode */ |
185 | /* to get its length. */ | 185 | /* to get its length. */ |
186 | for(i = 0; i < MPEG3_MAX_STREAMS; i++) | 186 | for(i = 0; i < MPEG3_MAX_STREAMS; i++) |
187 | { | 187 | { |
188 | if(file->demuxer->vstream_table[i]) | 188 | if(file->demuxer->vstream_table[i]) |
189 | { | 189 | { |
190 | file->vtrack[file->total_vstreams] = mpeg3_new_vtrack(file, i, file->demuxer); | 190 | file->vtrack[file->total_vstreams] = mpeg3_new_vtrack(file, i, file->demuxer); |
191 | if(file->vtrack[file->total_vstreams]) file->total_vstreams++; | 191 | if(file->vtrack[file->total_vstreams]) file->total_vstreams++; |
192 | } | 192 | } |
193 | } | 193 | } |
194 | 194 | ||
195 | /* Create audio tracks */ | 195 | /* Create audio tracks */ |
196 | for(i = 0; i < MPEG3_MAX_STREAMS; i++) | 196 | for(i = 0; i < MPEG3_MAX_STREAMS; i++) |
197 | { | 197 | { |
198 | if(file->demuxer->astream_table[i]) | 198 | if(file->demuxer->astream_table[i]) |
199 | { | 199 | { |
200 | file->atrack[file->total_astreams] = mpeg3_new_atrack(file, | 200 | file->atrack[file->total_astreams] = mpeg3_new_atrack(file, |
201 | i, | 201 | i, |
202 | file->demuxer->astream_table[i], | 202 | file->demuxer->astream_table[i], |
203 | file->demuxer); | 203 | file->demuxer); |
204 | if(file->atrack[file->total_astreams]) file->total_astreams++; | 204 | if(file->atrack[file->total_astreams]) file->total_astreams++; |
205 | } | 205 | } |
206 | } | 206 | } |
207 | } | 207 | } |
208 | else | 208 | else |
209 | if(file->is_video_stream) | 209 | if(file->is_video_stream) |
210 | { | 210 | { |
211 | /* Create video tracks */ | 211 | /* Create video tracks */ |
212 | file->vtrack[0] = mpeg3_new_vtrack(file, -1, file->demuxer); | 212 | file->vtrack[0] = mpeg3_new_vtrack(file, -1, file->demuxer); |
213 | if(file->vtrack[0]) file->total_vstreams++; | 213 | if(file->vtrack[0]) file->total_vstreams++; |
214 | } | 214 | } |
215 | else | 215 | else |
216 | if(file->is_audio_stream) | 216 | if(file->is_audio_stream) |
217 | { | 217 | { |
218 | /* Create audio tracks */ | 218 | /* Create audio tracks */ |
219 | file->atrack[0] = mpeg3_new_atrack(file, -1, AUDIO_UNKNOWN, file->demuxer); | 219 | file->atrack[0] = mpeg3_new_atrack(file, -1, AUDIO_UNKNOWN, file->demuxer); |
220 | if(file->atrack[0]) file->total_astreams++; | 220 | if(file->atrack[0]) file->total_astreams++; |
221 | } | 221 | } |
222 | 222 | ||
223 | if(file->total_vstreams) file->has_video = 1; | 223 | if(file->total_vstreams) file->has_video = 1; |
224 | if(file->total_astreams) file->has_audio = 1; | 224 | if(file->total_astreams) file->has_audio = 1; |
225 | 225 | ||
226 | mpeg3io_close_file(file->fs); | 226 | mpeg3io_close_file(file->fs); |
227 | return file; | 227 | return file; |
228 | } | 228 | } |
229 | 229 | ||
230 | mpeg3_t* mpeg3_open(char *path) | 230 | mpeg3_t* mpeg3_open(char *path) |
231 | { | 231 | { |
232 | return mpeg3_open_copy(path, 0); | 232 | return mpeg3_open_copy(path, 0); |
233 | } | 233 | } |
234 | 234 | ||
235 | int mpeg3_close(mpeg3_t *file) | 235 | int mpeg3_close(mpeg3_t *file) |
236 | { | 236 | { |
237 | /* File is closed in the same procedure it is opened in. */ | 237 | /* File is closed in the same procedure it is opened in. */ |
238 | mpeg3_delete(file); | 238 | mpeg3_delete(file); |
239 | return 0; | 239 | return 0; |
240 | } | 240 | } |
241 | 241 | ||
242 | int mpeg3_set_cpus(mpeg3_t *file, int cpus) | 242 | int mpeg3_set_cpus(mpeg3_t *file, int cpus) |
243 | { | 243 | { |
244 | int i; | 244 | int i; |
245 | file->cpus = cpus; | 245 | file->cpus = cpus; |
246 | for(i = 0; i < file->total_vstreams; i++) | 246 | for(i = 0; i < file->total_vstreams; i++) |
247 | mpeg3video_set_cpus(file->vtrack[i]->video, cpus); | 247 | mpeg3video_set_cpus(file->vtrack[i]->video, cpus); |
248 | return 0; | 248 | return 0; |
249 | } | 249 | } |
250 | 250 | ||
251 | int mpeg3_set_mmx(mpeg3_t *file, int use_mmx) | 251 | int mpeg3_set_mmx(mpeg3_t *file, int use_mmx) |
252 | { | 252 | { |
253 | int i; | 253 | int i; |
254 | file->have_mmx = use_mmx; | 254 | file->have_mmx = use_mmx; |
255 | for(i = 0; i < file->total_vstreams; i++) | 255 | for(i = 0; i < file->total_vstreams; i++) |
256 | mpeg3video_set_mmx(file->vtrack[i]->video, use_mmx); | 256 | mpeg3video_set_mmx(file->vtrack[i]->video, use_mmx); |
257 | return 0; | 257 | return 0; |
258 | } | 258 | } |
259 | 259 | ||
260 | int mpeg3_generate_toc(FILE *output, char *path, int timecode_search, int print_streams) | 260 | int mpeg3_generate_toc(FILE *output, char *path, int timecode_search, int print_streams) |
261 | { | 261 | { |
262 | mpeg3_t *file = mpeg3_open(path); | 262 | mpeg3_t *file = mpeg3_open(path); |
263 | mpeg3_demuxer_t *demuxer; | 263 | mpeg3_demuxer_t *demuxer; |
264 | int i; | 264 | int i; |