Example #1
0
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);
  }
}
Example #2
0
static void
find_sound_type (struct sound *s)
{
  if (!wav_init (s) && !au_init (s))
    error ("Unknown sound format");
}
Example #3
0
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;
}
Example #4
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
}
Example #5
0
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;
}
Example #6
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;
	}
}
Example #7
0
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;
}
Example #8
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;
}
Example #9
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;
}