1 #ifndef NPV_AUDIO_PUBLIC_H
2 #define NPV_AUDIO_PUBLIC_H
4 * code protected with a GNU affero GPLv3 license
5 * copyright (C) 2020 Sylvain BERTRAND
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 /*----------------------------------------------------------------------------*/
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"