FreeCalypso > hg > tcs211-l1-reconst
comparison g23m/condat/ms/src/mfw/mfw_mp3test.c @ 0:509db1a7b7b8
initial import: leo2moko-r1
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Mon, 01 Jun 2015 03:24:05 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:509db1a7b7b8 |
---|---|
1 /* | |
2 +--------------------------------------------------------------------+ | |
3 | PROJECT: MMI-Framework (8417) $Workfile:: mfw_mp3.c $| | |
4 | $Author:: NDH $Revision:: 1 $| | |
5 | CREATED: 21.05.04 $Modtime:: 21.05.04 14:58 $| | |
6 | STATE : code | | |
7 +--------------------------------------------------------------------+ | |
8 | |
9 MODULE : MFW_MP3 | |
10 | |
11 PURPOSE : This module contains Audio Interface functions. | |
12 | |
13 HISTORY : | |
14 Nov 16,2005 REF: DR OMAPS00049192 x0039928 | |
15 Bug:MP3: The screen is not refreshed after the mp3 file completes playing | |
16 Fix: The AUDIO_OK event recieved after mp3 file play completes is now handled | |
17 in mfw_mp3_test_start_cb() | |
18 | |
19 Nov 14, 2005 REF: OMAPS00044445 xdeepadh | |
20 Description: Implementation of Test Menu for AAC | |
21 Solution: The existing MP3 test Application has been enhanced to support the AAC file testing. | |
22 The interfaces have been made generic to support both MP3 and AAC files. | |
23 | |
24 Nov 24,2005 REF: DR OMAPS00049192 x0039928 | |
25 Bug:MP3: The screen is not refreshed after the mp3 file completes playing | |
26 Soln: A variable mfw_mp3_playstate is added to maintain the mfw play state. | |
27 | |
28 Nov 16,2005 REF: DR OMAPS00049192 x0039928 | |
29 Bug:MP3: The screen is not refreshed after the mp3 file completes playing | |
30 Fix: The AUDIO_OK event recieved after mp3 file play completes is now handled | |
31 in mfw_mp3_test_start_cb() | |
32 | |
33 Aug 05, 2005 xdeepadh | |
34 Description: Configuring the audio path for midi | |
35 | |
36 | |
37 Jul 18, 2005 REF: SPR 31695 xdeepadh | |
38 Bug:Problems with MP3 test application | |
39 Fix:The window handling of MP3 Test Application has been done properly. | |
40 | |
41 Apr 06, 2005 REF: ENH 30011 xdeepadh | |
42 Description: Replacing the Test Application compilation flags with new flags. | |
43 Solution: Removed the Condition to call mp3 APIs, if L1_MP3 flag is enabled. | |
44 This file will be compiled only if L1_Mp3 flag is enabled. | |
45 */ | |
46 | |
47 | |
48 /* | |
49 ** Include Files | |
50 */ | |
51 | |
52 #define ENTITY_MFW | |
53 | |
54 /* includes */ | |
55 #include <string.h> | |
56 | |
57 #include "typedefs.h" | |
58 #include "rv_swe.h" | |
59 #include "l1sw.cfg" | |
60 | |
61 #include "rvm/rvm_gen.h" /* Generic RVM types and functions. */ | |
62 #include "rvf/rvf_pool_size.h" /* Stack & Memory Bank sizes definitions */ | |
63 #include "mfw_mfw.h" | |
64 #include "mfw_mp3test.h" | |
65 #include "mfw_sys.h" //Added for Trace functions. Jul 18, 2005 REF: SPR 31695 xdeepadh | |
66 #include "Audio/audio_api.h" | |
67 | |
68 #include "ffs/ffs_api.h" | |
69 | |
70 /*Local defines*/ | |
71 | |
72 //define maximum number of MP3 files being saved | |
73 #define PLAYER_MAX_FILES 5 | |
74 #define PLAYER_DIR "/mmi/mp3" | |
75 | |
76 /* | |
77 ** Local Variable Definitions | |
78 */ | |
79 | |
80 static T_RV_RETURN_PATH audio_player_return_path; | |
81 char* INPUT_FILES_STRING[PLAYER_MAX_FILES]; | |
82 int NUM_INPUT_FILES; | |
83 | |
84 T_AUDIO_MP3_PARAMETER mp3_parameter; | |
85 #ifdef FF_MMI_TEST_AAC | |
86 T_AUDIO_AAC_PARAMETER aac_parameter; | |
87 #endif | |
88 | |
89 #ifdef FF_MMI_AUDIO_PROFILE | |
90 //Flag to indicate whether audio media is being played. | |
91 extern UBYTE mfwAudPlay; | |
92 #endif | |
93 | |
94 //Nov 16,2005 REF: DR OMAPS00049192 x0039928 | |
95 MMI_RETURN_PATH mmi_audio_player_return_path; | |
96 | |
97 //Nov 24,2005 REF: DR OMAPS00049192 x0039928 | |
98 // Declare a variable to maintain the mp3 play state | |
99 int mfw_mp3_playstate = FALSE; | |
100 | |
101 char* inputFileName; // input file | |
102 char tempFilePath[AUDIO_MP3_PATH_NAME_MAX_SIZE]; | |
103 int audio_player_currently_playing_idx = -1; //index of file to play | |
104 UBYTE IsMP3On; //Variable to check the selected file | |
105 | |
106 /* | |
107 Function Prototypes | |
108 */ | |
109 static void mfw_audio_player_configure_callback_fn(void (*callback_fn)(void *)); | |
110 | |
111 | |
112 /* | |
113 ** Public function Definitions | |
114 */ | |
115 /******************************************************************************* | |
116 | |
117 $Function: mfw_audio_player_populate_files | |
118 | |
119 $Description:This function is called in order to retrieve file names from | |
120 Flash and save them in a table | |
121 | |
122 $Returns: Status | |
123 | |
124 $Arguments: filenames: table to save file names in | |
125 max_files_count:number of files in the list to be filled . | |
126 | |
127 *******************************************************************************/ | |
128 int mfw_audio_player_populate_files(char **file_names, int max_files_count) | |
129 { | |
130 T_FFS_FD fd = 0; | |
131 char dir_name_p[] = PLAYER_DIR; | |
132 T_FFS_DIR dir = {0}; | |
133 char dest_name_p[100] = ""; | |
134 int i, files_count = 0; | |
135 char *fileExt; | |
136 | |
137 if (ffs_opendir (dir_name_p, &dir) <= 0) | |
138 { | |
139 files_count = 0; | |
140 } | |
141 | |
142 //read maximum of 5 file names | |
143 for (i = 0; ffs_readdir (&dir, dest_name_p, 100) > 0x0; i++) | |
144 { | |
145 (file_names[files_count]) = (char*)mfwAlloc(strlen(dest_name_p) + 1); | |
146 | |
147 if(file_names[files_count] != NULL) | |
148 { | |
149 // Jul 18, 2005 REF: SPR 31695 xdeepadh | |
150 //retrieve file extension | |
151 fileExt =(char*) mfw_audio_player_GetExtension(dest_name_p); | |
152 //Store only mp3 and aac file names in array | |
153 if ( strcmp(fileExt, "mp3")== 0 ) | |
154 { | |
155 strcpy (file_names[files_count], dest_name_p); | |
156 files_count++; | |
157 } | |
158 #ifdef FF_MMI_TEST_AAC | |
159 if ( strcmp(fileExt, "aac") == 0) | |
160 { | |
161 strcpy (file_names[files_count], dest_name_p); | |
162 files_count++; | |
163 } | |
164 #endif | |
165 if(files_count >= max_files_count) | |
166 break; | |
167 } | |
168 else | |
169 { | |
170 //files_count = 0; | |
171 } | |
172 | |
173 } | |
174 return files_count; | |
175 } | |
176 | |
177 | |
178 /******************************************************************************* | |
179 | |
180 $Function: mfw_audio_player_init | |
181 | |
182 $Description:Populate the Player array | |
183 | |
184 $Returns: Status | |
185 | |
186 $Arguments: None | |
187 | |
188 *******************************************************************************/ | |
189 void mfw_audio_player_init(void) | |
190 { | |
191 NUM_INPUT_FILES = mfw_audio_player_populate_files(INPUT_FILES_STRING, PLAYER_MAX_FILES); | |
192 mp3_parameter.mono_stereo = AUDIO_MP3_MONO; | |
193 #ifdef FF_MMI_TEST_AAC | |
194 aac_parameter.mono_stereo= AUDIO_AAC_MONO; | |
195 #endif | |
196 } | |
197 | |
198 /******************************************************************************* | |
199 | |
200 $Function: mfw_audio_player_set_channel_mono | |
201 | |
202 $Description:set channel to mono | |
203 | |
204 $Returns: Status | |
205 | |
206 $Arguments: None | |
207 | |
208 *******************************************************************************/ | |
209 SHORT mfw_audio_player_set_channel_mono(void) | |
210 { | |
211 TRACE_FUNCTION("mfw_audio_player_set_channel_mono"); | |
212 | |
213 switch(IsMP3On) | |
214 { | |
215 case MFW_PLAYER_MP3: | |
216 TRACE_EVENT("MP3"); | |
217 mp3_parameter.mono_stereo = AUDIO_MP3_MONO; | |
218 break; | |
219 | |
220 #ifdef FF_MMI_TEST_AAC | |
221 case MFW_PLAYER_AAC: | |
222 TRACE_EVENT("AAC"); | |
223 aac_parameter.mono_stereo= AUDIO_AAC_MONO; | |
224 break; | |
225 #endif | |
226 default: | |
227 break; | |
228 } | |
229 | |
230 return MFW_PLAYER_TEST_OK; | |
231 } | |
232 | |
233 | |
234 /******************************************************************************* | |
235 | |
236 $Function: mfw_audio_player_set_channel_stereo | |
237 | |
238 $Description:set channel to stereo | |
239 | |
240 $Returns: Status | |
241 | |
242 $Arguments: None | |
243 | |
244 *******************************************************************************/ | |
245 SHORT mfw_audio_player_set_channel_stereo(void) | |
246 { | |
247 TRACE_FUNCTION("mfw_audio_player_set_channel_stereo"); | |
248 | |
249 switch(IsMP3On) | |
250 { | |
251 case MFW_PLAYER_MP3: | |
252 TRACE_EVENT("MP3"); | |
253 mp3_parameter.mono_stereo = AUDIO_MP3_STEREO; | |
254 break; | |
255 | |
256 #ifdef FF_MMI_TEST_AAC | |
257 case MFW_PLAYER_AAC: | |
258 TRACE_EVENT("AAC"); | |
259 aac_parameter.mono_stereo= AUDIO_AAC_STEREO; | |
260 break; | |
261 #endif | |
262 default: | |
263 break; | |
264 } | |
265 | |
266 return MFW_PLAYER_TEST_OK; | |
267 } | |
268 | |
269 | |
270 | |
271 | |
272 /******************************************************************************* | |
273 | |
274 $Function: mfw_audio_player_mp3_start_cb | |
275 | |
276 $Description:callback function for starting mp3 file | |
277 | |
278 $Returns: None | |
279 | |
280 $Arguments: parameter: callback parameter | |
281 | |
282 *******************************************************************************/ | |
283 static void mfw_audio_player_mp3_start_cb (void *parameter) | |
284 { | |
285 //Nov 16,2005 REF: DR OMAPS00049192 x0039928 | |
286 T_AUDIO_MP3_STATUS *param = (T_AUDIO_MP3_STATUS *)parameter; | |
287 SHORT event = param->status; | |
288 UINT32 msg = param->os_hdr.msg_id; | |
289 switch(event) | |
290 { | |
291 // MMI callback function is called to destroy the focus window when AUDIO_OK | |
292 // event is recieved for mp3 file play complete | |
293 case AUDIO_OK: | |
294 if((mfw_mp3_playstate == TRUE) && (msg == AUDIO_MP3_STATUS_MSG)) | |
295 (* mmi_audio_player_return_path.callback)(mmi_audio_player_return_path.focus_win); | |
296 break; | |
297 default: | |
298 break; | |
299 } | |
300 } | |
301 | |
302 | |
303 /******************************************************************************* | |
304 | |
305 $Function: mfw_audio_player_aac_start_cb | |
306 | |
307 $Description:callback function for starting aac file | |
308 | |
309 $Returns: None | |
310 | |
311 $Arguments: parameter: callback parameter | |
312 | |
313 *******************************************************************************/ | |
314 #ifdef FF_MMI_TEST_AAC | |
315 static void mfw_audio_player_aac_start_cb(void *parameter) | |
316 { | |
317 //Nov 16,2005 REF: DR OMAPS00049192 x0039928 | |
318 T_AUDIO_AAC_STATUS *param = (T_AUDIO_AAC_STATUS *)parameter; | |
319 SHORT event = param->status; | |
320 UINT32 msg = param->os_hdr.msg_id; | |
321 switch(event) | |
322 { | |
323 // MMI callback function is called to destroy the focus window when AUDIO_OK | |
324 // event is recieved for mp3 file play complete | |
325 case AUDIO_OK: | |
326 if((mfw_mp3_playstate == TRUE) &&(msg == AUDIO_AAC_STATUS_MSG)) | |
327 (* mmi_audio_player_return_path.callback)(mmi_audio_player_return_path.focus_win); | |
328 break; | |
329 default: | |
330 break; | |
331 } | |
332 } | |
333 #endif | |
334 | |
335 /******************************************************************************* | |
336 | |
337 $Function: mfw_audio_player_configure_callback_fn | |
338 | |
339 $Description:Configure the Riviera Return Path | |
340 | |
341 $Returns:None | |
342 | |
343 $Arguments: callback function | |
344 | |
345 *******************************************************************************/ | |
346 | |
347 static void mfw_audio_player_configure_callback_fn(void (*callback_fn)(void *)) | |
348 { | |
349 audio_player_return_path.addr_id = 0; | |
350 audio_player_return_path.callback_func = callback_fn; | |
351 | |
352 return; | |
353 } | |
354 | |
355 | |
356 | |
357 /******************************************************************************* | |
358 | |
359 $Function: mfw_audio_player_play | |
360 | |
361 $Description:play the file which was loaded | |
362 When no file was manually selected, play file located at first index by default | |
363 | |
364 $Returns:Status | |
365 | |
366 $Arguments: None | |
367 | |
368 *******************************************************************************/ | |
369 SHORT mfw_audio_player_play(void) | |
370 { | |
371 | |
372 SHORT mfw_audio_player_retVal; | |
373 TRACE_FUNCTION("mfw_audio_player_play"); | |
374 | |
375 //Aug 05, 2005 xdeepadh | |
376 #ifdef FF_MMI_AUDIO_PROFILE | |
377 //Configure the audio path to current Audio device. | |
378 mfw_set_stereo_path(mfw_get_current_audioDevice()); | |
379 mfwAudPlay = TRUE; //File is playing | |
380 #endif | |
381 //Nov 24,2005 REF: DR OMAPS00049192 x0039928 | |
382 // Set mp3 play state to True | |
383 mfw_mp3_playstate = TRUE; | |
384 | |
385 | |
386 //Based on the file selected, call the respective APIS to start playing | |
387 switch(IsMP3On) | |
388 { | |
389 case MFW_PLAYER_MP3 : | |
390 sprintf(tempFilePath,"%s/%s",PLAYER_DIR, inputFileName); | |
391 strcpy(mp3_parameter.mp3_name, tempFilePath); | |
392 mfw_audio_player_configure_callback_fn(mfw_audio_player_mp3_start_cb); | |
393 | |
394 if (audio_mp3_start(&mp3_parameter, audio_player_return_path)) | |
395 { | |
396 mfw_audio_player_retVal = MFW_PLAYER_TEST_OK; | |
397 } | |
398 else | |
399 { | |
400 mfw_audio_player_retVal = MFW_PLAYER_TEST_RIVIERA_FAILED; | |
401 } | |
402 break; | |
403 | |
404 #ifdef FF_MMI_TEST_AAC | |
405 | |
406 case MFW_PLAYER_AAC: | |
407 sprintf(tempFilePath,"%s/%s",PLAYER_DIR, inputFileName); | |
408 strcpy(aac_parameter.aac_name, tempFilePath); | |
409 mfw_audio_player_configure_callback_fn(mfw_audio_player_aac_start_cb); | |
410 | |
411 if (audio_aac_start(&aac_parameter, audio_player_return_path)) | |
412 { | |
413 mfw_audio_player_retVal = MFW_PLAYER_TEST_OK; | |
414 } | |
415 else | |
416 { | |
417 mfw_audio_player_retVal = MFW_PLAYER_TEST_RIVIERA_FAILED; | |
418 } | |
419 break; | |
420 #endif | |
421 default: | |
422 break; | |
423 } | |
424 return mfw_audio_player_retVal; | |
425 } | |
426 | |
427 | |
428 | |
429 /******************************************************************************* | |
430 | |
431 $Function: mfw_audio_player_stop | |
432 | |
433 $Description:stop the file which was played | |
434 | |
435 $Returns:Status | |
436 | |
437 $Arguments: None | |
438 | |
439 *******************************************************************************/ | |
440 SHORT mfw_audio_player_stop(void) | |
441 { | |
442 | |
443 SHORT mfw_audio_player_retVal; | |
444 UINT32 size_played; | |
445 // Aug 05, 2005 xdeepadh | |
446 #ifdef FF_MMI_AUDIO_PROFILE | |
447 //configure the audio to voice path | |
448 mfwAudPlay = FALSE; | |
449 mfw_unset_stereo_path(mfw_get_current_audioDevice()); | |
450 #endif | |
451 TRACE_FUNCTION("mfw_audio_player_stop"); | |
452 // Nov 24, 2005 REF : DR OMAPS00049192 x0039928 | |
453 // Set mp3 play state to false | |
454 mfw_mp3_playstate = FALSE; | |
455 | |
456 //Based on the file selected, call the respective APIS to stop playing | |
457 switch(IsMP3On) | |
458 { | |
459 case MFW_PLAYER_MP3 : | |
460 if (audio_mp3_stop(&size_played)) | |
461 { | |
462 mfw_audio_player_retVal = MFW_PLAYER_TEST_OK; | |
463 } | |
464 else | |
465 { | |
466 mfw_audio_player_retVal = MFW_PLAYER_TEST_RIVIERA_FAILED; | |
467 } | |
468 break; | |
469 | |
470 #ifdef FF_MMI_TEST_AAC | |
471 case MFW_PLAYER_AAC: | |
472 if(audio_aac_stop(&size_played)) | |
473 { | |
474 mfw_audio_player_retVal = MFW_PLAYER_TEST_OK; | |
475 } | |
476 else | |
477 { | |
478 mfw_audio_player_retVal = MFW_PLAYER_TEST_RIVIERA_FAILED; | |
479 } | |
480 break; | |
481 #endif | |
482 default: | |
483 break; | |
484 } | |
485 | |
486 return mfw_audio_player_retVal; | |
487 } | |
488 | |
489 /******************************************************************************* | |
490 | |
491 $Function: mfw_audio_player_pause | |
492 $Description:pause the file which was played | |
493 $Returns:Status | |
494 | |
495 $Arguments: None | |
496 | |
497 *******************************************************************************/ | |
498 SHORT mfw_audio_player_pause(void) | |
499 { | |
500 SHORT mfw_audio_player_retVal; | |
501 | |
502 TRACE_FUNCTION("mfw_audio_player_pause"); | |
503 //Based on the file selected, call the respective APIS to pause playing | |
504 switch(IsMP3On) | |
505 { | |
506 case MFW_PLAYER_MP3 : | |
507 if (audio_mp3_pause()) | |
508 { | |
509 mfw_audio_player_retVal = MFW_PLAYER_TEST_OK; | |
510 } | |
511 else | |
512 { | |
513 mfw_audio_player_retVal = MFW_PLAYER_TEST_RIVIERA_FAILED; | |
514 } | |
515 break; | |
516 | |
517 #ifdef FF_MMI_TEST_AAC | |
518 case MFW_PLAYER_AAC: | |
519 if (audio_aac_pause()) | |
520 { | |
521 mfw_audio_player_retVal = MFW_PLAYER_TEST_OK; | |
522 } | |
523 else | |
524 { | |
525 mfw_audio_player_retVal = MFW_PLAYER_TEST_RIVIERA_FAILED; | |
526 } | |
527 break; | |
528 #endif | |
529 default: | |
530 break; | |
531 } | |
532 return mfw_audio_player_retVal; | |
533 } | |
534 | |
535 | |
536 | |
537 /******************************************************************************* | |
538 | |
539 $Function: mfw_audio_player_resume | |
540 | |
541 $Description:resume the file which was played | |
542 $Returns:Status | |
543 | |
544 $Arguments: None | |
545 | |
546 *******************************************************************************/ | |
547 SHORT mfw_audio_player_resume(void) | |
548 { | |
549 SHORT mfw_audio_player_retVal; | |
550 | |
551 TRACE_FUNCTION("mfw_audio_player_resume"); | |
552 //Based on the file selected, call the respective APIS to resume playing | |
553 switch(IsMP3On) | |
554 { | |
555 case MFW_PLAYER_MP3 : | |
556 if (audio_mp3_resume()) | |
557 { | |
558 mfw_audio_player_retVal = MFW_PLAYER_TEST_OK; | |
559 } | |
560 else | |
561 { | |
562 mfw_audio_player_retVal = MFW_PLAYER_TEST_RIVIERA_FAILED; | |
563 } | |
564 break; | |
565 | |
566 #ifdef FF_MMI_TEST_AAC | |
567 case MFW_PLAYER_AAC: | |
568 if (audio_aac_resume()) | |
569 { | |
570 mfw_audio_player_retVal = MFW_PLAYER_TEST_OK; | |
571 } | |
572 else | |
573 { | |
574 mfw_audio_player_retVal = MFW_PLAYER_TEST_RIVIERA_FAILED; | |
575 } | |
576 break; | |
577 #endif | |
578 default: | |
579 break; | |
580 } | |
581 return mfw_audio_player_retVal; | |
582 } | |
583 | |
584 /******************************************************************************* | |
585 | |
586 $Function: mfw_audio_player_return_file_number | |
587 | |
588 $Description:resume the file which was played | |
589 $Returns:Status | |
590 | |
591 $Arguments: None | |
592 | |
593 *******************************************************************************/ | |
594 int mfw_audio_player_return_file_number(void) | |
595 { | |
596 return NUM_INPUT_FILES; | |
597 } | |
598 | |
599 /******************************************************************************* | |
600 | |
601 $Function: mfw_audio_player_return_file_name | |
602 | |
603 $Description: return file name given an input index | |
604 $Returns:file name of the selected index | |
605 | |
606 $Arguments: index | |
607 | |
608 *******************************************************************************/ | |
609 char* mfw_audio_player_return_file_name(int index) | |
610 { | |
611 return INPUT_FILES_STRING[index]; | |
612 } | |
613 | |
614 | |
615 /******************************************************************************* | |
616 | |
617 $Function: mfw_audio_player_save_selected_file_idx | |
618 | |
619 $Description:return file name given an input index | |
620 $Returns:status | |
621 | |
622 $Arguments: index | |
623 | |
624 *******************************************************************************/ | |
625 | |
626 SHORT mfw_audio_player_save_selected_file_idx(int index) | |
627 { | |
628 //default index is set to 0 and inputFileName to NULL at mp3 mfw initialisation | |
629 //save currently selected file to control block | |
630 audio_player_currently_playing_idx = index; | |
631 inputFileName = INPUT_FILES_STRING[index]; | |
632 return MFW_PLAYER_TEST_OK; | |
633 | |
634 } | |
635 // Jul 18, 2005 REF: SPR 31695 xdeepadh | |
636 | |
637 /******************************************************************************* | |
638 | |
639 $Function: mfw_audio_player_GetExtension | |
640 | |
641 $Description: public function to retrieve the extension of a file | |
642 | |
643 $Returns:Extention of the filename | |
644 | |
645 $Arguments: scr- Filename | |
646 | |
647 *******************************************************************************/ | |
648 char *mfw_audio_player_GetExtension(char *src) | |
649 { | |
650 int i; | |
651 TRACE_FUNCTION("mfw_audio_player_GetExtension"); | |
652 for(i = 0; i < strlen(src); i++){ | |
653 if(src[i] == '.'){ | |
654 return (src+i+1); | |
655 } | |
656 } | |
657 return (src+i); | |
658 } | |
659 | |
660 |