Init Audio Output correctly

This commit is contained in:
Florian Märkl 2019-08-06 21:45:55 +02:00
commit c8ce9f899e
No known key found for this signature in database
GPG key ID: 125BC8A5A6A1E857
4 changed files with 67 additions and 29 deletions

View file

@ -118,6 +118,7 @@ typedef struct chiaki_event_t
} ChiakiEvent;
typedef void (*ChiakiEventCallback)(ChiakiEvent *event, void *user);
typedef void (*ChiakiAudioSettingsCallback)(uint32_t channels, uint32_t rate, void *user);
typedef void (*ChiakiAudioFrameCallback)(int16_t *buf, size_t samples_count, void *user);
/**
@ -155,8 +156,9 @@ typedef struct chiaki_session_t
ChiakiEventCallback event_cb;
void *event_cb_user;
ChiakiAudioSettingsCallback audio_settings_cb;
ChiakiAudioFrameCallback audio_frame_cb;
void *audio_frame_cb_user;
void *audio_cb_user;
ChiakiVideoSampleCallback video_sample_cb;
void *video_sample_cb_user;
@ -193,10 +195,11 @@ static inline void chiaki_session_set_event_cb(ChiakiSession *session, ChiakiEve
session->event_cb_user = user;
}
static inline void chiaki_session_set_audio_frame_cb(ChiakiSession *session, ChiakiAudioFrameCallback cb, void *user)
static inline void chiaki_session_set_audio_cb(ChiakiSession *session, ChiakiAudioSettingsCallback settings_cb, ChiakiAudioFrameCallback frame_cb, void *user)
{
session->audio_frame_cb = cb;
session->audio_frame_cb_user = user;
session->audio_settings_cb = settings_cb;
session->audio_frame_cb = frame_cb;
session->audio_cb_user = user;
}
static inline void chiaki_session_set_video_sample_cb(ChiakiSession *session, ChiakiVideoSampleCallback cb, void *user)

View file

@ -95,6 +95,9 @@ CHIAKI_EXPORT void chiaki_audio_receiver_stream_info(ChiakiAudioReceiver *audio_
audio_receiver->pcm_buf_size = pcm_buf_size_required;
if(audio_receiver->session->audio_settings_cb)
audio_receiver->session->audio_settings_cb(audio_header->channels, audio_header->rate, audio_receiver->session->audio_cb_user);
beach:
chiaki_mutex_unlock(&audio_receiver->mutex);
}
@ -174,7 +177,7 @@ static void chiaki_audio_receiver_frame(ChiakiAudioReceiver *audio_receiver, Chi
if(r < 1)
CHIAKI_LOGE(audio_receiver->log, "Decoding audio frame with opus failed: %s", opus_strerror(r));
else
audio_receiver->session->audio_frame_cb(audio_receiver->pcm_buf, (size_t)r, audio_receiver->session->audio_frame_cb_user);
audio_receiver->session->audio_frame_cb(audio_receiver->pcm_buf, (size_t)r, audio_receiver->session->audio_cb_user);
beach:
chiaki_mutex_unlock(&audio_receiver->mutex);