npv: media pipeline
[nyanmp.git] / npv / audio / main.c
blobe320148c2047f98057aeefab74a8e49d09400295
1 #ifndef NPV_AUDIO_MAIN_C
2 #define NPV_AUDIO_MAIN_C
3 /*
4 * code protected with a GNU affero GPLv3 license
5 * copyright (C) 2020 Sylvain BERTRAND
6 */
7 #include <stdbool.h>
8 #include <stdint.h>
9 #include <string.h>
10 #include <stdio.h>
11 #include <unistd.h>
12 #include <signal.h>
13 #include <pthread.h>
14 #include <sys/timerfd.h>
15 #include <sys/epoll.h>
16 #include <libavcodec/avcodec.h>
17 #include <libavutil/avutil.h>
18 #include <libavutil/channel_layout.h>
19 #include <libavutil/error.h>
20 #include <libavutil/frame.h>
21 #include <libavutil/rational.h>
22 #include <libavutil/samplefmt.h>
23 #include <libavutil/opt.h>
24 #include <alsa/asoundlib.h>
25 #include "npv/c_fixing.h"
26 #include "npv/global.h"
27 #include "npv/public.h"
28 #include "npv/pkt_q/public.h"
29 #include "npv/fmt/public.h"
30 #include "npv/audio/public.h"
31 #include "npv/audio/filt/public.h"
32 #include "npv/video/public.h"
33 #include "npv/clk/public.h"
34 /*----------------------------------------------------------------------------*/
35 #include "npv/config.h"
36 /*----------------------------------------------------------------------------*/
37 #include "npv/namespace/ffmpeg.h"
38 #include "npv/audio/namespace/ffmpeg.h"
39 #include "npv/namespace/alsa.h"
40 #include "npv/audio/namespace/public.h"
41 #include "npv/audio/namespace/main.c"
42 /*----------------------------------------------------------------------------*/
44 * XXX: we don't know how the alsa silence machinery works, then we use brutal
45 * silence bufs
47 /*----------------------------------------------------------------------------*/
48 #define FATALA(fmt, ...) FATAL("audio:" fmt, ##__VA_ARGS__)
49 #define WARNINGA(fmt, ...) WARNING("audio:" fmt, ##__VA_ARGS__)
50 #define POUTA(fmt, ...) POUT("audio:" fmt, ##__VA_ARGS__)
51 /*----------------------------------------------------------------------------*/
52 #define DRAINING_TIMER_INTERVAL_NSECS_N 100000000 /* 0.1 sec */
53 /*----------------------------------------------------------------------------*/
54 #include "npv/audio/local/state.frag.c"
55 /*----------------------------------------------------------------------------*/
56 #include "npv/audio/local/code.frag.c"
57 #include "npv/audio/public/code.frag.c"
58 /*----------------------------------------------------------------------------*/
59 #undef FATALA
60 #undef POUTA
61 #undef WARNINGA
62 #undef DRAINING_TIMER_INTERVAL_NSECS_N
63 /*---------------------------------------------------------------------------*/
64 #define CLEANUP
65 #include "npv/namespace/ffmpeg.h"
66 #include "npv/audio/namespace/ffmpeg.h"
67 #include "npv/namespace/alsa.h"
68 #include "npv/audio/namespace/public.h"
69 #include "npv/audio/namespace/main.c"
70 #undef CLEANUP
71 #endif