refactoring

This commit is contained in:
Maxim Devaev
2022-06-07 05:00:35 +03:00
parent 6e1f60a36d
commit b935dd1fe8
2 changed files with 8 additions and 8 deletions

View File

@@ -64,7 +64,7 @@ audio_s *audio_init(const char *name, unsigned pcm_hz) {
audio->pcm_hz = pcm_hz; audio->pcm_hz = pcm_hz;
audio->pcm_queue = queue_init(8); audio->pcm_queue = queue_init(8);
audio->enc_queue = queue_init(8); audio->enc_queue = queue_init(8);
atomic_init(&audio->working, true); atomic_init(&audio->stop, false);
int err; int err;
@@ -133,7 +133,7 @@ audio_s *audio_init(const char *name, unsigned pcm_hz) {
void audio_destroy(audio_s *audio) { void audio_destroy(audio_s *audio) {
if (audio->tids_created) { if (audio->tids_created) {
atomic_store(&audio->working, false); atomic_store(&audio->stop, true);
A_THREAD_JOIN(audio->pcm_tid); A_THREAD_JOIN(audio->pcm_tid);
A_THREAD_JOIN(audio->enc_tid); A_THREAD_JOIN(audio->enc_tid);
} }
@@ -167,7 +167,7 @@ void audio_destroy(audio_s *audio) {
} }
int audio_get_encoded(audio_s *audio, uint8_t *data, size_t *size, uint64_t *pts) { int audio_get_encoded(audio_s *audio, uint8_t *data, size_t *size, uint64_t *pts) {
if (!atomic_load(&audio->working)) { if (atomic_load(&audio->stop)) {
return -1; return -1;
} }
_enc_buffer_s *buf; _enc_buffer_s *buf;
@@ -191,7 +191,7 @@ static void *_pcm_thread(void *v_audio) {
audio_s *audio = (audio_s *)v_audio; audio_s *audio = (audio_s *)v_audio;
uint8_t in[MAX_BUF8]; uint8_t in[MAX_BUF8];
while (atomic_load(&audio->working)) { while (!atomic_load(&audio->stop)) {
int frames = snd_pcm_readi(audio->pcm, in, audio->pcm_frames); int frames = snd_pcm_readi(audio->pcm, in, audio->pcm_frames);
if (frames < 0) { if (frames < 0) {
JLOG_PERROR_ALSA(frames, "audio", "Can't capture PCM frames; breaking audio ..."); JLOG_PERROR_ALSA(frames, "audio", "Can't capture PCM frames; breaking audio ...");
@@ -211,7 +211,7 @@ static void *_pcm_thread(void *v_audio) {
} }
} }
atomic_store(&audio->working, false); atomic_store(&audio->stop, true);
return NULL; return NULL;
} }
@@ -221,7 +221,7 @@ static void *_encoder_thread(void *v_audio) {
audio_s *audio = (audio_s *)v_audio; audio_s *audio = (audio_s *)v_audio;
int16_t in_res[MAX_BUF16]; int16_t in_res[MAX_BUF16];
while (atomic_load(&audio->working)) { while (!atomic_load(&audio->stop)) {
_pcm_buffer_s *in; _pcm_buffer_s *in;
if (!queue_get(audio->pcm_queue, (void **)&in, 1)) { if (!queue_get(audio->pcm_queue, (void **)&in, 1)) {
int16_t *in_ptr; int16_t *in_ptr;
@@ -259,6 +259,6 @@ static void *_encoder_thread(void *v_audio) {
} }
} }
atomic_store(&audio->working, false); atomic_store(&audio->stop, true);
return NULL; return NULL;
} }

View File

@@ -61,7 +61,7 @@ typedef struct {
pthread_t pcm_tid; pthread_t pcm_tid;
pthread_t enc_tid; pthread_t enc_tid;
bool tids_created; bool tids_created;
atomic_bool working; atomic_bool stop;
} audio_s; } audio_s;