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