diff options
author | Jens Arnold <amiconn@rockbox.org> | 2006-01-18 00:05:14 +0000 |
---|---|---|
committer | Jens Arnold <amiconn@rockbox.org> | 2006-01-18 00:05:14 +0000 |
commit | b8749fdf219ffcfc17b7781217f388953268af49 (patch) | |
tree | 7369b5cb4f94f0c6589eb8bbf1bf63537c898b62 | |
parent | 507ff53c9c429de6c3bf5bfd6eb1a129cfc12cad (diff) | |
download | rockbox-b8749fdf219ffcfc17b7781217f388953268af49.tar.gz rockbox-b8749fdf219ffcfc17b7781217f388953268af49.zip |
New codec loader, using the same mechanism as the new plugin loader. API version numbering restarted for the new system. Uses the target ID from configure, so don't change that too often. * Fixed sim_plugin_load_ram() to truncate the tempfile. * Reduced plugin buffer size to 512KB for iriver and iPod.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8362 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | apps/codecs.c | 93 | ||||
-rw-r--r-- | apps/codecs.h | 97 | ||||
-rw-r--r-- | apps/codecs/Makefile | 2 | ||||
-rw-r--r-- | apps/codecs/a52.c | 3 | ||||
-rw-r--r-- | apps/codecs/aac.c | 6 | ||||
-rw-r--r-- | apps/codecs/alac.c | 6 | ||||
-rw-r--r-- | apps/codecs/flac.c | 6 | ||||
-rw-r--r-- | apps/codecs/mpa.c | 3 | ||||
-rw-r--r-- | apps/codecs/mpc.c | 3 | ||||
-rw-r--r-- | apps/codecs/shorten.c | 5 | ||||
-rw-r--r-- | apps/codecs/vorbis.c | 3 | ||||
-rw-r--r-- | apps/codecs/wav.c | 4 | ||||
-rw-r--r-- | apps/codecs/wavpack.c | 4 | ||||
-rw-r--r-- | firmware/export/config-gmini120.h | 2 | ||||
-rw-r--r-- | firmware/export/config-gminisp.h | 2 | ||||
-rw-r--r-- | firmware/export/config-h100.h | 2 | ||||
-rw-r--r-- | firmware/export/config-h120.h | 2 | ||||
-rw-r--r-- | firmware/export/config-h300.h | 2 | ||||
-rw-r--r-- | firmware/export/config-iaudiox5.h | 2 | ||||
-rw-r--r-- | firmware/export/config-ipodcolor.h | 2 | ||||
-rw-r--r-- | firmware/export/config-ipodnano.h | 2 | ||||
-rw-r--r-- | firmware/export/config-ipodvideo.h | 2 | ||||
-rw-r--r-- | uisimulator/common/io.c | 29 |
23 files changed, 117 insertions, 165 deletions
diff --git a/apps/codecs.c b/apps/codecs.c index 831b9b4f0c..d12b43642f 100644 --- a/apps/codecs.c +++ b/apps/codecs.c | |||
@@ -68,13 +68,9 @@ extern unsigned char codecbuf[]; | |||
68 | 68 | ||
69 | extern void* plugin_get_audio_buffer(int *buffer_size); | 69 | extern void* plugin_get_audio_buffer(int *buffer_size); |
70 | 70 | ||
71 | static int codec_test(int api_version, int model, int memsize); | ||
72 | |||
73 | struct codec_api ci_voice; | 71 | struct codec_api ci_voice; |
74 | 72 | ||
75 | struct codec_api ci = { | 73 | struct codec_api ci = { |
76 | CODEC_API_VERSION, | ||
77 | codec_test, | ||
78 | 74 | ||
79 | 0, /* filesize */ | 75 | 0, /* filesize */ |
80 | 0, /* curpos */ | 76 | 0, /* curpos */ |
@@ -95,6 +91,8 @@ struct codec_api ci = { | |||
95 | NULL, | 91 | NULL, |
96 | NULL, | 92 | NULL, |
97 | NULL, | 93 | NULL, |
94 | NULL, | ||
95 | NULL, | ||
98 | 96 | ||
99 | gui_syncsplash, | 97 | gui_syncsplash, |
100 | 98 | ||
@@ -155,6 +153,7 @@ struct codec_api ci = { | |||
155 | strcat, | 153 | strcat, |
156 | memcmp, | 154 | memcmp, |
157 | strcasestr, | 155 | strcasestr, |
156 | memchr, | ||
158 | 157 | ||
159 | /* sound */ | 158 | /* sound */ |
160 | sound_set, | 159 | sound_set, |
@@ -163,9 +162,6 @@ struct codec_api ci = { | |||
163 | mp3_play_pause, | 162 | mp3_play_pause, |
164 | mp3_play_stop, | 163 | mp3_play_stop, |
165 | mp3_is_playing, | 164 | mp3_is_playing, |
166 | #if CONFIG_CODEC != SWCODEC | ||
167 | bitswap, | ||
168 | #endif | ||
169 | #if CONFIG_CODEC == SWCODEC | 165 | #if CONFIG_CODEC == SWCODEC |
170 | pcm_play_data, | 166 | pcm_play_data, |
171 | pcm_play_stop, | 167 | pcm_play_stop, |
@@ -190,24 +186,6 @@ struct codec_api ci = { | |||
190 | audio_current_track, | 186 | audio_current_track, |
191 | audio_flush_and_reload_tracks, | 187 | audio_flush_and_reload_tracks, |
192 | audio_get_file_pos, | 188 | audio_get_file_pos, |
193 | #if !defined(SIMULATOR) && (CONFIG_CODEC != SWCODEC) | ||
194 | mpeg_get_last_header, | ||
195 | #endif | ||
196 | #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) | ||
197 | sound_set_pitch, | ||
198 | #endif | ||
199 | |||
200 | #if !defined(SIMULATOR) && (CONFIG_CODEC != SWCODEC) | ||
201 | /* MAS communication */ | ||
202 | mas_readmem, | ||
203 | mas_writemem, | ||
204 | mas_readreg, | ||
205 | mas_writereg, | ||
206 | #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) | ||
207 | mas_codec_writereg, | ||
208 | mas_codec_readreg, | ||
209 | #endif | ||
210 | #endif /* !simulator and HWCODEC != SWCODEC */ | ||
211 | 189 | ||
212 | /* tag database */ | 190 | /* tag database */ |
213 | &tagdbheader, | 191 | &tagdbheader, |
@@ -227,6 +205,9 @@ struct codec_api ci = { | |||
227 | #if defined(DEBUG) || defined(SIMULATOR) | 205 | #if defined(DEBUG) || defined(SIMULATOR) |
228 | debugf, | 206 | debugf, |
229 | #endif | 207 | #endif |
208 | #ifdef ROCKBOX_HAS_LOGF | ||
209 | logf, | ||
210 | #endif | ||
230 | &global_settings, | 211 | &global_settings, |
231 | mp3info, | 212 | mp3info, |
232 | count_mp3_frames, | 213 | count_mp3_frames, |
@@ -234,28 +215,16 @@ struct codec_api ci = { | |||
234 | find_next_frame, | 215 | find_next_frame, |
235 | battery_level, | 216 | battery_level, |
236 | battery_level_safe, | 217 | battery_level_safe, |
237 | #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) | ||
238 | peak_meter_scale_value, | ||
239 | peak_meter_set_use_dbfs, | ||
240 | peak_meter_get_use_dbfs, | ||
241 | #endif | ||
242 | 218 | ||
243 | /* new stuff at the end, sort into place next time | 219 | /* new stuff at the end, sort into place next time |
244 | the API gets incompatible */ | 220 | the API gets incompatible */ |
245 | 221 | ||
246 | #ifdef ROCKBOX_HAS_LOGF | ||
247 | logf, | ||
248 | #endif | ||
249 | |||
250 | memchr, | ||
251 | NULL, | ||
252 | NULL, | ||
253 | }; | 222 | }; |
254 | 223 | ||
255 | int codec_load_ram(char* codecptr, int size, void* ptr2, int bufwrap, | 224 | int codec_load_ram(char* codecptr, int size, void* ptr2, int bufwrap, |
256 | struct codec_api *api) | 225 | struct codec_api *api) |
257 | { | 226 | { |
258 | enum codec_status (*codec_start)(const struct codec_api* api); | 227 | struct codec_header *hdr; |
259 | int status; | 228 | int status; |
260 | #ifndef SIMULATOR | 229 | #ifndef SIMULATOR |
261 | int copy_n; | 230 | int copy_n; |
@@ -272,22 +241,40 @@ int codec_load_ram(char* codecptr, int size, void* ptr2, int bufwrap, | |||
272 | memcpy(&codecbuf[copy_n], ptr2, size); | 241 | memcpy(&codecbuf[copy_n], ptr2, size); |
273 | } | 242 | } |
274 | } | 243 | } |
275 | codec_start = (void*)&codecbuf; | 244 | hdr = (struct codec_header *)codecbuf; |
276 | 245 | ||
246 | if (hdr->magic != CODEC_MAGIC | ||
247 | || hdr->target_id != TARGET_ID | ||
248 | || hdr->load_addr != codecbuf | ||
249 | || hdr->end_addr > codecbuf + CODEC_SIZE) { | ||
250 | return CODEC_ERROR; | ||
251 | } | ||
277 | #else /* SIMULATOR */ | 252 | #else /* SIMULATOR */ |
278 | int pd; | 253 | int pd; |
279 | 254 | ||
280 | codec_start = sim_codec_load_ram(codecptr, size, ptr2, bufwrap, &pd); | 255 | hdr = sim_codec_load_ram(codecptr, size, ptr2, bufwrap, &pd); |
281 | if (pd < 0) | 256 | if (pd < 0) |
282 | return CODEC_ERROR; | 257 | return CODEC_ERROR; |
258 | |||
259 | if (hdr == NULL | ||
260 | || hdr->magic != CODEC_MAGIC | ||
261 | || hdr->target_id != TARGET_ID | ||
262 | || hdr->entry_point == NULL) { | ||
263 | sim_codec_close(pd); | ||
264 | return CODEC_ERROR; | ||
265 | } | ||
283 | #endif /* SIMULATOR */ | 266 | #endif /* SIMULATOR */ |
267 | if (hdr->api_version > CODEC_API_VERSION | ||
268 | || hdr->api_version < CODEC_MIN_API_VERSION) { | ||
269 | sim_codec_close(pd); | ||
270 | return CODEC_ERROR; | ||
271 | } | ||
284 | 272 | ||
285 | invalidate_icache(); | 273 | invalidate_icache(); |
286 | status = codec_start(api); | 274 | status = hdr->entry_point(api); |
287 | #ifdef SIMULATOR | 275 | |
288 | sim_codec_close(pd); | 276 | sim_codec_close(pd); |
289 | #endif | 277 | |
290 | |||
291 | return status; | 278 | return status; |
292 | } | 279 | } |
293 | 280 | ||
@@ -317,21 +304,3 @@ int codec_load_file(const char *plugin, struct codec_api *api) | |||
317 | 304 | ||
318 | return codec_load_ram(codecbuf, (size_t)rc, NULL, 0, api); | 305 | return codec_load_ram(codecbuf, (size_t)rc, NULL, 0, api); |
319 | } | 306 | } |
320 | |||
321 | static int codec_test(int api_version, int model, int memsize) | ||
322 | { | ||
323 | if (api_version < CODEC_MIN_API_VERSION || | ||
324 | api_version > CODEC_API_VERSION) | ||
325 | return CODEC_WRONG_API_VERSION; | ||
326 | |||
327 | (void)model; | ||
328 | #if 0 | ||
329 | if (model != MODEL) | ||
330 | return CODEC_WRONG_MODEL; | ||
331 | #endif | ||
332 | |||
333 | if (memsize != MEM) | ||
334 | return CODEC_WRONG_MODEL; | ||
335 | |||
336 | return CODEC_OK; | ||
337 | } | ||
diff --git a/apps/codecs.h b/apps/codecs.h index 5d5fbfe75d..320431f3bf 100644 --- a/apps/codecs.h +++ b/apps/codecs.h | |||
@@ -80,32 +80,23 @@ | |||
80 | #define PREFIX(_x_) _x_ | 80 | #define PREFIX(_x_) _x_ |
81 | #endif | 81 | #endif |
82 | 82 | ||
83 | #define CODEC_MAGIC 0x52434F44 /* RCOD */ | ||
84 | |||
83 | /* increase this every time the api struct changes */ | 85 | /* increase this every time the api struct changes */ |
84 | #define CODEC_API_VERSION 44 | 86 | #define CODEC_API_VERSION 1 |
85 | 87 | ||
86 | /* update this to latest version if a change to the api struct breaks | 88 | /* update this to latest version if a change to the api struct breaks |
87 | backwards compatibility (and please take the opportunity to sort in any | 89 | backwards compatibility (and please take the opportunity to sort in any |
88 | new function which are "waiting" at the end of the function table) */ | 90 | new function which are "waiting" at the end of the function table) */ |
89 | #define CODEC_MIN_API_VERSION 44 | 91 | #define CODEC_MIN_API_VERSION 1 |
90 | 92 | ||
91 | /* codec return codes */ | 93 | /* codec return codes */ |
92 | enum codec_status { | 94 | enum codec_status { |
93 | CODEC_OK = 0, | 95 | CODEC_OK = 0, |
94 | CODEC_USB_CONNECTED, | 96 | CODEC_USB_CONNECTED, |
95 | 97 | CODEC_ERROR = -1, | |
96 | CODEC_WRONG_API_VERSION = -1, | ||
97 | CODEC_WRONG_MODEL = -2, | ||
98 | CODEC_ERROR = -3, | ||
99 | }; | 98 | }; |
100 | 99 | ||
101 | /* compatibility test macro */ | ||
102 | #define TEST_CODEC_API(_api_) \ | ||
103 | do { \ | ||
104 | int _rc_ = _api_->codec_test(CODEC_API_VERSION, 1, MEM); \ | ||
105 | if (_rc_<0) \ | ||
106 | return _rc_; \ | ||
107 | } while(0) | ||
108 | |||
109 | /* NOTE: To support backwards compatibility, only add new functions at | 100 | /* NOTE: To support backwards compatibility, only add new functions at |
110 | the end of the structure. Every time you add a new function, | 101 | the end of the structure. Every time you add a new function, |
111 | remember to increase CODEC_API_VERSION. If you make changes to the | 102 | remember to increase CODEC_API_VERSION. If you make changes to the |
@@ -113,10 +104,6 @@ do { \ | |||
113 | version | 104 | version |
114 | */ | 105 | */ |
115 | struct codec_api { | 106 | struct codec_api { |
116 | /* these two fields must always be first, to ensure | ||
117 | TEST_CODEC_API will always work */ | ||
118 | int version; | ||
119 | int (*codec_test)(int api_version, int model, int memsize); | ||
120 | 107 | ||
121 | off_t filesize; /* Total file length */ | 108 | off_t filesize; /* Total file length */ |
122 | off_t curpos; /* Current buffer position */ | 109 | off_t curpos; /* Current buffer position */ |
@@ -158,6 +145,8 @@ struct codec_api { | |||
158 | void (*advance_buffer_loc)(void *ptr); | 145 | void (*advance_buffer_loc)(void *ptr); |
159 | /* Seek file buffer to position <newpos> beginning of file. */ | 146 | /* Seek file buffer to position <newpos> beginning of file. */ |
160 | bool (*seek_buffer)(off_t newpos); | 147 | bool (*seek_buffer)(off_t newpos); |
148 | /* Codec should call this function when it has done the seeking. */ | ||
149 | void (*seek_complete)(void); | ||
161 | /* Calculate mp3 seek position from given time data in ms. */ | 150 | /* Calculate mp3 seek position from given time data in ms. */ |
162 | off_t (*mp3_get_filepos)(int newtime); | 151 | off_t (*mp3_get_filepos)(int newtime); |
163 | /* Request file change from file buffer. Returns true is next | 152 | /* Request file change from file buffer. Returns true is next |
@@ -165,6 +154,7 @@ struct codec_api { | |||
165 | codec should exit immediately with PLUGIN_OK status. */ | 154 | codec should exit immediately with PLUGIN_OK status. */ |
166 | bool (*request_next_track)(void); | 155 | bool (*request_next_track)(void); |
167 | 156 | ||
157 | void (*set_offset)(unsigned int value); | ||
168 | /* Configure different codec buffer parameters. */ | 158 | /* Configure different codec buffer parameters. */ |
169 | void (*configure)(int setting, void *value); | 159 | void (*configure)(int setting, void *value); |
170 | 160 | ||
@@ -228,6 +218,7 @@ struct codec_api { | |||
228 | char *(*strcat)(char *s1, const char *s2); | 218 | char *(*strcat)(char *s1, const char *s2); |
229 | int (*memcmp)(const void *s1, const void *s2, size_t n); | 219 | int (*memcmp)(const void *s1, const void *s2, size_t n); |
230 | char *(*strcasestr) (const char* phaystack, const char* pneedle); | 220 | char *(*strcasestr) (const char* phaystack, const char* pneedle); |
221 | void *(*memchr)(const void *s1, int c, size_t n); | ||
231 | 222 | ||
232 | /* sound */ | 223 | /* sound */ |
233 | void (*sound_set)(int setting, int value); | 224 | void (*sound_set)(int setting, int value); |
@@ -236,9 +227,6 @@ struct codec_api { | |||
236 | void (*mp3_play_pause)(bool play); | 227 | void (*mp3_play_pause)(bool play); |
237 | void (*mp3_play_stop)(void); | 228 | void (*mp3_play_stop)(void); |
238 | bool (*mp3_is_playing)(void); | 229 | bool (*mp3_is_playing)(void); |
239 | #if CONFIG_CODEC != SWCODEC | ||
240 | void (*bitswap)(unsigned char *data, int length); | ||
241 | #endif | ||
242 | #if CONFIG_CODEC == SWCODEC | 230 | #if CONFIG_CODEC == SWCODEC |
243 | void (*pcm_play_data)(void (*get_more)(unsigned char** start, long*size)); | 231 | void (*pcm_play_data)(void (*get_more)(unsigned char** start, long*size)); |
244 | void (*pcm_play_stop)(void); | 232 | void (*pcm_play_stop)(void); |
@@ -263,24 +251,6 @@ struct codec_api { | |||
263 | struct mp3entry* (*audio_current_track)(void); | 251 | struct mp3entry* (*audio_current_track)(void); |
264 | void (*audio_flush_and_reload_tracks)(void); | 252 | void (*audio_flush_and_reload_tracks)(void); |
265 | int (*audio_get_file_pos)(void); | 253 | int (*audio_get_file_pos)(void); |
266 | #if !defined(SIMULATOR) && (CONFIG_CODEC != SWCODEC) | ||
267 | unsigned long (*mpeg_get_last_header)(void); | ||
268 | #endif | ||
269 | #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) | ||
270 | void (*sound_set_pitch)(int pitch); | ||
271 | #endif | ||
272 | |||
273 | /* MAS communication */ | ||
274 | #if !defined(SIMULATOR) && (CONFIG_CODEC != SWCODEC) | ||
275 | int (*mas_readmem)(int bank, int addr, unsigned long* dest, int len); | ||
276 | int (*mas_writemem)(int bank, int addr, const unsigned long* src, int len); | ||
277 | int (*mas_readreg)(int reg); | ||
278 | int (*mas_writereg)(int reg, unsigned int val); | ||
279 | #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) | ||
280 | int (*mas_codec_writereg)(int reg, unsigned int val); | ||
281 | int (*mas_codec_readreg)(int reg); | ||
282 | #endif | ||
283 | #endif | ||
284 | 254 | ||
285 | /* tag database */ | 255 | /* tag database */ |
286 | struct tagdb_header *tagdbheader; | 256 | struct tagdb_header *tagdbheader; |
@@ -301,6 +271,9 @@ struct codec_api { | |||
301 | #if defined(DEBUG) || defined(SIMULATOR) | 271 | #if defined(DEBUG) || defined(SIMULATOR) |
302 | void (*debugf)(const char *fmt, ...); | 272 | void (*debugf)(const char *fmt, ...); |
303 | #endif | 273 | #endif |
274 | #ifdef ROCKBOX_HAS_LOGF | ||
275 | void (*logf)(const char *fmt, ...); | ||
276 | #endif | ||
304 | struct user_settings* global_settings; | 277 | struct user_settings* global_settings; |
305 | bool (*mp3info)(struct mp3entry *entry, const char *filename, bool v1first); | 278 | bool (*mp3info)(struct mp3entry *entry, const char *filename, bool v1first); |
306 | int (*count_mp3_frames)(int fd, int startpos, int filesize, | 279 | int (*count_mp3_frames)(int fd, int startpos, int filesize, |
@@ -313,35 +286,45 @@ struct codec_api { | |||
313 | long max_offset, unsigned long last_header); | 286 | long max_offset, unsigned long last_header); |
314 | int (*battery_level)(void); | 287 | int (*battery_level)(void); |
315 | bool (*battery_level_safe)(void); | 288 | bool (*battery_level_safe)(void); |
316 | #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) | ||
317 | unsigned short (*peak_meter_scale_value)(unsigned short val, | ||
318 | int meterwidth); | ||
319 | void (*peak_meter_set_use_dbfs)(bool use); | ||
320 | bool (*peak_meter_get_use_dbfs)(void); | ||
321 | #endif | ||
322 | 289 | ||
323 | /* new stuff at the end, sort into place next time | 290 | /* new stuff at the end, sort into place next time |
324 | the API gets incompatible */ | 291 | the API gets incompatible */ |
325 | |||
326 | #ifdef ROCKBOX_HAS_LOGF | ||
327 | void (*logf)(const char *fmt, ...); | ||
328 | #endif | ||
329 | 292 | ||
330 | void *(*memchr)(const void *s1, int c, size_t n); | ||
331 | void (*set_offset)(unsigned int value); | ||
332 | /* Codec should call this function when it has done the seeking. */ | ||
333 | void (*seek_complete)(void); | ||
334 | }; | 293 | }; |
335 | 294 | ||
295 | /* codec header */ | ||
296 | struct codec_header { | ||
297 | unsigned long magic; | ||
298 | unsigned short target_id; | ||
299 | unsigned short api_version; | ||
300 | unsigned char *load_addr; | ||
301 | unsigned char *end_addr; | ||
302 | enum codec_status(*entry_point)(struct codec_api*); | ||
303 | }; | ||
304 | #ifdef CODEC | ||
305 | #ifndef SIMULATOR | ||
306 | /* plugin_* is correct, codecs use the plugin linker script */ | ||
307 | extern unsigned char plugin_start_addr[]; | ||
308 | extern unsigned char plugin_end_addr[]; | ||
309 | #define CODEC_HEADER \ | ||
310 | const struct codec_header __header \ | ||
311 | __attribute__ ((section (".header")))= { \ | ||
312 | CODEC_MAGIC, TARGET_ID, CODEC_API_VERSION, \ | ||
313 | plugin_start_addr, plugin_end_addr, codec_start }; | ||
314 | #else /* SIMULATOR */ | ||
315 | #define CODEC_HEADER \ | ||
316 | const struct codec_header __header = { \ | ||
317 | CODEC_MAGIC, TARGET_ID, CODEC_API_VERSION, \ | ||
318 | NULL, NULL, codec_start }; | ||
319 | #endif | ||
320 | #endif | ||
321 | |||
336 | /* defined by the codec loader (codec.c) */ | 322 | /* defined by the codec loader (codec.c) */ |
337 | #if CONFIG_CODEC == SWCODEC | ||
338 | int codec_load_ram(char* codecptr, int size, void* ptr2, int bufwrap, | 323 | int codec_load_ram(char* codecptr, int size, void* ptr2, int bufwrap, |
339 | struct codec_api *api); | 324 | struct codec_api *api); |
340 | int codec_load_file(const char* codec, struct codec_api *api); | 325 | int codec_load_file(const char* codec, struct codec_api *api); |
341 | #endif | ||
342 | 326 | ||
343 | /* defined by the codec */ | 327 | /* defined by the codec */ |
344 | enum codec_status codec_start(struct codec_api* rockbox) | 328 | enum codec_status codec_start(struct codec_api* rockbox); |
345 | __attribute__ ((section (".entry"))); | ||
346 | 329 | ||
347 | #endif | 330 | #endif |
diff --git a/apps/codecs/Makefile b/apps/codecs/Makefile index 5aec2ed983..d0cd97db9b 100644 --- a/apps/codecs/Makefile +++ b/apps/codecs/Makefile | |||
@@ -10,7 +10,7 @@ | |||
10 | INCLUDES = -I$(FIRMDIR)/include -I$(FIRMDIR)/export -I$(FIRMDIR)/common \ | 10 | INCLUDES = -I$(FIRMDIR)/include -I$(FIRMDIR)/export -I$(FIRMDIR)/common \ |
11 | -I$(FIRMDIR)/drivers -I$(APPSDIR) -Ilib -I$(BUILDDIR) | 11 | -I$(FIRMDIR)/drivers -I$(APPSDIR) -Ilib -I$(BUILDDIR) |
12 | CFLAGS = $(GCCOPTS) $(INCLUDES) $(TARGET) $(EXTRA_DEFINES) \ | 12 | CFLAGS = $(GCCOPTS) $(INCLUDES) $(TARGET) $(EXTRA_DEFINES) \ |
13 | -DMEM=${MEMORYSIZE} -DCODEC | 13 | -DTARGET_ID=$(TARGET_ID) -DMEM=${MEMORYSIZE} -DCODEC |
14 | 14 | ||
15 | ifdef APPEXTRA | 15 | ifdef APPEXTRA |
16 | INCLUDES += $(patsubst %,-I$(APPSDIR)/%,$(subst :, ,$(APPEXTRA))) | 16 | INCLUDES += $(patsubst %,-I$(APPSDIR)/%,$(subst :, ,$(APPEXTRA))) |
diff --git a/apps/codecs/a52.c b/apps/codecs/a52.c index dd504e83fd..f12fce1027 100644 --- a/apps/codecs/a52.c +++ b/apps/codecs/a52.c | |||
@@ -22,6 +22,8 @@ | |||
22 | #include <codecs/liba52/config-a52.h> | 22 | #include <codecs/liba52/config-a52.h> |
23 | #include <codecs/liba52/a52.h> | 23 | #include <codecs/liba52/a52.h> |
24 | 24 | ||
25 | CODEC_HEADER | ||
26 | |||
25 | #define BUFFER_SIZE 4096 | 27 | #define BUFFER_SIZE 4096 |
26 | 28 | ||
27 | #define A52_SAMPLESPERFRAME (6*256) | 29 | #define A52_SAMPLESPERFRAME (6*256) |
@@ -129,7 +131,6 @@ enum codec_status codec_start(struct codec_api *api) | |||
129 | int sample_loc; | 131 | int sample_loc; |
130 | 132 | ||
131 | /* Generic codec initialisation */ | 133 | /* Generic codec initialisation */ |
132 | TEST_CODEC_API(api); | ||
133 | ci = api; | 134 | ci = api; |
134 | 135 | ||
135 | #ifdef USE_IRAM | 136 | #ifdef USE_IRAM |
diff --git a/apps/codecs/aac.c b/apps/codecs/aac.c index a6ce0170a9..baa3935175 100644 --- a/apps/codecs/aac.c +++ b/apps/codecs/aac.c | |||
@@ -23,6 +23,8 @@ | |||
23 | #include "libfaad/structs.h" | 23 | #include "libfaad/structs.h" |
24 | #include "libfaad/decoder.h" | 24 | #include "libfaad/decoder.h" |
25 | 25 | ||
26 | CODEC_HEADER | ||
27 | |||
26 | #ifndef SIMULATOR | 28 | #ifndef SIMULATOR |
27 | extern char iramcopy[]; | 29 | extern char iramcopy[]; |
28 | extern char iramstart[]; | 30 | extern char iramstart[]; |
@@ -51,10 +53,8 @@ enum codec_status codec_start(struct codec_api* api) | |||
51 | int16_t* decodedbuffer; | 53 | int16_t* decodedbuffer; |
52 | 54 | ||
53 | /* Generic codec initialisation */ | 55 | /* Generic codec initialisation */ |
54 | TEST_CODEC_API(api); | ||
55 | |||
56 | rb = api; | 56 | rb = api; |
57 | ci = (struct codec_api*)api; | 57 | ci = api; |
58 | 58 | ||
59 | #ifndef SIMULATOR | 59 | #ifndef SIMULATOR |
60 | rb->memcpy(iramstart, iramcopy, iramend-iramstart); | 60 | rb->memcpy(iramstart, iramcopy, iramend-iramstart); |
diff --git a/apps/codecs/alac.c b/apps/codecs/alac.c index 30c1ada555..7ca70ce83c 100644 --- a/apps/codecs/alac.c +++ b/apps/codecs/alac.c | |||
@@ -21,6 +21,8 @@ | |||
21 | #include "libm4a/m4a.h" | 21 | #include "libm4a/m4a.h" |
22 | #include "libalac/decomp.h" | 22 | #include "libalac/decomp.h" |
23 | 23 | ||
24 | CODEC_HEADER | ||
25 | |||
24 | #ifdef USE_IRAM | 26 | #ifdef USE_IRAM |
25 | extern char iramcopy[]; | 27 | extern char iramcopy[]; |
26 | extern char iramstart[]; | 28 | extern char iramstart[]; |
@@ -50,10 +52,8 @@ enum codec_status codec_start(struct codec_api* api) | |||
50 | alac_file alac; | 52 | alac_file alac; |
51 | 53 | ||
52 | /* Generic codec initialisation */ | 54 | /* Generic codec initialisation */ |
53 | TEST_CODEC_API(api); | ||
54 | |||
55 | rb = api; | 55 | rb = api; |
56 | ci = (struct codec_api*)api; | 56 | ci = api; |
57 | 57 | ||
58 | #ifdef USE_IRAM | 58 | #ifdef USE_IRAM |
59 | rb->memcpy(iramstart, iramcopy, iramend-iramstart); | 59 | rb->memcpy(iramstart, iramcopy, iramend-iramstart); |
diff --git a/apps/codecs/flac.c b/apps/codecs/flac.c index ae05b0f2aa..a96963dd80 100644 --- a/apps/codecs/flac.c +++ b/apps/codecs/flac.c | |||
@@ -20,6 +20,8 @@ | |||
20 | #include "codeclib.h" | 20 | #include "codeclib.h" |
21 | #include <codecs/libffmpegFLAC/decoder.h> | 21 | #include <codecs/libffmpegFLAC/decoder.h> |
22 | 22 | ||
23 | CODEC_HEADER | ||
24 | |||
23 | #ifdef USE_IRAM | 25 | #ifdef USE_IRAM |
24 | extern char iramcopy[]; | 26 | extern char iramcopy[]; |
25 | extern char iramstart[]; | 27 | extern char iramstart[]; |
@@ -226,10 +228,8 @@ enum codec_status codec_start(struct codec_api* api) | |||
226 | int frame; | 228 | int frame; |
227 | 229 | ||
228 | /* Generic codec initialisation */ | 230 | /* Generic codec initialisation */ |
229 | TEST_CODEC_API(api); | ||
230 | |||
231 | rb = api; | 231 | rb = api; |
232 | ci = (struct codec_api*)api; | 232 | ci = api; |
233 | 233 | ||
234 | #ifdef USE_IRAM | 234 | #ifdef USE_IRAM |
235 | ci->memcpy(iramstart, iramcopy, iramend-iramstart); | 235 | ci->memcpy(iramstart, iramcopy, iramend-iramstart); |
diff --git a/apps/codecs/mpa.c b/apps/codecs/mpa.c index 3d824d9b39..3c57f3f33f 100644 --- a/apps/codecs/mpa.c +++ b/apps/codecs/mpa.c | |||
@@ -21,6 +21,8 @@ | |||
21 | #include <codecs/libmad/mad.h> | 21 | #include <codecs/libmad/mad.h> |
22 | #include <inttypes.h> | 22 | #include <inttypes.h> |
23 | 23 | ||
24 | CODEC_HEADER | ||
25 | |||
24 | struct mad_stream stream IBSS_ATTR; | 26 | struct mad_stream stream IBSS_ATTR; |
25 | struct mad_frame frame IBSS_ATTR; | 27 | struct mad_frame frame IBSS_ATTR; |
26 | struct mad_synth synth IBSS_ATTR; | 28 | struct mad_synth synth IBSS_ATTR; |
@@ -81,7 +83,6 @@ enum codec_status codec_start(struct codec_api *api) | |||
81 | char *inputbuffer; | 83 | char *inputbuffer; |
82 | 84 | ||
83 | ci = api; | 85 | ci = api; |
84 | TEST_CODEC_API(api); | ||
85 | 86 | ||
86 | #ifdef USE_IRAM | 87 | #ifdef USE_IRAM |
87 | ci->memcpy(iramstart, iramcopy, iramend - iramstart); | 88 | ci->memcpy(iramstart, iramcopy, iramend - iramstart); |
diff --git a/apps/codecs/mpc.c b/apps/codecs/mpc.c index 207a63ce97..1d1ed3a8b7 100644 --- a/apps/codecs/mpc.c +++ b/apps/codecs/mpc.c | |||
@@ -20,6 +20,8 @@ | |||
20 | #include "codeclib.h" | 20 | #include "codeclib.h" |
21 | #include <codecs/libmusepack/musepack.h> | 21 | #include <codecs/libmusepack/musepack.h> |
22 | 22 | ||
23 | CODEC_HEADER | ||
24 | |||
23 | mpc_decoder decoder; | 25 | mpc_decoder decoder; |
24 | 26 | ||
25 | /* Our implementations of the mpc_reader callback functions. */ | 27 | /* Our implementations of the mpc_reader callback functions. */ |
@@ -82,7 +84,6 @@ enum codec_status codec_start(struct codec_api *api) | |||
82 | mpc_reader reader; | 84 | mpc_reader reader; |
83 | mpc_streaminfo info; | 85 | mpc_streaminfo info; |
84 | 86 | ||
85 | TEST_CODEC_API(api); | ||
86 | #ifdef USE_IRAM | 87 | #ifdef USE_IRAM |
87 | ci->memcpy(iramstart, iramcopy, iramend - iramstart); | 88 | ci->memcpy(iramstart, iramcopy, iramend - iramstart); |
88 | ci->memset(iedata, 0, iend - iedata); | 89 | ci->memset(iedata, 0, iend - iedata); |
diff --git a/apps/codecs/shorten.c b/apps/codecs/shorten.c index 9e679f5ea7..ffbd42a9ff 100644 --- a/apps/codecs/shorten.c +++ b/apps/codecs/shorten.c | |||
@@ -20,6 +20,8 @@ | |||
20 | #include "codeclib.h" | 20 | #include "codeclib.h" |
21 | #include <codecs/libffmpegFLAC/shndec.h> | 21 | #include <codecs/libffmpegFLAC/shndec.h> |
22 | 22 | ||
23 | CODEC_HEADER | ||
24 | |||
23 | #ifdef USE_IRAM | 25 | #ifdef USE_IRAM |
24 | extern char iramcopy[]; | 26 | extern char iramcopy[]; |
25 | extern char iramstart[]; | 27 | extern char iramstart[]; |
@@ -50,9 +52,8 @@ enum codec_status codec_start(struct codec_api* api) | |||
50 | long bytesleft; | 52 | long bytesleft; |
51 | 53 | ||
52 | /* Generic codec initialisation */ | 54 | /* Generic codec initialisation */ |
53 | TEST_CODEC_API(api); | ||
54 | rb = api; | 55 | rb = api; |
55 | ci = (struct codec_api*)api; | 56 | ci = api; |
56 | 57 | ||
57 | #ifdef USE_IRAM | 58 | #ifdef USE_IRAM |
58 | ci->memcpy(iramstart, iramcopy, iramend-iramstart); | 59 | ci->memcpy(iramstart, iramcopy, iramend-iramstart); |
diff --git a/apps/codecs/vorbis.c b/apps/codecs/vorbis.c index 795e689e7d..fdd7a952d4 100644 --- a/apps/codecs/vorbis.c +++ b/apps/codecs/vorbis.c | |||
@@ -21,6 +21,8 @@ | |||
21 | #include "Tremor/ivorbisfile.h" | 21 | #include "Tremor/ivorbisfile.h" |
22 | #include "Tremor/ogg.h" | 22 | #include "Tremor/ogg.h" |
23 | 23 | ||
24 | CODEC_HEADER | ||
25 | |||
24 | static struct codec_api *rb; | 26 | static struct codec_api *rb; |
25 | 27 | ||
26 | /* Some standard functions and variables needed by Tremor */ | 28 | /* Some standard functions and variables needed by Tremor */ |
@@ -122,7 +124,6 @@ enum codec_status codec_start(struct codec_api *api) | |||
122 | ogg_uint32_t vf_serialnos; | 124 | ogg_uint32_t vf_serialnos; |
123 | ogg_int64_t vf_pcmlengths[2]; | 125 | ogg_int64_t vf_pcmlengths[2]; |
124 | 126 | ||
125 | TEST_CODEC_API(api); | ||
126 | rb = api; | 127 | rb = api; |
127 | 128 | ||
128 | #ifdef USE_IRAM | 129 | #ifdef USE_IRAM |
diff --git a/apps/codecs/wav.c b/apps/codecs/wav.c index e86b559caa..1dda2c3d58 100644 --- a/apps/codecs/wav.c +++ b/apps/codecs/wav.c | |||
@@ -20,6 +20,8 @@ | |||
20 | #include "codeclib.h" | 20 | #include "codeclib.h" |
21 | #include "inttypes.h" | 21 | #include "inttypes.h" |
22 | 22 | ||
23 | CODEC_HEADER | ||
24 | |||
23 | struct codec_api* rb; | 25 | struct codec_api* rb; |
24 | 26 | ||
25 | /* This codec support WAVE files with the following formats: | 27 | /* This codec support WAVE files with the following formats: |
@@ -230,8 +232,6 @@ enum codec_status codec_start(struct codec_api* api) | |||
230 | int32_t * const int32_samples = (int32_t*)int16_samples; | 232 | int32_t * const int32_samples = (int32_t*)int16_samples; |
231 | 233 | ||
232 | /* Generic codec initialisation */ | 234 | /* Generic codec initialisation */ |
233 | TEST_CODEC_API(api); | ||
234 | |||
235 | rb = api; | 235 | rb = api; |
236 | ci = api; | 236 | ci = api; |
237 | 237 | ||
diff --git a/apps/codecs/wavpack.c b/apps/codecs/wavpack.c index ff890ba805..2804d3ef72 100644 --- a/apps/codecs/wavpack.c +++ b/apps/codecs/wavpack.c | |||
@@ -20,6 +20,8 @@ | |||
20 | #include "codeclib.h" | 20 | #include "codeclib.h" |
21 | #include "libwavpack/wavpack.h" | 21 | #include "libwavpack/wavpack.h" |
22 | 22 | ||
23 | CODEC_HEADER | ||
24 | |||
23 | static struct codec_api *ci; | 25 | static struct codec_api *ci; |
24 | 26 | ||
25 | #define FORCE_DSP_USE /* fixes some WavPack bugs; adds about 12% to boost ratio | 27 | #define FORCE_DSP_USE /* fixes some WavPack bugs; adds about 12% to boost ratio |
@@ -52,8 +54,6 @@ enum codec_status codec_start(struct codec_api* api) | |||
52 | int bps, nchans, sr_100; | 54 | int bps, nchans, sr_100; |
53 | 55 | ||
54 | /* Generic codec initialisation */ | 56 | /* Generic codec initialisation */ |
55 | TEST_CODEC_API(api); | ||
56 | |||
57 | ci = api; | 57 | ci = api; |
58 | 58 | ||
59 | #ifdef USE_IRAM | 59 | #ifdef USE_IRAM |
diff --git a/firmware/export/config-gmini120.h b/firmware/export/config-gmini120.h index 29066ecae3..8ffe51c433 100644 --- a/firmware/export/config-gmini120.h +++ b/firmware/export/config-gmini120.h | |||
@@ -28,7 +28,7 @@ | |||
28 | #define CODEC_SIZE 0x40000 | 28 | #define CODEC_SIZE 0x40000 |
29 | 29 | ||
30 | /* The number of bytes reserved for loadable plugins */ | 30 | /* The number of bytes reserved for loadable plugins */ |
31 | #define PLUGIN_BUFFER_SIZE 0xC0000 | 31 | #define PLUGIN_BUFFER_SIZE 0x80000 |
32 | 32 | ||
33 | #ifndef SIMULATOR | 33 | #ifndef SIMULATOR |
34 | 34 | ||
diff --git a/firmware/export/config-gminisp.h b/firmware/export/config-gminisp.h index 982e8f3725..4aa4723ca0 100644 --- a/firmware/export/config-gminisp.h +++ b/firmware/export/config-gminisp.h | |||
@@ -19,7 +19,7 @@ | |||
19 | #define CODEC_SIZE 0x40000 | 19 | #define CODEC_SIZE 0x40000 |
20 | 20 | ||
21 | /* The number of bytes reserved for loadable plugins */ | 21 | /* The number of bytes reserved for loadable plugins */ |
22 | #define PLUGIN_BUFFER_SIZE 0xC0000 | 22 | #define PLUGIN_BUFFER_SIZE 0x80000 |
23 | 23 | ||
24 | #ifndef SIMULATOR | 24 | #ifndef SIMULATOR |
25 | 25 | ||
diff --git a/firmware/export/config-h100.h b/firmware/export/config-h100.h index 6d19b44820..34c0cc4f70 100644 --- a/firmware/export/config-h100.h +++ b/firmware/export/config-h100.h | |||
@@ -45,7 +45,7 @@ | |||
45 | #define CODEC_SIZE 0x80000 | 45 | #define CODEC_SIZE 0x80000 |
46 | 46 | ||
47 | /* The number of bytes reserved for loadable plugins */ | 47 | /* The number of bytes reserved for loadable plugins */ |
48 | #define PLUGIN_BUFFER_SIZE 0xC0000 | 48 | #define PLUGIN_BUFFER_SIZE 0x80000 |
49 | 49 | ||
50 | #define CONFIG_TUNER TEA5767 | 50 | #define CONFIG_TUNER TEA5767 |
51 | #define CONFIG_TUNER_XTAL 32768 | 51 | #define CONFIG_TUNER_XTAL 32768 |
diff --git a/firmware/export/config-h120.h b/firmware/export/config-h120.h index 5c6f763981..2790063c64 100644 --- a/firmware/export/config-h120.h +++ b/firmware/export/config-h120.h | |||
@@ -41,7 +41,7 @@ | |||
41 | #define CODEC_SIZE 0x80000 | 41 | #define CODEC_SIZE 0x80000 |
42 | 42 | ||
43 | /* The number of bytes reserved for loadable plugins */ | 43 | /* The number of bytes reserved for loadable plugins */ |
44 | #define PLUGIN_BUFFER_SIZE 0xC0000 | 44 | #define PLUGIN_BUFFER_SIZE 0x80000 |
45 | 45 | ||
46 | #define CONFIG_TUNER TEA5767 | 46 | #define CONFIG_TUNER TEA5767 |
47 | #define CONFIG_TUNER_XTAL 32768 | 47 | #define CONFIG_TUNER_XTAL 32768 |
diff --git a/firmware/export/config-h300.h b/firmware/export/config-h300.h index 2698d12098..806ae0a079 100644 --- a/firmware/export/config-h300.h +++ b/firmware/export/config-h300.h | |||
@@ -46,7 +46,7 @@ | |||
46 | #define CODEC_SIZE 0x80000 | 46 | #define CODEC_SIZE 0x80000 |
47 | 47 | ||
48 | /* The number of bytes reserved for loadable plugins */ | 48 | /* The number of bytes reserved for loadable plugins */ |
49 | #define PLUGIN_BUFFER_SIZE 0xC0000 | 49 | #define PLUGIN_BUFFER_SIZE 0x80000 |
50 | 50 | ||
51 | #define CONFIG_TUNER TEA5767 | 51 | #define CONFIG_TUNER TEA5767 |
52 | #define CONFIG_TUNER_XTAL 32768 | 52 | #define CONFIG_TUNER_XTAL 32768 |
diff --git a/firmware/export/config-iaudiox5.h b/firmware/export/config-iaudiox5.h index a06d22b3c1..ac3073428b 100644 --- a/firmware/export/config-iaudiox5.h +++ b/firmware/export/config-iaudiox5.h | |||
@@ -38,7 +38,7 @@ | |||
38 | #define CODEC_SIZE 0x40000 | 38 | #define CODEC_SIZE 0x40000 |
39 | 39 | ||
40 | /* The number of bytes reserved for loadable plugins */ | 40 | /* The number of bytes reserved for loadable plugins */ |
41 | #define PLUGIN_BUFFER_SIZE 0xC0000 | 41 | #define PLUGIN_BUFFER_SIZE 0x80000 |
42 | 42 | ||
43 | #ifndef SIMULATOR | 43 | #ifndef SIMULATOR |
44 | 44 | ||
diff --git a/firmware/export/config-ipodcolor.h b/firmware/export/config-ipodcolor.h index b88c9bc7a4..b413b8681c 100644 --- a/firmware/export/config-ipodcolor.h +++ b/firmware/export/config-ipodcolor.h | |||
@@ -38,7 +38,7 @@ | |||
38 | #define CODEC_SIZE 0x80000 | 38 | #define CODEC_SIZE 0x80000 |
39 | 39 | ||
40 | /* The number of bytes reserved for loadable plugins */ | 40 | /* The number of bytes reserved for loadable plugins */ |
41 | #define PLUGIN_BUFFER_SIZE 0xC0000 | 41 | #define PLUGIN_BUFFER_SIZE 0x80000 |
42 | 42 | ||
43 | /* Define this if you have the WM8975 audio codec */ | 43 | /* Define this if you have the WM8975 audio codec */ |
44 | #define HAVE_WM8975 | 44 | #define HAVE_WM8975 |
diff --git a/firmware/export/config-ipodnano.h b/firmware/export/config-ipodnano.h index 207aa18fa2..728c83ef9f 100644 --- a/firmware/export/config-ipodnano.h +++ b/firmware/export/config-ipodnano.h | |||
@@ -38,7 +38,7 @@ | |||
38 | #define CODEC_SIZE 0x80000 | 38 | #define CODEC_SIZE 0x80000 |
39 | 39 | ||
40 | /* The number of bytes reserved for loadable plugins */ | 40 | /* The number of bytes reserved for loadable plugins */ |
41 | #define PLUGIN_BUFFER_SIZE 0xC0000 | 41 | #define PLUGIN_BUFFER_SIZE 0x80000 |
42 | 42 | ||
43 | /* Define this if you have the WM8975 audio codec */ | 43 | /* Define this if you have the WM8975 audio codec */ |
44 | #define HAVE_WM8975 | 44 | #define HAVE_WM8975 |
diff --git a/firmware/export/config-ipodvideo.h b/firmware/export/config-ipodvideo.h index d6d9bbc92f..0e6dc153bb 100644 --- a/firmware/export/config-ipodvideo.h +++ b/firmware/export/config-ipodvideo.h | |||
@@ -38,7 +38,7 @@ | |||
38 | #define CODEC_SIZE 0x80000 | 38 | #define CODEC_SIZE 0x80000 |
39 | 39 | ||
40 | /* The number of bytes reserved for loadable plugins */ | 40 | /* The number of bytes reserved for loadable plugins */ |
41 | #define PLUGIN_BUFFER_SIZE 0xC0000 | 41 | #define PLUGIN_BUFFER_SIZE 0x80000 |
42 | 42 | ||
43 | /* Define this if you have the WM8975 audio codec */ | 43 | /* Define this if you have the WM8975 audio codec */ |
44 | #define HAVE_WM8975 | 44 | #define HAVE_WM8975 |
diff --git a/uisimulator/common/io.c b/uisimulator/common/io.c index 1871b29395..68eb8933a5 100644 --- a/uisimulator/common/io.c +++ b/uisimulator/common/io.c | |||
@@ -306,20 +306,20 @@ int sim_fsync(int fd) | |||
306 | void *sim_codec_load_ram(char* codecptr, int size, | 306 | void *sim_codec_load_ram(char* codecptr, int size, |
307 | void* ptr2, int bufwrap, int *pd_fd) | 307 | void* ptr2, int bufwrap, int *pd_fd) |
308 | { | 308 | { |
309 | void *pd; | 309 | void *pd, *hdr; |
310 | char *path = "archos/_temp_codec.dll"; | 310 | const char *path = "archos/_temp_codec.dll"; |
311 | int (*codec_start)(void * api); | ||
312 | int fd; | 311 | int fd; |
313 | int copy_n; | 312 | int copy_n; |
314 | #ifdef WIN32 | 313 | #ifdef WIN32 |
315 | char buf[256]; | 314 | char buf[256]; |
316 | #endif | 315 | #endif |
317 | 316 | ||
317 | *pd_fd = 0; | ||
318 | |||
318 | /* We have to create the dynamic link library file from ram | 319 | /* We have to create the dynamic link library file from ram |
319 | * so we could simulate the codec loading. | 320 | so we could simulate the codec loading. */ |
320 | */ | 321 | |
321 | *pd_fd = -1; | 322 | fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, S_IRWXU); |
322 | fd = open(path, O_WRONLY | O_CREAT, S_IRWXU); | ||
323 | if (fd < 0) { | 323 | if (fd < 0) { |
324 | DEBUGF("failed to open for write: %s\n", path); | 324 | DEBUGF("failed to open for write: %s\n", path); |
325 | return NULL; | 325 | return NULL; |
@@ -341,7 +341,7 @@ void *sim_codec_load_ram(char* codecptr, int size, | |||
341 | } | 341 | } |
342 | } | 342 | } |
343 | close(fd); | 343 | close(fd); |
344 | 344 | ||
345 | /* Now load the library. */ | 345 | /* Now load the library. */ |
346 | pd = dlopen(path, RTLD_NOW); | 346 | pd = dlopen(path, RTLD_NOW); |
347 | if (!pd) { | 347 | if (!pd) { |
@@ -357,17 +357,12 @@ void *sim_codec_load_ram(char* codecptr, int size, | |||
357 | return NULL; | 357 | return NULL; |
358 | } | 358 | } |
359 | 359 | ||
360 | codec_start = dlsym(pd, "codec_start"); | 360 | hdr = dlsym(pd, "__header"); |
361 | if (!codec_start) { | 361 | if (!hdr) |
362 | codec_start = dlsym(pd, "_codec_start"); | 362 | hdr = dlsym(pd, "___header"); |
363 | if (!codec_start) { | ||
364 | dlclose(pd); | ||
365 | return NULL; | ||
366 | } | ||
367 | } | ||
368 | 363 | ||
369 | *pd_fd = (int)pd; | 364 | *pd_fd = (int)pd; |
370 | return codec_start; | 365 | return hdr; /* maybe NULL if symbol not present */ |
371 | } | 366 | } |
372 | 367 | ||
373 | void sim_codec_close(int pd) | 368 | void sim_codec_close(int pd) |