diff --git a/Changelog b/Changelog index e7c56af62a..a64264234a 100644 --- a/Changelog +++ b/Changelog @@ -13,6 +13,32 @@ MPlayer (1.0) * image decoders: Sun rasterfile, PCX image * MLP decoder via lavc * use lavc ADPCM codecs by default + * support for progressive jpeg in ffmjpeg + * ACDSystems mjpeg (ACDV) via binary DLL and lavc + * SIF1 via binary DLL + * wincam screen capture (WCMV) via binary DLL + * Creative Labs Video Blaster Webcam mjpeg (CJPG) via binary DLL and ijpg library + * kensington webcam (AJPG,ABYR) via binary DLL + * centre for wavelets (wavc) via binary DLL + * GeoVision Advanced MPEG-4 (GMP4,GM40) via binary DLL + * Xiricam jpg from Veo PC Camera (XJPG) via binary DLL + * WorldConnect Wavelet Video (SMSV) via binary DLL + * VDOWave 3 advanced (VDO3,VDOM,VDOW) via binary DLL + * VoxWare MetaVoice (format 0x0074) via binary DLL + * Ulead DV Audio (0x215,0x216) via binary DLL + * GoToMeeting codec (G2M2,G2M3) via binary DLL + * SP4x codec - used by Aiptek MegaCam (SP4x) via binary DLL + * Broadway MPEG Capture Codec (BW10) via binary DLL + * ZDSoft screen recorder (ZDSV) via binary DLL + * WebTrain Communication lossless screen recorder (WTVC) via binary DLL + * xfire video (XFR1) via binary DLL + * VFAPI rgb transcode (vifp) via binary DLL + * ETI CamCorder EYECON (NUB0,NUB1,NUB2) via binary DLL + * fox motion (FMVC) via binary DLL + * Trident video (TY2C,TY2N,TY0N) via binary DLL + * 10-bit video (v210) via Cinewave binary DLL + * Brooktree YUV 4:1:1 Raw (Y41P) via binary DLL + * many rare/obscure fourccs for known formats added Demuxers: * -lavfdopts cryptokey allows decrypting MXF and ASF files @@ -53,6 +79,9 @@ MPlayer (1.0) * VP3 decoder speedup * Split-Radix FFT (speedup multiple audio codecs) * MMX/SSE/ARM and other misc speedups + * QCELP decoder + * RV30 decoder + * RV40 decoder libmpeg2: * enable Alpha/ARM optimizations in libmpeg2 @@ -66,8 +95,8 @@ MPlayer (1.0) * VIDIX driver for SuperH Mobile VEU hardware block. * support -border on vo_gl/gl2 in x11 * Direct3D Windows video output driver added. - * initial code duplication cleanup between vo_wii and vo_fbdev2 - * initial code duplication cleanup between vo_x11,vo_xv,vo_xvmc + * factorize code in vo_wii + * removed unnecessary code from vo x11, xv, xvmc MEncoder: * check for system-wide configuration file in MEncoder diff --git a/DOCS/README b/DOCS/README index 486a0e9036..94d28c6e8c 100644 --- a/DOCS/README +++ b/DOCS/README @@ -6,7 +6,7 @@ Thanks for reading MPlayer documentation !!! -1. For "release" version users (i.e. non-CVS): +1. For "release" version users (i.e. non-Subversion): a, Enter the HTML/ directory, and there you'll find the documentation, each language in its own subdirectory. @@ -19,7 +19,7 @@ Thanks for reading MPlayer documentation !!! try the subdirectories in this very same folder. -2. For "development" version users (i.e. CVS or CVS snapshots): +2. For "development" version users (i.e. Subversion or Subversion snapshots): a, Enter the xml/ directory, and read the README file there to find out how to build a HTML version of the XML documentation. It will diff --git a/DOCS/tech/codec-devel.txt b/DOCS/tech/codec-devel.txt index a9ca1ddcad..86eb8db922 100644 --- a/DOCS/tech/codec-devel.txt +++ b/DOCS/tech/codec-devel.txt @@ -49,8 +49,8 @@ data, search for sample media of both types. If a video codec is known to work at 7 different bit depths, then, as painful as it may be, do what you can to obtain sample media encoded for each of the 7 bit depths. -- Latest CVS snapshot: It's always useful to develop code for the very -latest development version of MPlayer. Be sure to update your local CVS +- Latest Subversion snapshot: It's always useful to develop code for the very +latest development version of MPlayer. Be sure to update your local Subversion copy often. - General programming knowledge, working Linux development environment: I @@ -143,7 +143,7 @@ with the parameters passed into the decoding function (if you set it up to take those parameters). Such data should match up. If it doesn't, issue a warning and make an executive decision in the code about which data to believe (personally, I always lend more weight to the data that was passed -into the decoder function, the data that comes from the container file's +into the decoder function, than the data that comes from the container file's header). If there's supposed to be a magic number embedded in, or computed from, the chunk's header, issue a warning if it isn't correct. @@ -190,7 +190,8 @@ files: - ad.c or vd.c Of course, you will need to include your newly-created file(s): vd_<name>.c -OR- ad_<name>.c. If you contribute enough decoders, the -development team may even grant you write privileges to the CVS repository. +development team may even grant you write privileges to the Subversion +repository. 5) Wait for bug reports to start rolling in You may think you're finished when you release the codec and if you're diff --git a/DOCS/tech/release-howto.txt b/DOCS/tech/release-howto.txt index 504f522d9e..5cf0fef514 100644 --- a/DOCS/tech/release-howto.txt +++ b/DOCS/tech/release-howto.txt @@ -7,22 +7,18 @@ preparations: all docs are up to date, etc. - Verify man page, remove obsolete options, mention new ones. - Ask translation maintainers to update their help_mp*.h file. -- Update the ChangeLog file (according to CVS log), ask other developers +- Update the ChangeLog file (according to Subversion log), ask other developers to verify their parts, etc. Ask Diego to spellcheck it. - Consult at -dev-eng about unstable parts of the code which should be disabled for the release. - Find a codename for the release create the release tree: -- tag cvs with release name +- tag Subversion with release name - update release.sh script with version number ***the following steps are done automatically by release.sh script*** -- cvs checkout the mplayer src tree -- check out libavcodec and libavformat from FFmpeg CVS -- remove the CVS subdirs: - find main -name CVS -exec rm -rf {} \; -- remove the .cvsignore files: - find main -name .cvsignore -exec rm {} \; +- checkout the mplayer src tree +- check out FFmpeg subdirs - remove obsolete DOCS translations, help files - replace version.sh with this (change version number too...): diff --git a/DOCS/tech/win32-codec-howto.txt b/DOCS/tech/win32-codec-howto.txt new file mode 100644 index 0000000000..cbf13cf72e --- /dev/null +++ b/DOCS/tech/win32-codec-howto.txt @@ -0,0 +1,87 @@ +============================ +Win32 codecs importing HOWTO +============================ + +This document describes how to extract the information necessary to hook +up Win32 binary codecs in MPlayer from a Windows system. Different methods +exist depending on which video API your codec uses and which Windows +version you have. + +If you have gathered all the necessary information (fourcc, GUID, codec file, +sample file) as described below, notify the mplayer-dev-eng mailing list. +If you want to add a codec yourself, read DOCS/tech/codecs.conf.txt. + + + +VFW codecs +~~~~~~~~~~ + +VFW (Video for Windows) is the old video API for Windows. Its codecs have +the '.dll' or (rarely) '.drv' extension. If MPlayer fails at playing your +AVI with this kind of message: + +UNKNOWN video codec: HFYU (0x55594648) + +It means your AVI is encoded with a codec which has the HFYU fourcc (HFYU = +HuffYUV codec, DIV3 = DivX Low Motion, etc.). Now that you know this, you +have to find out which DLL Windows loads in order to play this file. In our +case, the 'system.ini' contains this information in a line that reads: + +VIDC.HFYU=huffyuv.dll + +So you need the 'huffyuv.dll' file. Note that the audio codecs are +specified by the MSACM prefix: + +msacm.l3acm=L3codeca.acm + +This is the MP3 codec. + + + +DirectShow codecs: +~~~~~~~~~~~~~~~~~~ + +DirectShow is the newer video API, which is even worse than its predecessor. +Things are harder with DirectShow, since 'system.ini' does not contain the +needed information, instead it is stored in the registry and we need the +GUID of the codec. + + +New Method: +----------- + +Using Microsoft GraphEdit (fast) + +- Get GraphEdit from either DirectX SDK or doom9. +- Start 'graphedit.exe'. +- From the menu select "Graph -> Insert Filters". +- Expand item "DirectShow Filters". +- Select the right codec name and expand item. +- In the entry "DisplayName" look at the text in winged brackets after the + backslash and write it down (five dash-delimited blocks, the GUID). +- The codec binary is the file specified in the "Filename" entry. + +If there is no "Filename" and "DisplayName" contains something like +'device:dmo', then it is a DMO-Codec. + + +Old Method: +----------- + +Take a deep breath and start searching the registry... + +- Start 'regedit'. +- Press "Ctrl-F", disable the first two checkboxes, and enable the third. + Type in the fourcc of the codec (e.g. "TM20"). +- You should see a field which contains the path and the filename (e.g. + "C:\WINDOWS\SYSTEM\TM20DEC.AX"). +- Now that you have the file, we need the GUID. Try searching again, but + now search for the codec's name, not the fourcc. Its name can be acquired + when Media Player is playing the file, by checking + "File -> Properties -> Advanced". + If not, you are out of luck. Try guessing (e.g. search for TrueMotion). +- If the GUID is found you should see a "FriendlyName" and a "CLSID" field. + Write down the 16 byte CLSID, this is the GUID we need. + +If searching fails, try enabling all the checkboxes. You may have +false hits, but you may get lucky... diff --git a/DOCS/xml/en/bugreports.xml b/DOCS/xml/en/bugreports.xml index 6891891b40..d40afa362f 100644 --- a/DOCS/xml/en/bugreports.xml +++ b/DOCS/xml/en/bugreports.xml @@ -154,8 +154,7 @@ so please use <emphasis role="bold">only Subversion</emphasis> to report bugs. This includes binary packages of <application>MPlayer</application>. Subversion instructions can be found at the bottom of <ulink url="http://www.mplayerhq.hu/dload.html">this page</ulink> or in -the README. If this did not help please refer to the list of -<link linkend="bugs">known bugs</link> and the rest of the documentation. +the README. If this did not help please refer to the rest of the documentation. If your problem is not known or not solvable by our instructions, then please report the bug. </para> diff --git a/DOCS/xml/en/bugs.xml b/DOCS/xml/en/bugs.xml deleted file mode 100644 index 565dedf200..0000000000 --- a/DOCS/xml/en/bugs.xml +++ /dev/null @@ -1,137 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- $Revision$ --> -<appendix id="bugs"> -<title>Known bugs</title> - -<sect1 id="bugs-special"> -<title>Special system/CPU-specific bugs/problems</title> - -<itemizedlist> -<listitem> - <para>General SIGILL (signal 4):</para> - <para> - Problem: you compiled and run <application>MPlayer</application> on - different machines (for example compiled on P3 and running on Celeron) - </para> - <para> - Solution: compile <application>MPlayer</application> on the same machine - where you will use it! - </para> - <para> - Workaround: You can forget all this by configuring with the - <option>--enable-runtime-cpudetection</option> option or you can - disable particular CPU instruction sets with more specific options (like - <option>--disable-mmx</option>, <option>--disable-3dnow</option>, etc). - </para> -</listitem> - -<listitem> - <para>Crashes when dumping streams:</para> - <para>Problem: core dump</para> - <para>Solution: Don't panic. Make sure you know where your towel is.</para> -</listitem> -</itemizedlist> -</sect1> - - -<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> - - -<sect1 id="bugs-audio"> -<title>Various A-V sync and other audio problems</title> - -<sect2 id="bugs-delay-all"> -<title>General audio delay or jerky sound - (exists with all or many files)</title> - -<itemizedlist> -<listitem><para> - most common: buggy audio driver! - try to use different drivers, try ALSA OSS - emulation with <option>-ao oss</option>, also try <option>-ao sdl</option>, - sometimes it helps. If your file plays fine with <option>-nosound</option>, - then you can be sure it's sound card (driver) problem. -</para></listitem> - -<listitem> - <para>audio buffer problems (buffer size badly detected)</para> - <para> - Workaround: <application>MPlayer</application>'s <option>-abs</option> option - </para> -</listitem> - -<listitem><para> - samplerate problems - maybe your card doesn't support the samplerate used in - your files - try the resampling filter (<option>-af resample=...</option>) -</para></listitem> - -<listitem> - <para>slow machine (CPU or VGA)</para> - <para> - try with <option>-vo null</option>, if it plays well, then you have slow - VGA card/driver - </para> - <para> - Workaround: buy a faster card or read this documentation about how to speed up - </para> - <para>Also try <option>-framedrop</option></para> -</listitem> -</itemizedlist> -</sect2> - -<!-- ********** --> - -<sect2 id="bugs-delay-specific"> -<title>Audio delay/desync specific to one or a few files</title> - -<itemizedlist> -<listitem> - <para>bad file</para> - <para> - Workaround: - <itemizedlist> - <listitem> - <para> - <option>-ni</option> or <option>-nobps</option> option - (for non-interleaved or bad files) - </para> - <para>and/or</para> - </listitem> - <listitem> - <para> - <option>-mc 0</option> - (required for files with badly interleaved VBR audio) - </para> - <para>and/or</para> - </listitem> - <listitem> - <para> - <option>-delay</option> or <keycap>+</keycap>/<keycap>-</keycap> - keys at runtime to adjust delay - </para> - </listitem> - </itemizedlist> - If none of these help, please upload the file, we'll check (and fix). - </para> -</listitem> - -<listitem> - <para>your sound card doesn't support 48kHz playback</para> - <para> - Workaround: buy a better sound card... or try to decrease fps by 10% - (use <option>-fps 27</option> for a 30fps movie) or use the resample filter - </para> -</listitem> - -<listitem> - <para> - slow machine (if A-V is not around 0, - and the last number in the status line increasing) - </para> - <para>Workaround: <option>-framedrop</option></para> -</listitem> -</itemizedlist> -</sect2> - -</sect1> - -</appendix> diff --git a/DOCS/xml/en/codecs.xml b/DOCS/xml/en/codecs.xml deleted file mode 100644 index 42af3a1be8..0000000000 --- a/DOCS/xml/en/codecs.xml +++ /dev/null @@ -1,256 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- $Revision$ --> -<chapter id="codecs"> -<title>Codecs</title> - -<para> -The <ulink url="../../codecs-status.html">codec status table</ulink> is a -complete list of all supported codecs, regenerated daily. -Some binary codecs for use with MPlayer are available in the -<ulink url="http://www.mplayerhq.hu/design7/dload.html#binary_codecs">download section</ulink> -of our homepage. -</para> - -<para> -If you have a Win32 codec which is not supported yet, -please read the <link linkend="codec-importing">codec importing HOWTO</link> -and help us add support for it. -</para> - - -<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> - - -<sect1 id="audio-codecs"> -<title>Audio codecs</title> - - -<sect2 id="swac3"> -<title>Software AC-3 decoding</title> - -<para> -This is the default decoder used for files with AC-3 audio. -</para> - -<para> -The AC-3 decoder can create audio output mixes for 2, 4, or 6 speakers. -When configured for 6 speakers, this decoder provides separate output of -all the AC-3 channels to the sound driver, allowing for full "surround -sound" experience without the external AC-3 decoder required to use the -hwac3 codec. -</para> - -<para> -Use the <option>-channels</option> option to select the number of output -channels. Use <option>-channels 2</option> for a stereo downmix. For a 4 -channel downmix (Left Front, Right Front, Left Surround and Right Surround -outputs), use <option>-channels 4</option>. In this case, any center -channel will be mixed equally to the front channels. -<option>-channels 6</option> will output all the AC-3 channels as they are -encoded - in the order Left, Right, Left Surround, Right Surround, Center and -LFE. -</para> - -<para> -The default number of output channels is 2. -</para> - -<para> -To use more than 2 output channels, you will need to use OSS, and have a -sound card that supports the appropriate number of output channels via the -SNDCTL_DSP_CHANNELS ioctl. An example of a suitable driver is emu10k1 -(used by Soundblaster Live! cards) from August 2001 or newer (ALSA CVS is -also supposed to work). -</para> -</sect2> - -<!-- ********** --> - -<sect2 id="hwac3"> -<title>Hardware AC-3 decoding</title> - -<para> -You need an AC-3 capable sound card, with digital out (S/PDIF). The card's -driver must properly support the AFMT_AC3 format (C-Media does). Connect -your AC-3 decoder to the S/PDIF output, and use the <option>-ac -hwac3</option> option. It is experimental but known to work with C-Media -cards and Soundblaster Live! + ALSA (but not OSS) drivers and DXR3/Hollywood+ -MPEG decoder cards. -</para> -</sect2> - -<!-- ********** --> - -<sect2 id="hwmpa"> -<title>Hardware MPEG audio codec</title> - -<para> -This codec (selected by <option>-ac hwmpa</option>) passes through MPEG audio -packets to hardware decoders, such as the ones found in full-featured DVB cards -and DXR2 adapters. -Don't use it in combination with any other audio output device -(such as OSS and ALSA) that isn't able to decode it (you will hear -only white noise). -</para> -</sect2> - -</sect1> - - -<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> - - -<sect1 id="codec-importing"> -<title>Win32 codecs importing HOWTO</title> - -<!-- TODO: a short paragraph of text would be nice here... --> - -<sect2 id="vfw-codecs"> -<title>VFW codecs</title> - -<para> -VFW (Video for Windows) is the old Video API for Windows. Its codecs have -the <filename>.DLL</filename> or (rarely) <filename>.DRV</filename> -extension. If <application>MPlayer</application> fails at playing your AVI -with this kind of message: -<screen>UNKNOWN video codec: HFYU (0x55594648)</screen> -It means your AVI is encoded with a codec which has the HFYU fourcc (HFYU = -HuffYUV codec, DIV3 = DivX Low Motion, etc.). Now that you know this, you -have to find out which DLL Windows loads in order to play this file. In our -case, the <filename>system.ini</filename> contains this information in a -line that reads: -<programlisting>VIDC.HFYU=huffyuv.dll</programlisting> -</para> - -<para> -So you need the <filename>huffyuv.dll</filename> file. Note that the audio -codecs are specified by the MSACM prefix: -<programlisting>msacm.l3acm=L3codeca.acm</programlisting> -</para> - -<para> -This is the MP3 codec. Now that you have all the necessary information -(fourcc, codec file, sample AVI), submit your codec support request by -mail, and upload these files to the FTP site: -<systemitem role="url">ftp://upload.mplayerhq.hu/MPlayer/incoming/<replaceable><codecname></replaceable>/</systemitem> -</para> - -<note><para> -On Windows NT/2000/XP search for this info in the registry, -e.g. search for "VIDC.HFYU". To find out how to do this, look at -the old DirectShow method below. -</para></note> -</sect2> - -<!-- ********** --> - -<sect2 id="dshow-codecs"> -<title>DirectShow codecs</title> - -<para> -DirectShow is the newer Video API, which is even worse than its predecessor. -Things are harder with DirectShow, since -<itemizedlist> -<listitem><para> - <filename>system.ini</filename> does not contain the needed information, - instead it is stored in the registry and -</para></listitem> -<listitem><para> - we need the GUID of the codec. -</para></listitem> -</itemizedlist> -</para> - -<procedure> -<title>New Method:</title> -<para> -Using <application>Microsoft GraphEdit</application> (fast) -</para> -<step><para> - Get <application>GraphEdit</application> from either DirectX SDK or - <ulink url="http://doom9.net">doom9</ulink>. -</para></step> -<step><para> - Start <command>graphedit.exe</command>. -</para></step> -<step><para> - From the menu select - <menuchoice><guimenu>Graph</guimenu> - <guisubmenu>Insert Filters</guisubmenu></menuchoice>. -</para></step> -<step><para> - Expand item <systemitem>DirectShow Filters</systemitem>. -</para></step> -<step><para> - Select the right codec name and expand item. -</para></step> -<step><para> - In the entry <systemitem>DisplayName</systemitem> look at the text in - winged brackets after the backslash and write it down (five dash-delimited - blocks, the GUID). -</para></step> -<step><para> - The codec binary is the file specified in the - <systemitem>Filename</systemitem> entry. -</para></step> -</procedure> - -<note><para> -If there is no <systemitem>Filename</systemitem> and -<systemitem>DisplayName</systemitem> contains something like -<systemitem>device:dmo</systemitem>, then it is a DMO-Codec. -</para></note> - -<procedure> -<title>Old Method:</title> -<para> -Take a deep breath and start searching the registry... -</para> -<step><para> - Start <command>regedit</command>. -</para></step> -<step><para> - Press <keycombo><keycap>Ctrl</keycap><keycap>F</keycap></keycombo>, disable - the first two checkboxes, and enable the third. Type in the fourcc of the - codec (e.g. <userinput>TM20</userinput>). -</para></step> -<step><para> - You should see a field which contains the path and the filename (e.g. - <filename>C:\WINDOWS\SYSTEM\TM20DEC.AX</filename>). -</para></step> -<step><para> - Now that you have the file, we need the GUID. Try searching again, but - now search for the codec's name, not the fourcc. Its name can be acquired - when Media Player is playing the file, by checking - <menuchoice><guimenu>File</guimenu> <guisubmenu>Properties</guisubmenu> - <guimenuitem>Advanced</guimenuitem></menuchoice>. - If not, you are out of luck. Try guessing (e.g. search for TrueMotion). -</para></step> -<step><para> - If the GUID is found you should see a <guilabel>FriendlyName</guilabel> - and a <guilabel>CLSID</guilabel> field. Write down the 16 byte CLSID, - this is the GUID we need. -</para></step> -</procedure> - -<note><para> -If searching fails, try enabling all the checkboxes. You may have -false hits, but you may get lucky... -</para></note> - -<para> -Now that you have all the necessary information (fourcc, GUID, codec file, -sample AVI), submit your codec support request by mail, and upload these files -to the FTP site: -<systemitem role="url">ftp://upload.mplayerhq.hu/MPlayer/incoming/<replaceable><codecname></replaceable>/</systemitem> -</para> - -<para> -If you want to add a codec yourself, read -<ulink url="http://www.mplayerhq.hu/MPlayer/DOCS/tech/codecs.conf.txt">DOCS/tech/codecs.conf.txt</ulink>. -</para> - -</sect2> -</sect1> - -</chapter> diff --git a/DOCS/xml/en/documentation.xml b/DOCS/xml/en/documentation.xml index 01f9b69f95..f87259847a 100644 --- a/DOCS/xml/en/documentation.xml +++ b/DOCS/xml/en/documentation.xml @@ -166,18 +166,15 @@ can be distributed under the terms of the GNU General Public License Version 2. &usage.xml; &cd-dvd.xml; -&faq.xml; - -&codecs.xml; -&video.xml; -&audio.xml; &tvinput.xml; &radio.xml; +&video.xml; +&audio.xml; &ports.xml; &mencoder.xml; &encoding-guide.xml; +&faq.xml; &bugreports.xml; -&bugs.xml; &skin.xml; &history.xml; diff --git a/DOCS/xml/en/faq.xml b/DOCS/xml/en/faq.xml index b63255858f..01b95ec046 100644 --- a/DOCS/xml/en/faq.xml +++ b/DOCS/xml/en/faq.xml @@ -235,8 +235,20 @@ I have problems playing files with the ... codec. Can I use them? <answer><para> Check the <ulink url="../../codecs-status.html">codec status</ulink>, if it doesn't contain your codec, read the -<link linkend="codecs">codec documentation</link>, especially the -<link linkend="codec-importing">codec importing HOWTO</link> and contact us. +<ulink url="../../tech/win32-codec-howto">Win32 codec HOWTO</ulink> +and contact us. +</para></answer> +</qandaentry> + +<qandaentry> +<question><para> +I get a core dump when trying to dump streams, what's wrong? +</para></question> +<answer><para> +Don't panic. Make sure you know where your towel is.</para> +<para> +Seriously, notice the smiley and start looking for files that end in +<filename>.dump</filename>. </para></answer> </qandaentry> diff --git a/Makefile b/Makefile index 6ad523c2a5..2f0db04b35 100644 --- a/Makefile +++ b/Makefile @@ -728,7 +728,7 @@ DIRS = . \ ffmpeg/libavcodec/alpha \ ffmpeg/libavcodec/arm \ ffmpeg/libavcodec/bfin \ - ffmpeg/libavcodec/i386 \ + ffmpeg/libavcodec/x86 \ ffmpeg/libavcodec/mlib \ ffmpeg/libavcodec/ppc \ ffmpeg/libavcodec/sh4 \ diff --git a/cfg-common-opts.h b/cfg-common-opts.h index 5f58925683..cf6b3cba26 100644 --- a/cfg-common-opts.h +++ b/cfg-common-opts.h @@ -7,6 +7,7 @@ {"msgcolor", &mp_msg_color, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL}, {"nomsgcolor", &mp_msg_color, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL}, {"msgmodule", &mp_msg_module, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL}, + {"nomsgmodule", &mp_msg_module, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL}, #ifdef CONFIG_ICONV {"msgcharset", &mp_msg_charset, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL}, #endif diff --git a/common.mak b/common.mak index 4a606fb5cf..21bd56f93a 100644 --- a/common.mak +++ b/common.mak @@ -80,7 +80,7 @@ $(SUBDIR)%-test.o: $(SUBDIR)%.c $(SUBDIR)%-test.o: $(SUBDIR)%-test.c $(CC) $(CFLAGS) -DTEST -c -o $$@ $$^ -$(SUBDIR)i386/%.o: $(SUBDIR)i386/%.asm +$(SUBDIR)x86/%.o: $(SUBDIR)x86/%.asm $(YASM) $(YASMFLAGS) -I $$(<D)/ -o $$@ $$< $(YASM) $(YASMFLAGS) -I $$(<D)/ -M -o $$@ $$< > $$(@:%.o=%.d) diff --git a/configure b/configure index d732a8b9bc..1f4554d897 100755 --- a/configure +++ b/configure @@ -1339,8 +1339,8 @@ if test -z "$_target" ; then i[3-9]86*|x86|x86pc|k5|k6|k6_2|k6_3|k6-2|k6-3|pentium*|athlon*|i586_i686|i586-i686|BePC) host_arch=i386 ;; ia64) host_arch=ia64 ;; x86_64|amd64) - if [ -n "`$_cc -dumpmachine | sed -n '/^x86_64-/p;/^amd64-/p'`" -a \ - -z "`echo $CFLAGS | grep -- -m32`" ]; then + if [ -n "$($_cc -dumpmachine | sed -n '/^x86_64-/p;/^amd64-/p')" -a \ + -z "$(echo $CFLAGS $_cc | grep -- -m32)" ]; then host_arch=x86_64 else host_arch=i386 @@ -1681,7 +1681,7 @@ EOF fi -_arch_all='X86 X86_32 X86_64 IA64 SPARC ARM SH POWERPC PPC ALPHA SGI_MIPS PA_RISC S390 S390X VAX BFIN XTENSA GENERIC' +_arch_all='X86 X86_32 X86_64 IA64 SPARC ARM SH PPC ALPHA SGI_MIPS PA_RISC S390 S390X VAX BFIN XTENSA GENERIC' case "$host_arch" in i[3-9]86|x86|x86pc|k5|k6|k6-2|k6-3|pentium*|athlon*|i586-i686) _arch='X86 X86_32' @@ -1907,6 +1907,12 @@ EOF esac fi + if test $_cmov = "yes" && test $_fast_cmov = "auto" ; then + _fast_cmov="yes" + else + _fast_cmov="no" + fi + echores "$proc" ;; @@ -1931,6 +1937,7 @@ EOF else cpuopt=-mcpu fi + test $_fast_cmov = "auto" && _fast_cmov=yes if test "$_runtime_cpudetection" = no ; then case "$pvendor" in AuthenticAMD) @@ -1942,7 +1949,6 @@ EOF # 64-bit prescotts exist, but as far as GCC is concerned they # have the same capabilities as a nocona. proc=nocona - test $_fast_cmov = "auto" && _fast_cmov=no ;; esac ;; @@ -2007,6 +2013,7 @@ EOF if test "$host_arch" = "sparc64" ; then _vis='yes' proc='ultrasparc' + def_fast_64bit='#define HAVE_FAST_64BIT 1' elif sunos ; then echocheck "CPU type" karch=`uname -m` @@ -2040,12 +2047,15 @@ EOF ;; ppc|ppc64|powerpc|powerpc64) - _arch='POWERPC PPC' + _arch='PPC' _def_dcbzl='#undef HAVE_DCBZL' - _target_arch='ARCH_POWERPC = yes' + _target_arch='ARCH_PPC = yes' _def_fast_unaligned='#define HAVE_FAST_UNALIGNED 1' iproc='ppc' + if test "$host_arch" = "ppc64" -o "$host_arch" = "powerpc64" ; then + def_fast_64bit='#define HAVE_FAST_64BIT 1' + fi echocheck "CPU type" case $system_name in Linux) @@ -2257,12 +2267,6 @@ EOF ;; esac # case "$host_arch" in -if test $_cmov = "yes" && test $_fast_cmov = "auto" ; then - _fast_cmov="yes" -else - _fast_cmov="no" -fi - if test "$_runtime_cpudetection" = yes ; then if x86 ; then test "$_cmov" != no && _cmov=yes @@ -8541,8 +8545,8 @@ $_def_libswscale_so $_def_dcbzl $_def_extern_prefix -$_def_fast_unaligned $def_fast_64bit +$_def_fast_unaligned $_def_mkstemp $_def_pthreads $_def_threads diff --git a/cpudetect.c b/cpudetect.c index a20baa88cd..3860cc9a17 100644 --- a/cpudetect.c +++ b/cpudetect.c @@ -570,7 +570,7 @@ void GetCpuCaps( CpuCaps *caps) mp_msg(MSGT_CPUDETECT,MSGL_INFO,"CPU: ARM\n"); #endif -#ifdef ARCH_POWERPC +#ifdef ARCH_PPC mp_msg(MSGT_CPUDETECT,MSGL_INFO,"CPU: PowerPC\n"); #endif diff --git a/etc/codecs.conf b/etc/codecs.conf index bd375117dc..9447901d4c 100644 --- a/etc/codecs.conf +++ b/etc/codecs.conf @@ -1173,6 +1173,14 @@ videocodec LEAD dll "LCodcCMP.dll" out BGR24,BGR15 +videocodec acdsee + info "ACDSee mjpeg" + status working + fourcc ACDV + driver vfw + dll "ACDV.dll" + out BGR32,BGR24,BGR15 flip + videocodec imagepower info "ImagePower MJPEG2000" status buggy @@ -1508,7 +1516,7 @@ videocodec 3ivX videocodec rv3040 info "Linux RealPlayer 10 RV30/40 decoder" - status working + status buggy ; tries to use multi-threaded decoding on SMP systems and crashes on exit fourcc RV30,rv30 fourcc RV40,rv40 driver realvid @@ -1944,6 +1952,16 @@ videocodec sif1vfw dll "Sif1_vfw.dll" out YV12,YUY2 +videocodec sif1ds + info "sif1 alpha4" + status buggy + comment "one frame every 5 seconds?" + fourcc SIF1 + driver dshow + dll "Sif1Dec.ax" + guid 0x31666973, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 + out BGR32 + videocodec ffamv info "Modified MJPEG, used in AMV files" status working @@ -2904,6 +2922,13 @@ audiocodec qtmace6 driver qtaudio dll "QuickTime.qts" +audiocodec zygoaudio + info "Zygo audio" + status working + fourcc SPXN + driver qtaudio + dll "ZyGoAudioS.qtx" + audiocodec ffra144 info "FFmpeg RealAudio 1.0" status working @@ -3875,4 +3900,4 @@ audiocodec uleaddva format 0x215 format 0x216 driver acm - dll "dvacm.acm" \ No newline at end of file + dll "dvacm.acm" diff --git a/libswscale/swscale.c b/libswscale/swscale.c index 577d09333e..dabc7c4962 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -949,11 +949,11 @@ static inline void yuv2rgbXinC_full(SwsContext *c, int16_t *lumFilter, int16_t * #define COMPILE_C #endif -#ifdef ARCH_POWERPC +#ifdef ARCH_PPC #if (defined (HAVE_ALTIVEC) || defined (RUNTIME_CPUDETECT)) && defined (CONFIG_GPL) #define COMPILE_ALTIVEC #endif //HAVE_ALTIVEC -#endif //ARCH_POWERPC +#endif //ARCH_PPC #if defined(ARCH_X86) @@ -1628,7 +1628,7 @@ static SwsFunc getSwsFunc(int flags){ return swScale_C; #else -#ifdef ARCH_POWERPC +#ifdef ARCH_PPC if (flags & SWS_CPU_CAPS_ALTIVEC) return swScale_altivec; else diff --git a/libswscale/yuv2rgb_bfin.c b/libswscale/yuv2rgb_bfin.c index a473652382..58cc5b6a35 100644 --- a/libswscale/yuv2rgb_bfin.c +++ b/libswscale/yuv2rgb_bfin.c @@ -47,8 +47,8 @@ void ff_bfin_yuv2rgb565_line (uint8_t *Y, uint8_t *U, uint8_t *V, uint8_t *out, void ff_bfin_yuv2rgb24_line (uint8_t *Y, uint8_t *U, uint8_t *V, uint8_t *out, int w, uint32_t *coeffs) L1CODE; -typedef void (* ltransform_t)(uint8_t *Y, uint8_t *U, uint8_t *V, uint8_t *out, - int w, uint32_t *coeffs); +typedef void (* ltransform)(uint8_t *Y, uint8_t *U, uint8_t *V, uint8_t *out, + int w, uint32_t *coeffs); static void bfin_prepare_coefficients (SwsContext *c, int rgb, int masks) @@ -92,7 +92,7 @@ static int core_yuv420_rgb (SwsContext *c, uint8_t **in, int *instrides, int srcSliceY, int srcSliceH, uint8_t **oplanes, int *outstrides, - ltransform_t lcscf, int rgb, int masks) + ltransform lcscf, int rgb, int masks) { uint8_t *py,*pu,*pv,*op; int w = instrides[0]; diff --git a/libvo/vo_gl.c b/libvo/vo_gl.c index 7ad0189a63..4178daff9c 100644 --- a/libvo/vo_gl.c +++ b/libvo/vo_gl.c @@ -407,7 +407,10 @@ static void autodetectGlExtensions(void) { int is_ati = strstr(vendor, "ATI") != NULL; if (ati_hack == -1) ati_hack = is_ati; if (force_pbo == -1) force_pbo = strstr(extensions, "_pixel_buffer_object") ? is_ati : 0; - if (use_rectangle == -1) use_rectangle = strstr(extensions, "_texture_non_power_of_two") ? 2 : 0; + if (use_rectangle == -1) use_rectangle = strstr(extensions, "_texture_non_power_of_two") ? 0 : 0; + if (is_ati && (lscale == 1 || lscale == 2 || cscale == 1 || cscale == 2)) + mp_msg(MSGT_VO, MSGL_WARN, "Selected scaling mode may be broken on ATI cards.\n" + "Tell _them_ to fix GL_REPEAT if you have issues.\n"); } /** @@ -782,6 +785,18 @@ static uint32_t get_image(mp_image_t *mpi) { return VO_TRUE; } +static void clear_border(uint8_t *dst, int start, int stride, int height, int full_height, int value) { + int right_border = stride - start; + int bottom_border = full_height - height; + while (height > 0) { + memset(dst + start, value, right_border); + dst += stride; + height--; + } + if (bottom_border > 0) + memset(dst, value, stride * bottom_border); +} + static uint32_t draw_image(mp_image_t *mpi) { int slice = slice_height; int stride[3]; @@ -799,6 +814,13 @@ static uint32_t draw_image(mp_image_t *mpi) { memcpy_pic(mpi2.planes[1], mpi->planes[1], mpi->w >> 1, mpi->h >> 1, mpi2.stride[1], mpi->stride[1]); memcpy_pic(mpi2.planes[2], mpi->planes[2], mpi->w >> 1, mpi->h >> 1, mpi2.stride[2], mpi->stride[2]); } + if (ati_hack) { // since we have to do a full upload we need to clear the borders + clear_border(mpi2.planes[0], mpi->w * bpp / 8, mpi2.stride[0], mpi->h, mpi2.height, 0); + if (mpi->imgfmt == IMGFMT_YV12) { + clear_border(mpi2.planes[1], mpi->w >> 1, mpi2.stride[1], mpi->h >> 1, mpi2.height >> 1, 128); + clear_border(mpi2.planes[2], mpi->w >> 1, mpi2.stride[2], mpi->h >> 1, mpi2.height >> 1, 128); + } + } mpi = &mpi2; } stride[0] = mpi->stride[0]; stride[1] = mpi->stride[1]; stride[2] = mpi->stride[2]; diff --git a/libvo/vo_x11.c b/libvo/vo_x11.c index 5c204e417f..0af5331891 100644 --- a/libvo/vo_x11.c +++ b/libvo/vo_x11.c @@ -53,7 +53,6 @@ static const vo_info_t info = { const LIBVO_EXTERN(x11) /* private prototypes */ -static void Display_Image(XImage * myximage, unsigned char *ImageData); static void (*draw_alpha_fnc) (int x0, int y0, int w, int h, unsigned char *src, unsigned char *srca, int stride); diff --git a/libvo/x11_common.c b/libvo/x11_common.c index 9e6e31bd59..2c9677c997 100644 --- a/libvo/x11_common.c +++ b/libvo/x11_common.c @@ -578,7 +578,6 @@ void vo_x11_putkey(struct vo *vo, int key) { static const char *passthrough_keys = " -+*/<>`~!@#$%^&()_{}:;\"\',.?\\|=[]"; int mpkey = 0; - int i; if ((key >= 'a' && key <= 'z') || (key >= 'A' && key <= 'Z') || (key >= '0' && key <= '9') || diff --git a/loader/pe_image.c b/loader/pe_image.c index 7af23d3476..1b069b82ac 100644 --- a/loader/pe_image.c +++ b/loader/pe_image.c @@ -72,9 +72,9 @@ static void dump_exports( HMODULE hModule ) { char *Module; unsigned int i, j; - u_short *ordinal; - u_long *function,*functions; - u_char **name; + unsigned short *ordinal; + unsigned long *function,*functions; + unsigned char **name; unsigned int load_addr = hModule; DWORD rva_start = PE_HEADER(hModule)->OptionalHeader @@ -88,9 +88,9 @@ static void dump_exports( HMODULE hModule ) TRACE("Module name is %s, %ld functions, %ld names\n", Module, pe_exports->NumberOfFunctions, pe_exports->NumberOfNames); - ordinal=(u_short*) RVA(pe_exports->AddressOfNameOrdinals); - functions=function=(u_long*) RVA(pe_exports->AddressOfFunctions); - name=(u_char**) RVA(pe_exports->AddressOfNames); + ordinal=(unsigned short*) RVA(pe_exports->AddressOfNameOrdinals); + functions=function=(unsigned long*) RVA(pe_exports->AddressOfFunctions); + name=(unsigned char**) RVA(pe_exports->AddressOfNames); TRACE(" Ord RVA Addr Name\n" ); for (i=0;i<pe_exports->NumberOfFunctions;i++, function++) @@ -126,15 +126,15 @@ FARPROC PE_FindExportedFunction( LPCSTR funcName, WIN_BOOL snoop ) { - u_short * ordinals; - u_long * function; - u_char ** name; + unsigned short * ordinals; + unsigned long * function; + unsigned char ** name; const char *ename = NULL; int i, ordinal; PE_MODREF *pem = &(wm->binfmt.pe); IMAGE_EXPORT_DIRECTORY *exports = pem->pe_export; unsigned int load_addr = wm->module; - u_long rva_start, rva_end, addr; + unsigned long rva_start, rva_end, addr; char * forward; if (HIWORD(funcName)) @@ -149,9 +149,9 @@ FARPROC PE_FindExportedFunction( WARN("Module %08x(%s)/MODREF %p doesn't have a exports table.\n",wm->module,wm->modname,pem); return NULL; } - ordinals= (u_short*) RVA(exports->AddressOfNameOrdinals); - function= (u_long*) RVA(exports->AddressOfFunctions); - name = (u_char **) RVA(exports->AddressOfNames); + ordinals= (unsigned short*) RVA(exports->AddressOfNameOrdinals); + function= (unsigned long*) RVA(exports->AddressOfFunctions); + name = (unsigned char **) RVA(exports->AddressOfNames); forward = NULL; rva_start = PE_HEADER(wm->module)->OptionalHeader .DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress; diff --git a/stream/tcp.c b/stream/tcp.c index fd5a849cad..69072f80fa 100644 --- a/stream/tcp.c +++ b/stream/tcp.c @@ -76,7 +76,7 @@ connect2Server_with_af(char *host, int port, int af,int verb) { char buf[255]; #ifdef HAVE_WINSOCK2_H - u_long val; + unsigned long val; int to; #else struct timeval to; diff --git a/subdir.mak b/subdir.mak index 7c38b77619..df5bb8a09a 100644 --- a/subdir.mak +++ b/subdir.mak @@ -29,7 +29,7 @@ $(SUBDIR)$(SLIBNAME): $(SUBDIR)$(SLIBNAME_WITH_MAJOR) $(SUBDIR)$(SLIBNAME_WITH_MAJOR): $(OBJS) $(SLIB_CREATE_DEF_CMD) - $(CC) $(SHFLAGS) $(FFLDFLAGS) -o $$@ $$^ $(FFEXTRALIBS) $(EXTRAOBJS) + $(CC) $(SHFLAGS) $(FFLDFLAGS) -o $$@ $$(filter-out $(DEP_LIBS),$$^) $(FFEXTRALIBS) $(EXTRAOBJS) $(SLIB_EXTRA_CMD) ifdef SUBDIR