• android平台移植ffmpeg 播放器


    引用:http://blog.csdn.net/ouyangtianhan/article/details/7943543

    IT行业是一个踩在巨人肩膀上前进的行业,否则做的事情不一定有意义,所以我也是基于havlenapetr移植的ffmpeg基础上做了些改进,他做的主要贡献有:

    1. 移植了ffmpeg并将与媒体相关的结构体在java层重新进行了封装,方便应用程序在java层直接操作ffmpeg API,如各种媒体格式转码及播放,如图1所示

    2. 模仿Android的MediaPlayer类实现了ffmpeg的播放接口,如setDataSource(),setDisplay(),start(), stop(),pause()等,缺点是没有实现seek功能。

    3. 实现了一个简单播放器功能,抛弃掉ffmpeg自带的ffplay播放器,他重新实现了音视频的分离播放和同步处理等播放器应有的功能。

    图1 ffmpeg的java层封装

    基于Android移植ffmpeg的意义在于:

    1.解决了Android媒体框架OpenCore的多媒体支持不足,虽然说Android平台的软解功耗大,但是从PC机的发展历史看,Android的视频处理以后也会走以硬解为主,软解为辅的路线。

    2. 解决Android平台直播的问题,虽然Android支持RTSP/RTP的直播方案,但是这种方案主要是普遍用在电信设备上,基于互联网的海量视频服 务提供者还是以http live streaming方案为主,测试时可以用ffmpeg将直播流打包成分段的ts流(如10秒钟),然后组织成m3u8文件实现完整的直播方案,而且互联 网的直播内容还有很多是基于mms协议的,视频格式是wmv,要聚集这些内容都是离不开ffmpeg软解的。

     

    移植步骤:

    1. 下载havlenaptr移植的ffmpeg(https://github.com/havlenapetr/FFMpeg/zipball/debug).

    2.  基于ndk编译下载的ffmpeg,出现的编译问题主要是文件的存放路径不对,修改jni目录下的Android.mk文件,增加头文件目录$(LOCAL_PATH)/../include/android,修改Vector.h文件为:

    #include <cutils/log.h>
    #include <utils/VectorImpl.h>
    #include <utils/TypeHelpers.h>

    3.utils目录下缺少TypeHelpers.h,添加该文件:

    1. /* 
    2.  *  TypeHelpers.h 
    3.  *   
    4.  *  Copyright 2005 The Android Open Source Project 
    5.  * 
    6.  */  
    7. #ifndef ANDROID_TYPE_HELPERS_H  
    8. #define ANDROID_TYPE_HELPERS_H  
    9. #include <new>  
    10. #include <stdint.h>  
    11. #include <string.h>  
    12. #include <sys/types.h>  
    13. // ---------------------------------------------------------------------------  
    14. namespace android {  
    15. /* 
    16.  * Types traits 
    17.  */  
    18.       
    19. template <typename T> struct trait_trivial_ctor  { enum { value = false }; };  
    20. template <typename T> struct trait_trivial_dtor  { enum { value = false }; };  
    21. template <typename T> struct trait_trivial_copy  { enum { value = false }; };  
    22. template <typename T> struct trait_trivial_assign{ enum { value = false }; };  
    23. template <typename T> struct trait_pointer     { enum { value = false }; };      
    24. template <typename T> struct trait_pointer<T*> { enum { value = true }; };  
    25. #define ANDROID_BASIC_TYPES_TRAITS( T )                                       /  
    26.     template<> struct trait_trivial_ctor< T >  { enum { value = true }; };    /  
    27.     template<> struct trait_trivial_dtor< T >  { enum { value = true }; };    /  
    28.     template<> struct trait_trivial_copy< T >  { enum { value = true }; };    /  
    29.     template<> struct trait_trivial_assign< T >{ enum { value = true }; };   
    30. #define ANDROID_TYPE_TRAITS( T, ctor, dtor, copy, assign )                    /  
    31.     template<> struct trait_trivial_ctor< T >  { enum { value = ctor }; };    /  
    32.     template<> struct trait_trivial_dtor< T >  { enum { value = dtor }; };    /  
    33.     template<> struct trait_trivial_copy< T >  { enum { value = copy }; };    /  
    34.     template<> struct trait_trivial_assign< T >{ enum { value = assign }; };   
    35. template <typename TYPE>  
    36. struct traits {  
    37.     enum {  
    38.         is_pointer          = trait_pointer<TYPE>::value,  
    39.         has_trivial_ctor    = is_pointer || trait_trivial_ctor<TYPE>::value,  
    40.         has_trivial_dtor    = is_pointer || trait_trivial_dtor<TYPE>::value,  
    41.         has_trivial_copy    = is_pointer || trait_trivial_copy<TYPE>::value,  
    42.         has_trivial_assign  = is_pointer || trait_trivial_assign<TYPE>::value     
    43.     };  
    44. };  
    45. template <typename T, typename U>  
    46. struct aggregate_traits {  
    47.     enum {  
    48.         is_pointer          = false,  
    49.         has_trivial_ctor    = traits<T>::has_trivial_ctor && traits<U>::has_trivial_ctor,  
    50.         has_trivial_dtor    = traits<T>::has_trivial_dtor && traits<U>::has_trivial_dtor,  
    51.         has_trivial_copy    = traits<T>::has_trivial_copy && traits<U>::has_trivial_copy,  
    52.         has_trivial_assign  = traits<T>::has_trivial_assign && traits<U>::has_trivial_assign  
    53.     };  
    54. };  
    55. // ---------------------------------------------------------------------------  
    56. /* 
    57.  * basic types traits 
    58.  */  
    59.    
    60. ANDROID_BASIC_TYPES_TRAITS( void );  
    61. ANDROID_BASIC_TYPES_TRAITS( bool );  
    62. ANDROID_BASIC_TYPES_TRAITS( char );  
    63. ANDROID_BASIC_TYPES_TRAITS( unsigned char );  
    64. ANDROID_BASIC_TYPES_TRAITS( short );  
    65. ANDROID_BASIC_TYPES_TRAITS( unsigned short );  
    66. ANDROID_BASIC_TYPES_TRAITS( int );  
    67. ANDROID_BASIC_TYPES_TRAITS( unsigned int );  
    68. ANDROID_BASIC_TYPES_TRAITS( long );  
    69. ANDROID_BASIC_TYPES_TRAITS( unsigned long );  
    70. ANDROID_BASIC_TYPES_TRAITS( long long );  
    71. ANDROID_BASIC_TYPES_TRAITS( unsigned long long );  
    72. ANDROID_BASIC_TYPES_TRAITS( float );  
    73. ANDROID_BASIC_TYPES_TRAITS( double );  
    74. // ---------------------------------------------------------------------------  
    75.       
    76. /* 
    77.  * compare and order types 
    78.  */  
    79. template<typename TYPE> inline  
    80. int strictly_order_type(const TYPE& lhs, const TYPE& rhs) {  
    81.     return (lhs < rhs) ? 1 : 0;  
    82. }  
    83. template<typename TYPE> inline  
    84. int compare_type(const TYPE& lhs, const TYPE& rhs) {  
    85.     return strictly_order_type(rhs, lhs) - strictly_order_type(lhs, rhs);  
    86. }  
    87. /* 
    88.  * create, destroy, copy and assign types... 
    89.  */  
    90.    
    91. template<typename TYPE> inline  
    92. void construct_type(TYPE* p, size_t n) {  
    93.     if (!traits<TYPE>::has_trivial_ctor) {  
    94.         while (n--) {  
    95.             new(p++) TYPE;  
    96.         }  
    97.     }  
    98. }  
    99. template<typename TYPE> inline  
    100. void destroy_type(TYPE* p, size_t n) {  
    101.     if (!traits<TYPE>::has_trivial_dtor) {  
    102.         while (n--) {  
    103.             p->~TYPE();  
    104.             p++;  
    105.         }  
    106.     }  
    107. }  
    108. template<typename TYPE> inline  
    109. void copy_type(TYPE* d, const TYPE* s, size_t n) {  
    110.     if (!traits<TYPE>::has_trivial_copy) {  
    111.         while (n--) {  
    112.             new(d) TYPE(*s);  
    113.             d++, s++;  
    114.         }  
    115.     } else {  
    116.         memcpy(d,s,n*sizeof(TYPE));  
    117.     }  
    118. }  
    119. template<typename TYPE> inline  
    120. void assign_type(TYPE* d, const TYPE* s, size_t n) {  
    121.     if (!traits<TYPE>::has_trivial_assign) {  
    122.         while (n--) {  
    123.             *d++ = *s++;  
    124.         }  
    125.     } else {  
    126.         memcpy(d,s,n*sizeof(TYPE));  
    127.     }  
    128. }  
    129. template<typename TYPE> inline  
    130. void splat_type(TYPE* where, const TYPE* what, size_t n) {  
    131.     if (!traits<TYPE>::has_trivial_copy) {  
    132.         while (n--) {  
    133.             new(where) TYPE(*what);  
    134.             where++;  
    135.         }  
    136.     } else {  
    137.          while (n--) {  
    138.              *where++ = *what;  
    139.         }  
    140.     }  
    141. }  
    142. template<typename TYPE> inline  
    143. void move_forward_type(TYPE* d, const TYPE* s, size_t n = 1) {  
    144.     if (!traits<TYPE>::has_trivial_copy || !traits<TYPE>::has_trivial_dtor) {  
    145.         d += n;  
    146.         s += n;  
    147.         while (n--) {  
    148.             --d, --s;  
    149.             if (!traits<TYPE>::has_trivial_copy) {  
    150.                 new(d) TYPE(*s);  
    151.             } else {  
    152.                 *d = *s;  
    153.             }  
    154.             if (!traits<TYPE>::has_trivial_dtor) {  
    155.                 s->~TYPE();  
    156.             }  
    157.         }  
    158.     } else {  
    159.         memmove(d,s,n*sizeof(TYPE));  
    160.     }  
    161. }  
    162. template<typename TYPE> inline  
    163. void move_backward_type(TYPE* d, const TYPE* s, size_t n = 1) {  
    164.     if (!traits<TYPE>::has_trivial_copy || !traits<TYPE>::has_trivial_dtor) {  
    165.         while (n--) {  
    166.             if (!traits<TYPE>::has_trivial_copy) {  
    167.                 new(d) TYPE(*s);  
    168.             } else {  
    169.                 *d = *s;  
    170.             }  
    171.             if (!traits<TYPE>::has_trivial_dtor) {  
    172.                 s->~TYPE();  
    173.             }  
    174.             d++, s++;  
    175.         }  
    176.     } else {  
    177.         memmove(d,s,n*sizeof(TYPE));  
    178.     }  
    179. }  
    180. // ---------------------------------------------------------------------------  
    181. /* 
    182.  * a key/value pair 
    183.  */  
    184. template <typename KEY, typename VALUE>  
    185. struct key_value_pair_t {  
    186.     KEY     key;  
    187.     VALUE   value;  
    188.     key_value_pair_t() { }  
    189.     key_value_pair_t(const key_value_pair_t& o) : key(o.key), value(o.value) { }  
    190.     key_value_pair_t(const KEY& k, const VALUE& v) : key(k), value(v)  { }  
    191.     key_value_pair_t(const KEY& k) : key(k) { }  
    192.     inline bool operator < (const key_value_pair_t& o) const {  
    193.         return strictly_order_type(key, o.key);  
    194.     }  
    195. };  
    196. template<>  
    197. template <typename K, typename V>  
    198. struct trait_trivial_ctor< key_value_pair_t<K, V> >  
    199. enum { value = aggregate_traits<K,V>::has_trivial_ctor }; };  
    200. template<>   
    201. template <typename K, typename V>  
    202. struct trait_trivial_dtor< key_value_pair_t<K, V> >  
    203. enum { value = aggregate_traits<K,V>::has_trivial_dtor }; };  
    204. template<>   
    205. template <typename K, typename V>  
    206. struct trait_trivial_copy< key_value_pair_t<K, V> >  
    207. enum { value = aggregate_traits<K,V>::has_trivial_copy }; };  
    208. template<>   
    209. template <typename K, typename V>  
    210. struct trait_trivial_assign< key_value_pair_t<K, V> >  
    211. enum { value = aggregate_traits<K,V>::has_trivial_assign};};  
    212. // ---------------------------------------------------------------------------  
    213. }; // namespace android  
    214. // ---------------------------------------------------------------------------  
    215. #endif // ANDROID_TYPE_HELPERS_H  

    4.编译中出现 make: *** No rule to make target `/cygdrive/e/workspace/myffmpeg/obj/local/armeabi/libjniaudio.so', needed by `/cygdrive/e/workspace/myffmpeg/obj/local/armeabi/libmediaplayer.a'.  Stop. 需要把下载的ffmpeg中的libjniaudio.so和libjnivideo.so放到错误中指定的目录下。

    5. 编译成功后运行的结果如下:

         

    当点击媒体文件播放时,发现画面显示不正常,如下所示:

    调试后发现MediaPlayer.cpp中没有像Android自带播放器一样实现OnVideoSizeChangedListener的回调 函数,当播放视图(SurfaceView)创建后没有根据实际播放的视频大小做调整,而且画面没有居中显示,所以我在此基础上做了如下改进

    1. 实现OnVideoSizeChangedListener接口,通知播放界面调整大小

    2. 播放界面剧中显示,等比率缩放视频大小。

    3. 实现Seek功能

    • 3.1 要实现getCurrentPosition(), 因为拖动时传过来的是时间millisecond
    • 3.2 把milli second转化成timestamp掉用av_seek...
    • 3.3 在IDecoder类里面加入flush函数,实际上就是seek的时候把队列里的AVPacket清除掉
    • 3.4 通过av_gettime()函数作为外部参考时钟,实现音视频同步,需要hurryup和实现drop frame的处理。

     

    下面是调整后播放flv(h264+aac)格式(分辨率为320*240,25帧/S)的结果,软解播放达到平均22帧/s

      

    其它wmv,ts流,avi等格式均可播放,但是音质效果需要改进。

    最近的进展情况:

    1. 实现ffmpeg播放的回调接口,可以通知界面刷新状态,如去掉缓冲提示等。 

    public interface IFFMpegPlayer {
         public void onPlay();
         public void onStop();
         public void onRelease();
         public void onError(String msg, Exception e);
        }

    2. 定制话播放控制栏界面,效果如下:

    替换ffmpeg自带的控制栏界面

    如何支持http网络播放,需要config.h里enable相关选项,我的配置参考如下:

    1. /* Automatically generated by configure - do not modify! */  
    2. #ifndef FFMPEG_CONFIG_H  
    3. #define FFMPEG_CONFIG_H  
    4. #define FFMPEG_CONFIGURATION "--target-os=linux --arch=armv41 --enable-cross-compile --cc=/home/petr/projects/android_api/ndk/android-ndk-1.6_r1/build/prebuilt/linux-x86/arm-eabi-4.2.1/bin/arm-eabi-gcc --cross-prefix=/home/petr/projects/android_api/ndk/android-ndk-1.6_r1/build/prebuilt/linux-x86/arm-eabi-4.2.1/bin/arm-eabi- --nm=/home/petr/projects/android_api/ndk/android-ndk-1.6_r1/build/prebuilt/linux-x86/arm-eabi-4.2.1/bin/arm-eabi-nm --extra-cflags='-fPIC -DANDROID' --enable-static --disable-shared --disable-asm --disable-yasm --prefix=/home/ffmpeg-android-bin --extra-ldflags='-Wl,-T,/home/petr/projects/android_api/ndk/android-ndk-1.6_r1/build/prebuilt/linux-x86/arm-eabi-4.2.1/arm-eabi/lib/ldscripts/armelf.x -Wl,-rpath-link=/home/petr/projects/android_api/ndk/android-ndk-1.6_r1/build/platforms/android-4/arch-arm/usr/lib -L/home/petr/projects/android_api/ndk/android-ndk-1.6_r1/build/platforms/android-4/arch-arm/usr/lib -nostdlib /home/petr/projects/android_api/ndk/android-ndk-1.6_r1/build/prebuilt/linux-x86/arm-eabi-4.2.1/lib/gcc/arm-eabi/4.2.1/crtbegin.o /home/petr/projects/android_api/ndk/android-ndk-1.6_r1/build/prebuilt/linux-x86/arm-eabi-4.2.1/lib/gcc/arm-eabi/4.2.1/crtend.o -lc -lm -ldl'"  
    5. #define FFMPEG_LICENSE "LGPL version 2.1 or later"  
    6. #define FFMPEG_DATADIR "/home/ffmpeg-android-bin/share/ffmpeg"  
    7. #define CC_TYPE "gcc"  
    8. #define CC_VERSION __VERSION__  
    9. #define restrict restrict  
    10. #define ASMALIGN(ZEROBITS) ".p2align " #ZEROBITS "/n/t"  
    11. #define EXTERN_PREFIX ""  
    12. #define EXTERN_ASM   
    13. #define ARCH_ALPHA 0  
    14. #define ARCH_ARM 0  
    15. #define ARCH_AVR32 0  
    16. #define ARCH_AVR32_AP 0  
    17. #define ARCH_AVR32_UC 0  
    18. #define ARCH_BFIN 0  
    19. #define ARCH_IA64 0  
    20. #define ARCH_M68K 0  
    21. #define ARCH_MIPS 0  
    22. #define ARCH_MIPS64 0  
    23. #define ARCH_PARISC 0  
    24. #define ARCH_PPC 0  
    25. #define ARCH_PPC64 0  
    26. #define ARCH_S390 0  
    27. #define ARCH_SH4 0  
    28. #define ARCH_SPARC 0  
    29. #define ARCH_SPARC64 0  
    30. #define ARCH_TOMI 0  
    31. #define ARCH_X86 0  
    32. #define ARCH_X86_32 0  
    33. #define ARCH_X86_64 0  
    34. #define HAVE_ALTIVEC 0  
    35. #define HAVE_AMD3DNOW 0  
    36. #define HAVE_AMD3DNOWEXT 0  
    37. #define HAVE_ARMV5TE 0  
    38. #define HAVE_ARMV6 0  
    39. #define HAVE_ARMV6T2 0  
    40. #define HAVE_ARMVFP 0  
    41. #define HAVE_IWMMXT 0  
    42. #define HAVE_MMI 0  
    43. #define HAVE_MMX 0  
    44. #define HAVE_MMX2 0  
    45. #define HAVE_NEON 0  
    46. #define HAVE_PPC4XX 0  
    47. #define HAVE_SSE 0  
    48. #define HAVE_SSSE3 0  
    49. #define HAVE_VIS 0  
    50. #define HAVE_BIGENDIAN 0  
    51. #define HAVE_BEOSTHREADS 0  
    52. #define HAVE_OS2THREADS 0  
    53. #define HAVE_PTHREADS 0  
    54. #define HAVE_W32THREADS 0  
    55. #define HAVE_ALSA_ASOUNDLIB_H 0  
    56. #define HAVE_ALTIVEC_H 0  
    57. #define HAVE_ARPA_INET_H 0  
    58. #define HAVE_ATTRIBUTE_MAY_ALIAS 1  
    59. #define HAVE_ATTRIBUTE_PACKED 1  
    60. #define HAVE_BSWAP 0  
    61. #define HAVE_CLOSESOCKET 0  
    62. #define HAVE_CMOV 0  
    63. #define HAVE_CONIO_H 0  
    64. #define HAVE_DCBZL 0  
    65. #define HAVE_DEV_BKTR_IOCTL_BT848_H 0  
    66. #define HAVE_DEV_BKTR_IOCTL_METEOR_H 0  
    67. #define HAVE_DEV_IC_BT8XX_H 0  
    68. #define HAVE_DEV_VIDEO_METEOR_IOCTL_METEOR_H 0  
    69. #define HAVE_DEV_VIDEO_BKTR_IOCTL_BT848_H 0  
    70. #define HAVE_DLFCN_H 0  
    71. #define HAVE_DLOPEN 1  
    72. #define HAVE_DOS_PATHS 0  
    73. #define HAVE_EBP_AVAILABLE 0  
    74. #define HAVE_EBX_AVAILABLE 0  
    75. #define HAVE_EXP2 0  
    76. #define HAVE_EXP2F 0  
    77. #define HAVE_FAST_64BIT 0  
    78. #define HAVE_FAST_CLZ 1  
    79. #define HAVE_FAST_CMOV 0  
    80. #define HAVE_FAST_UNALIGNED 0  
    81. #define HAVE_FORK 1  
    82. #define HAVE_GETADDRINFO 1  
    83. #define HAVE_GETHRTIME 0  
    84. #define HAVE_GETPROCESSMEMORYINFO 0  
    85. #define HAVE_GETPROCESSTIMES 0  
    86. #define HAVE_GETRUSAGE 0  
    87. #define HAVE_STRUCT_RUSAGE_RU_MAXRSS 0  
    88. #define HAVE_INET_ATON 1  
    89. #define HAVE_INLINE_ASM 1  
    90. #define HAVE_ISATTY 1  
    91. #define HAVE_LDBRX 0  
    92. #define HAVE_LIBDC1394_1 0  
    93. #define HAVE_LIBDC1394_2 0  
    94. #define HAVE_LOCAL_ALIGNED_16 0  
    95. #define HAVE_LOCAL_ALIGNED_8 0  
    96. #define HAVE_LOG2 0  
    97. #define HAVE_LOG2F 0  
    98. #define HAVE_LOONGSON 0  
    99. #define HAVE_LRINT 0  
    100. #define HAVE_LRINTF 0  
    101. #define HAVE_LZO1X_999_COMPRESS 0  
    102. #define HAVE_MACHINE_IOCTL_BT848_H 0  
    103. #define HAVE_MACHINE_IOCTL_METEOR_H 0  
    104. #define HAVE_MALLOC_H 0  
    105. #define HAVE_MEMALIGN 1  
    106. #define HAVE_MKSTEMP 1  
    107. #define HAVE_PLD 1  
    108. #define HAVE_POSIX_MEMALIGN 0  
    109. #define HAVE_ROUND 0  
    110. #define HAVE_ROUNDF 0  
    111. #define HAVE_SDL 0  
    112. #define HAVE_SDL_VIDEO_SIZE 0  
    113. #define HAVE_SETMODE 0  
    114. #define HAVE_SOCKLEN_T 1  
    115. #define HAVE_SOUNDCARD_H 0  
    116. #define HAVE_POLL_H 0  
    117. #define HAVE_SETRLIMIT 0  
    118. #define HAVE_STRERROR_R 1  
    119. #define HAVE_STRUCT_ADDRINFO 1  
    120. #define HAVE_STRUCT_IPV6_MREQ 0  
    121. #define HAVE_STRUCT_SOCKADDR_IN6 0  
    122. #define HAVE_STRUCT_SOCKADDR_SA_LEN 0  
    123. #define HAVE_STRUCT_SOCKADDR_STORAGE 1  
    124. #define HAVE_SYMVER 1  
    125. #define HAVE_SYMVER_GNU_ASM 1  
    126. #define HAVE_SYMVER_ASM_LABEL 0  
    127. #define HAVE_SYS_MMAN_H 0  
    128. #define HAVE_SYS_RESOURCE_H 0  
    129. #define HAVE_SYS_SELECT_H 0  
    130. #define HAVE_SYS_SOUNDCARD_H 0  
    131. #define HAVE_SYS_VIDEOIO_H 0  
    132. #define HAVE_TEN_OPERANDS 0  
    133. #define HAVE_TERMIOS_H 0  
    134. #define HAVE_THREADS 0  
    135. #define HAVE_TRUNCF 0  
    136. #define HAVE_VFP_ARGS 1  
    137. #define HAVE_VIRTUALALLOC 0  
    138. #define HAVE_WINSOCK2_H 0  
    139. #define HAVE_XFORM_ASM 0  
    140. #define HAVE_YASM 0  
    141. #define CONFIG_BSFS 1  
    142. #define CONFIG_DECODERS 1  
    143. #define CONFIG_DEMUXERS 1  
    144. #define CONFIG_ENCODERS 1  
    145. #define CONFIG_FILTERS 1  
    146. #define CONFIG_HWACCELS 0  
    147. #define CONFIG_INDEVS 1  
    148. #define CONFIG_MUXERS 1  
    149. #define CONFIG_OUTDEVS 0  
    150. #define CONFIG_PARSERS 1  
    151. #define CONFIG_PROTOCOLS 1  
    152. #define CONFIG_AANDCT 1  
    153. #define CONFIG_AVCODEC 1  
    154. #define CONFIG_AVDEVICE 0  
    155. #define CONFIG_AVFILTER 0  
    156. #define CONFIG_AVFILTER_LAVF 0  
    157. #define CONFIG_AVFORMAT 1  
    158. #define CONFIG_AVISYNTH 0  
    159. #define CONFIG_BZLIB 0  
    160. #define CONFIG_DCT 1  
    161. #define CONFIG_DOC 0  
    162. #define CONFIG_DWT 1  
    163. #define CONFIG_DXVA2 0  
    164. #define CONFIG_FASTDIV 1  
    165. #define CONFIG_FFMPEG 1  
    166. #define CONFIG_FFPLAY 0  
    167. #define CONFIG_FFPROBE 1  
    168. #define CONFIG_FFSERVER 0  
    169. #define CONFIG_FFT 1  
    170. #define CONFIG_GOLOMB 1  
    171. #define CONFIG_GPL 0  
    172. #define CONFIG_GPROF 0  
    173. #define CONFIG_GRAY 0  
    174. #define CONFIG_H264DSP 1  
    175. #define CONFIG_HARDCODED_TABLES 0  
    176. #define CONFIG_LIBDC1394 0  
    177. #define CONFIG_LIBDIRAC 0  
    178. #define CONFIG_LIBFAAC 0  
    179. #define CONFIG_LIBGSM 0  
    180. #define CONFIG_LIBMP3LAME 0  
    181. #define CONFIG_LIBNUT 0  
    182. #define CONFIG_LIBOPENCORE_AMRNB 0  
    183. #define CONFIG_LIBOPENCORE_AMRWB 0  
    184. #define CONFIG_LIBOPENJPEG 0  
    185. #define CONFIG_LIBRTMP 0  
    186. #define CONFIG_LIBSCHROEDINGER 0  
    187. #define CONFIG_LIBSPEEX 0  
    188. #define CONFIG_LIBTHEORA 0  
    189. #define CONFIG_LIBVORBIS 0  
    190. #define CONFIG_LIBVPX 0  
    191. #define CONFIG_LIBX264 0  
    192. #define CONFIG_LIBXVID 0  
    193. #define CONFIG_LPC 1  
    194. #define CONFIG_LSP 1  
    195. #define CONFIG_MDCT 1  
    196. #define CONFIG_MEMALIGN_HACK 0  
    197. #define CONFIG_MLIB 0  
    198. #define CONFIG_MPEGAUDIO_HP 1  
    199. #define CONFIG_NETWORK 1  
    200. #define CONFIG_NONFREE 0  
    201. #define CONFIG_PIC 0  
    202. #define CONFIG_POSTPROC 0  
    203. #define CONFIG_POWERPC_PERF 0  
    204. #define CONFIG_RDFT 1  
    205. #define CONFIG_RUNTIME_CPUDETECT 0  
    206. #define CONFIG_SHARED 0  
    207. #define CONFIG_SMALL 0  
    208. #define CONFIG_SRAM 0  
    209. #define CONFIG_STATIC 1  
    210. #define CONFIG_SWSCALE 1  
    211. #define CONFIG_SWSCALE_ALPHA 1  
    212. #define CONFIG_VAAPI 0  
    213. #define CONFIG_VDPAU 0  
    214. #define CONFIG_VERSION3 0  
    215. #define CONFIG_X11GRAB 0  
    216. #define CONFIG_ZLIB 0  
    217. #define CONFIG_AVUTIL 1  
    218. #define CONFIG_GPLV3 0  
    219. #define CONFIG_LGPLV3 0  
    220. #define CONFIG_AASC_DECODER 1  
    221. #define CONFIG_AMV_DECODER 1  
    222. #define CONFIG_ANM_DECODER 1  
    223. #define CONFIG_ASV1_DECODER 1  
    224. #define CONFIG_ASV2_DECODER 1  
    225. #define CONFIG_AURA_DECODER 1  
    226. #define CONFIG_AURA2_DECODER 1  
    227. #define CONFIG_AVS_DECODER 1  
    228. #define CONFIG_BETHSOFTVID_DECODER 1  
    229. #define CONFIG_BFI_DECODER 1  
    230. #define CONFIG_BINK_DECODER 1  
    231. #define CONFIG_BMP_DECODER 1  
    232. #define CONFIG_C93_DECODER 1  
    233. #define CONFIG_CAVS_DECODER 1  
    234. #define CONFIG_CDGRAPHICS_DECODER 1  
    235. #define CONFIG_CINEPAK_DECODER 1  
    236. #define CONFIG_CLJR_DECODER 1  
    237. #define CONFIG_CSCD_DECODER 1  
    238. #define CONFIG_CYUV_DECODER 1  
    239. #define CONFIG_DNXHD_DECODER 1  
    240. #define CONFIG_DPX_DECODER 1  
    241. #define CONFIG_DSICINVIDEO_DECODER 1  
    242. #define CONFIG_DVVIDEO_DECODER 1  
    243. #define CONFIG_DXA_DECODER 0  
    244. #define CONFIG_EACMV_DECODER 1  
    245. #define CONFIG_EAMAD_DECODER 1  
    246. #define CONFIG_EATGQ_DECODER 1  
    247. #define CONFIG_EATGV_DECODER 1  
    248. #define CONFIG_EATQI_DECODER 1  
    249. #define CONFIG_EIGHTBPS_DECODER 1  
    250. #define CONFIG_EIGHTSVX_EXP_DECODER 1  
    251. #define CONFIG_EIGHTSVX_FIB_DECODER 1  
    252. #define CONFIG_ESCAPE124_DECODER 1  
    253. #define CONFIG_FFV1_DECODER 1  
    254. #define CONFIG_FFVHUFF_DECODER 1  
    255. #define CONFIG_FLASHSV_DECODER 0  
    256. #define CONFIG_FLIC_DECODER 1  
    257. #define CONFIG_FLV_DECODER 1  
    258. #define CONFIG_FOURXM_DECODER 1  
    259. #define CONFIG_FRAPS_DECODER 1  
    260. #define CONFIG_FRWU_DECODER 1  
    261. #define CONFIG_GIF_DECODER 1  
    262. #define CONFIG_H261_DECODER 1  
    263. #define CONFIG_H263_DECODER 1  
    264. #define CONFIG_H263I_DECODER 1  
    265. #define CONFIG_H264_DECODER 1  
    266. #define CONFIG_H264_VDPAU_DECODER 0  
    267. #define CONFIG_HUFFYUV_DECODER 1  
    268. #define CONFIG_IDCIN_DECODER 1  
    269. #define CONFIG_IFF_BYTERUN1_DECODER 1  
    270. #define CONFIG_IFF_ILBM_DECODER 1  
    271. #define CONFIG_INDEO2_DECODER 1  
    272. #define CONFIG_INDEO3_DECODER 1  
    273. #define CONFIG_INDEO5_DECODER 1  
    274. #define CONFIG_INTERPLAY_VIDEO_DECODER 1  
    275. #define CONFIG_JPEGLS_DECODER 1  
    276. #define CONFIG_KGV1_DECODER 1  
    277. #define CONFIG_KMVC_DECODER 1  
    278. #define CONFIG_LOCO_DECODER 1  
    279. #define CONFIG_MDEC_DECODER 1  
    280. #define CONFIG_MIMIC_DECODER 1  
    281. #define CONFIG_MJPEG_DECODER 1  
    282. #define CONFIG_MJPEGB_DECODER 1  
    283. #define CONFIG_MMVIDEO_DECODER 1  
    284. #define CONFIG_MOTIONPIXELS_DECODER 1  
    285. #define CONFIG_MPEG_XVMC_DECODER 0  
    286. #define CONFIG_MPEG1VIDEO_DECODER 1  
    287. #define CONFIG_MPEG2VIDEO_DECODER 1  
    288. #define CONFIG_MPEG4_DECODER 1  
    289. #define CONFIG_MPEG4_VDPAU_DECODER 0  
    290. #define CONFIG_MPEGVIDEO_DECODER 1  
    291. #define CONFIG_MPEG_VDPAU_DECODER 0  
    292. #define CONFIG_MPEG1_VDPAU_DECODER 0  
    293. #define CONFIG_MSMPEG4V1_DECODER 1  
    294. #define CONFIG_MSMPEG4V2_DECODER 1  
    295. #define CONFIG_MSMPEG4V3_DECODER 1  
    296. #define CONFIG_MSRLE_DECODER 1  
    297. #define CONFIG_MSVIDEO1_DECODER 1  
    298. #define CONFIG_MSZH_DECODER 1  
    299. #define CONFIG_NUV_DECODER 1  
    300. #define CONFIG_PAM_DECODER 1  
    301. #define CONFIG_PBM_DECODER 1  
    302. #define CONFIG_PCX_DECODER 1  
    303. #define CONFIG_PGM_DECODER 1  
    304. #define CONFIG_PGMYUV_DECODER 1  
    305. #define CONFIG_PICTOR_DECODER 1  
    306. #define CONFIG_PNG_DECODER 0  
    307. #define CONFIG_PPM_DECODER 1  
    308. #define CONFIG_PTX_DECODER 1  
    309. #define CONFIG_QDRAW_DECODER 1  
    310. #define CONFIG_QPEG_DECODER 1  
    311. #define CONFIG_QTRLE_DECODER 1  
    312. #define CONFIG_R210_DECODER 1  
    313. #define CONFIG_RAWVIDEO_DECODER 1  
    314. #define CONFIG_RL2_DECODER 1  
    315. #define CONFIG_ROQ_DECODER 1  
    316. #define CONFIG_RPZA_DECODER 1  
    317. #define CONFIG_RV10_DECODER 1  
    318. #define CONFIG_RV20_DECODER 1  
    319. #define CONFIG_RV30_DECODER 1  
    320. #define CONFIG_RV40_DECODER 1  
    321. #define CONFIG_SGI_DECODER 1  
    322. #define CONFIG_SMACKER_DECODER 1  
    323. #define CONFIG_SMC_DECODER 1  
    324. #define CONFIG_SNOW_DECODER 1  
    325. #define CONFIG_SP5X_DECODER 1  
    326. #define CONFIG_SUNRAST_DECODER 1  
    327. #define CONFIG_SVQ1_DECODER 1  
    328. #define CONFIG_SVQ3_DECODER 1  
    329. #define CONFIG_TARGA_DECODER 1  
    330. #define CONFIG_THEORA_DECODER 1  
    331. #define CONFIG_THP_DECODER 1  
    332. #define CONFIG_TIERTEXSEQVIDEO_DECODER 1  
    333. #define CONFIG_TIFF_DECODER 1  
    334. #define CONFIG_TMV_DECODER 1  
    335. #define CONFIG_TRUEMOTION1_DECODER 1  
    336. #define CONFIG_TRUEMOTION2_DECODER 1  
    337. #define CONFIG_TSCC_DECODER 0  
    338. #define CONFIG_TXD_DECODER 1  
    339. #define CONFIG_ULTI_DECODER 1  
    340. #define CONFIG_V210_DECODER 1  
    341. #define CONFIG_V210X_DECODER 1  
    342. #define CONFIG_VB_DECODER 1  
    343. #define CONFIG_VC1_DECODER 1  
    344. #define CONFIG_VC1_VDPAU_DECODER 0  
    345. #define CONFIG_VCR1_DECODER 1  
    346. #define CONFIG_VMDVIDEO_DECODER 1  
    347. #define CONFIG_VMNC_DECODER 1  
    348. #define CONFIG_VP3_DECODER 1  
    349. #define CONFIG_VP5_DECODER 1  
    350. #define CONFIG_VP6_DECODER 1  
    351. #define CONFIG_VP6A_DECODER 1  
    352. #define CONFIG_VP6F_DECODER 1  
    353. #define CONFIG_VQA_DECODER 1  
    354. #define CONFIG_WMV1_DECODER 1  
    355. #define CONFIG_WMV2_DECODER 1  
    356. #define CONFIG_WMV3_DECODER 1  
    357. #define CONFIG_WMV3_VDPAU_DECODER 0  
    358. #define CONFIG_WNV1_DECODER 1  
    359. #define CONFIG_XAN_WC3_DECODER 1  
    360. #define CONFIG_XL_DECODER 1  
    361. #define CONFIG_YOP_DECODER 1  
    362. #define CONFIG_ZLIB_DECODER 0  
    363. #define CONFIG_ZMBV_DECODER 0  
    364. #define CONFIG_AAC_DECODER 1  
    365. #define CONFIG_AC3_DECODER 1  
    366. #define CONFIG_ALAC_DECODER 1  
    367. #define CONFIG_ALS_DECODER 1  
    368. #define CONFIG_AMRNB_DECODER 1  
    369. #define CONFIG_APE_DECODER 1  
    370. #define CONFIG_ATRAC1_DECODER 1  
    371. #define CONFIG_ATRAC3_DECODER 1  
    372. #define CONFIG_BINKAUDIO_DCT_DECODER 1  
    373. #define CONFIG_BINKAUDIO_RDFT_DECODER 1  
    374. #define CONFIG_COOK_DECODER 1  
    375. #define CONFIG_DCA_DECODER 1  
    376. #define CONFIG_DSICINAUDIO_DECODER 1  
    377. #define CONFIG_EAC3_DECODER 1  
    378. #define CONFIG_FLAC_DECODER 1  
    379. #define CONFIG_IMC_DECODER 1  
    380. #define CONFIG_MACE3_DECODER 1  
    381. #define CONFIG_MACE6_DECODER 1  
    382. #define CONFIG_MLP_DECODER 1  
    383. #define CONFIG_MP1_DECODER 1  
    384. #define CONFIG_MP1FLOAT_DECODER 1  
    385. #define CONFIG_MP2_DECODER 1  
    386. #define CONFIG_MP2FLOAT_DECODER 1  
    387. #define CONFIG_MP3_DECODER 1  
    388. #define CONFIG_MP3FLOAT_DECODER 1  
    389. #define CONFIG_MP3ADU_DECODER 1  
    390. #define CONFIG_MP3ADUFLOAT_DECODER 1  
    391. #define CONFIG_MP3ON4_DECODER 1  
    392. #define CONFIG_MP3ON4FLOAT_DECODER 1  
    393. #define CONFIG_MPC7_DECODER 1  
    394. #define CONFIG_MPC8_DECODER 1  
    395. #define CONFIG_NELLYMOSER_DECODER 1  
    396. #define CONFIG_QCELP_DECODER 1  
    397. #define CONFIG_QDM2_DECODER 1  
    398. #define CONFIG_RA_144_DECODER 1  
    399. #define CONFIG_RA_288_DECODER 1  
    400. #define CONFIG_SHORTEN_DECODER 1  
    401. #define CONFIG_SIPR_DECODER 1  
    402. #define CONFIG_SMACKAUD_DECODER 1  
    403. #define CONFIG_SONIC_DECODER 1  
    404. #define CONFIG_TRUEHD_DECODER 1  
    405. #define CONFIG_TRUESPEECH_DECODER 1  
    406. #define CONFIG_TTA_DECODER 1  
    407. #define CONFIG_TWINVQ_DECODER 1  
    408. #define CONFIG_VMDAUDIO_DECODER 1  
    409. #define CONFIG_VORBIS_DECODER 1  
    410. #define CONFIG_WAVPACK_DECODER 1  
    411. #define CONFIG_WMAPRO_DECODER 1  
    412. #define CONFIG_WMAV1_DECODER 1  
    413. #define CONFIG_WMAV2_DECODER 1  
    414. #define CONFIG_WMAVOICE_DECODER 1  
    415. #define CONFIG_WS_SND1_DECODER 1  
    416. #define CONFIG_PCM_ALAW_DECODER 1  
    417. #define CONFIG_PCM_BLURAY_DECODER 1  
    418. #define CONFIG_PCM_DVD_DECODER 1  
    419. #define CONFIG_PCM_F32BE_DECODER 1  
    420. #define CONFIG_PCM_F32LE_DECODER 1  
    421. #define CONFIG_PCM_F64BE_DECODER 1  
    422. #define CONFIG_PCM_F64LE_DECODER 1  
    423. #define CONFIG_PCM_MULAW_DECODER 1  
    424. #define CONFIG_PCM_S8_DECODER 1  
    425. #define CONFIG_PCM_S16BE_DECODER 1  
    426. #define CONFIG_PCM_S16LE_DECODER 1  
    427. #define CONFIG_PCM_S16LE_PLANAR_DECODER 1  
    428. #define CONFIG_PCM_S24BE_DECODER 1  
    429. #define CONFIG_PCM_S24DAUD_DECODER 1  
    430. #define CONFIG_PCM_S24LE_DECODER 1  
    431. #define CONFIG_PCM_S32BE_DECODER 1  
    432. #define CONFIG_PCM_S32LE_DECODER 1  
    433. #define CONFIG_PCM_U8_DECODER 1  
    434. #define CONFIG_PCM_U16BE_DECODER 1  
    435. #define CONFIG_PCM_U16LE_DECODER 1  
    436. #define CONFIG_PCM_U24BE_DECODER 1  
    437. #define CONFIG_PCM_U24LE_DECODER 1  
    438. #define CONFIG_PCM_U32BE_DECODER 1  
    439. #define CONFIG_PCM_U32LE_DECODER 1  
    440. #define CONFIG_PCM_ZORK_DECODER 1  
    441. #define CONFIG_INTERPLAY_DPCM_DECODER 1  
    442. #define CONFIG_ROQ_DPCM_DECODER 1  
    443. #define CONFIG_SOL_DPCM_DECODER 1  
    444. #define CONFIG_XAN_DPCM_DECODER 1  
    445. #define CONFIG_ADPCM_4XM_DECODER 1  
    446. #define CONFIG_ADPCM_ADX_DECODER 1  
    447. #define CONFIG_ADPCM_CT_DECODER 1  
    448. #define CONFIG_ADPCM_EA_DECODER 1  
    449. #define CONFIG_ADPCM_EA_MAXIS_XA_DECODER 1  
    450. #define CONFIG_ADPCM_EA_R1_DECODER 1  
    451. #define CONFIG_ADPCM_EA_R2_DECODER 1  
    452. #define CONFIG_ADPCM_EA_R3_DECODER 1  
    453. #define CONFIG_ADPCM_EA_XAS_DECODER 1  
    454. #define CONFIG_ADPCM_G726_DECODER 1  
    455. #define CONFIG_ADPCM_IMA_AMV_DECODER 1  
    456. #define CONFIG_ADPCM_IMA_DK3_DECODER 1  
    457. #define CONFIG_ADPCM_IMA_DK4_DECODER 1  
    458. #define CONFIG_ADPCM_IMA_EA_EACS_DECODER 1  
    459. #define CONFIG_ADPCM_IMA_EA_SEAD_DECODER 1  
    460. #define CONFIG_ADPCM_IMA_ISS_DECODER 1  
    461. #define CONFIG_ADPCM_IMA_QT_DECODER 1  
    462. #define CONFIG_ADPCM_IMA_SMJPEG_DECODER 1  
    463. #define CONFIG_ADPCM_IMA_WAV_DECODER 1  
    464. #define CONFIG_ADPCM_IMA_WS_DECODER 1  
    465. #define CONFIG_ADPCM_MS_DECODER 1  
    466. #define CONFIG_ADPCM_SBPRO_2_DECODER 1  
    467. #define CONFIG_ADPCM_SBPRO_3_DECODER 1  
    468. #define CONFIG_ADPCM_SBPRO_4_DECODER 1  
    469. #define CONFIG_ADPCM_SWF_DECODER 1  
    470. #define CONFIG_ADPCM_THP_DECODER 1  
    471. #define CONFIG_ADPCM_XA_DECODER 1  
    472. #define CONFIG_ADPCM_YAMAHA_DECODER 1  
    473. #define CONFIG_DVBSUB_DECODER 1  
    474. #define CONFIG_DVDSUB_DECODER 1  
    475. #define CONFIG_PGSSUB_DECODER 1  
    476. #define CONFIG_XSUB_DECODER 1  
    477. #define CONFIG_LIBDIRAC_DECODER 0  
    478. #define CONFIG_LIBGSM_DECODER 0  
    479. #define CONFIG_LIBGSM_MS_DECODER 0  
    480. #define CONFIG_LIBOPENCORE_AMRNB_DECODER 0  
    481. #define CONFIG_LIBOPENCORE_AMRWB_DECODER 0  
    482. #define CONFIG_LIBOPENJPEG_DECODER 0  
    483. #define CONFIG_LIBSCHROEDINGER_DECODER 0  
    484. #define CONFIG_LIBSPEEX_DECODER 0  
    485. #define CONFIG_LIBVPX_DECODER 0  
    486. #define CONFIG_ASV1_ENCODER 1  
    487. #define CONFIG_ASV2_ENCODER 1  
    488. #define CONFIG_BMP_ENCODER 1  
    489. #define CONFIG_DNXHD_ENCODER 1  
    490. #define CONFIG_DVVIDEO_ENCODER 1  
    491. #define CONFIG_FFV1_ENCODER 1  
    492. #define CONFIG_FFVHUFF_ENCODER 1  
    493. #define CONFIG_FLASHSV_ENCODER 0  
    494. #define CONFIG_FLV_ENCODER 1  
    495. #define CONFIG_GIF_ENCODER 1  
    496. #define CONFIG_H261_ENCODER 1  
    497. #define CONFIG_H263_ENCODER 1  
    498. #define CONFIG_H263P_ENCODER 1  
    499. #define CONFIG_HUFFYUV_ENCODER 1  
    500. #define CONFIG_JPEGLS_ENCODER 1  
    501. #define CONFIG_LJPEG_ENCODER 1  
    502. #define CONFIG_MJPEG_ENCODER 1  
    503. #define CONFIG_MPEG1VIDEO_ENCODER 1  
    504. #define CONFIG_MPEG2VIDEO_ENCODER 1  
    505. #define CONFIG_MPEG4_ENCODER 1  
    506. #define CONFIG_MSMPEG4V1_ENCODER 1  
    507. #define CONFIG_MSMPEG4V2_ENCODER 1  
    508. #define CONFIG_MSMPEG4V3_ENCODER 1  
    509. #define CONFIG_PAM_ENCODER 1  
    510. #define CONFIG_PBM_ENCODER 1  
    511. #define CONFIG_PCX_ENCODER 1  
    512. #define CONFIG_PGM_ENCODER 1  
    513. #define CONFIG_PGMYUV_ENCODER 1  
    514. #define CONFIG_PNG_ENCODER 0  
    515. #define CONFIG_PPM_ENCODER 1  
    516. #define CONFIG_QTRLE_ENCODER 1  
    517. #define CONFIG_RAWVIDEO_ENCODER 1  
    518. #define CONFIG_ROQ_ENCODER 1  
    519. #define CONFIG_RV10_ENCODER 1  
    520. #define CONFIG_RV20_ENCODER 1  
    521. #define CONFIG_SGI_ENCODER 1  
    522. #define CONFIG_SNOW_ENCODER 1  
    523. #define CONFIG_SVQ1_ENCODER 1  
    524. #define CONFIG_TARGA_ENCODER 1  
    525. #define CONFIG_TIFF_ENCODER 1  
    526. #define CONFIG_V210_ENCODER 1  
    527. #define CONFIG_WMV1_ENCODER 1  
    528. #define CONFIG_WMV2_ENCODER 1  
    529. #define CONFIG_ZLIB_ENCODER 0  
    530. #define CONFIG_ZMBV_ENCODER 0  
    531. #define CONFIG_AAC_ENCODER 1  
    532. #define CONFIG_AC3_ENCODER 1  
    533. #define CONFIG_ALAC_ENCODER 1  
    534. #define CONFIG_FLAC_ENCODER 1  
    535. #define CONFIG_MP2_ENCODER 1  
    536. #define CONFIG_NELLYMOSER_ENCODER 1  
    537. #define CONFIG_RA_144_ENCODER 1  
    538. #define CONFIG_SONIC_ENCODER 1  
    539. #define CONFIG_SONIC_LS_ENCODER 1  
    540. #define CONFIG_VORBIS_ENCODER 1  
    541. #define CONFIG_WMAV1_ENCODER 1  
    542. #define CONFIG_WMAV2_ENCODER 1  
    543. #define CONFIG_PCM_ALAW_ENCODER 1  
    544. #define CONFIG_PCM_F32BE_ENCODER 1  
    545. #define CONFIG_PCM_F32LE_ENCODER 1  
    546. #define CONFIG_PCM_F64BE_ENCODER 1  
    547. #define CONFIG_PCM_F64LE_ENCODER 1  
    548. #define CONFIG_PCM_MULAW_ENCODER 1  
    549. #define CONFIG_PCM_S8_ENCODER 1  
    550. #define CONFIG_PCM_S16BE_ENCODER 1  
    551. #define CONFIG_PCM_S16LE_ENCODER 1  
    552. #define CONFIG_PCM_S24BE_ENCODER 1  
    553. #define CONFIG_PCM_S24DAUD_ENCODER 1  
    554. #define CONFIG_PCM_S24LE_ENCODER 1  
    555. #define CONFIG_PCM_S32BE_ENCODER 1  
    556. #define CONFIG_PCM_S32LE_ENCODER 1  
    557. #define CONFIG_PCM_U8_ENCODER 1  
    558. #define CONFIG_PCM_U16BE_ENCODER 1  
    559. #define CONFIG_PCM_U16LE_ENCODER 1  
    560. #define CONFIG_PCM_U24BE_ENCODER 1  
    561. #define CONFIG_PCM_U24LE_ENCODER 1  
    562. #define CONFIG_PCM_U32BE_ENCODER 1  
    563. #define CONFIG_PCM_U32LE_ENCODER 1  
    564. #define CONFIG_PCM_ZORK_ENCODER 1  
    565. #define CONFIG_ROQ_DPCM_ENCODER 1  
    566. #define CONFIG_ADPCM_ADX_ENCODER 1  
    567. #define CONFIG_ADPCM_G726_ENCODER 1  
    568. #define CONFIG_ADPCM_IMA_QT_ENCODER 1  
    569. #define CONFIG_ADPCM_IMA_WAV_ENCODER 1  
    570. #define CONFIG_ADPCM_MS_ENCODER 1  
    571. #define CONFIG_ADPCM_SWF_ENCODER 1  
    572. #define CONFIG_ADPCM_YAMAHA_ENCODER 1  
    573. #define CONFIG_DVBSUB_ENCODER 1  
    574. #define CONFIG_DVDSUB_ENCODER 1  
    575. #define CONFIG_XSUB_ENCODER 1  
    576. #define CONFIG_LIBDIRAC_ENCODER 0  
    577. #define CONFIG_LIBFAAC_ENCODER 0  
    578. #define CONFIG_LIBGSM_ENCODER 0  
    579. #define CONFIG_LIBGSM_MS_ENCODER 0  
    580. #define CONFIG_LIBMP3LAME_ENCODER 0  
    581. #define CONFIG_LIBOPENCORE_AMRNB_ENCODER 0  
    582. #define CONFIG_LIBSCHROEDINGER_ENCODER 0  
    583. #define CONFIG_LIBTHEORA_ENCODER 0  
    584. #define CONFIG_LIBVORBIS_ENCODER 0  
    585. #define CONFIG_LIBVPX_ENCODER 0  
    586. #define CONFIG_LIBX264_ENCODER 0  
    587. #define CONFIG_LIBXVID_ENCODER 0  
    588. #define CONFIG_H263_VAAPI_HWACCEL 0  
    589. #define CONFIG_H264_DXVA2_HWACCEL 0  
    590. #define CONFIG_H264_VAAPI_HWACCEL 0  
    591. #define CONFIG_MPEG2_DXVA2_HWACCEL 0  
    592. #define CONFIG_MPEG2_VAAPI_HWACCEL 0  
    593. #define CONFIG_MPEG4_VAAPI_HWACCEL 0  
    594. #define CONFIG_VC1_DXVA2_HWACCEL 0  
    595. #define CONFIG_VC1_VAAPI_HWACCEL 0  
    596. #define CONFIG_WMV3_DXVA2_HWACCEL 0  
    597. #define CONFIG_WMV3_VAAPI_HWACCEL 0  
    598. #define CONFIG_AAC_PARSER 1  
    599. #define CONFIG_AC3_PARSER 1  
    600. #define CONFIG_CAVSVIDEO_PARSER 1  
    601. #define CONFIG_DCA_PARSER 1  
    602. #define CONFIG_DIRAC_PARSER 1  
    603. #define CONFIG_DNXHD_PARSER 1  
    604. #define CONFIG_DVBSUB_PARSER 1  
    605. #define CONFIG_DVDSUB_PARSER 1  
    606. #define CONFIG_H261_PARSER 1  
    607. #define CONFIG_H263_PARSER 1  
    608. #define CONFIG_H264_PARSER 1  
    609. #define CONFIG_MJPEG_PARSER 1  
    610. #define CONFIG_MLP_PARSER 1  
    611. #define CONFIG_MPEG4VIDEO_PARSER 1  
    612. #define CONFIG_MPEGAUDIO_PARSER 1  
    613. #define CONFIG_MPEGVIDEO_PARSER 1  
    614. #define CONFIG_PNM_PARSER 1  
    615. #define CONFIG_VC1_PARSER 1  
    616. #define CONFIG_VP3_PARSER 1  
    617. #define CONFIG_VP8_PARSER 1  
    618. #define CONFIG_AAC_ADTSTOASC_BSF 1  
    619. #define CONFIG_CHOMP_BSF 1  
    620. #define CONFIG_DUMP_EXTRADATA_BSF 1  
    621. #define CONFIG_H264_MP4TOANNEXB_BSF 1  
    622. #define CONFIG_IMX_DUMP_HEADER_BSF 1  
    623. #define CONFIG_MJPEGA_DUMP_HEADER_BSF 1  
    624. #define CONFIG_MP3_HEADER_COMPRESS_BSF 1  
    625. #define CONFIG_MP3_HEADER_DECOMPRESS_BSF 1  
    626. #define CONFIG_MOV2TEXTSUB_BSF 1  
    627. #define CONFIG_NOISE_BSF 1  
    628. #define CONFIG_REMOVE_EXTRADATA_BSF 1  
    629. #define CONFIG_TEXT2MOVSUB_BSF 1  
    630. #define CONFIG_AAC_DEMUXER 1  
    631. #define CONFIG_AC3_DEMUXER 1  
    632. #define CONFIG_AEA_DEMUXER 1  
    633. #define CONFIG_AIFF_DEMUXER 1  
    634. #define CONFIG_AMR_DEMUXER 1  
    635. #define CONFIG_ANM_DEMUXER 1  
    636. #define CONFIG_APC_DEMUXER 1  
    637. #define CONFIG_APE_DEMUXER 1  
    638. #define CONFIG_ASF_DEMUXER 1  
    639. #define CONFIG_ASS_DEMUXER 1  
    640. #define CONFIG_AU_DEMUXER 1  
    641. #define CONFIG_AVI_DEMUXER 1  
    642. #define CONFIG_AVISYNTH_DEMUXER 0  
    643. #define CONFIG_AVS_DEMUXER 1  
    644. #define CONFIG_BETHSOFTVID_DEMUXER 1  
    645. #define CONFIG_BFI_DEMUXER 1  
    646. #define CONFIG_BINK_DEMUXER 1  
    647. #define CONFIG_C93_DEMUXER 1  
    648. #define CONFIG_CAF_DEMUXER 1  
    649. #define CONFIG_CAVSVIDEO_DEMUXER 1  
    650. #define CONFIG_CDG_DEMUXER 1  
    651. #define CONFIG_DAUD_DEMUXER 1  
    652. #define CONFIG_DIRAC_DEMUXER 1  
    653. #define CONFIG_DNXHD_DEMUXER 1  
    654. #define CONFIG_DSICIN_DEMUXER 1  
    655. #define CONFIG_DTS_DEMUXER 1  
    656. #define CONFIG_DV_DEMUXER 1  
    657. #define CONFIG_DXA_DEMUXER 1  
    658. #define CONFIG_EA_DEMUXER 1  
    659. #define CONFIG_EA_CDATA_DEMUXER 1  
    660. #define CONFIG_EAC3_DEMUXER 1  
    661. #define CONFIG_FFM_DEMUXER 1  
    662. #define CONFIG_FILMSTRIP_DEMUXER 1  
    663. #define CONFIG_FLAC_DEMUXER 1  
    664. #define CONFIG_FLIC_DEMUXER 1  
    665. #define CONFIG_FLV_DEMUXER 1  
    666. #define CONFIG_FOURXM_DEMUXER 1  
    667. #define CONFIG_GSM_DEMUXER 1  
    668. #define CONFIG_GXF_DEMUXER 1  
    669. #define CONFIG_H261_DEMUXER 1  
    670. #define CONFIG_H263_DEMUXER 1  
    671. #define CONFIG_H264_DEMUXER 1  
    672. #define CONFIG_IDCIN_DEMUXER 1  
    673. #define CONFIG_IFF_DEMUXER 1  
    674. #define CONFIG_IMAGE2_DEMUXER 1  
    675. #define CONFIG_IMAGE2PIPE_DEMUXER 1  
    676. #define CONFIG_INGENIENT_DEMUXER 1  
    677. #define CONFIG_IPMOVIE_DEMUXER 1  
    678. #define CONFIG_ISS_DEMUXER 1  
    679. #define CONFIG_IV8_DEMUXER 1  
    680. #define CONFIG_IVF_DEMUXER 1  
    681. #define CONFIG_LMLM4_DEMUXER 1  
    682. #define CONFIG_M4V_DEMUXER 1  
    683. #define CONFIG_MATROSKA_DEMUXER 1  
    684. #define CONFIG_MJPEG_DEMUXER 1  
    685. #define CONFIG_MLP_DEMUXER 1  
    686. #define CONFIG_MM_DEMUXER 1  
    687. #define CONFIG_MMF_DEMUXER 1  
    688. #define CONFIG_MOV_DEMUXER 1  
    689. #define CONFIG_MP3_DEMUXER 1  
    690. #define CONFIG_MPC_DEMUXER 1  
    691. #define CONFIG_MPC8_DEMUXER 1  
    692. #define CONFIG_MPEGPS_DEMUXER 1  
    693. #define CONFIG_MPEGTS_DEMUXER 1  
    694. #define CONFIG_MPEGTSRAW_DEMUXER 1  
    695. #define CONFIG_MPEGVIDEO_DEMUXER 1  
    696. #define CONFIG_MSNWC_TCP_DEMUXER 1  
    697. #define CONFIG_MTV_DEMUXER 1  
    698. #define CONFIG_MVI_DEMUXER 1  
    699. #define CONFIG_MXF_DEMUXER 1  
    700. #define CONFIG_NC_DEMUXER 1  
    701. #define CONFIG_NSV_DEMUXER 1  
    702. #define CONFIG_NUT_DEMUXER 1  
    703. #define CONFIG_NUV_DEMUXER 1  
    704. #define CONFIG_OGG_DEMUXER 0  
    705. #define CONFIG_OMA_DEMUXER 1  
    706. #define CONFIG_PCM_ALAW_DEMUXER 1  
    707. #define CONFIG_PCM_MULAW_DEMUXER 1  
    708. #define CONFIG_PCM_F64BE_DEMUXER 1  
    709. #define CONFIG_PCM_F64LE_DEMUXER 1  
    710. #define CONFIG_PCM_F32BE_DEMUXER 1  
    711. #define CONFIG_PCM_F32LE_DEMUXER 1  
    712. #define CONFIG_PCM_S32BE_DEMUXER 1  
    713. #define CONFIG_PCM_S32LE_DEMUXER 1  
    714. #define CONFIG_PCM_S24BE_DEMUXER 1  
    715. #define CONFIG_PCM_S24LE_DEMUXER 1  
    716. #define CONFIG_PCM_S16BE_DEMUXER 1  
    717. #define CONFIG_PCM_S16LE_DEMUXER 1  
    718. #define CONFIG_PCM_S8_DEMUXER 1  
    719. #define CONFIG_PCM_U32BE_DEMUXER 1  
    720. #define CONFIG_PCM_U32LE_DEMUXER 1  
    721. #define CONFIG_PCM_U24BE_DEMUXER 1  
    722. #define CONFIG_PCM_U24LE_DEMUXER 1  
    723. #define CONFIG_PCM_U16BE_DEMUXER 1  
    724. #define CONFIG_PCM_U16LE_DEMUXER 1  
    725. #define CONFIG_PCM_U8_DEMUXER 1  
    726. #define CONFIG_PVA_DEMUXER 1  
    727. #define CONFIG_QCP_DEMUXER 1  
    728. #define CONFIG_R3D_DEMUXER 1  
    729. #define CONFIG_RAWVIDEO_DEMUXER 1  
    730. #define CONFIG_RL2_DEMUXER 1  
    731. #define CONFIG_RM_DEMUXER 1  
    732. #define CONFIG_ROQ_DEMUXER 1  
    733. #define CONFIG_RPL_DEMUXER 1  
    734. #define CONFIG_RTSP_DEMUXER 0  
    735. #define CONFIG_SDP_DEMUXER 0  
    736. #define CONFIG_SEGAFILM_DEMUXER 1  
    737. #define CONFIG_SHORTEN_DEMUXER 1  
    738. #define CONFIG_SIFF_DEMUXER 1  
    739. #define CONFIG_SMACKER_DEMUXER 1  
    740. #define CONFIG_SOL_DEMUXER 1  
    741. #define CONFIG_SOX_DEMUXER 1  
    742. #define CONFIG_STR_DEMUXER 1  
    743. #define CONFIG_SWF_DEMUXER 1  
    744. #define CONFIG_THP_DEMUXER 1  
    745. #define CONFIG_TIERTEXSEQ_DEMUXER 1  
    746. #define CONFIG_TMV_DEMUXER 1  
    747. #define CONFIG_TRUEHD_DEMUXER 1  
    748. #define CONFIG_TTA_DEMUXER 1  
    749. #define CONFIG_TXD_DEMUXER 1  
    750. #define CONFIG_VC1_DEMUXER 1  
    751. #define CONFIG_VC1T_DEMUXER 1  
    752. #define CONFIG_VMD_DEMUXER 1  
    753. #define CONFIG_VOC_DEMUXER 1  
    754. #define CONFIG_VQF_DEMUXER 1  
    755. #define CONFIG_W64_DEMUXER 1  
    756. #define CONFIG_WAV_DEMUXER 1  
    757. #define CONFIG_WC3_DEMUXER 1  
    758. #define CONFIG_WSAUD_DEMUXER 1  
    759. #define CONFIG_WSVQA_DEMUXER 1  
    760. #define CONFIG_WV_DEMUXER 1  
    761. #define CONFIG_XA_DEMUXER 1  
    762. #define CONFIG_YOP_DEMUXER 1  
    763. #define CONFIG_YUV4MPEGPIPE_DEMUXER 1  
    764. #define CONFIG_LIBNUT_DEMUXER 0  
    765. #define CONFIG_AC3_MUXER 1  
    766. #define CONFIG_ADTS_MUXER 1  
    767. #define CONFIG_AIFF_MUXER 1  
    768. #define CONFIG_AMR_MUXER 1  
    769. #define CONFIG_ASF_MUXER 1  
    770. #define CONFIG_ASS_MUXER 1  
    771. #define CONFIG_ASF_STREAM_MUXER 1  
    772. #define CONFIG_AU_MUXER 1  
    773. #define CONFIG_AVI_MUXER 1  
    774. #define CONFIG_AVM2_MUXER 1  
    775. #define CONFIG_CRC_MUXER 1  
    776. #define CONFIG_DAUD_MUXER 1  
    777. #define CONFIG_DIRAC_MUXER 1  
    778. #define CONFIG_DNXHD_MUXER 1  
    779. #define CONFIG_DTS_MUXER 1  
    780. #define CONFIG_DV_MUXER 1  
    781. #define CONFIG_EAC3_MUXER 1  
    782. #define CONFIG_FFM_MUXER 1  
    783. #define CONFIG_FILMSTRIP_MUXER 1  
    784. #define CONFIG_FLAC_MUXER 1  
    785. #define CONFIG_FLV_MUXER 1  
    786. #define CONFIG_FRAMECRC_MUXER 1  
    787. #define CONFIG_FRAMEMD5_MUXER 1  
    788. #define CONFIG_GIF_MUXER 1  
    789. #define CONFIG_GXF_MUXER 1  
    790. #define CONFIG_H261_MUXER 1  
    791. #define CONFIG_H263_MUXER 1  
    792. #define CONFIG_H264_MUXER 1  
    793. #define CONFIG_IMAGE2_MUXER 1  
    794. #define CONFIG_IMAGE2PIPE_MUXER 1  
    795. #define CONFIG_IPOD_MUXER 1  
    796. #define CONFIG_M4V_MUXER 1  
    797. #define CONFIG_MD5_MUXER 1  
    798. #define CONFIG_MATROSKA_MUXER 1  
    799. #define CONFIG_MATROSKA_AUDIO_MUXER 1  
    800. #define CONFIG_MJPEG_MUXER 1  
    801. #define CONFIG_MLP_MUXER 1  
    802. #define CONFIG_MMF_MUXER 1  
    803. #define CONFIG_MOV_MUXER 1  
    804. #define CONFIG_MP2_MUXER 1  
    805. #define CONFIG_MP3_MUXER 1  
    806. #define CONFIG_MP4_MUXER 1  
    807. #define CONFIG_MPEG1SYSTEM_MUXER 1  
    808. #define CONFIG_MPEG1VCD_MUXER 1  
    809. #define CONFIG_MPEG1VIDEO_MUXER 1  
    810. #define CONFIG_MPEG2DVD_MUXER 1  
    811. #define CONFIG_MPEG2SVCD_MUXER 1  
    812. #define CONFIG_MPEG2VIDEO_MUXER 1  
    813. #define CONFIG_MPEG2VOB_MUXER 1  
    814. #define CONFIG_MPEGTS_MUXER 1  
    815. #define CONFIG_MPJPEG_MUXER 1  
    816. #define CONFIG_MXF_MUXER 1  
    817. #define CONFIG_MXF_D10_MUXER 1  
    818. #define CONFIG_NULL_MUXER 1  
    819. #define CONFIG_NUT_MUXER 1  
    820. #define CONFIG_OGG_MUXER 0  
    821. #define CONFIG_PCM_ALAW_MUXER 1  
    822. #define CONFIG_PCM_MULAW_MUXER 1  
    823. #define CONFIG_PCM_F64BE_MUXER 1  
    824. #define CONFIG_PCM_F64LE_MUXER 1  
    825. #define CONFIG_PCM_F32BE_MUXER 1  
    826. #define CONFIG_PCM_F32LE_MUXER 1  
    827. #define CONFIG_PCM_S32BE_MUXER 1  
    828. #define CONFIG_PCM_S32LE_MUXER 1  
    829. #define CONFIG_PCM_S24BE_MUXER 1  
    830. #define CONFIG_PCM_S24LE_MUXER 1  
    831. #define CONFIG_PCM_S16BE_MUXER 1  
    832. #define CONFIG_PCM_S16LE_MUXER 1  
    833. #define CONFIG_PCM_S8_MUXER 1  
    834. #define CONFIG_PCM_U32BE_MUXER 1  
    835. #define CONFIG_PCM_U32LE_MUXER 1  
    836. #define CONFIG_PCM_U24BE_MUXER 1  
    837. #define CONFIG_PCM_U24LE_MUXER 1  
    838. #define CONFIG_PCM_U16BE_MUXER 1  
    839. #define CONFIG_PCM_U16LE_MUXER 1  
    840. #define CONFIG_PCM_U8_MUXER 1  
    841. #define CONFIG_PSP_MUXER 1  
    842. #define CONFIG_RAWVIDEO_MUXER 1  
    843. #define CONFIG_RM_MUXER 1  
    844. #define CONFIG_ROQ_MUXER 1  
    845. #define CONFIG_RTP_MUXER 1  
    846. #define CONFIG_RTSP_MUXER 0  
    847. #define CONFIG_SOX_MUXER 1  
    848. #define CONFIG_SPDIF_MUXER 1  
    849. #define CONFIG_SWF_MUXER 1  
    850. #define CONFIG_TG2_MUXER 1  
    851. #define CONFIG_TGP_MUXER 1  
    852. #define CONFIG_TRUEHD_MUXER 1  
    853. #define CONFIG_VC1T_MUXER 1  
    854. #define CONFIG_VOC_MUXER 1  
    855. #define CONFIG_WAV_MUXER 1  
    856. #define CONFIG_WEBM_MUXER 1  
    857. #define CONFIG_YUV4MPEGPIPE_MUXER 1  
    858. #define CONFIG_LIBNUT_MUXER 0  
    859. #define CONFIG_ASPECT_FILTER 1  
    860. #define CONFIG_CROP_FILTER 1  
    861. #define CONFIG_FORMAT_FILTER 1  
    862. #define CONFIG_NOFORMAT_FILTER 1  
    863. #define CONFIG_NULL_FILTER 1  
    864. #define CONFIG_PAD_FILTER 1  
    865. #define CONFIG_PIXELASPECT_FILTER 1  
    866. #define CONFIG_SCALE_FILTER 1  
    867. #define CONFIG_SLICIFY_FILTER 1  
    868. #define CONFIG_UNSHARP_FILTER 1  
    869. #define CONFIG_VFLIP_FILTER 1  
    870. #define CONFIG_BUFFER_FILTER 1  
    871. #define CONFIG_NULLSRC_FILTER 1  
    872. #define CONFIG_NULLSINK_FILTER 1  
    873. #define CONFIG_FILE_PROTOCOL 1  
    874. #define CONFIG_GOPHER_PROTOCOL 0  
    875. #define CONFIG_HTTP_PROTOCOL 1  
    876. #define CONFIG_MMST_PROTOCOL 0  
    877. #define CONFIG_PIPE_PROTOCOL 1  
    878. #define CONFIG_RTMP_PROTOCOL 0  
    879. #define CONFIG_RTMPT_PROTOCOL 1  
    880. #define CONFIG_RTMPE_PROTOCOL 1  
    881. #define CONFIG_RTMPTE_PROTOCOL 1  
    882. #define CONFIG_RTMPS_PROTOCOL 1  
    883. #define CONFIG_RTP_PROTOCOL 0  
    884. #define CONFIG_TCP_PROTOCOL 1  
    885. #define CONFIG_UDP_PROTOCOL 1  
    886. #define CONFIG_CONCAT_PROTOCOL 1  
    887. #define CONFIG_ALSA_INDEV 0  
    888. #define CONFIG_BKTR_INDEV 0  
    889. #define CONFIG_DV1394_INDEV 1  
    890. #define CONFIG_JACK_INDEV 0  
    891. #define CONFIG_OSS_INDEV 0  
    892. #define CONFIG_V4L2_INDEV 0  
    893. #define CONFIG_V4L_INDEV 0  
    894. #define CONFIG_VFWCAP_INDEV 0  
    895. #define CONFIG_X11_GRAB_DEVICE_INDEV 0  
    896. #define CONFIG_LIBDC1394_INDEV 0  
    897. #define CONFIG_ALSA_OUTDEV 0  
    898. #define CONFIG_OSS_OUTDEV 0  
    899. #endif /* FFMPEG_CONFIG_H */  

    FFMpeg自带的播放器ffplay对音视频的处理方法总结:

     

    1. 如果声音是CBR的(也就是固定码率),就以音频的时间戳为基准

    2. 如果视频时CBR,就以视频的时间戳为基准

    3. 如果都是VBR的,就参考外部时钟,通过av_gettime()获取微妙集的时钟。

    ffmpeg通过AVStream结构的time_base(有理 数由分子和分母组成)可以获取一个参考时间单位,所有音视频流的timestamp都是基于这个时间单位顺序递增,比如 time_base.num=1,time_base.den=90000,表示把1秒分成90000等份,音视频的pts和dts值就表示有多少个 1/90000等份,更简单一点假设time_base.num=1,time_base.den=1000,就表示1秒分成1000等份,相当于1毫 秒,那时间戳就表示是以毫秒为单位的,再做音视频处理时候,如果解码的速度比按照时间戳显示的速度快,那就简单不用丟帧(Drop Frame)处理,当解码速度很慢时(比如手机设备),就需要丢帧处理,是每两帧丟一帧数据,还是每3帧丟掉一帧数据,就需要根据延时显示程度来计算丢帧 的比率

    havlenapetr最新的ffmpeg可以直接编译通过,不过有个bug,就是播放完毕后,video_decoder线程不能退出,主要原因是阻塞在packet队列的Queue->get函数里,这里处理逻辑需要考虑两种情况:

    1. AVPacket队列里没有音视频帧数据时,解码线程挂起进入等待状态,有新的AVPacket加入队列时激活解码线程

    2. 如果文件读取到末尾,Queue->get直接返回-1,解码线程发现队列空时直接退出

    原文:http://blog.csdn.net/moruite/article/details/6305944

  • 相关阅读:
    数据结构-线性表-链表
    [poj 2991]Crane[线段树表示向量之和,而非数量]
    vector要注意的点
    vector与deque的区别
    sendfile复习
    GPU和CPU的区别
    常用Linux命令 mount df dd
    可省略的关键字
    父类与子类的virtual
    加快编译的技巧 & mount及tmpfs
  • 原文地址:https://www.cnblogs.com/sode/p/2886495.html
Copyright © 2020-2023  润新知