コード例 #1
0
ファイル: libwavpack.cpp プロジェクト: sebastinas/WavPack
void
update_tag(ape_tag *tag, char *filename)
{
    WavpackContext *ctx;
    char error_buff [80];

    ctx = WavpackOpenFileInput (filename, error_buff, OPEN_TAGS | OPEN_EDIT_TAGS, 0);

    if (!ctx) {
        char text[256];

        sprintf(text, "File \"%s\" not found or is read protected!\n",
                filename);
        xmms_show_message("File-Error", (gchar *) text, "Ok", FALSE, NULL,
                          NULL);
        return;
    }

    if (strlen (tag->album))
        WavpackAppendTagItem (ctx, "Album", tag->album, strlen (tag->album));
    else
        WavpackDeleteTagItem (ctx, "Album");

    if (strlen (tag->artist))
        WavpackAppendTagItem (ctx, "Artist", tag->artist, strlen (tag->artist));
    else
        WavpackDeleteTagItem (ctx, "Artist");

    if (strlen (tag->comment))
        WavpackAppendTagItem (ctx, "Comment", tag->comment, strlen (tag->comment));
    else
        WavpackDeleteTagItem (ctx, "Comment");

    if (strlen (tag->genre))
        WavpackAppendTagItem (ctx, "Genre", tag->genre, strlen (tag->genre));
    else
        WavpackDeleteTagItem (ctx, "Genre");

    if (strlen (tag->title))
        WavpackAppendTagItem (ctx, "Title", tag->title, strlen (tag->title));
    else
        WavpackDeleteTagItem (ctx, "Title");

    if (strlen (tag->track))
        WavpackAppendTagItem (ctx, "Track", tag->track, strlen (tag->track));
    else
        WavpackDeleteTagItem (ctx, "Track");

    if (strlen (tag->year))
        WavpackAppendTagItem (ctx, "Year", tag->year, strlen (tag->year));
    else
        WavpackDeleteTagItem (ctx, "Year");

    if (!WavpackWriteTag (ctx)) {
        char text[256];

        sprintf(text, "Couldn't write tag to \"%s\"!\n",
                filename);
        xmms_show_message("File-Error", (gchar *) text, "Ok", FALSE, NULL,
                          NULL);
    }

    WavpackCloseFile (ctx);
}
コード例 #2
0
ファイル: libasap-xmms.c プロジェクト: Kinglions/modizer
static void asap_show_message(gchar *title, gchar *text)
{
	xmms_show_message(title, text, "Ok", FALSE, NULL, NULL);
}
コード例 #3
0
static gint playerout_open(AFormat fmt, gint rate, gint nch)
{
	gint pos;

	written = 0;
	afmt = fmt;
	sampleRate = rate;
	numChannels = nch;
	startTime = 0.0f;
	pausedTime = 0.0f;

	if (xmms_check_realtime_priority())
	{
		xmms_show_message("Error",
				  "You cannot use the Player Output plugin\n"
				    "when you're running in realtime mode.",
				  "Ok", FALSE, NULL, NULL);
		return 0;
	}

	/* do player server connection here */
	// Create a client object and connect to the server; the server must
	// be running on "localhost" at port 6665
	client = playerc_client_create(NULL, server_address, server_port);
	if (playerc_client_connect(client) != 0)
	{
		fprintf(stderr, "error: %s\n", playerc_error_str());
		client = NULL;
		return 0;
	}

	// Create a audio proxy susbscribe
	audio_proxy = playerc_audio_create(client, server_index);
	if (playerc_audio_subscribe(audio_proxy, PLAYERC_OPEN_MODE) != 0)
	{
		fprintf(stderr, "error: %s\n", playerc_error_str());
		return 0;
	}

	// Set to PULL data mode
	if (playerc_client_datamode (client, PLAYERC_DATAMODE_PULL) != 0)
	{
		fprintf(stderr, "error: %s\n", playerc_error_str());
		return 0;
	}
	if (playerc_client_set_replace_rule (client, -1, -1, PLAYER_MSGTYPE_DATA, -1, 1) != 0)
	{
		fprintf(stderr, "error: %s\n", playerc_error_str());
		return 0;
	}

	bytesPerSecond = rate * nch;
	if (fmt == FMT_S16_LE || fmt == FMT_S16_BE || fmt == FMT_S16_NE ||
		   fmt == FMT_U16_LE || fmt == FMT_U16_BE || fmt == FMT_U16_NE)
		bytesPerSecond *= 2;

	// Allocate a buffer
	bufferLength = (int) (((float) bufferTime / 1000.0f) * bytesPerSecond);
	if (buffer != NULL)
		free (buffer);
	buffer = malloc (bufferLength);
	bufferPos = 0;

	return 1;
}
コード例 #4
0
ファイル: audio_sndio.c プロジェクト: avsm/openbsd-ports
static int
op_open (AFormat fmt, int rate, int nch)
{
	struct sio_par askpar;

	pthread_mutex_lock (&mutex);

	hdl = sio_open (strlen (audiodev) > 0 ? audiodev : NULL, SIO_PLAY, 0);
	if (hdl == NULL) {
		fprintf (stderr, "%s: failed to open audio device\n", __func__);
		goto error;
	}

	sio_initpar (&par);
	afmt = fmt;
	switch (fmt) {
	case FMT_U8:
		par.bits = 8;
		par.sig = 0;
		break;
	case FMT_S8:
		par.bits = 8;
		par.sig = 1;
		break;
	case FMT_U16_LE:
		par.bits = 16;
		par.sig = 0;
		par.le = 1;
		break;
	case FMT_U16_BE:
		par.bits = 16;
		par.sig = 0;
		par.le = 0;
		break;
	case FMT_U16_NE:
		par.bits = 16;
		par.sig = 0;
		par.le = SIO_LE_NATIVE;
		break;
	case FMT_S16_LE:
		par.bits = 16;
		par.sig = 1;
		par.le = 1;
		break;
	case FMT_S16_BE:
		par.bits = 16;
		par.sig = 1;
		par.le = 0;
	case FMT_S16_NE:
		par.bits = 16;
		par.sig = 1;
		par.le = SIO_LE_NATIVE;
		break;
	default:
		fprintf (stderr, "%s: unknown format requested\n", __func__);
		goto error;
	}
	par.pchan = nch;
	par.rate = rate;

	/* 250 ms buffer */
	par.appbufsz = par.rate / 4;

	askpar = par;
	if (!sio_setpar (hdl, &par) || !sio_getpar (hdl, &par)) {
		fprintf (stderr, "%s: failed to set parameters\n", __func__);
		goto error;
	}

	if ((par.bits == 16 && par.le != askpar.le) ||
	    par.bits != askpar.bits ||
	    par.sig != askpar.sig ||
	    par.pchan != askpar.pchan ||
            par.rate != askpar.rate) {
		fprintf (stderr, "%s: parameters not supported\n", __func__);
		xmms_show_message ("Unsupported format", "XMMS requested a "
			"format that is not supported by the audio device.\n\n"
			"Please try again with the aucat(1) server running.",
			"OK", FALSE, NULL, NULL);
		goto error;
	}

	rdpos = 0;
	wrpos = 0;
	sio_onmove (hdl, onmove_cb, NULL);

	paused = 0;
	if (!sio_start (hdl)) {
		fprintf (stderr, "%s: failed to start audio device\n",
			__func__);
		goto error;
	}

	bytes_per_sec = par.bps * par.pchan * par.rate;
	pthread_mutex_unlock (&mutex);
	op_set_volume (volume, volume);
	return TRUE;

error:
	pthread_mutex_unlock (&mutex);
	op_close ();
	return FALSE;
}