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); }
static void asap_show_message(gchar *title, gchar *text) { xmms_show_message(title, text, "Ok", FALSE, NULL, NULL); }
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; }
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; }