Permalink
Browse files

Merge from git.ffmpeg.org at 74d6871d6244865b5863a01c3dab16a2f06a1706

This resyncs ffmpeg to Feb 20, 2010.

Conflicts:
	mythtv/configure
	mythtv/libs/libmythtv/RTjpegN.h
  • Loading branch information...
1 parent ddf379b commit de9e4ca9e5fd8eaaffa3eae67c6218b76a08fed0 @Beirdo Beirdo committed Mar 10, 2011
Showing with 12,641 additions and 3,895 deletions.
  1. +0 −1 mythplugins/mytharchive/mytharchive/mytharchive.pro
  2. +0 −1 mythplugins/mythmusic/mythmusic/mythmusic.pro
  3. +0 −1 mythplugins/programs-libs.pro
  4. +127 −77 mythtv/configure
  5. +45 −0 mythtv/external/FFmpeg/.gitignore
  6. +4 −2 mythtv/external/FFmpeg/CREDITS
  7. +46 −0 mythtv/external/FFmpeg/Changelog
  8. +0 −2 mythtv/external/FFmpeg/LICENSE
  9. +18 −12 mythtv/external/FFmpeg/MAINTAINERS
  10. +29 −24 mythtv/external/FFmpeg/Makefile
  11. +212 −17 mythtv/external/FFmpeg/cmdutils.c
  12. +82 −3 mythtv/external/FFmpeg/cmdutils.h
  13. +2 −1 mythtv/external/FFmpeg/common.mak
  14. +245 −110 mythtv/external/FFmpeg/configure
  15. +261 −1 mythtv/external/FFmpeg/doc/APIchanges
  16. +1 −1 mythtv/external/FFmpeg/doc/TODO
  17. +77 −0 mythtv/external/FFmpeg/doc/bitstream_filters.texi
  18. +37 −0 mythtv/external/FFmpeg/doc/build_system.txt
  19. +67 −0 mythtv/external/FFmpeg/doc/demuxers.texi
  20. +11 −10 mythtv/external/FFmpeg/doc/developer.texi
  21. +20 −0 mythtv/external/FFmpeg/doc/encoders.texi
  22. +140 −0 mythtv/external/FFmpeg/doc/eval.texi
  23. +10 −9 mythtv/external/FFmpeg/doc/faq.texi
  24. +144 −112 mythtv/external/FFmpeg/doc/{ffmpeg-doc.texi → ffmpeg.texi}
  25. +7 −2 mythtv/external/FFmpeg/doc/{ffplay-doc.texi → ffplay.texi}
  26. +14 −13 mythtv/external/FFmpeg/doc/{ffprobe-doc.texi → ffprobe.texi}
  27. +4 −2 mythtv/external/FFmpeg/doc/{ffserver-doc.texi → ffserver.texi}
  28. +5 −1 mythtv/external/FFmpeg/doc/fftools-common-opts.texi
  29. +881 −40 mythtv/external/FFmpeg/doc/filters.texi
  30. +36 −14 mythtv/external/FFmpeg/doc/general.texi
  31. +259 −0 mythtv/external/FFmpeg/doc/git-howto.txt
  32. +11 −2 mythtv/external/FFmpeg/doc/indevs.texi
  33. +3 −2 mythtv/external/FFmpeg/doc/libavfilter.texi
  34. +68 −0 mythtv/external/FFmpeg/doc/metadata.texi
  35. +65 −0 mythtv/external/FFmpeg/doc/multithreading.txt
  36. +207 −0 mythtv/external/FFmpeg/doc/muxers.texi
  37. +58 −5 mythtv/external/FFmpeg/doc/optimization.txt
  38. +219 −0 mythtv/external/FFmpeg/doc/protocols.texi
  39. +2 −2 mythtv/external/FFmpeg/doc/soc.txt
  40. +24 −0 mythtv/external/FFmpeg/doc/t2h.init
  41. +1 −0 mythtv/external/FFmpeg/doc/texi2pod.pl
  42. +668 −668 mythtv/external/FFmpeg/ffmpeg.c
  43. +169 −230 mythtv/external/FFmpeg/ffplay.c
  44. +0 −22 mythtv/external/FFmpeg/ffpresets/libx264-default.ffpreset
  45. +2 −2 mythtv/external/FFmpeg/ffpresets/libx264-fast.ffpreset
  46. +2 −2 mythtv/external/FFmpeg/ffpresets/libx264-fast_firstpass.ffpreset
  47. +2 −2 mythtv/external/FFmpeg/ffpresets/libx264-faster.ffpreset
  48. +2 −2 mythtv/external/FFmpeg/ffpresets/libx264-faster_firstpass.ffpreset
  49. +0 −22 mythtv/external/FFmpeg/ffpresets/libx264-fastfirstpass.ffpreset
  50. +0 −22 mythtv/external/FFmpeg/ffpresets/libx264-hq.ffpreset
  51. +2 −2 mythtv/external/FFmpeg/ffpresets/libx264-lossless_fast.ffpreset
  52. +2 −2 mythtv/external/FFmpeg/ffpresets/libx264-lossless_max.ffpreset
  53. +2 −2 mythtv/external/FFmpeg/ffpresets/libx264-lossless_medium.ffpreset
  54. +2 −2 mythtv/external/FFmpeg/ffpresets/libx264-lossless_slow.ffpreset
  55. +2 −2 mythtv/external/FFmpeg/ffpresets/libx264-lossless_slower.ffpreset
  56. +2 −2 mythtv/external/FFmpeg/ffpresets/libx264-lossless_ultrafast.ffpreset
  57. +0 −22 mythtv/external/FFmpeg/ffpresets/libx264-max.ffpreset
  58. +2 −2 mythtv/external/FFmpeg/ffpresets/libx264-medium.ffpreset
  59. +2 −2 mythtv/external/FFmpeg/ffpresets/libx264-medium_firstpass.ffpreset
  60. +0 −22 mythtv/external/FFmpeg/ffpresets/libx264-normal.ffpreset
  61. +2 −2 mythtv/external/FFmpeg/ffpresets/libx264-placebo.ffpreset
  62. +2 −2 mythtv/external/FFmpeg/ffpresets/libx264-placebo_firstpass.ffpreset
  63. +2 −2 mythtv/external/FFmpeg/ffpresets/libx264-slow.ffpreset
  64. +2 −2 mythtv/external/FFmpeg/ffpresets/libx264-slow_firstpass.ffpreset
  65. +2 −2 mythtv/external/FFmpeg/ffpresets/libx264-slower.ffpreset
  66. +2 −2 mythtv/external/FFmpeg/ffpresets/libx264-slower_firstpass.ffpreset
  67. +0 −22 mythtv/external/FFmpeg/ffpresets/libx264-slowfirstpass.ffpreset
  68. +2 −2 mythtv/external/FFmpeg/ffpresets/libx264-superfast.ffpreset
  69. +2 −2 mythtv/external/FFmpeg/ffpresets/libx264-superfast_firstpass.ffpreset
  70. +2 −2 mythtv/external/FFmpeg/ffpresets/libx264-ultrafast.ffpreset
  71. +2 −2 mythtv/external/FFmpeg/ffpresets/libx264-ultrafast_firstpass.ffpreset
  72. +2 −2 mythtv/external/FFmpeg/ffpresets/libx264-veryfast.ffpreset
  73. +2 −2 mythtv/external/FFmpeg/ffpresets/libx264-veryfast_firstpass.ffpreset
  74. +2 −2 mythtv/external/FFmpeg/ffpresets/libx264-veryslow.ffpreset
  75. +2 −2 mythtv/external/FFmpeg/ffpresets/libx264-veryslow_firstpass.ffpreset
  76. +15 −8 mythtv/external/FFmpeg/ffprobe.c
  77. +45 −49 mythtv/external/FFmpeg/ffserver.c
  78. +33 −8 mythtv/external/FFmpeg/libavcodec/4xm.c
  79. +1 −1 mythtv/external/FFmpeg/libavcodec/8bps.c
  80. +3 −3 mythtv/external/FFmpeg/libavcodec/8svx.c
  81. +32 −12 mythtv/external/FFmpeg/libavcodec/Makefile
  82. +52 −0 mythtv/external/FFmpeg/libavcodec/a64colors.h
  83. +5 −0 mythtv/external/FFmpeg/libavcodec/a64enc.h
  84. +222 −81 mythtv/external/FFmpeg/libavcodec/a64multienc.c
  85. +59 −1 mythtv/external/FFmpeg/libavcodec/a64tables.h
  86. +25 −11 mythtv/external/FFmpeg/libavcodec/aac.h
  87. +1 −1 mythtv/external/FFmpeg/libavcodec/aac_adtstoasc_bsf.c
  88. +1 −1 mythtv/external/FFmpeg/libavcodec/aac_parser.c
  89. +3 −3 mythtv/external/FFmpeg/libavcodec/aac_tablegen_decl.h
  90. +543 −137 mythtv/external/FFmpeg/libavcodec/aacdec.c
  91. +16 −7 mythtv/external/FFmpeg/libavcodec/aacdectab.h
  92. +14 −11 mythtv/external/FFmpeg/libavcodec/aacenc.c
  93. +337 −38 mythtv/external/FFmpeg/libavcodec/aacpsy.c
  94. +6 −17 mythtv/external/FFmpeg/libavcodec/aacsbr.c
  95. +1 −1 mythtv/external/FFmpeg/libavcodec/aasc.c
  96. +10 −36 mythtv/external/FFmpeg/libavcodec/ac3.c
  97. +9 −12 mythtv/external/FFmpeg/libavcodec/ac3.h
  98. +3 −31 mythtv/external/FFmpeg/libavcodec/ac3_parser.c
  99. +0 −11 mythtv/external/FFmpeg/libavcodec/ac3_parser.h
  100. +11 −19 mythtv/external/FFmpeg/libavcodec/ac3dec.c
  101. +8 −10 mythtv/external/FFmpeg/libavcodec/ac3dec.h
  102. +0 −6 mythtv/external/FFmpeg/libavcodec/ac3dec_data.c
  103. +0 −1 mythtv/external/FFmpeg/libavcodec/ac3dec_data.h
  104. +60 −0 mythtv/external/FFmpeg/libavcodec/ac3dsp.c
  105. +54 −0 mythtv/external/FFmpeg/libavcodec/ac3dsp.h
  106. +1,504 −1,087 mythtv/external/FFmpeg/libavcodec/ac3enc.c
  107. +430 −0 mythtv/external/FFmpeg/libavcodec/ac3enc_fixed.c
  108. +59 −0 mythtv/external/FFmpeg/libavcodec/ac3enc_fixed.h
  109. +124 −0 mythtv/external/FFmpeg/libavcodec/ac3enc_float.c
  110. +45 −0 mythtv/external/FFmpeg/libavcodec/ac3enc_float.h
  111. +17 −15 mythtv/external/FFmpeg/libavcodec/ac3tab.c
  112. +4 −3 mythtv/external/FFmpeg/libavcodec/ac3tab.h
  113. +73 −33 mythtv/external/FFmpeg/libavcodec/adpcm.c
  114. +2 −2 mythtv/external/FFmpeg/libavcodec/adxdec.c
  115. +2 −2 mythtv/external/FFmpeg/libavcodec/adxenc.c
  116. +16 −24 mythtv/external/FFmpeg/libavcodec/alac.c
  117. +15 −11 mythtv/external/FFmpeg/libavcodec/alacenc.c
  118. +23 −11 mythtv/external/FFmpeg/libavcodec/allcodecs.c
  119. +95 −60 mythtv/external/FFmpeg/libavcodec/alsdec.c
  120. +68 −0 mythtv/external/FFmpeg/libavcodec/amr.h
  121. +9 −37 mythtv/external/FFmpeg/libavcodec/amrnbdec.c
  122. +1,890 −0 mythtv/external/FFmpeg/libavcodec/amrwbdata.h
  123. +1,237 −0 mythtv/external/FFmpeg/libavcodec/amrwbdec.c
  124. +1 −1 mythtv/external/FFmpeg/libavcodec/anm.c
  125. +3 −3 mythtv/external/FFmpeg/libavcodec/ansi.c
  126. +4 −3 mythtv/external/FFmpeg/libavcodec/apedec.c
  127. +10 −0 mythtv/external/FFmpeg/libavcodec/arm/Makefile
  128. +6 −15 mythtv/external/FFmpeg/libavcodec/arm/asm-offsets.h
  129. +11 −1 mythtv/external/FFmpeg/libavcodec/arm/asm.S
  130. +1 −1 mythtv/external/FFmpeg/libavcodec/arm/dcadsp_init_arm.c
  131. +2 −3 mythtv/external/FFmpeg/libavcodec/arm/dcadsp_neon.S
  132. +0 −5 mythtv/external/FFmpeg/libavcodec/arm/dsputil_init_arm.c
  133. +2 −13 mythtv/external/FFmpeg/libavcodec/arm/dsputil_init_neon.c
  134. +2 −5 mythtv/external/FFmpeg/libavcodec/arm/dsputil_init_vfp.c
  135. +5 −3 mythtv/external/FFmpeg/libavcodec/arm/dsputil_iwmmxt.c
  136. +27 −398 mythtv/external/FFmpeg/libavcodec/arm/dsputil_neon.S
  137. +14 −70 mythtv/external/FFmpeg/libavcodec/arm/dsputil_vfp.S
  138. +2 −2 mythtv/external/FFmpeg/libavcodec/arm/fft_init_arm.c
  139. +48 −0 mythtv/external/FFmpeg/libavcodec/arm/fmtconvert_init_arm.c
  140. +391 −0 mythtv/external/FFmpeg/libavcodec/arm/fmtconvert_neon.S
  141. +77 −0 mythtv/external/FFmpeg/libavcodec/arm/fmtconvert_vfp.S
  142. +4 −4 mythtv/external/FFmpeg/libavcodec/arm/h264idct_neon.S
  143. +2 −2 mythtv/external/FFmpeg/libavcodec/arm/h264pred_neon.S
  144. +2 −1 mythtv/external/FFmpeg/libavcodec/arm/mpegvideo_iwmmxt.c
  145. +7 −10 mythtv/external/FFmpeg/libavcodec/arm/mpegvideo_neon.S
  146. +3 −5 mythtv/external/FFmpeg/libavcodec/arm/synth_filter_neon.S
  147. +92 −0 mythtv/external/FFmpeg/libavcodec/arm/vp56_arith.h
  148. +29 −0 mythtv/external/FFmpeg/libavcodec/arm/vp8.h
  149. +220 −0 mythtv/external/FFmpeg/libavcodec/arm/vp8_armv6.S
  150. +163 −0 mythtv/external/FFmpeg/libavcodec/arm/vp8dsp_init_arm.c
