Exemple #1
0
static int acntl(int request, void *arg)
{
    int tmp, tmp1, samples;
    switch(request)
    {
      case PM_REQ_DISCARD: /* Discard stream */
	arts_close_stream(stream);
	stream=NULL;
	return 0;
      case PM_REQ_RATE: /* Change sample rate */
        arts_close_stream(stream);
        tmp = (dpm.encoding & PE_16BIT) ? 16 : 8;
        tmp1 = (dpm.encoding & PE_MONO) ? 1 : 2;
        stream = arts_play_stream(*(int*)arg,
		    LE_LONG(tmp),
		    tmp1,
		    "timidity");
        server_buffer = arts_stream_get(stream, ARTS_P_SERVER_LATENCY) * dpm.rate * (tmp/8) * tmp1 / 1000;
	return 0;
      case PM_REQ_GETQSIZ: /* Get maximum queue size */
	*(int*)arg = arts_stream_get(stream, ARTS_P_BUFFER_SIZE);
	return 0;
      case PM_REQ_SETQSIZ: /* Set queue size */
	*(int*)arg = arts_stream_set(stream, ARTS_P_BUFFER_SIZE, *(int*)arg);
	return 0;
      case PM_REQ_GETFRAGSIZ: /* Get device fragment size */
	*(int*)arg = arts_stream_get(stream, ARTS_P_PACKET_SIZE);
	return 0;
      case PM_REQ_GETSAMPLES: /* Get current play sample */
	tmp = arts_stream_get(stream, ARTS_P_BUFFER_SIZE) -
		         arts_stream_get(stream, ARTS_P_BUFFER_SPACE) +
			 server_buffer;
	samples = output_count - tmp;
	if(samples < 0)
	  samples = 0;
	if(!(dpm.encoding & PE_MONO)) samples >>= 1;
	if(dpm.encoding & PE_16BIT) samples >>= 1;
	*(int*)arg = samples;
	return 0;
      case PM_REQ_GETFILLABLE: /* Get fillable device queue size */
	*(int*)arg = arts_stream_get(stream, ARTS_P_BUFFER_SPACE);
	return 0;
      case PM_REQ_GETFILLED: /* Get filled device queue size */
	*(int*)arg = arts_stream_get(stream, ARTS_P_BUFFER_SIZE) - arts_stream_get(stream, ARTS_P_BUFFER_SPACE);
	return 0;
      /* The following are not (yet) implemented: */
      case PM_REQ_FLUSH: /* Wait until playback is complete */
      case PM_REQ_MIDI: /* Send MIDI event */
      case PM_REQ_INST_NAME: /* Get instrument name */
	return -1;
      case PM_REQ_OUTPUT_FINISH: /* Sent after last output_data */
      case PM_REQ_PLAY_START: /* Called just before playing */
      case PM_REQ_PLAY_END: /* Called just after playing */
	return 0;
    }
    return -1;
}
Exemple #2
0
int AudioStopPlayback (int flush_output)
{
  if (audio.playsock != NULL) {
    arts_close_stream(audio.playsock);
    audio.playsock = NULL;
  }
  return 0;
}
Exemple #3
0
int AudioStopRecording (void)
{
  if (audio.recsock != NULL) {
    arts_close_stream(audio.recsock);
    audio.recsock = NULL;
  }
  return 0;
}
Exemple #4
0
static void close_output(void)
{
    if(stream == 0)
	return;
    arts_close_stream(stream);
    arts_free();
    arts_init_state = 2;
    stream = 0;
}
static void arts_dsp_destroy(struct sysdep_dsp_struct *dsp)
{
   struct arts_dsp_priv_data *priv = dsp->_priv;
   if(priv)
   {
	   arts_close_stream(priv->stream);
	   arts_free();
	   free(priv);
   }
   free(dsp);
}
Exemple #6
0
static void ARTSC_CloseAudio(_THIS)
{
	if ( mixbuf != NULL ) {
		SDL_FreeAudioMem(mixbuf);
		mixbuf = NULL;
	}
	if ( stream ) {
		arts_close_stream(stream);
		stream = 0;
	}
}
static void
gst_artsdsink_close_audio (GstArtsdsink * sink)
{
  if (!sink->connected)
    return;

  arts_close_stream (sink->stream);
  arts_free ();
  GST_OBJECT_FLAG_UNSET (sink, GST_ARTSDSINK_OPEN);
  sink->connected = FALSE;

  g_print ("artsdsink: closed connection\n");
}
Exemple #8
0
/* close sound device or disconnect from aRts server */
void audio_exit(audio_dev_handle* handle)
{
#ifdef HAS_ARTS
    if(handle->use_arts)
    {
        arts_close_stream(handle->arts_handle);
        arts_free();
    }
    else
#endif
    {
        snd_pcm_close(handle->alsa_handle);
    }
}
Exemple #9
0
/* close the sound device and reopen with the requested rate */
void audio_set_rate(audio_dev_handle* handle, int rate)
{
    handle->rate = rate;
#ifdef HAS_ARTS
    if( handle->use_arts )
    {
        arts_close_stream(handle->arts_handle);
        handle->arts_handle = arts_play_stream(rate, 8, handle->channels+1, "arts-whitenoise");
    }
    else
#endif
    {
        snd_pcm_close(handle->alsa_handle);
        alsa_init(handle);
    }
}
Exemple #10
0
/* configure the audio buffer sizes.  The latency parameter is in millisec. */
void audio_set_latency(audio_dev_handle* handle, int latency)
{
    handle->latency = latency;
#ifdef HAS_ARTS
    if(handle->use_arts)
    {
        arts_close_stream(handle->arts_handle);
        handle->arts_handle = arts_play_stream(handle->rate, 8, handle->channels+1, "arts-whitenoise");
        arts_stream_set(handle->arts_handle, ARTS_P_BUFFER_TIME, latency);
    }
    else
#endif
    {
        snd_pcm_close(handle->alsa_handle);
        alsa_init(handle);
    }
}
static void uninit(int immed)
{
	arts_close_stream(stream);
	arts_free();
}
Exemple #12
0
static int op_arts_close(void)
{
	arts_close_stream(arts_stream);
	return 0;
}