# HG changeset patch # User cehoyos # Date 1300869345 0 # Node ID 6ee39df47be0246689065c13ef0597300163c3db # Parent 027481d941c0794f115587a44f2423fc1944b8a2 Support CrystalHD decoding. Patch by Philip Langdale, philipl overt org diff -r 027481d941c0 -r 6ee39df47be0 configure --- a/configure Tue Mar 22 11:44:26 2011 +0000 +++ b/configure Wed Mar 23 08:35:45 2011 +0000 @@ -431,6 +431,7 @@ --disable-libopencore_amrnb disable libopencore_amr narrowband [autodetect] --disable-libopencore_amrwb disable libopencore_amr wideband [autodetect] --disable-libopenjpeg disable OpenJPEG (JPEG2000) input/output support [autodetect] + --disable-crystalhd disable CrystalHD support [autodetect] --disable-decoder=DECODER disable specified FFmpeg decoder --enable-decoder=DECODER enable specified FFmpeg decoder --disable-encoder=ENCODER disable specified FFmpeg encoder @@ -634,8 +635,6 @@ libopenjpeg=auto libavdecoders_all=$(sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' ffmpeg/libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]') libavdecoders=$(echo $libavdecoders_all | sed -e 's/ LIB[A-Z0-9_]*_DECODER//g') -# temporary hack until we have proper crystalhd support -libavdecoders=$(echo $libavdecoders | sed -e 's/[A-Z0-9]*_CRYSTALHD_DECODER//g') libavencoders_all=$(sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' ffmpeg/libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]') libavencoders=$(echo $libavencoders_all | sed -e 's/ LIB[A-Z0-9_]*_ENCODER//g') libavparsers_all=$(sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' ffmpeg/libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]') @@ -775,6 +774,7 @@ _dhahelper=no _svgalib_helper=no _joystick=no +crystalhd=auto _xvid=auto _xvid_lavc=auto _x264=auto @@ -1219,6 +1219,8 @@ --disable-svgalib_helper) _svgalib_helper=no ;; --enable-joystick) _joystick=yes ;; --disable-joystick) _joystick=no ;; + --enable-crystalhd) crystalhd=yes ;; + --disable-crystalhd) crystalhd=no ;; --enable-xvid) _xvid=yes ;; --disable-xvid) _xvid=no ;; --enable-xvid-lavc) _xvid_lavc=yes ;; @@ -6963,6 +6965,22 @@ fi echores "$_libdv" +echocheck "CrystalHD" +if test "$crystalhd" = auto ; then + crystalhd=no + statement_check_broken libcrystalhd/bc_dts_types.h libcrystalhd/libcrystalhd_if.h 'DtsGetVersion(0, 0, 0)' -lcrystalhd $_ld_lm && crystalhd=yes +fi + +if test "$crystalhd" = yes ; then + extra_ldflags="$extra_ldflags -lcrystalhd" + def_crystalhd="#define CONFIG_CRYSTALHD 1" + codecmodules="crystalhd $codecmodules" +else + def_crystalhd="#define CONFIG_CRYSTALHD 0" + nocodecmodules="crystalhd $nocodecmodules" + libavdecoders=$(echo $libavdecoders | sed -e 's/[A-Z0-9]*_CRYSTALHD_DECODER//g') +fi +echores "$crystalhd" echocheck "Xvid" if test "$_xvid" = auto ; then @@ -8171,6 +8189,7 @@ CONFIG_AC3DSP = $_mencoder CONFIG_BZLIB = $bzlib +CONFIG_CRYSTALHD= $crystalhd CONFIG_ENCODERS = yes CONFIG_GPL = yes CONFIG_MLIB = $_mlib @@ -8682,6 +8701,7 @@ #define LIBAV_LICENSE FFMPEG_LICENSE /* External libraries used through FFmpeg. */ +$def_crystalhd $def_faac_lavc $def_libdirac_lavc $def_libgsm diff -r 027481d941c0 -r 6ee39df47be0 etc/codecs.conf --- a/etc/codecs.conf Tue Mar 22 11:44:26 2011 +0000 +++ b/etc/codecs.conf Wed Mar 23 08:35:45 2011 +0000 @@ -3,7 +3,7 @@ ; Before editing this file, please read DOCS/tech/codecs.conf.txt ! ;============================================================================= -release 20101127 +release 20110311 ;============================================================================= ; VIDEO CODECS @@ -366,6 +366,42 @@ out VDPAU_MPEG1 out VDPAU_MPEG2 +videocodec ffmpeg2crystalhd + info "FFmpeg MPEG-2 (CrystalHD)" + status working + format 0x10000002 ; MPEG-2 + fourcc mpg2,MPG2 + fourcc "DVR " + fourcc hdv1 + fourcc hdv2 + fourcc MPEG + fourcc hdv3 ; HDV 1080i50 + fourcc hdv5 ; HDV 720p25 + fourcc mx5p ; MPEG IMX 625/50 (50 Mb/s) + fourcc MMES,mmes ; matrox mpeg2 in avi + fourcc M701 ; matrox mpeg2 intra-only + fourcc hdv6,hdv7,hdv8 + fourcc xdv1,xdv2,xdv3 + fourcc xdv4,xdv5,xdv6 + fourcc xdv7,xdv8,xdv9 + fourcc xdva,xdvb,xdvc + fourcc xdvd,xdve,xdvf + fourcc xd5a,xd5b,xd5c + fourcc xd5d,xd5e,xd5f + fourcc xd59,xd54 + fourcc mx5n,mx4n,mx4p + fourcc mx3n,mx3p + fourcc AVmp + fourcc VCR2 + fourcc mp2v,mpgv + fourcc m2v1 + fourcc PIM2 + fourcc LMP2 ; Lead mpeg2 in avi + fourcc slif ; SoftLab MPEG-2 I-frames Codec + driver ffmpeg + dll mpeg2_crystalhd + out YUY2 + videocodec mpegpes info "MPEG-PES output (.mpg or DXR3/IVTV/DVB/V4L2 card)" comment "for hardware decoding" @@ -900,6 +936,23 @@ dll msmpeg4 out YV12,I420,IYUV +videocodec ffdivxcrystalhd + info "FFmpeg DivX ;-) (MSMPEG-4 v3) (CrystalHD)" + status buggy + fourcc MPG3,mpg3 div3 + fourcc MP43,mp43 div3 ; MSMPEG-4 v3 (fourcc mapping to div3) + fourcc DIV5,div5 div3 ; DivX 3.20 + fourcc DIV6,div6 div4 ; -||- + fourcc DIV3,div3,DIV4,div4 + fourcc DIVF,divf ; divx4.12 + fourcc AP41 div3 ; AngelPotion stuff + fourcc COL1,col1,COL0,col0 ; Cool codec (based on mpg4ds32.ax) + fourcc 3IVD,3ivd ; divxdoctored files (3ivx.com) + fourcc DVX3 + driver ffmpeg + dll msmpeg4_crystalhd + out YUY2 + videocodec ffmp42 info "FFmpeg MSMPEG-4 v2" status working @@ -960,6 +1013,14 @@ dll wmv3_vdpau out VDPAU_WMV3 +videocodec ffwmv3crystalhd + info "FFmpeg WMV3/WMV9 (CrystalHD)" + status buggy + fourcc WMV3,wmv3 + driver ffmpeg + dll wmv3_crystalhd + out YUY2 + videocodec ffvc1 info "FFmpeg WVC1" status buggy @@ -978,6 +1039,15 @@ dll vc1_vdpau out VDPAU_VC1 +videocodec ffvc1crystalhd + info "FFmpeg WVC1 (CrystalHD)" + status buggy + fourcc WVC1,wvc1,WMVA + fourcc vc-1,VC-1 + driver ffmpeg + dll vc1_crystalhd + out YUY2 + videocodec ffh264 info "FFmpeg H.264" status working @@ -1008,6 +1078,21 @@ dll h264_vdpau out VDPAU_H264 +videocodec ffh264crystalhd + info "FFmpeg H.264 (CrystalHD)" + status working + fourcc H264,h264 + fourcc X264,x264 + fourcc avc1,AVC1 + fourcc davc,DAVC + fourcc vvvc ; only one sample using this fourcc + fourcc ai55,ai15 ; flip4mac avc intra + fourcc ai1q,ai5q ; flip4mac avc intra + format 0x10000005 + driver ffmpeg + dll h264_crystalhd + out YUY2 + videocodec coreavcwindows info "CoreAVC H.264 for x86 - http://corecodec.org/" comment "this codec will only work after purchasing it" @@ -1100,6 +1185,39 @@ dll mpeg4_vdpau out VDPAU_MPEG4 +videocodec ffodivxcrystalhd + info "FFmpeg MPEG-4,DIVX-4/5 (CrystalHD)" + status working + fourcc FMP4,fmp4 + fourcc DIVX,divx + fourcc DIV1,div1 divx + fourcc MP4S,mp4s ; ISO MPEG-4 Video V1 + fourcc M4S2,m4s2 + fourcc xvid,XVID,XviD,XVIX + fourcc DX50,dx50,BLZ0 DX50 + fourcc mp4v,MP4V + format 0x4 + fourcc UMP4 + fourcc RMP4 + fourcc 3IV2,3iv2 ; 3ivx Delta 4 + fourcc DXGM + fourcc SEDG ; diskless camcorder Samsung Miniket VP-M110 + fourcc SMP4,smp4 ; Samsung SMP4 video codec + fourcc VIDM ; vidm 4.01 codec + format 0x10000004 ; mpeg 4 es + fourcc m4cc,M4CC + fourcc hdx4,HDX4 + fourcc FVFW,fvfw + fourcc FFDS + fourcc DCOD,MVXM,EM4A,PM4V + fourcc M4T3,DMK2,DIGI,INMC + fourcc EPHV,SN40,WAWV + fourcc uldx,ULDX,VSPX + fourcc SIPP ; Samsung SHR-6040 + driver ffmpeg + dll mpeg4_crystalhd + out YUY2 + videocodec ffwv1f info "WV1F MPEG-4" status working diff -r 027481d941c0 -r 6ee39df47be0 libmpdemux/stheader.h --- a/libmpdemux/stheader.h Tue Mar 22 11:44:26 2011 +0000 +++ b/libmpdemux/stheader.h Wed Mar 23 08:35:45 2011 +0000 @@ -97,7 +97,7 @@ double i_pts; // PTS for the _next_ I/P frame float next_frame_time; double last_pts; - double buffered_pts[20]; + double buffered_pts[32]; int num_buffered_pts; // output format: (set by demuxer) float fps; // frames per second (set only if constant fps)