void player_init(void) { dac_init(); wav_init(buf, sizeof(buf)); mp3_init(buf, sizeof(buf)); aac_init(buf, sizeof(buf)); songlist_build(&songlist); songlist_sort(&songlist); for (int i = 0; i < songlist.size; i++) { read_song_info_for_song(&(songlist.list[i]), &songinfo); iprintf("%s\n", songinfo.artist); } }
static void find_sound_type (struct sound *s) { if (!wav_init (s) && !au_init (s)) error ("Unknown sound format"); }
int main(int argc, char **argv) { char *prog, *optstr, *usagestr; int c, background, unit, active; char base[PATH_MAX], path[PATH_MAX]; unsigned int mode, hdr, xrun, rate, join, mmc, vol; unsigned int hold, autovol, bufsz, round; const char *str; struct aparams ppar, rpar; struct dev *d, *dnext; struct listen *l; struct wav *w; /* * global options defaults */ hdr = HDR_AUTO; xrun = XRUN_IGNORE; vol = MIDI_MAXCTL; join = 1; mmc = 0; hold = 0; autovol = 1; bufsz = 0; round = 0; unit = 0; background = 0; aparams_init(&ppar, 0, 1, DEFAULT_RATE); aparams_init(&rpar, 0, 1, DEFAULT_RATE); mode = MODE_MIDIMASK | MODE_PLAY | MODE_REC; #ifdef DEBUG atexit(dbg_flush); #endif setsig(); filelist_init(); prog = strrchr(argv[0], '/'); if (prog == NULL) prog = argv[0]; else prog++; if (strcmp(prog, PROG_AUCAT) == 0) { optstr = "a:b:c:C:de:f:h:i:j:lL:m:Mno:q:r:s:t:U:v:w:x:z:"; usagestr = aucat_usage; } else if (strcmp(prog, PROG_SNDIOD) == 0) { optstr = "a:b:c:C:de:f:j:L:m:Mq:r:s:t:U:v:w:x:z:"; usagestr = sndiod_usage; background = 1; hold = 0; } else { fprintf(stderr, "%s: can't determine program to run\n", prog); return 1; } while ((c = getopt(argc, argv, optstr)) != -1) { switch (c) { case 'd': #ifdef DEBUG if (debug_level < 4) debug_level++; #endif background = 0; break; case 'U': if (listen_list) errx(1, "-U must come before -L"); unit = strtonum(optarg, 0, MIDI_MAXCTL, &str); if (str) errx(1, "%s: unit number is %s", optarg, str); break; case 'L': listen_new_tcp(optarg, AUCAT_PORT + unit); break; case 'm': mode = opt_mode(); break; case 'h': hdr = opt_hdr(); break; case 'x': xrun = opt_xrun(); break; case 'j': join = opt_onoff(); break; case 't': mmc = opt_mmc(); break; case 'c': opt_ch(&ppar); break; case 'C': opt_ch(&rpar); break; case 'e': opt_enc(&ppar); aparams_copyenc(&rpar, &ppar); break; case 'r': rate = strtonum(optarg, RATE_MIN, RATE_MAX, &str); if (str) errx(1, "%s: rate is %s", optarg, str); ppar.rate = rpar.rate = rate; break; case 'v': vol = strtonum(optarg, 0, MIDI_MAXCTL, &str); if (str) errx(1, "%s: volume is %s", optarg, str); break; case 'i': d = mkdev(NULL, 0, bufsz, round, 1, autovol); w = wav_new_in(&wav_ops, d, mode & (MODE_PLAY | MODE_MIDIOUT), optarg, hdr, &ppar, xrun, vol, mmc, join); if (w == NULL) errx(1, "%s: couldn't create stream", optarg); dev_adjpar(d, w->mode, NULL, &w->hpar); break; case 'o': d = mkdev(NULL, 0, bufsz, round, 1, autovol); w = wav_new_out(&wav_ops, d, mode & (MODE_RECMASK | MODE_MIDIIN), optarg, hdr, &rpar, xrun, mmc, join); if (w == NULL) errx(1, "%s: couldn't create stream", optarg); dev_adjpar(d, w->mode, &w->hpar, NULL); break; case 's': if ((d = dev_list) == NULL) { d = mkdev(DEFAULT_DEV, 0, bufsz, round, hold, autovol); } mkopt(optarg, d, &rpar, &ppar, mode, vol, mmc, join); /* XXX: set device rate, if never set */ break; case 'q': d = mkdev(NULL, mode, bufsz, round, 1, autovol); if (!devctl_add(d, optarg, MODE_MIDIMASK)) errx(1, "%s: can't open port", optarg); d->reqmode |= MODE_MIDIMASK; break; case 'a': hold = opt_onoff(); break; case 'w': autovol = opt_onoff(); break; case 'b': bufsz = strtonum(optarg, 1, RATE_MAX * 5, &str); if (str) errx(1, "%s: buffer size is %s", optarg, str); break; case 'z': round = strtonum(optarg, 1, SHRT_MAX, &str); if (str) errx(1, "%s: block size is %s", optarg, str); break; case 'f': mkdev(optarg, 0, bufsz, round, hold, autovol); break; case 'n': mkdev("loopback", MODE_LOOP, bufsz, round, 1, autovol); break; case 'M': mkdev("midithru", MODE_THRU, 0, 0, hold, 0); break; case 'l': background = 1; break; default: fputs(usagestr, stderr); exit(1); } } argc -= optind; argv += optind; if (argc > 0) { fputs(usagestr, stderr); exit(1); } if (wav_list) { if (opt_list || listen_list) errx(1, "-io not allowed in server mode"); if ((d = dev_list) && d->next) errx(1, "only one device allowed in non-server mode"); if ((d->reqmode & MODE_THRU) && d->ctl_list == NULL) { if (!devctl_add(d, "default", MODE_MIDIMASK)) errx(1, "%s: can't open port", optarg); d->reqmode |= MODE_MIDIMASK; } } else { if (dev_list == NULL) mkdev(DEFAULT_DEV, 0, bufsz, round, hold, autovol); for (d = dev_list; d != NULL; d = d->next) { if (opt_byname("default", d->num)) continue; mkopt("default", d, &rpar, &ppar, mode, vol, mmc, join); } } if (opt_list) { getbasepath(base, sizeof(base)); snprintf(path, PATH_MAX, "%s/%s%u", base, AUCAT_PATH, unit); listen_new_un(path); if (geteuid() == 0) privdrop(); } for (w = wav_list; w != NULL; w = w->next) { if (!wav_init(w)) exit(1); } for (d = dev_list; d != NULL; d = d->next) { if (!dev_init(d)) exit(1); if (d->autostart && (d->mode & MODE_AUDIOMASK)) dev_mmcstart(d); } for (l = listen_list; l != NULL; l = l->next) { if (!listen_init(l)) exit(1); } if (background) { #ifdef DEBUG debug_level = 0; dbg_flush(); #endif if (daemon(0, 0) < 0) err(1, "daemon"); } /* * Loop, start audio. */ for (;;) { if (quit_flag) break; active = 0; for (d = dev_list; d != NULL; d = dnext) { dnext = d->next; if (!dev_run(d)) goto fatal; if (d->refcnt > 0) active = 1; } if (dev_list == NULL) break; if (!opt_list && !active) break; if (!file_poll()) break; } fatal: while (listen_list != NULL) file_close(&listen_list->file); /* * give a chance to drain */ for (d = dev_list; d != NULL; d = d->next) dev_drain(d); while (file_poll()) ; /* nothing */ while (dev_list) dev_del(dev_list); filelist_done(); if (opt_list) { if (rmdir(base) < 0 && errno != ENOTEMPTY && errno != EPERM) warn("rmdir(\"%s\")", base); } unsetsig(); return 0; }
void sco_demo_init(void){ // status #if SCO_DEMO_MODE == SCO_DEMO_MODE_SINE #ifdef HAVE_PORTAUDIO printf("SCO Demo: Sending sine wave, audio output via portaudio.\n"); #else printf("SCO Demo: Sending sine wave, hexdump received data.\n"); #endif #endif #if SCO_DEMO_MODE == SCO_DEMO_MODE_ASCII printf("SCO Demo: Sending ASCII blocks, print received data.\n"); #endif #if SCO_DEMO_MODE == SCO_DEMO_MODE_COUNTER printf("SCO Demo: Sending counter value, hexdump received data.\n"); #endif #if SCO_DEMO_MODE == SCO_DEMO_MODE_SINE #ifdef SCO_WAV_FILENAME wav_file = wav_init(SCO_WAV_FILENAME); const int sample_rate = 8000; const int num_samples = sample_rate * SCO_WAV_DURATION_IN_SECONDS; const int num_channels = 1; const int bytes_per_sample = 1; write_wav_header(wav_file, sample_rate, num_channels, num_samples, bytes_per_sample); num_samples_to_write = num_samples; #endif #endif #ifdef USE_PORTAUDIO int err; PaStreamParameters outputParameters; /* -- initialize PortAudio -- */ err = Pa_Initialize(); if( err != paNoError ) return; /* -- setup input and output -- */ outputParameters.device = Pa_GetDefaultOutputDevice(); /* default output device */ outputParameters.channelCount = NUM_CHANNELS; outputParameters.sampleFormat = PA_SAMPLE_TYPE; outputParameters.suggestedLatency = Pa_GetDeviceInfo( outputParameters.device )->defaultHighOutputLatency; outputParameters.hostApiSpecificStreamInfo = NULL; /* -- setup stream -- */ err = Pa_OpenStream( &stream, NULL, // &inputParameters, &outputParameters, SAMPLE_RATE, FRAMES_PER_BUFFER, paClipOff, /* we won't output out of range samples so don't bother clipping them */ NULL, /* no callback, use blocking API */ NULL ); /* no callback, so no callback userData */ if( err != paNoError ) return; /* -- start stream -- */ err = Pa_StartStream( stream ); if( err != paNoError ) return; #endif #if SCO_DEMO_MODE != SCO_DEMO_MODE_SINE hci_set_sco_voice_setting(0x03); // linear, unsigned, 8-bit, transparent #endif #if SCO_DEMO_MODE == SCO_DEMO_MODE_ASCII phase = 'a'; #endif }
int main(int argc, char *argv[]) { if(argc <= 1) return print_usage(argv[0]); main_argc = argc; main_argv = argv; if(!strcmp(argv[1], "-c")) { if(argc <= 3) return print_usage(argv[0]); char *net_addr = argv[2]; int net_port = atoi(argv[3]); printf("TODO: connect to \"%s\" port %i\n", net_addr, net_port); main_largstart = 4; boot_mode = 1; return 101; } else if(!strcmp(argv[1], "-s")) { if(argc <= 3) return print_usage(argv[0]); int net_port = atoi(argv[2]); mod_basedir = argv[3]; printf("TODO: run a server on port %i, mod \"%s\"\n", net_port, mod_basedir); main_largstart = 4; boot_mode = 3; } else if(!strcmp(argv[1], "-d")) { if(argc <= 3) return print_usage(argv[0]); int net_port = atoi(argv[2]); mod_basedir = argv[3]; printf("TODO: run a ded server on port %i, mod \"%s\"\n", net_port, mod_basedir); main_largstart = 4; boot_mode = 2; return 101; } else { return print_usage(argv[0]); } if(memcmp(mod_basedir,"pkg/",4)) { fprintf(stderr, "ERROR: package base dir must start with \"pkg/\"!\n"); return 109; } if(strlen(mod_basedir) < 5) { fprintf(stderr, "ERROR: package base dir can't actually be \"pkg/\"!\n"); return 109; } if((!(boot_mode & 1)) || !platform_init()) { if(!icelua_init()) { if(!net_init()) { if((!(boot_mode & 1)) || !video_init()) { if((!(boot_mode & 1)) || !wav_init()) { if((!(boot_mode & 1)) || !render_init(screen->w, screen->h)) { run_game(); if(boot_mode & 1) render_deinit(); } if(boot_mode & 1) wav_deinit(); } if(boot_mode & 1) video_deinit(); } net_deinit(); } icelua_deinit(); } if(boot_mode & 1) platform_deinit(); } return 0; }
int export_wav(struct play_s *play) { /* Export wav uses following pipeline: file -(uncompressed_buffer)-> reads data from stream file unpack -(uncompressed_buffer)-> decompresses lzo/quicklz packets wav -(rgb)-> write audio to file in wav format */ ps_bufferattr_t attr; ps_buffer_t uncompressed_buffer, compressed_buffer; wav_t wav; unpack_t unpack; int ret = 0; if ((ret = ps_bufferattr_init(&attr))) goto err; /* buffers */ if ((ret = ps_bufferattr_setsize(&attr, play->compressed_size))) goto err; if ((ret = ps_buffer_init(&compressed_buffer, &attr))) goto err; if ((ret = ps_bufferattr_setsize(&attr, play->uncompressed_size))) goto err; if ((ret = ps_buffer_init(&uncompressed_buffer, &attr))) goto err; if ((ret = ps_bufferattr_destroy(&attr))) goto err; /* init filters */ if ((ret = unpack_init(&unpack, &play->glc))) goto err; if ((ret = wav_init(&wav, &play->glc))) goto err; wav_set_interpolation(wav, play->interpolate); wav_set_filename(wav, play->export_filename_format); wav_set_stream_id(wav, play->export_audio_id); wav_set_silence_threshold(wav, play->silence_threshold); /* start the threads */ if ((ret = unpack_process_start(unpack, &compressed_buffer, &uncompressed_buffer))) goto err; if ((ret = wav_process_start(wav, &uncompressed_buffer))) goto err; if ((ret = file_read(play->file, &compressed_buffer))) goto err; /* wait and clean up */ if ((ret = wav_process_wait(wav))) goto err; if ((ret = unpack_process_wait(unpack))) goto err; unpack_destroy(unpack); wav_destroy(wav); ps_buffer_destroy(&compressed_buffer); ps_buffer_destroy(&uncompressed_buffer); return 0; err: if (!ret) { fprintf(stderr, "exporting wav failed: initializing filters failed\n"); return EAGAIN; } else { fprintf(stderr, "exporting wav failed: %s (%d)\n", strerror(ret), ret); return ret; } }
int music_init(void) { pspTime tm; cache_init(); xrRtcGetCurrentClockLocalTime(&tm); srand(tm.microseconds); xr_lock_init(&music_l); #ifdef ENABLE_MPC mpc_init(); #endif #ifdef ENABLE_WAV wav_init(); #endif #ifdef ENABLE_TTA tta_init(); #endif #ifdef ENABLE_APE ape_init(); #endif #ifdef ENABLE_MP3 mp3_init(); #endif #ifdef ENABLE_FLAC flac_init(); #endif #ifdef ENABLE_OGG ogg_init(); #endif #ifdef ENABLE_WMA wmadrv_init(); #endif #ifdef ENABLE_WAVPACK wv_init(); #endif #ifdef ENABLE_AT3 at3_init(); #endif #ifdef ENABLE_M4A m4a_init(); #endif #ifdef ENABLE_AAC aac_init(); #endif #ifdef ENABLE_AA3 aa3_init(); #endif memset(&g_list, 0, sizeof(g_list)); g_list.first_time = true; g_shuffle.first_time = true; stack_init(&played); g_music_thread = xrKernelCreateThread("Music Thread", music_thread, 0x12, 0x10000, 0, NULL); if (g_music_thread < 0) { return -EBUSY; } xrKernelStartThread(g_music_thread, 0, 0); return 0; }
int music_init(void) { u32 seed; cache_init(); seed = sctrlKernelRand(); if (seed == 0x8002013A) { pspTime tm; sceRtcGetCurrentClockLocalTime(&tm); seed = tm.microseconds; } srand(seed); xr_lock_init(&music_l); #ifdef ENABLE_MPC mpc_init(); #endif #ifdef ENABLE_WAV wav_init(); #endif #ifdef ENABLE_TTA tta_init(); #endif #ifdef ENABLE_APE ape_init(); #endif #ifdef ENABLE_MP3 mp3_init(); #endif #ifdef ENABLE_FLAC flac_init(); #endif #ifdef ENABLE_OGG ogg_init(); #endif #ifdef ENABLE_WMA wmadrv_init(); #endif #ifdef ENABLE_WAVPACK wv_init(); #endif #ifdef ENABLE_AT3 at3_init(); #endif #ifdef ENABLE_M4A m4a_init(); #endif #ifdef ENABLE_AAC aac_init(); #endif #ifdef ENABLE_AA3 aa3_init(); #endif musiclist_init(&g_music_list); memset(&g_list, 0, sizeof(g_list)); g_list.first_time = true; stack_init(&g_played); g_music_thread = sceKernelCreateThread("Music Thread", music_thread, 0x12, 0x10000, 0, NULL); if (g_music_thread < 0) { return -EBUSY; } sceKernelStartThread(g_music_thread, 0, 0); return 0; }
int main_dbghelper(int argc, char *argv[]) { main_argc = argc; main_argv = argv; #ifdef DEDI if(argc <= 1) return print_usage(argv[0]); #else if(argc <= 1) { //print_usage(argv[0]); net_port = 0; mod_basedir = "pkg/iceball/halp"; printf("Starting server on port %i, mod \"%s\"\n", net_port, mod_basedir); main_largstart = 4; boot_mode = 3; } else #endif #ifndef DEDI if((!strcmp(argv[1], "-h")) || (!strcmp(argv[1], "/?")) || (!strcmp(argv[1], "-?")) || (!strcmp(argv[1], "--help"))) { return print_usage(argv[0]); } else if(!strcmp(argv[1], "-c")) { if(argc <= 3) return print_usage(argv[0]); net_addr = argv[2]; net_port = atoi(argv[3]); printf("Connecting to \"%s\" port %i (ENet mode)\n", net_addr, net_port); mod_basedir = NULL; main_largstart = 4; boot_mode = 1 | 16; } else if(!strcmp(argv[1], "-C")) { if(argc <= 3) return print_usage(argv[0]); net_addr = argv[2]; net_port = atoi(argv[3]); printf("Connecting to \"%s\" port %i (TCP mode)\n", net_addr, net_port); mod_basedir = NULL; main_largstart = 4; boot_mode = 1; //return 101; } else if(!strcmp(argv[1], "-s")) { if(argc <= 3) return print_usage(argv[0]); net_port = atoi(argv[2]); mod_basedir = argv[3]; printf("Starting server on port %i, mod \"%s\" (local mode client)\n", net_port, mod_basedir); main_largstart = 4; boot_mode = 3; } else #endif if(!strcmp(argv[1], "-d")) { if(argc <= 3) return print_usage(argv[0]); net_port = atoi(argv[2]); mod_basedir = argv[3]; printf("Starting headless/dedicated server on port %i, mod \"%s\"\n", net_port, mod_basedir); main_largstart = 4; boot_mode = 2; //return 101; } else { return print_usage(argv[0]); } if(boot_mode & 2) { if(memcmp(mod_basedir,"pkg/",4)) { fprintf(stderr, "ERROR: package base dir must start with \"pkg/\"!\n"); return 109; } if(strlen(mod_basedir) < 5) { fprintf(stderr, "ERROR: package base dir can't actually be \"pkg/\"!\n"); return 109; } } #ifndef DEDI if((!(boot_mode & 1)) || !platform_init()) { #endif if(!net_init()) { if(!icelua_init()) { if((!(boot_mode & 2)) || !net_bind()) { #ifndef DEDI if((!(boot_mode & 1)) || !net_connect()) { if((!(boot_mode & 1)) || !video_init()) { if((!(boot_mode & 1)) || !wav_init()) { if((!(boot_mode & 1)) || !render_init(screen->w, screen->h)) { #endif run_game(); #ifndef DEDI if(boot_mode & 1) render_deinit(); } if(boot_mode & 1) wav_deinit(); } if(boot_mode & 1) video_deinit(); } if(boot_mode & 1) net_disconnect(); #endif } if(boot_mode & 2) net_unbind(); } icelua_deinit(); } net_deinit(); #ifndef DEDI } if(boot_mode & 1) platform_deinit(); } #endif return 0; }