解决Android平台移植ffmpeg的一揽子有关问题

解决Android平台移植ffmpeg的一揽子问题???原文地址: http://blog.csdn.net/moruite/article/details/6305

解决Android平台移植ffmpeg的一揽子问题

?

?

?

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

?

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

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

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

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

?

解决Android平台移植ffmpeg的一揽子有关问题

图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,添加该文件:

??? 解决Android平台移植ffmpeg的一揽子有关问题

?

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

解决Android平台移植ffmpeg的一揽子有关问题

?

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

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

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

3. 实现Seek功能

3.1 要实现getCurrentPosition(), 因为拖动时传过来的是时间millisecond3.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

解决Android平台移植ffmpeg的一揽子有关问题? 解决Android平台移植ffmpeg的一揽子有关问题

?

其它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. 定制话播放控制栏界面,效果如下:

?

解决Android平台移植ffmpeg的一揽子有关问题

替换ffmpeg自带的控制栏界面

?

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

[cpp] view plaincopy
  1. /*?Automatically?generated?by?configure?-?do?not?modify!?*/??#ifndef?FFMPEG_CONFIG_H??
  2. #define?FFMPEG_CONFIG_H??#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'"??
  3. #define?FFMPEG_LICENSE?"LGPL?version?2.1?or?later"??#define?FFMPEG_DATADIR?"/home/ffmpeg-android-bin/share/ffmpeg"??
  4. #define?CC_TYPE?"gcc"??#define?CC_VERSION?__VERSION__??
  5. #define?restrict?restrict??#define?ASMALIGN(ZEROBITS)?".p2align?"?#ZEROBITS?"/n/t"??
  6. #define?EXTERN_PREFIX?""??#define?EXTERN_ASM???
  7. #define?ARCH_ALPHA?0??#define?ARCH_ARM?0??
  8. #define?ARCH_AVR32?0??#define?ARCH_AVR32_AP?0??
  9. #define?ARCH_AVR32_UC?0??#define?ARCH_BFIN?0??
  10. #define?ARCH_IA64?0??#define?ARCH_M68K?0??
  11. #define?ARCH_MIPS?0??#define?ARCH_MIPS64?0??
  12. #define?ARCH_PARISC?0??#define?ARCH_PPC?0??
  13. #define?ARCH_PPC64?0??#define?ARCH_S390?0??
  14. #define?ARCH_SH4?0??#define?ARCH_SPARC?0??
  15. #define?ARCH_SPARC64?0??#define?ARCH_TOMI?0??
  16. #define?ARCH_X86?0??#define?ARCH_X86_32?0??
  17. #define?ARCH_X86_64?0??#define?HAVE_ALTIVEC?0??
  18. #define?HAVE_AMD3DNOW?0??#define?HAVE_AMD3DNOWEXT?0??
  19. #define?HAVE_ARMV5TE?0??#define?HAVE_ARMV6?0??
  20. #define?HAVE_ARMV6T2?0??#define?HAVE_ARMVFP?0??
  21. #define?HAVE_IWMMXT?0??#define?HAVE_MMI?0??
  22. #define?HAVE_MMX?0??#define?HAVE_MMX2?0??
  23. #define?HAVE_NEON?0??#define?HAVE_PPC4XX?0??
  24. #define?HAVE_SSE?0??#define?HAVE_SSSE3?0??
  25. #define?HAVE_VIS?0??#define?HAVE_BIGENDIAN?0??
  26. #define?HAVE_BEOSTHREADS?0??#define?HAVE_OS2THREADS?0??
  27. #define?HAVE_PTHREADS?0??#define?HAVE_W32THREADS?0??
  28. #define?HAVE_ALSA_ASOUNDLIB_H?0??#define?HAVE_ALTIVEC_H?0??
  29. #define?HAVE_ARPA_INET_H?0??#define?HAVE_ATTRIBUTE_MAY_ALIAS?1??
  30. #define?HAVE_ATTRIBUTE_PACKED?1??#define?HAVE_BSWAP?0??
  31. #define?HAVE_CLOSESOCKET?0??#define?HAVE_CMOV?0??
  32. #define?HAVE_CONIO_H?0??#define?HAVE_DCBZL?0??
  33. #define?HAVE_DEV_BKTR_IOCTL_BT848_H?0??#define?HAVE_DEV_BKTR_IOCTL_METEOR_H?0??
  34. #define?HAVE_DEV_IC_BT8XX_H?0??#define?HAVE_DEV_VIDEO_METEOR_IOCTL_METEOR_H?0??
  35. #define?HAVE_DEV_VIDEO_BKTR_IOCTL_BT848_H?0??#define?HAVE_DLFCN_H?0??
  36. #define?HAVE_DLOPEN?1??#define?HAVE_DOS_PATHS?0??
  37. #define?HAVE_EBP_AVAILABLE?0??#define?HAVE_EBX_AVAILABLE?0??
  38. #define?HAVE_EXP2?0??#define?HAVE_EXP2F?0??
  39. #define?HAVE_FAST_64BIT?0??#define?HAVE_FAST_CLZ?1??
  40. #define?HAVE_FAST_CMOV?0??#define?HAVE_FAST_UNALIGNED?0??
  41. #define?HAVE_FORK?1??#define?HAVE_GETADDRINFO?1??
  42. #define?HAVE_GETHRTIME?0??#define?HAVE_GETPROCESSMEMORYINFO?0??
  43. #define?HAVE_GETPROCESSTIMES?0??#define?HAVE_GETRUSAGE?0??
  44. #define?HAVE_STRUCT_RUSAGE_RU_MAXRSS?0??#define?HAVE_INET_ATON?1??
  45. #define?HAVE_INLINE_ASM?1??#define?HAVE_ISATTY?1??
  46. #define?HAVE_LDBRX?0??#define?HAVE_LIBDC1394_1?0??
  47. #define?HAVE_LIBDC1394_2?0??#define?HAVE_LOCAL_ALIGNED_16?0??
  48. #define?HAVE_LOCAL_ALIGNED_8?0??#define?HAVE_LOG2?0??
  49. #define?HAVE_LOG2F?0??#define?HAVE_LOONGSON?0??
  50. #define?HAVE_LRINT?0??#define?HAVE_LRINTF?0??
  51. #define?HAVE_LZO1X_999_COMPRESS?0??#define?HAVE_MACHINE_IOCTL_BT848_H?0??
  52. #define?HAVE_MACHINE_IOCTL_METEOR_H?0??#define?HAVE_MALLOC_H?0??
  53. #define?HAVE_MEMALIGN?1??#define?HAVE_MKSTEMP?1??
  54. #define?HAVE_PLD?1??#define?HAVE_POSIX_MEMALIGN?0??
  55. #define?HAVE_ROUND?0??#define?HAVE_ROUNDF?0??
  56. #define?HAVE_SDL?0??#define?HAVE_SDL_VIDEO_SIZE?0??
  57. #define?HAVE_SETMODE?0??#define?HAVE_SOCKLEN_T?1??
  58. #define?HAVE_SOUNDCARD_H?0??#define?HAVE_POLL_H?0??
  59. #define?HAVE_SETRLIMIT?0??#define?HAVE_STRERROR_R?1??
  60. #define?HAVE_STRUCT_ADDRINFO?1??#define?HAVE_STRUCT_IPV6_MREQ?0??
  61. #define?HAVE_STRUCT_SOCKADDR_IN6?0??#define?HAVE_STRUCT_SOCKADDR_SA_LEN?0??
  62. #define?HAVE_STRUCT_SOCKADDR_STORAGE?1??#define?HAVE_SYMVER?1??
  63. #define?HAVE_SYMVER_GNU_ASM?1??#define?HAVE_SYMVER_ASM_LABEL?0??
  64. #define?HAVE_SYS_MMAN_H?0??#define?HAVE_SYS_RESOURCE_H?0??
  65. #define?HAVE_SYS_SELECT_H?0??#define?HAVE_SYS_SOUNDCARD_H?0??
  66. #define?HAVE_SYS_VIDEOIO_H?0??#define?HAVE_TEN_OPERANDS?0??
  67. #define?HAVE_TERMIOS_H?0??#define?HAVE_THREADS?0??
  68. #define?HAVE_TRUNCF?0??#define?HAVE_VFP_ARGS?1??
  69. #define?HAVE_VIRTUALALLOC?0??#define?HAVE_WINSOCK2_H?0??
  70. #define?HAVE_XFORM_ASM?0??#define?HAVE_YASM?0??
  71. #define?CONFIG_BSFS?1??#define?CONFIG_DECODERS?1??
  72. #define?CONFIG_DEMUXERS?1??#define?CONFIG_ENCODERS?1??
  73. #define?CONFIG_FILTERS?1??#define?CONFIG_HWACCELS?0??
  74. #define?CONFIG_INDEVS?1??#define?CONFIG_MUXERS?1??
  75. #define?CONFIG_OUTDEVS?0??#define?CONFIG_PARSERS?1??
  76. #define?CONFIG_PROTOCOLS?1??#define?CONFIG_AANDCT?1??
  77. #define?CONFIG_AVCODEC?1??#define?CONFIG_AVDEVICE?0??
  78. #define?CONFIG_AVFILTER?0??#define?CONFIG_AVFILTER_LAVF?0??
  79. #define?CONFIG_AVFORMAT?1??#define?CONFIG_AVISYNTH?0??
  80. #define?CONFIG_BZLIB?0??#define?CONFIG_DCT?1??
  81. #define?CONFIG_DOC?0??#define?CONFIG_DWT?1??
  82. #define?CONFIG_DXVA2?0??#define?CONFIG_FASTDIV?1??
  83. #define?CONFIG_FFMPEG?1??#define?CONFIG_FFPLAY?0??
  84. #define?CONFIG_FFPROBE?1??#define?CONFIG_FFSERVER?0??
  85. #define?CONFIG_FFT?1??#define?CONFIG_GOLOMB?1??
  86. #define?CONFIG_GPL?0??#define?CONFIG_GPROF?0??
  87. #define?CONFIG_GRAY?0??#define?CONFIG_H264DSP?1??
  88. #define?CONFIG_HARDCODED_TABLES?0??#define?CONFIG_LIBDC1394?0??
  89. #define?CONFIG_LIBDIRAC?0??#define?CONFIG_LIBFAAC?0??
  90. #define?CONFIG_LIBGSM?0??#define?CONFIG_LIBMP3LAME?0??
  91. #define?CONFIG_LIBNUT?0??#define?CONFIG_LIBOPENCORE_AMRNB?0??
  92. #define?CONFIG_LIBOPENCORE_AMRWB?0??#define?CONFIG_LIBOPENJPEG?0??
  93. #define?CONFIG_LIBRTMP?0??#define?CONFIG_LIBSCHROEDINGER?0??
  94. #define?CONFIG_LIBSPEEX?0??#define?CONFIG_LIBTHEORA?0??
  95. #define?CONFIG_LIBVORBIS?0??#define?CONFIG_LIBVPX?0??
  96. #define?CONFIG_LIBX264?0??#define?CONFIG_LIBXVID?0??
  97. #define?CONFIG_LPC?1??#define?CONFIG_LSP?1??
  98. #define?CONFIG_MDCT?1??#define?CONFIG_MEMALIGN_HACK?0??
  99. #define?CONFIG_MLIB?0??#define?CONFIG_MPEGAUDIO_HP?1??
  100. #define?CONFIG_NETWORK?1??#define?CONFIG_NONFREE?0??
  101. #define?CONFIG_PIC?0??#define?CONFIG_POSTPROC?0??
  102. #define?CONFIG_POWERPC_PERF?0??#define?CONFIG_RDFT?1??
  103. #define?CONFIG_RUNTIME_CPUDETECT?0??#define?CONFIG_SHARED?0??
  104. #define?CONFIG_SMALL?0??#define?CONFIG_SRAM?0??
  105. #define?CONFIG_STATIC?1??#define?CONFIG_SWSCALE?1??
  106. #define?CONFIG_SWSCALE_ALPHA?1??#define?CONFIG_VAAPI?0??
  107. #define?CONFIG_VDPAU?0??#define?CONFIG_VERSION3?0??
  108. #define?CONFIG_X11GRAB?0??#define?CONFIG_ZLIB?0??
  109. #define?CONFIG_AVUTIL?1??#define?CONFIG_GPLV3?0??
  110. #define?CONFIG_LGPLV3?0??#define?CONFIG_AASC_DECODER?1??
  111. #define?CONFIG_AMV_DECODER?1??#define?CONFIG_ANM_DECODER?1??
  112. #define?CONFIG_ASV1_DECODER?1??#define?CONFIG_ASV2_DECODER?1??
  113. #define?CONFIG_AURA_DECODER?1??#define?CONFIG_AURA2_DECODER?1??
  114. #define?CONFIG_AVS_DECODER?1??#define?CONFIG_BETHSOFTVID_DECODER?1??
  115. #define?CONFIG_BFI_DECODER?1??#define?CONFIG_BINK_DECODER?1??
  116. #define?CONFIG_BMP_DECODER?1??#define?CONFIG_C93_DECODER?1??
  117. #define?CONFIG_CAVS_DECODER?1??#define?CONFIG_CDGRAPHICS_DECODER?1??
  118. #define?CONFIG_CINEPAK_DECODER?1??#define?CONFIG_CLJR_DECODER?1??
  119. #define?CONFIG_CSCD_DECODER?1??#define?CONFIG_CYUV_DECODER?1??
  120. #define?CONFIG_DNXHD_DECODER?1??#define?CONFIG_DPX_DECODER?1??
  121. #define?CONFIG_DSICINVIDEO_DECODER?1??#define?CONFIG_DVVIDEO_DECODER?1??
  122. #define?CONFIG_DXA_DECODER?0??#define?CONFIG_EACMV_DECODER?1??
  123. #define?CONFIG_EAMAD_DECODER?1??#define?CONFIG_EATGQ_DECODER?1??
  124. #define?CONFIG_EATGV_DECODER?1??#define?CONFIG_EATQI_DECODER?1??
  125. #define?CONFIG_EIGHTBPS_DECODER?1??#define?CONFIG_EIGHTSVX_EXP_DECODER?1??
  126. #define?CONFIG_EIGHTSVX_FIB_DECODER?1??#define?CONFIG_ESCAPE124_DECODER?1??
  127. #define?CONFIG_FFV1_DECODER?1??#define?CONFIG_FFVHUFF_DECODER?1??
  128. #define?CONFIG_FLASHSV_DECODER?0??#define?CONFIG_FLIC_DECODER?1??
  129. #define?CONFIG_FLV_DECODER?1??#define?CONFIG_FOURXM_DECODER?1??
  130. #define?CONFIG_FRAPS_DECODER?1??#define?CONFIG_FRWU_DECODER?1??
  131. #define?CONFIG_GIF_DECODER?1??#define?CONFIG_H261_DECODER?1??
  132. #define?CONFIG_H263_DECODER?1??#define?CONFIG_H263I_DECODER?1??
  133. #define?CONFIG_H264_DECODER?1??#define?CONFIG_H264_VDPAU_DECODER?0??
  134. #define?CONFIG_HUFFYUV_DECODER?1??#define?CONFIG_IDCIN_DECODER?1??
  135. #define?CONFIG_IFF_BYTERUN1_DECODER?1??#define?CONFIG_IFF_ILBM_DECODER?1??
  136. #define?CONFIG_INDEO2_DECODER?1??#define?CONFIG_INDEO3_DECODER?1??
  137. #define?CONFIG_INDEO5_DECODER?1??#define?CONFIG_INTERPLAY_VIDEO_DECODER?1??
  138. #define?CONFIG_JPEGLS_DECODER?1??#define?CONFIG_KGV1_DECODER?1??
  139. #define?CONFIG_KMVC_DECODER?1??#define?CONFIG_LOCO_DECODER?1??
  140. #define?CONFIG_MDEC_DECODER?1??#define?CONFIG_MIMIC_DECODER?1??
  141. #define?CONFIG_MJPEG_DECODER?1??#define?CONFIG_MJPEGB_DECODER?1??
  142. #define?CONFIG_MMVIDEO_DECODER?1??#define?CONFIG_MOTIONPIXELS_DECODER?1??
  143. #define?CONFIG_MPEG_XVMC_DECODER?0??#define?CONFIG_MPEG1VIDEO_DECODER?1??
  144. #define?CONFIG_MPEG2VIDEO_DECODER?1??#define?CONFIG_MPEG4_DECODER?1??
  145. #define?CONFIG_MPEG4_VDPAU_DECODER?0??#define?CONFIG_MPEGVIDEO_DECODER?1??
  146. #define?CONFIG_MPEG_VDPAU_DECODER?0??#define?CONFIG_MPEG1_VDPAU_DECODER?0??
  147. #define?CONFIG_MSMPEG4V1_DECODER?1??#define?CONFIG_MSMPEG4V2_DECODER?1??
  148. #define?CONFIG_MSMPEG4V3_DECODER?1??#define?CONFIG_MSRLE_DECODER?1??
  149. #define?CONFIG_MSVIDEO1_DECODER?1??#define?CONFIG_MSZH_DECODER?1??
  150. #define?CONFIG_NUV_DECODER?1??#define?CONFIG_PAM_DECODER?1??
  151. #define?CONFIG_PBM_DECODER?1??#define?CONFIG_PCX_DECODER?1??
  152. #define?CONFIG_PGM_DECODER?1??#define?CONFIG_PGMYUV_DECODER?1??
  153. #define?CONFIG_PICTOR_DECODER?1??#define?CONFIG_PNG_DECODER?0??
  154. #define?CONFIG_PPM_DECODER?1??#define?CONFIG_PTX_DECODER?1??
  155. #define?CONFIG_QDRAW_DECODER?1??#define?CONFIG_QPEG_DECODER?1??
  156. #define?CONFIG_QTRLE_DECODER?1??#define?CONFIG_R210_DECODER?1??
  157. #define?CONFIG_RAWVIDEO_DECODER?1??#define?CONFIG_RL2_DECODER?1??
  158. #define?CONFIG_ROQ_DECODER?1??#define?CONFIG_RPZA_DECODER?1??
  159. #define?CONFIG_RV10_DECODER?1??#define?CONFIG_RV20_DECODER?1??
  160. #define?CONFIG_RV30_DECODER?1??#define?CONFIG_RV40_DECODER?1??
  161. #define?CONFIG_SGI_DECODER?1??#define?CONFIG_SMACKER_DECODER?1??
  162. #define?CONFIG_SMC_DECODER?1??#define?CONFIG_SNOW_DECODER?1??
  163. #define?CONFIG_SP5X_DECODER?1??#define?CONFIG_SUNRAST_DECODER?1??
  164. #define?CONFIG_SVQ1_DECODER?1??#define?CONFIG_SVQ3_DECODER?1??
  165. #define?CONFIG_TARGA_DECODER?1??#define?CONFIG_THEORA_DECODER?1??
  166. #define?CONFIG_THP_DECODER?1??#define?CONFIG_TIERTEXSEQVIDEO_DECODER?1??
  167. #define?CONFIG_TIFF_DECODER?1??#define?CONFIG_TMV_DECODER?1??
  168. #define?CONFIG_TRUEMOTION1_DECODER?1??#define?CONFIG_TRUEMOTION2_DECODER?1??
  169. #define?CONFIG_TSCC_DECODER?0??#define?CONFIG_TXD_DECODER?1??
  170. #define?CONFIG_ULTI_DECODER?1??#define?CONFIG_V210_DECODER?1??
  171. #define?CONFIG_V210X_DECODER?1??#define?CONFIG_VB_DECODER?1??
  172. #define?CONFIG_VC1_DECODER?1??#define?CONFIG_VC1_VDPAU_DECODER?0??
  173. #define?CONFIG_VCR1_DECODER?1??#define?CONFIG_VMDVIDEO_DECODER?1??
  174. #define?CONFIG_VMNC_DECODER?1??#define?CONFIG_VP3_DECODER?1??
  175. #define?CONFIG_VP5_DECODER?1??#define?CONFIG_VP6_DECODER?1??
  176. #define?CONFIG_VP6A_DECODER?1??#define?CONFIG_VP6F_DECODER?1??
  177. #define?CONFIG_VQA_DECODER?1??#define?CONFIG_WMV1_DECODER?1??
  178. #define?CONFIG_WMV2_DECODER?1??#define?CONFIG_WMV3_DECODER?1??
  179. #define?CONFIG_WMV3_VDPAU_DECODER?0??#define?CONFIG_WNV1_DECODER?1??
  180. #define?CONFIG_XAN_WC3_DECODER?1??#define?CONFIG_XL_DECODER?1??
  181. #define?CONFIG_YOP_DECODER?1??#define?CONFIG_ZLIB_DECODER?0??
  182. #define?CONFIG_ZMBV_DECODER?0??#define?CONFIG_AAC_DECODER?1??
  183. #define?CONFIG_AC3_DECODER?1??#define?CONFIG_ALAC_DECODER?1??
  184. #define?CONFIG_ALS_DECODER?1??#define?CONFIG_AMRNB_DECODER?1??
  185. #define?CONFIG_APE_DECODER?1??#define?CONFIG_ATRAC1_DECODER?1??
  186. #define?CONFIG_ATRAC3_DECODER?1??#define?CONFIG_BINKAUDIO_DCT_DECODER?1??
  187. #define?CONFIG_BINKAUDIO_RDFT_DECODER?1??#define?CONFIG_COOK_DECODER?1??
  188. #define?CONFIG_DCA_DECODER?1??#define?CONFIG_DSICINAUDIO_DECODER?1??
  189. #define?CONFIG_EAC3_DECODER?1??#define?CONFIG_FLAC_DECODER?1??
  190. #define?CONFIG_IMC_DECODER?1??#define?CONFIG_MACE3_DECODER?1??
  191. #define?CONFIG_MACE6_DECODER?1??#define?CONFIG_MLP_DECODER?1??
  192. #define?CONFIG_MP1_DECODER?1??#define?CONFIG_MP1FLOAT_DECODER?1??
  193. #define?CONFIG_MP2_DECODER?1??#define?CONFIG_MP2FLOAT_DECODER?1??
  194. #define?CONFIG_MP3_DECODER?1??#define?CONFIG_MP3FLOAT_DECODER?1??
  195. #define?CONFIG_MP3ADU_DECODER?1??#define?CONFIG_MP3ADUFLOAT_DECODER?1??
  196. #define?CONFIG_MP3ON4_DECODER?1??#define?CONFIG_MP3ON4FLOAT_DECODER?1??
  197. #define?CONFIG_MPC7_DECODER?1??#define?CONFIG_MPC8_DECODER?1??
  198. #define?CONFIG_NELLYMOSER_DECODER?1??#define?CONFIG_QCELP_DECODER?1??
  199. #define?CONFIG_QDM2_DECODER?1??#define?CONFIG_RA_144_DECODER?1??
  200. #define?CONFIG_RA_288_DECODER?1??#define?CONFIG_SHORTEN_DECODER?1??
  201. #define?CONFIG_SIPR_DECODER?1??#define?CONFIG_SMACKAUD_DECODER?1??
  202. #define?CONFIG_SONIC_DECODER?1??#define?CONFIG_TRUEHD_DECODER?1??
  203. #define?CONFIG_TRUESPEECH_DECODER?1??#define?CONFIG_TTA_DECODER?1??
  204. #define?CONFIG_TWINVQ_DECODER?1??#define?CONFIG_VMDAUDIO_DECODER?1??
  205. #define?CONFIG_VORBIS_DECODER?1??#define?CONFIG_WAVPACK_DECODER?1??
  206. #define?CONFIG_WMAPRO_DECODER?1??#define?CONFIG_WMAV1_DECODER?1??
  207. #define?CONFIG_WMAV2_DECODER?1??#define?CONFIG_WMAVOICE_DECODER?1??
  208. #define?CONFIG_WS_SND1_DECODER?1??#define?CONFIG_PCM_ALAW_DECODER?1??
  209. #define?CONFIG_PCM_BLURAY_DECODER?1??#define?CONFIG_PCM_DVD_DECODER?1??
  210. #define?CONFIG_PCM_F32BE_DECODER?1??#define?CONFIG_PCM_F32LE_DECODER?1??
  211. #define?CONFIG_PCM_F64BE_DECODER?1??#define?CONFIG_PCM_F64LE_DECODER?1??
  212. #define?CONFIG_PCM_MULAW_DECODER?1??#define?CONFIG_PCM_S8_DECODER?1??
  213. #define?CONFIG_PCM_S16BE_DECODER?1??#define?CONFIG_PCM_S16LE_DECODER?1??
  214. #define?CONFIG_PCM_S16LE_PLANAR_DECODER?1??#define?CONFIG_PCM_S24BE_DECODER?1??
  215. #define?CONFIG_PCM_S24DAUD_DECODER?1??#define?CONFIG_PCM_S24LE_DECODER?1??
  216. #define?CONFIG_PCM_S32BE_DECODER?1??#define?CONFIG_PCM_S32LE_DECODER?1??
  217. #define?CONFIG_PCM_U8_DECODER?1??#define?CONFIG_PCM_U16BE_DECODER?1??
  218. #define?CONFIG_PCM_U16LE_DECODER?1??#define?CONFIG_PCM_U24BE_DECODER?1??
  219. #define?CONFIG_PCM_U24LE_DECODER?1??#define?CONFIG_PCM_U32BE_DECODER?1??
  220. #define?CONFIG_PCM_U32LE_DECODER?1??#define?CONFIG_PCM_ZORK_DECODER?1??
  221. #define?CONFIG_INTERPLAY_DPCM_DECODER?1??#define?CONFIG_ROQ_DPCM_DECODER?1??
  222. #define?CONFIG_SOL_DPCM_DECODER?1??#define?CONFIG_XAN_DPCM_DECODER?1??
  223. #define?CONFIG_ADPCM_4XM_DECODER?1??#define?CONFIG_ADPCM_ADX_DECODER?1??
  224. #define?CONFIG_ADPCM_CT_DECODER?1??#define?CONFIG_ADPCM_EA_DECODER?1??
  225. #define?CONFIG_ADPCM_EA_MAXIS_XA_DECODER?1??#define?CONFIG_ADPCM_EA_R1_DECODER?1??
  226. #define?CONFIG_ADPCM_EA_R2_DECODER?1??#define?CONFIG_ADPCM_EA_R3_DECODER?1??
  227. #define?CONFIG_ADPCM_EA_XAS_DECODER?1??#define?CONFIG_ADPCM_G726_DECODER?1??
  228. #define?CONFIG_ADPCM_IMA_AMV_DECODER?1??#define?CONFIG_ADPCM_IMA_DK3_DECODER?1??
  229. #define?CONFIG_ADPCM_IMA_DK4_DECODER?1??#define?CONFIG_ADPCM_IMA_EA_EACS_DECODER?1??
  230. #define?CONFIG_ADPCM_IMA_EA_SEAD_DECODER?1??#define?CONFIG_ADPCM_IMA_ISS_DECODER?1??
  231. #define?CONFIG_ADPCM_IMA_QT_DECODER?1??#define?CONFIG_ADPCM_IMA_SMJPEG_DECODER?1??
  232. #define?CONFIG_ADPCM_IMA_WAV_DECODER?1??#define?CONFIG_ADPCM_IMA_WS_DECODER?1??
  233. #define?CONFIG_ADPCM_MS_DECODER?1??#define?CONFIG_ADPCM_SBPRO_2_DECODER?1??
  234. #define?CONFIG_ADPCM_SBPRO_3_DECODER?1??#define?CONFIG_ADPCM_SBPRO_4_DECODER?1??
  235. #define?CONFIG_ADPCM_SWF_DECODER?1??#define?CONFIG_ADPCM_THP_DECODER?1??
  236. #define?CONFIG_ADPCM_XA_DECODER?1??#define?CONFIG_ADPCM_YAMAHA_DECODER?1??
  237. #define?CONFIG_DVBSUB_DECODER?1??#define?CONFIG_DVDSUB_DECODER?1??
  238. #define?CONFIG_PGSSUB_DECODER?1??#define?CONFIG_XSUB_DECODER?1??
  239. #define?CONFIG_LIBDIRAC_DECODER?0??#define?CONFIG_LIBGSM_DECODER?0??
  240. #define?CONFIG_LIBGSM_MS_DECODER?0??#define?CONFIG_LIBOPENCORE_AMRNB_DECODER?0??
  241. #define?CONFIG_LIBOPENCORE_AMRWB_DECODER?0??#define?CONFIG_LIBOPENJPEG_DECODER?0??
  242. #define?CONFIG_LIBSCHROEDINGER_DECODER?0??#define?CONFIG_LIBSPEEX_DECODER?0??
  243. #define?CONFIG_LIBVPX_DECODER?0??#define?CONFIG_ASV1_ENCODER?1??
  244. #define?CONFIG_ASV2_ENCODER?1??#define?CONFIG_BMP_ENCODER?1??
  245. #define?CONFIG_DNXHD_ENCODER?1??#define?CONFIG_DVVIDEO_ENCODER?1??
  246. #define?CONFIG_FFV1_ENCODER?1??#define?CONFIG_FFVHUFF_ENCODER?1??
  247. #define?CONFIG_FLASHSV_ENCODER?0??#define?CONFIG_FLV_ENCODER?1??
  248. #define?CONFIG_GIF_ENCODER?1??#define?CONFIG_H261_ENCODER?1??
  249. #define?CONFIG_H263_ENCODER?1??#define?CONFIG_H263P_ENCODER?1??
  250. #define?CONFIG_HUFFYUV_ENCODER?1??#define?CONFIG_JPEGLS_ENCODER?1??
  251. #define?CONFIG_LJPEG_ENCODER?1??#define?CONFIG_MJPEG_ENCODER?1??
  252. #define?CONFIG_MPEG1VIDEO_ENCODER?1??#define?CONFIG_MPEG2VIDEO_ENCODER?1??
  253. #define?CONFIG_MPEG4_ENCODER?1??#define?CONFIG_MSMPEG4V1_ENCODER?1??
  254. #define?CONFIG_MSMPEG4V2_ENCODER?1??#define?CONFIG_MSMPEG4V3_ENCODER?1??
  255. #define?CONFIG_PAM_ENCODER?1??#define?CONFIG_PBM_ENCODER?1??
  256. #define?CONFIG_PCX_ENCODER?1??#define?CONFIG_PGM_ENCODER?1??
  257. #define?CONFIG_PGMYUV_ENCODER?1??#define?CONFIG_PNG_ENCODER?0??
  258. #define?CONFIG_PPM_ENCODER?1??#define?CONFIG_QTRLE_ENCODER?1??
  259. #define?CONFIG_RAWVIDEO_ENCODER?1??#define?CONFIG_ROQ_ENCODER?1??
  260. #define?CONFIG_RV10_ENCODER?1??#define?CONFIG_RV20_ENCODER?1??
  261. #define?CONFIG_SGI_ENCODER?1??#define?CONFIG_SNOW_ENCODER?1??
  262. #define?CONFIG_SVQ1_ENCODER?1??#define?CONFIG_TARGA_ENCODER?1??
  263. #define?CONFIG_TIFF_ENCODER?1??#define?CONFIG_V210_ENCODER?1??
  264. #define?CONFIG_WMV1_ENCODER?1??#define?CONFIG_WMV2_ENCODER?1??
  265. #define?CONFIG_ZLIB_ENCODER?0??#define?CONFIG_ZMBV_ENCODER?0??
  266. #define?CONFIG_AAC_ENCODER?1??#define?CONFIG_AC3_ENCODER?1??
  267. #define?CONFIG_ALAC_ENCODER?1??#define?CONFIG_FLAC_ENCODER?1??
  268. #define?CONFIG_MP2_ENCODER?1??#define?CONFIG_NELLYMOSER_ENCODER?1??
  269. #define?CONFIG_RA_144_ENCODER?1??#define?CONFIG_SONIC_ENCODER?1??
  270. #define?CONFIG_SONIC_LS_ENCODER?1??#define?CONFIG_VORBIS_ENCODER?1??
  271. #define?CONFIG_WMAV1_ENCODER?1??#define?CONFIG_WMAV2_ENCODER?1??
  272. #define?CONFIG_PCM_ALAW_ENCODER?1??#define?CONFIG_PCM_F32BE_ENCODER?1??
  273. #define?CONFIG_PCM_F32LE_ENCODER?1??#define?CONFIG_PCM_F64BE_ENCODER?1??
  274. #define?CONFIG_PCM_F64LE_ENCODER?1??#define?CONFIG_PCM_MULAW_ENCODER?1??
  275. #define?CONFIG_PCM_S8_ENCODER?1??#define?CONFIG_PCM_S16BE_ENCODER?1??
  276. #define?CONFIG_PCM_S16LE_ENCODER?1??#define?CONFIG_PCM_S24BE_ENCODER?1??
  277. #define?CONFIG_PCM_S24DAUD_ENCODER?1??#define?CONFIG_PCM_S24LE_ENCODER?1??
  278. #define?CONFIG_PCM_S32BE_ENCODER?1??#define?CONFIG_PCM_S32LE_ENCODER?1??
  279. #define?CONFIG_PCM_U8_ENCODER?1??#define?CONFIG_PCM_U16BE_ENCODER?1??
  280. #define?CONFIG_PCM_U16LE_ENCODER?1??#define?CONFIG_PCM_U24BE_ENCODER?1??
  281. #define?CONFIG_PCM_U24LE_ENCODER?1??#define?CONFIG_PCM_U32BE_ENCODER?1??
  282. #define?CONFIG_PCM_U32LE_ENCODER?1??#define?CONFIG_PCM_ZORK_ENCODER?1??
  283. #define?CONFIG_ROQ_DPCM_ENCODER?1??#define?CONFIG_ADPCM_ADX_ENCODER?1??
  284. #define?CONFIG_ADPCM_G726_ENCODER?1??#define?CONFIG_ADPCM_IMA_QT_ENCODER?1??
  285. #define?CONFIG_ADPCM_IMA_WAV_ENCODER?1??#define?CONFIG_ADPCM_MS_ENCODER?1??
  286. #define?CONFIG_ADPCM_SWF_ENCODER?1??#define?CONFIG_ADPCM_YAMAHA_ENCODER?1??
  287. #define?CONFIG_DVBSUB_ENCODER?1??#define?CONFIG_DVDSUB_ENCODER?1??
  288. #define?CONFIG_XSUB_ENCODER?1??#define?CONFIG_LIBDIRAC_ENCODER?0??
  289. #define?CONFIG_LIBFAAC_ENCODER?0??#define?CONFIG_LIBGSM_ENCODER?0??
  290. #define?CONFIG_LIBGSM_MS_ENCODER?0??#define?CONFIG_LIBMP3LAME_ENCODER?0??
  291. #define?CONFIG_LIBOPENCORE_AMRNB_ENCODER?0??#define?CONFIG_LIBSCHROEDINGER_ENCODER?0??
  292. #define?CONFIG_LIBTHEORA_ENCODER?0??#define?CONFIG_LIBVORBIS_ENCODER?0??
  293. #define?CONFIG_LIBVPX_ENCODER?0??#define?CONFIG_LIBX264_ENCODER?0??
  294. #define?CONFIG_LIBXVID_ENCODER?0??#define?CONFIG_H263_VAAPI_HWACCEL?0??
  295. #define?CONFIG_H264_DXVA2_HWACCEL?0??#define?CONFIG_H264_VAAPI_HWACCEL?0??
  296. #define?CONFIG_MPEG2_DXVA2_HWACCEL?0??#define?CONFIG_MPEG2_VAAPI_HWACCEL?0??
  297. #define?CONFIG_MPEG4_VAAPI_HWACCEL?0??#define?CONFIG_VC1_DXVA2_HWACCEL?0??
  298. #define?CONFIG_VC1_VAAPI_HWACCEL?0??#define?CONFIG_WMV3_DXVA2_HWACCEL?0??
  299. #define?CONFIG_WMV3_VAAPI_HWACCEL?0??#define?CONFIG_AAC_PARSER?1??
  300. #define?CONFIG_AC3_PARSER?1??#define?CONFIG_CAVSVIDEO_PARSER?1??
  301. #define?CONFIG_DCA_PARSER?1??#define?CONFIG_DIRAC_PARSER?1??
  302. #define?CONFIG_DNXHD_PARSER?1??#define?CONFIG_DVBSUB_PARSER?1??
  303. #define?CONFIG_DVDSUB_PARSER?1??#define?CONFIG_H261_PARSER?1??
  304. #define?CONFIG_H263_PARSER?1??#define?CONFIG_H264_PARSER?1??
  305. #define?CONFIG_MJPEG_PARSER?1??#define?CONFIG_MLP_PARSER?1??
  306. #define?CONFIG_MPEG4VIDEO_PARSER?1??#define?CONFIG_MPEGAUDIO_PARSER?1??
  307. #define?CONFIG_MPEGVIDEO_PARSER?1??#define?CONFIG_PNM_PARSER?1??
  308. #define?CONFIG_VC1_PARSER?1??#define?CONFIG_VP3_PARSER?1??
  309. #define?CONFIG_VP8_PARSER?1??#define?CONFIG_AAC_ADTSTOASC_BSF?1??
  310. #define?CONFIG_CHOMP_BSF?1??#define?CONFIG_DUMP_EXTRADATA_BSF?1??
  311. #define?CONFIG_H264_MP4TOANNEXB_BSF?1??#define?CONFIG_IMX_DUMP_HEADER_BSF?1??
  312. #define?CONFIG_MJPEGA_DUMP_HEADER_BSF?1??#define?CONFIG_MP3_HEADER_COMPRESS_BSF?1??
  313. #define?CONFIG_MP3_HEADER_DECOMPRESS_BSF?1??#define?CONFIG_MOV2TEXTSUB_BSF?1??
  314. #define?CONFIG_NOISE_BSF?1??#define?CONFIG_REMOVE_EXTRADATA_BSF?1??
  315. #define?CONFIG_TEXT2MOVSUB_BSF?1??#define?CONFIG_AAC_DEMUXER?1??
  316. #define?CONFIG_AC3_DEMUXER?1??#define?CONFIG_AEA_DEMUXER?1??
  317. #define?CONFIG_AIFF_DEMUXER?1??#define?CONFIG_AMR_DEMUXER?1??
  318. #define?CONFIG_ANM_DEMUXER?1??#define?CONFIG_APC_DEMUXER?1??
  319. #define?CONFIG_APE_DEMUXER?1??#define?CONFIG_ASF_DEMUXER?1??
  320. #define?CONFIG_ASS_DEMUXER?1??#define?CONFIG_AU_DEMUXER?1??
  321. #define?CONFIG_AVI_DEMUXER?1??#define?CONFIG_AVISYNTH_DEMUXER?0??
  322. #define?CONFIG_AVS_DEMUXER?1??#define?CONFIG_BETHSOFTVID_DEMUXER?1??
  323. #define?CONFIG_BFI_DEMUXER?1??#define?CONFIG_BINK_DEMUXER?1??
  324. #define?CONFIG_C93_DEMUXER?1??#define?CONFIG_CAF_DEMUXER?1??
  325. #define?CONFIG_CAVSVIDEO_DEMUXER?1??#define?CONFIG_CDG_DEMUXER?1??
  326. #define?CONFIG_DAUD_DEMUXER?1??#define?CONFIG_DIRAC_DEMUXER?1??
  327. #define?CONFIG_DNXHD_DEMUXER?1??#define?CONFIG_DSICIN_DEMUXER?1??
  328. #define?CONFIG_DTS_DEMUXER?1??#define?CONFIG_DV_DEMUXER?1??
  329. #define?CONFIG_DXA_DEMUXER?1??#define?CONFIG_EA_DEMUXER?1??
  330. #define?CONFIG_EA_CDATA_DEMUXER?1??#define?CONFIG_EAC3_DEMUXER?1??
  331. #define?CONFIG_FFM_DEMUXER?1??#define?CONFIG_FILMSTRIP_DEMUXER?1??
  332. #define?CONFIG_FLAC_DEMUXER?1??#define?CONFIG_FLIC_DEMUXER?1??
  333. #define?CONFIG_FLV_DEMUXER?1??#define?CONFIG_FOURXM_DEMUXER?1??
  334. #define?CONFIG_GSM_DEMUXER?1??#define?CONFIG_GXF_DEMUXER?1??
  335. #define?CONFIG_H261_DEMUXER?1??#define?CONFIG_H263_DEMUXER?1??
  336. #define?CONFIG_H264_DEMUXER?1??#define?CONFIG_IDCIN_DEMUXER?1??
  337. #define?CONFIG_IFF_DEMUXER?1??#define?CONFIG_IMAGE2_DEMUXER?1??
  338. #define?CONFIG_IMAGE2PIPE_DEMUXER?1??#define?CONFIG_INGENIENT_DEMUXER?1??
  339. #define?CONFIG_IPMOVIE_DEMUXER?1??#define?CONFIG_ISS_DEMUXER?1??
  340. #define?CONFIG_IV8_DEMUXER?1??#define?CONFIG_IVF_DEMUXER?1??
  341. #define?CONFIG_LMLM4_DEMUXER?1??#define?CONFIG_M4V_DEMUXER?1??
  342. #define?CONFIG_MATROSKA_DEMUXER?1??#define?CONFIG_MJPEG_DEMUXER?1??
  343. #define?CONFIG_MLP_DEMUXER?1??#define?CONFIG_MM_DEMUXER?1??
  344. #define?CONFIG_MMF_DEMUXER?1??#define?CONFIG_MOV_DEMUXER?1??
  345. #define?CONFIG_MP3_DEMUXER?1??#define?CONFIG_MPC_DEMUXER?1??
  346. #define?CONFIG_MPC8_DEMUXER?1??#define?CONFIG_MPEGPS_DEMUXER?1??
  347. #define?CONFIG_MPEGTS_DEMUXER?1??#define?CONFIG_MPEGTSRAW_DEMUXER?1??
  348. #define?CONFIG_MPEGVIDEO_DEMUXER?1??#define?CONFIG_MSNWC_TCP_DEMUXER?1??
  349. #define?CONFIG_MTV_DEMUXER?1??#define?CONFIG_MVI_DEMUXER?1??
  350. #define?CONFIG_MXF_DEMUXER?1??#define?CONFIG_NC_DEMUXER?1??
  351. #define?CONFIG_NSV_DEMUXER?1??#define?CONFIG_NUT_DEMUXER?1??
  352. #define?CONFIG_NUV_DEMUXER?1??#define?CONFIG_OGG_DEMUXER?0??
  353. #define?CONFIG_OMA_DEMUXER?1??#define?CONFIG_PCM_ALAW_DEMUXER?1??
  354. #define?CONFIG_PCM_MULAW_DEMUXER?1??#define?CONFIG_PCM_F64BE_DEMUXER?1??
  355. #define?CONFIG_PCM_F64LE_DEMUXER?1??#define?CONFIG_PCM_F32BE_DEMUXER?1??
  356. #define?CONFIG_PCM_F32LE_DEMUXER?1??#define?CONFIG_PCM_S32BE_DEMUXER?1??
  357. #define?CONFIG_PCM_S32LE_DEMUXER?1??#define?CONFIG_PCM_S24BE_DEMUXER?1??
  358. #define?CONFIG_PCM_S24LE_DEMUXER?1??#define?CONFIG_PCM_S16BE_DEMUXER?1??
  359. #define?CONFIG_PCM_S16LE_DEMUXER?1??#define?CONFIG_PCM_S8_DEMUXER?1??
  360. #define?CONFIG_PCM_U32BE_DEMUXER?1??#define?CONFIG_PCM_U32LE_DEMUXER?1??
  361. #define?CONFIG_PCM_U24BE_DEMUXER?1??#define?CONFIG_PCM_U24LE_DEMUXER?1??
  362. #define?CONFIG_PCM_U16BE_DEMUXER?1??#define?CONFIG_PCM_U16LE_DEMUXER?1??
  363. #define?CONFIG_PCM_U8_DEMUXER?1??#define?CONFIG_PVA_DEMUXER?1??
  364. #define?CONFIG_QCP_DEMUXER?1??#define?CONFIG_R3D_DEMUXER?1??
  365. #define?CONFIG_RAWVIDEO_DEMUXER?1??#define?CONFIG_RL2_DEMUXER?1??
  366. #define?CONFIG_RM_DEMUXER?1??#define?CONFIG_ROQ_DEMUXER?1??
  367. #define?CONFIG_RPL_DEMUXER?1??#define?CONFIG_RTSP_DEMUXER?0??
  368. #define?CONFIG_SDP_DEMUXER?0??#define?CONFIG_SEGAFILM_DEMUXER?1??
  369. #define?CONFIG_SHORTEN_DEMUXER?1??#define?CONFIG_SIFF_DEMUXER?1??
  370. #define?CONFIG_SMACKER_DEMUXER?1??#define?CONFIG_SOL_DEMUXER?1??
  371. #define?CONFIG_SOX_DEMUXER?1??#define?CONFIG_STR_DEMUXER?1??
  372. #define?CONFIG_SWF_DEMUXER?1??#define?CONFIG_THP_DEMUXER?1??
  373. #define?CONFIG_TIERTEXSEQ_DEMUXER?1??#define?CONFIG_TMV_DEMUXER?1??
  374. #define?CONFIG_TRUEHD_DEMUXER?1??#define?CONFIG_TTA_DEMUXER?1??
  375. #define?CONFIG_TXD_DEMUXER?1??#define?CONFIG_VC1_DEMUXER?1??
  376. #define?CONFIG_VC1T_DEMUXER?1??#define?CONFIG_VMD_DEMUXER?1??
  377. #define?CONFIG_VOC_DEMUXER?1??#define?CONFIG_VQF_DEMUXER?1??
  378. #define?CONFIG_W64_DEMUXER?1??#define?CONFIG_WAV_DEMUXER?1??
  379. #define?CONFIG_WC3_DEMUXER?1??#define?CONFIG_WSAUD_DEMUXER?1??
  380. #define?CONFIG_WSVQA_DEMUXER?1??#define?CONFIG_WV_DEMUXER?1??
  381. #define?CONFIG_XA_DEMUXER?1??#define?CONFIG_YOP_DEMUXER?1??
  382. #define?CONFIG_YUV4MPEGPIPE_DEMUXER?1??#define?CONFIG_LIBNUT_DEMUXER?0??
  383. #define?CONFIG_AC3_MUXER?1??#define?CONFIG_ADTS_MUXER?1??
  384. #define?CONFIG_AIFF_MUXER?1??#define?CONFIG_AMR_MUXER?1??
  385. #define?CONFIG_ASF_MUXER?1??#define?CONFIG_ASS_MUXER?1??
  386. #define?CONFIG_ASF_STREAM_MUXER?1??#define?CONFIG_AU_MUXER?1??
  387. #define?CONFIG_AVI_MUXER?1??#define?CONFIG_AVM2_MUXER?1??
  388. #define?CONFIG_CRC_MUXER?1??#define?CONFIG_DAUD_MUXER?1??
  389. #define?CONFIG_DIRAC_MUXER?1??#define?CONFIG_DNXHD_MUXER?1??
  390. #define?CONFIG_DTS_MUXER?1??#define?CONFIG_DV_MUXER?1??
  391. #define?CONFIG_EAC3_MUXER?1??#define?CONFIG_FFM_MUXER?1??
  392. #define?CONFIG_FILMSTRIP_MUXER?1??#define?CONFIG_FLAC_MUXER?1??
  393. #define?CONFIG_FLV_MUXER?1??#define?CONFIG_FRAMECRC_MUXER?1??
  394. #define?CONFIG_FRAMEMD5_MUXER?1??#define?CONFIG_GIF_MUXER?1??
  395. #define?CONFIG_GXF_MUXER?1??#define?CONFIG_H261_MUXER?1??
  396. #define?CONFIG_H263_MUXER?1??#define?CONFIG_H264_MUXER?1??
  397. #define?CONFIG_IMAGE2_MUXER?1??#define?CONFIG_IMAGE2PIPE_MUXER?1??
  398. #define?CONFIG_IPOD_MUXER?1??#define?CONFIG_M4V_MUXER?1??
  399. #define?CONFIG_MD5_MUXER?1??#define?CONFIG_MATROSKA_MUXER?1??
  400. #define?CONFIG_MATROSKA_AUDIO_MUXER?1??#define?CONFIG_MJPEG_MUXER?1??
  401. #define?CONFIG_MLP_MUXER?1??#define?CONFIG_MMF_MUXER?1??
  402. #define?CONFIG_MOV_MUXER?1??#define?CONFIG_MP2_MUXER?1??
  403. #define?CONFIG_MP3_MUXER?1??#define?CONFIG_MP4_MUXER?1??
  404. #define?CONFIG_MPEG1SYSTEM_MUXER?1??#define?CONFIG_MPEG1VCD_MUXER?1??
  405. #define?CONFIG_MPEG1VIDEO_MUXER?1??#define?CONFIG_MPEG2DVD_MUXER?1??
  406. #define?CONFIG_MPEG2SVCD_MUXER?1??#define?CONFIG_MPEG2VIDEO_MUXER?1??
  407. #define?CONFIG_MPEG2VOB_MUXER?1??#define?CONFIG_MPEGTS_MUXER?1??
  408. #define?CONFIG_MPJPEG_MUXER?1??#define?CONFIG_MXF_MUXER?1??
  409. #define?CONFIG_MXF_D10_MUXER?1??#define?CONFIG_NULL_MUXER?1??
  410. #define?CONFIG_NUT_MUXER?1??#define?CONFIG_OGG_MUXER?0??
  411. #define?CONFIG_PCM_ALAW_MUXER?1??#define?CONFIG_PCM_MULAW_MUXER?1??
  412. #define?CONFIG_PCM_F64BE_MUXER?1??#define?CONFIG_PCM_F64LE_MUXER?1??
  413. #define?CONFIG_PCM_F32BE_MUXER?1??#define?CONFIG_PCM_F32LE_MUXER?1??
  414. #define?CONFIG_PCM_S32BE_MUXER?1??#define?CONFIG_PCM_S32LE_MUXER?1??
  415. #define?CONFIG_PCM_S24BE_MUXER?1??#define?CONFIG_PCM_S24LE_MUXER?1??
  416. #define?CONFIG_PCM_S16BE_MUXER?1??#define?CONFIG_PCM_S16LE_MUXER?1??
  417. #define?CONFIG_PCM_S8_MUXER?1??#define?CONFIG_PCM_U32BE_MUXER?1??
  418. #define?CONFIG_PCM_U32LE_MUXER?1??#define?CONFIG_PCM_U24BE_MUXER?1??
  419. #define?CONFIG_PCM_U24LE_MUXER?1??#define?CONFIG_PCM_U16BE_MUXER?1??
  420. #define?CONFIG_PCM_U16LE_MUXER?1??#define?CONFIG_PCM_U8_MUXER?1??
  421. #define?CONFIG_PSP_MUXER?1??#define?CONFIG_RAWVIDEO_MUXER?1??
  422. #define?CONFIG_RM_MUXER?1??#define?CONFIG_ROQ_MUXER?1??
  423. #define?CONFIG_RTP_MUXER?1??#define?CONFIG_RTSP_MUXER?0??
  424. #define?CONFIG_SOX_MUXER?1??#define?CONFIG_SPDIF_MUXER?1??
  425. #define?CONFIG_SWF_MUXER?1??#define?CONFIG_TG2_MUXER?1??
  426. #define?CONFIG_TGP_MUXER?1??#define?CONFIG_TRUEHD_MUXER?1??
  427. #define?CONFIG_VC1T_MUXER?1??#define?CONFIG_VOC_MUXER?1??
  428. #define?CONFIG_WAV_MUXER?1??#define?CONFIG_WEBM_MUXER?1??
  429. #define?CONFIG_YUV4MPEGPIPE_MUXER?1??#define?CONFIG_LIBNUT_MUXER?0??
  430. #define?CONFIG_ASPECT_FILTER?1??#define?CONFIG_CROP_FILTER?1??
  431. #define?CONFIG_FORMAT_FILTER?1??#define?CONFIG_NOFORMAT_FILTER?1??
  432. #define?CONFIG_NULL_FILTER?1??#define?CONFIG_PAD_FILTER?1??
  433. #define?CONFIG_PIXELASPECT_FILTER?1??#define?CONFIG_SCALE_FILTER?1??
  434. #define?CONFIG_SLICIFY_FILTER?1??#define?CONFIG_UNSHARP_FILTER?1??
  435. #define?CONFIG_VFLIP_FILTER?1??#define?CONFIG_BUFFER_FILTER?1??
  436. #define?CONFIG_NULLSRC_FILTER?1??#define?CONFIG_NULLSINK_FILTER?1??
  437. #define?CONFIG_FILE_PROTOCOL?1??#define?CONFIG_GOPHER_PROTOCOL?0??
  438. #define?CONFIG_HTTP_PROTOCOL?1??#define?CONFIG_MMST_PROTOCOL?0??
  439. #define?CONFIG_PIPE_PROTOCOL?1??#define?CONFIG_RTMP_PROTOCOL?0??
  440. #define?CONFIG_RTMPT_PROTOCOL?1??#define?CONFIG_RTMPE_PROTOCOL?1??
  441. #define?CONFIG_RTMPTE_PROTOCOL?1??#define?CONFIG_RTMPS_PROTOCOL?1??
  442. #define?CONFIG_RTP_PROTOCOL?0??#define?CONFIG_TCP_PROTOCOL?1??
  443. #define?CONFIG_UDP_PROTOCOL?1??#define?CONFIG_CONCAT_PROTOCOL?1??
  444. #define?CONFIG_ALSA_INDEV?0??#define?CONFIG_BKTR_INDEV?0??
  445. #define?CONFIG_DV1394_INDEV?1??#define?CONFIG_JACK_INDEV?0??
  446. #define?CONFIG_OSS_INDEV?0??#define?CONFIG_V4L2_INDEV?0??
  447. #define?CONFIG_V4L_INDEV?0??#define?CONFIG_VFWCAP_INDEV?0??
  448. #define?CONFIG_X11_GRAB_DEVICE_INDEV?0??#define?CONFIG_LIBDC1394_INDEV?0??
  449. #define?CONFIG_ALSA_OUTDEV?0??#define?CONFIG_OSS_OUTDEV?0??
  450. #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,解码线程发现队列空时直接退出