1 
2 #ifndef HEADER_GUARD_FFMPEG_HEADERS_H
3 #define HEADER_GUARD_FFMPEG_HEADERS_H
4 
5 
6 extern "C"
7 {
8 #define FF_API_OLD_SAMPLE_FMT 0
9 #include <errno.h>    // for error codes defined in avformat.h
10 #include <stdint.h>
11 #include <libavcodec/avcodec.h>
12 #include <libavformat/avformat.h>
13 
14 #ifdef USE_AVRESAMPLE    // To compile using libav instead of ffmpeg
15 
16 #  include <libavresample/avresample.h>
17 
18 #  define SwrContext AVAudioResampleContext
19 #  define swr_init avresample_open
20 #  define swr_free(ctx) avresample_free(ctx)
21 #  define swr_convert(ctx, out, out_size, in, in_size) avresample_convert(ctx, out, 0, out_size, (uint8_t **)in, 0, in_size)
22 #  define swr_alloc_set_opts swr_alloc_set_opts_proxy
23 
24 #  include <libavutil/opt.h>
25 
swr_alloc_set_opts_proxy(SwrContext * ctx,int64_t out_ch_layout,enum AVSampleFormat out_sample_format,int out_sample_rate,int64_t in_ch_layout,enum AVSampleFormat in_sample_format,int in_sample_rate,int,void *)26   inline AVAudioResampleContext * swr_alloc_set_opts_proxy(SwrContext *ctx, int64_t out_ch_layout, enum AVSampleFormat out_sample_format, int out_sample_rate, int64_t in_ch_layout, enum AVSampleFormat in_sample_format, int in_sample_rate, int /*log_offset*/, void * /*log_ctx*/)
27   {
28     AVAudioResampleContext *avr = avresample_alloc_context();
29     av_opt_set_int(avr, "in_channel_layout",  in_ch_layout, 0);
30     av_opt_set_int(avr, "out_channel_layout", out_ch_layout, 0);
31     av_opt_set_int(avr, "in_sample_rate", in_sample_rate, 0);
32     av_opt_set_int(avr, "out_sample_rate", out_sample_rate, 0);
33     av_opt_set_int(avr, "in_sample_fmt", in_sample_format, 0);
34     av_opt_set_int(avr, "out_sample_fmt", out_sample_format, 0);
35     return avr;
36   }
37 
38 #else
39 #  include <libswresample/swresample.h>
40 #endif
41 
42 #ifndef ANDROID
43 #include <libavdevice/avdevice.h>
44 #endif
45 
46 #include <libavutil/mathematics.h>
47 
48 #ifdef USE_SWSCALE
49     #include <libswscale/swscale.h>
50 #endif
51 
52 #if LIBAVUTIL_VERSION_INT <  AV_VERSION_INT(50,38,0)
53 #define AV_SAMPLE_FMT_NONE SAMPLE_FMT_NONE
54 #define AV_SAMPLE_FMT_U8   SAMPLE_FMT_U8
55 #define AV_SAMPLE_FMT_S16  SAMPLE_FMT_S16
56 #define AV_SAMPLE_FMT_S32  SAMPLE_FMT_S32
57 #define AV_SAMPLE_FMT_FLT  SAMPLE_FMT_FLT
58 #define AV_SAMPLE_FMT_DBL  SAMPLE_FMT_DBL
59 #define AV_SAMPLE_FMT_NB   SAMPLE_FMT_NB
60 #endif
61 
62 }
63 
64 
65 
66 #endif // HEADER_GUARD_FFMPEG_HEADERS_H
67