Sorry, we could not display the entire diff because too many files (1,682) changed.
View
1 mythplugins/mytharchive/mytharchive/mytharchive.pro
@@ -12,7 +12,6 @@ DEPENDPATH *= $${INCLUDEPATH}
LIBS += -lmythswscale
LIBS += -lmythavformat
LIBS += -lmythavcodec
-LIBS += -lmythavcore
LIBS += -lmythavutil
LIBS += -lmythmetadata-$$LIBVERSION
View
1 mythplugins/mythmusic/mythmusic/mythmusic.pro
@@ -18,7 +18,6 @@ INSTALLS += target
LIBS += -lmythavformat
LIBS += -lmythavcodec
-LIBS += -lmythavcore
LIBS += -lmythavutil
LIBS += -ltag -logg -lvorbisfile -lvorbis -lvorbisenc -lFLAC -lmp3lame
View
1 mythplugins/programs-libs.pro
@@ -8,7 +8,6 @@ LIBS += -L$${LIBDIR} $$EXTRA_LIBS -lmythbase-$$LIBVERSION
LIBS += -lmyth-$$LIBVERSION -lmythui-$$LIBVERSION -lmythupnp-$$LIBVERSION
LIBS += -lmythservicecontracts-$$LIBVERSION
LIBS += -lmythavcodec
-LIBS += -lmythavcore
LIBS += -lmythavutil
LIBS += -lmythavformat
View
204 mythtv/configure
@@ -170,7 +170,6 @@ Configuration options:
--disable-ffserver disable ffserver build
--disable-avdevice disable libavdevice build
--disable-avcodec disable libavcodec build
- --disable-avcore disable libavcore build
--disable-avformat disable libavformat build
--disable-swscale disable libswscale build
--enable-postproc enable GPLed postprocessing support [no]
@@ -246,8 +245,10 @@ Configuration options:
External library support:
--enable-avisynth enable reading of AVISynth script files [no]
--enable-bzlib enable bzlib [autodetect]
+ --enable-frei0r enable frei0r video filtering
--enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
--enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
+ --enable-libopencv enable video filtering via libopencv [no]
--enable-libdc1394 enable IIDC-1394 grabbing using libdc1394
and libraw1394 [no]
--enable-libdirac enable Dirac support via libdirac [no]
@@ -594,20 +595,29 @@ check_deps(){
done
}
+print_config_h(){
+ enabled $1 && v=1 || v=0
+ echo "#define $2 $v"
+}
+
+print_config_mak(){
+ enabled $1 && v= || v=!
+ echo "$v$2=yes"
+}
+
+print_config_asm(){
+ enabled $1 && echo "%define $2"
+}
+
print_config(){
pfx=$1
- header=$2
- makefile=$3
- shift 3
+ files=$2
+ shift 2
for cfg; do
ucname="$(toupper $cfg)"
- if enabled $cfg; then
- echo "#define ${pfx}${ucname} 1" >> $header
- echo "${pfx}${ucname}=yes" >> $makefile
- else
- echo "#define ${pfx}${ucname} 0" >> $header
- echo "!${pfx}${ucname}=yes" >> $makefile
- fi
+ for f in $files; do
+ "print_config_${f##*.}" $cfg ${pfx}${ucname} >>$f
+ done
done
}
@@ -1080,7 +1090,6 @@ CONFIG_LIST="
$COMPONENT_LIST
aandct
avcodec
- avcore
avdevice
avfilter
avformat
@@ -1096,6 +1105,7 @@ CONFIG_LIST="
ffprobe
ffserver
fft
+ frei0r
golomb
gpl
gray
@@ -1111,6 +1121,7 @@ CONFIG_LIST="
libnut
libopencore_amrnb
libopencore_amrwb
+ libopencv
libopenjpeg
librtmp
libschroedinger
@@ -1132,6 +1143,7 @@ CONFIG_LIST="
pic
postproc
rdft
+ rtpdec
runtime_cpudetect
shared
small
@@ -1203,13 +1215,13 @@ HAVE_LIST="
$ARCH_EXT_LIST
$HAVE_LIST_PUB
$THREADS_LIST
+ aligned_stack
alsa_asoundlib_h
altivec_h
arpa_inet_h
attribute_may_alias
attribute_packed
bswap
- byteswap_h
closesocket
cmov
conio_h
@@ -1258,8 +1270,10 @@ HAVE_LIST="
machine_ioctl_bt848_h
machine_ioctl_meteor_h
malloc_h
+ MapViewOfFile
memalign
mkstemp
+ mmap
pld
posix_memalign
round
@@ -1272,6 +1286,7 @@ HAVE_LIST="
poll_h
setrlimit
strerror_r
+ strtok_r
struct_addrinfo
struct_ipv6_mreq
struct_sockaddr_in6
@@ -1280,7 +1295,6 @@ HAVE_LIST="
symver
symver_gnu_asm
symver_asm_label
- sys_endian_h
sys_mman_h
sys_resource_h
sys_select_h
@@ -1294,6 +1308,7 @@ HAVE_LIST="
VirtualAlloc
winsock2_h
xform_asm
+ xmm_clobbers
yasm
"
@@ -1392,6 +1407,7 @@ CMDLINE_SELECT="
opengl
optimizations
stripping
+ symver
yasm
"
@@ -1473,6 +1489,7 @@ mmx2_deps="mmx"
sse_deps="mmx"
ssse3_deps="sse"
+aligned_stack_if_any="ppc x86"
fast_64bit_if_any="alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64"
fast_clz_if_any="alpha armv5te avr32 mips ppc x86"
fast_unaligned_if_any="armv6 ppc x86"
@@ -1490,10 +1507,12 @@ rdft_select="fft"
# decoders / encoders / hardware accelerators
aac_decoder_select="mdct rdft"
aac_encoder_select="mdct"
-aac_latm_decoder_select="aac_decoder"
+aac_latm_decoder_select="aac_decoder aac_latm_parser"
ac3_decoder_select="mdct ac3_parser"
+ac3_encoder_select="mdct"
alac_encoder_select="lpc"
amrnb_decoder_select="lsp"
+amrwb_decoder_select="lsp"
atrac1_decoder_select="mdct"
atrac3_decoder_select="mdct"
binkaudio_dct_decoder_select="mdct rdft dct"
@@ -1620,13 +1639,11 @@ vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
# parsers
h264_parser_select="golomb h264dsp h264pred"
-latm_parser_deps="libfaad"
# external libraries
libdirac_decoder_deps="libdirac !libschroedinger"
libdirac_encoder_deps="libdirac"
libfaac_encoder_deps="libfaac"
-libfaad_latm_decoder_deps="libfaad"
libgsm_decoder_deps="libgsm"
libgsm_encoder_deps="libgsm"
libgsm_ms_decoder_deps="libgsm"
@@ -1648,32 +1665,36 @@ libxavs_encoder_deps="libxavs"
libxvid_encoder_deps="libxvid"
# demuxers / muxers
-ac3_demuxer_deps="ac3_parser"
+ac3_demuxer_select="ac3_parser"
asf_stream_muxer_select="asf_muxer"
avisynth_demuxer_deps="avisynth"
-dirac_demuxer_deps="dirac_parser"
+dirac_demuxer_select="dirac_parser"
eac3_demuxer_select="ac3_parser"
+flac_demuxer_select="flac_parser"
ipod_muxer_select="mov_muxer"
libnut_demuxer_deps="libnut"
libnut_muxer_deps="libnut"
matroska_audio_muxer_select="matroska_muxer"
matroska_demuxer_suggest="zlib bzlib"
mov_demuxer_suggest="zlib"
-mp3_demuxer_deps="mpegaudio_parser"
+mp3_demuxer_select="mpegaudio_parser"
mp4_muxer_select="mov_muxer"
mpegtsraw_demuxer_select="mpegts_demuxer"
mxf_d10_muxer_select="mxf_muxer"
ogg_demuxer_select="golomb"
psp_muxer_select="mov_muxer"
-rtsp_demuxer_deps="sdp_demuxer"
-rtsp_muxer_deps="sdp_demuxer"
-rtsp_muxer_select="rtp_muxer"
-sdp_demuxer_deps="rtp_protocol mpegts_demuxer"
-sdp_demuxer_select="asf_demuxer rm_demuxer"
+rtp_demuxer_select="sdp_demuxer"
+rtpdec_select="asf_demuxer rm_demuxer rtp_protocol mpegts_demuxer mov_demuxer"
+rtsp_demuxer_select="http_protocol rtpdec"
+rtsp_muxer_select="rtp_muxer http_protocol rtp_protocol"
+sap_demuxer_select="sdp_demuxer"
+sap_muxer_select="rtp_muxer rtp_protocol"
+sdp_demuxer_select="rtpdec"
spdif_muxer_select="aac_parser"
tg2_muxer_select="mov_muxer"
tgp_muxer_select="mov_muxer"
w64_demuxer_deps="wav_demuxer"
+wtv_demuxer_deps="disable-borked"
# indevs / outdevs
alsa_indev_deps="alsa_asoundlib_h snd_pcm_htimestamp"
@@ -1702,6 +1723,16 @@ rtp_protocol_select="udp_protocol"
tcp_protocol_deps="network"
udp_protocol_deps="network"
+# filters
+blackframe_filter_deps="gpl"
+cropdetect_filter_deps="gpl"
+frei0r_filter_deps="frei0r dlopen strtok_r"
+frei0r_src_filter_deps="frei0r dlopen strtok_r"
+hqdn3d_filter_deps="gpl"
+scale_filter_deps="swscale"
+ocv_filter_deps="libopencv"
+yadif_filter_deps="gpl"
+
# libraries
avdevice_deps="avcodec avformat"
avformat_deps="avcodec"
@@ -1961,7 +1992,6 @@ libxml2_path_default="${sysroot}/usr/include/libxml2"
# configurable options
enable avcodec
-enable avcore
enable avdevice
enable avfilter
enable avformat
@@ -2310,6 +2340,8 @@ tmpfile TMPS .S
tmpfile TMPV .ver
tmpfile TMPSH .sh
tmpfile TMPCXX .cpp
+tmpfile TMPASM .asm
+tmpfile TMPMAK .mak
unset -f mktemp
@@ -3564,6 +3596,7 @@ check_func inet_aton $network_extralibs
check_func isatty
check_func ${malloc_prefix}memalign && enable memalign
check_func mkstemp
+check_func mmap
check_func ${malloc_prefix}posix_memalign && enable posix_memalign
check_func setrlimit
check_func strerror_r
@@ -3666,6 +3699,8 @@ enabled libmp3lame && require libmp3lame lame/lame.h lame_init -lmp3lame
enabled libnut && require libnut libnut.h nut_demuxer_init -lnut
enabled libopencore_amrnb && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb
enabled libopencore_amrwb && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb
+enabled libopencv && { check_lib opencv/cv.h cvCreateImageHeader $(pkg-config --libs opencv) ||
+ die "ERROR: libopencv not found"; }
enabled libopenjpeg && require libopenjpeg openjpeg.h opj_version -lopenjpeg
enabled librtmp && { check_lib librtmp/rtmp.h RTMP_Socket $(pkg-config --libs librtmp) ||
die "ERROR: librtmp not found or RTMP_Socket() missing, librtmp version must be >= 2.2.f"; }
@@ -3680,8 +3715,8 @@ enabled libvpx && {
enabled libvpx_encoder && { check_lib2 "vpx/vpx_encoder.h vpx/vp8cx.h" vpx_codec_enc_init_ver -lvpx ||
die "ERROR: libvpx encoder version must be >=0.9.1"; } }
enabled libx264 && require libx264 x264.h x264_encoder_encode -lx264 &&
- { check_cpp_condition x264.h "X264_BUILD >= 98" ||
- die "ERROR: libx264 version must be >= 0.98."; }
+ { check_cpp_condition x264.h "X264_BUILD >= 99" ||
+ die "ERROR: libx264 version must be >= 0.99."; }
enabled libxavs && require libxavs xavs.h xavs_encoder_encode -lxavs
enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore
enabled mlib && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
@@ -3903,7 +3938,7 @@ check_ldflags -Wl,--warn-common
<<BLOCKQUOTE
check_ldflags -Wl,--as-needed
BLOCKQUOTE
-check_ldflags '-Wl,-rpath-link,\$(BUILD_ROOT)/external/FFmpeg/libpostproc -Wl,-rpath-link,\$(BUILD_ROOT)/external/FFmpeg/libswscale -Wl,-rpath-link,\$(BUILD_ROOT)/external/FFmpeg/libavfilter -Wl,-rpath-link,\$(BUILD_ROOT)/external/FFmpeg/libavdevice -Wl,-rpath-link,\$(BUILD_ROOT)/external/FFmpeg/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/external/FFmpeg/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/external/FFmpeg/libavcore -Wl,-rpath-link,\$(BUILD_ROOT)/external/FFmpeg/libavutil'
+check_ldflags '-Wl,-rpath-link,\$(BUILD_ROOT)/external/FFmpeg/libpostproc -Wl,-rpath-link,\$(BUILD_ROOT)/external/FFmpeg/libswscale -Wl,-rpath-link,\$(BUILD_ROOT)/external/FFmpeg/libavfilter -Wl,-rpath-link,\$(BUILD_ROOT)/external/FFmpeg/libavdevice -Wl,-rpath-link,\$(BUILD_ROOT)/external/FFmpeg/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/external/FFmpeg/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/external/FFmpeg/libavutil'
check_ldflags -Wl,-Bsymbolic
echo "X{};" > $TMPV
@@ -4294,6 +4329,7 @@ echo "threading support ${thread_type-no}"
echo "SDL support ${sdl-no}"
echo "Sun medialib support ${mlib-no}"
echo "AVISynth enabled ${avisynth-no}"
+echo "frei0r enabled ${frei0r-no}"
echo "libdc1394 support ${libdc1394-no}"
echo "libdirac enabled ${libdirac-no}"
echo "libfaac enabled ${libfaac-no}"
@@ -4302,6 +4338,7 @@ echo "libmp3lame enabled ${libmp3lame-no}"
echo "libnut enabled ${libnut-no}"
echo "libopencore-amrnb support ${libopencore_amrnb-no}"
echo "libopencore-amrwb support ${libopencore_amrwb-no}"
+echo "libopencv support ${libopencv-no}"
echo "libopenjpeg enabled ${libopenjpeg-no}"
echo "librtmp enabled ${librtmp-no}"
echo "libschroedinger enabled ${libschroedinger-no}"
@@ -4354,7 +4391,6 @@ if enabled source_path_used; then
doc
libavcodec
libavcodec/$arch
- libavcore
libavdevice
libavfilter
libavformat
@@ -4373,7 +4409,6 @@ if enabled source_path_used; then
doc/texi2pod.pl
libavcodec/Makefile
libavcodec/${arch}/Makefile
- libavcore/Makefile
libavdevice/Makefile
libavfilter/Makefile
libavformat/Makefile
@@ -4387,6 +4422,8 @@ fi
enabled stripping || strip="echo skipping strip"
+config_files="$TMPH $TMPMAK"
+
if enabled backend; then
echo "Video4Linux sup. ${v4l-no}"
echo "ivtv support ${ivtv-no}"
@@ -4456,7 +4493,7 @@ echo "Creating $MYTH_CONFIG_H and $MYTH_CONFIG_MAK"
date >> config.log
echo " $0 $MYTHTV_CONFIGURATION" >> config.log
-cat > libs/libmythbase/mythconfig.mak <<EOF
+cat > $TMPMAK <<EOF
# Automatically generated by configure - do not modify!
FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION
MYTHTV_CONFIG_MAK=1
@@ -4545,22 +4582,21 @@ get_version(){
eval $(grep "#define ${name}_VERSION_M" "$file" | awk '{ print $2"="$3 }')
eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO
lcname=$(tolower $name)
- eval echo "${lcname}_VERSION=\$${name}_VERSION" >> $MYTH_CONFIG_MAK
- eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> $MYTH_CONFIG_MAK
+ eval echo "${lcname}_VERSION=\$${name}_VERSION" >> $TMPMAK
+ eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> $TMPMAK
}
get_version LIBSWSCALE external/FFmpeg/libswscale/swscale.h
get_version LIBPOSTPROC external/FFmpeg/libpostproc/postprocess.h
get_version LIBAVCODEC external/FFmpeg/libavcodec/avcodec.h
-get_version LIBAVCORE external/FFmpeg/libavcore/avcore.h
get_version LIBAVDEVICE external/FFmpeg/libavdevice/avdevice.h
-get_version LIBAVFORMAT external/FFmpeg/libavformat/avformat.h
+get_version LIBAVFORMAT external/FFmpeg/libavformat/version.h
get_version LIBAVUTIL external/FFmpeg/libavutil/avutil.h
get_version LIBAVFILTER external/FFmpeg/libavfilter/avfilter.h
-echo "RUNPREFIX=$runprefix" >> $MYTH_CONFIG_MAK
-echo "SYSROOT=$sysroot" >> $MYTH_CONFIG_MAK
+echo "RUNPREFIX=$runprefix" >> $TMPMAK
+echo "SYSROOT=$sysroot" >> $TMPMAK
enabled audio_alsa && append CCONFIG "using_alsa"
enabled audio_jack && append CCONFIG "using_jack"
@@ -4570,17 +4606,17 @@ enabled audio_pulseoutput && append CCONFIG "using_pulseoutput"
if enabled darwin_da; then
append CCONFIG "darwin_da"
- echo "SLIB_UNINSTALL_EXTRA_CMD=${SLIB_UNINSTALL_EXTRA_CMD}" >> $MYTH_CONFIG_MAK
+ echo "SLIB_UNINSTALL_EXTRA_CMD=${SLIB_UNINSTALL_EXTRA_CMD}" >> $TMPMAK
fi
if enabled freetype2; then
- echo "FREETYPE_CFLAGS=`freetype-config --cflags`" >> $MYTH_CONFIG_MAK
- echo "FREETYPE_LIBS=`freetype-config --libs`" >> $MYTH_CONFIG_MAK
+ echo "FREETYPE_CFLAGS=`freetype-config --cflags`" >> $TMPMAK
+ echo "FREETYPE_LIBS=`freetype-config --libs`" >> $TMPMAK
fi
if test $target_os = darwin; then
# Qt, by default builds .app bundles everywhere. Prevent this.
- enabled mac_bundle || echo "CONFIG -= app_bundle" >> $MYTH_CONFIG_MAK
+ enabled mac_bundle || echo "CONFIG -= app_bundle" >> $TMPMAK
fi
cat > $TMPH <<EOF
@@ -4626,26 +4662,31 @@ if enabled cygwin ; then
echo "#endif" >> $TMPH
fi
-print_config ARCH_ $TMPH $MYTH_CONFIG_MAK $ARCH_LIST
-print_config HAVE_ $TMPH $MYTH_CONFIG_MAK $HAVE_LIST
-print_config HAVE_ $TMPH $MYTH_CONFIG_MAK $MYTHTV_HAVE_LIST
-print_config CONFIG_ $TMPH $MYTH_CONFIG_MAK $CONFIG_LIST \
- $CONFIG_EXTRA \
- $DECODER_LIST \
- $ENCODER_LIST \
- $HWACCEL_LIST \
- $PARSER_LIST \
- $BSF_LIST \
- $DEMUXER_LIST \
- $MUXER_LIST \
- $FILTER_LIST \
- $PROTOCOL_LIST \
- $INDEV_LIST \
- $OUTDEV_LIST \
- $MYTHTV_LIST \
- $MYTHTV_CONFIG_LIST \
-
-cat >>config.mak <<EOF
+if enabled yasm; then
+ append config_files $TMPASM
+ printf '' >$TMPASM
+fi
+
+print_config ARCH_ "$config_files" $ARCH_LIST
+print_config HAVE_ "$config_files" $HAVE_LIST
+print_config HAVE_ "$config_files" $MYTHTV_HAVE_LIST
+print_config CONFIG_ "$config_files" $CONFIG_LIST \
+ $CONFIG_EXTRA \
+ $DECODER_LIST \
+ $ENCODER_LIST \
+ $HWACCEL_LIST \
+ $PARSER_LIST \
+ $BSF_LIST \
+ $DEMUXER_LIST \
+ $MUXER_LIST \
+ $FILTER_LIST \
+ $PROTOCOL_LIST \
+ $INDEV_LIST \
+ $OUTDEV_LIST \
+ $MYTHTV_LIST \
+ $MYTHTV_CONFIG_LIST \
+
+cat >> $TMPMAK <<EOF
ACODEC_TESTS=$(print_enabled -n _test $ACODEC_TESTS)
VCODEC_TESTS=$(print_enabled -n _test $VCODEC_TESTS)
LAVF_TESTS=$(print_enabled -n _test $LAVF_TESTS)
@@ -4695,9 +4736,9 @@ fi
if enabled firewire; then
if test $target_os = darwin; then
- echo "CONFIG_MAC_AVC=$mac_avc" >> $MYTH_CONFIG_MAK
+ echo "CONFIG_MAC_AVC=$mac_avc" >> $TMPMAK
else
- echo "CONFIG_FIREWIRE_LIBS=-lraw1394 -liec61883 -lavc1394 -lrom1394" >> $MYTH_CONFIG_MAK
+ echo "CONFIG_FIREWIRE_LIBS=-lraw1394 -liec61883 -lavc1394 -lrom1394" >> $TMPMAK
fi
fi
@@ -4735,34 +4776,34 @@ if enabled x11; then
fi
if enabled directfb; then
- echo "CONFIG_DIRECTFB_LIBS=$CONFIG_DIRECTFB_LIBS" >> $MYTH_CONFIG_MAK
- echo "CONFIG_DIRECTFB_CXXFLAGS=$CONFIG_DIRECTFB_CXXFLAGS" >> $MYTH_CONFIG_MAK
+ echo "CONFIG_DIRECTFB_LIBS=$CONFIG_DIRECTFB_LIBS" >> $TMPMAK
+ echo "CONFIG_DIRECTFB_CXXFLAGS=$CONFIG_DIRECTFB_CXXFLAGS" >> $TMPMAK
fi
if ! enabled darwin && enabled opengl; then
- echo "CONFIG_OPENGL_LIBS=$gl_lib $glu_lib" >> $MYTH_CONFIG_MAK
+ echo "CONFIG_OPENGL_LIBS=$gl_lib $glu_lib" >> $TMPMAK
fi
if test x"$PERL_CONFIG_OPTS" != x"" ; then
- echo "PERL_CONFIG_OPTS=$PERL_CONFIG_OPTS" >> $MYTH_CONFIG_MAK
+ echo "PERL_CONFIG_OPTS=$PERL_CONFIG_OPTS" >> $TMPMAK
fi
if test x"$CCONFIG" != x"" ; then
- echo "CCONFIG=$CCONFIG" >> $MYTH_CONFIG_MAK
+ echo "CCONFIG=$CCONFIG" >> $TMPMAK
echo "#define MYTH_BUILD_CONFIG \"$CCONFIG\"" >>$TMPH
fi
if test x"$CONFIG_DEFINES" != x"" ; then
- echo "CONFIG_DEFINES=$CONFIG_DEFINES" >> $MYTH_CONFIG_MAK
+ echo "CONFIG_DEFINES=$CONFIG_DEFINES" >> $TMPMAK
fi
if test x"$CONFIG_INCLUDEPATH" != x"" ; then
- echo "CONFIG_INCLUDEPATH=$CONFIG_INCLUDEPATH" >> $MYTH_CONFIG_MAK
+ echo "CONFIG_INCLUDEPATH=$CONFIG_INCLUDEPATH" >> $TMPMAK
fi
echo "#endif /* MYTHTV_CONFIG_H */" >> $TMPH
-cat <<EOF >> $MYTH_CONFIG_MAK
+cat <<EOF >> $TMPMAK
# HACK: If Qt 4 and MythTV's installed library dirs are the same, remove the
# -L from early in the link line, to ignore any old installed libmyth*
# Note: Qt uses QMAKE_INCDIR_QT to build an absolute path for include
@@ -4772,7 +4813,7 @@ QMAKE_LIBDIR-=${sysroot}${libdir}
LATE_LIBS+=-L${sysroot}${libdir}
EOF
-#echo "endif # FFMPEG_CONFIG_MAK" >> config.mak
+#echo "endif # FFMPEG_CONFIG_MAK" >> $TMPMAK
cp_if_changed $TMPH $MYTH_CONFIG_H
@@ -4784,8 +4825,16 @@ if [ ! -e config.h ] ; then
ln -s $MYTH_CONFIG_H config.h
fi
-rm -f config.mak
-ln -s $MYTH_CONFIG_MAK config.mak
+cp_if_changed $TMPMAK $MYTH_CONFIG_MAK
+
+if ! test -L config.mak ; then
+ ln -s $MYTH_CONFIG_MAK config.mak
+fi
+
+if [ ! -e config.mak ] ; then
+ ln -s $MYTH_CONFIG_MAK config.mak
+fi
+
# create config.mak for external/FFmpeg
cat > external/FFmpeg/config.mak <<EOF
@@ -4799,7 +4848,7 @@ SLIB_INSTALL_EXTRA_CMD=${SLIB_INSTALL_EXTRA_CMD}
SLIB_UNINSTALL_EXTRA_CMD=${SLIB_UNINSTALL_EXTRA_CMD}
EOF
# Strip out the old dirs that we are about to put back in.
-sed -e '/^S?H?LIBDIR=.*$/d' -e '/^INCDIR=.*$/d' -e '/^BINDIR=.*$/d' -e '/^DATADIR=.*$/d' -e '/^MANDIR=.*$/d' $MYTH_CONFIG_MAK >> external/FFmpeg/config.mak
+sed -e '/^S?H?LIBDIR=.*$/d' -e '/^INCDIR=.*$/d' -e '/^BINDIR=.*$/d' -e '/^DATADIR=.*$/d' -e '/^MANDIR=.*$/d' $TMPMAK >> external/FFmpeg/config.mak
cat >> external/FFmpeg/config.mak <<EOF
LIBDIR=\$(INSTALL_ROOT)$libdir
SHLIBDIR=\$(INSTALL_ROOT)$shlibdir
@@ -4816,6 +4865,7 @@ rm -f external/FFmpeg/config.h
(cd external/FFmpeg/ && ln -s ../../$MYTH_CONFIG_H config.h)
touch external/FFmpeg/.config
+enabled yasm && cp_if_changed $TMPASM external/FFmpeg/config.asm
# delete old myth config files in old location
if [ -e libs/libmyth/mythconfig.mak ] ; then
@@ -4831,7 +4881,7 @@ cat > $TMPH <<EOF
#ifndef AVUTIL_AVCONFIG_H
#define AVUTIL_AVCONFIG_H
EOF
-print_config AV_HAVE_ $TMPH /dev/null $HAVE_LIST_PUB
+print_config AV_HAVE_ $TMPH $HAVE_LIST_PUB
echo "#endif /* AVUTIL_AVCONFIG_H */" >> $TMPH
View
45 mythtv/external/FFmpeg/.gitignore
@@ -0,0 +1,45 @@
+.config
+.version
+*.o
+*.d
+*.exe
+*.ho
+*-example
+*-test
+*_g
+config.*
+doc/*.1
+doc/*.html
+doc/*.pod
+doxy
+ffmpeg
+ffplay
+ffprobe
+ffserver
+libavcodec/libavcodec*
+libavcore/libavcore*
+libavdevice/libavdevice*
+libavfilter/libavfilter*
+libavformat/libavformat*
+libavutil/avconfig.h
+libavutil/libavutil*
+libpostproc/libpostproc*
+libswscale/libswscale*
+tests/audiogen
+tests/base64
+tests/data
+tests/rotozoom
+tests/seek_test
+tests/tiny_psnr
+tests/videogen
+tests/vsynth1
+tests/vsynth2
+tools/cws2fws
+tools/graph2dot
+tools/lavfi-showfiltfmts
+tools/pktdumper
+tools/probetest
+tools/qt-faststart
+tools/trasher
+tools/trasher*.d
+version.h
View
6 mythtv/external/FFmpeg/CREDITS
@@ -1,5 +1,7 @@
-This file contains the name of the people who have contributed to
-FFmpeg. The names are sorted alphabetically by last name.
+This file contains the names of some of the people who have contributed to
+FFmpeg. The names are sorted alphabetically by last name. As this file is
+currently quite outdated and git serves as a much better tool for determining
+authorship, it remains here for historical reasons only.
Dénes Balatoni
Michel Bardiaux
View
46 mythtv/external/FFmpeg/Changelog
@@ -31,6 +31,52 @@ version <next>:
- RTP packetization and depacketization of VP8
- hflip filter
- Apple HTTP Live Streaming demuxer
+- a64 codec
+- MMS-HTTP support
+- G.722 ADPCM audio encoder/decoder
+- R10k video decoder
+- ocv_smooth filter
+- frei0r wrapper filter
+- change crop filter syntax to width:height:x:y
+- make the crop filter accept parametric expressions
+- make ffprobe accept AVFormatContext options
+- yadif filter
+- blackframe filter
+- Demuxer for Leitch/Harris' VR native stream format (LXF)
+- RTP depacketization of the X-QT QuickTime format
+- SAP (Session Announcement Protocol, RFC 2974) muxer and demuxer
+- cropdetect filter
+- ffmpeg -crop* options removed
+- transpose filter added
+- ffmpeg -force_key_frames option added
+- demuxer for receiving raw rtp:// URLs without an SDP description
+- single stream LATM/LOAS decoder
+- setpts filter added
+- Win64 support for optimized asm functions
+- MJPEG/AVI1 to JPEG/JFIF bitstream filter
+- ASS subtitle encoder and decoder
+- IEC 61937 encapsulation for E-AC3, TrueHD, DTS-HD (for HDMI passthrough)
+- overlay filter added
+- rename aspect filter to setdar, and pixelaspect to setsar
+- IEC 61937 demuxer
+- Mobotix .mxg demuxer
+- frei0r source added
+- hqdn3d filter added
+- RTP depacketization of QCELP
+- FLAC parser added
+- gradfun filter added
+- AMR-WB decoder
+- replace the ocv_smooth filter with a more generic ocv filter
+- Windows Televison (WTV) demuxer
+- FFmpeg metadata format muxer and demuxer
+- SubRip (srt) subtitle decoder
+- floating-point AC-3 encoder added
+- Lagarith decoder
+- ffmpeg -copytb option added
+- IVF muxer added
+- Wing Commander IV movies decoder added
+- movie source added
+- Bink version 'b' video decoder
version 0.6:
View
2 mythtv/external/FFmpeg/LICENSE
@@ -15,8 +15,6 @@ Specifically, the GPL parts of FFmpeg are
- libpostproc
- optional x86 optimizations in the files
- libavcodec/x86/h264_deblock_sse2.asm
- libavcodec/x86/h264_idct_sse2.asm
libavcodec/x86/idct_mmx.c
- the X11 grabber in libavdevice/x11grab.c
View
30 mythtv/external/FFmpeg/MAINTAINERS
@@ -5,13 +5,6 @@ Below is a list of the people maintaining different parts of the
FFmpeg code.
-Project Leader
-==============
-
-Michael Niedermayer
- final design decisions
-
-
Applications
============
@@ -109,11 +102,11 @@ Codecs:
8bps.c Roberto Togni
8svx.c Jaikrishnan Menon
aasc.c Kostya Shishkov
- aac*, sbr.h Alex Converse
ac3* Justin Ruggles
alacenc.c Jaikrishnan Menon
alsdec.c Thilo Borgmann
apedec.c Kostya Shishkov
+ ass* Aurelien Jacobs
asv* Michael Niedermayer
atrac3* Benjamin Larsson
bgmc.c, bgmc.h Thilo Borgmann
@@ -136,6 +129,7 @@ Codecs:
flac* Justin Ruggles
flashsv* Benjamin Larsson
flicvideo.c Mike Melanson
+ g722.c Martin Storsjo
g726.c Roman Shaposhnik
gifdec.c Baptiste Coudurier
h264* Loren Merritt, Michael Niedermayer
@@ -196,6 +190,7 @@ Codecs:
smc.c Mike Melanson
snow.c Michael Niedermayer, Loren Merritt
sonic.c Alex Beregszaszi
+ srtdec.c Aurelien Jacobs
sunrast.c Ivo van Poorten
svq3.c Michael Niedermayer
targa.c Kostya Shishkov
@@ -260,8 +255,10 @@ Muxers/Demuxers:
adtsenc.c Robert Swain
aiff.c Baptiste Coudurier
ape.c Kostya Shishkov
+ ass* Aurelien Jacobs
avi* Michael Niedermayer
bink.c Peter Ross
+ caf* Peter Ross
crc.c Michael Niedermayer
daud.c Reimar Doeffinger
dv.c Roman Shaposhnik
@@ -274,13 +271,14 @@ Muxers/Demuxers:
gxf.c Reimar Doeffinger
gxfenc.c Baptiste Coudurier
idcin.c Mike Melanson
- idroq.c Mike Melanson
+ idroqdec.c Mike Melanson
iff.c Jaikrishnan Menon
ipmovie.c Mike Melanson
img2.c Michael Niedermayer
iss.c Stefan Gehrer
libnut.c Oded Shimon
lmlm4.c Ivo van Poorten
+ lxfdec.c Tomas Härdin
matroska.c Aurelien Jacobs
matroskadec.c Aurelien Jacobs
matroskaenc.c David Conrad
@@ -310,21 +308,23 @@ Muxers/Demuxers:
rl2.c Sascha Sommer
rmdec.c, rmenc.c Ronald S. Bultje, Kostya Shishkov
rtmp* Kostya Shishkov
- rtp.c, rtpenc.c Luca Abeni
+ rtp.c, rtpenc.c Martin Storsjo
rtpdec_asf.* Ronald S. Bultje
- rtpenc_mpv.*, rtpenc_aac.* Luca Abeni
+ rtpenc_mpv.*, rtpenc_aac.* Martin Storsjo
rtsp.c Luca Barbato
- sdp.c Luca Abeni
+ sdp.c Martin Storsjo
segafilm.c Mike Melanson
siff.c Kostya Shishkov
smacker.c Kostya Shishkov
+ srtdec.c Aurelien Jacobs
swf.c Baptiste Coudurier
tta.c Alex Beregszaszi
txd.c Ivo van Poorten
voc.c Aurelien Jacobs
wav.c Michael Niedermayer
wc3movie.c Mike Melanson
westwood.c Mike Melanson
+ wtv.c Peter Ross
wv.c Kostya Shishkov
Protocols:
@@ -353,12 +353,16 @@ x86 Michael Niedermayer
GnuPG Fingerprints of maintainers and others who have svn write access
======================================================================
+Anssi Hannula 1A92 FF42 2DD9 8D2E 8AF7 65A9 4278 C520 513D F3CB
+Anton Khirnov 6D0C 6625 56F8 65D1 E5F5 814B B50A 1241 C067 07AB
Attila Kinali 11F0 F9A6 A1D2 11F6 C745 D10C 6520 BCDD F2DF E765
Baptiste Coudurier 8D77 134D 20CC 9220 201F C5DB 0AC9 325C 5C1A BAAA
+Ben Littler 3EE3 3723 E560 3214 A8CD 4DEB 2CDB FCE7 768C 8D2C
Benoit Fouet B22A 4F4F 43EF 636B BB66 FCDC 0023 AE1E 2985 49C8
Daniel Verkamp 78A6 07ED 782C 653E C628 B8B9 F0EB 8DD8 2F0E 21C7
Diego Biurrun 8227 1E31 B6D9 4994 7427 E220 9CAE D6CC 4757 FCC5
Jaikrishnan Menon 61A1 F09F 01C9 2D45 78E1 C862 25DC 8831 AF70 D368
+Justin Ruggles 3136 ECC0 C10D 6C04 5F43 CA29 FCBE CD2A 3787 1EBF
Loren Merritt ABD9 08F4 C920 3F65 D8BE 35D7 1540 DAA7 060F 56DE
Luca Barbato 6677 4209 213C 8843 5B67 29E7 E84C 78C2 84E9 0E34
Michael Niedermayer 9FF2 128B 147E F673 0BAD F133 611E C787 040B 0FAB
@@ -367,5 +371,7 @@ Peter Ross A907 E02F A6E5 0CD2 34CD 20D2 6760 79C5 AC40 DD6B
Reimar Döffinger C61D 16E5 9E2C D10C 8958 38A4 0899 A2B9 06D4 D9C7
Reinhard Tartler 9300 5DC2 7E87 6C37 ED7B CA9A 9808 3544 9453 48A4
Reynaldo H. Verdejo Pinochet 6E27 CD34 170C C78E 4D4F 5F40 C18E 077F 3114 452A
+Robert Swain EE7A 56EA 4A81 A7B5 2001 A521 67FA 362D A2FC 3E71
Sascha Sommer 38A0 F88B 868E 9D3A 97D4 D6A0 E823 706F 1E07 0D3C
Stefano Sabatini 9A43 10F8 D32C D33C 48E7 C52C 5DF2 8E4D B2EE 066B
+Tomas Härdin D133 29CA 4EEC 9DB4 7076 F697 B04B 7403 3313 41FD
View
53 mythtv/external/FFmpeg/Makefile
@@ -9,28 +9,28 @@ PROGS-$(CONFIG_FFPLAY) += ffplay
PROGS-$(CONFIG_FFPROBE) += ffprobe
PROGS-$(CONFIG_FFSERVER) += ffserver
-PROGS := $(addsuffix $(EXESUF), $(PROGS-yes))
-PROGS_G = $(addsuffix _g$(EXESUF), $(PROGS-yes))
-OBJS = $(addsuffix .o, $(PROGS-yes)) cmdutils.o
-MANPAGES = $(addprefix doc/, $(addsuffix .1, $(PROGS-yes)))
-HTMLPAGES = $(addprefix doc/, $(addsuffix -doc.html, $(PROGS-yes)))
-TOOLS = $(addprefix tools/, $(addsuffix $(EXESUF), cws2fws pktdumper probetest qt-faststart trasher))
-HOSTPROGS = $(addprefix tests/, audiogen videogen rotozoom tiny_psnr base64)
+PROGS := $(PROGS-yes:%=%$(EXESUF))
+PROGS_G = $(PROGS-yes:%=%_g$(EXESUF))
+OBJS = $(PROGS-yes:%=%.o) cmdutils.o
+MANPAGES = $(PROGS-yes:%=doc/%.1)
+PODPAGES = $(PROGS-yes:%=doc/%.pod)
+HTMLPAGES = $(PROGS-yes:%=doc/%.html)
+TOOLS = $(addprefix tools/, $(addsuffix $(EXESUF), cws2fws graph2dot lavfi-showfiltfmts pktdumper probetest qt-faststart trasher))
+TESTTOOLS = audiogen videogen rotozoom tiny_psnr base64
+HOSTPROGS := $(TESTTOOLS:%=tests/%)
MYTHPROGS = $(addprefix myth, ${PROGS})
BASENAMES = ffmpeg ffplay ffprobe ffserver
-ALLPROGS = $(addsuffix $(EXESUF), $(BASENAMES))
-ALLPROGS_G = $(addsuffix _g$(EXESUF), $(BASENAMES))
-ALLMANPAGES = $(addsuffix .1, $(BASENAMES))
-ALLHTMLPAGES= $(addsuffix -doc.html, $(BASENAMES))
+ALLPROGS = $(BASENAMES:%=%$(EXESUF))
+ALLPROGS_G = $(BASENAMES:%=%_g$(EXESUF))
+ALLMANPAGES = $(BASENAMES:%=%.1)
FFLIBS-$(CONFIG_AVDEVICE) += avdevice
FFLIBS-$(CONFIG_AVFILTER) += avfilter
FFLIBS-$(CONFIG_AVFORMAT) += avformat
FFLIBS-$(CONFIG_AVCODEC) += avcodec
FFLIBS-$(CONFIG_POSTPROC) += postproc
FFLIBS-$(CONFIG_SWSCALE) += swscale
-FFLIBS-$(CONFIG_AVCORE) += avcore
FFLIBS := avutil
@@ -70,7 +70,7 @@ config.h: .config
SUBDIR_VARS := OBJS FFLIBS CLEANFILES DIRS TESTPROGS EXAMPLES SKIPHEADERS \
ALTIVEC-OBJS MMX-OBJS NEON-OBJS X86-OBJS YASM-OBJS-FFT YASM-OBJS \
- HOSTPROGS BUILT_HEADERS TESTOBJS ARCH_HEADERS
+ HOSTPROGS BUILT_HEADERS TESTOBJS ARCH_HEADERS ARMV6-OBJS
define RESET
$(1) :=
@@ -95,7 +95,7 @@ tools/%$(EXESUF): tools/%.o
$(LD) $(FF_LDFLAGS) -o $@ $< $(FF_EXTRALIBS)
tools/%.o: tools/%.c
- $(CC) $(CPPFLAGS) $(CFLAGS) $(CC_O) $<
+ $(CC) $(CPPFLAGS) $(CFLAGS) -c $(CC_O) $<
ffplay.o: CFLAGS += $(SDL_CFLAGS)
@@ -115,21 +115,22 @@ version.h .version:
alltools: $(TOOLS)
-documentation: $(addprefix doc/, developer.html faq.html general.html libavfilter.html \
- $(ALLHTMLPAGES) $(ALLMANPAGES))
+DOCS = $(addprefix doc/, developer.html faq.html general.html libavfilter.html) $(HTMLPAGES) $(MANPAGES) $(PODPAGES)
-$(HTMLPAGES) $(MANPAGES): doc/fftools-common-opts.texi
+documentation: $(DOCS)
-doc/ffmpeg.pod doc/ffmpeg-doc.html: doc/indevs.texi doc/filters.texi doc/outdevs.texi doc/protocols.texi
-doc/ffplay.pod doc/ffplay-doc.html: doc/indevs.texi doc/filters.texi doc/outdevs.texi doc/protocols.texi
-doc/ffprobe.pod doc/ffprobe-doc.html: doc/indevs.texi doc/protocols.texi
+-include $(wildcard $(DOCS:%=%.d))
+
+TEXIDEP = awk '/^@include/ { printf "$@: $(@D)/%s\n", $$2 }' <$< >$(@:%=%.d)
doc/%.html: TAG = HTML
-doc/%.html: doc/%.texi
- $(M)cd doc && texi2html -monolithic -number $(<:doc/%=%)
+doc/%.html: doc/%.texi $(SRC_PATH_BARE)/doc/t2h.init
+ $(Q)$(TEXIDEP)
+ $(M)cd doc && texi2html -monolithic --init-file $(SRC_PATH_BARE)/doc/t2h.init $(<:doc/%=%)
doc/%.pod: TAG = POD
-doc/%.pod: doc/%-doc.texi
+doc/%.pod: doc/%.texi
+ $(Q)$(TEXIDEP)
$(M)doc/texi2pod.pl $< $@
doc/%.1: TAG = MAN
@@ -169,13 +170,14 @@ testclean:
$(RM) -r tests/vsynth1 tests/vsynth2 tests/data
$(RM) $(addprefix tests/,$(CLEANSUFFIXES))
$(RM) tests/seek_test$(EXESUF) tests/seek_test.o
- $(RM) $(addprefix tests/,$(addsuffix $(HOSTEXESUF),audiogen videogen rotozoom tiny_psnr base64))
+ $(RM) $(TESTTOOLS:%=tests/%$(HOSTEXESUF))
clean:: testclean
$(RM) $(ALLPROGS) $(ALLPROGS_G)
$(RM) $(CLEANSUFFIXES)
$(RM) doc/*.html doc/*.pod doc/*.1
$(RM) $(TOOLS)
+ $(RM) $(CLEANSUFFIXES:%=tools/%)
distclean::
$(RM) $(DISTCLEANSUFFIXES)
@@ -299,4 +301,7 @@ $(FATE): ffmpeg$(EXESUF) $(FATE_UTILS:%=tests/%$(HOSTEXESUF))
@echo "TEST $(@:fate-%=%)"
$(Q)$(SRC_PATH)/tests/fate-run.sh $@ "$(SAMPLES)" "$(TARGET_EXEC)" "$(TARGET_PATH)" '$(CMD)' '$(CMP)' '$(REF)' '$(FUZZ)'
+fate-list:
+ @printf '%s\n' $(sort $(FATE))
+
.PHONY: documentation *test regtest-* alltools check config
View
229 mythtv/external/FFmpeg/cmdutils.c
@@ -35,10 +35,10 @@
#include "libswscale/swscale.h"
#include "libpostproc/postprocess.h"
#include "libavutil/avstring.h"
+#include "libavutil/parseutils.h"
#include "libavutil/pixdesc.h"
#include "libavutil/eval.h"
#include "libavcodec/opt.h"
-#include "libavcore/avcore.h"
#include "cmdutils.h"
#include "version.h"
#if CONFIG_NETWORK
@@ -49,12 +49,51 @@
#endif
const char **opt_names;
+const char **opt_values;
static int opt_name_count;
AVCodecContext *avcodec_opts[AVMEDIA_TYPE_NB];
AVFormatContext *avformat_opts;
struct SwsContext *sws_opts;
-const int this_year = 2010;
+static const int this_year = 2011;
+
+void init_opts(void)
+{
+ int i;
+ for (i = 0; i < AVMEDIA_TYPE_NB; i++)
+ avcodec_opts[i] = avcodec_alloc_context2(i);
+ avformat_opts = avformat_alloc_context();
+#if CONFIG_SWSCALE
+ sws_opts = sws_getContext(16, 16, 0, 16, 16, 0, SWS_BICUBIC, NULL, NULL, NULL);
+#endif
+}
+
+void uninit_opts(void)
+{
+ int i;
+ for (i = 0; i < AVMEDIA_TYPE_NB; i++)
+ av_freep(&avcodec_opts[i]);
+ av_freep(&avformat_opts->key);
+ av_freep(&avformat_opts);
+#if CONFIG_SWSCALE
+ av_freep(&sws_opts);
+#endif
+ for (i = 0; i < opt_name_count; i++) {
+ //opt_values are only stored for codec-specific options in which case
+ //both the name and value are dup'd
+ if (opt_values[i]) {
+ av_freep(&opt_names[i]);
+ av_freep(&opt_values[i]);
+ }
+ }
+ av_freep(&opt_names);
+ av_freep(&opt_values);
+}
+
+void log_callback_help(void* ptr, int level, const char* fmt, va_list vl)
+{
+ vfprintf(stdout, fmt, vl);
+}
double parse_number_or_die(const char *context, const char *numstr, int type, double min, double max)
{
@@ -75,8 +114,8 @@ double parse_number_or_die(const char *context, const char *numstr, int type, do
int64_t parse_time_or_die(const char *context, const char *timestr, int is_duration)
{
- int64_t us = parse_date(timestr, is_duration);
- if (us == INT64_MIN) {
+ int64_t us;
+ if (av_parse_time(&us, timestr, is_duration) < 0) {
fprintf(stderr, "Invalid %s specification for %s: %s\n",
is_duration ? "duration" : "date", context, timestr);
exit(1);
@@ -169,7 +208,7 @@ void parse_options(int argc, char **argv, const OptionDef *options,
} else if (po->flags & OPT_INT64) {
*po->u.int64_arg = parse_number_or_die(opt, arg, OPT_INT64, INT64_MIN, INT64_MAX);
} else if (po->flags & OPT_FLOAT) {
- *po->u.float_arg = parse_number_or_die(opt, arg, OPT_FLOAT, -1.0/0.0, 1.0/0.0);
+ *po->u.float_arg = parse_number_or_die(opt, arg, OPT_FLOAT, -INFINITY, INFINITY);
} else if (po->flags & OPT_FUNC2) {
if (po->u.func2_arg(opt, arg) < 0) {
fprintf(stderr, "%s: failed to set value '%s' for option '%s'\n", argv[0], arg, opt);
@@ -193,39 +232,57 @@ int opt_default(const char *opt, const char *arg){
const AVOption *o= NULL;
int opt_types[]={AV_OPT_FLAG_VIDEO_PARAM, AV_OPT_FLAG_AUDIO_PARAM, 0, AV_OPT_FLAG_SUBTITLE_PARAM, 0};
- for(type=0; type<AVMEDIA_TYPE_NB && ret>= 0; type++){
+ for(type=0; *avcodec_opts && type<AVMEDIA_TYPE_NB && ret>= 0; type++){
const AVOption *o2 = av_find_opt(avcodec_opts[0], opt, NULL, opt_types[type], opt_types[type]);
if(o2)
ret = av_set_string3(avcodec_opts[type], opt, arg, 1, &o);
}
- if(!o)
+ if(!o && avformat_opts)
ret = av_set_string3(avformat_opts, opt, arg, 1, &o);
if(!o && sws_opts)
ret = av_set_string3(sws_opts, opt, arg, 1, &o);
if(!o){
- if(opt[0] == 'a')
+ if (opt[0] == 'a' && avcodec_opts[AVMEDIA_TYPE_AUDIO])
ret = av_set_string3(avcodec_opts[AVMEDIA_TYPE_AUDIO], opt+1, arg, 1, &o);
- else if(opt[0] == 'v')
+ else if(opt[0] == 'v' && avcodec_opts[AVMEDIA_TYPE_VIDEO])
ret = av_set_string3(avcodec_opts[AVMEDIA_TYPE_VIDEO], opt+1, arg, 1, &o);
- else if(opt[0] == 's')
+ else if(opt[0] == 's' && avcodec_opts[AVMEDIA_TYPE_SUBTITLE])
ret = av_set_string3(avcodec_opts[AVMEDIA_TYPE_SUBTITLE], opt+1, arg, 1, &o);
}
if (o && ret < 0) {
fprintf(stderr, "Invalid value '%s' for option '%s'\n", arg, opt);
exit(1);
}
if (!o) {
- fprintf(stderr, "Unrecognized option '%s'\n", opt);
- exit(1);
+ AVCodec *p = NULL;
+ AVOutputFormat *oformat = NULL;
+ while ((p=av_codec_next(p))){
+ AVClass *c= p->priv_class;
+ if(c && av_find_opt(&c, opt, NULL, 0, 0))
+ break;
+ }
+ if (!p) {
+ while ((oformat = av_oformat_next(oformat))) {
+ const AVClass *c = oformat->priv_class;
+ if (c && av_find_opt(&c, opt, NULL, 0, 0))
+ break;
+ }
+ }
+ if(!p && !oformat){
+ fprintf(stderr, "Unrecognized option '%s'\n", opt);
+ exit(1);
+ }
}
// av_log(NULL, AV_LOG_ERROR, "%s:%s: %f 0x%0X\n", opt, arg, av_get_double(avcodec_opts, opt, NULL), (int)av_get_int(avcodec_opts, opt, NULL));
//FIXME we should always use avcodec_opts, ... for storing options so there will not be any need to keep track of what i set over this
+ opt_values= av_realloc(opt_values, sizeof(void*)*(opt_name_count+1));
+ opt_values[opt_name_count]= o ? NULL : av_strdup(arg);
opt_names= av_realloc(opt_names, sizeof(void*)*(opt_name_count+1));
- opt_names[opt_name_count++]= o->name;
+ opt_names[opt_name_count++]= o ? o->name : av_strdup(opt);
- if(avcodec_opts[0]->debug || avformat_opts->debug)
+ if ((*avcodec_opts && avcodec_opts[0]->debug) || (avformat_opts && avformat_opts->debug))
av_log_set_level(AV_LOG_DEBUG);
return 0;
}
@@ -278,16 +335,35 @@ int opt_timelimit(const char *opt, const char *arg)
return 0;
}
-void set_context_opts(void *ctx, void *opts_ctx, int flags)
+void set_context_opts(void *ctx, void *opts_ctx, int flags, AVCodec *codec)
{
int i;
+ void *priv_ctx=NULL;
+ if(!strcmp("AVCodecContext", (*(AVClass**)ctx)->class_name)){
+ AVCodecContext *avctx= ctx;
+ if(codec && codec->priv_class && avctx->priv_data){
+ priv_ctx= avctx->priv_data;
+ }
+ } else if (!strcmp("AVFormatContext", (*(AVClass**)ctx)->class_name)) {
+ AVFormatContext *avctx = ctx;
+ if (avctx->oformat && avctx->oformat->priv_class) {
+ priv_ctx = avctx->priv_data;
+ }
+ }
+
for(i=0; i<opt_name_count; i++){
char buf[256];
const AVOption *opt;
const char *str= av_get_string(opts_ctx, opt_names[i], &opt, buf, sizeof(buf));
/* if an option with name opt_names[i] is present in opts_ctx then str is non-NULL */
if(str && ((opt->flags & flags) == flags))
av_set_string3(ctx, opt_names[i], str, 1, NULL);
+ /* We need to use a differnt system to pass options to the private context because
+ it is not known which codec and thus context kind that will be when parsing options
+ we thus use opt_values directly instead of opts_ctx */
+ if(!str && priv_ctx && av_get_string(priv_ctx, opt_names[i], &opt, buf, sizeof(buf))){
+ av_set_string3(priv_ctx, opt_names[i], opt_values[i], 1, NULL);
+ }
}
}
@@ -312,7 +388,7 @@ static int warned_cfg = 0;
const char *indent = flags & INDENT? " " : ""; \
if (flags & SHOW_VERSION) { \
unsigned int version = libname##_version(); \
- fprintf(outstream, "%slib%-10s %2d.%2d.%2d / %2d.%2d.%2d\n", \
+ fprintf(outstream, "%slib%-9s %2d.%3d.%2d / %2d.%3d.%2d\n", \
indent, #libname, \
LIB##LIBNAME##_VERSION_MAJOR, \
LIB##LIBNAME##_VERSION_MINOR, \
@@ -337,7 +413,6 @@ static int warned_cfg = 0;
static void print_all_libs_info(FILE* outstream, int flags)
{
PRINT_LIB_INFO(outstream, avutil, AVUTIL, flags);
- PRINT_LIB_INFO(outstream, avcore, AVCORE, flags);
PRINT_LIB_INFO(outstream, avcodec, AVCODEC, flags);
PRINT_LIB_INFO(outstream, avformat, AVFORMAT, flags);
PRINT_LIB_INFO(outstream, avdevice, AVDEVICE, flags);
@@ -672,3 +747,123 @@ int read_file(const char *filename, char **bufptr, size_t *size)
fclose(f);
return 0;
}
+
+void init_pts_correction(PtsCorrectionContext *ctx)
+{
+ ctx->num_faulty_pts = ctx->num_faulty_dts = 0;
+ ctx->last_pts = ctx->last_dts = INT64_MIN;
+}
+
+int64_t guess_correct_pts(PtsCorrectionContext *ctx, int64_t reordered_pts, int64_t dts)
+{
+ int64_t pts = AV_NOPTS_VALUE;
+
+ if (dts != AV_NOPTS_VALUE) {
+ ctx->num_faulty_dts += dts <= ctx->last_dts;
+ ctx->last_dts = dts;
+ }
+ if (reordered_pts != AV_NOPTS_VALUE) {
+ ctx->num_faulty_pts += reordered_pts <= ctx->last_pts;
+ ctx->last_pts = reordered_pts;
+ }
+ if ((ctx->num_faulty_pts<=ctx->num_faulty_dts || dts == AV_NOPTS_VALUE)
+ && reordered_pts != AV_NOPTS_VALUE)
+ pts = reordered_pts;
+ else
+ pts = dts;
+
+ return pts;
+}
+
+FILE *get_preset_file(char *filename, size_t filename_size,
+ const char *preset_name, int is_path, const char *codec_name)
+{
+ FILE *f = NULL;
+ int i;
+ const char *base[3]= { getenv("FFMPEG_DATADIR"),
+ getenv("HOME"),
+ FFMPEG_DATADIR,
+ };
+
+ if (is_path) {
+ av_strlcpy(filename, preset_name, filename_size);
+ f = fopen(filename, "r");
+ } else {
+ for (i = 0; i < 3 && !f; i++) {
+ if (!base[i])
+ continue;
+ snprintf(filename, filename_size, "%s%s/%s.ffpreset", base[i], i != 1 ? "" : "/.ffmpeg", preset_name);
+ f = fopen(filename, "r");
+ if (!f && codec_name) {
+ snprintf(filename, filename_size,
+ "%s%s/%s-%s.ffpreset", base[i], i != 1 ? "" : "/.ffmpeg", codec_name, preset_name);
+ f = fopen(filename, "r");
+ }
+ }
+ }
+
+ return f;
+}
+
+#if CONFIG_AVFILTER
+
+static int ffsink_init(AVFilterContext *ctx, const char *args, void *opaque)
+{
+ FFSinkContext *priv = ctx->priv;
+
+ if (!opaque)
+ return AVERROR(EINVAL);
+ *priv = *(FFSinkContext *)opaque;
+
+ return 0;
+}
+
+static void null_end_frame(AVFilterLink *inlink) { }
+
+static int ffsink_query_formats(AVFilterContext *ctx)
+{
+ FFSinkContext *priv = ctx->priv;
+ enum PixelFormat pix_fmts[] = { priv->pix_fmt, PIX_FMT_NONE };
+
+ avfilter_set_common_formats(ctx, avfilter_make_format_list(pix_fmts));
+ return 0;
+}
+
+AVFilter ffsink = {
+ .name = "ffsink",
+ .priv_size = sizeof(FFSinkContext),
+ .init = ffsink_init,
+
+ .query_formats = ffsink_query_formats,
+
+ .inputs = (AVFilterPad[]) {{ .name = "default",
+ .type = AVMEDIA_TYPE_VIDEO,
+ .end_frame = null_end_frame,
+ .min_perms = AV_PERM_READ, },
+ { .name = NULL }},
+ .outputs = (AVFilterPad[]) {{ .name = NULL }},
+};
+
+int get_filtered_video_frame(AVFilterContext *ctx, AVFrame *frame,
+ AVFilterBufferRef **picref_ptr, AVRational *tb)
+{
+ int ret;
+ AVFilterBufferRef *picref;
+
+ if ((ret = avfilter_request_frame(ctx->inputs[0])) < 0)
+ return ret;
+ if (!(picref = ctx->inputs[0]->cur_buf))
+ return AVERROR(ENOENT);
+ *picref_ptr = picref;
+ ctx->inputs[0]->cur_buf = NULL;
+ *tb = ctx->inputs[0]->time_base;
+
+ memcpy(frame->data, picref->data, sizeof(frame->data));
+ memcpy(frame->linesize, picref->linesize, sizeof(frame->linesize));
+ frame->interlaced_frame = picref->video->interlaced;
+ frame->top_field_first = picref->video->top_field_first;
+
+ return 1;
+}
+
+#endif /* CONFIG_AVFILTER */
View
85 mythtv/external/FFmpeg/cmdutils.h
@@ -37,14 +37,29 @@ extern const char program_name[];
*/
extern const int program_birth_year;
-extern const int this_year;
-
extern const char **opt_names;
extern AVCodecContext *avcodec_opts[AVMEDIA_TYPE_NB];
extern AVFormatContext *avformat_opts;
extern struct SwsContext *sws_opts;
/**
+ * Initialize the cmdutils option system, in particular
+ * allocate the *_opts contexts.
+ */
+void init_opts(void);
+/**
+ * Uninitialize the cmdutils option system, in particular
+ * free the *_opts contexts and their contents.
+ */
+void uninit_opts(void);
+
+/**
+ * Trivial log callback.
+ * Only suitable for show_help and similar since it lacks prefix handling.
+ */
+void log_callback_help(void* ptr, int level, const char* fmt, va_list vl);
+
+/**
* Fallback for options that are not explicitly handled, these will be
* parsed through AVOptions.
*/
@@ -132,7 +147,7 @@ void show_help_options(const OptionDef *options, const char *msg, int mask, int
void parse_options(int argc, char **argv, const OptionDef *options,
void (* parse_arg_function)(const char*));
-void set_context_opts(void *ctx, void *opts_ctx, int flags);
+void set_context_opts(void *ctx, void *opts_ctx, int flags, AVCodec *codec);
/**
* Print an error message to stderr, indicating filename and a human
@@ -220,4 +235,68 @@ int read_yesno(void);
*/
int read_file(const char *filename, char **bufptr, size_t *size);
+typedef struct {
+ int64_t num_faulty_pts; /// Number of incorrect PTS values so far
+ int64_t num_faulty_dts; /// Number of incorrect DTS values so far
+ int64_t last_pts; /// PTS of the last frame
+ int64_t last_dts; /// DTS of the last frame
+} PtsCorrectionContext;
+
+/**
+ * Reset the state of the PtsCorrectionContext.
+ */
+void init_pts_correction(PtsCorrectionContext *ctx);
+
+/**
+ * Attempt to guess proper monotonic timestamps for decoded video frames
+ * which might have incorrect times. Input timestamps may wrap around, in
+ * which case the output will as well.
+ *
+ * @param pts the pts field of the decoded AVPacket, as passed through
+ * AVCodecContext.reordered_opaque
+ * @param dts the dts field of the decoded AVPacket
+ * @return one of the input values, may be AV_NOPTS_VALUE
+ */
+int64_t guess_correct_pts(PtsCorrectionContext *ctx, int64_t pts, int64_t dts);
+
+/**
+ * Get a file corresponding to a preset file.
+ *
+ * If is_path is non-zero, look for the file in the path preset_name.
+ * Otherwise search for a file named arg.ffpreset in the directories
+ * $FFMPEG_DATADIR (if set), $HOME/.ffmpeg, and in the datadir defined
+ * at configuration time, in that order. If no such file is found and
+ * codec_name is defined, then search for a file named
+ * codec_name-preset_name.ffpreset in the above-mentioned directories.
+ *
+ * @param filename buffer where the name of the found filename is written
+ * @param filename_size size in bytes of the filename buffer
+ * @param preset_name name of the preset to search
+ * @param is_path tell if preset_name is a filename path
+ * @param codec_name name of the codec for which to look for the
+ * preset, may be NULL
+ */
+FILE *get_preset_file(char *filename, size_t filename_size,
+ const char *preset_name, int is_path, const char *codec_name);
+
+#if CONFIG_AVFILTER
+#include "libavfilter/avfilter.h"
+
+typedef struct {
+ enum PixelFormat pix_fmt;
+} FFSinkContext;
+
+extern AVFilter ffsink;
+
+/**
+ * Extract a frame from sink.
+ *
+ * @return a negative error in case of failure, 1 if one frame has
+ * been extracted successfully.
+ */
+int get_filtered_video_frame(AVFilterContext *sink, AVFrame *frame,
+ AVFilterBufferRef **picref, AVRational *pts_tb);
+
+#endif /* CONFIG_AVFILTER */
+
#endif /* FFMPEG_CMDUTILS_H */
View
3 mythtv/external/FFmpeg/common.mak
@@ -31,11 +31,12 @@ $(foreach VAR,$(SILENT),$(eval override $(VAR) = @$($(VAR))))
$(eval INSTALL = @$(call ECHO,INSTALL,$$(^:$(SRC_DIR)/%=%)); $(INSTALL))
endif
-ALLFFLIBS = avcodec avcore avdevice avfilter avformat avutil postproc swscale
+ALLFFLIBS = avcodec avdevice avfilter avformat avutil postproc swscale
IFLAGS := -I$(BUILD_ROOT_REL) -I$(SRC_PATH)
CPPFLAGS := $(IFLAGS) $(CPPFLAGS)
CFLAGS += $(ECFLAGS)
+YASMFLAGS += $(IFLAGS) -Pconfig.asm
HOSTCFLAGS += $(IFLAGS)
View
355 mythtv/external/FFmpeg/configure
@@ -86,7 +86,6 @@ Configuration options:
--disable-ffserver disable ffserver build
--disable-avdevice disable libavdevice build
--disable-avcodec disable libavcodec build
- --disable-avcore disable libavcore build
--disable-avformat disable libavformat build
--disable-swscale disable libswscale build
--enable-postproc enable GPLed postprocessing support [no]
@@ -162,8 +161,10 @@ Configuration options:
External library support:
--enable-avisynth enable reading of AVISynth script files [no]
--enable-bzlib enable bzlib [autodetect]
+ --enable-frei0r enable frei0r video filtering
--enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
--enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
+ --enable-libopencv enable video filtering via libopencv [no]
--enable-libdc1394 enable IIDC-1394 grabbing using libdc1394
and libraw1394 [no]
--enable-libdirac enable Dirac support via libdirac [no]
@@ -233,6 +234,7 @@ Advanced options (experts only):
--enable-pic build position-independent code
--malloc-prefix=PFX prefix malloc and related names with PFX
--enable-sram allow use of on-chip SRAM
+ --disable-symver disable symbol versioning
Developer options (useful when working on FFmpeg itself):
--disable-debug disable debugging symbols
@@ -274,7 +276,7 @@ die(){
cat <<EOF
If you think configure made a mistake, make sure you are using the latest
-version from SVN. If the latest version fails, report the problem to the
+version from Git. If the latest version fails, report the problem to the
ffmpeg-user@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net.
EOF
if disabled logging; then
@@ -310,6 +312,10 @@ sh_quote(){
echo "$v"
}
+cleanws(){
+ echo "$@" | sed 's/^ *//;s/ */ /g;s/ *$//'
+}
+
filter(){
pat=$1
shift
@@ -318,6 +324,14 @@ filter(){
done
}
+filter_out(){
+ pat=$1
+ shift
+ for v; do
+ eval "case $v in $pat) ;; *) echo $v ;; esac"
+ done
+}
+
map(){
m=$1
shift
@@ -495,20 +509,29 @@ check_deps(){
done
}
+print_config_h(){
+ enabled $1 && v=1 || v=0
+ echo "#define $2 $v"
+}
+
+print_config_mak(){
+ enabled $1 && v= || v=!
+ echo "$v$2=yes"
+}
+
+print_config_asm(){
+ enabled $1 && echo "%define $2"
+}
+
print_config(){
pfx=$1
- header=$2
- makefile=$3
- shift 3
+ files=$2
+ shift 2
for cfg; do
ucname="$(toupper $cfg)"
- if enabled $cfg; then
- echo "#define ${pfx}${ucname} 1" >> $header
- echo "${pfx}${ucname}=yes" >> $makefile
- else
- echo "#define ${pfx}${ucname} 0" >> $header
- echo "!${pfx}${ucname}=yes" >> $makefile
- fi
+ for f in $files; do
+ "print_config_${f##*.}" $cfg ${pfx}${ucname} >>$f
+ done
done
}
@@ -847,7 +870,6 @@ CONFIG_LIST="
$COMPONENT_LIST
aandct
avcodec
- avcore
avdevice
avfilter
avformat
@@ -863,6 +885,7 @@ CONFIG_LIST="
ffprobe
ffserver
fft
+ frei0r
golomb
gpl
gray
@@ -878,6 +901,7 @@ CONFIG_LIST="
libnut
libopencore_amrnb
libopencore_amrwb
+ libopencv
libopenjpeg
librtmp
libschroedinger
@@ -899,6 +923,7 @@ CONFIG_LIST="
pic
postproc
rdft
+ rtpdec
runtime_cpudetect
shared
small
@@ -970,6 +995,7 @@ HAVE_LIST="
$ARCH_EXT_LIST
$HAVE_LIST_PUB
$THREADS_LIST
+ aligned_stack
alsa_asoundlib_h
altivec_h
arpa_inet_h
@@ -1024,8 +1050,10 @@ HAVE_LIST="
machine_ioctl_bt848_h
machine_ioctl_meteor_h
malloc_h
+ MapViewOfFile
memalign
mkstemp
+ mmap
pld
posix_memalign
round
@@ -1038,6 +1066,7 @@ HAVE_LIST="
poll_h
setrlimit
strerror_r
+ strtok_r
struct_addrinfo
struct_ipv6_mreq
struct_sockaddr_in6
@@ -1059,6 +1088,7 @@ HAVE_LIST="
VirtualAlloc
winsock2_h
xform_asm
+ xmm_clobbers
yasm
"
@@ -1080,6 +1110,7 @@ CMDLINE_SELECT="
logging
optimizations
stripping
+ symver
yasm
"
@@ -1153,6 +1184,7 @@ mmx2_deps="mmx"
sse_deps="mmx"
ssse3_deps="sse"
+aligned_stack_if_any="ppc x86"
fast_64bit_if_any="alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64"
fast_clz_if_any="alpha armv5te avr32 mips ppc x86"
fast_unaligned_if_any="armv6 ppc x86"
@@ -1170,9 +1202,12 @@ rdft_select="fft"
# decoders / encoders / hardware accelerators
aac_decoder_select="mdct rdft"
aac_encoder_select="mdct"
+aac_latm_decoder_select="aac_decoder aac_latm_parser"
ac3_decoder_select="mdct ac3_parser"
+ac3_encoder_select="mdct"
alac_encoder_select="lpc"
amrnb_decoder_select="lsp"
+amrwb_decoder_select="lsp"
atrac1_decoder_select="mdct"
atrac3_decoder_select="mdct"
binkaudio_dct_decoder_select="mdct rdft dct"
@@ -1325,28 +1360,31 @@ libxavs_encoder_deps="libxavs"
libxvid_encoder_deps="libxvid"
# demuxers / muxers
-ac3_demuxer_deps="ac3_parser"
+ac3_demuxer_select="ac3_parser"
asf_stream_muxer_select="asf_muxer"
avisynth_demuxer_deps="avisynth"
-dirac_demuxer_deps="dirac_parser"
+dirac_demuxer_select="dirac_parser"
eac3_demuxer_select="ac3_parser"
+flac_demuxer_select="flac_parser"
ipod_muxer_select="mov_muxer"
libnut_demuxer_deps="libnut"
libnut_muxer_deps="libnut"
matroska_audio_muxer_select="matroska_muxer"
matroska_demuxer_suggest="zlib bzlib"
mov_demuxer_suggest="zlib"
-mp3_demuxer_deps="mpegaudio_parser"
+mp3_demuxer_select="mpegaudio_parser"
mp4_muxer_select="mov_muxer"
mpegtsraw_demuxer_select="mpegts_demuxer"
mxf_d10_muxer_select="mxf_muxer"
ogg_demuxer_select="golomb"
psp_muxer_select="mov_muxer"
-rtsp_demuxer_deps="sdp_demuxer"
-rtsp_muxer_deps="sdp_demuxer"
-rtsp_muxer_select="rtp_muxer"
-sdp_demuxer_deps="rtp_protocol mpegts_demuxer"
-sdp_demuxer_select="asf_demuxer rm_demuxer"
+rtp_demuxer_select="sdp_demuxer"
+rtpdec_select="asf_demuxer rm_demuxer rtp_protocol mpegts_demuxer mov_demuxer"
+rtsp_demuxer_select="http_protocol rtpdec"
+rtsp_muxer_select="rtp_muxer http_protocol rtp_protocol"
+sap_demuxer_select="sdp_demuxer"
+sap_muxer_select="rtp_muxer rtp_protocol"
+sdp_demuxer_select="rtpdec"
spdif_muxer_select="aac_parser"
tg2_muxer_select="mov_muxer"
tgp_muxer_select="mov_muxer"
@@ -1379,6 +1417,16 @@ rtp_protocol_select="udp_protocol"
tcp_protocol_deps="network"
udp_protocol_deps="network"
+# filters
+blackframe_filter_deps="gpl"
+cropdetect_filter_deps="gpl"
+frei0r_filter_deps="frei0r dlopen strtok_r"
+frei0r_src_filter_deps="frei0r dlopen strtok_r"
+hqdn3d_filter_deps="gpl"
+scale_filter_deps="swscale"
+ocv_filter_deps="libopencv"
+yadif_filter_deps="gpl"
+
# libraries
avdevice_deps="avcodec avformat"
avformat_deps="avcodec"
@@ -1415,7 +1463,6 @@ set_ne_test_deps(){
}
test_deps _encoder _decoder \
- ac3 \
adpcm_g726=g726 \
adpcm_ima_qt \
adpcm_ima_wav \
@@ -1426,7 +1473,7 @@ test_deps _encoder _decoder \
asv1 \
asv2 \
bmp \
- dnxhd="hdxhd_1080i dnxhd_720p dnxhd_720p_rd" \
+ dnxhd="dnxhd_1080i dnxhd_720p dnxhd_720p_rd" \
dvvideo="dv dv50" \
ffv1 \
flac \
@@ -1447,6 +1494,7 @@ test_deps _encoder _decoder \
pbm=pbmpipe \
pcx \
pgm="pgm pgmpipe" \
+ png \
ppm="ppm ppmpipe" \
rawvideo="rgb yuv" \
roq \
@@ -1487,9 +1535,11 @@ test_deps _muxer _demuxer \
wav \
yuv4mpegpipe=yuv4mpeg \
+ac3_fixed_test_deps="ac3_fixed_encoder ac3_decoder rm_muxer rm_demuxer"
mpg_test_deps="mpeg1system_muxer mpegps_demuxer"
set_ne_test_deps pixdesc
+set_ne_test_deps pixfmts_copy
set_ne_test_deps pixfmts_crop
set_ne_test_deps pixfmts_hflip
set_ne_test_deps pixfmts_null
@@ -1535,7 +1585,6 @@ host_os=$target_os_default
# configurable options
enable avcodec
-enable avcore
enable avdevice
enable avfilter
enable avformat
@@ -1751,11 +1800,11 @@ HOSTEXESUF=$(exesuf $host_os)
: ${TMPDIR:=$TMP}
: ${TMPDIR:=/tmp}
-if ! check_cmd type mktemp; then
+if ! check_cmd mktemp -u XXXXXX; then
# simple replacement for missing mktemp
# NOT SAFE FOR GENERAL USE
mktemp(){
- echo "${2%XXX*}.${HOSTNAME}.${UID}.$$"
+ echo "${2%%XXX*}.${HOSTNAME}.${UID}.$$"
}
fi