//Setups up required aspects for the program to run. void Setup(){ SD_card_init(); init_mbr(); init_bs(); init_audio_codec(); IOWR(BUTTON_PIO_BASE, 2, 0xf); IOWR(BUTTON_PIO_BASE, 3, 0x0); alt_irq_register(BUTTON_PIO_IRQ, (void*)0, button_ISR); }
int audio_init_best_codec(struct dec_audio *d_audio, char *audio_decoders) { assert(!d_audio->ad_driver); audio_reset_decoding(d_audio); struct mp_decoder_entry *decoder = NULL; struct mp_decoder_list *list = audio_select_decoders(d_audio->header->codec, audio_decoders); mp_print_decoders(MSGT_DECAUDIO, MSGL_V, "Codec list:", list); for (int n = 0; n < list->num_entries; n++) { struct mp_decoder_entry *sel = &list->entries[n]; const struct ad_functions *driver = find_driver(sel->family); if (!driver) continue; mp_msg(MSGT_DECAUDIO, MSGL_V, "Opening audio decoder %s:%s\n", sel->family, sel->decoder); d_audio->ad_driver = driver; if (init_audio_codec(d_audio, sel->decoder)) { decoder = sel; break; } mp_msg(MSGT_DECAUDIO, MSGL_WARN, "Audio decoder init failed for " "%s:%s\n", sel->family, sel->decoder); } if (d_audio->ad_driver) { d_audio->decoder_desc = talloc_asprintf(d_audio, "%s [%s:%s]", decoder->desc, decoder->family, decoder->decoder); mp_msg(MSGT_DECAUDIO, MSGL_INFO, "Selected audio codec: %s\n", d_audio->decoder_desc); mp_msg(MSGT_DECAUDIO, MSGL_V, "AUDIO: %d Hz, %d ch, %s\n", d_audio->decoded.rate, d_audio->decoded.channels.num, af_fmt_to_str(d_audio->decoded.format)); mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_AUDIO_BITRATE=%d\nID_AUDIO_RATE=%d\n" "ID_AUDIO_NCH=%d\n", d_audio->i_bps * 8, d_audio->decoded.rate, d_audio->decoded.channels.num); } else { mp_msg(MSGT_DECAUDIO, MSGL_ERR, "Failed to initialize an audio decoder for codec '%s'.\n", d_audio->header->codec ? d_audio->header->codec : "<unknown>"); } talloc_free(list); return !!d_audio->ad_driver; }
int init_best_audio_codec(sh_audio_t *sh_audio, char *audio_decoders) { assert(!sh_audio->initialized); struct mp_decoder_entry *decoder = NULL; struct mp_decoder_list *list = mp_select_audio_decoders(sh_audio->gsh->codec, audio_decoders); mp_print_decoders(MSGT_DECAUDIO, MSGL_V, "Codec list:", list); for (int n = 0; n < list->num_entries; n++) { struct mp_decoder_entry *sel = &list->entries[n]; const struct ad_functions *driver = find_driver(sel->family); if (!driver) continue; mp_tmsg(MSGT_DECAUDIO, MSGL_V, "Opening audio decoder %s:%s\n", sel->family, sel->decoder); sh_audio->ad_driver = driver; if (init_audio_codec(sh_audio, sel->decoder)) { decoder = sel; break; } sh_audio->ad_driver = NULL; mp_tmsg(MSGT_DECAUDIO, MSGL_WARN, "Audio decoder init failed for " "%s:%s\n", sel->family, sel->decoder); } if (sh_audio->initialized) { sh_audio->gsh->decoder_desc = talloc_asprintf(NULL, "%s [%s:%s]", decoder->desc, decoder->family, decoder->decoder); mp_msg(MSGT_DECAUDIO, MSGL_INFO, "Selected audio codec: %s\n", sh_audio->gsh->decoder_desc); mp_msg(MSGT_DECAUDIO, MSGL_V, "AUDIO: %d Hz, %d ch, %s\n", sh_audio->samplerate, sh_audio->channels.num, af_fmt2str_short(sh_audio->sample_format)); mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_AUDIO_BITRATE=%d\nID_AUDIO_RATE=%d\n" "ID_AUDIO_NCH=%d\n", sh_audio->i_bps * 8, sh_audio->samplerate, sh_audio->channels.num); } else { mp_msg(MSGT_DECAUDIO, MSGL_ERR, "Failed to initialize an audio decoder for codec '%s'.\n", sh_audio->gsh->codec ? sh_audio->gsh->codec : "<unknown>"); } talloc_free(list); return sh_audio->initialized; }
int init_system(void){ if (SD_card_init() != 0) { perror("SD card initialization failed."); return(-1); } if (init_mbr() != 0) { perror("MBR initialization failed."); return(-1); } if (init_bs() != 0) { perror("Boot sector initialization failed."); return(-1); } init_audio_codec(); LCD_Init(); return(0); }
int audio_init_best_codec(struct dec_audio *d_audio, char *audio_decoders) { assert(!d_audio->ad_driver); audio_reset_decoding(d_audio); struct mp_decoder_entry *decoder = NULL; struct mp_decoder_list *list = audio_select_decoders(d_audio->header->codec, audio_decoders); mp_print_decoders(d_audio->log, MSGL_V, "Codec list:", list); for (int n = 0; n < list->num_entries; n++) { struct mp_decoder_entry *sel = &list->entries[n]; const struct ad_functions *driver = find_driver(sel->family); if (!driver) continue; MP_VERBOSE(d_audio, "Opening audio decoder %s:%s\n", sel->family, sel->decoder); d_audio->ad_driver = driver; if (init_audio_codec(d_audio, sel->decoder)) { decoder = sel; break; } MP_WARN(d_audio, "Audio decoder init failed for " "%s:%s\n", sel->family, sel->decoder); } if (d_audio->ad_driver) { d_audio->decoder_desc = talloc_asprintf(d_audio, "%s [%s:%s]", decoder->desc, decoder->family, decoder->decoder); MP_VERBOSE(d_audio, "Selected audio codec: %s\n", d_audio->decoder_desc); } else { MP_ERR(d_audio, "Failed to initialize an audio decoder for codec '%s'.\n", d_audio->header->codec ? d_audio->header->codec : "<unknown>"); } talloc_free(list); return !!d_audio->ad_driver; }
void ffmpeg_native_reader::open(char* c, int w, int h) { codec =c; width=w; height=h; audio_counter=new session_counter; audio_counter->curr_timestamp=0; audio_counter->last_timestamp=0; audio_counter->recieved_frame_count=0; audio_counter->time_interval=0; video_counter=new session_counter; video_counter->curr_timestamp=0; video_counter->last_timestamp=0; video_counter->recieved_frame_count=0; video_counter->time_interval=0; init_video_codec(); init_audio_codec(); }
OMX_S32 AudioDecoder::FindAudioCodec(sh_audio_t *sh_audio){ unsigned int orig_fourcc = sh_audio->wf ? sh_audio->wf->wFormatTag : 0; int force = 0; unsigned int i; sh_audio->codec = NULL; sh_audio->ad_driver = 0; // restore original fourcc: if (sh_audio->wf) sh_audio->wf->wFormatTag = i = orig_fourcc; while(1) { sh_audio->codec = find_audio_codec(sh_audio->format, sh_audio->wf ? (&i) : NULL, sh_audio->codec, force); if(!sh_audio->codec){ ALOGE("not find codec!"); return 0; } sh_audio->ad_driver = (ad_functions *)decFactor.CreateAudioDecoder(sh_audio->codec->drv); if(!sh_audio->ad_driver) continue; ALOGE("sh_audio->codec->drv=%s dll=%s",sh_audio->codec->drv,sh_audio->codec->dll); if (init_audio_codec(sh_audio)) { break; }else decFactor.~DecFactor(); } if (sh_audio->wf) sh_audio->wf->wFormatTag = i; return 1; }
static int init_audio(sh_audio_t *sh_audio, char *codecname, char *afm, int status, stringset_t *selected) { unsigned int orig_fourcc = sh_audio->wf ? sh_audio->wf->wFormatTag : 0; int force = 0; if (codecname && codecname[0] == '+') { codecname = &codecname[1]; force = 1; } sh_audio->codec = NULL; while (1) { const ad_functions_t *mpadec; int i; sh_audio->ad_driver = 0; // restore original fourcc: if (sh_audio->wf) sh_audio->wf->wFormatTag = i = orig_fourcc; if (!(sh_audio->codec = find_audio_codec(sh_audio->format, sh_audio->wf ? (&i) : NULL, sh_audio->codec, force))) break; if (sh_audio->wf) sh_audio->wf->wFormatTag = i; // ok we found one codec if (stringset_test(selected, sh_audio->codec->name)) continue; // already tried & failed if (codecname && strcmp(sh_audio->codec->name, codecname)) continue; // -ac if (afm && strcmp(sh_audio->codec->drv, afm)) continue; // afm doesn't match if (!force && sh_audio->codec->status < status) continue; // too unstable stringset_add(selected, sh_audio->codec->name); // tagging it // ok, it matches all rules, let's find the driver! for (i = 0; mpcodecs_ad_drivers[i] != NULL; i++) if (!strcmp(mpcodecs_ad_drivers[i]->info->short_name, sh_audio->codec->drv)) break; mpadec = mpcodecs_ad_drivers[i]; #ifdef CONFIG_DYNAMIC_PLUGINS if (!mpadec) { /* try to open shared decoder plugin */ int buf_len; char *buf; ad_functions_t *funcs_sym; ad_info_t *info_sym; buf_len = strlen(MPLAYER_LIBDIR) + strlen(sh_audio->codec->drv) + 16; buf = malloc(buf_len); if (!buf) break; snprintf(buf, buf_len, "%s/mplayer/ad_%s.so", MPLAYER_LIBDIR, sh_audio->codec->drv); mp_msg(MSGT_DECAUDIO, MSGL_DBG2, "Trying to open external plugin: %s\n", buf); sh_audio->dec_handle = dlopen(buf, RTLD_LAZY); if (!sh_audio->dec_handle) break; snprintf(buf, buf_len, "mpcodecs_ad_%s", sh_audio->codec->drv); funcs_sym = dlsym(sh_audio->dec_handle, buf); if (!funcs_sym || !funcs_sym->info || !funcs_sym->preinit || !funcs_sym->init || !funcs_sym->uninit || !funcs_sym->control || !funcs_sym->decode_audio) break; info_sym = funcs_sym->info; if (strcmp(info_sym->short_name, sh_audio->codec->drv)) break; free(buf); mpadec = funcs_sym; mp_msg(MSGT_DECAUDIO, MSGL_V, "Using external decoder plugin (%s/mplayer/ad_%s.so)!\n", MPLAYER_LIBDIR, sh_audio->codec->drv); } #endif if (!mpadec) { // driver not available (==compiled in) mp_tmsg(MSGT_DECAUDIO, MSGL_ERR, "Requested audio codec family [%s] (afm=%s) not available.\nEnable it at compilation.\n", sh_audio->codec->name, sh_audio->codec->drv); continue; } // it's available, let's try to init! // init() mp_tmsg(MSGT_DECAUDIO, MSGL_INFO, "Opening audio decoder: [%s] %s\n", mpadec->info->short_name, mpadec->info->name); sh_audio->ad_driver = mpadec; if (!init_audio_codec(sh_audio)) { mp_tmsg(MSGT_DECAUDIO, MSGL_WARN, "Could not open audio decoder %s.\n", mpadec->info->short_name); continue; // try next... } // Yeah! We got it! return 1; } return 0; }
int main() { //Initialize Functions SD_card_init(); init_mbr(); init_bs(); init_audio_codec(); //Setup Push Buttons init_button_pio(); // Initialize Variables bytePerCluster = BPB_BytsPerSec * BPB_SecPerClus; //play_music(0 , 1); //play_music(0 , 2); //play_music(0 , 3); //play_music(5 , 4); stop_flag = 1; file_number = 0; init_music(); delay_cnt = 0; delay_flag = 0; while(1){ if(stop_flag == 0){ if(edge_capture == 0x01){ //stop music stop_flag = 1; } else if(edge_capture == 0x02){ // play music delay_cnt = 0; delay_flag = 0; play_type = IORD(SWITCH_PIO_BASE, 0) & 0x07; LCD_Display(returnData.Name, play_type); play_music(play_type); } else if(edge_capture == 0x04){ printf("File Number is %d\n",file_number); init_music(); usleep(250000); } else if(edge_capture == 0x08){ if(file_number < 2 ) file_number = 0; else file_number -= 2; init_music(); } } } return 0; }