npv:osd:smooth timer glyph rendering
[nyanmp.git] / npv / audio / public.h
blob6c0cb113c5397f4330cb145c44a2b5ead0a938a7
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_cfg_hw_best_effort(snd_pcm_t *pcm, int chans_n, int rate,
36 enum avutil_audio_fr_fmt_t ff_fmt);
37 STATIC void pcm_silence_bufs_cfg(snd_pcm_t *pcm, bool print_info);
38 STATIC void pcm_cfg_sw(snd_pcm_t *pcm);
39 STATIC void pcm_cfg_epoll(snd_pcm_t *pcm);
40 STATIC void init_once(u8 *pcm_str);
41 STATIC void pkts_send(void);
42 STATIC void prepare(int override_initial_ff_chans_n,
43 int override_initial_ff_rate,
44 enum avutil_audio_fr_fmt_t override_initial_ff_fmt);
45 /*----------------------------------------------------------------------------*/
46 #define CLEANUP
47 #include "npv/namespace/ffmpeg.h"
48 #include "npv/audio/namespace/ffmpeg.h"
49 #include "npv/namespace/alsa.h"
50 #include "npv/audio/namespace/public.h"
51 #undef CLEANUP
52 #endif