Exemplo n.º 1
0
static bool obs_init_audio(struct audio_info *ai)
{
	struct obs_audio *audio = &obs->audio;
	int errorcode;

	/* TODO: sound subsystem */

	errorcode = audio_output_open(&audio->audio, obs->media, ai);
	if (errorcode == AUDIO_OUTPUT_SUCCESS)
		return true;
	else if (errorcode == AUDIO_OUTPUT_INVALIDPARAM)
		blog(LOG_ERROR, "Invalid audio parameters specified");
	else
		blog(LOG_ERROR, "Could not open audio output");

	return false;
}
Exemplo n.º 2
0
// ----------------------------------------------------------------------------
void player::play_from_queue()
{
  if ( play_queue_.size() > 0 )
  {
    auto track = play_queue_.front();
    auto src   = track.find_source();

    if ( !src.is_null() )
    {
      std::cerr << "play_from_queue id=" << track.id() << ", title='" << track.title() << "', source=" << src.name() << std::endl;

      state_.state  = playing;
      state_.track  = std::move(track);
      state_.source = src.name();

      std::cout << "player state=" << state_.state << std::endl;

      if ( !audio_output_ ) {
        audio_output_open();
      }

      play_source(src);
      play_queue_.pop();
    }
    else
    {
      std::cerr << "play_from_queue id=" << track.id() << ", title='" << track.title() << "', NO SOURCE!" << std::endl;
      play_queue_.pop();
      play_from_queue();
    }
  }
  else if ( continuous_playback_ )
  {
    play_queue_.push(ctpb_selector_.next());
    play_from_queue();
  }
  else
  {
    play_stop();
  }
}
Exemplo n.º 3
0
bool
audio_output_update(struct audio_output *ao,
		    const struct audio_format *audio_format,
		    const struct music_pipe *mp)
{
	assert(mp != NULL);

	g_mutex_lock(ao->mutex);

	if (ao->enabled && ao->really_enabled) {
		if (ao->fail_timer == NULL ||
		    g_timer_elapsed(ao->fail_timer, NULL) > REOPEN_AFTER) {
			bool success = audio_output_open(ao, audio_format, mp);
			g_mutex_unlock(ao->mutex);
			return success;
		}
	} else if (audio_output_is_open(ao))
		audio_output_close_locked(ao);

	g_mutex_unlock(ao->mutex);
	return false;
}