npv: media pipeline
[nyanmp.git] / npv / audio / public.h
blob3529c4f844236c5688d142bf9de7470174aefc80
1 #ifndef NPV_AUDIO_PUBLIC_H
2 #define NPV_AUDIO_PUBLIC_H
3 /*
4 * code protected with a GNU affero GPLv3 license
5 * copyright (C) 2020 Sylvain BERTRAND
6 */
7 #include <stdbool.h>
8 #include <poll.h>
9 #include <pthread.h>
10 #include <libavformat/avformat.h>
11 #include <libavcodec/avcodec.h>
12 #include <libavutil/samplefmt.h>
13 #include <alsa/asoundlib.h>
14 #include "npv/c_fixing.h"
15 #include "npv/global.h"
16 #include "npv/pkt_q/public.h"
17 /*---------------------------------------------------------------------------*/
18 #include "npv/namespace/ffmpeg.h"
19 #include "npv/audio/namespace/ffmpeg.h"
20 #include "npv/namespace/alsa.h"
21 #include "npv/audio/namespace/public.h"
22 /*---------------------------------------------------------------------------*/
23 #include "npv/audio/public/state.frag.h"
24 /*---------------------------------------------------------------------------*/
25 static void dec_ctx_cfg(avcodec_params_t *params);
26 static void dec_ctx_lock(void);
27 static void dec_ctx_unlock(void);
28 static void dec_sets_lock(void);
29 static void dec_sets_unlock(void);
30 static void dec_flush(void);
31 static u8 dec_set_try_receive(void);
32 static void dec_sets_receive_avail(void);
33 static void draining_state_evt(void);
34 static void evt_pcm_write(void);
35 static void pcm_silence_bufs_cfg(bool print_info);
36 static void init_once(u8 *pcm_str);
37 static void pcm_cfg(snd_pcm_t *pcm, unsigned int chans_n, unsigned int rate,
38 enum avutil_audio_fr_fmt_t ff_fmt);
39 static void pcm2ff(snd_pcm_t *pcm, enum avutil_audio_fr_fmt_t *ff_fmt,
40 int *ff_rate, int *ff_chans_n, uint64_t *ff_chans_layout,
41 bool print_info);
42 static void pkts_send(void);
43 /*----------------------------------------------------------------------------*/
44 #define CLEANUP
45 #include "npv/namespace/ffmpeg.h"
46 #include "npv/audio/namespace/ffmpeg.h"
47 #include "npv/namespace/alsa.h"
48 #include "npv/audio/namespace/public.h"
49 #undef CLEANUP
50 #endif