From fc5f506c839cb15bd8d7f89e17668852af00283f Mon Sep 17 00:00:00 2001 From: nicodvb Date: Thu, 30 Jul 2009 08:36:17 +0000 Subject: [PATCH 01/77] added inexistant TRHD fourcc to handle TRUEHD streams in forthcoming patch git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29456 b3059339-0415-0410-9bf9-f77b7e298cf2 --- etc/codecs.conf | 7 +++++++ libmpdemux/mp_taglists.c | 1 + 2 files changed, 8 insertions(+) diff --git a/etc/codecs.conf b/etc/codecs.conf index 103955c322..68bfbf3174 100644 --- a/etc/codecs.conf +++ b/etc/codecs.conf @@ -3548,6 +3548,13 @@ audiocodec ffmlp driver ffmpeg dll "mlp" +audiocodec fftruehd + info "FFmpeg TrueHD" + status working + fourcc TRHD ; internal MPlayer FourCC + driver ffmpeg + dll "truehd" + audiocodec ffnellymoser info "FFmpeg Nellymoser Audio" status working diff --git a/libmpdemux/mp_taglists.c b/libmpdemux/mp_taglists.c index 6cba293130..3c7be34f25 100644 --- a/libmpdemux/mp_taglists.c +++ b/libmpdemux/mp_taglists.c @@ -44,6 +44,7 @@ static const AVCodecTag mp_wav_tags[] = { { CODEC_ID_ROQ_DPCM, MKTAG('R', 'o', 'Q', 'A')}, { CODEC_ID_SHORTEN, MKTAG('s', 'h', 'r', 'n')}, { CODEC_ID_SPEEX, MKTAG('s', 'p', 'x', ' ')}, + { CODEC_ID_TRUEHD, MKTAG('T', 'R', 'H', 'D')}, { CODEC_ID_TTA, MKTAG('T', 'T', 'A', '1')}, { CODEC_ID_WAVPACK, MKTAG('W', 'V', 'P', 'K')}, { CODEC_ID_WESTWOOD_SND1, MKTAG('S', 'N', 'D', '1')}, From 98742de7c1e761be5d3402a13df38db1b2f70eaa Mon Sep 17 00:00:00 2001 From: nicodvb Date: Thu, 30 Jul 2009 08:37:10 +0000 Subject: [PATCH 02/77] handle TrueHD streams (they are carried in 0xFD PES streams in substream 0x72) git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29457 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demux_ts.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libmpdemux/demux_ts.c b/libmpdemux/demux_ts.c index c213c34a35..938793bdc4 100644 --- a/libmpdemux/demux_ts.c +++ b/libmpdemux/demux_ts.c @@ -77,6 +77,7 @@ typedef enum AUDIO_DTS = 0x2001, AUDIO_LPCM_BE = 0x10001, AUDIO_AAC = mmioFOURCC('M', 'P', '4', 'A'), + AUDIO_TRUEHD = mmioFOURCC('T', 'R', 'H', 'D'), SPU_DVD = 0x3000000, SPU_DVB = 0x3000001, PES_PRIVATE1 = 0xBD00000, @@ -244,7 +245,7 @@ typedef struct { } TS_pids_t; -#define IS_AUDIO(x) (((x) == AUDIO_MP2) || ((x) == AUDIO_A52) || ((x) == AUDIO_LPCM_BE) || ((x) == AUDIO_AAC) || ((x) == AUDIO_DTS)) +#define IS_AUDIO(x) (((x) == AUDIO_MP2) || ((x) == AUDIO_A52) || ((x) == AUDIO_LPCM_BE) || ((x) == AUDIO_AAC) || ((x) == AUDIO_DTS) || ((x) == AUDIO_TRUEHD)) #define IS_VIDEO(x) (((x) == VIDEO_MPEG1) || ((x) == VIDEO_MPEG2) || ((x) == VIDEO_MPEG4) || ((x) == VIDEO_H264) || ((x) == VIDEO_AVC) || ((x) == VIDEO_VC1)) static int ts_parse(demuxer_t *demuxer, ES_stream_t *es, unsigned char *packet, int probe); @@ -871,6 +872,8 @@ static off_t ts_detect_streams(demuxer_t *demuxer, tsdemux_init_t *param) mp_msg(MSGT_DEMUXER, MSGL_INFO, "AUDIO LPCM(pid=%d)", param->apid); else if(param->atype == AUDIO_AAC) mp_msg(MSGT_DEMUXER, MSGL_INFO, "AUDIO AAC(pid=%d)", param->apid); + else if(param->atype == AUDIO_TRUEHD) + mp_msg(MSGT_DEMUXER, MSGL_INFO, "AUDIO TRUEHD(pid=%d)", param->apid); else { audio_found = 0; @@ -1412,6 +1415,8 @@ static int pes_parse2(unsigned char *buf, uint16_t packet_len, ES_stream_t *es, int ssid = parse_pes_extension_fields(p, pkt_len); if((audio_substream_id!=-1) && (ssid != audio_substream_id)) return 0; + if(ssid == 0x72) + es->type = type_from_pmt = AUDIO_TRUEHD; } p += header_len + 9; From 0b48474186db3ef77232796ae6a3e1ec3ccee7a0 Mon Sep 17 00:00:00 2001 From: compn Date: Thu, 30 Jul 2009 11:58:56 +0000 Subject: [PATCH 03/77] start rc4 changelog, where did rc3 go? git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29458 b3059339-0415-0410-9bf9-f77b7e298cf2 --- Changelog | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Changelog b/Changelog index 7ced40d04e..f7c4c72b35 100644 --- a/Changelog +++ b/Changelog @@ -1,5 +1,15 @@ MPlayer (1.0) + rc4: "Yes We Can" + Decoders: + * YUY2 Lossless Codec (YLC0) via binary DLL + * Truemotion RT codec (TR20) via binary DLL + * Nogantech Codec (NTN1 and NTN2) via binary DLL + * add new FourCCs (m1v1,HDMV), TwoCCs (0xA106,0x6c75), and formats (0x11005354) + to existing codecs. + * AMR now handled via opencore decoder + * support for TrueHD in BluRay streams + rc3: "BikeshedCounter" March 27, 2009 Decoders: * support for X8 frames (fixes "J-type picture is not supported" for WMV2) From 87f0e2b3a347c1cb9b7d78c0736ce9a9f3e0d784 Mon Sep 17 00:00:00 2001 From: compn Date: Thu, 30 Jul 2009 12:03:42 +0000 Subject: [PATCH 04/77] undocumented keyword git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29459 b3059339-0415-0410-9bf9-f77b7e298cf2 --- DOCS/tech/codecs.conf.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DOCS/tech/codecs.conf.txt b/DOCS/tech/codecs.conf.txt index 4a949d0fd5..bc24c73030 100644 --- a/DOCS/tech/codecs.conf.txt +++ b/DOCS/tech/codecs.conf.txt @@ -133,6 +133,8 @@ static, query. The flags are defined as follows: Used for some very old DLLs like Indeo 3 and for some XAnim codecs like cinepak. See dr-methods.txt for details on buffer types. +The "in" keyword -- UNDOCUMENTED + Audio Codecs ------------ Here is an example of a rather full-featured audio codec block: From 850e9fa99b21fea46f26c0dc1de8712d9966a98f Mon Sep 17 00:00:00 2001 From: compn Date: Thu, 30 Jul 2009 12:08:20 +0000 Subject: [PATCH 05/77] move truehd to correct section git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29460 b3059339-0415-0410-9bf9-f77b7e298cf2 --- Changelog | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Changelog b/Changelog index f7c4c72b35..59293eb0f6 100644 --- a/Changelog +++ b/Changelog @@ -8,7 +8,9 @@ MPlayer (1.0) * add new FourCCs (m1v1,HDMV), TwoCCs (0xA106,0x6c75), and formats (0x11005354) to existing codecs. * AMR now handled via opencore decoder - * support for TrueHD in BluRay streams + + Demuxers: + * support for TrueHD in BluRay streams in libmpdemux rc3: "BikeshedCounter" March 27, 2009 Decoders: From 88410adf68da0aa991e1dfb14f6a2856197566ae Mon Sep 17 00:00:00 2001 From: diego Date: Thu, 30 Jul 2009 20:10:16 +0000 Subject: [PATCH 06/77] Update documentation for libamr replacement by OpenCORE in FFmpeg. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29461 b3059339-0415-0410-9bf9-f77b7e298cf2 --- DOCS/man/en/mplayer.1 | 4 ---- DOCS/xml/en/encoding-guide.xml | 8 -------- DOCS/xml/en/install.xml | 12 ++++-------- 3 files changed, 4 insertions(+), 20 deletions(-) diff --git a/DOCS/man/en/mplayer.1 b/DOCS/man/en/mplayer.1 index 01bcc86f75..3db7b6e3d1 100644 --- a/DOCS/man/en/mplayer.1 +++ b/DOCS/man/en/mplayer.1 @@ -7860,10 +7860,6 @@ Adaptive PCM formats \- see the HTML documentation for details. Free Lossless Audio Codec (FLAC) .IPs "g726\ " G.726 ADPCM -.IPs libamr_nb -3GPP Adaptive Multi-Rate (AMR) narrow-band -.IPs libamr_wb -3GPP Adaptive Multi-Rate (AMR) wide-band .IPs libfaac Advanced Audio Coding (AAC) \- using FAAC .IPs libmp3lame diff --git a/DOCS/xml/en/encoding-guide.xml b/DOCS/xml/en/encoding-guide.xml index 706b34dbf5..1c7c5909c5 100644 --- a/DOCS/xml/en/encoding-guide.xml +++ b/DOCS/xml/en/encoding-guide.xml @@ -2621,14 +2621,6 @@ mencoder dvd://2 -o title2.avi -ovc lavc -lavcopts vc g726 G.726 ADPCM - - libamr_nb - 3GPP Adaptive Multi-Rate (AMR) narrow-band - - - libamr_wb - 3GPP Adaptive Multi-Rate (AMR) wide-band - libfaac Advanced Audio Coding (AAC) - using FAAC diff --git a/DOCS/xml/en/install.xml b/DOCS/xml/en/install.xml index f8019fe3f9..21de5406bf 100644 --- a/DOCS/xml/en/install.xml +++ b/DOCS/xml/en/install.xml @@ -469,14 +469,10 @@ make install AMR -Adaptive Multi-Rate speech codec is used in third generation (3G) mobile -phones. -Reference implementation is available from -The 3rd Generation Partnership Project -(free for private use). -To enable support, download and install support libraries for -AMR-NB and AMR-WB -following the instructions on that page. Recompile MPlayer afterwards. +MPlayer can use the OpenCORE AMR libraries through FFmpeg. +Download the libraries for AMR-NB and AMR-WB from the +opencore-amr +project and install them according to the instructions on that page. From 55c399762f888a021d50d57a88ae0ecb935050ac Mon Sep 17 00:00:00 2001 From: jrash Date: Fri, 31 Jul 2009 13:07:56 +0000 Subject: [PATCH 07/77] sync with en/mplayer.1 r29461 git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29462 b3059339-0415-0410-9bf9-f77b7e298cf2 --- DOCS/man/zh_CN/mplayer.1 | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/DOCS/man/zh_CN/mplayer.1 b/DOCS/man/zh_CN/mplayer.1 index 874548068e..7e2685146a 100644 --- a/DOCS/man/zh_CN/mplayer.1 +++ b/DOCS/man/zh_CN/mplayer.1 @@ -1,4 +1,4 @@ -.\" sync with en/mplayer.1 r29413 +.\" sync with en/mplayer.1 r29461 .\" Encoding: UTF-8 .\" Reminder of hard terms which need better/final solution later: .\" /capture; playtree in parent list; colorkey; retrace; desync; downmix; @@ -7360,10 +7360,6 @@ Dolby Digital(AC-3) Free Lossless Audio Codec(FLAC,免费无损音频编解码器) .IPs "g726\ " G.726 ADPCM -.IPs libamr_nb -3GPP的自适应多码率(AMR)窄频段格式 -.IPs libamr_wb -3GPP的自适应多码率(AMR)宽频段格式 .IPs libfaac Advanced Audio Coding(AAC,高级音频编码)——使用FAAC .IPs libmp3lame From 6c6be8ac1e73ca577dd121df652d2e0b1409beb5 Mon Sep 17 00:00:00 2001 From: ben Date: Fri, 31 Jul 2009 20:13:02 +0000 Subject: [PATCH 08/77] Add a variable in config.mak whether SHM support is enabled or not. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29463 b3059339-0415-0410-9bf9-f77b7e298cf2 --- configure | 1 + 1 file changed, 1 insertion(+) diff --git a/configure b/configure index 1795e08d68..df11ce4bc5 100755 --- a/configure +++ b/configure @@ -8414,6 +8414,7 @@ CONFIG_XVMC=$_xvmc CONFIG_ZLIB=$_zlib HAVE_PTHREADS = $_pthreads +HAVE_SHM = $_shm HAVE_W32THREADS = $_w32threads HAVE_YASM = $_have_yasm From fa7e2d8f5c35a2aba96e5f114a5870d85656f442 Mon Sep 17 00:00:00 2001 From: cehoyos Date: Sat, 1 Aug 2009 21:30:36 +0000 Subject: [PATCH 09/77] Fix regression when converting to nv12/nv21. Patch by Guennadi Liakhovetski, g D liakhovetski A gmx D de git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29464 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libswscale/swscale.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libswscale/swscale.c b/libswscale/swscale.c index 59d4d841fe..55871c5074 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -2759,7 +2759,9 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d || (isGray(dstFormat) && isGray(srcFormat)) || (isPlanarYUV(srcFormat) && isPlanarYUV(dstFormat) && c->chrDstHSubSample == c->chrSrcHSubSample - && c->chrDstVSubSample == c->chrSrcVSubSample)) + && c->chrDstVSubSample == c->chrSrcVSubSample + && dstFormat != PIX_FMT_NV12 && dstFormat != PIX_FMT_NV21 + && srcFormat != PIX_FMT_NV12 && srcFormat != PIX_FMT_NV21)) { if (isPacked(c->srcFormat)) c->swScale= packedCopy; From 7fd95348fe8c56f35104842f764d908445174338 Mon Sep 17 00:00:00 2001 From: cehoyos Date: Sun, 2 Aug 2009 14:38:18 +0000 Subject: [PATCH 10/77] Fix typos. Patch by Francesco Lavra, francescolavra interfree it git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29465 b3059339-0415-0410-9bf9-f77b7e298cf2 --- stream/tv.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stream/tv.h b/stream/tv.h index 5a38df690d..f4467459eb 100644 --- a/stream/tv.h +++ b/stream/tv.h @@ -287,9 +287,9 @@ void tv_start_scan(tvi_handle_t *tvh, int start); typedef enum{ TT_FORMAT_OPAQUE=0, ///< opaque - TT_FORMAT_TRANSPARENT, ///< translarent + TT_FORMAT_TRANSPARENT, ///< transparent TT_FORMAT_OPAQUE_INV, ///< opaque with inverted colors - TT_FORMAT_TRANSPARENT_INV ///< translarent with inverted colors + TT_FORMAT_TRANSPARENT_INV ///< transparent with inverted colors } teletext_format; typedef From 463ac707c16763cf52cd9de1b133d740e1802637 Mon Sep 17 00:00:00 2001 From: cehoyos Date: Sun, 2 Aug 2009 14:41:15 +0000 Subject: [PATCH 11/77] Remove unused include's. Patch by Francesco Lavra, francescolavra interfree it git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29466 b3059339-0415-0410-9bf9-f77b7e298cf2 --- stream/tv.h | 4 ---- 1 file changed, 4 deletions(-) diff --git a/stream/tv.h b/stream/tv.h index f4467459eb..f8fa2e9228 100644 --- a/stream/tv.h +++ b/stream/tv.h @@ -1,10 +1,6 @@ #ifndef MPLAYER_TV_H #define MPLAYER_TV_H -//#include "libao2/afmt.h" -//#include "libmpcodecs/img_format.h" -//#include "mp_msg.h" - typedef struct tv_param_s { char *freq; char *channel; From 35b86231c2c614aab225e22fddf01ceb470e2eff Mon Sep 17 00:00:00 2001 From: cehoyos Date: Sun, 2 Aug 2009 14:44:12 +0000 Subject: [PATCH 12/77] Fix more typos. Patch by Francesco Lavra, francescolavra interfree it git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29467 b3059339-0415-0410-9bf9-f77b7e298cf2 --- stream/tv.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/stream/tv.h b/stream/tv.h index f8fa2e9228..2a33b945be 100644 --- a/stream/tv.h +++ b/stream/tv.h @@ -198,7 +198,7 @@ typedef struct { #define TVI_CONTROL_VBI_INIT 0x501 ///< vbi init /* - TELETEXT controls (through tv_teletext_control() ) + TELETEXT controls (through teletext_control() ) NOTE: _SET_ should be _GET_ +1 _STEP_ should be _GET_ +2 @@ -213,7 +213,7 @@ typedef struct { #define TV_VBI_CONTROL_GET_SUBPAGE 0x516 ///< get grabbed teletext page #define TV_VBI_CONTROL_SET_SUBPAGE 0x517 ///< set grab teletext page number -#define TV_VBI_CONTROL_GET_FORMAT 0x519 ///< get eletext format +#define TV_VBI_CONTROL_GET_FORMAT 0x519 ///< get teletext format #define TV_VBI_CONTROL_SET_FORMAT 0x51a ///< set teletext format #define TV_VBI_CONTROL_GET_HALF_PAGE 0x51c ///< get current half page @@ -269,7 +269,7 @@ void tv_start_scan(tvi_handle_t *tvh, int start); #define TV_NORM_NTSCJP 7 #define VBI_TFORMAT_TEXT 0 ///< text mode -#define VBI_TFORMAT_BW 1 ///< back&white mode +#define VBI_TFORMAT_BW 1 ///< black&white mode #define VBI_TFORMAT_GRAY 2 ///< grayscale mode #define VBI_TFORMAT_COLOR 3 ///< color mode (require color_spu patch!) From c8bbeea3b202f3b6569fccbc38d10d803173a8f5 Mon Sep 17 00:00:00 2001 From: cehoyos Date: Sun, 2 Aug 2009 14:50:24 +0000 Subject: [PATCH 13/77] Add standard GPL license header. Patch by Francesco Lavra, francescolavra interfree it git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29468 b3059339-0415-0410-9bf9-f77b7e298cf2 --- stream/tv.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/stream/tv.h b/stream/tv.h index 2a33b945be..8aa485de82 100644 --- a/stream/tv.h +++ b/stream/tv.h @@ -1,3 +1,25 @@ +/* + * Teletext support + * + * Copyright (C) 2007 Vladimir Voroshilov + * + * This file is part of MPlayer. + * + * MPlayer is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * MPlayer is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with MPlayer; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + #ifndef MPLAYER_TV_H #define MPLAYER_TV_H From 3e398a6a2e2b5b8203cf1ee9bf17059906f662fb Mon Sep 17 00:00:00 2001 From: diego Date: Sun, 2 Aug 2009 15:17:26 +0000 Subject: [PATCH 14/77] dpkg-buildpackage automatically sets CFLAGS and pals to -g -O2. Unset CFLAGS and friends to avoid failures when building Debian packages. patch from the official Debian package, submitted by Anton Khirnov git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29469 b3059339-0415-0410-9bf9-f77b7e298cf2 --- debian/rules | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/debian/rules b/debian/rules index c486af5dff..17c06b0621 100755 --- a/debian/rules +++ b/debian/rules @@ -10,6 +10,9 @@ prefix := $(shell pwd)/debian/$(package) arch := $(shell dpkg --print-architecture) +# See http://wiki.debian.org/Teams/Dpkg/DebianRules; #465282 and +# https://wiki.ubuntu.com/DistCompilerFlags +CLEAN_ENV=env -u CFLAGS -u CPPFLAGS -u LDFLAGS -u FFLAGS -u CXXFLAGS configure: configure-stamp configure-stamp: @@ -19,6 +22,7 @@ configure-stamp: # If you plan to install the target .deb on a wide variety of machines, # you may want to add the "--enable-runtime-cpudetection" option to # the line below, but beware: the resulting binary will run slower + $(CLEAN_ENV) \ ./configure --prefix=/usr --confdir=/etc/mplayer $(DEB_BUILD_OPTIONS) touch configure-stamp @@ -28,6 +32,7 @@ build-stamp: dh_testdir # commands to compile the package. + $(CLEAN_ENV) \ ${MAKE} touch build-stamp From 19199c79aebf64ab345d5ee11400d6af67971799 Mon Sep 17 00:00:00 2001 From: cehoyos Date: Sun, 2 Aug 2009 15:39:08 +0000 Subject: [PATCH 15/77] Fix another typo. Patch by Francesco Lavra, francescolavra interfree it git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29470 b3059339-0415-0410-9bf9-f77b7e298cf2 --- stream/tvi_vbi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stream/tvi_vbi.c b/stream/tvi_vbi.c index 58d830e1d2..2be0d99d07 100644 --- a/stream/tvi_vbi.c +++ b/stream/tvi_vbi.c @@ -880,7 +880,7 @@ static void prepare_visible_page(priv_vbi_t* priv){ * \param pt page to render * \param f opened file descriptor * \param pagenum which page to render - * \param colored use colors not implementede yet) + * \param colored use colors not implemented yet) * * Text will be UTF8 encoded */ From 64d5279410abe31e6a77c30b1a5c65dc9167eb5e Mon Sep 17 00:00:00 2001 From: diego Date: Sun, 2 Aug 2009 16:00:55 +0000 Subject: [PATCH 16/77] Remove pointless #ifdefs around harmless internal header #includes. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29471 b3059339-0415-0410-9bf9-f77b7e298cf2 --- command.c | 16 ---------------- mencoder.c | 7 ------- mp_msg.c | 5 ++--- mpcommon.c | 2 -- mplayer.c | 14 -------------- vobsub.c | 2 -- 6 files changed, 2 insertions(+), 44 deletions(-) diff --git a/command.c b/command.c index ff36cd8c8b..9fb37501e8 100644 --- a/command.c +++ b/command.c @@ -28,35 +28,19 @@ #include "vobsub.h" #include "spudec.h" #include "get_path.h" -#ifdef CONFIG_TV #include "stream/tv.h" -#endif -#ifdef CONFIG_RADIO #include "stream/stream_radio.h" -#endif -#ifdef CONFIG_PVR #include "stream/pvr.h" -#endif #ifdef CONFIG_DVBIN #include "stream/dvbin.h" #endif -#ifdef CONFIG_DVDREAD #include "stream/stream_dvd.h" -#endif -#ifdef CONFIG_DVDNAV #include "stream/stream_dvdnav.h" -#endif -#ifdef CONFIG_ASS #include "libass/ass.h" #include "libass/ass_mp.h" -#endif -#ifdef CONFIG_MENU #include "m_struct.h" #include "libmenu/menu.h" -#endif -#ifdef CONFIG_GUI #include "gui/interface.h" -#endif #include "mp_core.h" #include "mp_fifo.h" diff --git a/mencoder.c b/mencoder.c index d082ecd141..9129df7c9a 100644 --- a/mencoder.c +++ b/mencoder.c @@ -77,13 +77,8 @@ #include "stream/stream_dvd.h" #endif -#ifdef CONFIG_DVDNAV #include "stream/stream_dvdnav.h" -#endif - -#ifdef CONFIG_LIBAVCODEC #include "libavcodec/avcodec.h" -#endif #include "libmpcodecs/ae.h" int vo_doublebuffering=0; @@ -218,10 +213,8 @@ void mplayer_put_key(int code) { } -#ifdef CONFIG_ASS #include "libass/ass.h" #include "libass/ass_mp.h" -#endif char *current_module; #include "mpcommon.h" diff --git a/mp_msg.c b/mp_msg.c index 85e792408d..b20d99ee6f 100644 --- a/mp_msg.c +++ b/mp_msg.c @@ -21,11 +21,10 @@ char* get_term_charset(void); #if defined(FOR_MENCODER) #undef CONFIG_GUI int use_gui; -#endif - -#ifdef CONFIG_GUI +#else #include "gui/interface.h" #endif + #include "mp_msg.h" /* maximum message length of mp_msg */ diff --git a/mpcommon.c b/mpcommon.c index 248e609151..ba738dcee4 100644 --- a/mpcommon.c +++ b/mpcommon.c @@ -11,9 +11,7 @@ #include "spudec.h" #include "version.h" #include "vobsub.h" -#ifdef CONFIG_TV_TELETEXT #include "stream/tv.h" -#endif #include "libavutil/intreadwrite.h" #include "m_option.h" diff --git a/mplayer.c b/mplayer.c index d64f5268e2..d83855da99 100644 --- a/mplayer.c +++ b/mplayer.c @@ -72,9 +72,7 @@ #include "osdep/getch2.h" #include "osdep/timer.h" -#ifdef CONFIG_GUI #include "gui/interface.h" -#endif #include "input/input.h" @@ -100,17 +98,10 @@ char *heartbeat_cmd; #endif /* __linux__ */ #endif /* HAVE_RTC */ -#ifdef CONFIG_TV #include "stream/tv.h" -#endif -#ifdef CONFIG_RADIO #include "stream/stream_radio.h" -#endif - -#ifdef CONFIG_DVBIN #include "stream/dvbin.h" #include "stream/cache2.h" -#endif //**************************************************************************// // Playtree @@ -161,10 +152,7 @@ static int max_framesize=0; #ifdef CONFIG_DVDREAD #include "stream/stream_dvd.h" #endif - -#ifdef CONFIG_DVDNAV #include "stream/stream_dvdnav.h" -#endif #include "libmpcodecs/dec_audio.h" #include "libmpcodecs/dec_video.h" @@ -320,10 +308,8 @@ char *vobsub_name=NULL; int subcc_enabled=0; int suboverlap_enabled = 1; -#ifdef CONFIG_ASS #include "libass/ass.h" #include "libass/ass_mp.h" -#endif char* current_module=NULL; // for debugging diff --git a/vobsub.c b/vobsub.c index 09fa8bd5e6..5b8f90e39e 100644 --- a/vobsub.c +++ b/vobsub.c @@ -20,9 +20,7 @@ #include "vobsub.h" #include "spudec.h" #include "mp_msg.h" -#ifdef CONFIG_UNRAR_EXEC #include "unrar_exec.h" -#endif #include "libavutil/common.h" extern int vobsub_id; From 6e79a56592d029e0727332fd1b01514eac80ec45 Mon Sep 17 00:00:00 2001 From: lu_zero Date: Mon, 3 Aug 2009 10:17:35 +0000 Subject: [PATCH 17/77] Improve wording for missing sctp support You need libnemesi in order to get -rtsp-stream-over-sctp git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29472 b3059339-0415-0410-9bf9-f77b7e298cf2 --- cfg-common-opts.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cfg-common-opts.h b/cfg-common-opts.h index a3ad02e85f..1dc10f4dea 100644 --- a/cfg-common-opts.h +++ b/cfg-common-opts.h @@ -92,7 +92,7 @@ #ifdef CONFIG_LIBNEMESI {"rtsp-stream-over-sctp", &rtsp_transport_sctp, CONF_TYPE_FLAG, 0, 0, 1, NULL}, #else - {"rtsp-stream-over-sctp", "-rtsp-stream-over-sctp requires the", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL}, + {"rtsp-stream-over-sctp", "-rtsp-stream-over-sctp requires the \"libnemesi\" library\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL}, #endif /* CONFIG_LIBNEMESI */ #ifdef CONFIG_NETWORK {"rtsp-port", &rtsp_port, CONF_TYPE_INT, CONF_RANGE, -1, 65535, NULL}, From 01b4e4429e0c4a16f9d0af665085aa8421cca099 Mon Sep 17 00:00:00 2001 From: diego Date: Mon, 3 Aug 2009 13:51:33 +0000 Subject: [PATCH 18/77] Make sure that unavailable message languages are not accepted. patch by Samuli Suominen, ssuominen unk fi git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29473 b3059339-0415-0410-9bf9-f77b7e298cf2 --- configure | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/configure b/configure index df11ce4bc5..03d92c9253 100755 --- a/configure +++ b/configure @@ -2838,8 +2838,9 @@ language_man=$tmp_language_man test -z "$language_man" && language_man=en for lang in $language_msg ; do - test -f "help/help_mp-${lang}.h" && language_msg=$lang && break + test -f "help/help_mp-${lang}.h" && tmp_language_msg=$lang && break done +language_msg=$tmp_language_msg test -z "$language_msg" && language_msg=en _mp_help="help/help_mp-${language_msg}.h" echores "messages: $language_msg - man pages: $language_man - documentation: $language_doc" From 3fde5bd68bc3550a1caf171a2f45681ed85b2cfa Mon Sep 17 00:00:00 2001 From: diego Date: Mon, 3 Aug 2009 16:31:55 +0000 Subject: [PATCH 19/77] Only #include stream/dvbin.h when DVB is enabled. dvbin.h #includes some system DVB headers that may be unavailable. Fixes compilation with DVB disabled. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29474 b3059339-0415-0410-9bf9-f77b7e298cf2 --- mplayer.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mplayer.c b/mplayer.c index d83855da99..3189855558 100644 --- a/mplayer.c +++ b/mplayer.c @@ -100,7 +100,9 @@ char *heartbeat_cmd; #include "stream/tv.h" #include "stream/stream_radio.h" +#ifdef CONFIG_DVBIN #include "stream/dvbin.h" +#endif #include "stream/cache2.h" //**************************************************************************// From 37d2f3a368b30951bf407905813856e79ca34111 Mon Sep 17 00:00:00 2001 From: diego Date: Mon, 3 Aug 2009 23:04:04 +0000 Subject: [PATCH 20/77] Only #include stream/stream_dvd.h when libdvdread is enabled. stream_dvd.h #includes some system headers that may be unavailable. Fixes compilation with libdvdread disabled. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29475 b3059339-0415-0410-9bf9-f77b7e298cf2 --- command.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/command.c b/command.c index 9fb37501e8..29d3cf2e94 100644 --- a/command.c +++ b/command.c @@ -34,7 +34,9 @@ #ifdef CONFIG_DVBIN #include "stream/dvbin.h" #endif +#ifdef CONFIG_DVDREAD #include "stream/stream_dvd.h" +#endif #include "stream/stream_dvdnav.h" #include "libass/ass.h" #include "libass/ass_mp.h" From 6613f83655174d0f13cb39812d8d61be862dda0a Mon Sep 17 00:00:00 2001 From: lu_zero Date: Tue, 4 Aug 2009 15:38:57 +0000 Subject: [PATCH 21/77] Make sure it builds with -ftracer Use local labels to avoid clashes caused by -ftracer git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29476 b3059339-0415-0410-9bf9-f77b7e298cf2 --- mp3lib/decode_mmx.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mp3lib/decode_mmx.c b/mp3lib/decode_mmx.c index 67a7cdb510..7afcbd83c1 100644 --- a/mp3lib/decode_mmx.c +++ b/mp3lib/decode_mmx.c @@ -219,7 +219,7 @@ int synth_1to1_MMX(real *bandPtr, int channel, short *samples) //printf("DEBUG: channel %d, bo %d, off %d\n", channel, bo, 16 - bo1); __asm__ volatile( ASMALIGN(4) -".L03:\n\t" +"0:\n\t" "movq (%1),%%mm0\n\t" "movq 64(%1),%%mm4\n\t" "pmaddwd (%2),%%mm0\n\t" @@ -265,7 +265,7 @@ ASMALIGN(4) "add $8,%3\n\t" "decl %0\n\t" - "jnz .L03\n\t" + "jnz 0b\n\t" "movq (%1),%%mm0\n\t" "pmaddwd (%2),%%mm0\n\t" @@ -291,7 +291,7 @@ ASMALIGN(4) "movl $7,%0\n\t" ASMALIGN(4) -".L04:\n\t" +"1:\n\t" "movq (%1),%%mm0\n\t" "movq 64(%1),%%mm4\n\t" "pmaddwd (%2),%%mm0\n\t" @@ -340,7 +340,7 @@ ASMALIGN(4) "add $128,%1\n\t" "add $8,%3\n\t" "decl %0\n\t" - "jnz .L04\n\t" + "jnz 1b\n\t" "movq (%1),%%mm0\n\t" "pmaddwd (%2),%%mm0\n\t" From 17cf1efa12b60867b3d7eb5b5a776b8d926afccb Mon Sep 17 00:00:00 2001 From: cehoyos Date: Wed, 5 Aug 2009 23:16:21 +0000 Subject: [PATCH 22/77] Fix QT RLE in X-QT via rtsp://. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29477 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demux_rtp_codec.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libmpdemux/demux_rtp_codec.cpp b/libmpdemux/demux_rtp_codec.cpp index 839da403ca..c90a50ad01 100644 --- a/libmpdemux/demux_rtp_codec.cpp +++ b/libmpdemux/demux_rtp_codec.cpp @@ -181,6 +181,8 @@ void rtpCodecInitialize_video(demuxer_t* demuxer, bih->biCompression = sh_video->format = fourcc; bih->biWidth = qtRTPSource->qtState.width; bih->biHeight = qtRTPSource->qtState.height; + if (qtRTPSource->qtState.sdAtomSize > 83) + bih->biBitCount = qtRTPSource->qtState.sdAtom[83]; uint8_t *pos = (uint8_t*)qtRTPSource->qtState.sdAtom + 86; uint8_t *endpos = (uint8_t*)qtRTPSource->qtState.sdAtom + qtRTPSource->qtState.sdAtomSize; From 806d0c21c21b407c7f505111ef32cea7361a58b9 Mon Sep 17 00:00:00 2001 From: cladisch Date: Thu, 6 Aug 2009 09:43:10 +0000 Subject: [PATCH 23/77] Do not leak the mixer handle if setting of a volume fails. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29478 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libao2/ao_alsa.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libao2/ao_alsa.c b/libao2/ao_alsa.c index cc80b0ded3..491a5861c6 100644 --- a/libao2/ao_alsa.c +++ b/libao2/ao_alsa.c @@ -209,6 +209,7 @@ static int control(int cmd, void *arg) if ((err = snd_mixer_selem_set_playback_volume(elem, SND_MIXER_SCHN_FRONT_LEFT, set_vol)) < 0) { mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_ErrorSettingLeftChannel, snd_strerror(err)); + snd_mixer_close(handle); return CONTROL_ERROR; } mp_msg(MSGT_AO,MSGL_DBG2,"left=%li, ", set_vol); @@ -218,6 +219,7 @@ static int control(int cmd, void *arg) if ((err = snd_mixer_selem_set_playback_volume(elem, SND_MIXER_SCHN_FRONT_RIGHT, set_vol)) < 0) { mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_ErrorSettingRightChannel, snd_strerror(err)); + snd_mixer_close(handle); return CONTROL_ERROR; } mp_msg(MSGT_AO,MSGL_DBG2,"right=%li, pmin=%li, pmax=%li, mult=%f\n", From d4419a78698d1c1c5f602f950699fa71cdbfdac9 Mon Sep 17 00:00:00 2001 From: ben Date: Thu, 6 Aug 2009 20:04:19 +0000 Subject: [PATCH 24/77] Replace macro: MAX -> FFMAX git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29479 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpcodecs/vf_expand.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/libmpcodecs/vf_expand.c b/libmpcodecs/vf_expand.c index 5804ce41c1..f545990e9a 100644 --- a/libmpcodecs/vf_expand.c +++ b/libmpcodecs/vf_expand.c @@ -13,6 +13,7 @@ #include "vf.h" #include "libvo/fastmemcpy.h" +#include "libavutil/avutil.h" #ifdef OSD_SUPPORT #include "libvo/sub.h" @@ -22,8 +23,6 @@ #include "m_option.h" #include "m_struct.h" -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - static struct vf_priv_s { int exp_w,exp_h; int exp_x,exp_y; @@ -253,8 +252,8 @@ static void get_image(struct vf_instance_s* vf, mp_image_t *mpi){ // try full DR ! mpi->priv=vf->dmpi=vf_get_image(vf->next,mpi->imgfmt, mpi->type, mpi->flags, - MAX(vf->priv->exp_w, mpi->width +vf->priv->exp_x), - MAX(vf->priv->exp_h, mpi->height+vf->priv->exp_y)); + FFMAX(vf->priv->exp_w, mpi->width +vf->priv->exp_x), + FFMAX(vf->priv->exp_h, mpi->height+vf->priv->exp_y)); #if 1 if((vf->dmpi->flags & MP_IMGFLAG_DRAW_CALLBACK) && !(vf->dmpi->flags & MP_IMGFLAG_DIRECT)){ @@ -296,8 +295,8 @@ static void start_slice(struct vf_instance_s* vf, mp_image_t *mpi){ mpi->priv=vf->dmpi=vf_get_image(vf->next,mpi->imgfmt, // MP_IMGTYPE_TEMP, MP_IMGFLAG_ACCEPT_STRIDE | MP_IMGFLAG_PREFER_ALIGNED_STRIDE, MP_IMGTYPE_TEMP, mpi->flags, - MAX(vf->priv->exp_w, mpi->width +vf->priv->exp_x), - MAX(vf->priv->exp_h, mpi->height+vf->priv->exp_y)); + FFMAX(vf->priv->exp_w, mpi->width +vf->priv->exp_x), + FFMAX(vf->priv->exp_h, mpi->height+vf->priv->exp_y)); if(!(vf->dmpi->flags&MP_IMGFLAG_DRAW_CALLBACK)) mp_msg(MSGT_VFILTER, MSGL_WARN, MSGTR_MPCODECS_WarnNextFilterDoesntSupportSlices); // shouldn't happen. vf->priv->first_slice = 1; From a04ec2484b24957cafbb65a49540a40d21857a66 Mon Sep 17 00:00:00 2001 From: reimar Date: Fri, 7 Aug 2009 09:07:02 +0000 Subject: [PATCH 25/77] Add a giant hack to the x264 encoder module to ensure all delayed frames are written on FLUSH_FRAMES, this is necessary since using multiple threads adds an additional delay beyond the B-frame delay. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29480 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpcodecs/ve_x264.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libmpcodecs/ve_x264.c b/libmpcodecs/ve_x264.c index 56bb5868df..8a4a1147f3 100644 --- a/libmpcodecs/ve_x264.c +++ b/libmpcodecs/ve_x264.c @@ -218,9 +218,11 @@ static int config(struct vf_instance_s* vf, int width, int height, int d_width, static int control(struct vf_instance_s* vf, int request, void *data) { h264_module_t *mod=(h264_module_t*)vf->priv; + int count = 256; // giant HACK, x264_encoder_encode may incorrectly return 0 + // when threads > 1 and delayed frames pending switch(request){ case VFCTRL_FLUSH_FRAMES: - if(param.i_bframe) + while(encode_frame(vf, NULL) == 0 && --count); while(encode_frame(vf, NULL) > 0); return CONTROL_TRUE; default: From 3b6b050e1471702176e6e0cdca96d409a89221ef Mon Sep 17 00:00:00 2001 From: reimar Date: Sat, 8 Aug 2009 08:17:35 +0000 Subject: [PATCH 26/77] 100l, av_fifo_generic_read does not return anything useful, so ignore its return value and return len instead. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29481 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libao2/ao_coreaudio.c | 3 ++- libao2/ao_sdl.c | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/libao2/ao_coreaudio.c b/libao2/ao_coreaudio.c index ad17773fbd..130eee8f97 100644 --- a/libao2/ao_coreaudio.c +++ b/libao2/ao_coreaudio.c @@ -115,7 +115,8 @@ static int write_buffer(unsigned char* data, int len){ static int read_buffer(unsigned char* data,int len){ int buffered = av_fifo_size(ao->buffer); if (len > buffered) len = buffered; - return av_fifo_generic_read(ao->buffer, data, len, NULL); + av_fifo_generic_read(ao->buffer, data, len, NULL); + return len; } OSStatus theRenderProc(void *inRefCon, AudioUnitRenderActionFlags *inActionFlags, const AudioTimeStamp *inTimeStamp, UInt32 inBusNumber, UInt32 inNumFrames, AudioBufferList *ioData) diff --git a/libao2/ao_sdl.c b/libao2/ao_sdl.c index aae6e3fc7d..329486b272 100644 --- a/libao2/ao_sdl.c +++ b/libao2/ao_sdl.c @@ -82,10 +82,11 @@ static int read_buffer(unsigned char* data,int len){ int buffered = av_fifo_size(buffer); if (len > buffered) len = buffered; #ifdef USE_SDL_INTERNAL_MIXER - return av_fifo_generic_read(buffer, data, len, mix_audio); + av_fifo_generic_read(buffer, data, len, mix_audio); #else - return av_fifo_generic_read(buffer, data, len, NULL); + av_fifo_generic_read(buffer, data, len, NULL); #endif + return len; } // end ring buffer stuff From 1407950a2f0fff343fb8b821edc09b40c2fc9b23 Mon Sep 17 00:00:00 2001 From: diego Date: Sat, 8 Aug 2009 15:18:48 +0000 Subject: [PATCH 27/77] Remove disabled crufty code. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29482 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libswscale/rgb2rgb_template.c | 6 ------ libswscale/swscale.c | 26 -------------------------- libswscale/swscale_template.c | 10 ---------- 3 files changed, 42 deletions(-) diff --git a/libswscale/rgb2rgb_template.c b/libswscale/rgb2rgb_template.c index cd7fbae292..3d1fb8aea6 100644 --- a/libswscale/rgb2rgb_template.c +++ b/libswscale/rgb2rgb_template.c @@ -1258,10 +1258,6 @@ static inline void RENAME(rgb15to32)(const uint8_t *src, uint8_t *dst, long src_ #endif while (s < end) { -#if 0 //slightly slower on Athlon - int bgr= *s++; - *((uint32_t*)d)++ = ((bgr&0x1F)<<3) + ((bgr&0x3E0)<<6) + ((bgr&0x7C00)<<9); -#else register uint16_t bgr; bgr = *s++; #if HAVE_BIGENDIAN @@ -1274,8 +1270,6 @@ static inline void RENAME(rgb15to32)(const uint8_t *src, uint8_t *dst, long src_ *d++ = (bgr&0x3E0)>>2; *d++ = (bgr&0x7C00)>>7; *d++ = 255; -#endif - #endif } } diff --git a/libswscale/swscale.c b/libswscale/swscale.c index 55871c5074..bd3cd2a72e 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -302,19 +302,6 @@ DECLARE_ALIGNED(8, const uint8_t, dither_8x8_32[8][8])={ { 1, 25, 7, 31, 0, 24, 6, 30, }, }; -#if 0 -DECLARE_ALIGNED(8, const uint8_t, dither_8x8_64[8][8])={ -{ 0, 48, 12, 60, 3, 51, 15, 63, }, -{ 32, 16, 44, 28, 35, 19, 47, 31, }, -{ 8, 56, 4, 52, 11, 59, 7, 55, }, -{ 40, 24, 36, 20, 43, 27, 39, 23, }, -{ 2, 50, 14, 62, 1, 49, 13, 61, }, -{ 34, 18, 46, 30, 33, 17, 45, 29, }, -{ 10, 58, 6, 54, 9, 57, 5, 53, }, -{ 42, 26, 38, 22, 41, 25, 37, 21, }, -}; -#endif - DECLARE_ALIGNED(8, const uint8_t, dither_8x8_73[8][8])={ { 0, 55, 14, 68, 3, 58, 17, 72, }, { 37, 18, 50, 32, 40, 22, 54, 35, }, @@ -326,19 +313,6 @@ DECLARE_ALIGNED(8, const uint8_t, dither_8x8_73[8][8])={ { 48, 30, 43, 25, 47, 29, 42, 24, }, }; -#if 0 -DECLARE_ALIGNED(8, const uint8_t, dither_8x8_128[8][8])={ -{ 68, 36, 92, 60, 66, 34, 90, 58, }, -{ 20, 116, 12, 108, 18, 114, 10, 106, }, -{ 84, 52, 76, 44, 82, 50, 74, 42, }, -{ 0, 96, 24, 120, 6, 102, 30, 126, }, -{ 64, 32, 88, 56, 70, 38, 94, 62, }, -{ 16, 112, 8, 104, 22, 118, 14, 110, }, -{ 80, 48, 72, 40, 86, 54, 78, 46, }, -{ 4, 100, 28, 124, 2, 98, 26, 122, }, -}; -#endif - #if 1 DECLARE_ALIGNED(8, const uint8_t, dither_8x8_220[8][8])={ {117, 62, 158, 103, 113, 58, 155, 100, }, diff --git a/libswscale/swscale_template.c b/libswscale/swscale_template.c index e7c68469a8..e05fb0be67 100644 --- a/libswscale/swscale_template.c +++ b/libswscale/swscale_template.c @@ -2654,16 +2654,6 @@ static int RENAME(swScale)(SwsContext *c, uint8_t* src[], int srcStride[], int s //printf("swscale %X %X %X -> %X %X %X\n", (int)src[0], (int)src[1], (int)src[2], // (int)dst[0], (int)dst[1], (int)dst[2]); -#if 0 //self test FIXME move to a vfilter or something - { - static volatile int i=0; - i++; - if (srcFormat==PIX_FMT_YUV420P && i==1 && srcSliceH>= c->srcH) - selfTest(src, srcStride, c->srcW, c->srcH); - i--; - } -#endif - //printf("sws Strides:%d %d %d -> %d %d %d\n", srcStride[0],srcStride[1],srcStride[2], //dstStride[0],dstStride[1],dstStride[2]); From 1e1a332bbf5db85aeb387c574eb5d44481b0e43c Mon Sep 17 00:00:00 2001 From: kostya Date: Sun, 9 Aug 2009 15:04:17 +0000 Subject: [PATCH 28/77] Remove 'offset' argument from PUTRGB* macros since it's unneeded and caused pixel swapping during some YUV2RGB conversions. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29483 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libswscale/yuv2rgb.c | 132 +++++++++++++++++++++---------------------- 1 file changed, 66 insertions(+), 66 deletions(-) diff --git a/libswscale/yuv2rgb.c b/libswscale/yuv2rgb.c index 96649296ff..b20fa7daf2 100644 --- a/libswscale/yuv2rgb.c +++ b/libswscale/yuv2rgb.c @@ -56,10 +56,10 @@ const int32_t ff_yuv2rgb_coeffs[8][4] = { g = (void *)(c->table_gU[U] + c->table_gV[V]); \ b = (void *)c->table_bU[U]; -#define PUTRGB(dst,src,i,o) \ - Y = src[2*i+o]; \ +#define PUTRGB(dst,src,i) \ + Y = src[2*i]; \ dst[2*i ] = r[Y] + g[Y] + b[Y]; \ - Y = src[2*i+1-o]; \ + Y = src[2*i+1]; \ dst[2*i+1] = r[Y] + g[Y] + b[Y]; #define PUTRGB24(dst,src,i) \ @@ -74,10 +74,10 @@ const int32_t ff_yuv2rgb_coeffs[8][4] = { Y = src[2*i+1]; \ dst[6*i+3] = b[Y]; dst[6*i+4] = g[Y]; dst[6*i+5] = r[Y]; -#define PUTRGBA(dst,ysrc,asrc,i,o,s) \ - Y = ysrc[2*i+o]; \ +#define PUTRGBA(dst,ysrc,asrc,i,s) \ + Y = ysrc[2*i]; \ dst[2*i ] = r[Y] + g[Y] + b[Y] + (asrc[2*i ]< Date: Sun, 9 Aug 2009 15:34:57 +0000 Subject: [PATCH 29/77] Put some altivec code under COMPILE_ALTIVEC, and not HAVE_ALTIVEC. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29484 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libswscale/swscale.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libswscale/swscale.c b/libswscale/swscale.c index bd3cd2a72e..2adf39315a 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -2853,7 +2853,7 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d (flags&SWS_BICUBLIN) ? (flags|SWS_BILINEAR) : flags, srcFilter->chrV, dstFilter->chrV, c->param); -#if HAVE_ALTIVEC +#ifdef COMPILE_ALTIVEC c->vYCoeffsBank = av_malloc(sizeof (vector signed short)*c->vLumFilterSize*c->dstH); c->vCCoeffsBank = av_malloc(sizeof (vector signed short)*c->vChrFilterSize*c->chrDstH); @@ -3487,7 +3487,7 @@ void sws_freeContext(SwsContext *c){ av_freep(&c->vChrFilter); av_freep(&c->hLumFilter); av_freep(&c->hChrFilter); -#if HAVE_ALTIVEC +#ifdef COMPILE_ALTIVEC av_freep(&c->vYCoeffsBank); av_freep(&c->vCCoeffsBank); #endif From 180b6a88e4913c325de616d1568c31209484bc62 Mon Sep 17 00:00:00 2001 From: diego Date: Mon, 10 Aug 2009 10:53:32 +0000 Subject: [PATCH 30/77] Remove disabled debug code. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29485 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libswscale/ppc/yuv2rgb_altivec.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/libswscale/ppc/yuv2rgb_altivec.c b/libswscale/ppc/yuv2rgb_altivec.c index 550afc4023..37fbcb5dd5 100644 --- a/libswscale/ppc/yuv2rgb_altivec.c +++ b/libswscale/ppc/yuv2rgb_altivec.c @@ -772,15 +772,6 @@ void ff_yuv2rgb_init_tables_altivec(SwsContext *c, const int inv_table[4], int b c->CBU = vec_splat ((vector signed short)buf.vec, 3); c->CGU = vec_splat ((vector signed short)buf.vec, 4); c->CGV = vec_splat ((vector signed short)buf.vec, 5); -#if 0 - { - int i; - char *v[6]={"cy","oy","crv","cbu","cgu","cgv"}; - for (i=0; i<6; i++) - printf("%s %d ", v[i],buf.tmp[i] ); - printf("\n"); - } -#endif return; } From b92666b582b08a3a413fee24c73b25cfa41985e9 Mon Sep 17 00:00:00 2001 From: cehoyos Date: Tue, 11 Aug 2009 17:51:11 +0000 Subject: [PATCH 31/77] Add IMGFMT_RGB48LE and IMGFMT_RGB48BE. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29486 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpcodecs/img_format.c | 2 ++ libmpcodecs/img_format.h | 2 ++ libmpcodecs/vf_scale.c | 2 ++ 3 files changed, 6 insertions(+) diff --git a/libmpcodecs/img_format.c b/libmpcodecs/img_format.c index 789e473f84..4704cf2f6a 100644 --- a/libmpcodecs/img_format.c +++ b/libmpcodecs/img_format.c @@ -15,6 +15,8 @@ const char *vo_format_name(int format) case IMGFMT_RGB16: return "RGB 16-bit"; case IMGFMT_RGB24: return "RGB 24-bit"; // case IMGFMT_RGB32: return "RGB 32-bit"; + case IMGFMT_RGB48LE: return "RGB 48-bit LE"; + case IMGFMT_RGB48BE: return "RGB 48-bit BE"; case IMGFMT_BGR1: return "BGR 1-bit"; case IMGFMT_BGR4: return "BGR 4-bit"; case IMGFMT_BG4B: return "BGR 4-bit per byte"; diff --git a/libmpcodecs/img_format.h b/libmpcodecs/img_format.h index 559501fb89..b0878f4c1b 100644 --- a/libmpcodecs/img_format.h +++ b/libmpcodecs/img_format.h @@ -13,6 +13,8 @@ #define IMGFMT_RGB16 (IMGFMT_RGB|16) #define IMGFMT_RGB24 (IMGFMT_RGB|24) #define IMGFMT_RGB32 (IMGFMT_RGB|32) +#define IMGFMT_RGB48LE (IMGFMT_RGB|48) +#define IMGFMT_RGB48BE (IMGFMT_RGB|49) #define IMGFMT_BGR_MASK 0xFFFFFF00 #define IMGFMT_BGR (('B'<<24)|('G'<<16)|('R'<<8)) diff --git a/libmpcodecs/vf_scale.c b/libmpcodecs/vf_scale.c index ccd0c1c96e..f2c71ed948 100644 --- a/libmpcodecs/vf_scale.c +++ b/libmpcodecs/vf_scale.c @@ -474,6 +474,8 @@ static int query_format(struct vf_instance_s* vf, unsigned int fmt){ case IMGFMT_RGB8: case IMGFMT_BG4B: case IMGFMT_RG4B: + case IMGFMT_RGB48LE: + case IMGFMT_RGB48BE: { unsigned int best=find_best_out(vf); int flags; From 95bd58e068082b4830693cbade7abf34d3fdbed7 Mon Sep 17 00:00:00 2001 From: cehoyos Date: Tue, 11 Aug 2009 17:52:01 +0000 Subject: [PATCH 32/77] Map IMGFMT_RGB48xE to PIX_FMT_RGB48xE. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29487 b3059339-0415-0410-9bf9-f77b7e298cf2 --- fmt-conversion.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fmt-conversion.c b/fmt-conversion.c index bcfb56a415..05179d1b29 100644 --- a/fmt-conversion.c +++ b/fmt-conversion.c @@ -35,6 +35,8 @@ static const struct { {IMGFMT_RGB1, PIX_FMT_MONOBLACK}, {IMGFMT_RG4B, PIX_FMT_BGR4_BYTE}, {IMGFMT_BG4B, PIX_FMT_RGB4_BYTE}, + {IMGFMT_RGB48LE, PIX_FMT_RGB48LE}, + {IMGFMT_RGB48BE, PIX_FMT_RGB48BE}, {IMGFMT_RGB32, PIX_FMT_BGR32}, {IMGFMT_RGB24, PIX_FMT_RGB24}, {IMGFMT_RGB16, PIX_FMT_BGR565}, From a2dd68d6b40edfe877e3d70cdfc15074b8de69d7 Mon Sep 17 00:00:00 2001 From: cehoyos Date: Tue, 11 Aug 2009 17:54:11 +0000 Subject: [PATCH 33/77] Allow out-formats for IMGFMT_RGB48* in codecs.conf. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29488 b3059339-0415-0410-9bf9-f77b7e298cf2 --- codec-cfg.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/codec-cfg.c b/codec-cfg.c index bb604aa19b..6ae8486027 100644 --- a/codec-cfg.c +++ b/codec-cfg.c @@ -165,6 +165,8 @@ static int add_to_format(char *s, char *alias,unsigned int *fourcc, unsigned int {"RGB16", IMGFMT_RGB|16}, {"RGB24", IMGFMT_RGB|24}, {"RGB32", IMGFMT_RGB|32}, + {"RG48LE", IMGFMT_RGB|48}, + {"RG48BE", IMGFMT_RGB|49}, {"BGR4", IMGFMT_BGR|4}, {"BGR8", IMGFMT_BGR|8}, {"BGR15", IMGFMT_BGR|15}, From bcb5c78ce3b3a3e0aa47122ea643ff5d407ac829 Mon Sep 17 00:00:00 2001 From: cehoyos Date: Tue, 11 Aug 2009 17:56:19 +0000 Subject: [PATCH 34/77] Allow dpx image files as input. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29489 b3059339-0415-0410-9bf9-f77b7e298cf2 --- etc/codecs.conf | 8 ++++++++ libmpdemux/demux_mf.c | 1 + 2 files changed, 9 insertions(+) diff --git a/etc/codecs.conf b/etc/codecs.conf index 68bfbf3174..cdb4e5dc6c 100644 --- a/etc/codecs.conf +++ b/etc/codecs.conf @@ -338,6 +338,14 @@ videocodec ffbmp dll bmp out BGR32,BGR24,BGR8,Y800,RGB32,RGB24,RGB8 +videocodec ffdpx + info "FFmpeg DPX" + status working + fourcc "dpx " ; "dpx " is an internal MPlayer FOURCC + driver ffmpeg + dll dpx + out RG48BE,RG48LE + videocodec ffgif info "FFmpeg GIF" status working diff --git a/libmpdemux/demux_mf.c b/libmpdemux/demux_mf.c index c7ac81d56f..102fbf2986 100644 --- a/libmpdemux/demux_mf.c +++ b/libmpdemux/demux_mf.c @@ -82,6 +82,7 @@ static const struct { uint32_t format; } type2format[] = { { "bmp", mmioFOURCC('b', 'm', 'p', ' ') }, + { "dpx", mmioFOURCC('d', 'p', 'x', ' ') }, { "jpeg", mmioFOURCC('I', 'J', 'P', 'G') }, { "jpg", mmioFOURCC('I', 'J', 'P', 'G') }, { "jls", mmioFOURCC('I', 'J', 'P', 'G') }, From ee5bf60cd8c6df82b7d75977e4adfe867d9b1b89 Mon Sep 17 00:00:00 2001 From: cehoyos Date: Tue, 11 Aug 2009 18:07:43 +0000 Subject: [PATCH 35/77] Parse BitsPerSample and SamplesPerSec when playing PCM in X-QT over RTSP. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29490 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demux_rtp_codec.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libmpdemux/demux_rtp_codec.cpp b/libmpdemux/demux_rtp_codec.cpp index c90a50ad01..bb129c0dc3 100644 --- a/libmpdemux/demux_rtp_codec.cpp +++ b/libmpdemux/demux_rtp_codec.cpp @@ -317,6 +317,10 @@ void rtpCodecInitialize_audio(demuxer_t* demuxer, wf->wFormatTag = sh_audio->format = fourcc; wf->nChannels = numChannels; + if (qtRTPSource->qtState.sdAtomSize > 33) { + wf->wBitsPerSample = qtRTPSource->qtState.sdAtom[27]; + wf->nSamplesPerSec = qtRTPSource->qtState.sdAtom[32]<<8|qtRTPSource->qtState.sdAtom[33]; + } uint8_t *pos = (uint8_t*)qtRTPSource->qtState.sdAtom + 52; uint8_t *endpos = (uint8_t*)qtRTPSource->qtState.sdAtom + qtRTPSource->qtState.sdAtomSize; From 8541fcf3651cd1a3b6e60e0d33edc92ece01dfd7 Mon Sep 17 00:00:00 2001 From: reimar Date: Tue, 11 Aug 2009 18:15:21 +0000 Subject: [PATCH 36/77] fmt_table should be const as well. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29491 b3059339-0415-0410-9bf9-f77b7e298cf2 --- codec-cfg.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/codec-cfg.c b/codec-cfg.c index 6ae8486027..8fd6b2ade2 100644 --- a/codec-cfg.c +++ b/codec-cfg.c @@ -138,7 +138,7 @@ static int add_to_format(char *s, char *alias,unsigned int *fourcc, unsigned int return 1; } - static struct { + static const struct { const char *name; const unsigned int num; } fmt_table[] = { From 6960e4c1b1ccccba6ccd7e48d5c882a527632b81 Mon Sep 17 00:00:00 2001 From: reimar Date: Tue, 11 Aug 2009 18:21:31 +0000 Subject: [PATCH 37/77] Explain how formats must be ordered in fmt_list so the parser can handle names where one matches the beginning of another. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29492 b3059339-0415-0410-9bf9-f77b7e298cf2 --- codec-cfg.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/codec-cfg.c b/codec-cfg.c index 8fd6b2ade2..eaafaa3347 100644 --- a/codec-cfg.c +++ b/codec-cfg.c @@ -142,6 +142,9 @@ static int add_to_format(char *s, char *alias,unsigned int *fourcc, unsigned int const char *name; const unsigned int num; } fmt_table[] = { + // note: due to parser deficiencies/simplicity, if one format + // name matches the beginning of another, the longer one _must_ + // come first in this list. {"YV12", IMGFMT_YV12}, {"I420", IMGFMT_I420}, {"IYUV", IMGFMT_IYUV}, From bb6c23de0c3d2a76325f365efe25128482d004b0 Mon Sep 17 00:00:00 2001 From: cehoyos Date: Tue, 11 Aug 2009 18:28:26 +0000 Subject: [PATCH 38/77] Fix a crash when playing some H264 over rtsp streams: Do pass an AVCodecContext to the H264 parser. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29493 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demux_rtp.cpp | 6 +++++- libmpdemux/demux_rtp_codec.cpp | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/libmpdemux/demux_rtp.cpp b/libmpdemux/demux_rtp.cpp index c59bf5bf7e..513307e5c9 100644 --- a/libmpdemux/demux_rtp.cpp +++ b/libmpdemux/demux_rtp.cpp @@ -117,6 +117,7 @@ int rtsp_transport_tcp = 0; #endif extern int rtsp_port; +extern void *avcctx; extern "C" int audio_id, video_id, dvdsub_id; extern "C" demuxer_t* demux_open_rtp(demuxer_t* demuxer) { @@ -388,6 +389,9 @@ extern "C" void demux_close_rtp(demuxer_t* demuxer) { delete rtpState->videoBufferQueue; delete rtpState->sdpDescription; delete rtpState; +#ifdef CONFIG_LIBAVCODEC + av_free(avcctx); +#endif env->reclaim(); delete scheduler; } @@ -561,7 +565,7 @@ static demux_packet_t* getBuffer(demuxer_t* demuxer, demux_stream_t* ds, } if (headersize == 3 && h264parserctx) { // h264 consumed = h264parserctx->parser->parser_parse(h264parserctx, - NULL, + (AVCodecContext *)avcctx, &poutbuf, &poutbuf_size, dp->buffer, dp->len); diff --git a/libmpdemux/demux_rtp_codec.cpp b/libmpdemux/demux_rtp_codec.cpp index bb129c0dc3..fbfbb3258f 100644 --- a/libmpdemux/demux_rtp_codec.cpp +++ b/libmpdemux/demux_rtp_codec.cpp @@ -30,6 +30,7 @@ extern "C" { #ifdef CONFIG_LIBAVCODEC AVCodecParserContext * h264parserctx; #endif +void *avcctx; // Copied from vlc static unsigned char* parseH264ConfigStr( char const* configStr, @@ -137,6 +138,7 @@ void rtpCodecInitialize_video(demuxer_t* demuxer, #ifdef CONFIG_LIBAVCODEC avcodec_register_all(); h264parserctx = av_parser_init(CODEC_ID_H264); + avcctx = avcodec_alloc_context(); #endif needVideoFrameRate(demuxer, subsession); } else if (strcmp(subsession->codecName(), "H261") == 0) { From 6a3c6ad075e1d937b213df3bec94f2c9ee7019a3 Mon Sep 17 00:00:00 2001 From: cehoyos Date: Tue, 11 Aug 2009 18:44:43 +0000 Subject: [PATCH 39/77] Fix H.264 SPS parsing in case of scaling list present. Patch by Marco Munderloh, munderl A tnt D uni-hannover D de git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29494 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/mpeg_hdr.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/libmpdemux/mpeg_hdr.c b/libmpdemux/mpeg_hdr.c index bb1e416875..c07cd6bf16 100644 --- a/libmpdemux/mpeg_hdr.c +++ b/libmpdemux/mpeg_hdr.c @@ -303,6 +303,11 @@ static unsigned int read_golomb(unsigned char *buffer, unsigned int *init) return v2; } +inline static int read_golomb_s(unsigned char *buffer, unsigned int *init) +{ + unsigned int v = read_golomb(buffer, init); + return (v & 1) ? ((v + 1) >> 1) : -(v >> 1); +} static int h264_parse_vui(mp_mpeg_header_t * picture, unsigned char * buf, unsigned int n) { @@ -361,7 +366,7 @@ static int mp_unescape03(unsigned char *buf, int len); int h264_parse_sps(mp_mpeg_header_t * picture, unsigned char * buf, int len) { - unsigned int n = 0, v, i, mbh; + unsigned int n = 0, v, i, k, mbh; int frame_mbs_only; len = mp_unescape03(buf, len); @@ -376,7 +381,15 @@ int h264_parse_sps(mp_mpeg_header_t * picture, unsigned char * buf, int len) read_golomb(buf, &n); n++; if(getbits(buf, n++, 1)){ - //FIXME scaling matrix + for(i = 0; i < 8; i++) + { // scaling list is skipped for now + if(getbits(buf, n++, 1)) + { + v = 8; + for(k = (i < 6 ? 16 : 64); k && v; k--) + v = (v + read_golomb_s(buf, &n)) & 255; + } + } } } read_golomb(buf, &n); From 36ebca92d280fdbbc1597e7e6c5a6f77044590d2 Mon Sep 17 00:00:00 2001 From: cehoyos Date: Tue, 11 Aug 2009 18:52:18 +0000 Subject: [PATCH 40/77] Make *avcctx AVCodecContext instead of void. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29495 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demux_rtp.cpp | 6 ++++-- libmpdemux/demux_rtp_codec.cpp | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/libmpdemux/demux_rtp.cpp b/libmpdemux/demux_rtp.cpp index 513307e5c9..6af3acc676 100644 --- a/libmpdemux/demux_rtp.cpp +++ b/libmpdemux/demux_rtp.cpp @@ -117,7 +117,9 @@ int rtsp_transport_tcp = 0; #endif extern int rtsp_port; -extern void *avcctx; +#ifdef CONFIG_LIBAVCODEC +extern AVCodecContext *avcctx; +#endif extern "C" int audio_id, video_id, dvdsub_id; extern "C" demuxer_t* demux_open_rtp(demuxer_t* demuxer) { @@ -565,7 +567,7 @@ static demux_packet_t* getBuffer(demuxer_t* demuxer, demux_stream_t* ds, } if (headersize == 3 && h264parserctx) { // h264 consumed = h264parserctx->parser->parser_parse(h264parserctx, - (AVCodecContext *)avcctx, + avcctx, &poutbuf, &poutbuf_size, dp->buffer, dp->len); diff --git a/libmpdemux/demux_rtp_codec.cpp b/libmpdemux/demux_rtp_codec.cpp index fbfbb3258f..32bfc43647 100644 --- a/libmpdemux/demux_rtp_codec.cpp +++ b/libmpdemux/demux_rtp_codec.cpp @@ -29,8 +29,8 @@ extern "C" { #ifdef CONFIG_LIBAVCODEC AVCodecParserContext * h264parserctx; +AVCodecContext *avcctx; #endif -void *avcctx; // Copied from vlc static unsigned char* parseH264ConfigStr( char const* configStr, From e9db7e8b4f38806bbdad104d48231e3b19dc42ce Mon Sep 17 00:00:00 2001 From: cehoyos Date: Tue, 11 Aug 2009 18:57:22 +0000 Subject: [PATCH 41/77] s/RG48xE/RGB48xE git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29496 b3059339-0415-0410-9bf9-f77b7e298cf2 --- codec-cfg.c | 4 ++-- etc/codecs.conf | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/codec-cfg.c b/codec-cfg.c index eaafaa3347..764457467b 100644 --- a/codec-cfg.c +++ b/codec-cfg.c @@ -162,14 +162,14 @@ static int add_to_format(char *s, char *alias,unsigned int *fourcc, unsigned int {"UYVY", IMGFMT_UYVY}, {"YVYU", IMGFMT_YVYU}, + {"RGB48LE", IMGFMT_RGB|48}, + {"RGB48BE", IMGFMT_RGB|49}, {"RGB4", IMGFMT_RGB|4}, {"RGB8", IMGFMT_RGB|8}, {"RGB15", IMGFMT_RGB|15}, {"RGB16", IMGFMT_RGB|16}, {"RGB24", IMGFMT_RGB|24}, {"RGB32", IMGFMT_RGB|32}, - {"RG48LE", IMGFMT_RGB|48}, - {"RG48BE", IMGFMT_RGB|49}, {"BGR4", IMGFMT_BGR|4}, {"BGR8", IMGFMT_BGR|8}, {"BGR15", IMGFMT_BGR|15}, diff --git a/etc/codecs.conf b/etc/codecs.conf index cdb4e5dc6c..cfbe841ad7 100644 --- a/etc/codecs.conf +++ b/etc/codecs.conf @@ -344,7 +344,7 @@ videocodec ffdpx fourcc "dpx " ; "dpx " is an internal MPlayer FOURCC driver ffmpeg dll dpx - out RG48BE,RG48LE + out RGB48BE,RGB48LE videocodec ffgif info "FFmpeg GIF" From 14df605236c9fefe7ebc1342435bc791ea9c3fd6 Mon Sep 17 00:00:00 2001 From: greg Date: Tue, 11 Aug 2009 23:26:42 +0000 Subject: [PATCH 42/77] Use new libavformat metadata API. Patch by Anton Khirnov . git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29497 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demux_lavf.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/libmpdemux/demux_lavf.c b/libmpdemux/demux_lavf.c index 800e7eb3f2..886df7a1bf 100644 --- a/libmpdemux/demux_lavf.c +++ b/libmpdemux/demux_lavf.c @@ -422,6 +422,7 @@ static demuxer_t* demux_open_lavf(demuxer_t *demuxer){ AVFormatContext *avfc; AVFormatParameters ap; const AVOption *opt; + AVMetadataTag *t = NULL; lavf_priv_t *priv= demuxer->priv; int i; char mp_filename[256]="mp:"; @@ -477,20 +478,17 @@ static demuxer_t* demux_open_lavf(demuxer_t *demuxer){ return NULL; } - if(avfc->title [0]) demux_info_add(demuxer, "title" , avfc->title ); - if(avfc->author [0]) demux_info_add(demuxer, "author" , avfc->author ); - if(avfc->copyright[0]) demux_info_add(demuxer, "copyright", avfc->copyright); - if(avfc->comment [0]) demux_info_add(demuxer, "comments" , avfc->comment ); - if(avfc->album [0]) demux_info_add(demuxer, "album" , avfc->album ); -// if(avfc->year ) demux_info_add(demuxer, "year" , avfc->year ); -// if(avfc->track ) demux_info_add(demuxer, "track" , avfc->track ); - if(avfc->genre [0]) demux_info_add(demuxer, "genre" , avfc->genre ); + /* Add metadata. */ + av_metadata_conv(avfc, NULL, avfc->iformat->metadata_conv); + while((t = av_metadata_get(avfc->metadata, "", t, AV_METADATA_IGNORE_SUFFIX))) + demux_info_add(demuxer, t->key, t->value); for(i=0; i < avfc->nb_chapters; i++) { AVChapter *c = avfc->chapters[i]; uint64_t start = av_rescale_q(c->start, c->time_base, (AVRational){1,1000}); uint64_t end = av_rescale_q(c->end, c->time_base, (AVRational){1,1000}); - demuxer_add_chapter(demuxer, c->title, start, end); + t = av_metadata_get(c->metadata, "title", NULL, 0); + demuxer_add_chapter(demuxer, t ? t->value : NULL, start, end); } if(avfc->nb_programs) { @@ -512,7 +510,8 @@ static demuxer_t* demux_open_lavf(demuxer_t *demuxer){ p = start; do { AVProgram *program = avfc->programs[p]; - mp_msg(MSGT_HEADER,MSGL_INFO,"LAVF: Program %d %s\n", program->id, (program->name ? program->name : "")); + t = av_metadata_get(program->metadata, "title", NULL, 0); + mp_msg(MSGT_HEADER,MSGL_INFO,"LAVF: Program %d %s\n", program->id, t ? t->value : ""); for(i=0; inb_stream_indexes; i++) handle_stream(demuxer, avfc, program->stream_index[i]); if(!priv->cur_program && (demuxer->video->sh || demuxer->audio->sh)) From 6ca44767530c05c4e22e1dea7aed68b42febe33d Mon Sep 17 00:00:00 2001 From: cehoyos Date: Wed, 12 Aug 2009 00:27:00 +0000 Subject: [PATCH 43/77] Allow decoding of 48 bit png image files. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29498 b3059339-0415-0410-9bf9-f77b7e298cf2 --- etc/codecs.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etc/codecs.conf b/etc/codecs.conf index cfbe841ad7..530630beff 100644 --- a/etc/codecs.conf +++ b/etc/codecs.conf @@ -377,7 +377,7 @@ videocodec ffpng fourcc "png " ; for PNG-encoded QuickTime files driver ffmpeg dll png - out BGR32,BGR24,BGR8,Y800,RGB32,RGB24,RGB8 + out BGR32,BGR24,BGR8,Y800,RGB48BE,RGB32,RGB24,RGB8 videocodec mpng info "PNG image" From c9f520a3f905012c93c40da7e12c9ba051e1d618 Mon Sep 17 00:00:00 2001 From: reimar Date: Wed, 12 Aug 2009 00:51:09 +0000 Subject: [PATCH 44/77] 1000l, RGB48BE does _not_ use 49 bit/pixel, probably fixes 48 bit PNG decoding. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29499 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpcodecs/img_format.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libmpcodecs/img_format.h b/libmpcodecs/img_format.h index b0878f4c1b..8c7dfa39e9 100644 --- a/libmpcodecs/img_format.h +++ b/libmpcodecs/img_format.h @@ -14,7 +14,7 @@ #define IMGFMT_RGB24 (IMGFMT_RGB|24) #define IMGFMT_RGB32 (IMGFMT_RGB|32) #define IMGFMT_RGB48LE (IMGFMT_RGB|48) -#define IMGFMT_RGB48BE (IMGFMT_RGB|49) +#define IMGFMT_RGB48BE (IMGFMT_RGB|48) #define IMGFMT_BGR_MASK 0xFFFFFF00 #define IMGFMT_BGR (('B'<<24)|('G'<<16)|('R'<<8)) From a3d39e2702b0b9d3abc721b60216fbd866fea48e Mon Sep 17 00:00:00 2001 From: reimar Date: Wed, 12 Aug 2009 01:03:21 +0000 Subject: [PATCH 45/77] 100l, fix compilation again and make codec-cfg.c use the predefined constants instead of reimplementing the IMGFMT_RGB|bit_depth logic. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29500 b3059339-0415-0410-9bf9-f77b7e298cf2 --- codec-cfg.c | 4 ++-- libmpcodecs/img_format.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/codec-cfg.c b/codec-cfg.c index 764457467b..c0246e9f21 100644 --- a/codec-cfg.c +++ b/codec-cfg.c @@ -162,8 +162,8 @@ static int add_to_format(char *s, char *alias,unsigned int *fourcc, unsigned int {"UYVY", IMGFMT_UYVY}, {"YVYU", IMGFMT_YVYU}, - {"RGB48LE", IMGFMT_RGB|48}, - {"RGB48BE", IMGFMT_RGB|49}, + {"RGB48LE", IMGFMT_RGB48LE}, + {"RGB48BE", IMGFMT_RGB48BE}, {"RGB4", IMGFMT_RGB|4}, {"RGB8", IMGFMT_RGB|8}, {"RGB15", IMGFMT_RGB|15}, diff --git a/libmpcodecs/img_format.h b/libmpcodecs/img_format.h index 8c7dfa39e9..89efb1d6cb 100644 --- a/libmpcodecs/img_format.h +++ b/libmpcodecs/img_format.h @@ -14,7 +14,7 @@ #define IMGFMT_RGB24 (IMGFMT_RGB|24) #define IMGFMT_RGB32 (IMGFMT_RGB|32) #define IMGFMT_RGB48LE (IMGFMT_RGB|48) -#define IMGFMT_RGB48BE (IMGFMT_RGB|48) +#define IMGFMT_RGB48BE (IMGFMT_RGB|48|128) #define IMGFMT_BGR_MASK 0xFFFFFF00 #define IMGFMT_BGR (('B'<<24)|('G'<<16)|('R'<<8)) From b6c472202f7ca15a07e665b5c0f29d6391e211d1 Mon Sep 17 00:00:00 2001 From: reimar Date: Wed, 12 Aug 2009 01:04:37 +0000 Subject: [PATCH 46/77] make codec-cfg reuse the proper defined constants for all RGB/BGR formats instead of re-constructing them itself. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29501 b3059339-0415-0410-9bf9-f77b7e298cf2 --- codec-cfg.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/codec-cfg.c b/codec-cfg.c index c0246e9f21..86424b54c4 100644 --- a/codec-cfg.c +++ b/codec-cfg.c @@ -164,20 +164,20 @@ static int add_to_format(char *s, char *alias,unsigned int *fourcc, unsigned int {"RGB48LE", IMGFMT_RGB48LE}, {"RGB48BE", IMGFMT_RGB48BE}, - {"RGB4", IMGFMT_RGB|4}, - {"RGB8", IMGFMT_RGB|8}, - {"RGB15", IMGFMT_RGB|15}, - {"RGB16", IMGFMT_RGB|16}, - {"RGB24", IMGFMT_RGB|24}, - {"RGB32", IMGFMT_RGB|32}, - {"BGR4", IMGFMT_BGR|4}, - {"BGR8", IMGFMT_BGR|8}, - {"BGR15", IMGFMT_BGR|15}, - {"BGR16", IMGFMT_BGR|16}, - {"BGR24", IMGFMT_BGR|24}, - {"BGR32", IMGFMT_BGR|32}, - {"RGB1", IMGFMT_RGB|1}, - {"BGR1", IMGFMT_BGR|1}, + {"RGB4", IMGFMT_RGB4}, + {"RGB8", IMGFMT_RGB8}, + {"RGB15", IMGFMT_RGB15}, + {"RGB16", IMGFMT_RGB16}, + {"RGB24", IMGFMT_RGB24}, + {"RGB32", IMGFMT_RGB32}, + {"BGR4", IMGFMT_BGR4}, + {"BGR8", IMGFMT_BGR8}, + {"BGR15", IMGFMT_BGR15}, + {"BGR16", IMGFMT_BGR16}, + {"BGR24", IMGFMT_BGR24}, + {"BGR32", IMGFMT_BGR32}, + {"RGB1", IMGFMT_RGB1}, + {"BGR1", IMGFMT_BGR1}, {"MPES", IMGFMT_MPEGPES}, {"ZRMJPEGNI", IMGFMT_ZRMJPEGNI}, From 226e5b47c8c3417455507556085bddccc5ea1914 Mon Sep 17 00:00:00 2001 From: cehoyos Date: Wed, 12 Aug 2009 15:20:14 +0000 Subject: [PATCH 47/77] Fix possible double-free. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29502 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demux_rtp.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libmpdemux/demux_rtp.cpp b/libmpdemux/demux_rtp.cpp index 6af3acc676..a8fd6cc2c9 100644 --- a/libmpdemux/demux_rtp.cpp +++ b/libmpdemux/demux_rtp.cpp @@ -392,7 +392,7 @@ extern "C" void demux_close_rtp(demuxer_t* demuxer) { delete rtpState->sdpDescription; delete rtpState; #ifdef CONFIG_LIBAVCODEC - av_free(avcctx); + av_freep(&avcctx); #endif env->reclaim(); delete scheduler; From 4f3fd1c7ea26e66861c0fd4df899f32534350aed Mon Sep 17 00:00:00 2001 From: ramiro Date: Thu, 13 Aug 2009 11:33:18 +0000 Subject: [PATCH 48/77] swscale-example: Check for Gray formats. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29503 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libswscale/swscale-example.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/libswscale/swscale-example.c b/libswscale/swscale-example.c index f90e2f3f6f..89fdf5fe86 100644 --- a/libswscale/swscale-example.c +++ b/libswscale/swscale-example.c @@ -32,6 +32,11 @@ /* HACK Duplicated from swscale_internal.h. * Should be removed when a cleaner pixel format system exists. */ const char *sws_format_name(enum PixelFormat format); +#define isGray(x) ( \ + (x)==PIX_FMT_GRAY8 \ + || (x)==PIX_FMT_GRAY16BE \ + || (x)==PIX_FMT_GRAY16LE \ + ) #define isALPHA(x) ( \ (x)==PIX_FMT_BGR32 \ || (x)==PIX_FMT_BGR32_1 \ @@ -66,7 +71,7 @@ static int doTest(uint8_t *ref[4], int refStride[4], int w, int h, int srcFormat uint8_t *out[4] = {0}; int srcStride[4], dstStride[4]; int i; - uint64_t ssdY, ssdU, ssdV, ssdA=0; + uint64_t ssdY, ssdU=0, ssdV=0, ssdA=0; struct SwsContext *srcContext = NULL, *dstContext = NULL, *outContext = NULL; int res; @@ -134,13 +139,14 @@ static int doTest(uint8_t *ref[4], int refStride[4], int w, int h, int srcFormat sws_scale(outContext, dst, dstStride, 0, dstH, out, refStride); ssdY= getSSD(ref[0], out[0], refStride[0], refStride[0], w, h); + if (!isGray(srcFormat) && !isGray(dstFormat)) { + //FIXME check that output is really gray ssdU= getSSD(ref[1], out[1], refStride[1], refStride[1], (w+1)>>1, (h+1)>>1); ssdV= getSSD(ref[2], out[2], refStride[2], refStride[2], (w+1)>>1, (h+1)>>1); + } if (isALPHA(srcFormat) && isALPHA(dstFormat)) ssdA= getSSD(ref[3], out[3], refStride[3], refStride[3], w, h); - if (srcFormat == PIX_FMT_GRAY8 || dstFormat==PIX_FMT_GRAY8) ssdU=ssdV=0; //FIXME check that output is really gray - ssdY/= w*h; ssdU/= w*h/4; ssdV/= w*h/4; From fef358505eda7aee3ac022261925694e90778dbc Mon Sep 17 00:00:00 2001 From: ramiro Date: Thu, 13 Aug 2009 11:34:27 +0000 Subject: [PATCH 49/77] swscale-example: Don't return random value from main(). git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29504 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libswscale/swscale-example.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libswscale/swscale-example.c b/libswscale/swscale-example.c index 89fdf5fe86..ec73495568 100644 --- a/libswscale/swscale-example.c +++ b/libswscale/swscale-example.c @@ -233,5 +233,5 @@ int main(int argc, char **argv){ selfTest(src, stride, W, H); - return 123; + return 0; } From 3c4aba428f2944315993ba3a9ff57c0df0da84a0 Mon Sep 17 00:00:00 2001 From: ramiro Date: Thu, 13 Aug 2009 11:48:06 +0000 Subject: [PATCH 50/77] swscale-example: Remove hack to end loop by setting variables to break. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29505 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libswscale/swscale-example.c | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/libswscale/swscale-example.c b/libswscale/swscale-example.c index ec73495568..af959b11a6 100644 --- a/libswscale/swscale-example.c +++ b/libswscale/swscale-example.c @@ -180,6 +180,8 @@ static void selfTest(uint8_t *src[4], int stride[4], int w, int h){ for (srcFormat = 0; srcFormat < PIX_FMT_NB; srcFormat++) { for (dstFormat = 0; dstFormat < PIX_FMT_NB; dstFormat++) { + int res = 0; + printf("%s -> %s\n", sws_format_name(srcFormat), sws_format_name(dstFormat)); @@ -187,21 +189,11 @@ static void selfTest(uint8_t *src[4], int stride[4], int w, int h){ srcW= w; srcH= h; - for (dstW=w - w/3; dstW<= 4*w/3; dstW+= w/3){ - for (dstH=h - h/3; dstH<= 4*h/3; dstH+= h/3){ - for (flags=1; flags<33; flags*=2) { - int res; - + for (dstW=w - w/3; !res && dstW<= 4*w/3; dstW+= w/3) + for (dstH=h - h/3; !res && dstH<= 4*h/3; dstH+= h/3) + for (flags=1; !res && flags<33; flags*=2) res = doTest(src, stride, w, h, srcFormat, dstFormat, srcW, srcH, dstW, dstH, flags); - if (res < 0) { - dstW = 4 * w / 3; - dstH = 4 * h / 3; - flags = 33; - } - } - } - } } } } From f4002b6be9b8df62f754aca60e764983aaa4a1f3 Mon Sep 17 00:00:00 2001 From: ramiro Date: Thu, 13 Aug 2009 13:18:59 +0000 Subject: [PATCH 51/77] Indent. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29506 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libswscale/swscale-example.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libswscale/swscale-example.c b/libswscale/swscale-example.c index af959b11a6..c289324f0b 100644 --- a/libswscale/swscale-example.c +++ b/libswscale/swscale-example.c @@ -141,8 +141,8 @@ static int doTest(uint8_t *ref[4], int refStride[4], int w, int h, int srcFormat ssdY= getSSD(ref[0], out[0], refStride[0], refStride[0], w, h); if (!isGray(srcFormat) && !isGray(dstFormat)) { //FIXME check that output is really gray - ssdU= getSSD(ref[1], out[1], refStride[1], refStride[1], (w+1)>>1, (h+1)>>1); - ssdV= getSSD(ref[2], out[2], refStride[2], refStride[2], (w+1)>>1, (h+1)>>1); + ssdU= getSSD(ref[1], out[1], refStride[1], refStride[1], (w+1)>>1, (h+1)>>1); + ssdV= getSSD(ref[2], out[2], refStride[2], refStride[2], (w+1)>>1, (h+1)>>1); } if (isALPHA(srcFormat) && isALPHA(dstFormat)) ssdA= getSSD(ref[3], out[3], refStride[3], refStride[3], w, h); From 054bb3016fa91f915048286fff2a02e99bfa7765 Mon Sep 17 00:00:00 2001 From: ramiro Date: Thu, 13 Aug 2009 18:28:17 +0000 Subject: [PATCH 52/77] Rename "funny" code to "mmx2 filter" code. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29507 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libswscale/swscale.c | 48 +++++++++++++++++------------------ libswscale/swscale_internal.h | 4 +-- libswscale/swscale_template.c | 48 +++++++++++++++++------------------ 3 files changed, 50 insertions(+), 50 deletions(-) diff --git a/libswscale/swscale.c b/libswscale/swscale.c index 2adf39315a..e1767d9692 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -1753,7 +1753,7 @@ error: } #ifdef COMPILE_MMX2 -static void initMMX2HScaler(int dstW, int xInc, uint8_t *funnyCode, int16_t *filter, int32_t *filterPos, int numSplits) +static void initMMX2HScaler(int dstW, int xInc, uint8_t *filterCode, int16_t *filter, int32_t *filterPos, int numSplits) { uint8_t *fragmentA; x86_reg imm8OfPShufW1A; @@ -1876,11 +1876,11 @@ static void initMMX2HScaler(int dstW, int xInc, uint8_t *funnyCode, int16_t *fil filter[i+3] = (((xpos+xInc*3) & 0xFFFF) ^ 0xFFFF)>>9; filterPos[i/2]= xx; - memcpy(funnyCode + fragmentPos, fragment, fragmentLength); + memcpy(filterCode + fragmentPos, fragment, fragmentLength); - funnyCode[fragmentPos + imm8OfPShufW1]= + filterCode[fragmentPos + imm8OfPShufW1]= (a+inc) | ((b+inc)<<2) | ((c+inc)<<4) | ((d+inc)<<6); - funnyCode[fragmentPos + imm8OfPShufW2]= + filterCode[fragmentPos + imm8OfPShufW2]= a | (b<<2) | (c<<4) | (d<<6); if (i+4-inc>=dstW) shift=maxShift; //avoid overread @@ -1888,14 +1888,14 @@ static void initMMX2HScaler(int dstW, int xInc, uint8_t *funnyCode, int16_t *fil if (shift && i>=shift) { - funnyCode[fragmentPos + imm8OfPShufW1]+= 0x55*shift; - funnyCode[fragmentPos + imm8OfPShufW2]+= 0x55*shift; + filterCode[fragmentPos + imm8OfPShufW1]+= 0x55*shift; + filterCode[fragmentPos + imm8OfPShufW2]+= 0x55*shift; filterPos[i/2]-=shift; } fragmentPos+= fragmentLength; - funnyCode[fragmentPos]= RET; + filterCode[fragmentPos]= RET; } xpos+=xInc; } @@ -2808,20 +2808,20 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d (flags&SWS_BICUBLIN) ? (flags|SWS_BILINEAR) : flags, srcFilter->chrH, dstFilter->chrH, c->param); -#define MAX_FUNNY_CODE_SIZE 10000 +#define MAX_MMX2_FILTER_CODE_SIZE 10000 #if defined(COMPILE_MMX2) // can't downscale !!! if (c->canMMX2BeUsed && (flags & SWS_FAST_BILINEAR)) { #ifdef MAP_ANONYMOUS - c->funnyYCode = mmap(NULL, MAX_FUNNY_CODE_SIZE, PROT_EXEC | PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0); - c->funnyUVCode = mmap(NULL, MAX_FUNNY_CODE_SIZE, PROT_EXEC | PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0); + c->lumMmx2FilterCode = mmap(NULL, MAX_MMX2_FILTER_CODE_SIZE, PROT_EXEC | PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0); + c->chrMmx2FilterCode = mmap(NULL, MAX_MMX2_FILTER_CODE_SIZE, PROT_EXEC | PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0); #elif HAVE_VIRTUALALLOC - c->funnyYCode = VirtualAlloc(NULL, MAX_FUNNY_CODE_SIZE, MEM_COMMIT, PAGE_EXECUTE_READWRITE); - c->funnyUVCode = VirtualAlloc(NULL, MAX_FUNNY_CODE_SIZE, MEM_COMMIT, PAGE_EXECUTE_READWRITE); + c->lumMmx2FilterCode = VirtualAlloc(NULL, MAX_MMX2_FILTER_CODE_SIZE, MEM_COMMIT, PAGE_EXECUTE_READWRITE); + c->chrMmx2FilterCode = VirtualAlloc(NULL, MAX_MMX2_FILTER_CODE_SIZE, MEM_COMMIT, PAGE_EXECUTE_READWRITE); #else - c->funnyYCode = av_malloc(MAX_FUNNY_CODE_SIZE); - c->funnyUVCode = av_malloc(MAX_FUNNY_CODE_SIZE); + c->lumMmx2FilterCode = av_malloc(MAX_MMX2_FILTER_CODE_SIZE); + c->chrMmx2FilterCode = av_malloc(MAX_MMX2_FILTER_CODE_SIZE); #endif c->lumMmx2Filter = av_malloc((dstW /8+8)*sizeof(int16_t)); @@ -2829,8 +2829,8 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d c->lumMmx2FilterPos= av_malloc((dstW /2/8+8)*sizeof(int32_t)); c->chrMmx2FilterPos= av_malloc((c->chrDstW/2/4+8)*sizeof(int32_t)); - initMMX2HScaler( dstW, c->lumXInc, c->funnyYCode , c->lumMmx2Filter, c->lumMmx2FilterPos, 8); - initMMX2HScaler(c->chrDstW, c->chrXInc, c->funnyUVCode, c->chrMmx2Filter, c->chrMmx2FilterPos, 4); + initMMX2HScaler( dstW, c->lumXInc, c->lumMmx2FilterCode, c->lumMmx2Filter, c->lumMmx2FilterPos, 8); + initMMX2HScaler(c->chrDstW, c->chrXInc, c->chrMmx2FilterCode, c->chrMmx2Filter, c->chrMmx2FilterPos, 4); } #endif /* defined(COMPILE_MMX2) */ } // initialize horizontal stuff @@ -3499,17 +3499,17 @@ void sws_freeContext(SwsContext *c){ #if ARCH_X86 && CONFIG_GPL #ifdef MAP_ANONYMOUS - if (c->funnyYCode ) munmap(c->funnyYCode , MAX_FUNNY_CODE_SIZE); - if (c->funnyUVCode) munmap(c->funnyUVCode, MAX_FUNNY_CODE_SIZE); + if (c->lumMmx2FilterCode) munmap(c->lumMmx2FilterCode, MAX_MMX2_FILTER_CODE_SIZE); + if (c->chrMmx2FilterCode) munmap(c->chrMmx2FilterCode, MAX_MMX2_FILTER_CODE_SIZE); #elif HAVE_VIRTUALALLOC - if (c->funnyYCode ) VirtualFree(c->funnyYCode , MAX_FUNNY_CODE_SIZE, MEM_RELEASE); - if (c->funnyUVCode) VirtualFree(c->funnyUVCode, MAX_FUNNY_CODE_SIZE, MEM_RELEASE); + if (c->lumMmx2FilterCode) VirtualFree(c->lumMmx2FilterCode, MAX_MMX2_FILTER_CODE_SIZE, MEM_RELEASE); + if (c->chrMmx2FilterCode) VirtualFree(c->chrMmx2FilterCode, MAX_MMX2_FILTER_CODE_SIZE, MEM_RELEASE); #else - av_free(c->funnyYCode ); - av_free(c->funnyUVCode); + av_free(c->lumMmx2FilterCode); + av_free(c->chrMmx2FilterCode); #endif - c->funnyYCode=NULL; - c->funnyUVCode=NULL; + c->lumMmx2FilterCode=NULL; + c->chrMmx2FilterCode=NULL; #endif /* ARCH_X86 && CONFIG_GPL */ av_freep(&c->lumMmx2Filter); diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h index 85e07c0af1..4813894bcb 100644 --- a/libswscale/swscale_internal.h +++ b/libswscale/swscale_internal.h @@ -111,8 +111,8 @@ typedef struct SwsContext{ int vLumBufSize; int vChrBufSize; - uint8_t *funnyYCode; - uint8_t *funnyUVCode; + uint8_t *lumMmx2FilterCode; + uint8_t *chrMmx2FilterCode; int32_t *lumMmx2FilterPos; int32_t *chrMmx2FilterPos; int16_t *lumMmx2Filter; diff --git a/libswscale/swscale_template.c b/libswscale/swscale_template.c index e05fb0be67..2634020a66 100644 --- a/libswscale/swscale_template.c +++ b/libswscale/swscale_template.c @@ -2232,7 +2232,7 @@ static inline void RENAME(hyscale)(SwsContext *c, uint16_t *dst, long dstWidth, int32_t av_unused *mmx2FilterPos = c->lumMmx2FilterPos; int16_t av_unused *mmx2Filter = c->lumMmx2Filter; int av_unused canMMX2BeUsed = c->canMMX2BeUsed; - void av_unused *funnyYCode = c->funnyYCode; + void av_unused *mmx2FilterCode= c->lumMmx2FilterCode; void (*internal_func)(uint8_t *, const uint8_t *, long, uint32_t *) = isAlpha ? c->hascale_internal : c->hyscale_internal; if (isAlpha) { @@ -2286,7 +2286,7 @@ static inline void RENAME(hyscale)(SwsContext *c, uint16_t *dst, long dstWidth, #if ARCH_X86_64 -#define FUNNY_Y_CODE \ +#define CALL_MMX2_FILTER_CODE \ "movl (%%"REG_b"), %%esi \n\t"\ "call *%4 \n\t"\ "movl (%%"REG_b", %%"REG_a"), %%esi \n\t"\ @@ -2296,7 +2296,7 @@ static inline void RENAME(hyscale)(SwsContext *c, uint16_t *dst, long dstWidth, #else -#define FUNNY_Y_CODE \ +#define CALL_MMX2_FILTER_CODE \ "movl (%%"REG_b"), %%esi \n\t"\ "call *%4 \n\t"\ "addl (%%"REG_b", %%"REG_a"), %%"REG_c" \n\t"\ @@ -2305,20 +2305,20 @@ static inline void RENAME(hyscale)(SwsContext *c, uint16_t *dst, long dstWidth, #endif /* ARCH_X86_64 */ -FUNNY_Y_CODE -FUNNY_Y_CODE -FUNNY_Y_CODE -FUNNY_Y_CODE -FUNNY_Y_CODE -FUNNY_Y_CODE -FUNNY_Y_CODE -FUNNY_Y_CODE +CALL_MMX2_FILTER_CODE +CALL_MMX2_FILTER_CODE +CALL_MMX2_FILTER_CODE +CALL_MMX2_FILTER_CODE +CALL_MMX2_FILTER_CODE +CALL_MMX2_FILTER_CODE +CALL_MMX2_FILTER_CODE +CALL_MMX2_FILTER_CODE #if defined(PIC) "mov %5, %%"REG_b" \n\t" #endif :: "m" (src), "m" (dst), "m" (mmx2Filter), "m" (mmx2FilterPos), - "m" (funnyYCode) + "m" (mmx2FilterCode) #if defined(PIC) ,"m" (ebxsave) #endif @@ -2415,7 +2415,7 @@ inline static void RENAME(hcscale)(SwsContext *c, uint16_t *dst, long dstWidth, int32_t av_unused *mmx2FilterPos = c->chrMmx2FilterPos; int16_t av_unused *mmx2Filter = c->chrMmx2Filter; int av_unused canMMX2BeUsed = c->canMMX2BeUsed; - void av_unused *funnyUVCode = c->funnyUVCode; + void av_unused *mmx2FilterCode= c->chrMmx2FilterCode; if (isGray(srcFormat) || srcFormat==PIX_FMT_MONOBLACK || srcFormat==PIX_FMT_MONOWHITE) return; @@ -2472,7 +2472,7 @@ inline static void RENAME(hcscale)(SwsContext *c, uint16_t *dst, long dstWidth, #if ARCH_X86_64 -#define FUNNY_UV_CODE \ +#define CALL_MMX2_FILTER_CODE \ "movl (%%"REG_b"), %%esi \n\t"\ "call *%4 \n\t"\ "movl (%%"REG_b", %%"REG_a"), %%esi \n\t"\ @@ -2482,7 +2482,7 @@ inline static void RENAME(hcscale)(SwsContext *c, uint16_t *dst, long dstWidth, #else -#define FUNNY_UV_CODE \ +#define CALL_MMX2_FILTER_CODE \ "movl (%%"REG_b"), %%esi \n\t"\ "call *%4 \n\t"\ "addl (%%"REG_b", %%"REG_a"), %%"REG_c" \n\t"\ @@ -2491,10 +2491,10 @@ inline static void RENAME(hcscale)(SwsContext *c, uint16_t *dst, long dstWidth, #endif /* ARCH_X86_64 */ -FUNNY_UV_CODE -FUNNY_UV_CODE -FUNNY_UV_CODE -FUNNY_UV_CODE +CALL_MMX2_FILTER_CODE +CALL_MMX2_FILTER_CODE +CALL_MMX2_FILTER_CODE +CALL_MMX2_FILTER_CODE "xor %%"REG_a", %%"REG_a" \n\t" // i "mov %5, %%"REG_c" \n\t" // src "mov %1, %%"REG_D" \n\t" // buf1 @@ -2503,16 +2503,16 @@ FUNNY_UV_CODE PREFETCH" 32(%%"REG_c") \n\t" PREFETCH" 64(%%"REG_c") \n\t" -FUNNY_UV_CODE -FUNNY_UV_CODE -FUNNY_UV_CODE -FUNNY_UV_CODE +CALL_MMX2_FILTER_CODE +CALL_MMX2_FILTER_CODE +CALL_MMX2_FILTER_CODE +CALL_MMX2_FILTER_CODE #if defined(PIC) "mov %6, %%"REG_b" \n\t" #endif :: "m" (src1), "m" (dst), "m" (mmx2Filter), "m" (mmx2FilterPos), - "m" (funnyUVCode), "m" (src2) + "m" (mmx2FilterCode), "m" (src2) #if defined(PIC) ,"m" (ebxsave) #endif From 6f79fc6ff96445078d3ea66378cb1c7a523a2486 Mon Sep 17 00:00:00 2001 From: ramiro Date: Thu, 13 Aug 2009 18:28:55 +0000 Subject: [PATCH 53/77] Remove duplicate define (it is the same in the lum code). git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29508 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libswscale/swscale_template.c | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/libswscale/swscale_template.c b/libswscale/swscale_template.c index 2634020a66..d1177f598e 100644 --- a/libswscale/swscale_template.c +++ b/libswscale/swscale_template.c @@ -2470,27 +2470,6 @@ inline static void RENAME(hcscale)(SwsContext *c, uint16_t *dst, long dstWidth, PREFETCH" 32(%%"REG_c") \n\t" PREFETCH" 64(%%"REG_c") \n\t" -#if ARCH_X86_64 - -#define CALL_MMX2_FILTER_CODE \ - "movl (%%"REG_b"), %%esi \n\t"\ - "call *%4 \n\t"\ - "movl (%%"REG_b", %%"REG_a"), %%esi \n\t"\ - "add %%"REG_S", %%"REG_c" \n\t"\ - "add %%"REG_a", %%"REG_D" \n\t"\ - "xor %%"REG_a", %%"REG_a" \n\t"\ - -#else - -#define CALL_MMX2_FILTER_CODE \ - "movl (%%"REG_b"), %%esi \n\t"\ - "call *%4 \n\t"\ - "addl (%%"REG_b", %%"REG_a"), %%"REG_c" \n\t"\ - "add %%"REG_a", %%"REG_D" \n\t"\ - "xor %%"REG_a", %%"REG_a" \n\t"\ - -#endif /* ARCH_X86_64 */ - CALL_MMX2_FILTER_CODE CALL_MMX2_FILTER_CODE CALL_MMX2_FILTER_CODE From a409c31dd1e0e0cd675f7fbcdd8517aa81df2857 Mon Sep 17 00:00:00 2001 From: ramiro Date: Thu, 13 Aug 2009 18:29:54 +0000 Subject: [PATCH 54/77] Protect mmx2 filter code buffers so they are not executable and writeable at the same time (only mmap for now). git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29509 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libswscale/swscale.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libswscale/swscale.c b/libswscale/swscale.c index e1767d9692..4a69ab8ea1 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -2814,8 +2814,8 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d if (c->canMMX2BeUsed && (flags & SWS_FAST_BILINEAR)) { #ifdef MAP_ANONYMOUS - c->lumMmx2FilterCode = mmap(NULL, MAX_MMX2_FILTER_CODE_SIZE, PROT_EXEC | PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0); - c->chrMmx2FilterCode = mmap(NULL, MAX_MMX2_FILTER_CODE_SIZE, PROT_EXEC | PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0); + c->lumMmx2FilterCode = mmap(NULL, MAX_MMX2_FILTER_CODE_SIZE, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0); + c->chrMmx2FilterCode = mmap(NULL, MAX_MMX2_FILTER_CODE_SIZE, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0); #elif HAVE_VIRTUALALLOC c->lumMmx2FilterCode = VirtualAlloc(NULL, MAX_MMX2_FILTER_CODE_SIZE, MEM_COMMIT, PAGE_EXECUTE_READWRITE); c->chrMmx2FilterCode = VirtualAlloc(NULL, MAX_MMX2_FILTER_CODE_SIZE, MEM_COMMIT, PAGE_EXECUTE_READWRITE); @@ -2831,6 +2831,11 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d initMMX2HScaler( dstW, c->lumXInc, c->lumMmx2FilterCode, c->lumMmx2Filter, c->lumMmx2FilterPos, 8); initMMX2HScaler(c->chrDstW, c->chrXInc, c->chrMmx2FilterCode, c->chrMmx2Filter, c->chrMmx2FilterPos, 4); + +#ifdef MAP_ANONYMOUS + mprotect(c->lumMmx2FilterCode, MAX_MMX2_FILTER_CODE_SIZE, PROT_EXEC | PROT_READ); + mprotect(c->chrMmx2FilterCode, MAX_MMX2_FILTER_CODE_SIZE, PROT_EXEC | PROT_READ); +#endif } #endif /* defined(COMPILE_MMX2) */ } // initialize horizontal stuff From 301a0e49404adc78521430da261bafb07ceb1a06 Mon Sep 17 00:00:00 2001 From: ramiro Date: Thu, 13 Aug 2009 18:31:07 +0000 Subject: [PATCH 55/77] MMX2 horizontal scaler: Determine code size at runtime. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29510 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libswscale/swscale.c | 36 +++++++++++++++++++++-------------- libswscale/swscale_internal.h | 2 ++ 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/libswscale/swscale.c b/libswscale/swscale.c index 4a69ab8ea1..f185d2354a 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -1753,7 +1753,7 @@ error: } #ifdef COMPILE_MMX2 -static void initMMX2HScaler(int dstW, int xInc, uint8_t *filterCode, int16_t *filter, int32_t *filterPos, int numSplits) +static int initMMX2HScaler(int dstW, int xInc, uint8_t *filterCode, int16_t *filter, int32_t *filterPos, int numSplits) { uint8_t *fragmentA; x86_reg imm8OfPShufW1A; @@ -1870,6 +1870,7 @@ static void initMMX2HScaler(int dstW, int xInc, uint8_t *filterCode, int16_t *fi int maxShift= 3-(d+inc); int shift=0; + if (filterCode) { filter[i ] = (( xpos & 0xFFFF) ^ 0xFFFF)>>9; filter[i+1] = (((xpos+xInc ) & 0xFFFF) ^ 0xFFFF)>>9; filter[i+2] = (((xpos+xInc*2) & 0xFFFF) ^ 0xFFFF)>>9; @@ -1892,14 +1893,19 @@ static void initMMX2HScaler(int dstW, int xInc, uint8_t *filterCode, int16_t *fi filterCode[fragmentPos + imm8OfPShufW2]+= 0x55*shift; filterPos[i/2]-=shift; } + } fragmentPos+= fragmentLength; + if (filterCode) filterCode[fragmentPos]= RET; } xpos+=xInc; } + if (filterCode) filterPos[((i/2)+1)&(~1)]= xpos>>16; // needed to jump to the next part + + return fragmentPos + 1; } #endif /* COMPILE_MMX2 */ @@ -2808,20 +2814,22 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d (flags&SWS_BICUBLIN) ? (flags|SWS_BILINEAR) : flags, srcFilter->chrH, dstFilter->chrH, c->param); -#define MAX_MMX2_FILTER_CODE_SIZE 10000 #if defined(COMPILE_MMX2) // can't downscale !!! if (c->canMMX2BeUsed && (flags & SWS_FAST_BILINEAR)) { + c->lumMmx2FilterCodeSize = initMMX2HScaler( dstW, c->lumXInc, NULL, NULL, NULL, 8); + c->chrMmx2FilterCodeSize = initMMX2HScaler(c->chrDstW, c->chrXInc, NULL, NULL, NULL, 4); + #ifdef MAP_ANONYMOUS - c->lumMmx2FilterCode = mmap(NULL, MAX_MMX2_FILTER_CODE_SIZE, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0); - c->chrMmx2FilterCode = mmap(NULL, MAX_MMX2_FILTER_CODE_SIZE, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0); + c->lumMmx2FilterCode = mmap(NULL, c->lumMmx2FilterCodeSize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0); + c->chrMmx2FilterCode = mmap(NULL, c->chrMmx2FilterCodeSize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0); #elif HAVE_VIRTUALALLOC - c->lumMmx2FilterCode = VirtualAlloc(NULL, MAX_MMX2_FILTER_CODE_SIZE, MEM_COMMIT, PAGE_EXECUTE_READWRITE); - c->chrMmx2FilterCode = VirtualAlloc(NULL, MAX_MMX2_FILTER_CODE_SIZE, MEM_COMMIT, PAGE_EXECUTE_READWRITE); + c->lumMmx2FilterCode = VirtualAlloc(NULL, c->lumMmx2FilterCodeSize, MEM_COMMIT, PAGE_EXECUTE_READWRITE); + c->chrMmx2FilterCode = VirtualAlloc(NULL, c->chrMmx2FilterCodeSize, MEM_COMMIT, PAGE_EXECUTE_READWRITE); #else - c->lumMmx2FilterCode = av_malloc(MAX_MMX2_FILTER_CODE_SIZE); - c->chrMmx2FilterCode = av_malloc(MAX_MMX2_FILTER_CODE_SIZE); + c->lumMmx2FilterCode = av_malloc(c->lumMmx2FilterCodeSize); + c->chrMmx2FilterCode = av_malloc(c->chrMmx2FilterCodeSize); #endif c->lumMmx2Filter = av_malloc((dstW /8+8)*sizeof(int16_t)); @@ -2833,8 +2841,8 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d initMMX2HScaler(c->chrDstW, c->chrXInc, c->chrMmx2FilterCode, c->chrMmx2Filter, c->chrMmx2FilterPos, 4); #ifdef MAP_ANONYMOUS - mprotect(c->lumMmx2FilterCode, MAX_MMX2_FILTER_CODE_SIZE, PROT_EXEC | PROT_READ); - mprotect(c->chrMmx2FilterCode, MAX_MMX2_FILTER_CODE_SIZE, PROT_EXEC | PROT_READ); + mprotect(c->lumMmx2FilterCode, c->lumMmx2FilterCodeSize, PROT_EXEC | PROT_READ); + mprotect(c->chrMmx2FilterCode, c->chrMmx2FilterCodeSize, PROT_EXEC | PROT_READ); #endif } #endif /* defined(COMPILE_MMX2) */ @@ -3504,11 +3512,11 @@ void sws_freeContext(SwsContext *c){ #if ARCH_X86 && CONFIG_GPL #ifdef MAP_ANONYMOUS - if (c->lumMmx2FilterCode) munmap(c->lumMmx2FilterCode, MAX_MMX2_FILTER_CODE_SIZE); - if (c->chrMmx2FilterCode) munmap(c->chrMmx2FilterCode, MAX_MMX2_FILTER_CODE_SIZE); + if (c->lumMmx2FilterCode) munmap(c->lumMmx2FilterCode, c->lumMmx2FilterCodeSize); + if (c->chrMmx2FilterCode) munmap(c->chrMmx2FilterCode, c->chrMmx2FilterCodeSize); #elif HAVE_VIRTUALALLOC - if (c->lumMmx2FilterCode) VirtualFree(c->lumMmx2FilterCode, MAX_MMX2_FILTER_CODE_SIZE, MEM_RELEASE); - if (c->chrMmx2FilterCode) VirtualFree(c->chrMmx2FilterCode, MAX_MMX2_FILTER_CODE_SIZE, MEM_RELEASE); + if (c->lumMmx2FilterCode) VirtualFree(c->lumMmx2FilterCode, c->lumMmx2FilterCodeSize, MEM_RELEASE); + if (c->chrMmx2FilterCode) VirtualFree(c->chrMmx2FilterCode, c->chrMmx2FilterCodeSize, MEM_RELEASE); #else av_free(c->lumMmx2FilterCode); av_free(c->chrMmx2FilterCode); diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h index 4813894bcb..9063a20fba 100644 --- a/libswscale/swscale_internal.h +++ b/libswscale/swscale_internal.h @@ -111,6 +111,8 @@ typedef struct SwsContext{ int vLumBufSize; int vChrBufSize; + int lumMmx2FilterCodeSize; + int chrMmx2FilterCodeSize; uint8_t *lumMmx2FilterCode; uint8_t *chrMmx2FilterCode; int32_t *lumMmx2FilterPos; From 7eaf60438bc7b7006a6140a17ece27c79b3dd46a Mon Sep 17 00:00:00 2001 From: ramiro Date: Thu, 13 Aug 2009 18:39:39 +0000 Subject: [PATCH 56/77] swscale-example: Don't check for chroma planes in mono formats. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29511 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libswscale/swscale-example.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libswscale/swscale-example.c b/libswscale/swscale-example.c index c289324f0b..0e8db8a1ef 100644 --- a/libswscale/swscale-example.c +++ b/libswscale/swscale-example.c @@ -37,6 +37,11 @@ const char *sws_format_name(enum PixelFormat format); || (x)==PIX_FMT_GRAY16BE \ || (x)==PIX_FMT_GRAY16LE \ ) +#define hasChroma(x) (!( \ + isGray(x) \ + || (x)==PIX_FMT_MONOBLACK \ + || (x)==PIX_FMT_MONOWHITE \ + )) #define isALPHA(x) ( \ (x)==PIX_FMT_BGR32 \ || (x)==PIX_FMT_BGR32_1 \ @@ -139,7 +144,7 @@ static int doTest(uint8_t *ref[4], int refStride[4], int w, int h, int srcFormat sws_scale(outContext, dst, dstStride, 0, dstH, out, refStride); ssdY= getSSD(ref[0], out[0], refStride[0], refStride[0], w, h); - if (!isGray(srcFormat) && !isGray(dstFormat)) { + if (hasChroma(srcFormat) && hasChroma(dstFormat)) { //FIXME check that output is really gray ssdU= getSSD(ref[1], out[1], refStride[1], refStride[1], (w+1)>>1, (h+1)>>1); ssdV= getSSD(ref[2], out[2], refStride[2], refStride[2], (w+1)>>1, (h+1)>>1); From 58a12d7901438c80ab5f466100fa56e1a261b0e3 Mon Sep 17 00:00:00 2001 From: ramiro Date: Thu, 13 Aug 2009 19:03:14 +0000 Subject: [PATCH 57/77] Indent. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29512 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libswscale/swscale.c | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/libswscale/swscale.c b/libswscale/swscale.c index f185d2354a..5743e7104d 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -1871,39 +1871,39 @@ static int initMMX2HScaler(int dstW, int xInc, uint8_t *filterCode, int16_t *fil int shift=0; if (filterCode) { - filter[i ] = (( xpos & 0xFFFF) ^ 0xFFFF)>>9; - filter[i+1] = (((xpos+xInc ) & 0xFFFF) ^ 0xFFFF)>>9; - filter[i+2] = (((xpos+xInc*2) & 0xFFFF) ^ 0xFFFF)>>9; - filter[i+3] = (((xpos+xInc*3) & 0xFFFF) ^ 0xFFFF)>>9; - filterPos[i/2]= xx; + filter[i ] = (( xpos & 0xFFFF) ^ 0xFFFF)>>9; + filter[i+1] = (((xpos+xInc ) & 0xFFFF) ^ 0xFFFF)>>9; + filter[i+2] = (((xpos+xInc*2) & 0xFFFF) ^ 0xFFFF)>>9; + filter[i+3] = (((xpos+xInc*3) & 0xFFFF) ^ 0xFFFF)>>9; + filterPos[i/2]= xx; - memcpy(filterCode + fragmentPos, fragment, fragmentLength); + memcpy(filterCode + fragmentPos, fragment, fragmentLength); - filterCode[fragmentPos + imm8OfPShufW1]= - (a+inc) | ((b+inc)<<2) | ((c+inc)<<4) | ((d+inc)<<6); - filterCode[fragmentPos + imm8OfPShufW2]= - a | (b<<2) | (c<<4) | (d<<6); + filterCode[fragmentPos + imm8OfPShufW1]= + (a+inc) | ((b+inc)<<2) | ((c+inc)<<4) | ((d+inc)<<6); + filterCode[fragmentPos + imm8OfPShufW2]= + a | (b<<2) | (c<<4) | (d<<6); - if (i+4-inc>=dstW) shift=maxShift; //avoid overread - else if ((filterPos[i/2]&3) <= maxShift) shift=filterPos[i/2]&3; //Align + if (i+4-inc>=dstW) shift=maxShift; //avoid overread + else if ((filterPos[i/2]&3) <= maxShift) shift=filterPos[i/2]&3; //Align - if (shift && i>=shift) - { - filterCode[fragmentPos + imm8OfPShufW1]+= 0x55*shift; - filterCode[fragmentPos + imm8OfPShufW2]+= 0x55*shift; - filterPos[i/2]-=shift; - } + if (shift && i>=shift) + { + filterCode[fragmentPos + imm8OfPShufW1]+= 0x55*shift; + filterCode[fragmentPos + imm8OfPShufW2]+= 0x55*shift; + filterPos[i/2]-=shift; + } } fragmentPos+= fragmentLength; if (filterCode) - filterCode[fragmentPos]= RET; + filterCode[fragmentPos]= RET; } xpos+=xInc; } if (filterCode) - filterPos[((i/2)+1)&(~1)]= xpos>>16; // needed to jump to the next part + filterPos[((i/2)+1)&(~1)]= xpos>>16; // needed to jump to the next part return fragmentPos + 1; } From d41e860babc8d162379a62e337bbe9cb5ec9ae11 Mon Sep 17 00:00:00 2001 From: cehoyos Date: Thu, 13 Aug 2009 21:54:08 +0000 Subject: [PATCH 58/77] Add Dolby TrueHD support for mkv demuxer. Patch by Jason Tackaberry, tack urandom ca git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29513 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demux_mkv.c | 5 ++++- libmpdemux/matroska.h | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/libmpdemux/demux_mkv.c b/libmpdemux/demux_mkv.c index cb4d971755..457d32709d 100644 --- a/libmpdemux/demux_mkv.c +++ b/libmpdemux/demux_mkv.c @@ -1751,6 +1751,8 @@ demux_mkv_open_audio (demuxer_t *demuxer, mkv_track_t *track, int aid) track->a_formattag = mmioFOURCC('Q', 'D', 'M', '2'); else if (!strcmp(track->codec_id, MKV_A_WAVPACK)) track->a_formattag = mmioFOURCC('W', 'V', 'P', 'K'); + else if (!strcmp(track->codec_id, MKV_A_TRUEHD)) + track->a_formattag = mmioFOURCC('T', 'R', 'H', 'D'); else if (!strcmp(track->codec_id, MKV_A_FLAC)) { if (track->private_data == NULL || track->private_size == 0) @@ -1990,7 +1992,8 @@ demux_mkv_open_audio (demuxer_t *demuxer, mkv_track_t *track, int aid) dp->flags = 0; ds_add_packet (demuxer->audio, dp); } - else if (track->a_formattag == mmioFOURCC('W', 'V', 'P', 'K')) + else if (track->a_formattag == mmioFOURCC('W', 'V', 'P', 'K') || + track->a_formattag == mmioFOURCC('T', 'R', 'H', 'D')) { /* do nothing, still works */ } else if (!track->ms_compat || (track->private_size < sizeof(WAVEFORMATEX))) { diff --git a/libmpdemux/matroska.h b/libmpdemux/matroska.h index 3e4a404f38..3e569453c2 100644 --- a/libmpdemux/matroska.h +++ b/libmpdemux/matroska.h @@ -50,6 +50,7 @@ #define MKV_A_QDMC2 "A_QUICKTIME/QDM2" #define MKV_A_FLAC "A_FLAC" #define MKV_A_WAVPACK "A_WAVPACK4" +#define MKV_A_TRUEHD "A_TRUEHD" #define MKV_V_MSCOMP "V_MS/VFW/FOURCC" #define MKV_V_REALV10 "V_REAL/RV10" From 629d7023da9b06ede89fa83632ab22aa8631e41f Mon Sep 17 00:00:00 2001 From: greg Date: Thu, 13 Aug 2009 22:52:45 +0000 Subject: [PATCH 59/77] Fix crash when event format is not specified Patch by Andrew Savchenko . git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29514 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libass/ass.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/libass/ass.c b/libass/ass.c index 822f1e03f8..370063aacf 100644 --- a/libass/ass.c +++ b/libass/ass.c @@ -270,8 +270,15 @@ static int process_event_tail(ass_track_t* track, ass_event_t* event, char* str, int i; ass_event_t* target = event; - char* format = strdup(track->event_format); - char* q = format; // format scanning pointer + char* format; + char* q; // format scanning pointer + + if (!track->event_format) { + track->event_format = strdup("Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text"); + mp_msg(MSGT_ASS, MSGL_V, "Event format is broken, reseting to defaults.\n"); + } + + q = format = strdup(track->event_format); if (track->n_styles == 0) { // add "Default" style to the end From 28b847afce2057d4e55de80a7df8efe7f176fd40 Mon Sep 17 00:00:00 2001 From: ramiro Date: Fri, 14 Aug 2009 02:15:28 +0000 Subject: [PATCH 60/77] BGR32 MMX special convertor. Patch by Peter Schlaile < peter at schlaile dot de > git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29515 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libswscale/x86/yuv2rgb_mmx.c | 10 ++++ libswscale/x86/yuv2rgb_template.c | 96 ++++++++++++++++++++++++------- 2 files changed, 85 insertions(+), 21 deletions(-) diff --git a/libswscale/x86/yuv2rgb_mmx.c b/libswscale/x86/yuv2rgb_mmx.c index ced537fcce..e0b76e0b2d 100644 --- a/libswscale/x86/yuv2rgb_mmx.c +++ b/libswscale/x86/yuv2rgb_mmx.c @@ -67,6 +67,11 @@ SwsFunc ff_yuv2rgb_init_mmx(SwsContext *c) if (HAVE_7REGS) return yuva420_rgb32_MMX2; break; }else return yuv420_rgb32_MMX2; + case PIX_FMT_BGR32: + if (CONFIG_SWSCALE_ALPHA && c->srcFormat == PIX_FMT_YUVA420P){ + if (HAVE_7REGS) return yuva420_bgr32_MMX2; + break; + }else return yuv420_bgr32_MMX2; case PIX_FMT_BGR24: return yuv420_rgb24_MMX2; case PIX_FMT_RGB565: return yuv420_rgb16_MMX2; case PIX_FMT_RGB555: return yuv420_rgb15_MMX2; @@ -79,6 +84,11 @@ SwsFunc ff_yuv2rgb_init_mmx(SwsContext *c) if (HAVE_7REGS) return yuva420_rgb32_MMX; break; }else return yuv420_rgb32_MMX; + case PIX_FMT_BGR32: + if (CONFIG_SWSCALE_ALPHA && c->srcFormat == PIX_FMT_YUVA420P){ + if (HAVE_7REGS) return yuva420_bgr32_MMX; + break; + }else return yuv420_bgr32_MMX; case PIX_FMT_BGR24: return yuv420_rgb24_MMX; case PIX_FMT_RGB565: return yuv420_rgb16_MMX; case PIX_FMT_RGB555: return yuv420_rgb15_MMX; diff --git a/libswscale/x86/yuv2rgb_template.c b/libswscale/x86/yuv2rgb_template.c index 798eff0e33..5f319699bd 100644 --- a/libswscale/x86/yuv2rgb_template.c +++ b/libswscale/x86/yuv2rgb_template.c @@ -408,37 +408,57 @@ static inline int RENAME(yuv420_rgb24)(SwsContext *c, uint8_t* src[], int srcStr YUV2RGB_OPERANDS } -#define RGB_PLANAR2PACKED32 \ +/* + +RGB_PLANAR2PACKED32(red,green,blue,alpha) + +convert RGB plane to RGB packed format + +macro parameters specify the output color channel order: + +RGB_PLANAR2PACKED32(REG_RED, REG_GREEN, REG_BLUE, REG_ALPHA) for RGBA output, +RGB_PLANAR2PACKED32(REG_BLUE, REG_GREEN, REG_RED, REG_ALPHA) for BGRA output, +RGB_PLANAR2PACKED32(REG_ALPHA,REG_BLUE, REG_GREEN,REG_RED) for ABGR output, + +etc. +*/ + +#define REG_BLUE "0" +#define REG_RED "1" +#define REG_GREEN "2" +#define REG_ALPHA "3" + +#define RGB_PLANAR2PACKED32(red,green,blue,alpha) \ /* convert RGB plane to RGB packed format, \ mm0 -> B, mm1 -> R, mm2 -> G, mm3 -> A, \ mm4 -> GB, mm5 -> AR pixel 4-7, \ mm6 -> GB, mm7 -> AR pixel 0-3 */ \ - "movq %%mm0, %%mm6;" /* B7 B6 B5 B4 B3 B2 B1 B0 */ \ - "movq %%mm1, %%mm7;" /* R7 R6 R5 R4 R3 R2 R1 R0 */ \ + "movq %%mm" blue ", %%mm6;" /* B7 B6 B5 B4 B3 B2 B1 B0 */ \ + "movq %%mm" red ", %%mm7;" /* R7 R6 R5 R4 R3 R2 R1 R0 */ \ \ - "movq %%mm0, %%mm4;" /* B7 B6 B5 B4 B3 B2 B1 B0 */ \ - "movq %%mm1, %%mm5;" /* R7 R6 R5 R4 R3 R2 R1 R0 */ \ + "movq %%mm" blue ", %%mm4;" /* B7 B6 B5 B4 B3 B2 B1 B0 */ \ + "movq %%mm" red ", %%mm5;" /* R7 R6 R5 R4 R3 R2 R1 R0 */ \ \ - "punpcklbw %%mm2, %%mm6;" /* G3 B3 G2 B2 G1 B1 G0 B0 */ \ - "punpcklbw %%mm3, %%mm7;" /* A3 R3 A2 R2 A1 R1 A0 R0 */ \ + "punpcklbw %%mm" green ", %%mm6;" /* G3 B3 G2 B2 G1 B1 G0 B0 */ \ + "punpcklbw %%mm" alpha ", %%mm7;" /* A3 R3 A2 R2 A1 R1 A0 R0 */ \ \ - "punpcklwd %%mm7, %%mm6;" /* A1 R1 B1 G1 A0 R0 B0 G0 */ \ - MOVNTQ " %%mm6, (%1);" /* Store ARGB1 ARGB0 */ \ + "punpcklwd %%mm7, %%mm6;" /* A1 R1 B1 G1 A0 R0 B0 G0 */ \ + MOVNTQ " %%mm6, (%1);" /* Store ARGB1 ARGB0 */ \ \ - "movq %%mm0, %%mm6;" /* B7 B6 B5 B4 B3 B2 B1 B0 */ \ - "punpcklbw %%mm2, %%mm6;" /* G3 B3 G2 B2 G1 B1 G0 B0 */ \ + "movq %%mm" blue ", %%mm6;" /* B7 B6 B5 B4 B3 B2 B1 B0 */ \ + "punpcklbw %%mm" green ", %%mm6;" /* G3 B3 G2 B2 G1 B1 G0 B0 */ \ \ - "punpckhwd %%mm7, %%mm6;" /* A3 R3 G3 B3 A2 R2 B3 G2 */ \ - MOVNTQ " %%mm6, 8 (%1);" /* Store ARGB3 ARGB2 */ \ + "punpckhwd %%mm7, %%mm6;" /* A3 R3 G3 B3 A2 R2 B3 G2 */ \ + MOVNTQ " %%mm6, 8 (%1);" /* Store ARGB3 ARGB2 */ \ \ - "punpckhbw %%mm2, %%mm4;" /* G7 B7 G6 B6 G5 B5 G4 B4 */ \ - "punpckhbw %%mm3, %%mm5;" /* A7 R7 A6 R6 A5 R5 A4 R4 */ \ + "punpckhbw %%mm" green ", %%mm4;" /* G7 B7 G6 B6 G5 B5 G4 B4 */ \ + "punpckhbw %%mm" alpha ", %%mm5;" /* A7 R7 A6 R6 A5 R5 A4 R4 */ \ \ - "punpcklwd %%mm5, %%mm4;" /* A5 R5 B5 G5 A4 R4 B4 G4 */ \ - MOVNTQ " %%mm4, 16 (%1);" /* Store ARGB5 ARGB4 */ \ + "punpcklwd %%mm5, %%mm4;" /* A5 R5 B5 G5 A4 R4 B4 G4 */ \ + MOVNTQ " %%mm4, 16 (%1);" /* Store ARGB5 ARGB4 */ \ \ - "movq %%mm0, %%mm4;" /* B7 B6 B5 B4 B3 B2 B1 B0 */ \ - "punpckhbw %%mm2, %%mm4;" /* G7 B7 G6 B6 G5 B5 G4 B4 */ \ + "movq %%mm" blue ", %%mm4;" /* B7 B6 B5 B4 B3 B2 B1 B0 */ \ + "punpckhbw %%mm" green ", %%mm4;" /* G7 B7 G6 B6 G5 B5 G4 B4 */ \ \ "punpckhwd %%mm5, %%mm4;" /* A7 R7 G7 B7 A6 R6 B6 G6 */ \ MOVNTQ " %%mm4, 24 (%1);" /* Store ARGB7 ARGB6 */ \ @@ -459,7 +479,7 @@ static inline int RENAME(yuv420_rgb32)(SwsContext *c, uint8_t* src[], int srcStr YUV2RGB_INIT YUV2RGB "pcmpeqd %%mm3, %%mm3;" /* fill mm3 */ - RGB_PLANAR2PACKED32 + RGB_PLANAR2PACKED32(REG_RED,REG_GREEN,REG_BLUE,REG_ALPHA) YUV2RGB_ENDLOOP(4) YUV2RGB_OPERANDS @@ -476,7 +496,41 @@ static inline int RENAME(yuva420_rgb32)(SwsContext *c, uint8_t* src[], int srcSt YUV2RGB_INIT YUV2RGB "movq (%6, %0, 2), %%mm3;" /* Load 8 A A7 A6 A5 A4 A3 A2 A1 A0 */ - RGB_PLANAR2PACKED32 + RGB_PLANAR2PACKED32(REG_RED,REG_GREEN,REG_BLUE,REG_ALPHA) + + YUV2RGB_ENDLOOP(4) + YUV2RGB_OPERANDS_ALPHA +#endif +} + +static inline int RENAME(yuv420_bgr32)(SwsContext *c, const uint8_t* src[], int srcStride[], int srcSliceY, + int srcSliceH, uint8_t* dst[], int dstStride[]){ + int y, h_size; + + YUV422_UNSHIFT + YUV2RGB_LOOP(4) + + YUV2RGB_INIT + YUV2RGB + "pcmpeqd %%mm3, %%mm3;" /* fill mm3 */ + RGB_PLANAR2PACKED32(REG_BLUE,REG_GREEN,REG_RED,REG_ALPHA) + + YUV2RGB_ENDLOOP(4) + YUV2RGB_OPERANDS +} + +static inline int RENAME(yuva420_bgr32)(SwsContext *c, const uint8_t* src[], int srcStride[], int srcSliceY, + int srcSliceH, uint8_t* dst[], int dstStride[]){ +#if HAVE_7REGS + int y, h_size; + + YUV2RGB_LOOP(4) + + uint8_t *pa = src[3] + y*srcStride[3]; + YUV2RGB_INIT + YUV2RGB + "movq (%6, %0, 2), %%mm3;" /* Load 8 A A7 A6 A5 A4 A3 A2 A1 A0 */ + RGB_PLANAR2PACKED32(REG_BLUE,REG_GREEN,REG_RED,REG_ALPHA) YUV2RGB_ENDLOOP(4) YUV2RGB_OPERANDS_ALPHA From b3506ab290d655ac9f7a0d7641edc2980c4e07dd Mon Sep 17 00:00:00 2001 From: cehoyos Date: Fri, 14 Aug 2009 09:31:16 +0000 Subject: [PATCH 61/77] Allow compilation with gcc 2.95.3 if videodev2.h does not support it. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29516 b3059339-0415-0410-9bf9-f77b7e298cf2 --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index 03d92c9253..1c60c1dcdd 100755 --- a/configure +++ b/configure @@ -7692,7 +7692,7 @@ if test "$_pvr" = auto ; then #include #include #include -int main(void) { struct v4l2_ext_controls ext; return 0; } +int main(void) { struct v4l2_ext_controls ext; return ext.controls->value; } EOF cc_check && _pvr=yes fi From 15fb97be65657f4c52a289b24f6302f4817b5bb5 Mon Sep 17 00:00:00 2001 From: ramiro Date: Fri, 14 Aug 2009 15:52:40 +0000 Subject: [PATCH 62/77] Vertical yuv -> yuv16 scaler. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29517 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libswscale/swscale.c | 81 +++++++++++++++++++++++++++++++++++ libswscale/swscale_template.c | 20 +++++++++ 2 files changed, 101 insertions(+) diff --git a/libswscale/swscale.c b/libswscale/swscale.c index 5743e7104d..c513066b25 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -74,6 +74,7 @@ untested special converters #include "swscale.h" #include "swscale_internal.h" #include "rgb2rgb.h" +#include "libavutil/intreadwrite.h" #include "libavutil/x86_cpu.h" #include "libavutil/bswap.h" @@ -474,6 +475,86 @@ const char *sws_format_name(enum PixelFormat format) } } +static av_always_inline void yuv2yuvX16inC_template(const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize, + const int16_t *chrFilter, const int16_t **chrSrc, int chrFilterSize, + const int16_t **alpSrc, uint16_t *dest, uint16_t *uDest, uint16_t *vDest, uint16_t *aDest, + int dstW, int chrDstW, int big_endian) +{ + //FIXME Optimize (just quickly written not optimized..) + int i; + + for (i = 0; i < dstW; i++) { + int val = 1 << 10; + int j; + + for (j = 0; j < lumFilterSize; j++) + val += lumSrc[j][i] * lumFilter[j]; + + if (big_endian) { + AV_WB16(&dest[i], av_clip_uint16(val >> 11)); + } else { + AV_WL16(&dest[i], av_clip_uint16(val >> 11)); + } + } + + if (uDest) { + for (i = 0; i < chrDstW; i++) { + int u = 1 << 10; + int v = 1 << 10; + int j; + + for (j = 0; j < chrFilterSize; j++) { + u += chrSrc[j][i ] * chrFilter[j]; + v += chrSrc[j][i + VOFW] * chrFilter[j]; + } + + if (big_endian) { + AV_WB16(&uDest[i], av_clip_uint16(u >> 11)); + AV_WB16(&vDest[i], av_clip_uint16(v >> 11)); + } else { + AV_WL16(&uDest[i], av_clip_uint16(u >> 11)); + AV_WL16(&vDest[i], av_clip_uint16(v >> 11)); + } + } + } + + if (CONFIG_SWSCALE_ALPHA && aDest) { + for (i = 0; i < dstW; i++) { + int val = 1 << 10; + int j; + + for (j = 0; j < lumFilterSize; j++) + val += alpSrc[j][i] * lumFilter[j]; + + if (big_endian) { + AV_WB16(&aDest[i], av_clip_uint16(val >> 11)); + } else { + AV_WL16(&aDest[i], av_clip_uint16(val >> 11)); + } + } + } +} + +static inline void yuv2yuvX16inC(const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize, + const int16_t *chrFilter, const int16_t **chrSrc, int chrFilterSize, + const int16_t **alpSrc, uint16_t *dest, uint16_t *uDest, uint16_t *vDest, uint16_t *aDest, int dstW, int chrDstW, + enum PixelFormat dstFormat) +{ + if (isBE(dstFormat)) { + yuv2yuvX16inC_template(lumFilter, lumSrc, lumFilterSize, + chrFilter, chrSrc, chrFilterSize, + alpSrc, + dest, uDest, vDest, aDest, + dstW, chrDstW, 1); + } else { + yuv2yuvX16inC_template(lumFilter, lumSrc, lumFilterSize, + chrFilter, chrSrc, chrFilterSize, + alpSrc, + dest, uDest, vDest, aDest, + dstW, chrDstW, 0); + } +} + static inline void yuv2yuvXinC(const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize, const int16_t *chrFilter, const int16_t **chrSrc, int chrFilterSize, const int16_t **alpSrc, uint8_t *dest, uint8_t *uDest, uint8_t *vDest, uint8_t *aDest, int dstW, int chrDstW) diff --git a/libswscale/swscale_template.c b/libswscale/swscale_template.c index d1177f598e..14957dc656 100644 --- a/libswscale/swscale_template.c +++ b/libswscale/swscale_template.c @@ -2813,6 +2813,15 @@ static int RENAME(swScale)(SwsContext *c, uint8_t* src[], int srcStride[], int s { const int chrSkipMask= (1<chrDstVSubSample)-1; if ((dstY&chrSkipMask) || isGray(dstFormat)) uDest=vDest= NULL; //FIXME split functions in lumi / chromi + if (is16BPS(dstFormat)) + { + yuv2yuvX16inC( + vLumFilter+dstY*vLumFilterSize , lumSrcPtr, vLumFilterSize, + vChrFilter+chrDstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, + alpSrcPtr, (uint16_t *) dest, (uint16_t *) uDest, (uint16_t *) vDest, (uint16_t *) aDest, dstW, chrDstW, + dstFormat); + } + else if (vLumFilterSize == 1 && vChrFilterSize == 1) // unscaled YV12 { int16_t *lumBuf = lumPixBuf[0]; @@ -2898,10 +2907,21 @@ static int RENAME(swScale)(SwsContext *c, uint8_t* src[], int srcStride[], int s { const int chrSkipMask= (1<chrDstVSubSample)-1; if ((dstY&chrSkipMask) || isGray(dstFormat)) uDest=vDest= NULL; //FIXME split functions in lumi / chromi + if (is16BPS(dstFormat)) + { + yuv2yuvX16inC( + vLumFilter+dstY*vLumFilterSize , lumSrcPtr, vLumFilterSize, + vChrFilter+chrDstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, + alpSrcPtr, (uint16_t *) dest, (uint16_t *) uDest, (uint16_t *) vDest, (uint16_t *) aDest, dstW, chrDstW, + dstFormat); + } + else + { yuv2yuvXinC( vLumFilter+dstY*vLumFilterSize , lumSrcPtr, vLumFilterSize, vChrFilter+chrDstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, alpSrcPtr, dest, uDest, vDest, aDest, dstW, chrDstW); + } } else { From ca774579f7e765f58c8f60b1f78bfc4e103a4b1b Mon Sep 17 00:00:00 2001 From: ramiro Date: Sat, 15 Aug 2009 02:35:55 +0000 Subject: [PATCH 63/77] Indent. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29518 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libswscale/swscale_template.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libswscale/swscale_template.c b/libswscale/swscale_template.c index 14957dc656..4681d42995 100644 --- a/libswscale/swscale_template.c +++ b/libswscale/swscale_template.c @@ -2917,10 +2917,10 @@ static int RENAME(swScale)(SwsContext *c, uint8_t* src[], int srcStride[], int s } else { - yuv2yuvXinC( - vLumFilter+dstY*vLumFilterSize , lumSrcPtr, vLumFilterSize, - vChrFilter+chrDstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, - alpSrcPtr, dest, uDest, vDest, aDest, dstW, chrDstW); + yuv2yuvXinC( + vLumFilter+dstY*vLumFilterSize , lumSrcPtr, vLumFilterSize, + vChrFilter+chrDstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, + alpSrcPtr, dest, uDest, vDest, aDest, dstW, chrDstW); } } else From f868c2ca36db34b8f10d91d94428723a3a429b1f Mon Sep 17 00:00:00 2001 From: jrash Date: Sat, 15 Aug 2009 02:55:54 +0000 Subject: [PATCH 64/77] improve previous translation git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29519 b3059339-0415-0410-9bf9-f77b7e298cf2 --- help/help_mp-zh_CN.h | 576 +++++++++++++++++++++---------------------- 1 file changed, 288 insertions(+), 288 deletions(-) diff --git a/help/help_mp-zh_CN.h b/help/help_mp-zh_CN.h index 263f3668aa..8fc43fd1e9 100644 --- a/help/help_mp-zh_CN.h +++ b/help/help_mp-zh_CN.h @@ -1,4 +1,4 @@ -// Synced with help_mp-en.h r29209 (MSGTR_SaveSlotTooOld) +// Synced with help_mp-en.h r29209 (MSGTR_LIBVO_VESA_YouShouldSee5OemRelatedLines) // Reminder of hard terms which need better/final solution later: // (file links to be updated later if available!); // NAV; section/subsection; XScreenSaver; keycolor; @@ -500,26 +500,26 @@ static const char help_text[]= #define MSGTR_NoFileGiven "没有给出文件\n" // m_config.c -#define MSGTR_SaveSlotTooOld "保存从 lvl %d 里找到的 slot 太旧: %d !!!\n" +#define MSGTR_SaveSlotTooOld "第 %d 级里找到的保存位置太旧:%d!!!\n" #define MSGTR_InvalidCfgfileOption "选项 %s 不能在配置文件里使用。\n" #define MSGTR_InvalidCmdlineOption "选项 %s 不能在命令行里使用。\n" -#define MSGTR_InvalidSuboption "错误: 选项 '%s' 没有子选项 '%s'。\n" -#define MSGTR_MissingSuboptionParameter "错误: 子选项 '%s' (属于选项 '%s') 必须要有一个参数!\n" -#define MSGTR_MissingOptionParameter "错误: 选项 '%s' 必须要有一个参数!\n" +#define MSGTR_InvalidSuboption "错误:选项‘%s’没有子选项‘%s’。\n" +#define MSGTR_MissingSuboptionParameter "错误:子选项‘%s’(属于选项‘%s’)必须要有一个参数!\n" +#define MSGTR_MissingOptionParameter "错误:选项‘%s’必须要有一个参数!\n" #define MSGTR_OptionListHeader "\n 名字 类型 最小 最大 全局 命令行 配置文件\n\n" -#define MSGTR_TotalOptions "\n总共: %d 个选项\n" -#define MSGTR_ProfileInclusionTooDeep "警告: 配置轮廓(Profile)引用太深。\n" -#define MSGTR_NoProfileDefined "没有定义配置轮廓(Profile)。\n" -#define MSGTR_AvailableProfiles "可用的配置轮廓(Profile):\n" -#define MSGTR_UnknownProfile "未知的配置轮廓(Profile) '%s'。\n" -#define MSGTR_Profile "配置轮廓(Profile) %s: %s\n" +#define MSGTR_TotalOptions "\n总共:%d 个选项\n" +#define MSGTR_ProfileInclusionTooDeep "警告:配置集相互套用的层次太深。\n" +#define MSGTR_NoProfileDefined "未定义配置集。\n" +#define MSGTR_AvailableProfiles "可用的配置集:\n" +#define MSGTR_UnknownProfile "未知配置集‘%s’。\n" +#define MSGTR_Profile "配置集 %s:%s\n" // m_property.c #define MSGTR_PropertyListHeader "\n 名称 类型 最小 最大\n\n" -#define MSGTR_TotalProperties "\n总计: %d 条属性\n" +#define MSGTR_TotalProperties "\n总计:%d 个属性\n" // loader/ldt_keeper.c -#define MSGTR_LOADER_DYLD_Warning "警告: 尝试使用 DLL 编解码器, 但是环境变量\n DYLD_BIND_AT_LAUNCH 未设定。 这很可能造成程序崩溃。\n" +#define MSGTR_LOADER_DYLD_Warning "警告:尝试使用 DLL 编解码器,但是环境变量\n DYLD_BIND_AT_LAUNCH 未设定。 这很可能造成程序崩溃。\n" // ====================== GUI messages/buttons ======================== @@ -534,16 +534,16 @@ static const char help_text[]= #define MSGTR_PlayList "播放列表" #define MSGTR_Equalizer "均衡器" #define MSGTR_ConfigureEqualizer "配置均衡器" -#define MSGTR_SkinBrowser "皮肤浏览器" -#define MSGTR_Network "网络流媒体..." +#define MSGTR_SkinBrowser "界面外观配置浏览器" +#define MSGTR_Network "正传送网络媒体流..." // Note: If you change MSGTR_Preferences please see if it still fits MSGTR_MENU_Preferences #define MSGTR_Preferences "首选项" #define MSGTR_AudioPreferences "音频驱动配置" -#define MSGTR_NoMediaOpened "没有打开媒体" -#define MSGTR_VCDTrack "VCD 轨迹 %d" -#define MSGTR_NoChapter "没有章节" +#define MSGTR_NoMediaOpened "未打开媒体内容" +#define MSGTR_VCDTrack "VCD 数据轨道 %d" +#define MSGTR_NoChapter "无章节" #define MSGTR_Chapter "章节 %d" -#define MSGTR_NoFileLoaded "没有载入文件" +#define MSGTR_NoFileLoaded "未载入文件" // --- buttons --- #define MSGTR_Ok "确定" @@ -552,41 +552,41 @@ static const char help_text[]= #define MSGTR_Remove "删除" #define MSGTR_Clear "清空" #define MSGTR_Config "配置" -#define MSGTR_ConfigDriver "配置驱动" +#define MSGTR_ConfigDriver "配置驱动程序" #define MSGTR_Browse "浏览" // --- error messages --- -#define MSGTR_NEMDB "抱歉, 没有足够的内存用于绘制缓冲。" -#define MSGTR_NEMFMR "抱歉, 没有足够的内存用于菜单渲染。" -#define MSGTR_IDFGCVD "抱歉, 未找到 GUI-兼容的视频输出驱动。" -#define MSGTR_NEEDLAVC "抱歉, 不能用没有重编码的 DXR3/H+ 设备播放 non-MPEG 文件\n请启用 DXR3/H+ 配置盒中的 lavc。" -#define MSGTR_UNKNOWNWINDOWTYPE "发现未知窗口类型 ..." +#define MSGTR_NEMDB "抱歉,没有足够的内存用作绘图缓冲。" +#define MSGTR_NEMFMR "抱歉,没有足够的内存用于菜单渲染。" +#define MSGTR_IDFGCVD "抱歉,未找到与 GUI 兼容的视频输出驱动。" +#define MSGTR_NEEDLAVC "抱歉,未重新编码前不能用你的 DXR3/H+ 设备播放非 MPEG 文件。\n请启用 DXR3/H+ 配置盒中的 lavc 编解码器。" +#define MSGTR_UNKNOWNWINDOWTYPE "发现未知窗口类型..." // --- skin loader error messages -#define MSGTR_SKIN_ERRORMESSAGE "[skin] 皮肤配置文件的 %d: %s行出错" -#define MSGTR_SKIN_WARNING1 "[skin] 警告: 在配置文件的 %d行:\n找到组件 (%s) 但在这之前没有找到 \"section\"" -#define MSGTR_SKIN_WARNING2 "[skin] 警告: 在配置文件的 %d行:\n找到组件 (%s) 但在这之前没有找到 \"subsection\"" -#define MSGTR_SKIN_WARNING3 "[skin] 警告: 在配置文件的 %d行:\n组件 (%s) 不支持此 subsection" -#define MSGTR_SKIN_SkinFileNotFound "[skin] 文件 (%s) 没找到。\n" -#define MSGTR_SKIN_SkinFileNotReadable "[skin] 文件 (%s) 不可读。\n" -#define MSGTR_SKIN_BITMAP_16bit "不支持少于 16 比特色深的位图 (%s)。\n" -#define MSGTR_SKIN_BITMAP_FileNotFound "找不到文件 (%s)\n" -#define MSGTR_SKIN_BITMAP_BMPReadError "BMP 读取错误 (%s)\n" -#define MSGTR_SKIN_BITMAP_TGAReadError "TGA 读取错误 (%s)\n" -#define MSGTR_SKIN_BITMAP_PNGReadError "PNG 读取错误 (%s)\n" -#define MSGTR_SKIN_BITMAP_RLENotSupported "不支持 RLE 格式压缩的 TGA (%s)\n" -#define MSGTR_SKIN_BITMAP_UnknownFileType "未知的文件格式 (%s)\n" -#define MSGTR_SKIN_BITMAP_ConversionError "24 比特到 32 比特的转换发生错误 (%s)\n" -#define MSGTR_SKIN_BITMAP_UnknownMessage "未知信息: %s\n" +#define MSGTR_SKIN_ERRORMESSAGE "[界面外观] 界面外观配置文件错误,行 %d:%s" +#define MSGTR_SKIN_WARNING1 "[界面外观] 警告:配置文件行 %d:\n找到组件(%s),但在其之前没有找到“section”的内容" +#define MSGTR_SKIN_WARNING2 "[界面外观] 警告: 配置文件行 %d:\n找到组件(%s),但在其之前没有找到“subsection”的内容" +#define MSGTR_SKIN_WARNING3 "[界面外观] 警告: 配置文件行 %d:\n组件(%s)不支持该 subsection" +#define MSGTR_SKIN_SkinFileNotFound "[界面外观] 未找到文件(%s)。\n" +#define MSGTR_SKIN_SkinFileNotReadable "[界面外观] 无法读取文件(%s)。\n" +#define MSGTR_SKIN_BITMAP_16bit "不支持少于或等于 16 比特颜色精度的位图(%s)。\n" +#define MSGTR_SKIN_BITMAP_FileNotFound "未找到文件(%s)\n" +#define MSGTR_SKIN_BITMAP_BMPReadError "BMP 读取错误(%s)\n" +#define MSGTR_SKIN_BITMAP_TGAReadError "TGA 读取错误(%s)\n" +#define MSGTR_SKIN_BITMAP_PNGReadError "PNG 读取错误(%s)\n" +#define MSGTR_SKIN_BITMAP_RLENotSupported "不支持 RLE 方式压缩的 TGA(%s)\n" +#define MSGTR_SKIN_BITMAP_UnknownFileType "未知文件类型(%s)\n" +#define MSGTR_SKIN_BITMAP_ConversionError "24 比特至 32 比特转换出错(%s)\n" +#define MSGTR_SKIN_BITMAP_UnknownMessage "未知信息:%s\n" #define MSGTR_SKIN_FONT_NotEnoughtMemory "内存不够\n" -#define MSGTR_SKIN_FONT_TooManyFontsDeclared "声明字体太多。\n" +#define MSGTR_SKIN_FONT_TooManyFontsDeclared "声明了太多的字体。\n" #define MSGTR_SKIN_FONT_FontFileNotFound "找不到字体文件。\n" #define MSGTR_SKIN_FONT_FontImageNotFound "找不到字体图像文件。\n" -#define MSGTR_SKIN_FONT_NonExistentFontID "不存在的字体标签 (%s)\n" -#define MSGTR_SKIN_UnknownParameter "未知参数 (%s)\n" -#define MSGTR_SKIN_SKINCFG_SkinNotFound "找不到皮肤 (%s)。\n" -#define MSGTR_SKIN_SKINCFG_SelectedSkinNotFound "没找到选定的皮肤 (%s), 试着使用默认的...\n" -#define MSGTR_SKIN_SKINCFG_SkinCfgReadError "皮肤配置文件 (%s) 读取错误。\n" +#define MSGTR_SKIN_FONT_NonExistentFontID "不存在的字体标识符(%s)\n" +#define MSGTR_SKIN_UnknownParameter "未知参数(%s)\n" +#define MSGTR_SKIN_SKINCFG_SkinNotFound "找不到界面外观(%s)。\n" +#define MSGTR_SKIN_SKINCFG_SelectedSkinNotFound "未找到选定的界面外观(%s),尝试使用‘default’参数...\n" +#define MSGTR_SKIN_SKINCFG_SkinCfgReadError "界面外观配置文件(%s)读取错误。\n" #define MSGTR_SKIN_LABEL "Skins:" // --- GTK menus @@ -595,7 +595,7 @@ static const char help_text[]= #define MSGTR_MENU_PlayFile "播放文件..." #define MSGTR_MENU_PlayVCD "播放 VCD..." #define MSGTR_MENU_PlayDVD "播放 DVD..." -#define MSGTR_MENU_PlayURL "播放 URL..." +#define MSGTR_MENU_PlayURL "播放网络链接..." #define MSGTR_MENU_LoadSubtitle "加载字幕..." #define MSGTR_MENU_DropSubtitle "丢弃字幕..." #define MSGTR_MENU_LoadExternAudioFile "加载外部音频文件..." @@ -612,17 +612,17 @@ static const char help_text[]= #define MSGTR_MENU_FullScreen "全屏" #define MSGTR_MENU_DVD "DVD" #define MSGTR_MENU_VCD "VCD" -#define MSGTR_MENU_PlayDisc "打开盘..." +#define MSGTR_MENU_PlayDisc "打开光盘..." #define MSGTR_MENU_ShowDVDMenu "显示 DVD 菜单" -#define MSGTR_MENU_Titles "标题" +#define MSGTR_MENU_Titles "所有标题" #define MSGTR_MENU_Title "标题 %2d" -#define MSGTR_MENU_None "(none)" -#define MSGTR_MENU_Chapters "章节" +#define MSGTR_MENU_None "(无)" +#define MSGTR_MENU_Chapters "所有章节" #define MSGTR_MENU_Chapter "章节 %2d" #define MSGTR_MENU_AudioLanguages "音频语言" #define MSGTR_MENU_SubtitleLanguages "字幕语言" #define MSGTR_MENU_PlayList MSGTR_PlayList -#define MSGTR_MENU_SkinBrowser "皮肤浏览器" +#define MSGTR_MENU_SkinBrowser "界面外观配置浏览器" #define MSGTR_MENU_Preferences MSGTR_Preferences #define MSGTR_MENU_Exit "退出..." #define MSGTR_MENU_Mute "静音" @@ -638,23 +638,23 @@ static const char help_text[]= #define MSGTR_EQU_Audio "音频" // Note: If you change MSGTR_EQU_Video please see if it still fits MSGTR_PREFERENCES_Video #define MSGTR_EQU_Video "视频" -#define MSGTR_EQU_Contrast "对比度: " -#define MSGTR_EQU_Brightness "亮度: " -#define MSGTR_EQU_Hue "色调: " -#define MSGTR_EQU_Saturation "饱和度: " +#define MSGTR_EQU_Contrast "对比度:" +#define MSGTR_EQU_Brightness "亮度:" +#define MSGTR_EQU_Hue "色调:" +#define MSGTR_EQU_Saturation "饱和度:" #define MSGTR_EQU_Front_Left "前左" #define MSGTR_EQU_Front_Right "前右" #define MSGTR_EQU_Back_Left "后左" #define MSGTR_EQU_Back_Right "后右" -#define MSGTR_EQU_Center "中间" -#define MSGTR_EQU_Bass "低音" +#define MSGTR_EQU_Center "中置" +#define MSGTR_EQU_Bass "低音炮" #define MSGTR_EQU_All "所有" -#define MSGTR_EQU_Channel1 "声道 1:" -#define MSGTR_EQU_Channel2 "声道 2:" -#define MSGTR_EQU_Channel3 "声道 3:" -#define MSGTR_EQU_Channel4 "声道 4:" -#define MSGTR_EQU_Channel5 "声道 5:" -#define MSGTR_EQU_Channel6 "声道 6:" +#define MSGTR_EQU_Channel1 "声道 1:" +#define MSGTR_EQU_Channel2 "声道 2:" +#define MSGTR_EQU_Channel3 "声道 3:" +#define MSGTR_EQU_Channel4 "声道 4:" +#define MSGTR_EQU_Channel5 "声道 5:" +#define MSGTR_EQU_Channel6 "声道 6:" // --- playlist #define MSGTR_PLAYLIST_Path "路径" @@ -665,63 +665,63 @@ static const char help_text[]= // --- preferences #define MSGTR_PREFERENCES_Audio MSGTR_EQU_Audio #define MSGTR_PREFERENCES_Video MSGTR_EQU_Video -#define MSGTR_PREFERENCES_SubtitleOSD "字幕和 OSD " -#define MSGTR_PREFERENCES_Codecs "编解码器和分路器" +#define MSGTR_PREFERENCES_SubtitleOSD "字幕和 OSD 菜单" +#define MSGTR_PREFERENCES_Codecs "编解码器和流分离器" // Note: If you change MSGTR_PREFERENCES_Misc see if it still fits MSGTR_PREFERENCES_FRAME_Misc -#define MSGTR_PREFERENCES_Misc "其他" -#define MSGTR_PREFERENCES_None "None" -#define MSGTR_PREFERENCES_DriverDefault "默认驱动" -#define MSGTR_PREFERENCES_AvailableDrivers "可用驱动:" +#define MSGTR_PREFERENCES_Misc "杂项" +#define MSGTR_PREFERENCES_None "无" +#define MSGTR_PREFERENCES_DriverDefault "驱动程序默认配置" +#define MSGTR_PREFERENCES_AvailableDrivers "可用驱动:" #define MSGTR_PREFERENCES_DoNotPlaySound "不播放声音" -#define MSGTR_PREFERENCES_NormalizeSound "声音标准化" +#define MSGTR_PREFERENCES_NormalizeSound "音量规格化" #define MSGTR_PREFERENCES_EnableEqualizer "启用均衡器" #define MSGTR_PREFERENCES_SoftwareMixer "启用软件混音器" #define MSGTR_PREFERENCES_ExtraStereo "启用立体声加强" -#define MSGTR_PREFERENCES_Coefficient "参数:" +#define MSGTR_PREFERENCES_Coefficient "参数:" #define MSGTR_PREFERENCES_AudioDelay "音频延迟" #define MSGTR_PREFERENCES_DoubleBuffer "启用双重缓冲" #define MSGTR_PREFERENCES_DirectRender "启用直接渲染" #define MSGTR_PREFERENCES_FrameDrop "启用丢帧" -#define MSGTR_PREFERENCES_HFrameDrop "启用强制丢帧(危险)" +#define MSGTR_PREFERENCES_HFrameDrop "启用强制丢帧(危险)" #define MSGTR_PREFERENCES_Flip "上下翻转图像" -#define MSGTR_PREFERENCES_Panscan "摇移: " -#define MSGTR_PREFERENCES_OSDTimer "显示计时器和指示器" +#define MSGTR_PREFERENCES_Panscan "全景模式:" +#define MSGTR_PREFERENCES_OSDTimer "计时器和指示器" #define MSGTR_PREFERENCES_OSDProgress "只显示进度条" -#define MSGTR_PREFERENCES_OSDTimerPercentageTotalTime "计时器, 百分比和总时间" -#define MSGTR_PREFERENCES_Subtitle "字幕:" -#define MSGTR_PREFERENCES_SUB_Delay "延迟: " -#define MSGTR_PREFERENCES_SUB_FPS "帧率:" -#define MSGTR_PREFERENCES_SUB_POS "位置: " -#define MSGTR_PREFERENCES_SUB_AutoLoad "停用字幕自动装载" +#define MSGTR_PREFERENCES_OSDTimerPercentageTotalTime "计时器,已播放百分比和总时间" +#define MSGTR_PREFERENCES_Subtitle "字幕:" +#define MSGTR_PREFERENCES_SUB_Delay "延迟:" +#define MSGTR_PREFERENCES_SUB_FPS "帧率:" +#define MSGTR_PREFERENCES_SUB_POS "位置:" +#define MSGTR_PREFERENCES_SUB_AutoLoad "禁止自动装载字幕" #define MSGTR_PREFERENCES_SUB_Unicode "Unicode 字幕" -#define MSGTR_PREFERENCES_SUB_MPSUB "转换给定的字幕成为 MPlayer 的字幕文件" -#define MSGTR_PREFERENCES_SUB_SRT "转换给定的字幕成为基于时间的 SubViewer (SRT) 格式" -#define MSGTR_PREFERENCES_SUB_Overlap "启/停用字幕重叠" -#define MSGTR_PREFERENCES_SUB_USE_ASS "SSA/ASS 字幕提供中" -#define MSGTR_PREFERENCES_SUB_ASS_USE_MARGINS "使用边空白" -#define MSGTR_PREFERENCES_SUB_ASS_TOP_MARGIN "上: " -#define MSGTR_PREFERENCES_SUB_ASS_BOTTOM_MARGIN "下: " -#define MSGTR_PREFERENCES_Font "字体:" -#define MSGTR_PREFERENCES_FontFactor "字体效果:" +#define MSGTR_PREFERENCES_SUB_MPSUB "转换给定的字幕为 MPlayer 字幕格式" +#define MSGTR_PREFERENCES_SUB_SRT "转换给定的字幕为基于时间戳的 SubViewer (SRT) 格式" +#define MSGTR_PREFERENCES_SUB_Overlap "开关字幕重叠模式" +#define MSGTR_PREFERENCES_SUB_USE_ASS "渲染 SSA/ASS 字幕" +#define MSGTR_PREFERENCES_SUB_ASS_USE_MARGINS "使用留边" +#define MSGTR_PREFERENCES_SUB_ASS_TOP_MARGIN "底部:" +#define MSGTR_PREFERENCES_SUB_ASS_BOTTOM_MARGIN "底部:" +#define MSGTR_PREFERENCES_Font "字体:" +#define MSGTR_PREFERENCES_FontFactor "字体参数:" #define MSGTR_PREFERENCES_PostProcess "启用后期处理" -#define MSGTR_PREFERENCES_AutoQuality "自动品质控制: " +#define MSGTR_PREFERENCES_AutoQuality "自动控制质量:" #define MSGTR_PREFERENCES_NI "使用非交错的 AVI 解析器" -#define MSGTR_PREFERENCES_IDX "如果需要的话, 重建索引表" -#define MSGTR_PREFERENCES_VideoCodecFamily "视频解码器族:" -#define MSGTR_PREFERENCES_AudioCodecFamily "音频解码器族:" +#define MSGTR_PREFERENCES_IDX "如果需要的话,重建索引表" +#define MSGTR_PREFERENCES_VideoCodecFamily "视频编解码器族:" +#define MSGTR_PREFERENCES_AudioCodecFamily "音频编解码器族:" #define MSGTR_PREFERENCES_FRAME_OSD_Level "OSD 级别" #define MSGTR_PREFERENCES_FRAME_Subtitle "字幕" #define MSGTR_PREFERENCES_FRAME_Font "字体" #define MSGTR_PREFERENCES_FRAME_PostProcess "后期处理" -#define MSGTR_PREFERENCES_FRAME_CodecDemuxer "编解码器和分路器" -#define MSGTR_PREFERENCES_FRAME_Cache "缓存" +#define MSGTR_PREFERENCES_FRAME_CodecDemuxer "编解码器和流分离器" +#define MSGTR_PREFERENCES_FRAME_Cache "缓冲" #define MSGTR_PREFERENCES_FRAME_Misc MSGTR_PREFERENCES_Misc -#define MSGTR_PREFERENCES_Audio_Device "设备:" -#define MSGTR_PREFERENCES_Audio_Mixer "混音器:" -#define MSGTR_PREFERENCES_Audio_MixerChannel "混音通道:" -#define MSGTR_PREFERENCES_Message "请注意, 有些功能只有重新播放后能生效。" -#define MSGTR_PREFERENCES_DXR3_VENC "视频编码器:" -#define MSGTR_PREFERENCES_DXR3_LAVC "使用 LAVC (FFmpeg)" +#define MSGTR_PREFERENCES_Audio_Device "设备:" +#define MSGTR_PREFERENCES_Audio_Mixer "混音器:" +#define MSGTR_PREFERENCES_Audio_MixerChannel "混音器声道:" +#define MSGTR_PREFERENCES_Message "请注意有些功能只有重启播放后才能生效!" +#define MSGTR_PREFERENCES_DXR3_VENC "视频编解码器:" +#define MSGTR_PREFERENCES_DXR3_LAVC "使用 LAVC(FFmpeg)" #define MSGTR_PREFERENCES_FontEncoding1 "Unicode" #define MSGTR_PREFERENCES_FontEncoding2 "西欧(ISO-8859-1)" #define MSGTR_PREFERENCES_FontEncoding3 "西欧(ISO-8859-15)" @@ -746,83 +746,83 @@ static const char help_text[]= #define MSGTR_PREFERENCES_FontEncoding22 "Windows 的西里尔/中欧语(CP1250)" #define MSGTR_PREFERENCES_FontEncoding23 "Windows 的阿拉伯语(CP1256)" #define MSGTR_PREFERENCES_FontNoAutoScale "不自动缩放" -#define MSGTR_PREFERENCES_FontPropWidth "宽度成比例" -#define MSGTR_PREFERENCES_FontPropHeight "高度成比例" -#define MSGTR_PREFERENCES_FontPropDiagonal "对角线成比例" -#define MSGTR_PREFERENCES_FontEncoding "编码:" -#define MSGTR_PREFERENCES_FontBlur "模糊:" -#define MSGTR_PREFERENCES_FontOutLine "轮廓:" -#define MSGTR_PREFERENCES_FontTextScale "文字缩放:" -#define MSGTR_PREFERENCES_FontOSDScale "OSD 缩放:" -#define MSGTR_PREFERENCES_Cache "打开/关闭缓存" -#define MSGTR_PREFERENCES_CacheSize "缓存大小: " +#define MSGTR_PREFERENCES_FontPropWidth "与影片宽度相称" +#define MSGTR_PREFERENCES_FontPropHeight "与影片高度相称" +#define MSGTR_PREFERENCES_FontPropDiagonal "与影片对角线相称" +#define MSGTR_PREFERENCES_FontEncoding "编码:" +#define MSGTR_PREFERENCES_FontBlur "模糊:" +#define MSGTR_PREFERENCES_FontOutLine "轮廓:" +#define MSGTR_PREFERENCES_FontTextScale "文字缩放:" +#define MSGTR_PREFERENCES_FontOSDScale "OSD 缩放:" +#define MSGTR_PREFERENCES_Cache "启用/禁用缓存" +#define MSGTR_PREFERENCES_CacheSize "缓存大小:" #define MSGTR_PREFERENCES_LoadFullscreen "以全屏方式启动" #define MSGTR_PREFERENCES_SaveWinPos "保存窗口位置" -#define MSGTR_PREFERENCES_XSCREENSAVER "停用屏保(XScreenSaver)" -#define MSGTR_PREFERENCES_PlayBar "使用播放条" -#define MSGTR_PREFERENCES_AutoSync "自同步 打开/关闭" -#define MSGTR_PREFERENCES_AutoSyncValue "自同步: " -#define MSGTR_PREFERENCES_CDROMDevice "CD-ROM 设备:" -#define MSGTR_PREFERENCES_DVDDevice "DVD 设备:" -#define MSGTR_PREFERENCES_FPS "电影的帧率:" -#define MSGTR_PREFERENCES_ShowVideoWindow "在非激活状态下显示视频窗口" -#define MSGTR_PREFERENCES_ArtsBroken "新版 aRts 与 GTK 1.x 不兼容, "\ - "会使 GMPlayer 崩溃!" +#define MSGTR_PREFERENCES_XSCREENSAVER "停用 XScreenSaver 屏保" +#define MSGTR_PREFERENCES_PlayBar "启用播放条" +#define MSGTR_PREFERENCES_AutoSync "启用/禁用自动同步" +#define MSGTR_PREFERENCES_AutoSyncValue "自动同步:" +#define MSGTR_PREFERENCES_CDROMDevice "CD-ROM 设备:" +#define MSGTR_PREFERENCES_DVDDevice "DVD 设备:" +#define MSGTR_PREFERENCES_FPS "电影帧率:" +#define MSGTR_PREFERENCES_ShowVideoWindow "当程序窗动未激活时显示视频窗口" +#define MSGTR_PREFERENCES_ArtsBroken "新版 aRts 与 GTK 1.x 不兼容,"\ + "并会使 GMPlayer 崩溃!" // -- aboutbox -#define MSGTR_ABOUT_UHU "GUI 开发由 UHU Linux 赞助\n" +#define MSGTR_ABOUT_UHU "GUI 的开发由 UHU Linux 赞助\n" #define MSGTR_ABOUT_Contributors "代码和文档贡献者\n" -#define MSGTR_ABOUT_Codecs_libs_contributions "编解码器和第三方库\n" +#define MSGTR_ABOUT_Codecs_libs_contributions "编解码器和第三方程序库\n" #define MSGTR_ABOUT_Translations "翻译\n" -#define MSGTR_ABOUT_Skins "皮肤\n" +#define MSGTR_ABOUT_Skins "界面外观\n" // --- messagebox -#define MSGTR_MSGBOX_LABEL_FatalError "致命错误!" -#define MSGTR_MSGBOX_LABEL_Error "错误!" -#define MSGTR_MSGBOX_LABEL_Warning "警告!" +#define MSGTR_MSGBOX_LABEL_FatalError "致命错误!" +#define MSGTR_MSGBOX_LABEL_Error "错误!" +#define MSGTR_MSGBOX_LABEL_Warning "警告!" // bitmap.c -#define MSGTR_NotEnoughMemoryC32To1 "[c32to1] 内存不够, 容不下图片\n" -#define MSGTR_NotEnoughMemoryC1To32 "[c1to32] 内存不够, 容不下图片\n" +#define MSGTR_NotEnoughMemoryC32To1 "[c32to1] 用于图像的内存不足\n" +#define MSGTR_NotEnoughMemoryC1To32 "[c1to32] 用于图像的内存不足\n" // cfg.c #define MSGTR_ConfigFileReadError "[cfg] 配置文件读取错误...\n" -#define MSGTR_UnableToSaveOption "[cfg] 无法保存 '%s' 选项。\n" +#define MSGTR_UnableToSaveOption "[cfg] 无法保存‘%s’选项。\n" // interface.c #define MSGTR_DeletingSubtitles "[GUI] 删除字幕。\n" -#define MSGTR_LoadingSubtitles "[GUI] 导入字幕: %s\n" -#define MSGTR_AddingVideoFilter "[GUI] 添加视频过滤器: %s\n" -#define MSGTR_RemovingVideoFilter "[GUI] 删除视频过滤器: %s\n" +#define MSGTR_LoadingSubtitles "[GUI] 加载字幕:%s\n" +#define MSGTR_AddingVideoFilter "[GUI] 添加视频滤镜:%s\n" +#define MSGTR_RemovingVideoFilter "[GUI] 删除视频滤锐:%s\n" // mw.c -#define MSGTR_NotAFile "这好像不是文件: %s !\n" +#define MSGTR_NotAFile "这好像不是文件:%s!\n" // ws.c -#define MSGTR_WS_CouldNotOpenDisplay "[ws] 打不开显示。\n" -#define MSGTR_WS_RemoteDisplay "[ws] 远程显示, 停用 XMITSHM。\n" -#define MSGTR_WS_NoXshm "[ws] 抱歉, 你的系统不支持 X 共享内存扩展。\n" -#define MSGTR_WS_NoXshape "[ws] 抱歉, 你的系统不支持 XShape 扩展。\n" -#define MSGTR_WS_ColorDepthTooLow "[ws] 抱歉, 色彩深度太低。\n" +#define MSGTR_WS_CouldNotOpenDisplay "[ws] 无法打开显示界面。\n" +#define MSGTR_WS_RemoteDisplay "[ws] 远程显示界面,禁用 XMITSHM。\n" +#define MSGTR_WS_NoXshm "[ws] 抱歉,你的系统不支持 X 共享内存扩展组件。\n" +#define MSGTR_WS_NoXshape "[ws] 抱歉,你的系统不支持 XShape 扩展组件。\n" +#define MSGTR_WS_ColorDepthTooLow "[ws] 抱歉,色彩深度太低。\n" #define MSGTR_WS_TooManyOpenWindows "[ws] 打开窗口太多。\n" -#define MSGTR_WS_ShmError "[ws] 共享内存扩展错误\n" -#define MSGTR_WS_NotEnoughMemoryDrawBuffer "[ws] 抱歉, 内存不够绘制缓冲。\n" -#define MSGTR_WS_DpmsUnavailable "DPMS 不可用?\n" -#define MSGTR_WS_DpmsNotEnabled "不能启用 DPMS。\n" +#define MSGTR_WS_ShmError "[ws] 共享内存扩展组件错误\n" +#define MSGTR_WS_NotEnoughMemoryDrawBuffer "[ws] 抱歉,内存不足以用于绘制缓冲。\n" +#define MSGTR_WS_DpmsUnavailable "DPMS 不可用?\n" +#define MSGTR_WS_DpmsNotEnabled "无法启用 DPMS。\n" // wsxdnd.c #define MSGTR_WS_NotAFile "这好像不是一个文件...\n" -#define MSGTR_WS_DDNothing "D&D: 没有任何东西返回!\n" +#define MSGTR_WS_DDNothing "D&D:未返回任何东西!\n" // ======================= video output drivers ======================== -#define MSGTR_VOincompCodec "选定的视频输出设备和这个编解码器不兼容。\n"\ +#define MSGTR_VOincompCodec "所选的视频输出设备与该编解码器不兼容。\n"\ "请尝试在滤镜列表尾部添加缩放滤镜,\n"\ - "例如用 -vf spp,scale 代替 -vf spp。\n" -#define MSGTR_VO_GenericError "这个错误已经发生" + "例如,用 -vf spp,scale 代替 -vf spp。\n" +#define MSGTR_VO_GenericError "该错误已经发生" #define MSGTR_VO_UnableToAccess "无法访问" -#define MSGTR_VO_ExistsButNoDirectory "已经存在, 但不是一个目录。" -#define MSGTR_VO_DirExistsButNotWritable "输出目录已经存在, 但是不可写。" +#define MSGTR_VO_ExistsButNoDirectory "已经存在,但不是一个目录。" +#define MSGTR_VO_DirExistsButNotWritable "输出目录已经存在,但是不可写。" #define MSGTR_VO_DirExistsAndIsWritable "输出目录已经存在并且可写。" #define MSGTR_VO_CantCreateDirectory "无法创建输出目录。" #define MSGTR_VO_CantCreateFile "无法创建输出文件。" @@ -830,20 +830,20 @@ static const char help_text[]= #define MSGTR_VO_ParsingSuboptions "解析子选项。" #define MSGTR_VO_SuboptionsParsedOK "子选项解析成功。" #define MSGTR_VO_ValueOutOfRange "值超出范围" -#define MSGTR_VO_NoValueSpecified "没有指定值。" +#define MSGTR_VO_NoValueSpecified "未指定值。" #define MSGTR_VO_UnknownSuboptions "未知子选项" // aspect.c -#define MSGTR_LIBVO_ASPECT_NoSuitableNewResFound "[ASPECT] 警告: 无法找到新的合适的分辨率!\n" -#define MSGTR_LIBVO_ASPECT_NoNewSizeFoundThatFitsIntoRes "[ASPECT] 错误: 无法找到适合分辨率的新尺寸!\n" +#define MSGTR_LIBVO_ASPECT_NoSuitableNewResFound "[ASPECT] 警告:无法找到新的合适的分辨率!\n" +#define MSGTR_LIBVO_ASPECT_NoNewSizeFoundThatFitsIntoRes "[ASPECT] 错误:无法找到适合分辨率的新尺寸!\n" // font_load_ft.c #define MSGTR_LIBVO_FONT_LOAD_FT_NewFaceFailed "调用 New_Face 失败。可能字体文件的路径不对。\n请提供文本字体文件(~/.mplayer/subfont.tt)。\n" #define MSGTR_LIBVO_FONT_LOAD_FT_NewMemoryFaceFailed "调用 New_Memory_Face 失败。\n" #define MSGTR_LIBVO_FONT_LOAD_FT_SubFaceFailed "字幕字体:调用 load_sub_face 失败。\n" #define MSGTR_LIBVO_FONT_LOAD_FT_SubFontCharsetFailed "字幕字体:调用 prepare_charset 失败。\n" -#define MSGTR_LIBVO_FONT_LOAD_FT_CannotPrepareSubtitleFont "无法准备好字幕字体。\n" -#define MSGTR_LIBVO_FONT_LOAD_FT_CannotPrepareOSDFont "无法准备好 OSD 字体。\n" +#define MSGTR_LIBVO_FONT_LOAD_FT_CannotPrepareSubtitleFont "无法设置字幕字体。\n" +#define MSGTR_LIBVO_FONT_LOAD_FT_CannotPrepareOSDFont "无法设置 OSD 字体。\n" #define MSGTR_LIBVO_FONT_LOAD_FT_CannotGenerateTables "无法生成映射表。\n" #define MSGTR_LIBVO_FONT_LOAD_FT_DoneFreeTypeFailed "调用 FT_Done_FreeType 失败。\n" @@ -852,7 +852,7 @@ static const char help_text[]= #define MSGTR_VO_SUB_Play "播放" #define MSGTR_VO_SUB_Pause "暂停" #define MSGTR_VO_SUB_Stop "停止" -#define MSGTR_VO_SUB_Rewind "后退" +#define MSGTR_VO_SUB_Rewind "倒回" #define MSGTR_VO_SUB_Forward "快进" #define MSGTR_VO_SUB_Clock "计时" #define MSGTR_VO_SUB_Contrast "对比度" @@ -863,187 +863,187 @@ static const char help_text[]= #define MSGTR_VO_SUB_Balance "均衡" // vo_3dfx.c -#define MSGTR_LIBVO_3DFX_Only16BppSupported "[VO_3DFX] 只支持 16bpp!" -#define MSGTR_LIBVO_3DFX_VisualIdIs "[VO_3DFX] 可视 ID 是 %lx。\n" +#define MSGTR_LIBVO_3DFX_Only16BppSupported "[VO_3DFX] 只支持 16bpp!" +#define MSGTR_LIBVO_3DFX_VisualIdIs "[VO_3DFX] 可视化 ID 是 %lx。\n" #define MSGTR_LIBVO_3DFX_UnableToOpenDevice "[VO_3DFX] 无法打开 /dev/3dfx。\n" -#define MSGTR_LIBVO_3DFX_Error "[VO_3DFX] 错误: %d。\n" -#define MSGTR_LIBVO_3DFX_CouldntMapMemoryArea "[VO_3DFX] 没能映射 3dfx 内存区域: %p,%p,%d。\n" -#define MSGTR_LIBVO_3DFX_DisplayInitialized "[VO_3DFX] 初始化: %p。\n" -#define MSGTR_LIBVO_3DFX_UnknownSubdevice "[VO_3DFX] 未知子设备: %s。\n" +#define MSGTR_LIBVO_3DFX_Error "[VO_3DFX] 错误:%d。\n" +#define MSGTR_LIBVO_3DFX_CouldntMapMemoryArea "[VO_3DFX] 未能映射 3dfx 内存区域:%p,%p,%d。\n" +#define MSGTR_LIBVO_3DFX_DisplayInitialized "[VO_3DFX] 初始化完毕:%p。\n" +#define MSGTR_LIBVO_3DFX_UnknownSubdevice "[VO_3DFX] 未知子设备:%s。\n" // vo_aa.c -#define MSGTR_VO_AA_HelpHeader "\n\n这是 aalib vo_aa 子选项:\n" -#define MSGTR_VO_AA_AdditionalOptions "vo_aa 提供的附加选项:\n" \ +#define MSGTR_VO_AA_HelpHeader "\n\n以下是 aalib vo_aa 的子选项:\n" +#define MSGTR_VO_AA_AdditionalOptions "vo_aa 提供的附加选项:\n" \ " help 显示此帮助信息\n" \ " osdcolor 设定 OSD 颜色\n subcolor 设定字幕颜色\n" \ -" 颜色参数有:\n 0 : 一般\n" \ -" 1 : 模糊\n 2 : 粗\n 3 : 粗字体\n" \ -" 4 : 反色\n 5 : 特殊\n\n\n" +" 颜色参数有:\n 0 :标准\n" \ +" 1 :模糊\n 2 :加粗\n 3 :字体加粗\n" \ +" 4 :反色\n 5 :特殊\n\n\n" // vo_dxr3.c -#define MSGTR_LIBVO_DXR3_UnableToLoadNewSPUPalette "[VO_DXR3] 无法载入新的 SPU 调色板!\n" -#define MSGTR_LIBVO_DXR3_UnableToSetPlaymode "[VO_DXR3] 无法设置播放模式!\n" -#define MSGTR_LIBVO_DXR3_UnableToSetSubpictureMode "[VO_DXR3] 无法设置 subpicture 模式!\n" -#define MSGTR_LIBVO_DXR3_UnableToGetTVNorm "[VO_DXR3] 无法获取电视制式!\n" -#define MSGTR_LIBVO_DXR3_AutoSelectedTVNormByFrameRate "[VO_DXR3] 利用帧速率自动选择电视制式: " -#define MSGTR_LIBVO_DXR3_UnableToSetTVNorm "[VO_DXR3] 无法设置电视制式!\n" -#define MSGTR_LIBVO_DXR3_SettingUpForNTSC "[VO_DXR3] 设置 NTSC。\n" -#define MSGTR_LIBVO_DXR3_SettingUpForPALSECAM "[VO_DXR3] 设置 PAL/SECAM。\n" +#define MSGTR_LIBVO_DXR3_UnableToLoadNewSPUPalette "[VO_DXR3] 无法载入新的 SPU 调色板!\n" +#define MSGTR_LIBVO_DXR3_UnableToSetPlaymode "[VO_DXR3] 无法设置播放模式!\n" +#define MSGTR_LIBVO_DXR3_UnableToSetSubpictureMode "[VO_DXR3] 无法设置字幕模式!\n" +#define MSGTR_LIBVO_DXR3_UnableToGetTVNorm "[VO_DXR3] 无法获取电视制式!\n" +#define MSGTR_LIBVO_DXR3_AutoSelectedTVNormByFrameRate "[VO_DXR3] 根据帧速率自动选择电视制式:" +#define MSGTR_LIBVO_DXR3_UnableToSetTVNorm "[VO_DXR3] 无法设置电视制式!\n" +#define MSGTR_LIBVO_DXR3_SettingUpForNTSC "[VO_DXR3] 设置为 NTSC 模式。\n" +#define MSGTR_LIBVO_DXR3_SettingUpForPALSECAM "[VO_DXR3] 设置为 PAL/SECAM 模式。\n" #define MSGTR_LIBVO_DXR3_SettingAspectRatioTo43 "[VO_DXR3] 宽高比设为 4:3。\n" #define MSGTR_LIBVO_DXR3_SettingAspectRatioTo169 "[VO_DXR3] 宽高比设为 16:9。\n" #define MSGTR_LIBVO_DXR3_OutOfMemory "[VO_DXR3] 内存耗尽\n" -#define MSGTR_LIBVO_DXR3_UnableToAllocateKeycolor "[VO_DXR3] 无法分配 keycolor!\n" -#define MSGTR_LIBVO_DXR3_UnableToAllocateExactKeycolor "[VO_DXR3] 无法精确分配 keycolor, 使用最接近的匹配 (0x%lx)。\n" -#define MSGTR_LIBVO_DXR3_Uninitializing "[VO_DXR3] 反初始化(释放资源)。\n" -#define MSGTR_LIBVO_DXR3_FailedRestoringTVNorm "[VO_DXR3] 恢复电视制式失败!\n" -#define MSGTR_LIBVO_DXR3_EnablingPrebuffering "[VO_DXR3] 启用预缓冲。\n" +#define MSGTR_LIBVO_DXR3_UnableToAllocateKeycolor "[VO_DXR3] 无法分配关键色!\n" +#define MSGTR_LIBVO_DXR3_UnableToAllocateExactKeycolor "[VO_DXR3] 无法精确分配关键色,使用最接近的匹配(0x%lx)。\n" +#define MSGTR_LIBVO_DXR3_Uninitializing "[VO_DXR3] 正在逆初始化。\n" +#define MSGTR_LIBVO_DXR3_FailedRestoringTVNorm "[VO_DXR3] 恢复电视制式失败!\n" +#define MSGTR_LIBVO_DXR3_EnablingPrebuffering "[VO_DXR3] 启用预缓冲模式。\n" #define MSGTR_LIBVO_DXR3_UsingNewSyncEngine "[VO_DXR3] 使用新的同步引擎。\n" -#define MSGTR_LIBVO_DXR3_UsingOverlay "[VO_DXR3] 使用覆盖。\n" -#define MSGTR_LIBVO_DXR3_ErrorYouNeedToCompileMplayerWithX11 "[VO_DXR3] 错误: 覆盖需要安装 X11 的库和头文件后编译。\n" -#define MSGTR_LIBVO_DXR3_WillSetTVNormTo "[VO_DXR3] 将电视制式设置为: " -#define MSGTR_LIBVO_DXR3_AutoAdjustToMovieFrameRatePALPAL60 "自动调节电影的帧速率 (PAL/PAL-60)" -#define MSGTR_LIBVO_DXR3_AutoAdjustToMovieFrameRatePALNTSC "自动调节电影的帧速率 (PAL/NTSC)" +#define MSGTR_LIBVO_DXR3_UsingOverlay "[VO_DXR3] 使用覆盖模式。\n" +#define MSGTR_LIBVO_DXR3_ErrorYouNeedToCompileMplayerWithX11 "[VO_DXR3] 错误:覆盖需要在安装 X11 库和头文件的条件下编译。\n" +#define MSGTR_LIBVO_DXR3_WillSetTVNormTo "[VO_DXR3] 将电视制式设置为:" +#define MSGTR_LIBVO_DXR3_AutoAdjustToMovieFrameRatePALPAL60 "自动调节画面的帧率(PAL/PAL-60)" +#define MSGTR_LIBVO_DXR3_AutoAdjustToMovieFrameRatePALNTSC "自动调节画面的帧率(PAL/NTSC)" #define MSGTR_LIBVO_DXR3_UseCurrentNorm "使用当前制式。" #define MSGTR_LIBVO_DXR3_UseUnknownNormSuppliedCurrentNorm "未知制式,使用当前制式。" -#define MSGTR_LIBVO_DXR3_ErrorOpeningForWritingTrying "[VO_DXR3] 打开 %s 写入错误, 尝试 /dev/em8300。\n" -#define MSGTR_LIBVO_DXR3_ErrorOpeningForWritingTryingMV "[VO_DXR3] 打开 %s 写入错误, 尝试 /dev/em8300_mv。\n" -#define MSGTR_LIBVO_DXR3_ErrorOpeningForWritingAsWell "[VO_DXR3] 打开 /dev/em8300 写入错误!\n跳出。\n" -#define MSGTR_LIBVO_DXR3_ErrorOpeningForWritingAsWellMV "[VO_DXR3] 打开 /dev/em8300_mv 写入错误!\n跳出。\n" -#define MSGTR_LIBVO_DXR3_Opened "[VO_DXR3] 打开: %s。\n" -#define MSGTR_LIBVO_DXR3_ErrorOpeningForWritingTryingSP "[VO_DXR3] 打开 %s 写入错误, 尝试 /dev/em8300_sp。\n" -#define MSGTR_LIBVO_DXR3_ErrorOpeningForWritingAsWellSP "[VO_DXR3] 打开 /dev/em8300_sp 写入错误!\n跳出。\n" -#define MSGTR_LIBVO_DXR3_UnableToOpenDisplayDuringHackSetup "[VO_DXR3] 在 overlay hack 设置中无法打开显示设备!\n" -#define MSGTR_LIBVO_DXR3_UnableToInitX11 "[VO_DXR3] 无法初始化 X11!\n" -#define MSGTR_LIBVO_DXR3_FailedSettingOverlayAttribute "[VO_DXR3] 设置覆盖属性失败。\n" -#define MSGTR_LIBVO_DXR3_FailedSettingOverlayScreen "[VO_DXR3] 设置覆盖屏幕失败!\n退出。\n" -#define MSGTR_LIBVO_DXR3_FailedEnablingOverlay "[VO_DXR3] 启用覆盖失败!\n退出。\n" -#define MSGTR_LIBVO_DXR3_FailedSettingOverlayBcs "[VO_DXR3] 设置 overlay bcs 失败!\n" -#define MSGTR_LIBVO_DXR3_FailedGettingOverlayYOffsetValues "[VO_DXR3] 获取覆盖的 Y-偏移量失败!\n退出。\n" -#define MSGTR_LIBVO_DXR3_FailedGettingOverlayXOffsetValues "[VO_DXR3] 获取覆盖的 X-偏移量失败!\n退出。\n" -#define MSGTR_LIBVO_DXR3_FailedGettingOverlayXScaleCorrection "[VO_DXR3] 获取覆盖的 X-比例校正失败!\n退出。\n" -#define MSGTR_LIBVO_DXR3_YOffset "[VO_DXR3] Y-偏移量: %d。\n" -#define MSGTR_LIBVO_DXR3_XOffset "[VO_DXR3] X-偏移量: %d。\n" -#define MSGTR_LIBVO_DXR3_XCorrection "[VO_DXR3] X-比例校正: %d。\n" -#define MSGTR_LIBVO_DXR3_FailedResizingOverlayWindow "[VO_DXR3] 设置覆盖窗口大小失败!\n" -#define MSGTR_LIBVO_DXR3_FailedSetSignalMix "[VO_DXR3] 设置信号混合失败!\n" +#define MSGTR_LIBVO_DXR3_ErrorOpeningForWritingTrying "[VO_DXR3] 打开 %s 以写入错误,尝试 /dev/em8300。\n" +#define MSGTR_LIBVO_DXR3_ErrorOpeningForWritingTryingMV "[VO_DXR3] 打开 %s 以写入错误,尝试 /dev/em8300_mv。\n" +#define MSGTR_LIBVO_DXR3_ErrorOpeningForWritingAsWell "[VO_DXR3] 打开 /dev/em8300 以写入同样错误!\n跳出。\n" +#define MSGTR_LIBVO_DXR3_ErrorOpeningForWritingAsWellMV "[VO_DXR3] 打开 /dev/em8300_mv 以写入同样错误!\n跳出。\n" +#define MSGTR_LIBVO_DXR3_Opened "[VO_DXR3] 打开:%s。\n" +#define MSGTR_LIBVO_DXR3_ErrorOpeningForWritingTryingSP "[VO_DXR3] 打开 %s 写入错误,尝试 /dev/em8300_sp。\n" +#define MSGTR_LIBVO_DXR3_ErrorOpeningForWritingAsWellSP "[VO_DXR3] 打开 /dev/em8300_sp 以写入同样错误!\n跳出。\n" +#define MSGTR_LIBVO_DXR3_UnableToOpenDisplayDuringHackSetup "[VO_DXR3] 设置覆盖模式破解方式时无法打开显示设备!\n" +#define MSGTR_LIBVO_DXR3_UnableToInitX11 "[VO_DXR3] 无法初始化 X11!\n" +#define MSGTR_LIBVO_DXR3_FailedSettingOverlayAttribute "[VO_DXR3] 设置覆盖模式属性失败。\n" +#define MSGTR_LIBVO_DXR3_FailedSettingOverlayScreen "[VO_DXR3] 设置覆盖屏幕失败!\n退出。\n" +#define MSGTR_LIBVO_DXR3_FailedEnablingOverlay "[VO_DXR3] 启用覆盖模式失败!\n退出。\n" +#define MSGTR_LIBVO_DXR3_FailedSettingOverlayBcs "[VO_DXR3] 设置覆盖模式 bcs 失败!\n" +#define MSGTR_LIBVO_DXR3_FailedGettingOverlayYOffsetValues "[VO_DXR3] 获取覆盖模式的 Y-偏移量失败!\n退出。\n" +#define MSGTR_LIBVO_DXR3_FailedGettingOverlayXOffsetValues "[VO_DXR3] 获取覆盖模式的 X-偏移量失败!\n退出。\n" +#define MSGTR_LIBVO_DXR3_FailedGettingOverlayXScaleCorrection "[VO_DXR3] 获取覆盖模式的 X-比例校正失败!\n退出。\n" +#define MSGTR_LIBVO_DXR3_YOffset "[VO_DXR3] Y-偏移量:%d。\n" +#define MSGTR_LIBVO_DXR3_XOffset "[VO_DXR3] X-偏移量:%d。\n" +#define MSGTR_LIBVO_DXR3_XCorrection "[VO_DXR3] X-比例校正:%d。\n" +#define MSGTR_LIBVO_DXR3_FailedResizingOverlayWindow "[VO_DXR3] 设置覆盖窗口大小失败!\n" +#define MSGTR_LIBVO_DXR3_FailedSetSignalMix "[VO_DXR3] 设置信号混合失败!\n" // vo_jpeg.c #define MSGTR_VO_JPEG_ProgressiveJPEG "启用渐显 JPEG。" #define MSGTR_VO_JPEG_NoProgressiveJPEG "停用渐显 JPEG。" -#define MSGTR_VO_JPEG_BaselineJPEG "启用基线 JPEG。" -#define MSGTR_VO_JPEG_NoBaselineJPEG "停用基线 JPEG。" +#define MSGTR_VO_JPEG_BaselineJPEG "启用基本 JPEG。" +#define MSGTR_VO_JPEG_NoBaselineJPEG "停用基本 JPEG。" // vo_mga.c -#define MSGTR_LIBVO_MGA_AspectResized "[VO_MGA] aspect(): 改变大小为 %dx%d。\n" -#define MSGTR_LIBVO_MGA_Uninit "[VO] 反初始化(释放资源)!\n" +#define MSGTR_LIBVO_MGA_AspectResized "[VO_MGA] aspect():改变大小为 %dx%d。\n" +#define MSGTR_LIBVO_MGA_Uninit "[VO] 反初始化!\n" // mga_common.c -#define MSGTR_LIBVO_MGA_ErrorInConfigIoctl "[MGA] mga_vid_config ioctl 错误 (mga_vid.o 版本错误?)" -#define MSGTR_LIBVO_MGA_CouldNotGetLumaValuesFromTheKernelModule "[MGA] 无法在内核模块中获得 luma 值!\n" -#define MSGTR_LIBVO_MGA_CouldNotSetLumaValuesFromTheKernelModule "[MGA] 无法在内核模块中设置 luma 值!\n" -#define MSGTR_LIBVO_MGA_ScreenWidthHeightUnknown "[MGA] 屏幕宽度/高度未知!\n" +#define MSGTR_LIBVO_MGA_ErrorInConfigIoctl "[MGA] mga_vid_config ioctl 错误(mga_vid.o 版本错误?)" +#define MSGTR_LIBVO_MGA_CouldNotGetLumaValuesFromTheKernelModule "[MGA] 无法在内核模块中获得亮度值!\n" +#define MSGTR_LIBVO_MGA_CouldNotSetLumaValuesFromTheKernelModule "[MGA] 无法在内核模块中设置亮度值!\n" +#define MSGTR_LIBVO_MGA_ScreenWidthHeightUnknown "[MGA] 屏幕宽度/高度未知!\n" #define MSGTR_LIBVO_MGA_InvalidOutputFormat "[MGA] 无效的输出格式 %0X\n" -#define MSGTR_LIBVO_MGA_IncompatibleDriverVersion "[MGA] 你的 mga_vid 驱动版本与 MPlayer 的版本不兼容!\n" -#define MSGTR_LIBVO_MGA_CouldntOpen "[MGA] 打不开: %s\n" -#define MSGTR_LIBVO_MGA_ResolutionTooHigh "[MGA] 原分辨率至少有一维超过了 1023x1023。用软件或用 -lavdopts lowres=1 重新缩放\n" -#define MSGTR_LIBVO_MGA_mgavidVersionMismatch "[MGA] 内核(%u)与 MPlayer(%u)mga_vid 驱动版本号不符。\n" +#define MSGTR_LIBVO_MGA_IncompatibleDriverVersion "[MGA] 你的 mga_vid 驱动版本与该 MPlayer 的版本不兼容!\n" +#define MSGTR_LIBVO_MGA_CouldntOpen "[MGA] 无法打开:%s\n" +#define MSGTR_LIBVO_MGA_ResolutionTooHigh "[MGA] 源分辨率至少有一维超过了 1023x1023。\n[MGA] 需用软件或用 -lavdopts lowres=1 重新缩放。\n" +#define MSGTR_LIBVO_MGA_mgavidVersionMismatch "[MGA] 内核(%u)与 MPlayer(%u)的 mga_vid 驱动版本号不匹配。\n" // vo_null.c -#define MSGTR_LIBVO_NULL_UnknownSubdevice "[VO_NULL] 未知子设备: %s。\n" +#define MSGTR_LIBVO_NULL_UnknownSubdevice "[VO_NULL] 未知子设备:%s。\n" // vo_png.c -#define MSGTR_LIBVO_PNG_Warning1 "[VO_PNG] 警告: 压缩级别设置为 0, 停用压缩!\n" -#define MSGTR_LIBVO_PNG_Warning2 "[VO_PNG] 信息: 使用 -vo png:z= 设置 0 到 9 的压缩级别。\n" -#define MSGTR_LIBVO_PNG_Warning3 "[VO_PNG] 信息: (0 = 不压缩, 1 = 最快,压缩率最低 - 9 最好,最慢的压缩)\n" -#define MSGTR_LIBVO_PNG_ErrorOpeningForWriting "\n[VO_PNG] 打开 '%s' 写入错误!\n" +#define MSGTR_LIBVO_PNG_Warning1 "[VO_PNG] 警告:压缩级别设置为 0,禁用压缩!\n" +#define MSGTR_LIBVO_PNG_Warning2 "[VO_PNG] 信息:使用 -vo png:z= 设置 0 到 9 之间的压缩级别。\n" +#define MSGTR_LIBVO_PNG_Warning3 "[VO_PNG] 信息:(0 = 不压缩,1 = 最快,压缩率最低 - 9 最好,最慢的压缩)\n" +#define MSGTR_LIBVO_PNG_ErrorOpeningForWriting "\n[VO_PNG] 打开‘%s’以写入错误!\n" #define MSGTR_LIBVO_PNG_ErrorInCreatePng "[VO_PNG] create_png 错误。\n" // vo_pnm.c #define MSGTR_VO_PNM_ASCIIMode "启用 ASCII 模式。" -#define MSGTR_VO_PNM_RawMode "启用 Raw 模式。" +#define MSGTR_VO_PNM_RawMode "启用原生模式。" #define MSGTR_VO_PNM_PPMType "将要写入 PPM 文件。" #define MSGTR_VO_PNM_PGMType "将要写入 PGM 文件。" #define MSGTR_VO_PNM_PGMYUVType "将要写入 PGMYUV 文件。" // vo_sdl.c -#define MSGTR_LIBVO_SDL_CouldntGetAnyAcceptableSDLModeForOutput "[VO_SDL] 无法获得可用的 SDL 输出模式。\n" -#define MSGTR_LIBVO_SDL_SetVideoModeFailed "[VO_SDL] set_video_mode: SDL_SetVideoMode 失败: %s。\n" -#define MSGTR_LIBVO_SDL_SetVideoModeFailedFull "[VO_SDL] Set_fullmode: SDL_SetVideoMode 失败: %s。\n" -#define MSGTR_LIBVO_SDL_MappingI420ToIYUV "[VO_SDL] I420 映射到 IYUV。\n" -#define MSGTR_LIBVO_SDL_UnsupportedImageFormat "[VO_SDL] 不支持的图像格式 (0x%X)。\n" +#define MSGTR_LIBVO_SDL_CouldntGetAnyAcceptableSDLModeForOutput "[VO_SDL] 无法获得可接受的 SDL 模式以用于输出。\n" +#define MSGTR_LIBVO_SDL_SetVideoModeFailed "[VO_SDL] set_video_mode:SDL_SetVideoMode 失败:%s。\n" +#define MSGTR_LIBVO_SDL_SetVideoModeFailedFull "[VO_SDL] Set_fullmode:SDL_SetVideoMode 失败:%s。\n" +#define MSGTR_LIBVO_SDL_MappingI420ToIYUV "[VO_SDL] 将 I420 映射到 IYUV。\n" +#define MSGTR_LIBVO_SDL_UnsupportedImageFormat "[VO_SDL] 不支持的图像格式(0x%X)。\n" #define MSGTR_LIBVO_SDL_InfoPleaseUseVmOrZoom "[VO_SDL] 信息 - 请使用 -vm 或 -zoom 切换到最佳分辨率。\n" -#define MSGTR_LIBVO_SDL_FailedToSetVideoMode "[VO_SDL] 设置视频模式失败: %s。\n" -#define MSGTR_LIBVO_SDL_CouldntCreateAYUVOverlay "[VO_SDL] 没能创建 YUV 覆盖: %s。\n" -#define MSGTR_LIBVO_SDL_CouldntCreateARGBSurface "[VO_SDL] 没能创建 RGB 表面: %s。\n" -#define MSGTR_LIBVO_SDL_UsingDepthColorspaceConversion "[VO_SDL] 使用深度/颜色空间转换, 这会减慢速度 (%ibpp -> %ibpp)。\n" -#define MSGTR_LIBVO_SDL_UnsupportedImageFormatInDrawslice "[VO_SDL] draw_slice 不支持的图像格式, 联系 MPlayer 的开发者!\n" -#define MSGTR_LIBVO_SDL_BlitFailed "[VO_SDL] Blit 失败: %s。\n" -#define MSGTR_LIBVO_SDL_InitializationFailed "[VO_SDL] 初始化 SDL 失败: %s。\n" -#define MSGTR_LIBVO_SDL_UsingDriver "[VO_SDL] 使用驱动: %s。\n" +#define MSGTR_LIBVO_SDL_FailedToSetVideoMode "[VO_SDL] 设置视频模式失败:%s。\n" +#define MSGTR_LIBVO_SDL_CouldntCreateAYUVOverlay "[VO_SDL] 未能创建 YUV 覆盖模式:%s。\n" +#define MSGTR_LIBVO_SDL_CouldntCreateARGBSurface "[VO_SDL] 未能创建 RGB 表面图层:%s。\n" +#define MSGTR_LIBVO_SDL_UsingDepthColorspaceConversion "[VO_SDL] 使用深度/颜色空间转换,这会减慢速度(%ibpp -> %ibpp)。\n" +#define MSGTR_LIBVO_SDL_UnsupportedImageFormatInDrawslice "[VO_SDL] draw_slice 不支持的图像格式,请联系 MPlayer 的开发者!\n" +#define MSGTR_LIBVO_SDL_BlitFailed "[VO_SDL] 位块传输失败:%s。\n" +#define MSGTR_LIBVO_SDL_InitializationFailed "[VO_SDL] 初始化 SDL 模式失败: %s。\n" +#define MSGTR_LIBVO_SDL_UsingDriver "[VO_SDL] 使用驱动:%s。\n" // vo_svga.c -#define MSGTR_LIBVO_SVGA_ForcedVidmodeNotAvailable "[VO_SVGA] 锁定的 vid_mode %d (%s) 不可用。\n" -#define MSGTR_LIBVO_SVGA_ForcedVidmodeTooSmall "[VO_SVGA] 锁定的 vid_mode %d (%s) 太小。\n" -#define MSGTR_LIBVO_SVGA_Vidmode "[VO_SVGA] Vid_mode: %d, %dx%d %dbpp。\n" -#define MSGTR_LIBVO_SVGA_VgasetmodeFailed "[VO_SVGA] Vga_setmode(%d) 失败。\n" -#define MSGTR_LIBVO_SVGA_VideoModeIsLinearAndMemcpyCouldBeUsed "[VO_SVGA] 线性的视频模式可以使用 memcpy 操作图像。\n" -#define MSGTR_LIBVO_SVGA_VideoModeHasHardwareAcceleration "[VO_SVGA] 硬件加速的视频模式可以使用 put_image。\n" -#define MSGTR_LIBVO_SVGA_IfItWorksForYouIWouldLikeToKnow "[VO_SVGA] 如果工作正常请告诉我。\n[VO_SVGA] (发送 `mplayer test.avi -v -v -v -v &> svga.log` 生成的日志文件)。谢!\n" -#define MSGTR_LIBVO_SVGA_VideoModeHas "[VO_SVGA] 视频模式有 %d 页。\n" -#define MSGTR_LIBVO_SVGA_CenteringImageStartAt "[VO_SVGA] 图像居中。始于 (%d,%d)\n" -#define MSGTR_LIBVO_SVGA_UsingVidix "[VO_SVGA] 使用 VIDIX. w=%i h=%i mw=%i mh=%i\n" +#define MSGTR_LIBVO_SVGA_ForcedVidmodeNotAvailable "[VO_SVGA] 强制使用的 vid_mode %d(%s)不可用。\n" +#define MSGTR_LIBVO_SVGA_ForcedVidmodeTooSmall "[VO_SVGA] 强制使用的 vid_mode %d(%s)太小。\n" +#define MSGTR_LIBVO_SVGA_Vidmode "[VO_SVGA] Vid_mode:%d,%dx%d %dbpp。\n" +#define MSGTR_LIBVO_SVGA_VgasetmodeFailed "[VO_SVGA] Vga_setmode(%d)失败。\n" +#define MSGTR_LIBVO_SVGA_VideoModeIsLinearAndMemcpyCouldBeUsed "[VO_SVGA] 线性的视频模式,可以使用 memcpy 传输图像。\n" +#define MSGTR_LIBVO_SVGA_VideoModeHasHardwareAcceleration "[VO_SVGA] 硬件加速的视频模式,可以使用 put_image。\n" +#define MSGTR_LIBVO_SVGA_IfItWorksForYouIWouldLikeToKnow "[VO_SVGA] 如果工作正常请告诉我。\n[VO_SVGA](使用 `mplayer test.avi -v -v -v -v &> svga.log` 生成日志文件并发送)。谢谢!\n" +#define MSGTR_LIBVO_SVGA_VideoModeHas "[VO_SVGA] 视频模式占用 %d 内存页。\n" +#define MSGTR_LIBVO_SVGA_CenteringImageStartAt "[VO_SVGA] 居中图像。超始位置(%d,%d)\n" +#define MSGTR_LIBVO_SVGA_UsingVidix "[VO_SVGA] 使用 VIDIX。w=%i h=%i mw=%i mh=%i\n" // vo_tdfx_vid.c -#define MSGTR_LIBVO_TDFXVID_Move "[VO_TDXVID] Move %d(%d) x %d => %d。\n" -#define MSGTR_LIBVO_TDFXVID_AGPMoveFailedToClearTheScreen "[VO_TDFXVID] AGP move 清除屏幕失败。\n" -#define MSGTR_LIBVO_TDFXVID_BlitFailed "[VO_TDFXVID] Blit 失败。\n" -#define MSGTR_LIBVO_TDFXVID_NonNativeOverlayFormatNeedConversion "[VO_TDFXVID] 非本地支持的覆盖格式需要转换。\n" +#define MSGTR_LIBVO_TDFXVID_Move "[VO_TDXVID] 移动 %d(%d) x %d => %d。\n" +#define MSGTR_LIBVO_TDFXVID_AGPMoveFailedToClearTheScreen "[VO_TDFXVID] AGP 移动操作清除屏幕失败。\n" +#define MSGTR_LIBVO_TDFXVID_BlitFailed "[VO_TDFXVID] 位块传输失败。\n" +#define MSGTR_LIBVO_TDFXVID_NonNativeOverlayFormatNeedConversion "[VO_TDFXVID] 非原生支持的覆盖格式需要转换。\n" #define MSGTR_LIBVO_TDFXVID_UnsupportedInputFormat "[VO_TDFXVID] 不支持的输入格式 0x%x。\n" -#define MSGTR_LIBVO_TDFXVID_OverlaySetupFailed "[VO_TDFXVID] 覆盖设置失败。\n" -#define MSGTR_LIBVO_TDFXVID_OverlayOnFailed "[VO_TDFXVID] 覆盖打开失败。\n" -#define MSGTR_LIBVO_TDFXVID_OverlayReady "[VO_TDFXVID] 覆盖准备完成: %d(%d) x %d @ %d => %d(%d) x %d @ %d。\n" -#define MSGTR_LIBVO_TDFXVID_TextureBlitReady "[VO_TDFXVID] 纹理 blit 准备完成: %d(%d) x %d @ %d => %d(%d) x %d @ %d。\n" -#define MSGTR_LIBVO_TDFXVID_OverlayOffFailed "[VO_TDFXVID] 覆盖关闭失败\n" -#define MSGTR_LIBVO_TDFXVID_CantOpen "[VO_TDFXVID] 打不开 %s: %s。\n" -#define MSGTR_LIBVO_TDFXVID_CantGetCurrentCfg "[VO_TDFXVID] 没能获得当前配置: %s。\n" -#define MSGTR_LIBVO_TDFXVID_MemmapFailed "[VO_TDFXVID] Memmap 失败 !!!!!\n" -#define MSGTR_LIBVO_TDFXVID_GetImageTodo "获得图像格式 todo。\n" -#define MSGTR_LIBVO_TDFXVID_AgpMoveFailed "[VO_TDFXVID] AGP move 失败。\n" +#define MSGTR_LIBVO_TDFXVID_OverlaySetupFailed "[VO_TDFXVID] 覆盖模式设置失败。\n" +#define MSGTR_LIBVO_TDFXVID_OverlayOnFailed "[VO_TDFXVID] 覆盖模式打开失败。\n" +#define MSGTR_LIBVO_TDFXVID_OverlayReady "[VO_TDFXVID] 覆盖模式准备完成:%d(%d) x %d @ %d => %d(%d) x %d @ %d。\n" +#define MSGTR_LIBVO_TDFXVID_TextureBlitReady "[VO_TDFXVID] 纹理位块传输准备完毕:%d(%d) x %d @ %d => %d(%d) x %d @ %d。\n" +#define MSGTR_LIBVO_TDFXVID_OverlayOffFailed "[VO_TDFXVID] 覆盖模式关闭失败\n" +#define MSGTR_LIBVO_TDFXVID_CantOpen "[VO_TDFXVID] 无法打开 %s:%s。\n" +#define MSGTR_LIBVO_TDFXVID_CantGetCurrentCfg "[VO_TDFXVID] 无法获得当前配置:%s。\n" +#define MSGTR_LIBVO_TDFXVID_MemmapFailed "[VO_TDFXVID] Memmap 失败!!!\n" +#define MSGTR_LIBVO_TDFXVID_GetImageTodo "获得图像 todo。\n" +#define MSGTR_LIBVO_TDFXVID_AgpMoveFailed "[VO_TDFXVID] AGP 移动操作失败。\n" #define MSGTR_LIBVO_TDFXVID_SetYuvFailed "[VO_TDFXVID] 设置 YUV 失败。\n" -#define MSGTR_LIBVO_TDFXVID_AgpMoveFailedOnYPlane "[VO_TDFXVID] AGP move 操作 Y plane 失败。\n" -#define MSGTR_LIBVO_TDFXVID_AgpMoveFailedOnUPlane "[VO_TDFXVID] AGP move 操作 U plane 失败。\n" -#define MSGTR_LIBVO_TDFXVID_AgpMoveFailedOnVPlane "[VO_TDFXVID] AGP move 操作 V plane 失败。\n" -#define MSGTR_LIBVO_TDFXVID_UnknownFormat "[VO_TDFXVID] 未知格式 0x%x。\n" +#define MSGTR_LIBVO_TDFXVID_AgpMoveFailedOnYPlane "[VO_TDFXVID] Y 平面的 AGP 移动操作失败。\n" +#define MSGTR_LIBVO_TDFXVID_AgpMoveFailedOnUPlane "[VO_TDFXVID] U 平面的 AGP 移动操作失败。\n" +#define MSGTR_LIBVO_TDFXVID_AgpMoveFailedOnVPlane "[VO_TDFXVID] V 平面的 AGP 移动操作失败。\n" +#define MSGTR_LIBVO_TDFXVID_UnknownFormat "[VO_TDFXVID] 未知格式:0x%x。\n" // vo_tdfxfb.c -#define MSGTR_LIBVO_TDFXFB_CantOpen "[VO_TDFXFB] 打不开 %s: %s。\n" -#define MSGTR_LIBVO_TDFXFB_ProblemWithFbitgetFscreenInfo "[VO_TDFXFB] FBITGET_FSCREENINFO ioctl 出错: %s。\n" -#define MSGTR_LIBVO_TDFXFB_ProblemWithFbitgetVscreenInfo "[VO_TDFXFB] FBITGET_VSCREENINFO ioctl 出错: %s。\n" -#define MSGTR_LIBVO_TDFXFB_ThisDriverOnlySupports "[VO_TDFXFB] 此驱动仅支持 3Dfx Banshee, Voodoo3 和 Voodoo 5。\n" -#define MSGTR_LIBVO_TDFXFB_OutputIsNotSupported "[VO_TDFXFB] %d bpp 输出不支持。\n" -#define MSGTR_LIBVO_TDFXFB_CouldntMapMemoryAreas "[VO_TDFXFB] 无法映射内存区域: %s。\n" -#define MSGTR_LIBVO_TDFXFB_BppOutputIsNotSupported "[VO_TDFXFB] %d bpp 输出不支持 (应该永远不会发生)。\n" -#define MSGTR_LIBVO_TDFXFB_SomethingIsWrongWithControl "[VO_TDFXFB] Eik! control() 出错。\n" +#define MSGTR_LIBVO_TDFXFB_CantOpen "[VO_TDFXFB] 无法打开 %s:%s。\n" +#define MSGTR_LIBVO_TDFXFB_ProblemWithFbitgetFscreenInfo "[VO_TDFXFB] FBITGET_FSCREENINFO ioctl 故障:%s。\n" +#define MSGTR_LIBVO_TDFXFB_ProblemWithFbitgetVscreenInfo "[VO_TDFXFB] FBITGET_VSCREENINFO ioctl 故障:%s。\n" +#define MSGTR_LIBVO_TDFXFB_ThisDriverOnlySupports "[VO_TDFXFB] 该驱动仅支持 3Dfx Banshee、Voodoo3 和 Voodoo 5。\n" +#define MSGTR_LIBVO_TDFXFB_OutputIsNotSupported "[VO_TDFXFB] 不支持 %d bpp 输出。\n" +#define MSGTR_LIBVO_TDFXFB_CouldntMapMemoryAreas "[VO_TDFXFB] 无法映射内存区域:%s。\n" +#define MSGTR_LIBVO_TDFXFB_BppOutputIsNotSupported "[VO_TDFXFB] 不支持 %d bpp 输出(这不应该出现)。\n" +#define MSGTR_LIBVO_TDFXFB_SomethingIsWrongWithControl "[VO_TDFXFB] 呃!control() 有点问题。\n" #define MSGTR_LIBVO_TDFXFB_NotEnoughVideoMemoryToPlay "[VO_TDFXFB] 没有足够的显存播放此片,尝试较低的分辨率。\n" -#define MSGTR_LIBVO_TDFXFB_ScreenIs "[VO_TDFXFB] 屏幕 %dx%d 色深 %d bpp, 输入 %dx%d 色深 %d bpp, 输出 %dx%d。\n" +#define MSGTR_LIBVO_TDFXFB_ScreenIs "[VO_TDFXFB] 屏幕 %dx%d 色深 %d bpp,输入 %dx%d 色深 %d bpp,输出 %dx%d。\n" // vo_tga.c -#define MSGTR_LIBVO_TGA_UnknownSubdevice "[VO_TGA] 未知子设备: %s。\n" +#define MSGTR_LIBVO_TGA_UnknownSubdevice "[VO_TGA] 未知子设备:%s。\n" // vo_vesa.c -#define MSGTR_LIBVO_VESA_FatalErrorOccurred "[VO_VESA] 发生致命错误! 不能继续。\n" +#define MSGTR_LIBVO_VESA_FatalErrorOccurred "[VO_VESA] 发生致命错误!无法继续。\n" #define MSGTR_LIBVO_VESA_UnknownSubdevice "[VO_VESA] 未知子设备:‘%s’。\n" -#define MSGTR_LIBVO_VESA_YouHaveTooLittleVideoMemory "[VO_VESA] 显存太小不能支持这个模式:\n[VO_VESA] 需要: %08lX 可用: %08lX。\n" -#define MSGTR_LIBVO_VESA_YouHaveToSpecifyTheCapabilitiesOfTheMonitor "[VO_VESA] 你需要设置显示器的兼容性。不要改变刷新率。\n" -#define MSGTR_LIBVO_VESA_UnableToFitTheMode "[VO_VESA] 模式超出显示器的限制。不要改变刷新率。\n" -#define MSGTR_LIBVO_VESA_DetectedInternalFatalError "[VO_VESA] 检测到内部致命错误: 初始化在预初始化前被调用。\n" +#define MSGTR_LIBVO_VESA_YouHaveTooLittleVideoMemory "[VO_VESA] 显存太小无法支持该模式:\n[VO_VESA] 需要:%08lX 可用:%08lX。\n" +#define MSGTR_LIBVO_VESA_YouHaveToSpecifyTheCapabilitiesOfTheMonitor "[VO_VESA] 需要指定显示器的性能。未改变刷新率。\n" +#define MSGTR_LIBVO_VESA_UnableToFitTheMode "[VO_VESA] 模式超出显示器的限制。未改变刷新率。\n" +#define MSGTR_LIBVO_VESA_DetectedInternalFatalError "[VO_VESA] 检测到内部致命错误:init 在 preinit 前被调用。\n" #define MSGTR_LIBVO_VESA_SwitchFlipIsNotSupported "[VO_VESA] -flip 命令不支持。\n" -#define MSGTR_LIBVO_VESA_PossibleReasonNoVbe2BiosFound "[VO_VESA] 可能的原因: 找不到 VBE2 BIOS。\n" -#define MSGTR_LIBVO_VESA_FoundVesaVbeBiosVersion "[VO_VESA] 找到 VESA VBE BIOS 版本 %x.%x 修订版本: %x。\n" -#define MSGTR_LIBVO_VESA_VideoMemory "[VO_VESA] 显存: %u Kb。\n" -#define MSGTR_LIBVO_VESA_Capabilites "[VO_VESA] VESA 兼容性: %s %s %s %s %s。\n" -#define MSGTR_LIBVO_VESA_BelowWillBePrintedOemInfo "[VO_VESA] !!! 下面显示 OEM 信息 !!!\n" -#define MSGTR_LIBVO_VESA_YouShouldSee5OemRelatedLines "[VO_VESA] 你应该看到 5 行 OEM 相关内容; 否则, 你的 vm86 有问题。\n" +#define MSGTR_LIBVO_VESA_PossibleReasonNoVbe2BiosFound "[VO_VESA] 可能的原因:未找到 VBE2 BIOS。\n" +#define MSGTR_LIBVO_VESA_FoundVesaVbeBiosVersion "[VO_VESA] 找到 VESA VBE BIOS 版本 %x.%x 修订版本:%x。\n" +#define MSGTR_LIBVO_VESA_VideoMemory "[VO_VESA] 显存:%u Kb。\n" +#define MSGTR_LIBVO_VESA_Capabilites "[VO_VESA] VESA 性能:%s %s %s %s %s。\n" +#define MSGTR_LIBVO_VESA_BelowWillBePrintedOemInfo "[VO_VESA] !!!下面将显示 OEM 信息!!!\n" +#define MSGTR_LIBVO_VESA_YouShouldSee5OemRelatedLines "[VO_VESA] 应该看到 5 行 OEM 的相关内容;否则说明 vm86 有问题。\n" #define MSGTR_LIBVO_VESA_OemInfo "[VO_VESA] OEM 信息: %s。\n" #define MSGTR_LIBVO_VESA_OemRevision "[VO_VESA] OEM 版本: %x。\n" #define MSGTR_LIBVO_VESA_OemVendor "[VO_VESA] OEM 发行商: %s。\n" @@ -1145,7 +1145,7 @@ static const char help_text[]= #define MSGTR_AO_TryingPreferredAudioDriver "尝试使用偏好的音频驱动‘%.*s’,选项设为‘%s’\n" #define MSGTR_AO_NoSuchDriver "无此音频驱动‘%.*s’\n" #define MSGTR_AO_FailedInit "初始化音频驱动失败‘%s’\n" -#define MSGTR_AO_TryingEveryKnown "尝试每个已知的音频驱动……\n" +#define MSGTR_AO_TryingEveryKnown "尝试每个已知的音频驱动...\n" // ao_oss.c #define MSGTR_AO_OSS_CantOpenMixer "[AO OSS] 音频设置: 无法打开混音器设备 %s: %s\n" @@ -1519,7 +1519,7 @@ static const char help_text[]= // demux_xmms.c #define MSGTR_MPDEMUX_XMMS_FoundPlugin "找到插件: %s (%s)。\n" #define MSGTR_MPDEMUX_XMMS_ClosingPlugin "关闭插件: %s。\n" -#define MSGTR_MPDEMUX_XMMS_WaitForStart "等待XMMS插件开始播放‘%s’……\n" +#define MSGTR_MPDEMUX_XMMS_WaitForStart "等待XMMS插件开始播放‘%s’...\n" // ========================== LIBMENU =================================== From 4112165879aa16ac03a74c7732fa6b12636a92c1 Mon Sep 17 00:00:00 2001 From: cehoyos Date: Sat, 15 Aug 2009 23:33:56 +0000 Subject: [PATCH 65/77] Add missing major contributors to copyright statement. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29520 b3059339-0415-0410-9bf9-f77b7e298cf2 --- stream/tv.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/stream/tv.h b/stream/tv.h index 8aa485de82..51b2dfecd8 100644 --- a/stream/tv.h +++ b/stream/tv.h @@ -1,6 +1,8 @@ /* * Teletext support * + * Copyright (C) 2001 Alex Beregszászi + * Copyright (C) 2007 Attila Ötvös * Copyright (C) 2007 Vladimir Voroshilov * * This file is part of MPlayer. From 6a101a97f943ba26a4599555c7dfead98ad0ddc8 Mon Sep 17 00:00:00 2001 From: cehoyos Date: Sat, 15 Aug 2009 23:41:35 +0000 Subject: [PATCH 66/77] Fix file information. Patch by Francesco Lavra, francescolavra interfree it git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29521 b3059339-0415-0410-9bf9-f77b7e298cf2 --- stream/tv.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stream/tv.h b/stream/tv.h index 51b2dfecd8..d177628e85 100644 --- a/stream/tv.h +++ b/stream/tv.h @@ -1,5 +1,5 @@ /* - * Teletext support + * TV interface * * Copyright (C) 2001 Alex Beregszászi * Copyright (C) 2007 Attila Ötvös From 88dafbd9a54144c1c5f4642455e7817b11b323b8 Mon Sep 17 00:00:00 2001 From: ramiro Date: Sun, 16 Aug 2009 00:32:04 +0000 Subject: [PATCH 67/77] Indent libswscale: - Use 4 spaces throughout for indentation; - Fix inconsistent indentation; - Indent function calls and declarations aligning arguments on multiple lines to the column after the opening parentheses; - Align asm code to the column 4 spaces after the call to __asm__(); - Align cases in switch statements to the same column as "switch". git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29522 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libswscale/colorspace-test.c | 22 +- libswscale/ppc/yuv2rgb_altivec.c | 36 +- libswscale/rgb2rgb.c | 16 +- libswscale/rgb2rgb.h | 16 +- libswscale/rgb2rgb_template.c | 2664 +++++++++++++++--------------- libswscale/sparc/yuv2rgb_vis.c | 176 +- libswscale/swscale.c | 270 +-- libswscale/swscale_template.c | 230 +-- 8 files changed, 1715 insertions(+), 1715 deletions(-) diff --git a/libswscale/colorspace-test.c b/libswscale/colorspace-test.c index 2223ee3a31..a1ec1be1b4 100644 --- a/libswscale/colorspace-test.c +++ b/libswscale/colorspace-test.c @@ -41,17 +41,17 @@ static char *args_parse(int argc, char *argv[]) while ((o = getopt(argc, argv, "m23")) != -1) { switch (o) { - case 'm': - cpu_caps |= SWS_CPU_CAPS_MMX; - break; - case '2': - cpu_caps |= SWS_CPU_CAPS_MMX2; - break; - case '3': - cpu_caps |= SWS_CPU_CAPS_3DNOW; - break; - default: - av_log(NULL, AV_LOG_ERROR, "Unknown option %c\n", o); + case 'm': + cpu_caps |= SWS_CPU_CAPS_MMX; + break; + case '2': + cpu_caps |= SWS_CPU_CAPS_MMX2; + break; + case '3': + cpu_caps |= SWS_CPU_CAPS_3DNOW; + break; + default: + av_log(NULL, AV_LOG_ERROR, "Unknown option %c\n", o); } } diff --git a/libswscale/ppc/yuv2rgb_altivec.c b/libswscale/ppc/yuv2rgb_altivec.c index 37fbcb5dd5..57acc6bc3e 100644 --- a/libswscale/ppc/yuv2rgb_altivec.c +++ b/libswscale/ppc/yuv2rgb_altivec.c @@ -855,13 +855,13 @@ ff_yuv2packedX_altivec(SwsContext *c, B = vec_packclp (B0,B1); switch(c->dstFormat) { - case PIX_FMT_ABGR: out_abgr (R,G,B,out); break; - case PIX_FMT_BGRA: out_bgra (R,G,B,out); break; - case PIX_FMT_RGBA: out_rgba (R,G,B,out); break; - case PIX_FMT_ARGB: out_argb (R,G,B,out); break; - case PIX_FMT_RGB24: out_rgb24 (R,G,B,out); break; - case PIX_FMT_BGR24: out_bgr24 (R,G,B,out); break; - default: + case PIX_FMT_ABGR: out_abgr (R,G,B,out); break; + case PIX_FMT_BGRA: out_bgra (R,G,B,out); break; + case PIX_FMT_RGBA: out_rgba (R,G,B,out); break; + case PIX_FMT_ARGB: out_argb (R,G,B,out); break; + case PIX_FMT_RGB24: out_rgb24 (R,G,B,out); break; + case PIX_FMT_BGR24: out_bgr24 (R,G,B,out); break; + default: { /* If this is reached, the caller should have called yuv2packedXinC instead. */ @@ -934,17 +934,17 @@ ff_yuv2packedX_altivec(SwsContext *c, nout = (vector unsigned char *)scratch; switch(c->dstFormat) { - case PIX_FMT_ABGR: out_abgr (R,G,B,nout); break; - case PIX_FMT_BGRA: out_bgra (R,G,B,nout); break; - case PIX_FMT_RGBA: out_rgba (R,G,B,nout); break; - case PIX_FMT_ARGB: out_argb (R,G,B,nout); break; - case PIX_FMT_RGB24: out_rgb24 (R,G,B,nout); break; - case PIX_FMT_BGR24: out_bgr24 (R,G,B,nout); break; - default: - /* Unreachable, I think. */ - av_log(c, AV_LOG_ERROR, "altivec_yuv2packedX doesn't support %s output\n", - sws_format_name(c->dstFormat)); - return; + case PIX_FMT_ABGR: out_abgr (R,G,B,nout); break; + case PIX_FMT_BGRA: out_bgra (R,G,B,nout); break; + case PIX_FMT_RGBA: out_rgba (R,G,B,nout); break; + case PIX_FMT_ARGB: out_argb (R,G,B,nout); break; + case PIX_FMT_RGB24: out_rgb24 (R,G,B,nout); break; + case PIX_FMT_BGR24: out_bgr24 (R,G,B,nout); break; + default: + /* Unreachable, I think. */ + av_log(c, AV_LOG_ERROR, "altivec_yuv2packedX doesn't support %s output\n", + sws_format_name(c->dstFormat)); + return; } memcpy (&((uint32_t*)dest)[i], scratch, (dstW-i)/4); diff --git a/libswscale/rgb2rgb.c b/libswscale/rgb2rgb.c index 7aeb2a3ac2..1b1d4db77c 100644 --- a/libswscale/rgb2rgb.c +++ b/libswscale/rgb2rgb.c @@ -88,17 +88,17 @@ void (*yvu9_to_yuy2)(const uint8_t *src1, const uint8_t *src2, const uint8_t *sr long srcStride1, long srcStride2, long srcStride3, long dstStride); void (*uyvytoyuv420)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, - long width, long height, - long lumStride, long chromStride, long srcStride); + long width, long height, + long lumStride, long chromStride, long srcStride); void (*uyvytoyuv422)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, - long width, long height, - long lumStride, long chromStride, long srcStride); + long width, long height, + long lumStride, long chromStride, long srcStride); void (*yuyvtoyuv420)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, - long width, long height, - long lumStride, long chromStride, long srcStride); + long width, long height, + long lumStride, long chromStride, long srcStride); void (*yuyvtoyuv422)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, - long width, long height, - long lumStride, long chromStride, long srcStride); + long width, long height, + long lumStride, long chromStride, long srcStride); #if ARCH_X86 && CONFIG_GPL diff --git a/libswscale/rgb2rgb.h b/libswscale/rgb2rgb.h index 3850ef291d..9d6e6df415 100644 --- a/libswscale/rgb2rgb.h +++ b/libswscale/rgb2rgb.h @@ -144,17 +144,17 @@ extern void (*yvu9_to_yuy2)(const uint8_t *src1, const uint8_t *src2, const uint extern void (*uyvytoyuv420)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, - long width, long height, - long lumStride, long chromStride, long srcStride); + long width, long height, + long lumStride, long chromStride, long srcStride); extern void (*uyvytoyuv422)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, - long width, long height, - long lumStride, long chromStride, long srcStride); + long width, long height, + long lumStride, long chromStride, long srcStride); extern void (*yuyvtoyuv420)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, - long width, long height, - long lumStride, long chromStride, long srcStride); + long width, long height, + long lumStride, long chromStride, long srcStride); extern void (*yuyvtoyuv422)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, - long width, long height, - long lumStride, long chromStride, long srcStride); + long width, long height, + long lumStride, long chromStride, long srcStride); void sws_rgb2rgb_init(int flags); diff --git a/libswscale/rgb2rgb_template.c b/libswscale/rgb2rgb_template.c index 3d1fb8aea6..475a810f0b 100644 --- a/libswscale/rgb2rgb_template.c +++ b/libswscale/rgb2rgb_template.c @@ -77,16 +77,16 @@ static inline void RENAME(rgb24tobgr32)(const uint8_t *src, uint8_t *dst, long s const uint8_t *s = src; const uint8_t *end; #if HAVE_MMX - const uint8_t *mm_end; + const uint8_t *mm_end; #endif end = s + src_size; #if HAVE_MMX - __asm__ volatile(PREFETCH" %0"::"m"(*s):"memory"); - mm_end = end - 23; - __asm__ volatile("movq %0, %%mm7"::"m"(mask32a):"memory"); - while (s < mm_end) - { - __asm__ volatile( + __asm__ volatile(PREFETCH" %0"::"m"(*s):"memory"); + mm_end = end - 23; + __asm__ volatile("movq %0, %%mm7"::"m"(mask32a):"memory"); + while (s < mm_end) + { + __asm__ volatile( PREFETCH" 32%1 \n\t" "movd %1, %%mm0 \n\t" "punpckldq 3%1, %%mm0 \n\t" @@ -107,11 +107,11 @@ static inline void RENAME(rgb24tobgr32)(const uint8_t *src, uint8_t *dst, long s :"=m"(*dest) :"m"(*s) :"memory"); - dest += 32; - s += 24; - } - __asm__ volatile(SFENCE:::"memory"); - __asm__ volatile(EMMS:::"memory"); + dest += 32; + s += 24; + } + __asm__ volatile(SFENCE:::"memory"); + __asm__ volatile(EMMS:::"memory"); #endif while (s < end) { @@ -146,53 +146,53 @@ static inline void RENAME(rgb32tobgr24)(const uint8_t *src, uint8_t *dst, long s while (s < mm_end) { __asm__ volatile( - PREFETCH" 32%1 \n\t" - "movq %1, %%mm0 \n\t" - "movq 8%1, %%mm1 \n\t" - "movq 16%1, %%mm4 \n\t" - "movq 24%1, %%mm5 \n\t" - "movq %%mm0, %%mm2 \n\t" - "movq %%mm1, %%mm3 \n\t" - "movq %%mm4, %%mm6 \n\t" - "movq %%mm5, %%mm7 \n\t" - "psrlq $8, %%mm2 \n\t" - "psrlq $8, %%mm3 \n\t" - "psrlq $8, %%mm6 \n\t" - "psrlq $8, %%mm7 \n\t" - "pand %2, %%mm0 \n\t" - "pand %2, %%mm1 \n\t" - "pand %2, %%mm4 \n\t" - "pand %2, %%mm5 \n\t" - "pand %3, %%mm2 \n\t" - "pand %3, %%mm3 \n\t" - "pand %3, %%mm6 \n\t" - "pand %3, %%mm7 \n\t" - "por %%mm2, %%mm0 \n\t" - "por %%mm3, %%mm1 \n\t" - "por %%mm6, %%mm4 \n\t" - "por %%mm7, %%mm5 \n\t" + PREFETCH" 32%1 \n\t" + "movq %1, %%mm0 \n\t" + "movq 8%1, %%mm1 \n\t" + "movq 16%1, %%mm4 \n\t" + "movq 24%1, %%mm5 \n\t" + "movq %%mm0, %%mm2 \n\t" + "movq %%mm1, %%mm3 \n\t" + "movq %%mm4, %%mm6 \n\t" + "movq %%mm5, %%mm7 \n\t" + "psrlq $8, %%mm2 \n\t" + "psrlq $8, %%mm3 \n\t" + "psrlq $8, %%mm6 \n\t" + "psrlq $8, %%mm7 \n\t" + "pand %2, %%mm0 \n\t" + "pand %2, %%mm1 \n\t" + "pand %2, %%mm4 \n\t" + "pand %2, %%mm5 \n\t" + "pand %3, %%mm2 \n\t" + "pand %3, %%mm3 \n\t" + "pand %3, %%mm6 \n\t" + "pand %3, %%mm7 \n\t" + "por %%mm2, %%mm0 \n\t" + "por %%mm3, %%mm1 \n\t" + "por %%mm6, %%mm4 \n\t" + "por %%mm7, %%mm5 \n\t" - "movq %%mm1, %%mm2 \n\t" - "movq %%mm4, %%mm3 \n\t" - "psllq $48, %%mm2 \n\t" - "psllq $32, %%mm3 \n\t" - "pand %4, %%mm2 \n\t" - "pand %5, %%mm3 \n\t" - "por %%mm2, %%mm0 \n\t" - "psrlq $16, %%mm1 \n\t" - "psrlq $32, %%mm4 \n\t" - "psllq $16, %%mm5 \n\t" - "por %%mm3, %%mm1 \n\t" - "pand %6, %%mm5 \n\t" - "por %%mm5, %%mm4 \n\t" + "movq %%mm1, %%mm2 \n\t" + "movq %%mm4, %%mm3 \n\t" + "psllq $48, %%mm2 \n\t" + "psllq $32, %%mm3 \n\t" + "pand %4, %%mm2 \n\t" + "pand %5, %%mm3 \n\t" + "por %%mm2, %%mm0 \n\t" + "psrlq $16, %%mm1 \n\t" + "psrlq $32, %%mm4 \n\t" + "psllq $16, %%mm5 \n\t" + "por %%mm3, %%mm1 \n\t" + "pand %6, %%mm5 \n\t" + "por %%mm5, %%mm4 \n\t" - MOVNTQ" %%mm0, %0 \n\t" - MOVNTQ" %%mm1, 8%0 \n\t" - MOVNTQ" %%mm4, 16%0" - :"=m"(*dest) - :"m"(*s),"m"(mask24l), - "m"(mask24h),"m"(mask24hh),"m"(mask24hhh),"m"(mask24hhhh) - :"memory"); + MOVNTQ" %%mm0, %0 \n\t" + MOVNTQ" %%mm1, 8%0 \n\t" + MOVNTQ" %%mm4, 16%0" + :"=m"(*dest) + :"m"(*s),"m"(mask24l), + "m"(mask24h),"m"(mask24hh),"m"(mask24hhh),"m"(mask24hhhh) + :"memory"); dest += 24; s += 32; } @@ -237,19 +237,19 @@ static inline void RENAME(rgb15to16)(const uint8_t *src, uint8_t *dst, long src_ while (syuy2 @@ -1703,9 +1703,9 @@ static inline void RENAME(yuvPlanartouyvy)(const uint8_t *ysrc, const uint8_t *u dst += dstStride; } #if HAVE_MMX -__asm__( EMMS" \n\t" - SFENCE" \n\t" - :::"memory"); + __asm__(EMMS" \n\t" + SFENCE" \n\t" + :::"memory"); #endif } @@ -1755,85 +1755,85 @@ static inline void RENAME(yuy2toyv12)(const uint8_t *src, uint8_t *ydst, uint8_t { #if HAVE_MMX __asm__ volatile( - "xor %%"REG_a", %%"REG_a" \n\t" - "pcmpeqw %%mm7, %%mm7 \n\t" - "psrlw $8, %%mm7 \n\t" // FF,00,FF,00... - ASMALIGN(4) - "1: \n\t" - PREFETCH" 64(%0, %%"REG_a", 4) \n\t" - "movq (%0, %%"REG_a", 4), %%mm0 \n\t" // YUYV YUYV(0) - "movq 8(%0, %%"REG_a", 4), %%mm1 \n\t" // YUYV YUYV(4) - "movq %%mm0, %%mm2 \n\t" // YUYV YUYV(0) - "movq %%mm1, %%mm3 \n\t" // YUYV YUYV(4) - "psrlw $8, %%mm0 \n\t" // U0V0 U0V0(0) - "psrlw $8, %%mm1 \n\t" // U0V0 U0V0(4) - "pand %%mm7, %%mm2 \n\t" // Y0Y0 Y0Y0(0) - "pand %%mm7, %%mm3 \n\t" // Y0Y0 Y0Y0(4) - "packuswb %%mm1, %%mm0 \n\t" // UVUV UVUV(0) - "packuswb %%mm3, %%mm2 \n\t" // YYYY YYYY(0) + "xor %%"REG_a", %%"REG_a" \n\t" + "pcmpeqw %%mm7, %%mm7 \n\t" + "psrlw $8, %%mm7 \n\t" // FF,00,FF,00... + ASMALIGN(4) + "1: \n\t" + PREFETCH" 64(%0, %%"REG_a", 4) \n\t" + "movq (%0, %%"REG_a", 4), %%mm0 \n\t" // YUYV YUYV(0) + "movq 8(%0, %%"REG_a", 4), %%mm1 \n\t" // YUYV YUYV(4) + "movq %%mm0, %%mm2 \n\t" // YUYV YUYV(0) + "movq %%mm1, %%mm3 \n\t" // YUYV YUYV(4) + "psrlw $8, %%mm0 \n\t" // U0V0 U0V0(0) + "psrlw $8, %%mm1 \n\t" // U0V0 U0V0(4) + "pand %%mm7, %%mm2 \n\t" // Y0Y0 Y0Y0(0) + "pand %%mm7, %%mm3 \n\t" // Y0Y0 Y0Y0(4) + "packuswb %%mm1, %%mm0 \n\t" // UVUV UVUV(0) + "packuswb %%mm3, %%mm2 \n\t" // YYYY YYYY(0) - MOVNTQ" %%mm2, (%1, %%"REG_a", 2) \n\t" + MOVNTQ" %%mm2, (%1, %%"REG_a", 2) \n\t" - "movq 16(%0, %%"REG_a", 4), %%mm1 \n\t" // YUYV YUYV(8) - "movq 24(%0, %%"REG_a", 4), %%mm2 \n\t" // YUYV YUYV(12) - "movq %%mm1, %%mm3 \n\t" // YUYV YUYV(8) - "movq %%mm2, %%mm4 \n\t" // YUYV YUYV(12) - "psrlw $8, %%mm1 \n\t" // U0V0 U0V0(8) - "psrlw $8, %%mm2 \n\t" // U0V0 U0V0(12) - "pand %%mm7, %%mm3 \n\t" // Y0Y0 Y0Y0(8) - "pand %%mm7, %%mm4 \n\t" // Y0Y0 Y0Y0(12) - "packuswb %%mm2, %%mm1 \n\t" // UVUV UVUV(8) - "packuswb %%mm4, %%mm3 \n\t" // YYYY YYYY(8) + "movq 16(%0, %%"REG_a", 4), %%mm1 \n\t" // YUYV YUYV(8) + "movq 24(%0, %%"REG_a", 4), %%mm2 \n\t" // YUYV YUYV(12) + "movq %%mm1, %%mm3 \n\t" // YUYV YUYV(8) + "movq %%mm2, %%mm4 \n\t" // YUYV YUYV(12) + "psrlw $8, %%mm1 \n\t" // U0V0 U0V0(8) + "psrlw $8, %%mm2 \n\t" // U0V0 U0V0(12) + "pand %%mm7, %%mm3 \n\t" // Y0Y0 Y0Y0(8) + "pand %%mm7, %%mm4 \n\t" // Y0Y0 Y0Y0(12) + "packuswb %%mm2, %%mm1 \n\t" // UVUV UVUV(8) + "packuswb %%mm4, %%mm3 \n\t" // YYYY YYYY(8) - MOVNTQ" %%mm3, 8(%1, %%"REG_a", 2) \n\t" + MOVNTQ" %%mm3, 8(%1, %%"REG_a", 2) \n\t" - "movq %%mm0, %%mm2 \n\t" // UVUV UVUV(0) - "movq %%mm1, %%mm3 \n\t" // UVUV UVUV(8) - "psrlw $8, %%mm0 \n\t" // V0V0 V0V0(0) - "psrlw $8, %%mm1 \n\t" // V0V0 V0V0(8) - "pand %%mm7, %%mm2 \n\t" // U0U0 U0U0(0) - "pand %%mm7, %%mm3 \n\t" // U0U0 U0U0(8) - "packuswb %%mm1, %%mm0 \n\t" // VVVV VVVV(0) - "packuswb %%mm3, %%mm2 \n\t" // UUUU UUUU(0) + "movq %%mm0, %%mm2 \n\t" // UVUV UVUV(0) + "movq %%mm1, %%mm3 \n\t" // UVUV UVUV(8) + "psrlw $8, %%mm0 \n\t" // V0V0 V0V0(0) + "psrlw $8, %%mm1 \n\t" // V0V0 V0V0(8) + "pand %%mm7, %%mm2 \n\t" // U0U0 U0U0(0) + "pand %%mm7, %%mm3 \n\t" // U0U0 U0U0(8) + "packuswb %%mm1, %%mm0 \n\t" // VVVV VVVV(0) + "packuswb %%mm3, %%mm2 \n\t" // UUUU UUUU(0) - MOVNTQ" %%mm0, (%3, %%"REG_a") \n\t" - MOVNTQ" %%mm2, (%2, %%"REG_a") \n\t" + MOVNTQ" %%mm0, (%3, %%"REG_a") \n\t" + MOVNTQ" %%mm2, (%2, %%"REG_a") \n\t" - "add $8, %%"REG_a" \n\t" - "cmp %4, %%"REG_a" \n\t" - " jb 1b \n\t" - ::"r"(src), "r"(ydst), "r"(udst), "r"(vdst), "g" (chromWidth) - : "memory", "%"REG_a + "add $8, %%"REG_a" \n\t" + "cmp %4, %%"REG_a" \n\t" + " jb 1b \n\t" + ::"r"(src), "r"(ydst), "r"(udst), "r"(vdst), "g" (chromWidth) + : "memory", "%"REG_a ); ydst += lumStride; src += srcStride; __asm__ volatile( - "xor %%"REG_a", %%"REG_a" \n\t" - ASMALIGN(4) - "1: \n\t" - PREFETCH" 64(%0, %%"REG_a", 4) \n\t" - "movq (%0, %%"REG_a", 4), %%mm0 \n\t" // YUYV YUYV(0) - "movq 8(%0, %%"REG_a", 4), %%mm1 \n\t" // YUYV YUYV(4) - "movq 16(%0, %%"REG_a", 4), %%mm2 \n\t" // YUYV YUYV(8) - "movq 24(%0, %%"REG_a", 4), %%mm3 \n\t" // YUYV YUYV(12) - "pand %%mm7, %%mm0 \n\t" // Y0Y0 Y0Y0(0) - "pand %%mm7, %%mm1 \n\t" // Y0Y0 Y0Y0(4) - "pand %%mm7, %%mm2 \n\t" // Y0Y0 Y0Y0(8) - "pand %%mm7, %%mm3 \n\t" // Y0Y0 Y0Y0(12) - "packuswb %%mm1, %%mm0 \n\t" // YYYY YYYY(0) - "packuswb %%mm3, %%mm2 \n\t" // YYYY YYYY(8) + "xor %%"REG_a", %%"REG_a" \n\t" + ASMALIGN(4) + "1: \n\t" + PREFETCH" 64(%0, %%"REG_a", 4) \n\t" + "movq (%0, %%"REG_a", 4), %%mm0 \n\t" // YUYV YUYV(0) + "movq 8(%0, %%"REG_a", 4), %%mm1 \n\t" // YUYV YUYV(4) + "movq 16(%0, %%"REG_a", 4), %%mm2 \n\t" // YUYV YUYV(8) + "movq 24(%0, %%"REG_a", 4), %%mm3 \n\t" // YUYV YUYV(12) + "pand %%mm7, %%mm0 \n\t" // Y0Y0 Y0Y0(0) + "pand %%mm7, %%mm1 \n\t" // Y0Y0 Y0Y0(4) + "pand %%mm7, %%mm2 \n\t" // Y0Y0 Y0Y0(8) + "pand %%mm7, %%mm3 \n\t" // Y0Y0 Y0Y0(12) + "packuswb %%mm1, %%mm0 \n\t" // YYYY YYYY(0) + "packuswb %%mm3, %%mm2 \n\t" // YYYY YYYY(8) - MOVNTQ" %%mm0, (%1, %%"REG_a", 2) \n\t" - MOVNTQ" %%mm2, 8(%1, %%"REG_a", 2) \n\t" + MOVNTQ" %%mm0, (%1, %%"REG_a", 2) \n\t" + MOVNTQ" %%mm2, 8(%1, %%"REG_a", 2) \n\t" - "add $8, %%"REG_a" \n\t" - "cmp %4, %%"REG_a" \n\t" - " jb 1b \n\t" + "add $8, %%"REG_a" \n\t" + "cmp %4, %%"REG_a" \n\t" + " jb 1b \n\t" - ::"r"(src), "r"(ydst), "r"(udst), "r"(vdst), "g" (chromWidth) - : "memory", "%"REG_a + ::"r"(src), "r"(ydst), "r"(udst), "r"(vdst), "g" (chromWidth) + : "memory", "%"REG_a ); #else long i; @@ -1859,9 +1859,9 @@ static inline void RENAME(yuy2toyv12)(const uint8_t *src, uint8_t *ydst, uint8_t src += srcStride; } #if HAVE_MMX -__asm__ volatile( EMMS" \n\t" - SFENCE" \n\t" - :::"memory"); + __asm__ volatile(EMMS" \n\t" + SFENCE" \n\t" + :::"memory"); #endif } @@ -1888,51 +1888,51 @@ static inline void RENAME(planar2x)(const uint8_t *src, uint8_t *dst, long srcWi } dst[2*srcWidth-1]= src[srcWidth-1]; - dst+= dstStride; + dst+= dstStride; for (y=1; y>1); - uint8_t* d=dst1+dstStride1*y; - x=0; + const uint8_t* s1=src1+srcStride1*(y>>1); + uint8_t* d=dst1+dstStride1*y; + x=0; #if HAVE_MMX - for (;x>1); - uint8_t* d=dst2+dstStride2*y; - x=0; + const uint8_t* s2=src2+srcStride2*(y>>1); + uint8_t* d=dst2+dstStride2*y; + x=0; #if HAVE_MMX - for (;x>2); - const uint8_t* vp=src3+srcStride3*(y>>2); - uint8_t* d=dst+dstStride*y; - x=0; + const uint8_t* yp=src1+srcStride1*y; + const uint8_t* up=src2+srcStride2*(y>>2); + const uint8_t* vp=src3+srcStride3*(y>>2); + uint8_t* d=dst+dstStride*y; + x=0; #if HAVE_MMX - for (;x>1)*srcStride[1]), - "2" (src[2]+((y+srcSliceY)>>1)*srcStride[2]), "3" (dst[0]+(y+srcSliceY)*dstStride[0]), - "4" (c->dstW), - "5" (c->sparc_coeffs) - ); - } + "add %0, 8, %0 \n\t" + "add %1, 4, %1 \n\t" + "add %2, 4, %2 \n\t" + "subcc %4, 8, %4 \n\t" + "bne 1b \n\t" + "add %3, 32, %3 \n\t" //delay slot + : "=r" (out1), "=r" (out2), "=r" (out3), "=r" (out4), "=r" (out5), "=r" (out6) + : "0" (src[0]+(y+srcSliceY)*srcStride[0]), "1" (src[1]+((y+srcSliceY)>>1)*srcStride[1]), + "2" (src[2]+((y+srcSliceY)>>1)*srcStride[2]), "3" (dst[0]+(y+srcSliceY)*dstStride[0]), + "4" (c->dstW), + "5" (c->sparc_coeffs) + ); + } - return srcSliceH; + return srcSliceH; } // FIXME: must be changed to set alpha to 255 instead of 0 static int vis_422P_ARGB32(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t* dst[], int dstStride[]){ - int y, out1, out2, out3, out4, out5, out6; + int y, out1, out2, out3, out4, out5, out6; - for(y=0;y < srcSliceH;++y) { - __asm__ volatile ( - YUV2RGB_INIT - "wr %%g0, 0xd2, %%asi \n\t" /* ASI_FL16_P */ - "1: \n\t" - "ldda [%1] %%asi, %%f2 \n\t" - "ldda [%1+2] %%asi, %%f18 \n\t" - "ldda [%2] %%asi, %%f4 \n\t" - "ldda [%2+2] %%asi, %%f20 \n\t" - "ld [%0], %%f0 \n\t" - "ld [%0+4], %%f16 \n\t" - "fpmerge %%f3, %%f3, %%f2 \n\t" - "fpmerge %%f19, %%f19, %%f18 \n\t" - "fpmerge %%f5, %%f5, %%f4 \n\t" - "fpmerge %%f21, %%f21, %%f20 \n\t" - YUV2RGB_KERNEL - "fzero %%f0 \n\t" - "fpmerge %%f4, %%f6, %%f8 \n\t" // r,b,t1 - "fpmerge %%f20, %%f22, %%f24 \n\t" // r,b,t1 - "fpmerge %%f0, %%f2, %%f10 \n\t" // 0,g,t2 - "fpmerge %%f0, %%f18, %%f26 \n\t" // 0,g,t2 - "fpmerge %%f10, %%f8, %%f4 \n\t" // t2,t1,msb - "fpmerge %%f26, %%f24, %%f20 \n\t" // t2,t1,msb - "fpmerge %%f11, %%f9, %%f6 \n\t" // t2,t1,lsb - "fpmerge %%f27, %%f25, %%f22 \n\t" // t2,t1,lsb - "std %%f4, [%3] \n\t" - "std %%f20, [%3+16] \n\t" - "std %%f6, [%3+8] \n\t" - "std %%f22, [%3+24] \n\t" + for(y=0;y < srcSliceH;++y) { + __asm__ volatile ( + YUV2RGB_INIT + "wr %%g0, 0xd2, %%asi \n\t" /* ASI_FL16_P */ + "1: \n\t" + "ldda [%1] %%asi, %%f2 \n\t" + "ldda [%1+2] %%asi, %%f18 \n\t" + "ldda [%2] %%asi, %%f4 \n\t" + "ldda [%2+2] %%asi, %%f20 \n\t" + "ld [%0], %%f0 \n\t" + "ld [%0+4], %%f16 \n\t" + "fpmerge %%f3, %%f3, %%f2 \n\t" + "fpmerge %%f19, %%f19, %%f18 \n\t" + "fpmerge %%f5, %%f5, %%f4 \n\t" + "fpmerge %%f21, %%f21, %%f20 \n\t" + YUV2RGB_KERNEL + "fzero %%f0 \n\t" + "fpmerge %%f4, %%f6, %%f8 \n\t" // r,b,t1 + "fpmerge %%f20, %%f22, %%f24 \n\t" // r,b,t1 + "fpmerge %%f0, %%f2, %%f10 \n\t" // 0,g,t2 + "fpmerge %%f0, %%f18, %%f26 \n\t" // 0,g,t2 + "fpmerge %%f10, %%f8, %%f4 \n\t" // t2,t1,msb + "fpmerge %%f26, %%f24, %%f20 \n\t" // t2,t1,msb + "fpmerge %%f11, %%f9, %%f6 \n\t" // t2,t1,lsb + "fpmerge %%f27, %%f25, %%f22 \n\t" // t2,t1,lsb + "std %%f4, [%3] \n\t" + "std %%f20, [%3+16] \n\t" + "std %%f6, [%3+8] \n\t" + "std %%f22, [%3+24] \n\t" - "add %0, 8, %0 \n\t" - "add %1, 4, %1 \n\t" - "add %2, 4, %2 \n\t" - "subcc %4, 8, %4 \n\t" - "bne 1b \n\t" - "add %3, 32, %3 \n\t" //delay slot - : "=r" (out1), "=r" (out2), "=r" (out3), "=r" (out4), "=r" (out5), "=r" (out6) - : "0" (src[0]+(y+srcSliceY)*srcStride[0]), "1" (src[1]+(y+srcSliceY)*srcStride[1]), - "2" (src[2]+(y+srcSliceY)*srcStride[2]), "3" (dst[0]+(y+srcSliceY)*dstStride[0]), - "4" (c->dstW), - "5" (c->sparc_coeffs) - ); - } + "add %0, 8, %0 \n\t" + "add %1, 4, %1 \n\t" + "add %2, 4, %2 \n\t" + "subcc %4, 8, %4 \n\t" + "bne 1b \n\t" + "add %3, 32, %3 \n\t" //delay slot + : "=r" (out1), "=r" (out2), "=r" (out3), "=r" (out4), "=r" (out5), "=r" (out6) + : "0" (src[0]+(y+srcSliceY)*srcStride[0]), "1" (src[1]+(y+srcSliceY)*srcStride[1]), + "2" (src[2]+(y+srcSliceY)*srcStride[2]), "3" (dst[0]+(y+srcSliceY)*dstStride[0]), + "4" (c->dstW), + "5" (c->sparc_coeffs) + ); + } - return srcSliceH; + return srcSliceH; } SwsFunc ff_yuv2rgb_init_vis(SwsContext *c){ diff --git a/libswscale/swscale.c b/libswscale/swscale.c index c513066b25..4742f2fc04 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -366,112 +366,112 @@ DECLARE_ALIGNED(8, const uint8_t, dither_8x8_220[8][8])={ const char *sws_format_name(enum PixelFormat format) { switch (format) { - case PIX_FMT_YUV420P: - return "yuv420p"; - case PIX_FMT_YUVA420P: - return "yuva420p"; - case PIX_FMT_YUYV422: - return "yuyv422"; - case PIX_FMT_RGB24: - return "rgb24"; - case PIX_FMT_BGR24: - return "bgr24"; - case PIX_FMT_YUV422P: - return "yuv422p"; - case PIX_FMT_YUV444P: - return "yuv444p"; - case PIX_FMT_RGB32: - return "rgb32"; - case PIX_FMT_YUV410P: - return "yuv410p"; - case PIX_FMT_YUV411P: - return "yuv411p"; - case PIX_FMT_RGB565: - return "rgb565"; - case PIX_FMT_RGB555: - return "rgb555"; - case PIX_FMT_GRAY16BE: - return "gray16be"; - case PIX_FMT_GRAY16LE: - return "gray16le"; - case PIX_FMT_GRAY8: - return "gray8"; - case PIX_FMT_MONOWHITE: - return "mono white"; - case PIX_FMT_MONOBLACK: - return "mono black"; - case PIX_FMT_PAL8: - return "Palette"; - case PIX_FMT_YUVJ420P: - return "yuvj420p"; - case PIX_FMT_YUVJ422P: - return "yuvj422p"; - case PIX_FMT_YUVJ444P: - return "yuvj444p"; - case PIX_FMT_XVMC_MPEG2_MC: - return "xvmc_mpeg2_mc"; - case PIX_FMT_XVMC_MPEG2_IDCT: - return "xvmc_mpeg2_idct"; - case PIX_FMT_UYVY422: - return "uyvy422"; - case PIX_FMT_UYYVYY411: - return "uyyvyy411"; - case PIX_FMT_RGB32_1: - return "rgb32x"; - case PIX_FMT_BGR32_1: - return "bgr32x"; - case PIX_FMT_BGR32: - return "bgr32"; - case PIX_FMT_BGR565: - return "bgr565"; - case PIX_FMT_BGR555: - return "bgr555"; - case PIX_FMT_BGR8: - return "bgr8"; - case PIX_FMT_BGR4: - return "bgr4"; - case PIX_FMT_BGR4_BYTE: - return "bgr4 byte"; - case PIX_FMT_RGB8: - return "rgb8"; - case PIX_FMT_RGB4: - return "rgb4"; - case PIX_FMT_RGB4_BYTE: - return "rgb4 byte"; - case PIX_FMT_RGB48BE: - return "rgb48be"; - case PIX_FMT_RGB48LE: - return "rgb48le"; - case PIX_FMT_NV12: - return "nv12"; - case PIX_FMT_NV21: - return "nv21"; - case PIX_FMT_YUV440P: - return "yuv440p"; - case PIX_FMT_VDPAU_H264: - return "vdpau_h264"; - case PIX_FMT_VDPAU_MPEG1: - return "vdpau_mpeg1"; - case PIX_FMT_VDPAU_MPEG2: - return "vdpau_mpeg2"; - case PIX_FMT_VDPAU_WMV3: - return "vdpau_wmv3"; - case PIX_FMT_VDPAU_VC1: - return "vdpau_vc1"; - case PIX_FMT_YUV420PLE: - return "yuv420ple"; - case PIX_FMT_YUV422PLE: - return "yuv422ple"; - case PIX_FMT_YUV444PLE: - return "yuv444ple"; - case PIX_FMT_YUV420PBE: - return "yuv420pbe"; - case PIX_FMT_YUV422PBE: - return "yuv422pbe"; - case PIX_FMT_YUV444PBE: - return "yuv444pbe"; - default: - return "Unknown format"; + case PIX_FMT_YUV420P: + return "yuv420p"; + case PIX_FMT_YUVA420P: + return "yuva420p"; + case PIX_FMT_YUYV422: + return "yuyv422"; + case PIX_FMT_RGB24: + return "rgb24"; + case PIX_FMT_BGR24: + return "bgr24"; + case PIX_FMT_YUV422P: + return "yuv422p"; + case PIX_FMT_YUV444P: + return "yuv444p"; + case PIX_FMT_RGB32: + return "rgb32"; + case PIX_FMT_YUV410P: + return "yuv410p"; + case PIX_FMT_YUV411P: + return "yuv411p"; + case PIX_FMT_RGB565: + return "rgb565"; + case PIX_FMT_RGB555: + return "rgb555"; + case PIX_FMT_GRAY16BE: + return "gray16be"; + case PIX_FMT_GRAY16LE: + return "gray16le"; + case PIX_FMT_GRAY8: + return "gray8"; + case PIX_FMT_MONOWHITE: + return "mono white"; + case PIX_FMT_MONOBLACK: + return "mono black"; + case PIX_FMT_PAL8: + return "Palette"; + case PIX_FMT_YUVJ420P: + return "yuvj420p"; + case PIX_FMT_YUVJ422P: + return "yuvj422p"; + case PIX_FMT_YUVJ444P: + return "yuvj444p"; + case PIX_FMT_XVMC_MPEG2_MC: + return "xvmc_mpeg2_mc"; + case PIX_FMT_XVMC_MPEG2_IDCT: + return "xvmc_mpeg2_idct"; + case PIX_FMT_UYVY422: + return "uyvy422"; + case PIX_FMT_UYYVYY411: + return "uyyvyy411"; + case PIX_FMT_RGB32_1: + return "rgb32x"; + case PIX_FMT_BGR32_1: + return "bgr32x"; + case PIX_FMT_BGR32: + return "bgr32"; + case PIX_FMT_BGR565: + return "bgr565"; + case PIX_FMT_BGR555: + return "bgr555"; + case PIX_FMT_BGR8: + return "bgr8"; + case PIX_FMT_BGR4: + return "bgr4"; + case PIX_FMT_BGR4_BYTE: + return "bgr4 byte"; + case PIX_FMT_RGB8: + return "rgb8"; + case PIX_FMT_RGB4: + return "rgb4"; + case PIX_FMT_RGB4_BYTE: + return "rgb4 byte"; + case PIX_FMT_RGB48BE: + return "rgb48be"; + case PIX_FMT_RGB48LE: + return "rgb48le"; + case PIX_FMT_NV12: + return "nv12"; + case PIX_FMT_NV21: + return "nv21"; + case PIX_FMT_YUV440P: + return "yuv440p"; + case PIX_FMT_VDPAU_H264: + return "vdpau_h264"; + case PIX_FMT_VDPAU_MPEG1: + return "vdpau_mpeg1"; + case PIX_FMT_VDPAU_MPEG2: + return "vdpau_mpeg2"; + case PIX_FMT_VDPAU_WMV3: + return "vdpau_wmv3"; + case PIX_FMT_VDPAU_VC1: + return "vdpau_vc1"; + case PIX_FMT_YUV420PLE: + return "yuv420ple"; + case PIX_FMT_YUV422PLE: + return "yuv422ple"; + case PIX_FMT_YUV444PLE: + return "yuv444ple"; + case PIX_FMT_YUV420PBE: + return "yuv420pbe"; + case PIX_FMT_YUV422PBE: + return "yuv422pbe"; + case PIX_FMT_YUV444PBE: + return "yuv444pbe"; + default: + return "Unknown format"; } } @@ -1443,12 +1443,12 @@ static inline void monoblack2Y(uint8_t *dst, const uint8_t *src, long width, uin static double getSplineCoeff(double a, double b, double c, double d, double dist) { // printf("%f %f %f %f %f\n", a,b,c,d,dist); - if (dist<=1.0) return ((d*dist + c)*dist + b)*dist +a; - else return getSplineCoeff( 0.0, - b+ 2.0*c + 3.0*d, - c + 3.0*d, - -b- 3.0*c - 6.0*d, - dist-1.0); + if (dist<=1.0) return ((d*dist + c)*dist + b)*dist +a; + else return getSplineCoeff( 0.0, + b+ 2.0*c + 3.0*d, + c + 3.0*d, + -b- 3.0*c - 6.0*d, + dist-1.0); } static inline int initFilter(int16_t **outFilter, int16_t **filterPos, int *outFilterSize, int xInc, @@ -1515,14 +1515,14 @@ static inline int initFilter(int16_t **outFilter, int16_t **filterPos, int *outF int j; (*filterPos)[i]= xx; - //bilinear upscale / linear interpolate / area averaging - for (j=0; j>16); - if (coeff<0) coeff=0; - filter[i*filterSize + j]= coeff; - xx++; - } + //bilinear upscale / linear interpolate / area averaging + for (j=0; j>16); + if (coeff<0) coeff=0; + filter[i*filterSize + j]= coeff; + xx++; + } xDstInSrc+= xInc; } } @@ -2562,20 +2562,20 @@ int sws_getColorspaceDetails(SwsContext *c, int **inv_table, int *srcRange, int static int handle_jpeg(enum PixelFormat *format) { switch (*format) { - case PIX_FMT_YUVJ420P: - *format = PIX_FMT_YUV420P; - return 1; - case PIX_FMT_YUVJ422P: - *format = PIX_FMT_YUV422P; - return 1; - case PIX_FMT_YUVJ444P: - *format = PIX_FMT_YUV444P; - return 1; - case PIX_FMT_YUVJ440P: - *format = PIX_FMT_YUV440P; - return 1; - default: - return 0; + case PIX_FMT_YUVJ420P: + *format = PIX_FMT_YUV420P; + return 1; + case PIX_FMT_YUVJ422P: + *format = PIX_FMT_YUV422P; + return 1; + case PIX_FMT_YUVJ444P: + *format = PIX_FMT_YUV444P; + return 1; + case PIX_FMT_YUVJ440P: + *format = PIX_FMT_YUV440P; + return 1; + default: + return 0; } } @@ -2837,7 +2837,7 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d if (c->swScale){ if (flags&SWS_PRINT_INFO) av_log(c, AV_LOG_INFO, "using unscaled %s -> %s special converter\n", - sws_format_name(srcFormat), sws_format_name(dstFormat)); + sws_format_name(srcFormat), sws_format_name(dstFormat)); return c; } } diff --git a/libswscale/swscale_template.c b/libswscale/swscale_template.c index 4681d42995..5b73069d6d 100644 --- a/libswscale/swscale_template.c +++ b/libswscale/swscale_template.c @@ -932,13 +932,13 @@ static inline void RENAME(yuv2yuvX)(SwsContext *c, const int16_t *lumFilter, con } #endif #if COMPILE_TEMPLATE_ALTIVEC -yuv2yuvX_altivec_real(lumFilter, lumSrc, lumFilterSize, - chrFilter, chrSrc, chrFilterSize, - dest, uDest, vDest, dstW, chrDstW); + yuv2yuvX_altivec_real(lumFilter, lumSrc, lumFilterSize, + chrFilter, chrSrc, chrFilterSize, + dest, uDest, vDest, dstW, chrDstW); #else //COMPILE_TEMPLATE_ALTIVEC -yuv2yuvXinC(lumFilter, lumSrc, lumFilterSize, - chrFilter, chrSrc, chrFilterSize, - alpSrc, dest, uDest, vDest, aDest, dstW, chrDstW); + yuv2yuvXinC(lumFilter, lumSrc, lumFilterSize, + chrFilter, chrSrc, chrFilterSize, + alpSrc, dest, uDest, vDest, aDest, dstW, chrDstW); #endif //!COMPILE_TEMPLATE_ALTIVEC } @@ -946,9 +946,9 @@ static inline void RENAME(yuv2nv12X)(SwsContext *c, const int16_t *lumFilter, co const int16_t *chrFilter, const int16_t **chrSrc, int chrFilterSize, uint8_t *dest, uint8_t *uDest, int dstW, int chrDstW, int dstFormat) { -yuv2nv12XinC(lumFilter, lumSrc, lumFilterSize, - chrFilter, chrSrc, chrFilterSize, - dest, uDest, dstW, chrDstW, dstFormat); + yuv2nv12XinC(lumFilter, lumSrc, lumFilterSize, + chrFilter, chrSrc, chrFilterSize, + dest, uDest, dstW, chrDstW, dstFormat); } static inline void RENAME(yuv2yuv1)(SwsContext *c, const int16_t *lumSrc, const int16_t *chrSrc, const int16_t *alpSrc, @@ -1198,9 +1198,9 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, const int16_t *lumFilter, /* The following list of supported dstFormat values should match what's found in the body of ff_yuv2packedX_altivec() */ if (!(c->flags & SWS_BITEXACT) && !c->alpPixBuf && - (c->dstFormat==PIX_FMT_ABGR || c->dstFormat==PIX_FMT_BGRA || - c->dstFormat==PIX_FMT_BGR24 || c->dstFormat==PIX_FMT_RGB24 || - c->dstFormat==PIX_FMT_RGBA || c->dstFormat==PIX_FMT_ARGB)) + (c->dstFormat==PIX_FMT_ABGR || c->dstFormat==PIX_FMT_BGRA || + c->dstFormat==PIX_FMT_BGR24 || c->dstFormat==PIX_FMT_RGB24 || + c->dstFormat==PIX_FMT_RGBA || c->dstFormat==PIX_FMT_ARGB)) ff_yuv2packedX_altivec(c, lumFilter, lumSrc, lumFilterSize, chrFilter, chrSrc, chrFilterSize, dest, dstW, dstY); @@ -1358,7 +1358,7 @@ static inline void RENAME(yuv2packed2)(SwsContext *c, const uint16_t *buf0, cons } } #endif //COMPILE_TEMPLATE_MMX -YSCALE_YUV_2_ANYRGB_C(YSCALE_YUV_2_RGB2_C, YSCALE_YUV_2_PACKED2_C(void,0), YSCALE_YUV_2_GRAY16_2_C, YSCALE_YUV_2_MONO2_C) + YSCALE_YUV_2_ANYRGB_C(YSCALE_YUV_2_RGB2_C, YSCALE_YUV_2_PACKED2_C(void,0), YSCALE_YUV_2_GRAY16_2_C, YSCALE_YUV_2_MONO2_C) } /** @@ -2305,14 +2305,14 @@ static inline void RENAME(hyscale)(SwsContext *c, uint16_t *dst, long dstWidth, #endif /* ARCH_X86_64 */ -CALL_MMX2_FILTER_CODE -CALL_MMX2_FILTER_CODE -CALL_MMX2_FILTER_CODE -CALL_MMX2_FILTER_CODE -CALL_MMX2_FILTER_CODE -CALL_MMX2_FILTER_CODE -CALL_MMX2_FILTER_CODE -CALL_MMX2_FILTER_CODE + CALL_MMX2_FILTER_CODE + CALL_MMX2_FILTER_CODE + CALL_MMX2_FILTER_CODE + CALL_MMX2_FILTER_CODE + CALL_MMX2_FILTER_CODE + CALL_MMX2_FILTER_CODE + CALL_MMX2_FILTER_CODE + CALL_MMX2_FILTER_CODE #if defined(PIC) "mov %5, %%"REG_b" \n\t" @@ -2470,10 +2470,10 @@ inline static void RENAME(hcscale)(SwsContext *c, uint16_t *dst, long dstWidth, PREFETCH" 32(%%"REG_c") \n\t" PREFETCH" 64(%%"REG_c") \n\t" -CALL_MMX2_FILTER_CODE -CALL_MMX2_FILTER_CODE -CALL_MMX2_FILTER_CODE -CALL_MMX2_FILTER_CODE + CALL_MMX2_FILTER_CODE + CALL_MMX2_FILTER_CODE + CALL_MMX2_FILTER_CODE + CALL_MMX2_FILTER_CODE "xor %%"REG_a", %%"REG_a" \n\t" // i "mov %5, %%"REG_c" \n\t" // src "mov %1, %%"REG_D" \n\t" // buf1 @@ -2482,10 +2482,10 @@ CALL_MMX2_FILTER_CODE PREFETCH" 32(%%"REG_c") \n\t" PREFETCH" 64(%%"REG_c") \n\t" -CALL_MMX2_FILTER_CODE -CALL_MMX2_FILTER_CODE -CALL_MMX2_FILTER_CODE -CALL_MMX2_FILTER_CODE + CALL_MMX2_FILTER_CODE + CALL_MMX2_FILTER_CODE + CALL_MMX2_FILTER_CODE + CALL_MMX2_FILTER_CODE #if defined(PIC) "mov %6, %%"REG_b" \n\t" @@ -2754,60 +2754,60 @@ static int RENAME(swScale)(SwsContext *c, uint8_t* src[], int srcStride[], int s const int16_t **alpSrcPtr= (CONFIG_SWSCALE_ALPHA && alpPixBuf) ? (const int16_t **) alpPixBuf + lumBufIndex + firstLumSrcY - lastInLumBuf + vLumBufSize : NULL; #if COMPILE_TEMPLATE_MMX int i; - if (flags & SWS_ACCURATE_RND){ - int s= APCK_SIZE / 8; - for (i=0; i1)]; - lumMmxFilter[s*i+APCK_COEF/4 ]= - lumMmxFilter[s*i+APCK_COEF/4+1]= vLumFilter[dstY*vLumFilterSize + i ] - + (vLumFilterSize>1 ? vLumFilter[dstY*vLumFilterSize + i + 1]<<16 : 0); - if (CONFIG_SWSCALE_ALPHA && alpPixBuf){ - *(void**)&alpMmxFilter[s*i ]= alpSrcPtr[i ]; - *(void**)&alpMmxFilter[s*i+APCK_PTR2/4 ]= alpSrcPtr[i+(vLumFilterSize>1)]; - alpMmxFilter[s*i+APCK_COEF/4 ]= - alpMmxFilter[s*i+APCK_COEF/4+1]= lumMmxFilter[s*i+APCK_COEF/4 ]; + if (flags & SWS_ACCURATE_RND){ + int s= APCK_SIZE / 8; + for (i=0; i1)]; + lumMmxFilter[s*i+APCK_COEF/4 ]= + lumMmxFilter[s*i+APCK_COEF/4+1]= vLumFilter[dstY*vLumFilterSize + i ] + + (vLumFilterSize>1 ? vLumFilter[dstY*vLumFilterSize + i + 1]<<16 : 0); + if (CONFIG_SWSCALE_ALPHA && alpPixBuf){ + *(void**)&alpMmxFilter[s*i ]= alpSrcPtr[i ]; + *(void**)&alpMmxFilter[s*i+APCK_PTR2/4 ]= alpSrcPtr[i+(vLumFilterSize>1)]; + alpMmxFilter[s*i+APCK_COEF/4 ]= + alpMmxFilter[s*i+APCK_COEF/4+1]= lumMmxFilter[s*i+APCK_COEF/4 ]; + } + } + for (i=0; i1)]; + chrMmxFilter[s*i+APCK_COEF/4 ]= + chrMmxFilter[s*i+APCK_COEF/4+1]= vChrFilter[chrDstY*vChrFilterSize + i ] + + (vChrFilterSize>1 ? vChrFilter[chrDstY*vChrFilterSize + i + 1]<<16 : 0); + } + }else{ + for (i=0; i> 32; + lumMmxFilter[4*i+2]= + lumMmxFilter[4*i+3]= + ((uint16_t)vLumFilter[dstY*vLumFilterSize + i])*0x10001; + if (CONFIG_SWSCALE_ALPHA && alpPixBuf){ + alpMmxFilter[4*i+0]= (int32_t)alpSrcPtr[i]; + alpMmxFilter[4*i+1]= (uint64_t)alpSrcPtr[i] >> 32; + alpMmxFilter[4*i+2]= + alpMmxFilter[4*i+3]= lumMmxFilter[4*i+2]; + } + } + for (i=0; i> 32; + chrMmxFilter[4*i+2]= + chrMmxFilter[4*i+3]= + ((uint16_t)vChrFilter[chrDstY*vChrFilterSize + i])*0x10001; } } - for (i=0; i1)]; - chrMmxFilter[s*i+APCK_COEF/4 ]= - chrMmxFilter[s*i+APCK_COEF/4+1]= vChrFilter[chrDstY*vChrFilterSize + i ] - + (vChrFilterSize>1 ? vChrFilter[chrDstY*vChrFilterSize + i + 1]<<16 : 0); - } - }else{ - for (i=0; i> 32; - lumMmxFilter[4*i+2]= - lumMmxFilter[4*i+3]= - ((uint16_t)vLumFilter[dstY*vLumFilterSize + i])*0x10001; - if (CONFIG_SWSCALE_ALPHA && alpPixBuf){ - alpMmxFilter[4*i+0]= (int32_t)alpSrcPtr[i]; - alpMmxFilter[4*i+1]= (uint64_t)alpSrcPtr[i] >> 32; - alpMmxFilter[4*i+2]= - alpMmxFilter[4*i+3]= lumMmxFilter[4*i+2]; - } - } - for (i=0; i> 32; - chrMmxFilter[4*i+2]= - chrMmxFilter[4*i+3]= - ((uint16_t)vChrFilter[chrDstY*vChrFilterSize + i])*0x10001; - } - } #endif if (dstFormat == PIX_FMT_NV12 || dstFormat == PIX_FMT_NV21){ const int chrSkipMask= (1<chrDstVSubSample)-1; if (dstY&chrSkipMask) uDest= NULL; //FIXME split functions in lumi / chromi c->yuv2nv12X(c, - vLumFilter+dstY*vLumFilterSize , lumSrcPtr, vLumFilterSize, - vChrFilter+chrDstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, - dest, uDest, dstW, chrDstW, dstFormat); + vLumFilter+dstY*vLumFilterSize , lumSrcPtr, vLumFilterSize, + vChrFilter+chrDstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, + dest, uDest, dstW, chrDstW, dstFormat); } else if (isPlanarYUV(dstFormat) || dstFormat==PIX_FMT_GRAY8) //YV12 like { @@ -2816,10 +2816,10 @@ static int RENAME(swScale)(SwsContext *c, uint8_t* src[], int srcStride[], int s if (is16BPS(dstFormat)) { yuv2yuvX16inC( - vLumFilter+dstY*vLumFilterSize , lumSrcPtr, vLumFilterSize, - vChrFilter+chrDstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, - alpSrcPtr, (uint16_t *) dest, (uint16_t *) uDest, (uint16_t *) vDest, (uint16_t *) aDest, dstW, chrDstW, - dstFormat); + vLumFilter+dstY*vLumFilterSize , lumSrcPtr, vLumFilterSize, + vChrFilter+chrDstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, + alpSrcPtr, (uint16_t *) dest, (uint16_t *) uDest, (uint16_t *) vDest, (uint16_t *) aDest, dstW, chrDstW, + dstFormat); } else if (vLumFilterSize == 1 && vChrFilterSize == 1) // unscaled YV12 @@ -2832,9 +2832,9 @@ static int RENAME(swScale)(SwsContext *c, uint8_t* src[], int srcStride[], int s else //General YV12 { c->yuv2yuvX(c, - vLumFilter+dstY*vLumFilterSize , lumSrcPtr, vLumFilterSize, - vChrFilter+chrDstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, - alpSrcPtr, dest, uDest, vDest, aDest, dstW, chrDstW); + vLumFilter+dstY*vLumFilterSize , lumSrcPtr, vLumFilterSize, + vChrFilter+chrDstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, + alpSrcPtr, dest, uDest, vDest, aDest, dstW, chrDstW); } } else @@ -2846,13 +2846,13 @@ static int RENAME(swScale)(SwsContext *c, uint8_t* src[], int srcStride[], int s int chrAlpha= vChrFilter[2*dstY+1]; if(flags & SWS_FULL_CHR_H_INT){ yuv2rgbXinC_full(c, //FIXME write a packed1_full function - vLumFilter+dstY*vLumFilterSize, lumSrcPtr, vLumFilterSize, - vChrFilter+dstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, - alpSrcPtr, dest, dstW, dstY); + vLumFilter+dstY*vLumFilterSize, lumSrcPtr, vLumFilterSize, + vChrFilter+dstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, + alpSrcPtr, dest, dstW, dstY); }else{ c->yuv2packed1(c, *lumSrcPtr, *chrSrcPtr, *(chrSrcPtr+1), - alpPixBuf ? *alpSrcPtr : NULL, - dest, dstW, chrAlpha, dstFormat, flags, dstY); + alpPixBuf ? *alpSrcPtr : NULL, + dest, dstW, chrAlpha, dstFormat, flags, dstY); } } else if (vLumFilterSize == 2 && vChrFilterSize == 2) //bilinear upscale RGB @@ -2865,27 +2865,27 @@ static int RENAME(swScale)(SwsContext *c, uint8_t* src[], int srcStride[], int s chrMmxFilter[3]= vChrFilter[2*chrDstY]*0x10001; if(flags & SWS_FULL_CHR_H_INT){ yuv2rgbXinC_full(c, //FIXME write a packed2_full function - vLumFilter+dstY*vLumFilterSize, lumSrcPtr, vLumFilterSize, - vChrFilter+dstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, - alpSrcPtr, dest, dstW, dstY); + vLumFilter+dstY*vLumFilterSize, lumSrcPtr, vLumFilterSize, + vChrFilter+dstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, + alpSrcPtr, dest, dstW, dstY); }else{ c->yuv2packed2(c, *lumSrcPtr, *(lumSrcPtr+1), *chrSrcPtr, *(chrSrcPtr+1), - alpPixBuf ? *alpSrcPtr : NULL, alpPixBuf ? *(alpSrcPtr+1) : NULL, - dest, dstW, lumAlpha, chrAlpha, dstY); + alpPixBuf ? *alpSrcPtr : NULL, alpPixBuf ? *(alpSrcPtr+1) : NULL, + dest, dstW, lumAlpha, chrAlpha, dstY); } } else //general RGB { if(flags & SWS_FULL_CHR_H_INT){ yuv2rgbXinC_full(c, - vLumFilter+dstY*vLumFilterSize, lumSrcPtr, vLumFilterSize, - vChrFilter+dstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, - alpSrcPtr, dest, dstW, dstY); + vLumFilter+dstY*vLumFilterSize, lumSrcPtr, vLumFilterSize, + vChrFilter+dstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, + alpSrcPtr, dest, dstW, dstY); }else{ c->yuv2packedX(c, - vLumFilter+dstY*vLumFilterSize, lumSrcPtr, vLumFilterSize, - vChrFilter+dstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, - alpSrcPtr, dest, dstW, dstY); + vLumFilter+dstY*vLumFilterSize, lumSrcPtr, vLumFilterSize, + vChrFilter+dstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, + alpSrcPtr, dest, dstW, dstY); } } } @@ -2899,9 +2899,9 @@ static int RENAME(swScale)(SwsContext *c, uint8_t* src[], int srcStride[], int s const int chrSkipMask= (1<chrDstVSubSample)-1; if (dstY&chrSkipMask) uDest= NULL; //FIXME split functions in lumi / chromi yuv2nv12XinC( - vLumFilter+dstY*vLumFilterSize , lumSrcPtr, vLumFilterSize, - vChrFilter+chrDstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, - dest, uDest, dstW, chrDstW, dstFormat); + vLumFilter+dstY*vLumFilterSize , lumSrcPtr, vLumFilterSize, + vChrFilter+chrDstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, + dest, uDest, dstW, chrDstW, dstFormat); } else if (isPlanarYUV(dstFormat) || dstFormat==PIX_FMT_GRAY8) //YV12 { @@ -2910,17 +2910,17 @@ static int RENAME(swScale)(SwsContext *c, uint8_t* src[], int srcStride[], int s if (is16BPS(dstFormat)) { yuv2yuvX16inC( - vLumFilter+dstY*vLumFilterSize , lumSrcPtr, vLumFilterSize, - vChrFilter+chrDstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, - alpSrcPtr, (uint16_t *) dest, (uint16_t *) uDest, (uint16_t *) vDest, (uint16_t *) aDest, dstW, chrDstW, - dstFormat); + vLumFilter+dstY*vLumFilterSize , lumSrcPtr, vLumFilterSize, + vChrFilter+chrDstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, + alpSrcPtr, (uint16_t *) dest, (uint16_t *) uDest, (uint16_t *) vDest, (uint16_t *) aDest, dstW, chrDstW, + dstFormat); } else { yuv2yuvXinC( - vLumFilter+dstY*vLumFilterSize , lumSrcPtr, vLumFilterSize, - vChrFilter+chrDstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, - alpSrcPtr, dest, uDest, vDest, aDest, dstW, chrDstW); + vLumFilter+dstY*vLumFilterSize , lumSrcPtr, vLumFilterSize, + vChrFilter+chrDstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, + alpSrcPtr, dest, uDest, vDest, aDest, dstW, chrDstW); } } else @@ -2929,14 +2929,14 @@ static int RENAME(swScale)(SwsContext *c, uint8_t* src[], int srcStride[], int s assert(chrSrcPtr + vChrFilterSize - 1 < chrPixBuf + vChrBufSize*2); if(flags & SWS_FULL_CHR_H_INT){ yuv2rgbXinC_full(c, - vLumFilter+dstY*vLumFilterSize, lumSrcPtr, vLumFilterSize, - vChrFilter+dstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, - alpSrcPtr, dest, dstW, dstY); + vLumFilter+dstY*vLumFilterSize, lumSrcPtr, vLumFilterSize, + vChrFilter+dstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, + alpSrcPtr, dest, dstW, dstY); }else{ yuv2packedXinC(c, - vLumFilter+dstY*vLumFilterSize, lumSrcPtr, vLumFilterSize, - vChrFilter+dstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, - alpSrcPtr, dest, dstW, dstY); + vLumFilter+dstY*vLumFilterSize, lumSrcPtr, vLumFilterSize, + vChrFilter+dstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, + alpSrcPtr, dest, dstW, dstY); } } } From b490da35c890b423ee121581c95910685a584857 Mon Sep 17 00:00:00 2001 From: ramiro Date: Sun, 16 Aug 2009 21:11:28 +0000 Subject: [PATCH 68/77] Cosmetics: - Place curly brackets in the same line as while/for/if/switch/else/do; - Place curly brackets at column 0 in the next line starting a function. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29523 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libswscale/colorspace-test.c | 20 +- libswscale/mlib/yuv2rgb_mlib.c | 17 +- libswscale/options.c | 3 +- libswscale/ppc/swscale_altivec_template.c | 9 +- libswscale/ppc/yuv2rgb_altivec.c | 6 +- libswscale/rgb2rgb.c | 39 +- libswscale/rgb2rgb_template.c | 235 ++++---- libswscale/sparc/yuv2rgb_vis.c | 9 +- libswscale/swscale-example.c | 24 +- libswscale/swscale.c | 627 ++++++++++------------ libswscale/swscale_internal.h | 2 +- libswscale/swscale_template.c | 310 ++++------- libswscale/x86/yuv2rgb_mmx.c | 16 +- libswscale/x86/yuv2rgb_template.c | 23 +- libswscale/yuv2rgb.c | 5 +- 15 files changed, 579 insertions(+), 766 deletions(-) diff --git a/libswscale/colorspace-test.c b/libswscale/colorspace-test.c index a1ec1be1b4..dbdf6bef90 100644 --- a/libswscale/colorspace-test.c +++ b/libswscale/colorspace-test.c @@ -71,7 +71,7 @@ int main(int argc, char **argv) av_log(NULL, AV_LOG_INFO, "CPU capabilities forced to %x\n", cpu_caps); sws_rgb2rgb_init(cpu_caps); - for(funcNum=0; ; funcNum++){ + for(funcNum=0; ; funcNum++) { struct func_info_s { int src_bpp; int dst_bpp; @@ -118,13 +118,13 @@ int main(int argc, char **argv) av_log(NULL, AV_LOG_INFO,"."); memset(srcBuffer, srcByte, SIZE); - for(width=63; width>0; width--){ + for(width=63; width>0; width--) { int dstOffset; - for(dstOffset=128; dstOffset<196; dstOffset+=4){ + for(dstOffset=128; dstOffset<196; dstOffset+=4) { int srcOffset; memset(dstBuffer, dstByte, SIZE); - for(srcOffset=128; srcOffset<196; srcOffset+=4){ + for(srcOffset=128; srcOffset<196; srcOffset+=4) { uint8_t *src= srcBuffer+srcOffset; uint8_t *dst= dstBuffer+dstOffset; const char *name=NULL; @@ -139,24 +139,24 @@ int main(int argc, char **argv) if(!srcBpp) break; - for(i=0; isrcFormat == PIX_FMT_YUV422P){ + int srcSliceH, uint8_t* dst[], int dstStride[]) +{ + if(c->srcFormat == PIX_FMT_YUV422P) { srcStride[1] *= 2; srcStride[2] *= 2; } @@ -45,8 +46,9 @@ static int mlib_YUV2ARGB420_32(SwsContext *c, uint8_t* src[], int srcStride[], i } static int mlib_YUV2ABGR420_32(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dst[], int dstStride[]){ - if(c->srcFormat == PIX_FMT_YUV422P){ + int srcSliceH, uint8_t* dst[], int dstStride[]) +{ + if(c->srcFormat == PIX_FMT_YUV422P) { srcStride[1] *= 2; srcStride[2] *= 2; } @@ -59,8 +61,9 @@ static int mlib_YUV2ABGR420_32(SwsContext *c, uint8_t* src[], int srcStride[], i } static int mlib_YUV2RGB420_24(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dst[], int dstStride[]){ - if(c->srcFormat == PIX_FMT_YUV422P){ + int srcSliceH, uint8_t* dst[], int dstStride[]) +{ + if(c->srcFormat == PIX_FMT_YUV422P) { srcStride[1] *= 2; srcStride[2] *= 2; } @@ -75,7 +78,7 @@ static int mlib_YUV2RGB420_24(SwsContext *c, uint8_t* src[], int srcStride[], in SwsFunc ff_yuv2rgb_init_mlib(SwsContext *c) { - switch(c->dstFormat){ + switch(c->dstFormat) { case PIX_FMT_RGB24: return mlib_YUV2RGB420_24; case PIX_FMT_BGR32: return mlib_YUV2ARGB420_32; case PIX_FMT_RGB32: return mlib_YUV2ABGR420_32; diff --git a/libswscale/options.c b/libswscale/options.c index 996843df1d..75564cbea4 100644 --- a/libswscale/options.c +++ b/libswscale/options.c @@ -23,7 +23,8 @@ #include "swscale.h" #include "swscale_internal.h" -static const char * sws_context_to_name(void * ptr) { +static const char * sws_context_to_name(void * ptr) +{ return "swscaler"; } diff --git a/libswscale/ppc/swscale_altivec_template.c b/libswscale/ppc/swscale_altivec_template.c index 8919177bcc..23da6b0178 100644 --- a/libswscale/ppc/swscale_altivec_template.c +++ b/libswscale/ppc/swscale_altivec_template.c @@ -24,7 +24,8 @@ #define vzero vec_splat_s32(0) static inline void -altivec_packIntArrayToCharArray(int *val, uint8_t* dest, int dstW) { +altivec_packIntArrayToCharArray(int *val, uint8_t* dest, int dstW) +{ register int i; vector unsigned int altivec_vectorShiftInt19 = vec_add(vec_splat_u32(10), vec_splat_u32(9)); @@ -389,7 +390,8 @@ static inline void hScale_altivec_real(int16_t *dst, int dstW, } static inline int yv12toyuy2_unscaled_altivec(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dstParam[], int dstStride_a[]) { + int srcSliceH, uint8_t* dstParam[], int dstStride_a[]) +{ uint8_t *dst=dstParam[0] + dstStride_a[0]*srcSliceY; // yv12toyuy2(src[0], src[1], src[2], dst, c->srcW, srcSliceH, srcStride[0], srcStride[1], dstStride[0]); uint8_t *ysrc = src[0]; @@ -466,7 +468,8 @@ static inline int yv12toyuy2_unscaled_altivec(SwsContext *c, uint8_t* src[], int } static inline int yv12touyvy_unscaled_altivec(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dstParam[], int dstStride_a[]) { + int srcSliceH, uint8_t* dstParam[], int dstStride_a[]) +{ uint8_t *dst=dstParam[0] + dstStride_a[0]*srcSliceY; // yv12toyuy2(src[0], src[1], src[2], dst, c->srcW, srcSliceH, srcStride[0], srcStride[1], dstStride[0]); uint8_t *ysrc = src[0]; diff --git a/libswscale/ppc/yuv2rgb_altivec.c b/libswscale/ppc/yuv2rgb_altivec.c index 57acc6bc3e..ff5fab713e 100644 --- a/libswscale/ppc/yuv2rgb_altivec.c +++ b/libswscale/ppc/yuv2rgb_altivec.c @@ -714,7 +714,7 @@ SwsFunc ff_yuv2rgb_init_altivec(SwsContext *c) if ((c->srcH & 0x1) != 0) return NULL; - switch(c->dstFormat){ + switch(c->dstFormat) { case PIX_FMT_RGB24: av_log(c, AV_LOG_WARNING, "ALTIVEC: Color Space RGB24\n"); return altivec_yuv2_rgb24; @@ -738,7 +738,7 @@ SwsFunc ff_yuv2rgb_init_altivec(SwsContext *c) break; case PIX_FMT_UYVY422: - switch(c->dstFormat){ + switch(c->dstFormat) { case PIX_FMT_BGR32: av_log(c, AV_LOG_WARNING, "ALTIVEC: Color Space UYVY -> RGB32\n"); return altivec_uyvy_rgb32; @@ -800,7 +800,7 @@ ff_yuv2packedX_altivec(SwsContext *c, out = (vector unsigned char *)dest; - for (i=0; i> 2; - for (i=0; i BGR24 (= B,G,R) */ dst[3*i + 0] = src[4*i + 1]; @@ -291,8 +290,7 @@ void rgb32to24(const uint8_t *src, uint8_t *dst, long src_size) void rgb24to32(const uint8_t *src, uint8_t *dst, long src_size) { long i; - for (i=0; 3*i BGR32 (= A,R,G,B) */ dst[4*i + 0] = 255; @@ -314,8 +312,7 @@ void rgb16tobgr32(const uint8_t *src, uint8_t *dst, long src_size) uint8_t *d = dst; const uint16_t *s = (const uint16_t *)src; end = s + src_size/2; - while (s < end) - { + while (s < end) { register uint16_t bgr; bgr = *s++; #if HAVE_BIGENDIAN @@ -338,8 +335,7 @@ void rgb16to24(const uint8_t *src, uint8_t *dst, long src_size) uint8_t *d = dst; const uint16_t *s = (const uint16_t *)src; end = s + src_size/2; - while (s < end) - { + while (s < end) { register uint16_t bgr; bgr = *s++; *d++ = (bgr&0xF800)>>8; @@ -353,8 +349,7 @@ void rgb16tobgr16(const uint8_t *src, uint8_t *dst, long src_size) long i; long num_pixels = src_size >> 1; - for (i=0; i>11) | (rgb&0x7E0) | (rgb<<11); } @@ -365,8 +360,7 @@ void rgb16tobgr15(const uint8_t *src, uint8_t *dst, long src_size) long i; long num_pixels = src_size >> 1; - for (i=0; i>11) | ((rgb&0x7C0)>>1) | ((rgb&0x1F)<<10); } @@ -378,8 +372,7 @@ void rgb15tobgr32(const uint8_t *src, uint8_t *dst, long src_size) uint8_t *d = dst; const uint16_t *s = (const uint16_t *)src; end = s + src_size/2; - while (s < end) - { + while (s < end) { register uint16_t bgr; bgr = *s++; #if HAVE_BIGENDIAN @@ -402,8 +395,7 @@ void rgb15to24(const uint8_t *src, uint8_t *dst, long src_size) uint8_t *d = dst; const uint16_t *s = (const uint16_t *)src; end = s + src_size/2; - while (s < end) - { + while (s < end) { register uint16_t bgr; bgr = *s++; *d++ = (bgr&0x7C00)>>7; @@ -417,8 +409,7 @@ void rgb15tobgr16(const uint8_t *src, uint8_t *dst, long src_size) long i; long num_pixels = src_size >> 1; - for (i=0; i>10) | ((rgb&0x3E0)<<1) | (rgb<<11); } @@ -429,8 +420,7 @@ void rgb15tobgr15(const uint8_t *src, uint8_t *dst, long src_size) long i; long num_pixels = src_size >> 1; - for (i=0; i RGB32 (= A,B,G,R) */ *dest++ = 255; @@ -143,8 +141,7 @@ static inline void RENAME(rgb32tobgr24)(const uint8_t *src, uint8_t *dst, long s #if HAVE_MMX __asm__ volatile(PREFETCH" %0"::"m"(*s):"memory"); mm_end = end - 31; - while (s < mm_end) - { + while (s < mm_end) { __asm__ volatile( PREFETCH" 32%1 \n\t" "movq %1, %%mm0 \n\t" @@ -199,8 +196,7 @@ static inline void RENAME(rgb32tobgr24)(const uint8_t *src, uint8_t *dst, long s __asm__ volatile(SFENCE:::"memory"); __asm__ volatile(EMMS:::"memory"); #endif - while (s < end) - { + while (s < end) { #if HAVE_BIGENDIAN /* RGB32 (= A,B,G,R) -> RGB24 (= R,G,B) */ s++; @@ -234,8 +230,7 @@ static inline void RENAME(rgb15to16)(const uint8_t *src, uint8_t *dst, long src_ __asm__ volatile(PREFETCH" %0"::"m"(*s)); __asm__ volatile("movq %0, %%mm4"::"m"(mask15s)); mm_end = end - 15; - while (s>1)&0x7FE07FE0) | (x&0x001F001F); s+=4; d+=4; } - if (s < end) - { + if (s < end) { register uint16_t x= *((const uint16_t*)s); *((uint16_t *)d) = ((x>>1)&0x7FE0) | (x&0x001F); } @@ -378,8 +368,7 @@ static inline void RENAME(rgb32to16)(const uint8_t *src, uint8_t *dst, long src_ "movq %0, %%mm7 \n\t" "movq %1, %%mm6 \n\t" ::"m"(red_16mask),"m"(green_16mask)); - while (s < mm_end) - { + while (s < mm_end) { __asm__ volatile( PREFETCH" 32%1 \n\t" "movd %1, %%mm0 \n\t" @@ -417,8 +406,7 @@ static inline void RENAME(rgb32to16)(const uint8_t *src, uint8_t *dst, long src_ __asm__ volatile(SFENCE:::"memory"); __asm__ volatile(EMMS:::"memory"); #endif - while (s < end) - { + while (s < end) { register int rgb = *(const uint32_t*)s; s += 4; *d++ = ((rgb&0xFF)>>3) + ((rgb&0xFC00)>>5) + ((rgb&0xF80000)>>8); } @@ -440,8 +428,7 @@ static inline void RENAME(rgb32tobgr16)(const uint8_t *src, uint8_t *dst, long s "movq %1, %%mm6 \n\t" ::"m"(red_16mask),"m"(green_16mask)); mm_end = end - 15; - while (s < mm_end) - { + while (s < mm_end) { __asm__ volatile( PREFETCH" 32%1 \n\t" "movd %1, %%mm0 \n\t" @@ -478,8 +465,7 @@ static inline void RENAME(rgb32tobgr16)(const uint8_t *src, uint8_t *dst, long s __asm__ volatile(SFENCE:::"memory"); __asm__ volatile(EMMS:::"memory"); #endif - while (s < end) - { + while (s < end) { register int rgb = *(const uint32_t*)s; s += 4; *d++ = ((rgb&0xF8)<<8) + ((rgb&0xFC00)>>5) + ((rgb&0xF80000)>>19); } @@ -537,8 +523,7 @@ static inline void RENAME(rgb32to15)(const uint8_t *src, uint8_t *dst, long src_ "movq %0, %%mm7 \n\t" "movq %1, %%mm6 \n\t" ::"m"(red_15mask),"m"(green_15mask)); - while (s < mm_end) - { + while (s < mm_end) { __asm__ volatile( PREFETCH" 32%1 \n\t" "movd %1, %%mm0 \n\t" @@ -576,8 +561,7 @@ static inline void RENAME(rgb32to15)(const uint8_t *src, uint8_t *dst, long src_ __asm__ volatile(SFENCE:::"memory"); __asm__ volatile(EMMS:::"memory"); #endif - while (s < end) - { + while (s < end) { register int rgb = *(const uint32_t*)s; s += 4; *d++ = ((rgb&0xFF)>>3) + ((rgb&0xF800)>>6) + ((rgb&0xF80000)>>9); } @@ -599,8 +583,7 @@ static inline void RENAME(rgb32tobgr15)(const uint8_t *src, uint8_t *dst, long s "movq %1, %%mm6 \n\t" ::"m"(red_15mask),"m"(green_15mask)); mm_end = end - 15; - while (s < mm_end) - { + while (s < mm_end) { __asm__ volatile( PREFETCH" 32%1 \n\t" "movd %1, %%mm0 \n\t" @@ -637,8 +620,7 @@ static inline void RENAME(rgb32tobgr15)(const uint8_t *src, uint8_t *dst, long s __asm__ volatile(SFENCE:::"memory"); __asm__ volatile(EMMS:::"memory"); #endif - while (s < end) - { + while (s < end) { register int rgb = *(const uint32_t*)s; s += 4; *d++ = ((rgb&0xF8)<<7) + ((rgb&0xF800)>>6) + ((rgb&0xF80000)>>19); } @@ -660,8 +642,7 @@ static inline void RENAME(rgb24tobgr16)(const uint8_t *src, uint8_t *dst, long s "movq %1, %%mm6 \n\t" ::"m"(red_16mask),"m"(green_16mask)); mm_end = end - 11; - while (s < mm_end) - { + while (s < mm_end) { __asm__ volatile( PREFETCH" 32%1 \n\t" "movd %1, %%mm0 \n\t" @@ -698,8 +679,7 @@ static inline void RENAME(rgb24tobgr16)(const uint8_t *src, uint8_t *dst, long s __asm__ volatile(SFENCE:::"memory"); __asm__ volatile(EMMS:::"memory"); #endif - while (s < end) - { + while (s < end) { const int b = *s++; const int g = *s++; const int r = *s++; @@ -723,8 +703,7 @@ static inline void RENAME(rgb24to16)(const uint8_t *src, uint8_t *dst, long src_ "movq %1, %%mm6 \n\t" ::"m"(red_16mask),"m"(green_16mask)); mm_end = end - 15; - while (s < mm_end) - { + while (s < mm_end) { __asm__ volatile( PREFETCH" 32%1 \n\t" "movd %1, %%mm0 \n\t" @@ -761,8 +740,7 @@ static inline void RENAME(rgb24to16)(const uint8_t *src, uint8_t *dst, long src_ __asm__ volatile(SFENCE:::"memory"); __asm__ volatile(EMMS:::"memory"); #endif - while (s < end) - { + while (s < end) { const int r = *s++; const int g = *s++; const int b = *s++; @@ -786,8 +764,7 @@ static inline void RENAME(rgb24tobgr15)(const uint8_t *src, uint8_t *dst, long s "movq %1, %%mm6 \n\t" ::"m"(red_15mask),"m"(green_15mask)); mm_end = end - 11; - while (s < mm_end) - { + while (s < mm_end) { __asm__ volatile( PREFETCH" 32%1 \n\t" "movd %1, %%mm0 \n\t" @@ -824,8 +801,7 @@ static inline void RENAME(rgb24tobgr15)(const uint8_t *src, uint8_t *dst, long s __asm__ volatile(SFENCE:::"memory"); __asm__ volatile(EMMS:::"memory"); #endif - while (s < end) - { + while (s < end) { const int b = *s++; const int g = *s++; const int r = *s++; @@ -849,8 +825,7 @@ static inline void RENAME(rgb24to15)(const uint8_t *src, uint8_t *dst, long src_ "movq %1, %%mm6 \n\t" ::"m"(red_15mask),"m"(green_15mask)); mm_end = end - 15; - while (s < mm_end) - { + while (s < mm_end) { __asm__ volatile( PREFETCH" 32%1 \n\t" "movd %1, %%mm0 \n\t" @@ -887,8 +862,7 @@ static inline void RENAME(rgb24to15)(const uint8_t *src, uint8_t *dst, long src_ __asm__ volatile(SFENCE:::"memory"); __asm__ volatile(EMMS:::"memory"); #endif - while (s < end) - { + while (s < end) { const int r = *s++; const int g = *s++; const int b = *s++; @@ -929,8 +903,7 @@ static inline void RENAME(rgb15tobgr24)(const uint8_t *src, uint8_t *dst, long s #if HAVE_MMX __asm__ volatile(PREFETCH" %0"::"m"(*s):"memory"); mm_end = end - 7; - while (s < mm_end) - { + while (s < mm_end) { __asm__ volatile( PREFETCH" 32%1 \n\t" "movq %1, %%mm0 \n\t" @@ -1049,8 +1022,7 @@ static inline void RENAME(rgb15tobgr24)(const uint8_t *src, uint8_t *dst, long s __asm__ volatile(SFENCE:::"memory"); __asm__ volatile(EMMS:::"memory"); #endif - while (s < end) - { + while (s < end) { register uint16_t bgr; bgr = *s++; *d++ = (bgr&0x1F)<<3; @@ -1071,8 +1043,7 @@ static inline void RENAME(rgb16tobgr24)(const uint8_t *src, uint8_t *dst, long s #if HAVE_MMX __asm__ volatile(PREFETCH" %0"::"m"(*s):"memory"); mm_end = end - 7; - while (s < mm_end) - { + while (s < mm_end) { __asm__ volatile( PREFETCH" 32%1 \n\t" "movq %1, %%mm0 \n\t" @@ -1190,8 +1161,7 @@ static inline void RENAME(rgb16tobgr24)(const uint8_t *src, uint8_t *dst, long s __asm__ volatile(SFENCE:::"memory"); __asm__ volatile(EMMS:::"memory"); #endif - while (s < end) - { + while (s < end) { register uint16_t bgr; bgr = *s++; *d++ = (bgr&0x1F)<<3; @@ -1233,8 +1203,7 @@ static inline void RENAME(rgb15to32)(const uint8_t *src, uint8_t *dst, long src_ __asm__ volatile("pxor %%mm7,%%mm7 \n\t":::"memory"); __asm__ volatile("pcmpeqd %%mm6,%%mm6 \n\t":::"memory"); mm_end = end - 3; - while (s < mm_end) - { + while (s < mm_end) { __asm__ volatile( PREFETCH" 32%1 \n\t" "movq %1, %%mm0 \n\t" @@ -1256,8 +1225,7 @@ static inline void RENAME(rgb15to32)(const uint8_t *src, uint8_t *dst, long src_ __asm__ volatile(SFENCE:::"memory"); __asm__ volatile(EMMS:::"memory"); #endif - while (s < end) - { + while (s < end) { register uint16_t bgr; bgr = *s++; #if HAVE_BIGENDIAN @@ -1288,8 +1256,7 @@ static inline void RENAME(rgb16to32)(const uint8_t *src, uint8_t *dst, long src_ __asm__ volatile("pxor %%mm7,%%mm7 \n\t":::"memory"); __asm__ volatile("pcmpeqd %%mm6,%%mm6 \n\t":::"memory"); mm_end = end - 3; - while (s < mm_end) - { + while (s < mm_end) { __asm__ volatile( PREFETCH" 32%1 \n\t" "movq %1, %%mm0 \n\t" @@ -1311,8 +1278,7 @@ static inline void RENAME(rgb16to32)(const uint8_t *src, uint8_t *dst, long src_ __asm__ volatile(SFENCE:::"memory"); __asm__ volatile(EMMS:::"memory"); #endif - while (s < end) - { + while (s < end) { register uint16_t bgr; bgr = *s++; #if HAVE_BIGENDIAN @@ -1453,8 +1419,7 @@ static inline void RENAME(rgb24tobgr24)(const uint8_t *src, uint8_t *dst, long s src-= src_size; dst-= src_size; #endif - for (i=0; i>1; - for (y=0; y>1; - for (y=0; y>1; - for (y=0; y>2; dst[2*x+2]= ( src[x] + 3*src[x+1])>>2; } @@ -1890,7 +1848,7 @@ static inline void RENAME(planar2x)(const uint8_t *src, uint8_t *dst, long srcWi dst+= dstStride; - for (y=1; y>2; dst[dstStride]= ( src[0] + 3*src[srcStride])>>2; - for (x=mmxSize-1; x>2; dst[2*x+dstStride+2]= ( src[x+0] + 3*src[x+srcStride+1])>>2; dst[2*x+dstStride+1]= ( src[x+1] + 3*src[x+srcStride ])>>2; @@ -1958,13 +1916,13 @@ static inline void RENAME(planar2x)(const uint8_t *src, uint8_t *dst, long srcWi #if 1 dst[0]= src[0]; - for (x=0; x>2; dst[2*x+2]= ( src[x] + 3*src[x+1])>>2; } dst[2*srcWidth-1]= src[srcWidth-1]; #else - for (x=0; x>1; - for (y=0; y>1; #if HAVE_MMX - for (y=0; y>1); uint8_t* d=dst1+dstStride1*y; x=0; #if HAVE_MMX - for (;x>1); uint8_t* d=dst2+dstStride2*y; x=0; #if HAVE_MMX - for (;x>2); const uint8_t* vp=src3+srcStride3*(y>>2); uint8_t* d=dst+dstStride*y; x=0; #if HAVE_MMX - for (;x>1; dst1[count]= (src0[4*count+2]+src1[4*count+2])>>1; count++; @@ -2830,7 +2774,7 @@ static void RENAME(extract_odd2)(const uint8_t *src, uint8_t *dst0, uint8_t *dst src += 4*count; count= - count; #if HAVE_MMX - if(count <= -8){ + if(count <= -8) { count += 7; __asm__ volatile( "pcmpeqw %%mm7, %%mm7 \n\t" @@ -2865,7 +2809,7 @@ static void RENAME(extract_odd2)(const uint8_t *src, uint8_t *dst0, uint8_t *dst } #endif src++; - while(count<0){ + while(count<0) { dst0[count]= src[4*count+0]; dst1[count]= src[4*count+2]; count++; @@ -2880,7 +2824,7 @@ static void RENAME(extract_odd2avg)(const uint8_t *src0, const uint8_t *src1, ui src1 += 4*count; count= - count; #ifdef PAVGB - if(count <= -8){ + if(count <= -8) { count += 7; __asm__ volatile( "pcmpeqw %%mm7, %%mm7 \n\t" @@ -2920,7 +2864,7 @@ static void RENAME(extract_odd2avg)(const uint8_t *src0, const uint8_t *src1, ui #endif src0++; src1++; - while(count<0){ + while(count<0) { dst0[count]= (src0[4*count+0]+src1[4*count+0])>>1; dst1[count]= (src0[4*count+2]+src1[4*count+2])>>1; count++; @@ -2934,9 +2878,9 @@ static void RENAME(yuyvtoyuv420)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, co long y; const long chromWidth= -((-width)>>1); - for (y=0; y>1); - for (y=0; y>1); - for (y=0; y>1); - for (y=0; ysparc_coeffs[5]=c->yCoeff; c->sparc_coeffs[6]=c->vgCoeff; c->sparc_coeffs[7]=c->vrCoeff; diff --git a/libswscale/swscale-example.c b/libswscale/swscale-example.c index 0e8db8a1ef..7ea4f51de8 100644 --- a/libswscale/swscale-example.c +++ b/libswscale/swscale-example.c @@ -50,14 +50,15 @@ const char *sws_format_name(enum PixelFormat format); || (x)==PIX_FMT_YUVA420P \ ) -static uint64_t getSSD(uint8_t *src1, uint8_t *src2, int stride1, int stride2, int w, int h){ +static uint64_t getSSD(uint8_t *src1, uint8_t *src2, int stride1, int stride2, int w, int h) +{ int x,y; uint64_t ssd=0; //printf("%d %d\n", w, h); - for (y=0; y src -> dst -> out & compare out against ref // ref & out are YV12 static int doTest(uint8_t *ref[4], int refStride[4], int w, int h, int srcFormat, int dstFormat, - int srcW, int srcH, int dstW, int dstH, int flags){ + int srcW, int srcH, int dstW, int dstH, int flags) +{ uint8_t *src[4] = {0}; uint8_t *dst[4] = {0}; uint8_t *out[4] = {0}; @@ -82,7 +84,7 @@ static int doTest(uint8_t *ref[4], int refStride[4], int w, int h, int srcFormat int res; res = 0; - for (i=0; i<4; i++){ + for (i=0; i<4; i++) { // avoid stride % bpp != 0 if (srcFormat==PIX_FMT_RGB24 || srcFormat==PIX_FMT_BGR24) srcStride[i]= srcW*3; @@ -169,7 +171,7 @@ static int doTest(uint8_t *ref[4], int refStride[4], int w, int h, int srcFormat sws_freeContext(dstContext); sws_freeContext(outContext); - for (i=0; i<4; i++){ + for (i=0; i<4; i++) { free(src[i]); free(dst[i]); free(out[i]); @@ -178,7 +180,8 @@ static int doTest(uint8_t *ref[4], int refStride[4], int w, int h, int srcFormat return res; } -static void selfTest(uint8_t *src[4], int stride[4], int w, int h){ +static void selfTest(uint8_t *src[4], int stride[4], int w, int h) +{ enum PixelFormat srcFormat, dstFormat; int srcW, srcH, dstW, dstH; int flags; @@ -206,7 +209,8 @@ static void selfTest(uint8_t *src[4], int stride[4], int w, int h){ #define W 96 #define H 96 -int main(int argc, char **argv){ +int main(int argc, char **argv) +{ uint8_t *rgb_data = malloc (W*H*4); uint8_t *rgb_src[3]= {rgb_data, NULL, NULL}; int rgb_stride[3]={4*W, 0, 0}; @@ -221,8 +225,8 @@ int main(int argc, char **argv){ av_lfg_init(&rand, 1); - for (y=0; y>19); } else - for (i=0; i>1); i++){\ + for (i=0; i<(dstW>>1); i++) {\ int j;\ int Y1 = 1<<18;\ int Y2 = 1<<18;\ @@ -661,13 +653,11 @@ static inline void yuv2nv12XinC(const int16_t *lumFilter, const int16_t **lumSrc type av_unused *r, *b, *g;\ const int i2= 2*i;\ \ - for (j=0; j>=19;\ U >>=19;\ V >>=19;\ - if (alpha){\ + if (alpha) {\ A1 = 1<<18;\ A2 = 1<<18;\ - for (j=0; j255) Y1=255; \ else if (Y1<0)Y1=0; \ if (Y2>255) Y2=255; \ @@ -699,13 +688,13 @@ static inline void yuv2nv12XinC(const int16_t *lumFilter, const int16_t **lumSrc if (V>255) V=255; \ else if (V<0) V=0; \ }\ - if (alpha && ((A1|A2)&256)){\ + if (alpha && ((A1|A2)&256)) {\ A1=av_clip_uint8(A1);\ A2=av_clip_uint8(A2);\ } #define YSCALE_YUV_2_PACKEDX_FULL_C(rnd,alpha) \ - for (i=0; i>=10;\ U >>=10;\ V >>=10;\ - if (alpha){\ + if (alpha) {\ A = rnd;\ for (j=0; jyuv2rgb_v2r_coeff;\ G= Y + V*c->yuv2rgb_v2g_coeff + U*c->yuv2rgb_u2g_coeff;\ B= Y + U*c->yuv2rgb_u2b_coeff;\ - if ((R|G|B)&(0xC0000000)){\ + if ((R|G|B)&(0xC0000000)) {\ if (R>=(256<<22)) R=(256<<22)-1; \ else if (R<0)R=0; \ if (G>=(256<<22)) G=(256<<22)-1; \ @@ -751,7 +740,7 @@ static inline void yuv2nv12XinC(const int16_t *lumFilter, const int16_t **lumSrc #define YSCALE_YUV_2_GRAY16_C \ - for (i=0; i<(dstW>>1); i++){\ + for (i=0; i<(dstW>>1); i++) {\ int j;\ int Y1 = 1<<18;\ int Y2 = 1<<18;\ @@ -760,15 +749,13 @@ static inline void yuv2nv12XinC(const int16_t *lumFilter, const int16_t **lumSrc \ const int i2= 2*i;\ \ - for (j=0; j>=11;\ Y2>>=11;\ - if ((Y1|Y2|U|V)&65536)\ - {\ + if ((Y1|Y2|U|V)&65536) {\ if (Y1>65535) Y1=65535; \ else if (Y1<0)Y1=0; \ if (Y2>65535) Y2=65535; \ @@ -782,7 +769,7 @@ static inline void yuv2nv12XinC(const int16_t *lumFilter, const int16_t **lumSrc b = (type *)c->table_bU[U]; \ #define YSCALE_YUV_2_PACKED2_C(type,alpha) \ - for (i=0; i<(dstW>>1); i++){ \ + for (i=0; i<(dstW>>1); i++) { \ const int i2= 2*i; \ int Y1= (buf0[i2 ]*yalpha1+buf1[i2 ]*yalpha)>>19; \ int Y2= (buf0[i2+1]*yalpha1+buf1[i2+1]*yalpha)>>19; \ @@ -790,13 +777,13 @@ static inline void yuv2nv12XinC(const int16_t *lumFilter, const int16_t **lumSrc int V= (uvbuf0[i+VOFW]*uvalpha1+uvbuf1[i+VOFW]*uvalpha)>>19; \ type av_unused *r, *b, *g; \ int av_unused A1, A2; \ - if (alpha){\ + if (alpha) {\ A1= (abuf0[i2 ]*yalpha1+abuf1[i2 ]*yalpha)>>19; \ A2= (abuf0[i2+1]*yalpha1+abuf1[i2+1]*yalpha)>>19; \ }\ #define YSCALE_YUV_2_GRAY16_2_C \ - for (i=0; i<(dstW>>1); i++){ \ + for (i=0; i<(dstW>>1); i++) { \ const int i2= 2*i; \ int Y1= (buf0[i2 ]*yalpha1+buf1[i2 ]*yalpha)>>11; \ int Y2= (buf0[i2+1]*yalpha1+buf1[i2+1]*yalpha)>>11; \ @@ -808,7 +795,7 @@ static inline void yuv2nv12XinC(const int16_t *lumFilter, const int16_t **lumSrc b = (type *)c->table_bU[U];\ #define YSCALE_YUV_2_PACKED1_C(type,alpha) \ - for (i=0; i<(dstW>>1); i++){\ + for (i=0; i<(dstW>>1); i++) {\ const int i2= 2*i;\ int Y1= buf0[i2 ]>>7;\ int Y2= buf0[i2+1]>>7;\ @@ -816,13 +803,13 @@ static inline void yuv2nv12XinC(const int16_t *lumFilter, const int16_t **lumSrc int V= (uvbuf1[i+VOFW])>>7;\ type av_unused *r, *b, *g;\ int av_unused A1, A2;\ - if (alpha){\ + if (alpha) {\ A1= abuf0[i2 ]>>7;\ A2= abuf0[i2+1]>>7;\ }\ #define YSCALE_YUV_2_GRAY16_1_C \ - for (i=0; i<(dstW>>1); i++){\ + for (i=0; i<(dstW>>1); i++) {\ const int i2= 2*i;\ int Y1= buf0[i2 ]<<1;\ int Y2= buf0[i2+1]<<1;\ @@ -834,7 +821,7 @@ static inline void yuv2nv12XinC(const int16_t *lumFilter, const int16_t **lumSrc b = (type *)c->table_bU[U];\ #define YSCALE_YUV_2_PACKED1B_C(type,alpha) \ - for (i=0; i<(dstW>>1); i++){\ + for (i=0; i<(dstW>>1); i++) {\ const int i2= 2*i;\ int Y1= buf0[i2 ]>>7;\ int Y2= buf0[i2+1]>>7;\ @@ -842,7 +829,7 @@ static inline void yuv2nv12XinC(const int16_t *lumFilter, const int16_t **lumSrc int V= (uvbuf0[i+VOFW] + uvbuf1[i+VOFW])>>8;\ type av_unused *r, *b, *g;\ int av_unused A1, A2;\ - if (alpha){\ + if (alpha) {\ A1= abuf0[i2 ]>>7;\ A2= abuf0[i2+1]>>7;\ }\ @@ -856,7 +843,7 @@ static inline void yuv2nv12XinC(const int16_t *lumFilter, const int16_t **lumSrc #define YSCALE_YUV_2_MONO2_C \ const uint8_t * const d128=dither_8x8_220[y&7];\ uint8_t *g= c->table_gU[128] + c->table_gV[128];\ - for (i=0; i>19) + d128[0]];\ acc+= acc + g[((buf0[i+1]*yalpha1+buf1[i+1]*yalpha)>>19) + d128[1]];\ @@ -875,20 +862,18 @@ static inline void yuv2nv12XinC(const int16_t *lumFilter, const int16_t **lumSrc const uint8_t * const d128=dither_8x8_220[y&7];\ uint8_t *g= c->table_gU[128] + c->table_gV[128];\ int acc=0;\ - for (i=0; i>=19;\ Y2>>=19;\ - if ((Y1|Y2)&256)\ - {\ + if ((Y1|Y2)&256) {\ if (Y1>255) Y1=255;\ else if (Y1<0)Y1=0;\ if (Y2>255) Y2=255;\ @@ -896,7 +881,7 @@ static inline void yuv2nv12XinC(const int16_t *lumFilter, const int16_t **lumSrc }\ acc+= acc + g[Y1+d128[(i+0)&7]];\ acc+= acc + g[Y2+d128[(i+1)&7]];\ - if ((i&7)==6){\ + if ((i&7)==6) {\ ((uint8_t*)dest)[0]= c->dstFormat == PIX_FMT_MONOBLACK ? acc : ~acc;\ dest++;\ }\ @@ -904,8 +889,7 @@ static inline void yuv2nv12XinC(const int16_t *lumFilter, const int16_t **lumSrc #define YSCALE_YUV_2_ANYRGB_C(func, func2, func_g16, func_monoblack)\ - switch(c->dstFormat)\ - {\ + switch(c->dstFormat) {\ case PIX_FMT_RGB48BE:\ case PIX_FMT_RGB48LE:\ func(uint8_t,0)\ @@ -926,19 +910,19 @@ static inline void yuv2nv12XinC(const int16_t *lumFilter, const int16_t **lumSrc break;\ case PIX_FMT_RGBA:\ case PIX_FMT_BGRA:\ - if (CONFIG_SMALL){\ + if (CONFIG_SMALL) {\ int needAlpha = CONFIG_SWSCALE_ALPHA && c->alpPixBuf;\ func(uint32_t,needAlpha)\ ((uint32_t*)dest)[i2+0]= r[Y1] + g[Y1] + b[Y1] + (needAlpha ? (A1<<24) : 0);\ ((uint32_t*)dest)[i2+1]= r[Y2] + g[Y2] + b[Y2] + (needAlpha ? (A2<<24) : 0);\ }\ - }else{\ - if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf){\ + } else {\ + if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf) {\ func(uint32_t,1)\ ((uint32_t*)dest)[i2+0]= r[Y1] + g[Y1] + b[Y1] + (A1<<24);\ ((uint32_t*)dest)[i2+1]= r[Y2] + g[Y2] + b[Y2] + (A2<<24);\ }\ - }else{\ + } else {\ func(uint32_t,0)\ ((uint32_t*)dest)[i2+0]= r[Y1] + g[Y1] + b[Y1];\ ((uint32_t*)dest)[i2+1]= r[Y2] + g[Y2] + b[Y2];\ @@ -948,19 +932,19 @@ static inline void yuv2nv12XinC(const int16_t *lumFilter, const int16_t **lumSrc break;\ case PIX_FMT_ARGB:\ case PIX_FMT_ABGR:\ - if (CONFIG_SMALL){\ + if (CONFIG_SMALL) {\ int needAlpha = CONFIG_SWSCALE_ALPHA && c->alpPixBuf;\ func(uint32_t,needAlpha)\ ((uint32_t*)dest)[i2+0]= r[Y1] + g[Y1] + b[Y1] + (needAlpha ? A1 : 0);\ ((uint32_t*)dest)[i2+1]= r[Y2] + g[Y2] + b[Y2] + (needAlpha ? A2 : 0);\ }\ - }else{\ - if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf){\ + } else {\ + if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf) {\ func(uint32_t,1)\ ((uint32_t*)dest)[i2+0]= r[Y1] + g[Y1] + b[Y1] + A1;\ ((uint32_t*)dest)[i2+1]= r[Y2] + g[Y2] + b[Y2] + A2;\ }\ - }else{\ + } else {\ func(uint32_t,0)\ ((uint32_t*)dest)[i2+0]= r[Y1] + g[Y1] + b[Y1];\ ((uint32_t*)dest)[i2+1]= r[Y2] + g[Y2] + b[Y2];\ @@ -1110,14 +1094,14 @@ static inline void yuv2rgbXinC_full(SwsContext *c, const int16_t *lumFilter, con int step= fmt_depth(c->dstFormat)/8; int aidx= 3; - switch(c->dstFormat){ + switch(c->dstFormat) { case PIX_FMT_ARGB: dest++; aidx= 0; case PIX_FMT_RGB24: aidx--; case PIX_FMT_RGBA: - if (CONFIG_SMALL){ + if (CONFIG_SMALL) { int needAlpha = CONFIG_SWSCALE_ALPHA && c->alpPixBuf; YSCALE_YUV_2_RGBX_FULL_C(1<<21, needAlpha) dest[aidx]= needAlpha ? A : 255; @@ -1126,8 +1110,8 @@ static inline void yuv2rgbXinC_full(SwsContext *c, const int16_t *lumFilter, con dest[2]= B>>22; dest+= step; } - }else{ - if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf){ + } else { + if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf) { YSCALE_YUV_2_RGBX_FULL_C(1<<21, 1) dest[aidx]= A; dest[0]= R>>22; @@ -1135,7 +1119,7 @@ static inline void yuv2rgbXinC_full(SwsContext *c, const int16_t *lumFilter, con dest[2]= B>>22; dest+= step; } - }else{ + } else { YSCALE_YUV_2_RGBX_FULL_C(1<<21, 0) dest[aidx]= 255; dest[0]= R>>22; @@ -1152,7 +1136,7 @@ static inline void yuv2rgbXinC_full(SwsContext *c, const int16_t *lumFilter, con case PIX_FMT_BGR24: aidx--; case PIX_FMT_BGRA: - if (CONFIG_SMALL){ + if (CONFIG_SMALL) { int needAlpha = CONFIG_SWSCALE_ALPHA && c->alpPixBuf; YSCALE_YUV_2_RGBX_FULL_C(1<<21, needAlpha) dest[aidx]= needAlpha ? A : 255; @@ -1161,8 +1145,8 @@ static inline void yuv2rgbXinC_full(SwsContext *c, const int16_t *lumFilter, con dest[2]= R>>22; dest+= step; } - }else{ - if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf){ + } else { + if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf) { YSCALE_YUV_2_RGBX_FULL_C(1<<21, 1) dest[aidx]= A; dest[0]= B>>22; @@ -1170,7 +1154,7 @@ static inline void yuv2rgbXinC_full(SwsContext *c, const int16_t *lumFilter, con dest[2]= R>>22; dest+= step; } - }else{ + } else { YSCALE_YUV_2_RGBX_FULL_C(1<<21, 0) dest[aidx]= 255; dest[0]= B>>22; @@ -1186,10 +1170,11 @@ static inline void yuv2rgbXinC_full(SwsContext *c, const int16_t *lumFilter, con } } -static void fillPlane(uint8_t* plane, int stride, int width, int height, int y, uint8_t val){ +static void fillPlane(uint8_t* plane, int stride, int width, int height, int y, uint8_t val) +{ int i; uint8_t *ptr = plane + stride*y; - for (i=0; i>shb)&maskb;\ int g= (((const type*)src)[i]>>shg)&maskg;\ int r= (((const type*)src)[i]>>shr)&maskr;\ @@ -1258,9 +1242,10 @@ BGR2Y(uint16_t, bgr15ToY, 0, 0, 0, 0x001F, 0x03E0, 0x7C00, RY<<10, GY<<5, BY BGR2Y(uint16_t, rgb16ToY, 0, 0, 0, 0xF800, 0x07E0, 0x001F, RY , GY<<5, BY<<11, RGB2YUV_SHIFT+8) BGR2Y(uint16_t, rgb15ToY, 0, 0, 0, 0x7C00, 0x03E0, 0x001F, RY , GY<<5, BY<<10, RGB2YUV_SHIFT+7) -static inline void abgrToA(uint8_t *dst, const uint8_t *src, long width, uint32_t *unused){ +static inline void abgrToA(uint8_t *dst, const uint8_t *src, long width, uint32_t *unused) +{ int i; - for (i=0; i>shb;\ int g= (((const type*)src)[i]&maskg)>>shg;\ int r= (((const type*)src)[i]&maskr)>>shr;\ @@ -1282,8 +1266,7 @@ static inline void name(uint8_t *dstU, uint8_t *dstV, const uint8_t *src, const static inline void name ## _half(uint8_t *dstU, uint8_t *dstV, const uint8_t *src, const uint8_t *dummy, long width, uint32_t *unused)\ {\ int i;\ - for (i=0; i>8; @@ -1334,7 +1315,7 @@ static inline void palToUV(uint8_t *dstU, uint8_t *dstV, static inline void monowhite2Y(uint8_t *dst, const uint8_t *src, long width, uint32_t *unused) { int i, j; - for (i=0; i>(7-j))&1)*255; @@ -1344,7 +1325,7 @@ static inline void monowhite2Y(uint8_t *dst, const uint8_t *src, long width, uin static inline void monoblack2Y(uint8_t *dst, const uint8_t *src, long width, uint32_t *unused) { int i, j; - for (i=0; i>(7-j))&1)*255; @@ -1471,53 +1452,44 @@ static inline int initFilter(int16_t **outFilter, int16_t **filterPos, int *outF // NOTE: the +1 is for the MMX scaler which reads over the end *filterPos = av_malloc((dstW+1)*sizeof(int16_t)); - if (FFABS(xInc - 0x10000) <10) // unscaled - { + if (FFABS(xInc - 0x10000) <10) { // unscaled int i; filterSize= 1; filter= av_mallocz(dstW*sizeof(*filter)*filterSize); - for (i=0; i>16; (*filterPos)[i]= xx; filter[i]= fone; xDstInSrc+= xInc; } - } - else if ((xInc <= (1<<16) && (flags&SWS_AREA)) || (flags&SWS_FAST_BILINEAR)) // bilinear upscale - { + } else if ((xInc <= (1<<16) && (flags&SWS_AREA)) || (flags&SWS_FAST_BILINEAR)) { // bilinear upscale int i; int xDstInSrc; filterSize= 2; filter= av_malloc(dstW*sizeof(*filter)*filterSize); xDstInSrc= xInc/2 - 0x8000; - for (i=0; i>16; int j; (*filterPos)[i]= xx; //bilinear upscale / linear interpolate / area averaging - for (j=0; j>16); if (coeff<0) coeff=0; filter[i*filterSize + j]= coeff; @@ -1525,9 +1497,7 @@ static inline int initFilter(int16_t **outFilter, int16_t **filterPos, int *outF } xDstInSrc+= xInc; } - } - else - { + } else { int xDstInSrc; int sizeFactor; @@ -1552,13 +1522,11 @@ static inline int initFilter(int16_t **outFilter, int16_t **filterPos, int *outF filter= av_malloc(dstW*sizeof(*filter)*filterSize); xDstInSrc= xInc - 0x10000; - for (i=0; i>30; @@ -1582,14 +1549,12 @@ static inline int initFilter(int16_t **outFilter, int16_t **filterPos, int *outF coeff=0.0; coeff *= fone>>(30+24); } -/* else if (flags & SWS_X) - { +/* else if (flags & SWS_X) { double p= param ? param*0.01 : 0.3; coeff = d ? sin(d*PI)/(d*PI) : 1.0; coeff*= pow(2.0, - p*d*d); }*/ - else if (flags & SWS_X) - { + else if (flags & SWS_X) { double A= param[0] != SWS_PARAM_DEFAULT ? param[0] : 1.0; double c; @@ -1600,42 +1565,29 @@ static inline int initFilter(int16_t **outFilter, int16_t **filterPos, int *outF if (c<0.0) c= -pow(-c, A); else c= pow( c, A); coeff= (c*0.5 + 0.5)*fone; - } - else if (flags & SWS_AREA) - { + } else if (flags & SWS_AREA) { int64_t d2= d - (1<<29); if (d2*xInc < -(1LL<<(29+16))) coeff= 1.0 * (1LL<<(30+16)); else if (d2*xInc < (1LL<<(29+16))) coeff= -d2*xInc + (1LL<<(29+16)); else coeff=0.0; coeff *= fone>>(30+16); - } - else if (flags & SWS_GAUSS) - { + } else if (flags & SWS_GAUSS) { double p= param[0] != SWS_PARAM_DEFAULT ? param[0] : 3.0; coeff = (pow(2.0, - p*floatd*floatd))*fone; - } - else if (flags & SWS_SINC) - { + } else if (flags & SWS_SINC) { coeff = (d ? sin(floatd*PI)/(floatd*PI) : 1.0)*fone; - } - else if (flags & SWS_LANCZOS) - { + } else if (flags & SWS_LANCZOS) { double p= param[0] != SWS_PARAM_DEFAULT ? param[0] : 3.0; coeff = (d ? sin(floatd*PI)*sin(floatd*PI/p)/(floatd*floatd*PI*PI/p) : 1.0)*fone; if (floatd>p) coeff=0; - } - else if (flags & SWS_BILINEAR) - { + } else if (flags & SWS_BILINEAR) { coeff= (1<<30) - d; if (coeff<0) coeff=0; coeff *= fone >> 30; - } - else if (flags & SWS_SPLINE) - { + } else if (flags & SWS_SPLINE) { double p=-2.196152422706632; coeff = getSplineCoeff(1.0, 0.0, p, -p-1.0, floatd) * fone; - } - else { + } else { coeff= 0.0; //GCC warning killer assert(0); } @@ -1657,16 +1609,15 @@ static inline int initFilter(int16_t **outFilter, int16_t **filterPos, int *outF assert(filter2Size>0); filter2= av_mallocz(filter2Size*dstW*sizeof(*filter2)); - for (i=0; ilength; k++){ + if(srcFilter) { + for (k=0; klength; k++) { for (j=0; jcoeff[k]*filter[i*filterSize + j]; } - }else{ + } else { for (j=0; j=0; i--) - { + for (i=dstW-1; i>=0; i--) { int min= filter2Size; int j; int64_t cutOff=0.0; /* get rid off near zero elements on the left by shifting left */ - for (j=0; j0; j--) - { + for (j=filter2Size-1; j>0; j--) { cutOff += FFABS(filter2[i*filter2Size + j]); if (cutOff > SWS_MAX_REDUCE_CUTOFF*fone) break; @@ -1748,12 +1696,10 @@ static inline int initFilter(int16_t **outFilter, int16_t **filterPos, int *outF if (flags&SWS_PRINT_INFO) av_log(NULL, AV_LOG_VERBOSE, "SwScaler: reducing / aligning filtersize %d -> %d\n", filter2Size, filterSize); /* try to reduce the filter-size (step2 reduce it) */ - for (i=0; i=filter2Size) filter[i*filterSize + j]= 0; else filter[i*filterSize + j]= filter2[i*filter2Size + j]; if((flags & SWS_BITEXACT) && j>=minFilterSize) @@ -1765,14 +1711,11 @@ static inline int initFilter(int16_t **outFilter, int16_t **filterPos, int *outF //FIXME try to align filterPos if possible //fix borders - for (i=0; i srcW) - { + if ((*filterPos)[i] + filterSize > srcW) { int shift= (*filterPos)[i] + filterSize - srcW; // move filter coefficients right to compensate for filterPos - for (j=filterSize-2; j>=0; j--) - { + for (j=filterSize-2; j>=0; j--) { int right= FFMIN(j + shift, filterSize-1); filter[i*filterSize +right] += filter[i*filterSize +j]; filter[i*filterSize +j]=0; @@ -1799,19 +1740,16 @@ static inline int initFilter(int16_t **outFilter, int16_t **filterPos, int *outF *outFilter= av_mallocz(*outFilterSize*(dstW+1)*sizeof(int16_t)); /* normalize & store in outFilter */ - for (i=0; i>16; - if ((i&3) == 0) - { + if ((i&3) == 0) { int a=0; int b=((xpos+xInc)>>16) - xx; int c=((xpos+xInc*2)>>16) - xx; @@ -1968,8 +1903,7 @@ static int initMMX2HScaler(int dstW, int xInc, uint8_t *filterCode, int16_t *fil if (i+4-inc>=dstW) shift=maxShift; //avoid overread else if ((filterPos[i/2]&3) <= maxShift) shift=filterPos[i/2]&3; //Align - if (shift && i>=shift) - { + if (shift && i>=shift) { filterCode[fragmentPos + imm8OfPShufW1]+= 0x55*shift; filterCode[fragmentPos + imm8OfPShufW2]+= 0x55*shift; filterPos[i/2]-=shift; @@ -1990,10 +1924,11 @@ static int initMMX2HScaler(int dstW, int xInc, uint8_t *filterCode, int16_t *fil } #endif /* COMPILE_MMX2 */ -static void globalInit(void){ +static void globalInit(void) +{ // generating tables: int i; - for (i=0; i<768; i++){ + for (i=0; i<768; i++) { int c= av_clip_uint8(i-256); clip_table[i]=c; } @@ -2054,18 +1989,17 @@ static SwsFunc getSwsFunc(SwsContext *c) } static int PlanarToNV12Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dstParam[], int dstStride[]){ + int srcSliceH, uint8_t* dstParam[], int dstStride[]) +{ uint8_t *dst=dstParam[0] + dstStride[0]*srcSliceY; /* Copy Y plane */ if (dstStride[0]==srcStride[0] && srcStride[0] > 0) memcpy(dst, src[0], srcSliceH*dstStride[0]); - else - { + else { int i; const uint8_t *srcPtr= src[0]; uint8_t *dstPtr= dst; - for (i=0; isrcW); srcPtr+= srcStride[0]; dstPtr+= dstStride[0]; @@ -2081,7 +2015,8 @@ static int PlanarToNV12Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], i } static int PlanarToYuy2Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dstParam[], int dstStride[]){ + int srcSliceH, uint8_t* dstParam[], int dstStride[]) +{ uint8_t *dst=dstParam[0] + dstStride[0]*srcSliceY; yv12toyuy2(src[0], src[1], src[2], dst, c->srcW, srcSliceH, srcStride[0], srcStride[1], dstStride[0]); @@ -2090,7 +2025,8 @@ static int PlanarToYuy2Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], i } static int PlanarToUyvyWrapper(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dstParam[], int dstStride[]){ + int srcSliceH, uint8_t* dstParam[], int dstStride[]) +{ uint8_t *dst=dstParam[0] + dstStride[0]*srcSliceY; yv12touyvy(src[0], src[1], src[2], dst, c->srcW, srcSliceH, srcStride[0], srcStride[1], dstStride[0]); @@ -2099,7 +2035,8 @@ static int PlanarToUyvyWrapper(SwsContext *c, uint8_t* src[], int srcStride[], i } static int YUV422PToYuy2Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dstParam[], int dstStride[]){ + int srcSliceH, uint8_t* dstParam[], int dstStride[]) +{ uint8_t *dst=dstParam[0] + dstStride[0]*srcSliceY; yuv422ptoyuy2(src[0],src[1],src[2],dst,c->srcW,srcSliceH,srcStride[0],srcStride[1],dstStride[0]); @@ -2108,7 +2045,8 @@ static int YUV422PToYuy2Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], } static int YUV422PToUyvyWrapper(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dstParam[], int dstStride[]){ + int srcSliceH, uint8_t* dstParam[], int dstStride[]) +{ uint8_t *dst=dstParam[0] + dstStride[0]*srcSliceY; yuv422ptouyvy(src[0],src[1],src[2],dst,c->srcW,srcSliceH,srcStride[0],srcStride[1],dstStride[0]); @@ -2117,7 +2055,8 @@ static int YUV422PToUyvyWrapper(SwsContext *c, uint8_t* src[], int srcStride[], } static int YUYV2YUV420Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dstParam[], int dstStride[]){ + int srcSliceH, uint8_t* dstParam[], int dstStride[]) +{ uint8_t *ydst=dstParam[0] + dstStride[0]*srcSliceY; uint8_t *udst=dstParam[1] + dstStride[1]*srcSliceY/2; uint8_t *vdst=dstParam[2] + dstStride[2]*srcSliceY/2; @@ -2131,7 +2070,8 @@ static int YUYV2YUV420Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], in } static int YUYV2YUV422Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dstParam[], int dstStride[]){ + int srcSliceH, uint8_t* dstParam[], int dstStride[]) +{ uint8_t *ydst=dstParam[0] + dstStride[0]*srcSliceY; uint8_t *udst=dstParam[1] + dstStride[1]*srcSliceY; uint8_t *vdst=dstParam[2] + dstStride[2]*srcSliceY; @@ -2142,7 +2082,8 @@ static int YUYV2YUV422Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], in } static int UYVY2YUV420Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dstParam[], int dstStride[]){ + int srcSliceH, uint8_t* dstParam[], int dstStride[]) +{ uint8_t *ydst=dstParam[0] + dstStride[0]*srcSliceY; uint8_t *udst=dstParam[1] + dstStride[1]*srcSliceY/2; uint8_t *vdst=dstParam[2] + dstStride[2]*srcSliceY/2; @@ -2156,7 +2097,8 @@ static int UYVY2YUV420Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], in } static int UYVY2YUV422Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dstParam[], int dstStride[]){ + int srcSliceH, uint8_t* dstParam[], int dstStride[]) +{ uint8_t *ydst=dstParam[0] + dstStride[0]*srcSliceY; uint8_t *udst=dstParam[1] + dstStride[1]*srcSliceY; uint8_t *vdst=dstParam[2] + dstStride[2]*srcSliceY; @@ -2167,7 +2109,8 @@ static int UYVY2YUV422Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], in } static int pal2rgbWrapper(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dst[], int dstStride[]){ + int srcSliceH, uint8_t* dst[], int dstStride[]) +{ const enum PixelFormat srcFormat= c->srcFormat; const enum PixelFormat dstFormat= c->dstFormat; void (*conv)(const uint8_t *src, uint8_t *dst, long num_pixels, @@ -2180,7 +2123,7 @@ static int pal2rgbWrapper(SwsContext *c, uint8_t* src[], int srcStride[], int sr av_log(c, AV_LOG_ERROR, "internal error %s -> %s converter\n", sws_format_name(srcFormat), sws_format_name(dstFormat)); - switch(dstFormat){ + switch(dstFormat) { case PIX_FMT_RGB32 : conv = palette8topacked32; break; case PIX_FMT_BGR32 : conv = palette8topacked32; break; case PIX_FMT_BGR32_1: conv = palette8topacked32; break; @@ -2203,7 +2146,8 @@ static int pal2rgbWrapper(SwsContext *c, uint8_t* src[], int srcStride[], int sr /* {RGB,BGR}{15,16,24,32,32_1} -> {RGB,BGR}{15,16,24,32} */ static int rgb2rgbWrapper(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dst[], int dstStride[]){ + int srcSliceH, uint8_t* dst[], int dstStride[]) +{ const enum PixelFormat srcFormat= c->srcFormat; const enum PixelFormat dstFormat= c->dstFormat; const int srcBpp= (fmt_depth(srcFormat) + 7) >> 3; @@ -2214,8 +2158,8 @@ static int rgb2rgbWrapper(SwsContext *c, uint8_t* src[], int srcStride[], int sr /* BGR -> BGR */ if ( (isBGR(srcFormat) && isBGR(dstFormat)) - || (isRGB(srcFormat) && isRGB(dstFormat))){ - switch(srcId | (dstId<<4)){ + || (isRGB(srcFormat) && isRGB(dstFormat))) { + switch(srcId | (dstId<<4)) { case 0x34: conv= rgb16to15; break; case 0x36: conv= rgb24to15; break; case 0x38: conv= rgb32to15; break; @@ -2231,9 +2175,9 @@ static int rgb2rgbWrapper(SwsContext *c, uint8_t* src[], int srcStride[], int sr default: av_log(c, AV_LOG_ERROR, "internal error %s -> %s converter\n", sws_format_name(srcFormat), sws_format_name(dstFormat)); break; } - }else if ( (isBGR(srcFormat) && isRGB(dstFormat)) - || (isRGB(srcFormat) && isBGR(dstFormat))){ - switch(srcId | (dstId<<4)){ + } else if ( (isBGR(srcFormat) && isRGB(dstFormat)) + || (isRGB(srcFormat) && isBGR(dstFormat))) { + switch(srcId | (dstId<<4)) { case 0x33: conv= rgb15tobgr15; break; case 0x34: conv= rgb16tobgr15; break; case 0x36: conv= rgb24tobgr15; break; @@ -2253,26 +2197,23 @@ static int rgb2rgbWrapper(SwsContext *c, uint8_t* src[], int srcStride[], int sr default: av_log(c, AV_LOG_ERROR, "internal error %s -> %s converter\n", sws_format_name(srcFormat), sws_format_name(dstFormat)); break; } - }else{ + } else { av_log(c, AV_LOG_ERROR, "internal error %s -> %s converter\n", sws_format_name(srcFormat), sws_format_name(dstFormat)); } - if(conv) - { + if(conv) { uint8_t *srcPtr= src[0]; if(srcFormat == PIX_FMT_RGB32_1 || srcFormat == PIX_FMT_BGR32_1) srcPtr += ALT32_CORR; if (dstStride[0]*srcBpp == srcStride[0]*dstBpp && srcStride[0] > 0) conv(srcPtr, dst[0] + dstStride[0]*srcSliceY, srcSliceH*srcStride[0]); - else - { + else { int i; uint8_t *dstPtr= dst[0] + dstStride[0]*srcSliceY; - for (i=0; isrcW*srcBpp); srcPtr+= srcStride[0]; dstPtr+= dstStride[0]; @@ -2283,7 +2224,8 @@ static int rgb2rgbWrapper(SwsContext *c, uint8_t* src[], int srcStride[], int sr } static int bgr24toyv12Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dst[], int dstStride[]){ + int srcSliceH, uint8_t* dst[], int dstStride[]) +{ rgb24toyv12( src[0], @@ -2298,30 +2240,30 @@ static int bgr24toyv12Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], in } static int yvu9toyv12Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dst[], int dstStride[]){ + int srcSliceH, uint8_t* dst[], int dstStride[]) +{ int i; /* copy Y */ if (srcStride[0]==dstStride[0] && srcStride[0] > 0) memcpy(dst[0]+ srcSliceY*dstStride[0], src[0], srcStride[0]*srcSliceH); - else{ + else { uint8_t *srcPtr= src[0]; uint8_t *dstPtr= dst[0] + dstStride[0]*srcSliceY; - for (i=0; isrcW); srcPtr+= srcStride[0]; dstPtr+= dstStride[0]; } } - if (c->dstFormat==PIX_FMT_YUV420P || c->dstFormat==PIX_FMT_YUVA420P){ + if (c->dstFormat==PIX_FMT_YUV420P || c->dstFormat==PIX_FMT_YUVA420P) { planar2x(src[1], dst[1] + dstStride[1]*(srcSliceY >> 1), c->chrSrcW, srcSliceH >> 2, srcStride[1], dstStride[1]); planar2x(src[2], dst[2] + dstStride[2]*(srcSliceY >> 1), c->chrSrcW, srcSliceH >> 2, srcStride[2], dstStride[2]); - }else{ + } else { planar2x(src[1], dst[2] + dstStride[2]*(srcSliceY >> 1), c->chrSrcW, srcSliceH >> 2, srcStride[1], dstStride[2]); planar2x(src[2], dst[1] + dstStride[1]*(srcSliceY >> 1), c->chrSrcW, @@ -2338,8 +2280,7 @@ static int packedCopy(SwsContext *c, uint8_t* src[], int srcStride[], int srcSli { if (dstStride[0]==srcStride[0] && srcStride[0] > 0) memcpy(dst[0] + dstStride[0]*srcSliceY, src[0], srcSliceH*dstStride[0]); - else - { + else { int i; uint8_t *srcPtr= src[0]; uint8_t *dstPtr= dst[0] + dstStride[0]*srcSliceY; @@ -2350,8 +2291,7 @@ static int packedCopy(SwsContext *c, uint8_t* src[], int srcStride[], int srcSli && length+c->srcW <= FFABS(srcStride[0])) length+= c->srcW; assert(length!=0); - for (i=0; isrcW : -((-c->srcW )>>c->chrDstHSubSample); int y= (plane==0 || plane==3) ? srcSliceY: -((-srcSliceY)>>c->chrDstVSubSample); int height= (plane==0 || plane==3) ? srcSliceH: -((-srcSliceH)>>c->chrDstVSubSample); @@ -2375,32 +2314,31 @@ static int planarCopy(SwsContext *c, uint8_t* src[], int srcStride[], int srcSli if (!dst[plane]) continue; // ignore palette for GRAY8 if (plane == 1 && !dst[2]) continue; - if (!src[plane] || (plane == 1 && !src[2])){ + if (!src[plane] || (plane == 1 && !src[2])) { if(is16BPS(c->dstFormat)) length*=2; fillPlane(dst[plane], dstStride[plane], length, height, y, (plane==3) ? 255 : 128); - }else - { - if(is16BPS(c->srcFormat) && !is16BPS(c->dstFormat)){ + } else { + if(is16BPS(c->srcFormat) && !is16BPS(c->dstFormat)) { if (!isBE(c->srcFormat)) srcPtr++; - for (i=0; isrcFormat) && is16BPS(c->dstFormat)){ - for (i=0; isrcFormat) && is16BPS(c->dstFormat)) { + for (i=0; isrcFormat) && is16BPS(c->dstFormat) - && isBE(c->srcFormat) != isBE(c->dstFormat)){ + } else if(is16BPS(c->srcFormat) && is16BPS(c->dstFormat) + && isBE(c->srcFormat) != isBE(c->dstFormat)) { - for (i=0; i 0) memcpy(dst[plane] + dstStride[plane]*y, src[plane], height*dstStride[plane]); - else - { + else { if(is16BPS(c->srcFormat) && is16BPS(c->dstFormat)) length*=2; - for (i=0; i>16; if (r<-0x7FFF) return 0x8000; else if (r> 0x7FFF) return 0x7FFF; else return r; } -int sws_setColorspaceDetails(SwsContext *c, const int inv_table[4], int srcRange, const int table[4], int dstRange, int brightness, int contrast, int saturation){ +int sws_setColorspaceDetails(SwsContext *c, const int inv_table[4], int srcRange, const int table[4], int dstRange, int brightness, int contrast, int saturation) +{ int64_t crv = inv_table[0]; int64_t cbu = inv_table[1]; int64_t cgu = -inv_table[2]; @@ -2503,10 +2442,10 @@ int sws_setColorspaceDetails(SwsContext *c, const int inv_table[4], int srcRange c->uOffset= 0x0400040004000400LL; c->vOffset= 0x0400040004000400LL; - if (!srcRange){ + if (!srcRange) { cy= (cy*255) / 219; oy= 16<<16; - }else{ + } else { crv= (crv*224) / 255; cbu= (cbu*224) / 255; cgu= (cgu*224) / 255; @@ -2545,7 +2484,8 @@ int sws_setColorspaceDetails(SwsContext *c, const int inv_table[4], int srcRange return 0; } -int sws_getColorspaceDetails(SwsContext *c, int **inv_table, int *srcRange, int **table, int *dstRange, int *brightness, int *contrast, int *saturation){ +int sws_getColorspaceDetails(SwsContext *c, int **inv_table, int *srcRange, int **table, int *dstRange, int *brightness, int *contrast, int *saturation) +{ if (isYUV(c->dstFormat) || isGray(c->dstFormat)) return -1; *inv_table = c->srcColorspaceTable; @@ -2619,13 +2559,11 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d srcRange = handle_jpeg(&srcFormat); dstRange = handle_jpeg(&dstFormat); - if (!isSupportedIn(srcFormat)) - { + if (!isSupportedIn(srcFormat)) { av_log(NULL, AV_LOG_ERROR, "swScaler: %s is not supported as input pixel format\n", sws_format_name(srcFormat)); return NULL; } - if (!isSupportedOut(dstFormat)) - { + if (!isSupportedOut(dstFormat)) { av_log(NULL, AV_LOG_ERROR, "swScaler: %s is not supported as output pixel format\n", sws_format_name(dstFormat)); return NULL; } @@ -2641,20 +2579,18 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d |SWS_SINC |SWS_SPLINE |SWS_BICUBLIN); - if(!i || (i & (i-1))) - { + if(!i || (i & (i-1))) { av_log(NULL, AV_LOG_ERROR, "swScaler: Exactly one scaler algorithm must be chosen\n"); return NULL; } /* sanity check */ - if (srcW<4 || srcH<1 || dstW<8 || dstH<1) //FIXME check if these are enough and try to lowwer them after fixing the relevant parts of the code - { + if (srcW<4 || srcH<1 || dstW<8 || dstH<1) { //FIXME check if these are enough and try to lowwer them after fixing the relevant parts of the code av_log(NULL, AV_LOG_ERROR, "swScaler: %dx%d -> %dx%d is invalid scaling dimension\n", srcW, srcH, dstW, dstH); return NULL; } - if(srcW > VOFW || dstW > VOFW){ + if(srcW > VOFW || dstW > VOFW) { av_log(NULL, AV_LOG_ERROR, "swScaler: Compile-time maximum width is "AV_STRINGIFY(VOFW)" change VOF/VOFW and recompile\n"); return NULL; } @@ -2704,10 +2640,10 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d && ((dstW>>c->chrDstHSubSample) <= (srcW>>1) || (flags&(SWS_FAST_BILINEAR|SWS_POINT)))) c->chrSrcHSubSample=1; - if (param){ + if (param) { c->param[0] = param[0]; c->param[1] = param[1]; - }else{ + } else { c->param[0] = c->param[1] = SWS_PARAM_DEFAULT; } @@ -2721,22 +2657,18 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d sws_setColorspaceDetails(c, ff_yuv2rgb_coeffs[SWS_CS_DEFAULT], srcRange, ff_yuv2rgb_coeffs[SWS_CS_DEFAULT] /* FIXME*/, dstRange, 0, 1<<16, 1<<16); /* unscaled special cases */ - if (unscaled && !usesHFilter && !usesVFilter && (srcRange == dstRange || isBGR(dstFormat) || isRGB(dstFormat))) - { + if (unscaled && !usesHFilter && !usesVFilter && (srcRange == dstRange || isBGR(dstFormat) || isRGB(dstFormat))) { /* yv12_to_nv12 */ - if ((srcFormat == PIX_FMT_YUV420P || srcFormat == PIX_FMT_YUVA420P) && (dstFormat == PIX_FMT_NV12 || dstFormat == PIX_FMT_NV21)) - { + if ((srcFormat == PIX_FMT_YUV420P || srcFormat == PIX_FMT_YUVA420P) && (dstFormat == PIX_FMT_NV12 || dstFormat == PIX_FMT_NV21)) { c->swScale= PlanarToNV12Wrapper; } /* yuv2bgr */ if ((srcFormat==PIX_FMT_YUV420P || srcFormat==PIX_FMT_YUV422P || srcFormat==PIX_FMT_YUVA420P) && (isBGR(dstFormat) || isRGB(dstFormat)) - && !(flags & SWS_ACCURATE_RND) && !(dstH&1)) - { + && !(flags & SWS_ACCURATE_RND) && !(dstH&1)) { c->swScale= ff_yuv2rgb_get_func_ptr(c); } - if (srcFormat==PIX_FMT_YUV410P && (dstFormat==PIX_FMT_YUV420P || dstFormat==PIX_FMT_YUVA420P) && !(flags & SWS_BITEXACT)) - { + if (srcFormat==PIX_FMT_YUV410P && (dstFormat==PIX_FMT_YUV420P || dstFormat==PIX_FMT_YUVA420P) && !(flags & SWS_BITEXACT)) { c->swScale= yvu9toyv12Wrapper; } @@ -2771,8 +2703,7 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d dstFormat == PIX_FMT_BGR24))) c->swScale= pal2rgbWrapper; - if (srcFormat == PIX_FMT_YUV422P) - { + if (srcFormat == PIX_FMT_YUV422P) { if (dstFormat == PIX_FMT_YUYV422) c->swScale= YUV422PToYuy2Wrapper; else if (dstFormat == PIX_FMT_UYVY422) @@ -2780,10 +2711,9 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d } /* LQ converters if -sws 0 or -sws 4*/ - if (c->flags&(SWS_FAST_BILINEAR|SWS_POINT)){ + if (c->flags&(SWS_FAST_BILINEAR|SWS_POINT)) { /* yv12_to_yuy2 */ - if (srcFormat == PIX_FMT_YUV420P || srcFormat == PIX_FMT_YUVA420P) - { + if (srcFormat == PIX_FMT_YUV420P || srcFormat == PIX_FMT_YUVA420P) { if (dstFormat == PIX_FMT_YUYV422) c->swScale= PlanarToYuy2Wrapper; else if (dstFormat == PIX_FMT_UYVY422) @@ -2834,7 +2764,7 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d ff_bfin_get_unscaled_swscale (c); #endif - if (c->swScale){ + if (c->swScale) { if (flags&SWS_PRINT_INFO) av_log(c, AV_LOG_INFO, "using unscaled %s -> %s special converter\n", sws_format_name(srcFormat), sws_format_name(dstFormat)); @@ -2842,11 +2772,9 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d } } - if (flags & SWS_CPU_CAPS_MMX2) - { + if (flags & SWS_CPU_CAPS_MMX2) { c->canMMX2BeUsed= (dstW >=srcW && (dstW&31)==0 && (srcW&15)==0) ? 1 : 0; - if (!c->canMMX2BeUsed && dstW >=srcW && (srcW&15)==0 && (flags&SWS_FAST_BILINEAR)) - { + if (!c->canMMX2BeUsed && dstW >=srcW && (srcW&15)==0 && (flags&SWS_FAST_BILINEAR)) { if (flags&SWS_PRINT_INFO) av_log(c, AV_LOG_INFO, "output width is not a multiple of 32 -> no MMX2 scaler\n"); } @@ -2864,16 +2792,13 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d // this is not perfect, but no one should notice the difference, the more correct variant // would be like the vertical one, but that would require some special code for the // first and last pixel - if (flags&SWS_FAST_BILINEAR) - { - if (c->canMMX2BeUsed) - { + if (flags&SWS_FAST_BILINEAR) { + if (c->canMMX2BeUsed) { c->lumXInc+= 20; c->chrXInc+= 20; } //we don't use the x86 asm scaler if MMX is available - else if (flags & SWS_CPU_CAPS_MMX) - { + else if (flags & SWS_CPU_CAPS_MMX) { c->lumXInc = ((srcW-2)<<16)/(dstW-2) - 20; c->chrXInc = ((c->chrSrcW-2)<<16)/(c->chrDstW-2) - 20; } @@ -2897,8 +2822,7 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d #if defined(COMPILE_MMX2) // can't downscale !!! - if (c->canMMX2BeUsed && (flags & SWS_FAST_BILINEAR)) - { + if (c->canMMX2BeUsed && (flags & SWS_FAST_BILINEAR)) { c->lumMmx2FilterCodeSize = initMMX2HScaler( dstW, c->lumXInc, NULL, NULL, NULL, 8); c->chrMmx2FilterCodeSize = initMMX2HScaler(c->chrDstW, c->chrXInc, NULL, NULL, NULL, 4); @@ -2970,8 +2894,7 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d // calculate buffer sizes so that they won't run out while handling these damn slices c->vLumBufSize= c->vLumFilterSize; c->vChrBufSize= c->vChrFilterSize; - for (i=0; ichrDstH / dstH; int nextSlice= FFMAX(c->vLumFilterPos[i ] + c->vLumFilterSize - 1, ((c->vChrFilterPos[chrI] + c->vChrFilterSize - 1)<chrSrcVSubSample)); @@ -3006,8 +2929,7 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d assert(c->chrDstH <= dstH); - if (flags&SWS_PRINT_INFO) - { + if (flags&SWS_PRINT_INFO) { #ifdef DITHER1XBPP const char *dither= " dithered"; #else @@ -3057,14 +2979,11 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d av_log(c, AV_LOG_INFO, "using C\n"); } - if (flags & SWS_PRINT_INFO) - { - if (flags & SWS_CPU_CAPS_MMX) - { + if (flags & SWS_PRINT_INFO) { + if (flags & SWS_CPU_CAPS_MMX) { if (c->canMMX2BeUsed && (flags&SWS_FAST_BILINEAR)) av_log(c, AV_LOG_VERBOSE, "using FAST_BILINEAR MMX2 scaler for horizontal scaling\n"); - else - { + else { if (c->hLumFilterSize==4) av_log(c, AV_LOG_VERBOSE, "using 4-tap MMX scaler for horizontal luminance scaling\n"); else if (c->hLumFilterSize==8) @@ -3079,9 +2998,7 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d else av_log(c, AV_LOG_VERBOSE, "using n-tap MMX scaler for horizontal chrominance scaling\n"); } - } - else - { + } else { #if ARCH_X86 av_log(c, AV_LOG_VERBOSE, "using x86 asm scaler for horizontal scaling\n"); #else @@ -3091,15 +3008,12 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d av_log(c, AV_LOG_VERBOSE, "using C scaler for horizontal scaling\n"); #endif } - if (isPlanarYUV(dstFormat)) - { + if (isPlanarYUV(dstFormat)) { if (c->vLumFilterSize==1) av_log(c, AV_LOG_VERBOSE, "using 1-tap %s \"scaler\" for vertical scaling (YV12 like)\n", (flags & SWS_CPU_CAPS_MMX) ? "MMX" : "C"); else av_log(c, AV_LOG_VERBOSE, "using n-tap %s scaler for vertical scaling (YV12 like)\n", (flags & SWS_CPU_CAPS_MMX) ? "MMX" : "C"); - } - else - { + } else { if (c->vLumFilterSize==1 && c->vChrFilterSize==2) av_log(c, AV_LOG_VERBOSE, "using 1-tap %s \"scaler\" for vertical luminance scaling (BGR)\n" " 2-tap scaler for vertical chrominance scaling (BGR)\n", (flags & SWS_CPU_CAPS_MMX) ? "MMX" : "C"); @@ -3121,8 +3035,7 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d av_log(c, AV_LOG_VERBOSE, "%dx%d -> %dx%d\n", srcW, srcH, dstW, dstH); } - if (flags & SWS_PRINT_INFO) - { + if (flags & SWS_PRINT_INFO) { av_log(c, AV_LOG_DEBUG, "lum srcW=%d srcH=%d dstW=%d dstH=%d xInc=%d yInc=%d\n", c->srcW, c->srcH, c->dstW, c->dstH, c->lumXInc, c->lumYInc); av_log(c, AV_LOG_DEBUG, "chr srcW=%d srcH=%d dstW=%d dstH=%d xInc=%d yInc=%d\n", @@ -3133,10 +3046,11 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d return c; } -static void reset_ptr(uint8_t* src[], int format){ +static void reset_ptr(uint8_t* src[], int format) +{ if(!isALPHA(format)) src[3]=NULL; - if(!isPlanarYUV(format)){ + if(!isPlanarYUV(format)) { src[3]=src[2]=NULL; if( format != PIX_FMT_PAL8 && format != PIX_FMT_RGB8 @@ -3153,7 +3067,8 @@ static void reset_ptr(uint8_t* src[], int format){ * Assumes planar YUV to be in YUV order instead of YVU. */ int sws_scale(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dst[], int dstStride[]){ + int srcSliceH, uint8_t* dst[], int dstStride[]) +{ int i; uint8_t* src2[4]= {src[0], src[1], src[2], src[3]}; uint8_t* dst2[4]= {dst[0], dst[1], dst[2], dst[3]}; @@ -3166,27 +3081,27 @@ int sws_scale(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, if (srcSliceY == 0) c->sliceDir = 1; else c->sliceDir = -1; } - if (usePal(c->srcFormat)){ - for (i=0; i<256; i++){ + if (usePal(c->srcFormat)) { + for (i=0; i<256; i++) { int p, r, g, b,y,u,v; - if(c->srcFormat == PIX_FMT_PAL8){ + if(c->srcFormat == PIX_FMT_PAL8) { p=((uint32_t*)(src[1]))[i]; r= (p>>16)&0xFF; g= (p>> 8)&0xFF; b= p &0xFF; - }else if(c->srcFormat == PIX_FMT_RGB8){ + } else if(c->srcFormat == PIX_FMT_RGB8) { r= (i>>5 )*36; g= ((i>>2)&7)*36; b= (i&3 )*85; - }else if(c->srcFormat == PIX_FMT_BGR8){ + } else if(c->srcFormat == PIX_FMT_BGR8) { b= (i>>6 )*85; g= ((i>>3)&7)*36; r= (i&7 )*36; - }else if(c->srcFormat == PIX_FMT_RGB4_BYTE){ + } else if(c->srcFormat == PIX_FMT_RGB4_BYTE) { r= (i>>3 )*255; g= ((i>>1)&3)*85; b= (i&1 )*255; - }else { + } else { assert(c->srcFormat == PIX_FMT_BGR4_BYTE); b= (i>>3 )*255; g= ((i>>1)&3)*85; @@ -3261,7 +3176,8 @@ int sws_scale(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, #if LIBSWSCALE_VERSION_MAJOR < 1 int sws_scale_ordered(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dst[], int dstStride[]){ + int srcSliceH, uint8_t* dst[], int dstStride[]) +{ return sws_scale(c, src, srcStride, srcSliceY, srcSliceH, dst, dstStride); } #endif @@ -3273,23 +3189,23 @@ SwsFilter *sws_getDefaultFilter(float lumaGBlur, float chromaGBlur, { SwsFilter *filter= av_malloc(sizeof(SwsFilter)); - if (lumaGBlur!=0.0){ + if (lumaGBlur!=0.0) { filter->lumH= sws_getGaussianVec(lumaGBlur, 3.0); filter->lumV= sws_getGaussianVec(lumaGBlur, 3.0); - }else{ + } else { filter->lumH= sws_getIdentityVec(); filter->lumV= sws_getIdentityVec(); } - if (chromaGBlur!=0.0){ + if (chromaGBlur!=0.0) { filter->chrH= sws_getGaussianVec(chromaGBlur, 3.0); filter->chrV= sws_getGaussianVec(chromaGBlur, 3.0); - }else{ + } else { filter->chrH= sws_getIdentityVec(); filter->chrV= sws_getIdentityVec(); } - if (chromaSharpen!=0.0){ + if (chromaSharpen!=0.0) { SwsVector *id= sws_getIdentityVec(); sws_scaleVec(filter->chrH, -chromaSharpen); sws_scaleVec(filter->chrV, -chromaSharpen); @@ -3298,7 +3214,7 @@ SwsFilter *sws_getDefaultFilter(float lumaGBlur, float chromaGBlur, sws_freeVec(id); } - if (lumaSharpen!=0.0){ + if (lumaSharpen!=0.0) { SwsVector *id= sws_getIdentityVec(); sws_scaleVec(filter->lumH, -lumaSharpen); sws_scaleVec(filter->lumV, -lumaSharpen); @@ -3324,7 +3240,8 @@ SwsFilter *sws_getDefaultFilter(float lumaGBlur, float chromaGBlur, return filter; } -SwsVector *sws_getGaussianVec(double variance, double quality){ +SwsVector *sws_getGaussianVec(double variance, double quality) +{ const int length= (int)(variance*quality + 0.5) | 1; int i; double *coeff= av_malloc(length*sizeof(double)); @@ -3334,8 +3251,7 @@ SwsVector *sws_getGaussianVec(double variance, double quality){ vec->coeff= coeff; vec->length= length; - for (i=0; ilength; i++) a->coeff[i]*= scalar; } -void sws_normalizeVec(SwsVector *a, double height){ +void sws_normalizeVec(SwsVector *a, double height) +{ sws_scaleVec(a, height/sws_dcVec(a)); } -static SwsVector *sws_getConvVec(SwsVector *a, SwsVector *b){ +static SwsVector *sws_getConvVec(SwsVector *a, SwsVector *b) +{ int length= a->length + b->length - 1; double *coeff= av_malloc(length*sizeof(double)); int i, j; @@ -3396,10 +3318,8 @@ static SwsVector *sws_getConvVec(SwsVector *a, SwsVector *b){ for (i=0; ilength; i++) - { - for (j=0; jlength; j++) - { + for (i=0; ilength; i++) { + for (j=0; jlength; j++) { coeff[i+j]+= a->coeff[i]*b->coeff[j]; } } @@ -3407,7 +3327,8 @@ static SwsVector *sws_getConvVec(SwsVector *a, SwsVector *b){ return vec; } -static SwsVector *sws_sumVec(SwsVector *a, SwsVector *b){ +static SwsVector *sws_sumVec(SwsVector *a, SwsVector *b) +{ int length= FFMAX(a->length, b->length); double *coeff= av_malloc(length*sizeof(double)); int i; @@ -3424,7 +3345,8 @@ static SwsVector *sws_sumVec(SwsVector *a, SwsVector *b){ return vec; } -static SwsVector *sws_diffVec(SwsVector *a, SwsVector *b){ +static SwsVector *sws_diffVec(SwsVector *a, SwsVector *b) +{ int length= FFMAX(a->length, b->length); double *coeff= av_malloc(length*sizeof(double)); int i; @@ -3442,7 +3364,8 @@ static SwsVector *sws_diffVec(SwsVector *a, SwsVector *b){ } /* shift left / or right if "shift" is negative */ -static SwsVector *sws_getShiftedVec(SwsVector *a, int shift){ +static SwsVector *sws_getShiftedVec(SwsVector *a, int shift) +{ int length= a->length + FFABS(shift)*2; double *coeff= av_malloc(length*sizeof(double)); int i; @@ -3453,15 +3376,15 @@ static SwsVector *sws_getShiftedVec(SwsVector *a, int shift){ for (i=0; ilength; i++) - { + for (i=0; ilength; i++) { coeff[i + (length-1)/2 - (a->length-1)/2 - shift]= a->coeff[i]; } return vec; } -void sws_shiftVec(SwsVector *a, int shift){ +void sws_shiftVec(SwsVector *a, int shift) +{ SwsVector *shifted= sws_getShiftedVec(a, shift); av_free(a->coeff); a->coeff= shifted->coeff; @@ -3469,7 +3392,8 @@ void sws_shiftVec(SwsVector *a, int shift){ av_free(shifted); } -void sws_addVec(SwsVector *a, SwsVector *b){ +void sws_addVec(SwsVector *a, SwsVector *b) +{ SwsVector *sum= sws_sumVec(a, b); av_free(a->coeff); a->coeff= sum->coeff; @@ -3477,7 +3401,8 @@ void sws_addVec(SwsVector *a, SwsVector *b){ av_free(sum); } -void sws_subVec(SwsVector *a, SwsVector *b){ +void sws_subVec(SwsVector *a, SwsVector *b) +{ SwsVector *diff= sws_diffVec(a, b); av_free(a->coeff); a->coeff= diff->coeff; @@ -3485,7 +3410,8 @@ void sws_subVec(SwsVector *a, SwsVector *b){ av_free(diff); } -void sws_convVec(SwsVector *a, SwsVector *b){ +void sws_convVec(SwsVector *a, SwsVector *b) +{ SwsVector *conv= sws_getConvVec(a, b); av_free(a->coeff); a->coeff= conv->coeff; @@ -3493,7 +3419,8 @@ void sws_convVec(SwsVector *a, SwsVector *b){ av_free(conv); } -SwsVector *sws_cloneVec(SwsVector *a){ +SwsVector *sws_cloneVec(SwsVector *a) +{ double *coeff= av_malloc(a->length*sizeof(double)); int i; SwsVector *vec= av_malloc(sizeof(SwsVector)); @@ -3506,7 +3433,8 @@ SwsVector *sws_cloneVec(SwsVector *a){ return vec; } -void sws_printVec2(SwsVector *a, AVClass *log_ctx, int log_level){ +void sws_printVec2(SwsVector *a, AVClass *log_ctx, int log_level) +{ int i; double max=0; double min=0; @@ -3520,8 +3448,7 @@ void sws_printVec2(SwsVector *a, AVClass *log_ctx, int log_level){ range= max - min; - for (i=0; ilength; i++) - { + for (i=0; ilength; i++) { int x= (int)((a->coeff[i]-min)*60.0/range +0.5); av_log(log_ctx, log_level, "%1.3f ", a->coeff[i]); for (;x>0; x--) av_log(log_ctx, log_level, " "); @@ -3530,19 +3457,22 @@ void sws_printVec2(SwsVector *a, AVClass *log_ctx, int log_level){ } #if LIBSWSCALE_VERSION_MAJOR < 1 -void sws_printVec(SwsVector *a){ +void sws_printVec(SwsVector *a) +{ sws_printVec2(a, NULL, AV_LOG_DEBUG); } #endif -void sws_freeVec(SwsVector *a){ +void sws_freeVec(SwsVector *a) +{ if (!a) return; av_freep(&a->coeff); a->length=0; av_free(a); } -void sws_freeFilter(SwsFilter *filter){ +void sws_freeFilter(SwsFilter *filter) +{ if (!filter) return; if (filter->lumH) sws_freeVec(filter->lumH); @@ -3553,25 +3483,24 @@ void sws_freeFilter(SwsFilter *filter){ } -void sws_freeContext(SwsContext *c){ +void sws_freeContext(SwsContext *c) +{ int i; if (!c) return; - if (c->lumPixBuf) - { + if (c->lumPixBuf) { for (i=0; ivLumBufSize; i++) av_freep(&c->lumPixBuf[i]); av_freep(&c->lumPixBuf); } - if (c->chrPixBuf) - { + if (c->chrPixBuf) { for (i=0; ivChrBufSize; i++) av_freep(&c->chrPixBuf[i]); av_freep(&c->chrPixBuf); } - if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf){ + if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf) { for (i=0; ivLumBufSize; i++) av_freep(&c->alpPixBuf[i]); av_freep(&c->alpPixBuf); diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h index 9063a20fba..868feb3737 100644 --- a/libswscale/swscale_internal.h +++ b/libswscale/swscale_internal.h @@ -64,7 +64,7 @@ typedef int (*SwsFunc)(struct SwsContext *context, uint8_t* src[], uint8_t* dst[], int dstStride[]); /* This struct should be aligned on at least a 32-byte boundary. */ -typedef struct SwsContext{ +typedef struct SwsContext { /** * info on struct for av_log */ diff --git a/libswscale/swscale_template.c b/libswscale/swscale_template.c index 5b73069d6d..f2209fc345 100644 --- a/libswscale/swscale_template.c +++ b/libswscale/swscale_template.c @@ -906,23 +906,23 @@ static inline void RENAME(yuv2yuvX)(SwsContext *c, const int16_t *lumFilter, con uint8_t *dest, uint8_t *uDest, uint8_t *vDest, uint8_t *aDest, long dstW, long chrDstW) { #if COMPILE_TEMPLATE_MMX - if(!(c->flags & SWS_BITEXACT)){ - if (c->flags & SWS_ACCURATE_RND){ - if (uDest){ + if(!(c->flags & SWS_BITEXACT)) { + if (c->flags & SWS_ACCURATE_RND) { + if (uDest) { YSCALEYUV2YV12X_ACCURATE( "0", CHR_MMX_FILTER_OFFSET, uDest, chrDstW) YSCALEYUV2YV12X_ACCURATE(AV_STRINGIFY(VOF), CHR_MMX_FILTER_OFFSET, vDest, chrDstW) } - if (CONFIG_SWSCALE_ALPHA && aDest){ + if (CONFIG_SWSCALE_ALPHA && aDest) { YSCALEYUV2YV12X_ACCURATE( "0", ALP_MMX_FILTER_OFFSET, aDest, dstW) } YSCALEYUV2YV12X_ACCURATE("0", LUM_MMX_FILTER_OFFSET, dest, dstW) - }else{ - if (uDest){ + } else { + if (uDest) { YSCALEYUV2YV12X( "0", CHR_MMX_FILTER_OFFSET, uDest, chrDstW) YSCALEYUV2YV12X(AV_STRINGIFY(VOF), CHR_MMX_FILTER_OFFSET, vDest, chrDstW) } - if (CONFIG_SWSCALE_ALPHA && aDest){ + if (CONFIG_SWSCALE_ALPHA && aDest) { YSCALEYUV2YV12X( "0", ALP_MMX_FILTER_OFFSET, aDest, dstW) } @@ -956,15 +956,15 @@ static inline void RENAME(yuv2yuv1)(SwsContext *c, const int16_t *lumSrc, const { int i; #if COMPILE_TEMPLATE_MMX - if(!(c->flags & SWS_BITEXACT)){ + if(!(c->flags & SWS_BITEXACT)) { long p= 4; uint8_t *src[4]= {alpSrc + dstW, lumSrc + dstW, chrSrc + chrDstW, chrSrc + VOFW + chrDstW}; uint8_t *dst[4]= {aDest, dest, uDest, vDest}; x86_reg counter[4]= {dstW, dstW, chrDstW, chrDstW}; - if (c->flags & SWS_ACCURATE_RND){ - while(p--){ - if (dst[p]){ + if (c->flags & SWS_ACCURATE_RND) { + while(p--) { + if (dst[p]) { __asm__ volatile( YSCALEYUV2YV121_ACCURATE :: "r" (src[p]), "r" (dst[p] + counter[p]), @@ -973,9 +973,9 @@ static inline void RENAME(yuv2yuv1)(SwsContext *c, const int16_t *lumSrc, const ); } } - }else{ - while(p--){ - if (dst[p]){ + } else { + while(p--) { + if (dst[p]) { __asm__ volatile( YSCALEYUV2YV121 :: "r" (src[p]), "r" (dst[p] + counter[p]), @@ -988,11 +988,10 @@ static inline void RENAME(yuv2yuv1)(SwsContext *c, const int16_t *lumSrc, const return; } #endif - for (i=0; i>7; - if (val&256){ + if (val&256) { if (val<0) val=0; else val=255; } @@ -1001,12 +1000,11 @@ static inline void RENAME(yuv2yuv1)(SwsContext *c, const int16_t *lumSrc, const } if (uDest) - for (i=0; i>7; int v=(chrSrc[i + VOFW]+64)>>7; - if ((u|v)&256){ + if ((u|v)&256) { if (u<0) u=0; else if (u>255) u=255; if (v<0) v=0; @@ -1018,7 +1016,7 @@ static inline void RENAME(yuv2yuv1)(SwsContext *c, const int16_t *lumSrc, const } if (CONFIG_SWSCALE_ALPHA && aDest) - for (i=0; i>7; aDest[i]= av_clip_uint8(val); } @@ -1034,11 +1032,11 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, const int16_t *lumFilter, { #if COMPILE_TEMPLATE_MMX x86_reg dummy=0; - if(!(c->flags & SWS_BITEXACT)){ - if (c->flags & SWS_ACCURATE_RND){ - switch(c->dstFormat){ + if(!(c->flags & SWS_BITEXACT)) { + if (c->flags & SWS_ACCURATE_RND) { + switch(c->dstFormat) { case PIX_FMT_RGB32: - if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf){ + if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf) { YSCALEYUV2PACKEDX_ACCURATE YSCALEYUV2RGBX "movq %%mm2, "U_TEMP"(%0) \n\t" @@ -1052,7 +1050,7 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, const int16_t *lumFilter, WRITEBGR32(%4, %5, %%REGa, %%mm3, %%mm4, %%mm5, %%mm1, %%mm0, %%mm7, %%mm2, %%mm6) YSCALEYUV2PACKEDX_END - }else{ + } else { YSCALEYUV2PACKEDX_ACCURATE YSCALEYUV2RGBX "pcmpeqd %%mm7, %%mm7 \n\t" @@ -1116,11 +1114,10 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, const int16_t *lumFilter, YSCALEYUV2PACKEDX_END return; } - }else{ - switch(c->dstFormat) - { + } else { + switch(c->dstFormat) { case PIX_FMT_RGB32: - if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf){ + if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf) { YSCALEYUV2PACKEDX YSCALEYUV2RGBX YSCALEYUV2PACKEDX_YA(ALP_MMX_FILTER_OFFSET, %%mm0, %%mm3, %%mm6, %%mm1, %%mm7) @@ -1129,7 +1126,7 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, const int16_t *lumFilter, "packuswb %%mm7, %%mm1 \n\t" WRITEBGR32(%4, %5, %%REGa, %%mm2, %%mm4, %%mm5, %%mm1, %%mm0, %%mm7, %%mm3, %%mm6) YSCALEYUV2PACKEDX_END - }else{ + } else { YSCALEYUV2PACKEDX YSCALEYUV2RGBX "pcmpeqd %%mm7, %%mm7 \n\t" @@ -1222,12 +1219,11 @@ static inline void RENAME(yuv2packed2)(SwsContext *c, const uint16_t *buf0, cons int i; #if COMPILE_TEMPLATE_MMX - if(!(c->flags & SWS_BITEXACT)){ - switch(c->dstFormat) - { + if(!(c->flags & SWS_BITEXACT)) { + switch(c->dstFormat) { //Note 8280 == DSTW_OFFSET but the preprocessor can't handle that there :( case PIX_FMT_RGB32: - if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf){ + if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf) { #if ARCH_X86_64 __asm__ volatile( YSCALEYUV2RGB(%%REGBP, %5) @@ -1268,7 +1264,7 @@ static inline void RENAME(yuv2packed2)(SwsContext *c, const uint16_t *buf0, cons "a" (&c->redDither) ); #endif - }else{ + } else { __asm__ volatile( "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" "mov %4, %%"REG_b" \n\t" @@ -1373,20 +1369,17 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, const uint16_t *buf0, cons const uint16_t *buf1= buf0; //FIXME needed for RGB1/BGR1 const int yalpha= 4096; //FIXME ... - if (flags&SWS_FULL_CHR_H_INT) - { + if (flags&SWS_FULL_CHR_H_INT) { c->yuv2packed2(c, buf0, buf0, uvbuf0, uvbuf1, abuf0, abuf0, dest, dstW, 0, uvalpha, y); return; } #if COMPILE_TEMPLATE_MMX - if(!(flags & SWS_BITEXACT)){ - if (uvalpha < 2048) // note this is not correct (shifts chrominance by 0.5 pixels) but it is a bit faster - { - switch(dstFormat) - { + if(!(flags & SWS_BITEXACT)) { + if (uvalpha < 2048) { // note this is not correct (shifts chrominance by 0.5 pixels) but it is a bit faster + switch(dstFormat) { case PIX_FMT_RGB32: - if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf){ + if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf) { __asm__ volatile( "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" "mov %4, %%"REG_b" \n\t" @@ -1400,7 +1393,7 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, const uint16_t *buf0, cons :: "c" (buf0), "d" (abuf0), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), "a" (&c->redDither) ); - }else{ + } else { __asm__ volatile( "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" "mov %4, %%"REG_b" \n\t" @@ -1489,13 +1482,10 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, const uint16_t *buf0, cons ); return; } - } - else - { - switch(dstFormat) - { + } else { + switch(dstFormat) { case PIX_FMT_RGB32: - if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf){ + if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf) { __asm__ volatile( "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" "mov %4, %%"REG_b" \n\t" @@ -1509,7 +1499,7 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, const uint16_t *buf0, cons :: "c" (buf0), "d" (abuf0), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), "a" (&c->redDither) ); - }else{ + } else { __asm__ volatile( "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" "mov %4, %%"REG_b" \n\t" @@ -1601,10 +1591,9 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, const uint16_t *buf0, cons } } #endif /* COMPILE_TEMPLATE_MMX */ - if (uvalpha < 2048) - { + if (uvalpha < 2048) { YSCALE_YUV_2_ANYRGB_C(YSCALE_YUV_2_RGB1_C, YSCALE_YUV_2_PACKED1_C(void,0), YSCALE_YUV_2_GRAY16_1_C, YSCALE_YUV_2_MONO2_C) - }else{ + } else { YSCALE_YUV_2_ANYRGB_C(YSCALE_YUV_2_RGB1B_C, YSCALE_YUV_2_PACKED1B_C(void,0), YSCALE_YUV_2_GRAY16_1_C, YSCALE_YUV_2_MONO2_C) } } @@ -1662,8 +1651,7 @@ static inline void RENAME(yuy2ToUV)(uint8_t *dstU, uint8_t *dstV, const uint8_t ); #else int i; - for (i=0; i0); - if (filterSize==4) // Always true for upscaling, sometimes for down, too. - { + if (filterSize==4) { // Always true for upscaling, sometimes for down, too. x86_reg counter= -2*dstW; filter-= counter*2; filterPos-= counter/2; @@ -2067,9 +2045,7 @@ static inline void RENAME(hScale)(int16_t *dst, int dstW, const uint8_t *src, in : "%"REG_b #endif ); - } - else if (filterSize==8) - { + } else if (filterSize==8) { x86_reg counter= -2*dstW; filter-= counter*4; filterPos-= counter/2; @@ -2124,9 +2100,7 @@ static inline void RENAME(hScale)(int16_t *dst, int dstW, const uint8_t *src, in : "%"REG_b #endif ); - } - else - { + } else { uint8_t *offset = src+filterSize; x86_reg counter= -2*dstW; //filter-= counter*filterSize/2; @@ -2180,14 +2154,12 @@ static inline void RENAME(hScale)(int16_t *dst, int dstW, const uint8_t *src, in hScale_altivec_real(dst, dstW, src, srcW, xInc, filter, filterPos, filterSize); #else int i; - for (i=0; i>16; register unsigned int xalpha=(xpos&0xFFFF)>>9; dst[i]= (src[xx]<<7) + (src[xx+1] - src[xx])*xalpha; @@ -2259,17 +2230,14 @@ static inline void RENAME(hyscale)(SwsContext *c, uint16_t *dst, long dstWidth, #endif { c->hScale(dst, dstWidth, src, srcW, xInc, hLumFilter, hLumFilterPos, hLumFilterSize); - } - else // fast bilinear upscale / crap downscale - { + } else { // fast bilinear upscale / crap downscale #if ARCH_X86 && CONFIG_GPL #if COMPILE_TEMPLATE_MMX2 int i; #if defined(PIC) DECLARE_ALIGNED(8, uint64_t, ebxsave); #endif - if (canMMX2BeUsed) - { + if (canMMX2BeUsed) { __asm__ volatile( #if defined(PIC) "mov %%"REG_b", %5 \n\t" @@ -2328,9 +2296,7 @@ static inline void RENAME(hyscale)(SwsContext *c, uint16_t *dst, long dstWidth, #endif ); for (i=dstWidth-1; (i*xInc)>>16 >=srcW-1; i--) dst[i] = src[srcW-1]*128; - } - else - { + } else { #endif /* COMPILE_TEMPLATE_MMX2 */ x86_reg xInc_shr16 = xInc >> 16; uint16_t xInc_mask = xInc & 0xffff; @@ -2372,14 +2338,14 @@ static inline void RENAME(hyscale)(SwsContext *c, uint16_t *dst, long dstWidth, #endif /* ARCH_X86 */ } - if(!isAlpha && c->srcRange != c->dstRange && !(isRGB(c->dstFormat) || isBGR(c->dstFormat))){ + if(!isAlpha && c->srcRange != c->dstRange && !(isRGB(c->dstFormat) || isBGR(c->dstFormat))) { int i; //FIXME all pal and rgb srcFormats could do this convertion as well //FIXME all scalers more complex than bilinear could do half of this transform - if(c->srcRange){ + if(c->srcRange) { for (i=0; i>14; - }else{ + } else { for (i=0; i>14; } @@ -2392,8 +2358,7 @@ static inline void RENAME(hcscale_fast)(SwsContext *c, int16_t *dst, { int i; unsigned int xpos=0; - for (i=0;i>16; register unsigned int xalpha=(xpos&0xFFFF)>>9; dst[i]=(src1[xx]*(xalpha^127)+src1[xx+1]*xalpha); @@ -2445,17 +2410,14 @@ inline static void RENAME(hcscale)(SwsContext *c, uint16_t *dst, long dstWidth, { c->hScale(dst , dstWidth, src1, srcW, xInc, hChrFilter, hChrFilterPos, hChrFilterSize); c->hScale(dst+VOFW, dstWidth, src2, srcW, xInc, hChrFilter, hChrFilterPos, hChrFilterSize); - } - else // fast bilinear upscale / crap downscale - { + } else { // fast bilinear upscale / crap downscale #if ARCH_X86 && CONFIG_GPL #if COMPILE_TEMPLATE_MMX2 int i; #if defined(PIC) DECLARE_ALIGNED(8, uint64_t, ebxsave); #endif - if (canMMX2BeUsed) - { + if (canMMX2BeUsed) { __asm__ volatile( #if defined(PIC) "mov %%"REG_b", %6 \n\t" @@ -2500,15 +2462,12 @@ inline static void RENAME(hcscale)(SwsContext *c, uint16_t *dst, long dstWidth, ,"%"REG_b #endif ); - for (i=dstWidth-1; (i*xInc)>>16 >=srcW-1; i--) - { + for (i=dstWidth-1; (i*xInc)>>16 >=srcW-1; i--) { //printf("%d %d %d\n", dstWidth, i, srcW); dst[i] = src1[srcW-1]*128; dst[i+VOFW] = src2[srcW-1]*128; } - } - else - { + } else { #endif /* COMPILE_TEMPLATE_MMX2 */ x86_reg xInc_shr16 = (x86_reg) (xInc >> 16); uint16_t xInc_mask = xInc & 0xffff; @@ -2552,17 +2511,17 @@ inline static void RENAME(hcscale)(SwsContext *c, uint16_t *dst, long dstWidth, c->hcscale_fast(c, dst, dstWidth, src1, src2, srcW, xInc); #endif /* ARCH_X86 */ } - if(c->srcRange != c->dstRange && !(isRGB(c->dstFormat) || isBGR(c->dstFormat))){ + if(c->srcRange != c->dstRange && !(isRGB(c->dstFormat) || isBGR(c->dstFormat))) { int i; //FIXME all pal and rgb srcFormats could do this convertion as well //FIXME all scalers more complex than bilinear could do half of this transform - if(c->srcRange){ - for (i=0; isrcRange) { + for (i=0; i>11; //1469 dst[i+VOFW]= (dst[i+VOFW]*1799 + 4081085)>>11; //1469 } - }else{ - for (i=0; i>12; //-264 dst[i+VOFW]= (FFMIN(dst[i+VOFW],30775)*4663 - 9289992)>>12; //-264 } @@ -2571,8 +2530,8 @@ inline static void RENAME(hcscale)(SwsContext *c, uint16_t *dst, long dstWidth, } static int RENAME(swScale)(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dst[], int dstStride[]){ - + int srcSliceH, uint8_t* dst[], int dstStride[]) +{ /* load a few things into local vars to make the code more readable? and faster */ const int srcW= c->srcW; const int dstW= c->dstW; @@ -2617,7 +2576,7 @@ static int RENAME(swScale)(SwsContext *c, uint8_t* src[], int srcStride[], int s int lastInLumBuf= c->lastInLumBuf; int lastInChrBuf= c->lastInChrBuf; - if (isPacked(c->srcFormat)){ + if (isPacked(c->srcFormat)) { src[0]= src[1]= src[2]= @@ -2636,11 +2595,9 @@ static int RENAME(swScale)(SwsContext *c, uint8_t* src[], int srcStride[], int s //printf("sws Strides:%d %d %d -> %d %d %d\n", srcStride[0],srcStride[1],srcStride[2], //dstStride[0],dstStride[1],dstStride[2]); - if (dstStride[0]%8 !=0 || dstStride[1]%8 !=0 || dstStride[2]%8 !=0 || dstStride[3]%8 != 0) - { + if (dstStride[0]%8 !=0 || dstStride[1]%8 !=0 || dstStride[2]%8 !=0 || dstStride[3]%8 != 0) { static int warnedAlready=0; //FIXME move this into the context perhaps - if (flags & SWS_PRINT_INFO && !warnedAlready) - { + if (flags & SWS_PRINT_INFO && !warnedAlready) { av_log(c, AV_LOG_WARNING, "Warning: dstStride is not aligned!\n" " ->cannot do aligned memory accesses anymore\n"); warnedAlready=1; @@ -2650,7 +2607,7 @@ static int RENAME(swScale)(SwsContext *c, uint8_t* src[], int srcStride[], int s /* Note the user might start scaling the picture in the middle so this will not get executed. This is not really intended but works currently, so people might do it. */ - if (srcSliceY ==0){ + if (srcSliceY ==0) { lumBufIndex=0; chrBufIndex=0; dstY=0; @@ -2660,7 +2617,7 @@ static int RENAME(swScale)(SwsContext *c, uint8_t* src[], int srcStride[], int s lastDstY= dstY; - for (;dstY < dstH; dstY++){ + for (;dstY < dstH; dstY++) { unsigned char *dest =dst[0]+dstStride[0]*dstY; const int chrDstY= dstY>>c->chrDstVSubSample; unsigned char *uDest=dst[1]+dstStride[1]*chrDstY; @@ -2695,8 +2652,7 @@ static int RENAME(swScale)(SwsContext *c, uint8_t* src[], int srcStride[], int s vChrBufSize, vLumBufSize);*/ //Do horizontal scaling - while(lastInLumBuf < lastLumSrcY) - { + while(lastInLumBuf < lastLumSrcY) { uint8_t *src1= src[0]+(lastInLumBuf + 1 - srcSliceY)*srcStride[0]; uint8_t *src2= src[3]+(lastInLumBuf + 1 - srcSliceY)*srcStride[3]; lumBufIndex++; @@ -2716,8 +2672,7 @@ static int RENAME(swScale)(SwsContext *c, uint8_t* src[], int srcStride[], int s pal, 1); lastInLumBuf++; } - while(lastInChrBuf < lastChrSrcY) - { + while(lastInChrBuf < lastChrSrcY) { uint8_t *src1= src[1]+(lastInChrBuf + 1 - chrSrcSliceY)*srcStride[1]; uint8_t *src2= src[2]+(lastInChrBuf + 1 - chrSrcSliceY)*srcStride[2]; chrBufIndex++; @@ -2747,52 +2702,49 @@ static int RENAME(swScale)(SwsContext *c, uint8_t* src[], int srcStride[], int s c->greenDither= ff_dither4[dstY&1]; c->redDither= ff_dither8[(dstY+1)&1]; #endif - if (dstY < dstH-2) - { + if (dstY < dstH-2) { const int16_t **lumSrcPtr= (const int16_t **) lumPixBuf + lumBufIndex + firstLumSrcY - lastInLumBuf + vLumBufSize; const int16_t **chrSrcPtr= (const int16_t **) chrPixBuf + chrBufIndex + firstChrSrcY - lastInChrBuf + vChrBufSize; const int16_t **alpSrcPtr= (CONFIG_SWSCALE_ALPHA && alpPixBuf) ? (const int16_t **) alpPixBuf + lumBufIndex + firstLumSrcY - lastInLumBuf + vLumBufSize : NULL; #if COMPILE_TEMPLATE_MMX int i; - if (flags & SWS_ACCURATE_RND){ + if (flags & SWS_ACCURATE_RND) { int s= APCK_SIZE / 8; - for (i=0; i1)]; lumMmxFilter[s*i+APCK_COEF/4 ]= lumMmxFilter[s*i+APCK_COEF/4+1]= vLumFilter[dstY*vLumFilterSize + i ] + (vLumFilterSize>1 ? vLumFilter[dstY*vLumFilterSize + i + 1]<<16 : 0); - if (CONFIG_SWSCALE_ALPHA && alpPixBuf){ + if (CONFIG_SWSCALE_ALPHA && alpPixBuf) { *(void**)&alpMmxFilter[s*i ]= alpSrcPtr[i ]; *(void**)&alpMmxFilter[s*i+APCK_PTR2/4 ]= alpSrcPtr[i+(vLumFilterSize>1)]; alpMmxFilter[s*i+APCK_COEF/4 ]= alpMmxFilter[s*i+APCK_COEF/4+1]= lumMmxFilter[s*i+APCK_COEF/4 ]; } } - for (i=0; i1)]; chrMmxFilter[s*i+APCK_COEF/4 ]= chrMmxFilter[s*i+APCK_COEF/4+1]= vChrFilter[chrDstY*vChrFilterSize + i ] + (vChrFilterSize>1 ? vChrFilter[chrDstY*vChrFilterSize + i + 1]<<16 : 0); } - }else{ - for (i=0; i> 32; lumMmxFilter[4*i+2]= lumMmxFilter[4*i+3]= ((uint16_t)vLumFilter[dstY*vLumFilterSize + i])*0x10001; - if (CONFIG_SWSCALE_ALPHA && alpPixBuf){ + if (CONFIG_SWSCALE_ALPHA && alpPixBuf) { alpMmxFilter[4*i+0]= (int32_t)alpSrcPtr[i]; alpMmxFilter[4*i+1]= (uint64_t)alpSrcPtr[i] >> 32; alpMmxFilter[4*i+2]= alpMmxFilter[4*i+3]= lumMmxFilter[4*i+2]; } } - for (i=0; i> 32; chrMmxFilter[4*i+2]= @@ -2801,87 +2753,72 @@ static int RENAME(swScale)(SwsContext *c, uint8_t* src[], int srcStride[], int s } } #endif - if (dstFormat == PIX_FMT_NV12 || dstFormat == PIX_FMT_NV21){ + if (dstFormat == PIX_FMT_NV12 || dstFormat == PIX_FMT_NV21) { const int chrSkipMask= (1<chrDstVSubSample)-1; if (dstY&chrSkipMask) uDest= NULL; //FIXME split functions in lumi / chromi c->yuv2nv12X(c, vLumFilter+dstY*vLumFilterSize , lumSrcPtr, vLumFilterSize, vChrFilter+chrDstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, dest, uDest, dstW, chrDstW, dstFormat); - } - else if (isPlanarYUV(dstFormat) || dstFormat==PIX_FMT_GRAY8) //YV12 like - { + } else if (isPlanarYUV(dstFormat) || dstFormat==PIX_FMT_GRAY8) { //YV12 like const int chrSkipMask= (1<chrDstVSubSample)-1; if ((dstY&chrSkipMask) || isGray(dstFormat)) uDest=vDest= NULL; //FIXME split functions in lumi / chromi - if (is16BPS(dstFormat)) - { + if (is16BPS(dstFormat)) { yuv2yuvX16inC( vLumFilter+dstY*vLumFilterSize , lumSrcPtr, vLumFilterSize, vChrFilter+chrDstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, alpSrcPtr, (uint16_t *) dest, (uint16_t *) uDest, (uint16_t *) vDest, (uint16_t *) aDest, dstW, chrDstW, dstFormat); - } - else - if (vLumFilterSize == 1 && vChrFilterSize == 1) // unscaled YV12 - { + } else if (vLumFilterSize == 1 && vChrFilterSize == 1) { // unscaled YV12 int16_t *lumBuf = lumPixBuf[0]; int16_t *chrBuf= chrPixBuf[0]; int16_t *alpBuf= (CONFIG_SWSCALE_ALPHA && alpPixBuf) ? alpPixBuf[0] : NULL; c->yuv2yuv1(c, lumBuf, chrBuf, alpBuf, dest, uDest, vDest, aDest, dstW, chrDstW); - } - else //General YV12 - { + } else { //General YV12 c->yuv2yuvX(c, vLumFilter+dstY*vLumFilterSize , lumSrcPtr, vLumFilterSize, vChrFilter+chrDstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, alpSrcPtr, dest, uDest, vDest, aDest, dstW, chrDstW); } - } - else - { + } else { assert(lumSrcPtr + vLumFilterSize - 1 < lumPixBuf + vLumBufSize*2); assert(chrSrcPtr + vChrFilterSize - 1 < chrPixBuf + vChrBufSize*2); - if (vLumFilterSize == 1 && vChrFilterSize == 2) //unscaled RGB - { + if (vLumFilterSize == 1 && vChrFilterSize == 2) { //unscaled RGB int chrAlpha= vChrFilter[2*dstY+1]; - if(flags & SWS_FULL_CHR_H_INT){ + if(flags & SWS_FULL_CHR_H_INT) { yuv2rgbXinC_full(c, //FIXME write a packed1_full function vLumFilter+dstY*vLumFilterSize, lumSrcPtr, vLumFilterSize, vChrFilter+dstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, alpSrcPtr, dest, dstW, dstY); - }else{ + } else { c->yuv2packed1(c, *lumSrcPtr, *chrSrcPtr, *(chrSrcPtr+1), alpPixBuf ? *alpSrcPtr : NULL, dest, dstW, chrAlpha, dstFormat, flags, dstY); } - } - else if (vLumFilterSize == 2 && vChrFilterSize == 2) //bilinear upscale RGB - { + } else if (vLumFilterSize == 2 && vChrFilterSize == 2) { //bilinear upscale RGB int lumAlpha= vLumFilter[2*dstY+1]; int chrAlpha= vChrFilter[2*dstY+1]; lumMmxFilter[2]= lumMmxFilter[3]= vLumFilter[2*dstY ]*0x10001; chrMmxFilter[2]= chrMmxFilter[3]= vChrFilter[2*chrDstY]*0x10001; - if(flags & SWS_FULL_CHR_H_INT){ + if(flags & SWS_FULL_CHR_H_INT) { yuv2rgbXinC_full(c, //FIXME write a packed2_full function vLumFilter+dstY*vLumFilterSize, lumSrcPtr, vLumFilterSize, vChrFilter+dstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, alpSrcPtr, dest, dstW, dstY); - }else{ + } else { c->yuv2packed2(c, *lumSrcPtr, *(lumSrcPtr+1), *chrSrcPtr, *(chrSrcPtr+1), alpPixBuf ? *alpSrcPtr : NULL, alpPixBuf ? *(alpSrcPtr+1) : NULL, dest, dstW, lumAlpha, chrAlpha, dstY); } - } - else //general RGB - { - if(flags & SWS_FULL_CHR_H_INT){ + } else { //general RGB + if(flags & SWS_FULL_CHR_H_INT) { yuv2rgbXinC_full(c, vLumFilter+dstY*vLumFilterSize, lumSrcPtr, vLumFilterSize, vChrFilter+dstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, alpSrcPtr, dest, dstW, dstY); - }else{ + } else { c->yuv2packedX(c, vLumFilter+dstY*vLumFilterSize, lumSrcPtr, vLumFilterSize, vChrFilter+dstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, @@ -2889,50 +2826,41 @@ static int RENAME(swScale)(SwsContext *c, uint8_t* src[], int srcStride[], int s } } } - } - else // hmm looks like we can't use MMX here without overwriting this array's tail - { + } else { // hmm looks like we can't use MMX here without overwriting this array's tail const int16_t **lumSrcPtr= (const int16_t **)lumPixBuf + lumBufIndex + firstLumSrcY - lastInLumBuf + vLumBufSize; const int16_t **chrSrcPtr= (const int16_t **)chrPixBuf + chrBufIndex + firstChrSrcY - lastInChrBuf + vChrBufSize; const int16_t **alpSrcPtr= (CONFIG_SWSCALE_ALPHA && alpPixBuf) ? (const int16_t **)alpPixBuf + lumBufIndex + firstLumSrcY - lastInLumBuf + vLumBufSize : NULL; - if (dstFormat == PIX_FMT_NV12 || dstFormat == PIX_FMT_NV21){ + if (dstFormat == PIX_FMT_NV12 || dstFormat == PIX_FMT_NV21) { const int chrSkipMask= (1<chrDstVSubSample)-1; if (dstY&chrSkipMask) uDest= NULL; //FIXME split functions in lumi / chromi yuv2nv12XinC( vLumFilter+dstY*vLumFilterSize , lumSrcPtr, vLumFilterSize, vChrFilter+chrDstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, dest, uDest, dstW, chrDstW, dstFormat); - } - else if (isPlanarYUV(dstFormat) || dstFormat==PIX_FMT_GRAY8) //YV12 - { + } else if (isPlanarYUV(dstFormat) || dstFormat==PIX_FMT_GRAY8) { //YV12 const int chrSkipMask= (1<chrDstVSubSample)-1; if ((dstY&chrSkipMask) || isGray(dstFormat)) uDest=vDest= NULL; //FIXME split functions in lumi / chromi - if (is16BPS(dstFormat)) - { + if (is16BPS(dstFormat)) { yuv2yuvX16inC( vLumFilter+dstY*vLumFilterSize , lumSrcPtr, vLumFilterSize, vChrFilter+chrDstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, alpSrcPtr, (uint16_t *) dest, (uint16_t *) uDest, (uint16_t *) vDest, (uint16_t *) aDest, dstW, chrDstW, dstFormat); - } - else - { + } else { yuv2yuvXinC( vLumFilter+dstY*vLumFilterSize , lumSrcPtr, vLumFilterSize, vChrFilter+chrDstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, alpSrcPtr, dest, uDest, vDest, aDest, dstW, chrDstW); } - } - else - { + } else { assert(lumSrcPtr + vLumFilterSize - 1 < lumPixBuf + vLumBufSize*2); assert(chrSrcPtr + vChrFilterSize - 1 < chrPixBuf + vChrBufSize*2); - if(flags & SWS_FULL_CHR_H_INT){ + if(flags & SWS_FULL_CHR_H_INT) { yuv2rgbXinC_full(c, vLumFilter+dstY*vLumFilterSize, lumSrcPtr, vLumFilterSize, vChrFilter+dstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, alpSrcPtr, dest, dstW, dstY); - }else{ + } else { yuv2packedXinC(c, vLumFilter+dstY*vLumFilterSize, lumSrcPtr, vLumFilterSize, vChrFilter+dstY*vChrFilterSize, chrSrcPtr, vChrFilterSize, diff --git a/libswscale/x86/yuv2rgb_mmx.c b/libswscale/x86/yuv2rgb_mmx.c index e0b76e0b2d..b03cce2ae7 100644 --- a/libswscale/x86/yuv2rgb_mmx.c +++ b/libswscale/x86/yuv2rgb_mmx.c @@ -63,15 +63,15 @@ SwsFunc ff_yuv2rgb_init_mmx(SwsContext *c) if (c->flags & SWS_CPU_CAPS_MMX2) { switch (c->dstFormat) { case PIX_FMT_RGB32: - if (CONFIG_SWSCALE_ALPHA && c->srcFormat == PIX_FMT_YUVA420P){ + if (CONFIG_SWSCALE_ALPHA && c->srcFormat == PIX_FMT_YUVA420P) { if (HAVE_7REGS) return yuva420_rgb32_MMX2; break; - }else return yuv420_rgb32_MMX2; + } else return yuv420_rgb32_MMX2; case PIX_FMT_BGR32: - if (CONFIG_SWSCALE_ALPHA && c->srcFormat == PIX_FMT_YUVA420P){ + if (CONFIG_SWSCALE_ALPHA && c->srcFormat == PIX_FMT_YUVA420P) { if (HAVE_7REGS) return yuva420_bgr32_MMX2; break; - }else return yuv420_bgr32_MMX2; + } else return yuv420_bgr32_MMX2; case PIX_FMT_BGR24: return yuv420_rgb24_MMX2; case PIX_FMT_RGB565: return yuv420_rgb16_MMX2; case PIX_FMT_RGB555: return yuv420_rgb15_MMX2; @@ -80,15 +80,15 @@ SwsFunc ff_yuv2rgb_init_mmx(SwsContext *c) if (c->flags & SWS_CPU_CAPS_MMX) { switch (c->dstFormat) { case PIX_FMT_RGB32: - if (CONFIG_SWSCALE_ALPHA && c->srcFormat == PIX_FMT_YUVA420P){ + if (CONFIG_SWSCALE_ALPHA && c->srcFormat == PIX_FMT_YUVA420P) { if (HAVE_7REGS) return yuva420_rgb32_MMX; break; - }else return yuv420_rgb32_MMX; + } else return yuv420_rgb32_MMX; case PIX_FMT_BGR32: - if (CONFIG_SWSCALE_ALPHA && c->srcFormat == PIX_FMT_YUVA420P){ + if (CONFIG_SWSCALE_ALPHA && c->srcFormat == PIX_FMT_YUVA420P) { if (HAVE_7REGS) return yuva420_bgr32_MMX; break; - }else return yuv420_bgr32_MMX; + } else return yuv420_bgr32_MMX; case PIX_FMT_BGR24: return yuv420_rgb24_MMX; case PIX_FMT_RGB565: return yuv420_rgb16_MMX; case PIX_FMT_RGB555: return yuv420_rgb15_MMX; diff --git a/libswscale/x86/yuv2rgb_template.c b/libswscale/x86/yuv2rgb_template.c index 5f319699bd..e4a1a9809b 100644 --- a/libswscale/x86/yuv2rgb_template.c +++ b/libswscale/x86/yuv2rgb_template.c @@ -122,7 +122,7 @@ #define YUV422_UNSHIFT \ - if(c->srcFormat == PIX_FMT_YUV422P){ \ + if(c->srcFormat == PIX_FMT_YUV422P) {\ srcStride[1] *= 2; \ srcStride[2] *= 2; \ } \ @@ -180,7 +180,8 @@ return srcSliceH; \ static inline int RENAME(yuv420_rgb16)(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dst[], int dstStride[]){ + int srcSliceH, uint8_t* dst[], int dstStride[]) +{ int y, h_size; YUV422_UNSHIFT @@ -236,7 +237,8 @@ static inline int RENAME(yuv420_rgb16)(SwsContext *c, uint8_t* src[], int srcStr } static inline int RENAME(yuv420_rgb15)(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dst[], int dstStride[]){ + int srcSliceH, uint8_t* dst[], int dstStride[]) +{ int y, h_size; YUV422_UNSHIFT @@ -294,7 +296,8 @@ static inline int RENAME(yuv420_rgb15)(SwsContext *c, uint8_t* src[], int srcStr } static inline int RENAME(yuv420_rgb24)(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dst[], int dstStride[]){ + int srcSliceH, uint8_t* dst[], int dstStride[]) +{ int y, h_size; YUV422_UNSHIFT @@ -470,7 +473,8 @@ etc. "movq 8 (%5, %0, 2), %%mm6;" /* Load 8 Y Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 */ \ static inline int RENAME(yuv420_rgb32)(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dst[], int dstStride[]){ + int srcSliceH, uint8_t* dst[], int dstStride[]) +{ int y, h_size; YUV422_UNSHIFT @@ -486,7 +490,8 @@ static inline int RENAME(yuv420_rgb32)(SwsContext *c, uint8_t* src[], int srcStr } static inline int RENAME(yuva420_rgb32)(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dst[], int dstStride[]){ + int srcSliceH, uint8_t* dst[], int dstStride[]) +{ #if HAVE_7REGS int y, h_size; @@ -504,7 +509,8 @@ static inline int RENAME(yuva420_rgb32)(SwsContext *c, uint8_t* src[], int srcSt } static inline int RENAME(yuv420_bgr32)(SwsContext *c, const uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dst[], int dstStride[]){ + int srcSliceH, uint8_t* dst[], int dstStride[]) +{ int y, h_size; YUV422_UNSHIFT @@ -520,7 +526,8 @@ static inline int RENAME(yuv420_bgr32)(SwsContext *c, const uint8_t* src[], int } static inline int RENAME(yuva420_bgr32)(SwsContext *c, const uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dst[], int dstStride[]){ + int srcSliceH, uint8_t* dst[], int dstStride[]) +{ #if HAVE_7REGS int y, h_size; diff --git a/libswscale/yuv2rgb.c b/libswscale/yuv2rgb.c index b20fa7daf2..2d53a5f4e6 100644 --- a/libswscale/yuv2rgb.c +++ b/libswscale/yuv2rgb.c @@ -92,7 +92,8 @@ const int32_t ff_yuv2rgb_coeffs[8][4] = { #define YUV2RGBFUNC(func_name, dst_type, alpha) \ static int func_name(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, \ - int srcSliceH, uint8_t* dst[], int dstStride[]){\ + int srcSliceH, uint8_t* dst[], int dstStride[]) \ +{\ int y;\ \ if (!alpha && c->srcFormat == PIX_FMT_YUV422P) {\ @@ -110,7 +111,7 @@ static int func_name(SwsContext *c, uint8_t* src[], int srcStride[], int srcSlic uint8_t *pv = src[2] + (y>>1)*srcStride[2];\ uint8_t av_unused *pa_1, *pa_2;\ unsigned int h_size = c->dstW>>3;\ - if (alpha){\ + if (alpha) {\ pa_1 = src[3] + y*srcStride[3];\ pa_2 = pa_1 + srcStride[3];\ }\ From 808ac079404de6f4327919606d8668d2b5a6b920 Mon Sep 17 00:00:00 2001 From: ramiro Date: Sun, 16 Aug 2009 21:37:07 +0000 Subject: [PATCH 69/77] More indentation changes leftover from r29522: - Align asm code to the column 4 spaces after the call to __asm__(); - Align cases in switch statements to the same column as "switch". git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29524 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libswscale/swscale_internal.h | 64 +- libswscale/swscale_template.c | 1300 ++++++++++++++++----------------- 2 files changed, 682 insertions(+), 682 deletions(-) diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h index 868feb3737..48843ec274 100644 --- a/libswscale/swscale_internal.h +++ b/libswscale/swscale_internal.h @@ -381,38 +381,38 @@ const char *sws_format_name(enum PixelFormat format); static inline int fmt_depth(int fmt) { switch(fmt) { - case PIX_FMT_RGB48BE: - case PIX_FMT_RGB48LE: - return 48; - case PIX_FMT_BGRA: - case PIX_FMT_ABGR: - case PIX_FMT_RGBA: - case PIX_FMT_ARGB: - return 32; - case PIX_FMT_BGR24: - case PIX_FMT_RGB24: - return 24; - case PIX_FMT_BGR565: - case PIX_FMT_RGB565: - case PIX_FMT_GRAY16BE: - case PIX_FMT_GRAY16LE: - return 16; - case PIX_FMT_BGR555: - case PIX_FMT_RGB555: - return 15; - case PIX_FMT_BGR8: - case PIX_FMT_RGB8: - return 8; - case PIX_FMT_BGR4: - case PIX_FMT_RGB4: - case PIX_FMT_BGR4_BYTE: - case PIX_FMT_RGB4_BYTE: - return 4; - case PIX_FMT_MONOBLACK: - case PIX_FMT_MONOWHITE: - return 1; - default: - return 0; + case PIX_FMT_RGB48BE: + case PIX_FMT_RGB48LE: + return 48; + case PIX_FMT_BGRA: + case PIX_FMT_ABGR: + case PIX_FMT_RGBA: + case PIX_FMT_ARGB: + return 32; + case PIX_FMT_BGR24: + case PIX_FMT_RGB24: + return 24; + case PIX_FMT_BGR565: + case PIX_FMT_RGB565: + case PIX_FMT_GRAY16BE: + case PIX_FMT_GRAY16LE: + return 16; + case PIX_FMT_BGR555: + case PIX_FMT_RGB555: + return 15; + case PIX_FMT_BGR8: + case PIX_FMT_RGB8: + return 8; + case PIX_FMT_BGR4: + case PIX_FMT_RGB4: + case PIX_FMT_BGR4_BYTE: + case PIX_FMT_RGB4_BYTE: + return 4; + case PIX_FMT_MONOBLACK: + case PIX_FMT_MONOWHITE: + return 1; + default: + return 0; } } diff --git a/libswscale/swscale_template.c b/libswscale/swscale_template.c index f2209fc345..c985dfb3ea 100644 --- a/libswscale/swscale_template.c +++ b/libswscale/swscale_template.c @@ -57,100 +57,100 @@ #define YSCALEYUV2YV12X(x, offset, dest, width) \ __asm__ volatile(\ - "xor %%"REG_a", %%"REG_a" \n\t"\ - "movq "VROUNDER_OFFSET"(%0), %%mm3 \n\t"\ - "movq %%mm3, %%mm4 \n\t"\ - "lea " offset "(%0), %%"REG_d" \n\t"\ - "mov (%%"REG_d"), %%"REG_S" \n\t"\ - ASMALIGN(4) /* FIXME Unroll? */\ - "1: \n\t"\ - "movq 8(%%"REG_d"), %%mm0 \n\t" /* filterCoeff */\ - "movq " x "(%%"REG_S", %%"REG_a", 2), %%mm2 \n\t" /* srcData */\ - "movq 8+" x "(%%"REG_S", %%"REG_a", 2), %%mm5 \n\t" /* srcData */\ - "add $16, %%"REG_d" \n\t"\ - "mov (%%"REG_d"), %%"REG_S" \n\t"\ - "test %%"REG_S", %%"REG_S" \n\t"\ - "pmulhw %%mm0, %%mm2 \n\t"\ - "pmulhw %%mm0, %%mm5 \n\t"\ - "paddw %%mm2, %%mm3 \n\t"\ - "paddw %%mm5, %%mm4 \n\t"\ - " jnz 1b \n\t"\ - "psraw $3, %%mm3 \n\t"\ - "psraw $3, %%mm4 \n\t"\ - "packuswb %%mm4, %%mm3 \n\t"\ - MOVNTQ(%%mm3, (%1, %%REGa))\ - "add $8, %%"REG_a" \n\t"\ - "cmp %2, %%"REG_a" \n\t"\ - "movq "VROUNDER_OFFSET"(%0), %%mm3 \n\t"\ - "movq %%mm3, %%mm4 \n\t"\ - "lea " offset "(%0), %%"REG_d" \n\t"\ - "mov (%%"REG_d"), %%"REG_S" \n\t"\ - "jb 1b \n\t"\ - :: "r" (&c->redDither),\ - "r" (dest), "g" (width)\ - : "%"REG_a, "%"REG_d, "%"REG_S\ + "xor %%"REG_a", %%"REG_a" \n\t"\ + "movq "VROUNDER_OFFSET"(%0), %%mm3 \n\t"\ + "movq %%mm3, %%mm4 \n\t"\ + "lea " offset "(%0), %%"REG_d" \n\t"\ + "mov (%%"REG_d"), %%"REG_S" \n\t"\ + ASMALIGN(4) /* FIXME Unroll? */\ + "1: \n\t"\ + "movq 8(%%"REG_d"), %%mm0 \n\t" /* filterCoeff */\ + "movq " x "(%%"REG_S", %%"REG_a", 2), %%mm2 \n\t" /* srcData */\ + "movq 8+" x "(%%"REG_S", %%"REG_a", 2), %%mm5 \n\t" /* srcData */\ + "add $16, %%"REG_d" \n\t"\ + "mov (%%"REG_d"), %%"REG_S" \n\t"\ + "test %%"REG_S", %%"REG_S" \n\t"\ + "pmulhw %%mm0, %%mm2 \n\t"\ + "pmulhw %%mm0, %%mm5 \n\t"\ + "paddw %%mm2, %%mm3 \n\t"\ + "paddw %%mm5, %%mm4 \n\t"\ + " jnz 1b \n\t"\ + "psraw $3, %%mm3 \n\t"\ + "psraw $3, %%mm4 \n\t"\ + "packuswb %%mm4, %%mm3 \n\t"\ + MOVNTQ(%%mm3, (%1, %%REGa))\ + "add $8, %%"REG_a" \n\t"\ + "cmp %2, %%"REG_a" \n\t"\ + "movq "VROUNDER_OFFSET"(%0), %%mm3 \n\t"\ + "movq %%mm3, %%mm4 \n\t"\ + "lea " offset "(%0), %%"REG_d" \n\t"\ + "mov (%%"REG_d"), %%"REG_S" \n\t"\ + "jb 1b \n\t"\ + :: "r" (&c->redDither),\ + "r" (dest), "g" (width)\ + : "%"REG_a, "%"REG_d, "%"REG_S\ ); #define YSCALEYUV2YV12X_ACCURATE(x, offset, dest, width) \ __asm__ volatile(\ - "lea " offset "(%0), %%"REG_d" \n\t"\ - "xor %%"REG_a", %%"REG_a" \n\t"\ - "pxor %%mm4, %%mm4 \n\t"\ - "pxor %%mm5, %%mm5 \n\t"\ - "pxor %%mm6, %%mm6 \n\t"\ - "pxor %%mm7, %%mm7 \n\t"\ - "mov (%%"REG_d"), %%"REG_S" \n\t"\ - ASMALIGN(4) \ - "1: \n\t"\ - "movq " x "(%%"REG_S", %%"REG_a", 2), %%mm0 \n\t" /* srcData */\ - "movq 8+" x "(%%"REG_S", %%"REG_a", 2), %%mm2 \n\t" /* srcData */\ - "mov "STR(APCK_PTR2)"(%%"REG_d"), %%"REG_S" \n\t"\ - "movq " x "(%%"REG_S", %%"REG_a", 2), %%mm1 \n\t" /* srcData */\ - "movq %%mm0, %%mm3 \n\t"\ - "punpcklwd %%mm1, %%mm0 \n\t"\ - "punpckhwd %%mm1, %%mm3 \n\t"\ - "movq "STR(APCK_COEF)"(%%"REG_d"), %%mm1 \n\t" /* filterCoeff */\ - "pmaddwd %%mm1, %%mm0 \n\t"\ - "pmaddwd %%mm1, %%mm3 \n\t"\ - "paddd %%mm0, %%mm4 \n\t"\ - "paddd %%mm3, %%mm5 \n\t"\ - "movq 8+" x "(%%"REG_S", %%"REG_a", 2), %%mm3 \n\t" /* srcData */\ - "mov "STR(APCK_SIZE)"(%%"REG_d"), %%"REG_S" \n\t"\ - "add $"STR(APCK_SIZE)", %%"REG_d" \n\t"\ - "test %%"REG_S", %%"REG_S" \n\t"\ - "movq %%mm2, %%mm0 \n\t"\ - "punpcklwd %%mm3, %%mm2 \n\t"\ - "punpckhwd %%mm3, %%mm0 \n\t"\ - "pmaddwd %%mm1, %%mm2 \n\t"\ - "pmaddwd %%mm1, %%mm0 \n\t"\ - "paddd %%mm2, %%mm6 \n\t"\ - "paddd %%mm0, %%mm7 \n\t"\ - " jnz 1b \n\t"\ - "psrad $16, %%mm4 \n\t"\ - "psrad $16, %%mm5 \n\t"\ - "psrad $16, %%mm6 \n\t"\ - "psrad $16, %%mm7 \n\t"\ - "movq "VROUNDER_OFFSET"(%0), %%mm0 \n\t"\ - "packssdw %%mm5, %%mm4 \n\t"\ - "packssdw %%mm7, %%mm6 \n\t"\ - "paddw %%mm0, %%mm4 \n\t"\ - "paddw %%mm0, %%mm6 \n\t"\ - "psraw $3, %%mm4 \n\t"\ - "psraw $3, %%mm6 \n\t"\ - "packuswb %%mm6, %%mm4 \n\t"\ - MOVNTQ(%%mm4, (%1, %%REGa))\ - "add $8, %%"REG_a" \n\t"\ - "cmp %2, %%"REG_a" \n\t"\ - "lea " offset "(%0), %%"REG_d" \n\t"\ - "pxor %%mm4, %%mm4 \n\t"\ - "pxor %%mm5, %%mm5 \n\t"\ - "pxor %%mm6, %%mm6 \n\t"\ - "pxor %%mm7, %%mm7 \n\t"\ - "mov (%%"REG_d"), %%"REG_S" \n\t"\ - "jb 1b \n\t"\ - :: "r" (&c->redDither),\ - "r" (dest), "g" (width)\ - : "%"REG_a, "%"REG_d, "%"REG_S\ + "lea " offset "(%0), %%"REG_d" \n\t"\ + "xor %%"REG_a", %%"REG_a" \n\t"\ + "pxor %%mm4, %%mm4 \n\t"\ + "pxor %%mm5, %%mm5 \n\t"\ + "pxor %%mm6, %%mm6 \n\t"\ + "pxor %%mm7, %%mm7 \n\t"\ + "mov (%%"REG_d"), %%"REG_S" \n\t"\ + ASMALIGN(4) \ + "1: \n\t"\ + "movq " x "(%%"REG_S", %%"REG_a", 2), %%mm0 \n\t" /* srcData */\ + "movq 8+" x "(%%"REG_S", %%"REG_a", 2), %%mm2 \n\t" /* srcData */\ + "mov "STR(APCK_PTR2)"(%%"REG_d"), %%"REG_S" \n\t"\ + "movq " x "(%%"REG_S", %%"REG_a", 2), %%mm1 \n\t" /* srcData */\ + "movq %%mm0, %%mm3 \n\t"\ + "punpcklwd %%mm1, %%mm0 \n\t"\ + "punpckhwd %%mm1, %%mm3 \n\t"\ + "movq "STR(APCK_COEF)"(%%"REG_d"), %%mm1 \n\t" /* filterCoeff */\ + "pmaddwd %%mm1, %%mm0 \n\t"\ + "pmaddwd %%mm1, %%mm3 \n\t"\ + "paddd %%mm0, %%mm4 \n\t"\ + "paddd %%mm3, %%mm5 \n\t"\ + "movq 8+" x "(%%"REG_S", %%"REG_a", 2), %%mm3 \n\t" /* srcData */\ + "mov "STR(APCK_SIZE)"(%%"REG_d"), %%"REG_S" \n\t"\ + "add $"STR(APCK_SIZE)", %%"REG_d" \n\t"\ + "test %%"REG_S", %%"REG_S" \n\t"\ + "movq %%mm2, %%mm0 \n\t"\ + "punpcklwd %%mm3, %%mm2 \n\t"\ + "punpckhwd %%mm3, %%mm0 \n\t"\ + "pmaddwd %%mm1, %%mm2 \n\t"\ + "pmaddwd %%mm1, %%mm0 \n\t"\ + "paddd %%mm2, %%mm6 \n\t"\ + "paddd %%mm0, %%mm7 \n\t"\ + " jnz 1b \n\t"\ + "psrad $16, %%mm4 \n\t"\ + "psrad $16, %%mm5 \n\t"\ + "psrad $16, %%mm6 \n\t"\ + "psrad $16, %%mm7 \n\t"\ + "movq "VROUNDER_OFFSET"(%0), %%mm0 \n\t"\ + "packssdw %%mm5, %%mm4 \n\t"\ + "packssdw %%mm7, %%mm6 \n\t"\ + "paddw %%mm0, %%mm4 \n\t"\ + "paddw %%mm0, %%mm6 \n\t"\ + "psraw $3, %%mm4 \n\t"\ + "psraw $3, %%mm6 \n\t"\ + "packuswb %%mm6, %%mm4 \n\t"\ + MOVNTQ(%%mm4, (%1, %%REGa))\ + "add $8, %%"REG_a" \n\t"\ + "cmp %2, %%"REG_a" \n\t"\ + "lea " offset "(%0), %%"REG_d" \n\t"\ + "pxor %%mm4, %%mm4 \n\t"\ + "pxor %%mm5, %%mm5 \n\t"\ + "pxor %%mm6, %%mm6 \n\t"\ + "pxor %%mm7, %%mm7 \n\t"\ + "mov (%%"REG_d"), %%"REG_S" \n\t"\ + "jb 1b \n\t"\ + :: "r" (&c->redDither),\ + "r" (dest), "g" (width)\ + : "%"REG_a, "%"REG_d, "%"REG_S\ ); #define YSCALEYUV2YV121 \ @@ -193,27 +193,27 @@ */ #define YSCALEYUV2PACKEDX_UV \ __asm__ volatile(\ - "xor %%"REG_a", %%"REG_a" \n\t"\ - ASMALIGN(4)\ - "nop \n\t"\ - "1: \n\t"\ - "lea "CHR_MMX_FILTER_OFFSET"(%0), %%"REG_d" \n\t"\ - "mov (%%"REG_d"), %%"REG_S" \n\t"\ - "movq "VROUNDER_OFFSET"(%0), %%mm3 \n\t"\ - "movq %%mm3, %%mm4 \n\t"\ - ASMALIGN(4)\ - "2: \n\t"\ - "movq 8(%%"REG_d"), %%mm0 \n\t" /* filterCoeff */\ - "movq (%%"REG_S", %%"REG_a"), %%mm2 \n\t" /* UsrcData */\ - "movq "AV_STRINGIFY(VOF)"(%%"REG_S", %%"REG_a"), %%mm5 \n\t" /* VsrcData */\ - "add $16, %%"REG_d" \n\t"\ - "mov (%%"REG_d"), %%"REG_S" \n\t"\ - "pmulhw %%mm0, %%mm2 \n\t"\ - "pmulhw %%mm0, %%mm5 \n\t"\ - "paddw %%mm2, %%mm3 \n\t"\ - "paddw %%mm5, %%mm4 \n\t"\ - "test %%"REG_S", %%"REG_S" \n\t"\ - " jnz 2b \n\t"\ + "xor %%"REG_a", %%"REG_a" \n\t"\ + ASMALIGN(4)\ + "nop \n\t"\ + "1: \n\t"\ + "lea "CHR_MMX_FILTER_OFFSET"(%0), %%"REG_d" \n\t"\ + "mov (%%"REG_d"), %%"REG_S" \n\t"\ + "movq "VROUNDER_OFFSET"(%0), %%mm3 \n\t"\ + "movq %%mm3, %%mm4 \n\t"\ + ASMALIGN(4)\ + "2: \n\t"\ + "movq 8(%%"REG_d"), %%mm0 \n\t" /* filterCoeff */\ + "movq (%%"REG_S", %%"REG_a"), %%mm2 \n\t" /* UsrcData */\ + "movq "AV_STRINGIFY(VOF)"(%%"REG_S", %%"REG_a"), %%mm5 \n\t" /* VsrcData */\ + "add $16, %%"REG_d" \n\t"\ + "mov (%%"REG_d"), %%"REG_S" \n\t"\ + "pmulhw %%mm0, %%mm2 \n\t"\ + "pmulhw %%mm0, %%mm5 \n\t"\ + "paddw %%mm2, %%mm3 \n\t"\ + "paddw %%mm5, %%mm4 \n\t"\ + "test %%"REG_S", %%"REG_S" \n\t"\ + " jnz 2b \n\t"\ #define YSCALEYUV2PACKEDX_YA(offset,coeff,src1,src2,dst1,dst2) \ "lea "offset"(%0), %%"REG_d" \n\t"\ @@ -238,62 +238,62 @@ YSCALEYUV2PACKEDX_UV \ YSCALEYUV2PACKEDX_YA(LUM_MMX_FILTER_OFFSET,%%mm0,%%mm2,%%mm5,%%mm1,%%mm7) \ -#define YSCALEYUV2PACKEDX_END \ - :: "r" (&c->redDither), \ - "m" (dummy), "m" (dummy), "m" (dummy),\ - "r" (dest), "m" (dstW) \ - : "%"REG_a, "%"REG_d, "%"REG_S \ +#define YSCALEYUV2PACKEDX_END \ + :: "r" (&c->redDither), \ + "m" (dummy), "m" (dummy), "m" (dummy),\ + "r" (dest), "m" (dstW) \ + : "%"REG_a, "%"REG_d, "%"REG_S \ ); #define YSCALEYUV2PACKEDX_ACCURATE_UV \ __asm__ volatile(\ - "xor %%"REG_a", %%"REG_a" \n\t"\ - ASMALIGN(4)\ - "nop \n\t"\ - "1: \n\t"\ - "lea "CHR_MMX_FILTER_OFFSET"(%0), %%"REG_d" \n\t"\ - "mov (%%"REG_d"), %%"REG_S" \n\t"\ - "pxor %%mm4, %%mm4 \n\t"\ - "pxor %%mm5, %%mm5 \n\t"\ - "pxor %%mm6, %%mm6 \n\t"\ - "pxor %%mm7, %%mm7 \n\t"\ - ASMALIGN(4)\ - "2: \n\t"\ - "movq (%%"REG_S", %%"REG_a"), %%mm0 \n\t" /* UsrcData */\ - "movq "AV_STRINGIFY(VOF)"(%%"REG_S", %%"REG_a"), %%mm2 \n\t" /* VsrcData */\ - "mov "STR(APCK_PTR2)"(%%"REG_d"), %%"REG_S" \n\t"\ - "movq (%%"REG_S", %%"REG_a"), %%mm1 \n\t" /* UsrcData */\ - "movq %%mm0, %%mm3 \n\t"\ - "punpcklwd %%mm1, %%mm0 \n\t"\ - "punpckhwd %%mm1, %%mm3 \n\t"\ - "movq "STR(APCK_COEF)"(%%"REG_d"),%%mm1 \n\t" /* filterCoeff */\ - "pmaddwd %%mm1, %%mm0 \n\t"\ - "pmaddwd %%mm1, %%mm3 \n\t"\ - "paddd %%mm0, %%mm4 \n\t"\ - "paddd %%mm3, %%mm5 \n\t"\ - "movq "AV_STRINGIFY(VOF)"(%%"REG_S", %%"REG_a"), %%mm3 \n\t" /* VsrcData */\ - "mov "STR(APCK_SIZE)"(%%"REG_d"), %%"REG_S" \n\t"\ - "add $"STR(APCK_SIZE)", %%"REG_d" \n\t"\ - "test %%"REG_S", %%"REG_S" \n\t"\ - "movq %%mm2, %%mm0 \n\t"\ - "punpcklwd %%mm3, %%mm2 \n\t"\ - "punpckhwd %%mm3, %%mm0 \n\t"\ - "pmaddwd %%mm1, %%mm2 \n\t"\ - "pmaddwd %%mm1, %%mm0 \n\t"\ - "paddd %%mm2, %%mm6 \n\t"\ - "paddd %%mm0, %%mm7 \n\t"\ - " jnz 2b \n\t"\ - "psrad $16, %%mm4 \n\t"\ - "psrad $16, %%mm5 \n\t"\ - "psrad $16, %%mm6 \n\t"\ - "psrad $16, %%mm7 \n\t"\ - "movq "VROUNDER_OFFSET"(%0), %%mm0 \n\t"\ - "packssdw %%mm5, %%mm4 \n\t"\ - "packssdw %%mm7, %%mm6 \n\t"\ - "paddw %%mm0, %%mm4 \n\t"\ - "paddw %%mm0, %%mm6 \n\t"\ - "movq %%mm4, "U_TEMP"(%0) \n\t"\ - "movq %%mm6, "V_TEMP"(%0) \n\t"\ + "xor %%"REG_a", %%"REG_a" \n\t"\ + ASMALIGN(4)\ + "nop \n\t"\ + "1: \n\t"\ + "lea "CHR_MMX_FILTER_OFFSET"(%0), %%"REG_d" \n\t"\ + "mov (%%"REG_d"), %%"REG_S" \n\t"\ + "pxor %%mm4, %%mm4 \n\t"\ + "pxor %%mm5, %%mm5 \n\t"\ + "pxor %%mm6, %%mm6 \n\t"\ + "pxor %%mm7, %%mm7 \n\t"\ + ASMALIGN(4)\ + "2: \n\t"\ + "movq (%%"REG_S", %%"REG_a"), %%mm0 \n\t" /* UsrcData */\ + "movq "AV_STRINGIFY(VOF)"(%%"REG_S", %%"REG_a"), %%mm2 \n\t" /* VsrcData */\ + "mov "STR(APCK_PTR2)"(%%"REG_d"), %%"REG_S" \n\t"\ + "movq (%%"REG_S", %%"REG_a"), %%mm1 \n\t" /* UsrcData */\ + "movq %%mm0, %%mm3 \n\t"\ + "punpcklwd %%mm1, %%mm0 \n\t"\ + "punpckhwd %%mm1, %%mm3 \n\t"\ + "movq "STR(APCK_COEF)"(%%"REG_d"),%%mm1 \n\t" /* filterCoeff */\ + "pmaddwd %%mm1, %%mm0 \n\t"\ + "pmaddwd %%mm1, %%mm3 \n\t"\ + "paddd %%mm0, %%mm4 \n\t"\ + "paddd %%mm3, %%mm5 \n\t"\ + "movq "AV_STRINGIFY(VOF)"(%%"REG_S", %%"REG_a"), %%mm3 \n\t" /* VsrcData */\ + "mov "STR(APCK_SIZE)"(%%"REG_d"), %%"REG_S" \n\t"\ + "add $"STR(APCK_SIZE)", %%"REG_d" \n\t"\ + "test %%"REG_S", %%"REG_S" \n\t"\ + "movq %%mm2, %%mm0 \n\t"\ + "punpcklwd %%mm3, %%mm2 \n\t"\ + "punpckhwd %%mm3, %%mm0 \n\t"\ + "pmaddwd %%mm1, %%mm2 \n\t"\ + "pmaddwd %%mm1, %%mm0 \n\t"\ + "paddd %%mm2, %%mm6 \n\t"\ + "paddd %%mm0, %%mm7 \n\t"\ + " jnz 2b \n\t"\ + "psrad $16, %%mm4 \n\t"\ + "psrad $16, %%mm5 \n\t"\ + "psrad $16, %%mm6 \n\t"\ + "psrad $16, %%mm7 \n\t"\ + "movq "VROUNDER_OFFSET"(%0), %%mm0 \n\t"\ + "packssdw %%mm5, %%mm4 \n\t"\ + "packssdw %%mm7, %%mm6 \n\t"\ + "paddw %%mm0, %%mm4 \n\t"\ + "paddw %%mm0, %%mm6 \n\t"\ + "movq %%mm4, "U_TEMP"(%0) \n\t"\ + "movq %%mm6, "V_TEMP"(%0) \n\t"\ #define YSCALEYUV2PACKEDX_ACCURATE_YA(offset) \ "lea "offset"(%0), %%"REG_d" \n\t"\ @@ -351,14 +351,14 @@ "movq %%mm4, %%mm5 \n\t" /* (V-128)8*/\ "pmulhw "UG_COEFF"(%0), %%mm3 \n\t"\ "pmulhw "VG_COEFF"(%0), %%mm4 \n\t"\ -/* mm2=(U-128)8, mm3=ug, mm4=vg mm5=(V-128)8 */\ + /* mm2=(U-128)8, mm3=ug, mm4=vg mm5=(V-128)8 */\ "pmulhw "UB_COEFF"(%0), %%mm2 \n\t"\ "pmulhw "VR_COEFF"(%0), %%mm5 \n\t"\ "psubw "Y_OFFSET"(%0), %%mm1 \n\t" /* 8(Y-16)*/\ "psubw "Y_OFFSET"(%0), %%mm7 \n\t" /* 8(Y-16)*/\ "pmulhw "Y_COEFF"(%0), %%mm1 \n\t"\ "pmulhw "Y_COEFF"(%0), %%mm7 \n\t"\ -/* mm1= Y1, mm2=ub, mm3=ug, mm4=vg mm5=vr, mm7=Y2 */\ + /* mm1= Y1, mm2=ub, mm3=ug, mm4=vg mm5=vr, mm7=Y2 */\ "paddw %%mm3, %%mm4 \n\t"\ "movq %%mm2, %%mm0 \n\t"\ "movq %%mm5, %%mm6 \n\t"\ @@ -1221,11 +1221,11 @@ static inline void RENAME(yuv2packed2)(SwsContext *c, const uint16_t *buf0, cons #if COMPILE_TEMPLATE_MMX if(!(c->flags & SWS_BITEXACT)) { switch(c->dstFormat) { - //Note 8280 == DSTW_OFFSET but the preprocessor can't handle that there :( - case PIX_FMT_RGB32: - if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf) { + //Note 8280 == DSTW_OFFSET but the preprocessor can't handle that there :( + case PIX_FMT_RGB32: + if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf) { #if ARCH_X86_64 - __asm__ volatile( + __asm__ volatile( YSCALEYUV2RGB(%%REGBP, %5) YSCALEYUV2RGB_YA(%%REGBP, %5, %6, %7) "psraw $3, %%mm1 \n\t" /* abuf0[eax] - abuf1[eax] >>7*/ @@ -1237,11 +1237,11 @@ static inline void RENAME(yuv2packed2)(SwsContext *c, const uint16_t *buf0, cons "a" (&c->redDither) ,"r" (abuf0), "r" (abuf1) : "%"REG_BP - ); + ); #else - *(uint16_t **)(&c->u_temp)=abuf0; - *(uint16_t **)(&c->v_temp)=abuf1; - __asm__ volatile( + *(uint16_t **)(&c->u_temp)=abuf0; + *(uint16_t **)(&c->v_temp)=abuf1; + __asm__ volatile( "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" "mov %4, %%"REG_b" \n\t" "push %%"REG_BP" \n\t" @@ -1262,10 +1262,10 @@ static inline void RENAME(yuv2packed2)(SwsContext *c, const uint16_t *buf0, cons :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), "a" (&c->redDither) - ); + ); #endif - } else { - __asm__ volatile( + } else { + __asm__ volatile( "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" "mov %4, %%"REG_b" \n\t" "push %%"REG_BP" \n\t" @@ -1277,11 +1277,11 @@ static inline void RENAME(yuv2packed2)(SwsContext *c, const uint16_t *buf0, cons :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), "a" (&c->redDither) - ); - } - return; - case PIX_FMT_BGR24: - __asm__ volatile( + ); + } + return; + case PIX_FMT_BGR24: + __asm__ volatile( "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" "mov %4, %%"REG_b" \n\t" "push %%"REG_BP" \n\t" @@ -1292,10 +1292,10 @@ static inline void RENAME(yuv2packed2)(SwsContext *c, const uint16_t *buf0, cons "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), "a" (&c->redDither) - ); - return; - case PIX_FMT_RGB555: - __asm__ volatile( + ); + return; + case PIX_FMT_RGB555: + __asm__ volatile( "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" "mov %4, %%"REG_b" \n\t" "push %%"REG_BP" \n\t" @@ -1314,10 +1314,10 @@ static inline void RENAME(yuv2packed2)(SwsContext *c, const uint16_t *buf0, cons :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), "a" (&c->redDither) - ); - return; - case PIX_FMT_RGB565: - __asm__ volatile( + ); + return; + case PIX_FMT_RGB565: + __asm__ volatile( "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" "mov %4, %%"REG_b" \n\t" "push %%"REG_BP" \n\t" @@ -1335,10 +1335,10 @@ static inline void RENAME(yuv2packed2)(SwsContext *c, const uint16_t *buf0, cons "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), "a" (&c->redDither) - ); - return; - case PIX_FMT_YUYV422: - __asm__ volatile( + ); + return; + case PIX_FMT_YUYV422: + __asm__ volatile( "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" "mov %4, %%"REG_b" \n\t" "push %%"REG_BP" \n\t" @@ -1348,9 +1348,9 @@ static inline void RENAME(yuv2packed2)(SwsContext *c, const uint16_t *buf0, cons "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), "a" (&c->redDither) - ); - return; - default: break; + ); + return; + default: break; } } #endif //COMPILE_TEMPLATE_MMX @@ -1381,104 +1381,104 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, const uint16_t *buf0, cons case PIX_FMT_RGB32: if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf) { __asm__ volatile( - "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" - "mov %4, %%"REG_b" \n\t" - "push %%"REG_BP" \n\t" - YSCALEYUV2RGB1(%%REGBP, %5) - YSCALEYUV2RGB1_ALPHA(%%REGBP) - WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) - "pop %%"REG_BP" \n\t" - "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" + "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" + "mov %4, %%"REG_b" \n\t" + "push %%"REG_BP" \n\t" + YSCALEYUV2RGB1(%%REGBP, %5) + YSCALEYUV2RGB1_ALPHA(%%REGBP) + WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) + "pop %%"REG_BP" \n\t" + "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" - :: "c" (buf0), "d" (abuf0), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), - "a" (&c->redDither) + :: "c" (buf0), "d" (abuf0), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), + "a" (&c->redDither) ); } else { __asm__ volatile( - "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" - "mov %4, %%"REG_b" \n\t" - "push %%"REG_BP" \n\t" - YSCALEYUV2RGB1(%%REGBP, %5) - "pcmpeqd %%mm7, %%mm7 \n\t" - WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) - "pop %%"REG_BP" \n\t" - "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" + "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" + "mov %4, %%"REG_b" \n\t" + "push %%"REG_BP" \n\t" + YSCALEYUV2RGB1(%%REGBP, %5) + "pcmpeqd %%mm7, %%mm7 \n\t" + WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) + "pop %%"REG_BP" \n\t" + "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" - :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), - "a" (&c->redDither) + :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), + "a" (&c->redDither) ); } return; case PIX_FMT_BGR24: __asm__ volatile( - "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" - "mov %4, %%"REG_b" \n\t" - "push %%"REG_BP" \n\t" - YSCALEYUV2RGB1(%%REGBP, %5) - "pxor %%mm7, %%mm7 \n\t" - WRITEBGR24(%%REGb, 8280(%5), %%REGBP) - "pop %%"REG_BP" \n\t" - "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" + "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" + "mov %4, %%"REG_b" \n\t" + "push %%"REG_BP" \n\t" + YSCALEYUV2RGB1(%%REGBP, %5) + "pxor %%mm7, %%mm7 \n\t" + WRITEBGR24(%%REGb, 8280(%5), %%REGBP) + "pop %%"REG_BP" \n\t" + "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" - :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), - "a" (&c->redDither) + :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), + "a" (&c->redDither) ); return; case PIX_FMT_RGB555: __asm__ volatile( - "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" - "mov %4, %%"REG_b" \n\t" - "push %%"REG_BP" \n\t" - YSCALEYUV2RGB1(%%REGBP, %5) - "pxor %%mm7, %%mm7 \n\t" - /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ + "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" + "mov %4, %%"REG_b" \n\t" + "push %%"REG_BP" \n\t" + YSCALEYUV2RGB1(%%REGBP, %5) + "pxor %%mm7, %%mm7 \n\t" + /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ #ifdef DITHER1XBPP - "paddusb "BLUE_DITHER"(%5), %%mm2 \n\t" - "paddusb "GREEN_DITHER"(%5), %%mm4 \n\t" - "paddusb "RED_DITHER"(%5), %%mm5 \n\t" + "paddusb "BLUE_DITHER"(%5), %%mm2 \n\t" + "paddusb "GREEN_DITHER"(%5), %%mm4 \n\t" + "paddusb "RED_DITHER"(%5), %%mm5 \n\t" #endif - WRITERGB15(%%REGb, 8280(%5), %%REGBP) - "pop %%"REG_BP" \n\t" - "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" + WRITERGB15(%%REGb, 8280(%5), %%REGBP) + "pop %%"REG_BP" \n\t" + "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" - :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), - "a" (&c->redDither) + :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), + "a" (&c->redDither) ); return; case PIX_FMT_RGB565: __asm__ volatile( - "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" - "mov %4, %%"REG_b" \n\t" - "push %%"REG_BP" \n\t" - YSCALEYUV2RGB1(%%REGBP, %5) - "pxor %%mm7, %%mm7 \n\t" - /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ + "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" + "mov %4, %%"REG_b" \n\t" + "push %%"REG_BP" \n\t" + YSCALEYUV2RGB1(%%REGBP, %5) + "pxor %%mm7, %%mm7 \n\t" + /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ #ifdef DITHER1XBPP - "paddusb "BLUE_DITHER"(%5), %%mm2 \n\t" - "paddusb "GREEN_DITHER"(%5), %%mm4 \n\t" - "paddusb "RED_DITHER"(%5), %%mm5 \n\t" + "paddusb "BLUE_DITHER"(%5), %%mm2 \n\t" + "paddusb "GREEN_DITHER"(%5), %%mm4 \n\t" + "paddusb "RED_DITHER"(%5), %%mm5 \n\t" #endif - WRITERGB16(%%REGb, 8280(%5), %%REGBP) - "pop %%"REG_BP" \n\t" - "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" + WRITERGB16(%%REGb, 8280(%5), %%REGBP) + "pop %%"REG_BP" \n\t" + "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" - :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), - "a" (&c->redDither) + :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), + "a" (&c->redDither) ); return; case PIX_FMT_YUYV422: __asm__ volatile( - "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" - "mov %4, %%"REG_b" \n\t" - "push %%"REG_BP" \n\t" - YSCALEYUV2PACKED1(%%REGBP, %5) - WRITEYUY2(%%REGb, 8280(%5), %%REGBP) - "pop %%"REG_BP" \n\t" - "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" + "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" + "mov %4, %%"REG_b" \n\t" + "push %%"REG_BP" \n\t" + YSCALEYUV2PACKED1(%%REGBP, %5) + WRITEYUY2(%%REGb, 8280(%5), %%REGBP) + "pop %%"REG_BP" \n\t" + "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" - :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), - "a" (&c->redDither) + :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), + "a" (&c->redDither) ); return; } @@ -1487,104 +1487,104 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, const uint16_t *buf0, cons case PIX_FMT_RGB32: if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf) { __asm__ volatile( - "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" - "mov %4, %%"REG_b" \n\t" - "push %%"REG_BP" \n\t" - YSCALEYUV2RGB1b(%%REGBP, %5) - YSCALEYUV2RGB1_ALPHA(%%REGBP) - WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) - "pop %%"REG_BP" \n\t" - "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" + "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" + "mov %4, %%"REG_b" \n\t" + "push %%"REG_BP" \n\t" + YSCALEYUV2RGB1b(%%REGBP, %5) + YSCALEYUV2RGB1_ALPHA(%%REGBP) + WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) + "pop %%"REG_BP" \n\t" + "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" - :: "c" (buf0), "d" (abuf0), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), - "a" (&c->redDither) + :: "c" (buf0), "d" (abuf0), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), + "a" (&c->redDither) ); } else { __asm__ volatile( - "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" - "mov %4, %%"REG_b" \n\t" - "push %%"REG_BP" \n\t" - YSCALEYUV2RGB1b(%%REGBP, %5) - "pcmpeqd %%mm7, %%mm7 \n\t" - WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) - "pop %%"REG_BP" \n\t" - "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" + "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" + "mov %4, %%"REG_b" \n\t" + "push %%"REG_BP" \n\t" + YSCALEYUV2RGB1b(%%REGBP, %5) + "pcmpeqd %%mm7, %%mm7 \n\t" + WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) + "pop %%"REG_BP" \n\t" + "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" - :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), - "a" (&c->redDither) + :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), + "a" (&c->redDither) ); } return; case PIX_FMT_BGR24: __asm__ volatile( - "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" - "mov %4, %%"REG_b" \n\t" - "push %%"REG_BP" \n\t" - YSCALEYUV2RGB1b(%%REGBP, %5) - "pxor %%mm7, %%mm7 \n\t" - WRITEBGR24(%%REGb, 8280(%5), %%REGBP) - "pop %%"REG_BP" \n\t" - "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" + "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" + "mov %4, %%"REG_b" \n\t" + "push %%"REG_BP" \n\t" + YSCALEYUV2RGB1b(%%REGBP, %5) + "pxor %%mm7, %%mm7 \n\t" + WRITEBGR24(%%REGb, 8280(%5), %%REGBP) + "pop %%"REG_BP" \n\t" + "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" - :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), - "a" (&c->redDither) + :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), + "a" (&c->redDither) ); return; case PIX_FMT_RGB555: __asm__ volatile( - "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" - "mov %4, %%"REG_b" \n\t" - "push %%"REG_BP" \n\t" - YSCALEYUV2RGB1b(%%REGBP, %5) - "pxor %%mm7, %%mm7 \n\t" - /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ + "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" + "mov %4, %%"REG_b" \n\t" + "push %%"REG_BP" \n\t" + YSCALEYUV2RGB1b(%%REGBP, %5) + "pxor %%mm7, %%mm7 \n\t" + /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ #ifdef DITHER1XBPP - "paddusb "BLUE_DITHER"(%5), %%mm2 \n\t" - "paddusb "GREEN_DITHER"(%5), %%mm4 \n\t" - "paddusb "RED_DITHER"(%5), %%mm5 \n\t" + "paddusb "BLUE_DITHER"(%5), %%mm2 \n\t" + "paddusb "GREEN_DITHER"(%5), %%mm4 \n\t" + "paddusb "RED_DITHER"(%5), %%mm5 \n\t" #endif - WRITERGB15(%%REGb, 8280(%5), %%REGBP) - "pop %%"REG_BP" \n\t" - "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" + WRITERGB15(%%REGb, 8280(%5), %%REGBP) + "pop %%"REG_BP" \n\t" + "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" - :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), - "a" (&c->redDither) + :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), + "a" (&c->redDither) ); return; case PIX_FMT_RGB565: __asm__ volatile( - "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" - "mov %4, %%"REG_b" \n\t" - "push %%"REG_BP" \n\t" - YSCALEYUV2RGB1b(%%REGBP, %5) - "pxor %%mm7, %%mm7 \n\t" - /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ + "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" + "mov %4, %%"REG_b" \n\t" + "push %%"REG_BP" \n\t" + YSCALEYUV2RGB1b(%%REGBP, %5) + "pxor %%mm7, %%mm7 \n\t" + /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ #ifdef DITHER1XBPP - "paddusb "BLUE_DITHER"(%5), %%mm2 \n\t" - "paddusb "GREEN_DITHER"(%5), %%mm4 \n\t" - "paddusb "RED_DITHER"(%5), %%mm5 \n\t" + "paddusb "BLUE_DITHER"(%5), %%mm2 \n\t" + "paddusb "GREEN_DITHER"(%5), %%mm4 \n\t" + "paddusb "RED_DITHER"(%5), %%mm5 \n\t" #endif - WRITERGB16(%%REGb, 8280(%5), %%REGBP) - "pop %%"REG_BP" \n\t" - "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" + WRITERGB16(%%REGb, 8280(%5), %%REGBP) + "pop %%"REG_BP" \n\t" + "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" - :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), - "a" (&c->redDither) + :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), + "a" (&c->redDither) ); return; case PIX_FMT_YUYV422: __asm__ volatile( - "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" - "mov %4, %%"REG_b" \n\t" - "push %%"REG_BP" \n\t" - YSCALEYUV2PACKED1b(%%REGBP, %5) - WRITEYUY2(%%REGb, 8280(%5), %%REGBP) - "pop %%"REG_BP" \n\t" - "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" + "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" + "mov %4, %%"REG_b" \n\t" + "push %%"REG_BP" \n\t" + YSCALEYUV2PACKED1b(%%REGBP, %5) + WRITEYUY2(%%REGb, 8280(%5), %%REGBP) + "pop %%"REG_BP" \n\t" + "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" - :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), - "a" (&c->redDither) + :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), + "a" (&c->redDither) ); return; } @@ -1604,19 +1604,19 @@ static inline void RENAME(yuy2ToY)(uint8_t *dst, const uint8_t *src, long width, { #if COMPILE_TEMPLATE_MMX __asm__ volatile( - "movq "MANGLE(bm01010101)", %%mm2 \n\t" - "mov %0, %%"REG_a" \n\t" - "1: \n\t" - "movq (%1, %%"REG_a",2), %%mm0 \n\t" - "movq 8(%1, %%"REG_a",2), %%mm1 \n\t" - "pand %%mm2, %%mm0 \n\t" - "pand %%mm2, %%mm1 \n\t" - "packuswb %%mm1, %%mm0 \n\t" - "movq %%mm0, (%2, %%"REG_a") \n\t" - "add $8, %%"REG_a" \n\t" - " js 1b \n\t" - : : "g" ((x86_reg)-width), "r" (src+width*2), "r" (dst+width) - : "%"REG_a + "movq "MANGLE(bm01010101)", %%mm2 \n\t" + "mov %0, %%"REG_a" \n\t" + "1: \n\t" + "movq (%1, %%"REG_a",2), %%mm0 \n\t" + "movq 8(%1, %%"REG_a",2), %%mm1 \n\t" + "pand %%mm2, %%mm0 \n\t" + "pand %%mm2, %%mm1 \n\t" + "packuswb %%mm1, %%mm0 \n\t" + "movq %%mm0, (%2, %%"REG_a") \n\t" + "add $8, %%"REG_a" \n\t" + " js 1b \n\t" + : : "g" ((x86_reg)-width), "r" (src+width*2), "r" (dst+width) + : "%"REG_a ); #else int i; @@ -1629,25 +1629,25 @@ static inline void RENAME(yuy2ToUV)(uint8_t *dstU, uint8_t *dstV, const uint8_t { #if COMPILE_TEMPLATE_MMX __asm__ volatile( - "movq "MANGLE(bm01010101)", %%mm4 \n\t" - "mov %0, %%"REG_a" \n\t" - "1: \n\t" - "movq (%1, %%"REG_a",4), %%mm0 \n\t" - "movq 8(%1, %%"REG_a",4), %%mm1 \n\t" - "psrlw $8, %%mm0 \n\t" - "psrlw $8, %%mm1 \n\t" - "packuswb %%mm1, %%mm0 \n\t" - "movq %%mm0, %%mm1 \n\t" - "psrlw $8, %%mm0 \n\t" - "pand %%mm4, %%mm1 \n\t" - "packuswb %%mm0, %%mm0 \n\t" - "packuswb %%mm1, %%mm1 \n\t" - "movd %%mm0, (%3, %%"REG_a") \n\t" - "movd %%mm1, (%2, %%"REG_a") \n\t" - "add $4, %%"REG_a" \n\t" - " js 1b \n\t" - : : "g" ((x86_reg)-width), "r" (src1+width*4), "r" (dstU+width), "r" (dstV+width) - : "%"REG_a + "movq "MANGLE(bm01010101)", %%mm4 \n\t" + "mov %0, %%"REG_a" \n\t" + "1: \n\t" + "movq (%1, %%"REG_a",4), %%mm0 \n\t" + "movq 8(%1, %%"REG_a",4), %%mm1 \n\t" + "psrlw $8, %%mm0 \n\t" + "psrlw $8, %%mm1 \n\t" + "packuswb %%mm1, %%mm0 \n\t" + "movq %%mm0, %%mm1 \n\t" + "psrlw $8, %%mm0 \n\t" + "pand %%mm4, %%mm1 \n\t" + "packuswb %%mm0, %%mm0 \n\t" + "packuswb %%mm1, %%mm1 \n\t" + "movd %%mm0, (%3, %%"REG_a") \n\t" + "movd %%mm1, (%2, %%"REG_a") \n\t" + "add $4, %%"REG_a" \n\t" + " js 1b \n\t" + : : "g" ((x86_reg)-width), "r" (src1+width*4), "r" (dstU+width), "r" (dstV+width) + : "%"REG_a ); #else int i; @@ -1663,24 +1663,24 @@ static inline void RENAME(LEToUV)(uint8_t *dstU, uint8_t *dstV, const uint8_t *s { #if COMPILE_TEMPLATE_MMX __asm__ volatile( - "mov %0, %%"REG_a" \n\t" - "1: \n\t" - "movq (%1, %%"REG_a",2), %%mm0 \n\t" - "movq 8(%1, %%"REG_a",2), %%mm1 \n\t" - "movq (%2, %%"REG_a",2), %%mm2 \n\t" - "movq 8(%2, %%"REG_a",2), %%mm3 \n\t" - "psrlw $8, %%mm0 \n\t" - "psrlw $8, %%mm1 \n\t" - "psrlw $8, %%mm2 \n\t" - "psrlw $8, %%mm3 \n\t" - "packuswb %%mm1, %%mm0 \n\t" - "packuswb %%mm3, %%mm2 \n\t" - "movq %%mm0, (%3, %%"REG_a") \n\t" - "movq %%mm2, (%4, %%"REG_a") \n\t" - "add $8, %%"REG_a" \n\t" - " js 1b \n\t" - : : "g" ((x86_reg)-width), "r" (src1+width*2), "r" (src2+width*2), "r" (dstU+width), "r" (dstV+width) - : "%"REG_a + "mov %0, %%"REG_a" \n\t" + "1: \n\t" + "movq (%1, %%"REG_a",2), %%mm0 \n\t" + "movq 8(%1, %%"REG_a",2), %%mm1 \n\t" + "movq (%2, %%"REG_a",2), %%mm2 \n\t" + "movq 8(%2, %%"REG_a",2), %%mm3 \n\t" + "psrlw $8, %%mm0 \n\t" + "psrlw $8, %%mm1 \n\t" + "psrlw $8, %%mm2 \n\t" + "psrlw $8, %%mm3 \n\t" + "packuswb %%mm1, %%mm0 \n\t" + "packuswb %%mm3, %%mm2 \n\t" + "movq %%mm0, (%3, %%"REG_a") \n\t" + "movq %%mm2, (%4, %%"REG_a") \n\t" + "add $8, %%"REG_a" \n\t" + " js 1b \n\t" + : : "g" ((x86_reg)-width), "r" (src1+width*2), "r" (src2+width*2), "r" (dstU+width), "r" (dstV+width) + : "%"REG_a ); #else int i; @@ -1697,18 +1697,18 @@ static inline void RENAME(uyvyToY)(uint8_t *dst, const uint8_t *src, long width, { #if COMPILE_TEMPLATE_MMX __asm__ volatile( - "mov %0, %%"REG_a" \n\t" - "1: \n\t" - "movq (%1, %%"REG_a",2), %%mm0 \n\t" - "movq 8(%1, %%"REG_a",2), %%mm1 \n\t" - "psrlw $8, %%mm0 \n\t" - "psrlw $8, %%mm1 \n\t" - "packuswb %%mm1, %%mm0 \n\t" - "movq %%mm0, (%2, %%"REG_a") \n\t" - "add $8, %%"REG_a" \n\t" - " js 1b \n\t" - : : "g" ((x86_reg)-width), "r" (src+width*2), "r" (dst+width) - : "%"REG_a + "mov %0, %%"REG_a" \n\t" + "1: \n\t" + "movq (%1, %%"REG_a",2), %%mm0 \n\t" + "movq 8(%1, %%"REG_a",2), %%mm1 \n\t" + "psrlw $8, %%mm0 \n\t" + "psrlw $8, %%mm1 \n\t" + "packuswb %%mm1, %%mm0 \n\t" + "movq %%mm0, (%2, %%"REG_a") \n\t" + "add $8, %%"REG_a" \n\t" + " js 1b \n\t" + : : "g" ((x86_reg)-width), "r" (src+width*2), "r" (dst+width) + : "%"REG_a ); #else int i; @@ -1721,25 +1721,25 @@ static inline void RENAME(uyvyToUV)(uint8_t *dstU, uint8_t *dstV, const uint8_t { #if COMPILE_TEMPLATE_MMX __asm__ volatile( - "movq "MANGLE(bm01010101)", %%mm4 \n\t" - "mov %0, %%"REG_a" \n\t" - "1: \n\t" - "movq (%1, %%"REG_a",4), %%mm0 \n\t" - "movq 8(%1, %%"REG_a",4), %%mm1 \n\t" - "pand %%mm4, %%mm0 \n\t" - "pand %%mm4, %%mm1 \n\t" - "packuswb %%mm1, %%mm0 \n\t" - "movq %%mm0, %%mm1 \n\t" - "psrlw $8, %%mm0 \n\t" - "pand %%mm4, %%mm1 \n\t" - "packuswb %%mm0, %%mm0 \n\t" - "packuswb %%mm1, %%mm1 \n\t" - "movd %%mm0, (%3, %%"REG_a") \n\t" - "movd %%mm1, (%2, %%"REG_a") \n\t" - "add $4, %%"REG_a" \n\t" - " js 1b \n\t" - : : "g" ((x86_reg)-width), "r" (src1+width*4), "r" (dstU+width), "r" (dstV+width) - : "%"REG_a + "movq "MANGLE(bm01010101)", %%mm4 \n\t" + "mov %0, %%"REG_a" \n\t" + "1: \n\t" + "movq (%1, %%"REG_a",4), %%mm0 \n\t" + "movq 8(%1, %%"REG_a",4), %%mm1 \n\t" + "pand %%mm4, %%mm0 \n\t" + "pand %%mm4, %%mm1 \n\t" + "packuswb %%mm1, %%mm0 \n\t" + "movq %%mm0, %%mm1 \n\t" + "psrlw $8, %%mm0 \n\t" + "pand %%mm4, %%mm1 \n\t" + "packuswb %%mm0, %%mm0 \n\t" + "packuswb %%mm1, %%mm1 \n\t" + "movd %%mm0, (%3, %%"REG_a") \n\t" + "movd %%mm1, (%2, %%"REG_a") \n\t" + "add $4, %%"REG_a" \n\t" + " js 1b \n\t" + : : "g" ((x86_reg)-width), "r" (src1+width*4), "r" (dstU+width), "r" (dstV+width) + : "%"REG_a ); #else int i; @@ -1755,25 +1755,25 @@ static inline void RENAME(BEToUV)(uint8_t *dstU, uint8_t *dstV, const uint8_t *s { #if COMPILE_TEMPLATE_MMX __asm__ volatile( - "movq "MANGLE(bm01010101)", %%mm4 \n\t" - "mov %0, %%"REG_a" \n\t" - "1: \n\t" - "movq (%1, %%"REG_a",2), %%mm0 \n\t" - "movq 8(%1, %%"REG_a",2), %%mm1 \n\t" - "movq (%2, %%"REG_a",2), %%mm2 \n\t" - "movq 8(%2, %%"REG_a",2), %%mm3 \n\t" - "pand %%mm4, %%mm0 \n\t" - "pand %%mm4, %%mm1 \n\t" - "pand %%mm4, %%mm2 \n\t" - "pand %%mm4, %%mm3 \n\t" - "packuswb %%mm1, %%mm0 \n\t" - "packuswb %%mm3, %%mm2 \n\t" - "movq %%mm0, (%3, %%"REG_a") \n\t" - "movq %%mm2, (%4, %%"REG_a") \n\t" - "add $8, %%"REG_a" \n\t" - " js 1b \n\t" - : : "g" ((x86_reg)-width), "r" (src1+width*2), "r" (src2+width*2), "r" (dstU+width), "r" (dstV+width) - : "%"REG_a + "movq "MANGLE(bm01010101)", %%mm4 \n\t" + "mov %0, %%"REG_a" \n\t" + "1: \n\t" + "movq (%1, %%"REG_a",2), %%mm0 \n\t" + "movq 8(%1, %%"REG_a",2), %%mm1 \n\t" + "movq (%2, %%"REG_a",2), %%mm2 \n\t" + "movq 8(%2, %%"REG_a",2), %%mm3 \n\t" + "pand %%mm4, %%mm0 \n\t" + "pand %%mm4, %%mm1 \n\t" + "pand %%mm4, %%mm2 \n\t" + "pand %%mm4, %%mm3 \n\t" + "packuswb %%mm1, %%mm0 \n\t" + "packuswb %%mm3, %%mm2 \n\t" + "movq %%mm0, (%3, %%"REG_a") \n\t" + "movq %%mm2, (%4, %%"REG_a") \n\t" + "add $8, %%"REG_a" \n\t" + " js 1b \n\t" + : : "g" ((x86_reg)-width), "r" (src1+width*2), "r" (src2+width*2), "r" (dstU+width), "r" (dstV+width) + : "%"REG_a ); #else int i; @@ -2008,41 +2008,41 @@ static inline void RENAME(hScale)(int16_t *dst, int dstW, const uint8_t *src, in dst-= counter/2; __asm__ volatile( #if defined(PIC) - "push %%"REG_b" \n\t" + "push %%"REG_b" \n\t" #endif - "pxor %%mm7, %%mm7 \n\t" - "push %%"REG_BP" \n\t" // we use 7 regs here ... - "mov %%"REG_a", %%"REG_BP" \n\t" - ASMALIGN(4) - "1: \n\t" - "movzwl (%2, %%"REG_BP"), %%eax \n\t" - "movzwl 2(%2, %%"REG_BP"), %%ebx \n\t" - "movq (%1, %%"REG_BP", 4), %%mm1 \n\t" - "movq 8(%1, %%"REG_BP", 4), %%mm3 \n\t" - "movd (%3, %%"REG_a"), %%mm0 \n\t" - "movd (%3, %%"REG_b"), %%mm2 \n\t" - "punpcklbw %%mm7, %%mm0 \n\t" - "punpcklbw %%mm7, %%mm2 \n\t" - "pmaddwd %%mm1, %%mm0 \n\t" - "pmaddwd %%mm2, %%mm3 \n\t" - "movq %%mm0, %%mm4 \n\t" - "punpckldq %%mm3, %%mm0 \n\t" - "punpckhdq %%mm3, %%mm4 \n\t" - "paddd %%mm4, %%mm0 \n\t" - "psrad $7, %%mm0 \n\t" - "packssdw %%mm0, %%mm0 \n\t" - "movd %%mm0, (%4, %%"REG_BP") \n\t" - "add $4, %%"REG_BP" \n\t" - " jnc 1b \n\t" + "pxor %%mm7, %%mm7 \n\t" + "push %%"REG_BP" \n\t" // we use 7 regs here ... + "mov %%"REG_a", %%"REG_BP" \n\t" + ASMALIGN(4) + "1: \n\t" + "movzwl (%2, %%"REG_BP"), %%eax \n\t" + "movzwl 2(%2, %%"REG_BP"), %%ebx \n\t" + "movq (%1, %%"REG_BP", 4), %%mm1 \n\t" + "movq 8(%1, %%"REG_BP", 4), %%mm3 \n\t" + "movd (%3, %%"REG_a"), %%mm0 \n\t" + "movd (%3, %%"REG_b"), %%mm2 \n\t" + "punpcklbw %%mm7, %%mm0 \n\t" + "punpcklbw %%mm7, %%mm2 \n\t" + "pmaddwd %%mm1, %%mm0 \n\t" + "pmaddwd %%mm2, %%mm3 \n\t" + "movq %%mm0, %%mm4 \n\t" + "punpckldq %%mm3, %%mm0 \n\t" + "punpckhdq %%mm3, %%mm4 \n\t" + "paddd %%mm4, %%mm0 \n\t" + "psrad $7, %%mm0 \n\t" + "packssdw %%mm0, %%mm0 \n\t" + "movd %%mm0, (%4, %%"REG_BP") \n\t" + "add $4, %%"REG_BP" \n\t" + " jnc 1b \n\t" - "pop %%"REG_BP" \n\t" + "pop %%"REG_BP" \n\t" #if defined(PIC) - "pop %%"REG_b" \n\t" + "pop %%"REG_b" \n\t" #endif - : "+a" (counter) - : "c" (filter), "d" (filterPos), "S" (src), "D" (dst) + : "+a" (counter) + : "c" (filter), "d" (filterPos), "S" (src), "D" (dst) #if !defined(PIC) - : "%"REG_b + : "%"REG_b #endif ); } else if (filterSize==8) { @@ -2052,52 +2052,52 @@ static inline void RENAME(hScale)(int16_t *dst, int dstW, const uint8_t *src, in dst-= counter/2; __asm__ volatile( #if defined(PIC) - "push %%"REG_b" \n\t" + "push %%"REG_b" \n\t" #endif - "pxor %%mm7, %%mm7 \n\t" - "push %%"REG_BP" \n\t" // we use 7 regs here ... - "mov %%"REG_a", %%"REG_BP" \n\t" - ASMALIGN(4) - "1: \n\t" - "movzwl (%2, %%"REG_BP"), %%eax \n\t" - "movzwl 2(%2, %%"REG_BP"), %%ebx \n\t" - "movq (%1, %%"REG_BP", 8), %%mm1 \n\t" - "movq 16(%1, %%"REG_BP", 8), %%mm3 \n\t" - "movd (%3, %%"REG_a"), %%mm0 \n\t" - "movd (%3, %%"REG_b"), %%mm2 \n\t" - "punpcklbw %%mm7, %%mm0 \n\t" - "punpcklbw %%mm7, %%mm2 \n\t" - "pmaddwd %%mm1, %%mm0 \n\t" - "pmaddwd %%mm2, %%mm3 \n\t" + "pxor %%mm7, %%mm7 \n\t" + "push %%"REG_BP" \n\t" // we use 7 regs here ... + "mov %%"REG_a", %%"REG_BP" \n\t" + ASMALIGN(4) + "1: \n\t" + "movzwl (%2, %%"REG_BP"), %%eax \n\t" + "movzwl 2(%2, %%"REG_BP"), %%ebx \n\t" + "movq (%1, %%"REG_BP", 8), %%mm1 \n\t" + "movq 16(%1, %%"REG_BP", 8), %%mm3 \n\t" + "movd (%3, %%"REG_a"), %%mm0 \n\t" + "movd (%3, %%"REG_b"), %%mm2 \n\t" + "punpcklbw %%mm7, %%mm0 \n\t" + "punpcklbw %%mm7, %%mm2 \n\t" + "pmaddwd %%mm1, %%mm0 \n\t" + "pmaddwd %%mm2, %%mm3 \n\t" - "movq 8(%1, %%"REG_BP", 8), %%mm1 \n\t" - "movq 24(%1, %%"REG_BP", 8), %%mm5 \n\t" - "movd 4(%3, %%"REG_a"), %%mm4 \n\t" - "movd 4(%3, %%"REG_b"), %%mm2 \n\t" - "punpcklbw %%mm7, %%mm4 \n\t" - "punpcklbw %%mm7, %%mm2 \n\t" - "pmaddwd %%mm1, %%mm4 \n\t" - "pmaddwd %%mm2, %%mm5 \n\t" - "paddd %%mm4, %%mm0 \n\t" - "paddd %%mm5, %%mm3 \n\t" - "movq %%mm0, %%mm4 \n\t" - "punpckldq %%mm3, %%mm0 \n\t" - "punpckhdq %%mm3, %%mm4 \n\t" - "paddd %%mm4, %%mm0 \n\t" - "psrad $7, %%mm0 \n\t" - "packssdw %%mm0, %%mm0 \n\t" - "movd %%mm0, (%4, %%"REG_BP") \n\t" - "add $4, %%"REG_BP" \n\t" - " jnc 1b \n\t" + "movq 8(%1, %%"REG_BP", 8), %%mm1 \n\t" + "movq 24(%1, %%"REG_BP", 8), %%mm5 \n\t" + "movd 4(%3, %%"REG_a"), %%mm4 \n\t" + "movd 4(%3, %%"REG_b"), %%mm2 \n\t" + "punpcklbw %%mm7, %%mm4 \n\t" + "punpcklbw %%mm7, %%mm2 \n\t" + "pmaddwd %%mm1, %%mm4 \n\t" + "pmaddwd %%mm2, %%mm5 \n\t" + "paddd %%mm4, %%mm0 \n\t" + "paddd %%mm5, %%mm3 \n\t" + "movq %%mm0, %%mm4 \n\t" + "punpckldq %%mm3, %%mm0 \n\t" + "punpckhdq %%mm3, %%mm4 \n\t" + "paddd %%mm4, %%mm0 \n\t" + "psrad $7, %%mm0 \n\t" + "packssdw %%mm0, %%mm0 \n\t" + "movd %%mm0, (%4, %%"REG_BP") \n\t" + "add $4, %%"REG_BP" \n\t" + " jnc 1b \n\t" - "pop %%"REG_BP" \n\t" + "pop %%"REG_BP" \n\t" #if defined(PIC) - "pop %%"REG_b" \n\t" + "pop %%"REG_b" \n\t" #endif - : "+a" (counter) - : "c" (filter), "d" (filterPos), "S" (src), "D" (dst) + : "+a" (counter) + : "c" (filter), "d" (filterPos), "S" (src), "D" (dst) #if !defined(PIC) - : "%"REG_b + : "%"REG_b #endif ); } else { @@ -2107,46 +2107,46 @@ static inline void RENAME(hScale)(int16_t *dst, int dstW, const uint8_t *src, in filterPos-= counter/2; dst-= counter/2; __asm__ volatile( - "pxor %%mm7, %%mm7 \n\t" - ASMALIGN(4) - "1: \n\t" - "mov %2, %%"REG_c" \n\t" - "movzwl (%%"REG_c", %0), %%eax \n\t" - "movzwl 2(%%"REG_c", %0), %%edx \n\t" - "mov %5, %%"REG_c" \n\t" - "pxor %%mm4, %%mm4 \n\t" - "pxor %%mm5, %%mm5 \n\t" - "2: \n\t" - "movq (%1), %%mm1 \n\t" - "movq (%1, %6), %%mm3 \n\t" - "movd (%%"REG_c", %%"REG_a"), %%mm0 \n\t" - "movd (%%"REG_c", %%"REG_d"), %%mm2 \n\t" - "punpcklbw %%mm7, %%mm0 \n\t" - "punpcklbw %%mm7, %%mm2 \n\t" - "pmaddwd %%mm1, %%mm0 \n\t" - "pmaddwd %%mm2, %%mm3 \n\t" - "paddd %%mm3, %%mm5 \n\t" - "paddd %%mm0, %%mm4 \n\t" - "add $8, %1 \n\t" - "add $4, %%"REG_c" \n\t" - "cmp %4, %%"REG_c" \n\t" - " jb 2b \n\t" - "add %6, %1 \n\t" - "movq %%mm4, %%mm0 \n\t" - "punpckldq %%mm5, %%mm4 \n\t" - "punpckhdq %%mm5, %%mm0 \n\t" - "paddd %%mm0, %%mm4 \n\t" - "psrad $7, %%mm4 \n\t" - "packssdw %%mm4, %%mm4 \n\t" - "mov %3, %%"REG_a" \n\t" - "movd %%mm4, (%%"REG_a", %0) \n\t" - "add $4, %0 \n\t" - " jnc 1b \n\t" + "pxor %%mm7, %%mm7 \n\t" + ASMALIGN(4) + "1: \n\t" + "mov %2, %%"REG_c" \n\t" + "movzwl (%%"REG_c", %0), %%eax \n\t" + "movzwl 2(%%"REG_c", %0), %%edx \n\t" + "mov %5, %%"REG_c" \n\t" + "pxor %%mm4, %%mm4 \n\t" + "pxor %%mm5, %%mm5 \n\t" + "2: \n\t" + "movq (%1), %%mm1 \n\t" + "movq (%1, %6), %%mm3 \n\t" + "movd (%%"REG_c", %%"REG_a"), %%mm0 \n\t" + "movd (%%"REG_c", %%"REG_d"), %%mm2 \n\t" + "punpcklbw %%mm7, %%mm0 \n\t" + "punpcklbw %%mm7, %%mm2 \n\t" + "pmaddwd %%mm1, %%mm0 \n\t" + "pmaddwd %%mm2, %%mm3 \n\t" + "paddd %%mm3, %%mm5 \n\t" + "paddd %%mm0, %%mm4 \n\t" + "add $8, %1 \n\t" + "add $4, %%"REG_c" \n\t" + "cmp %4, %%"REG_c" \n\t" + " jb 2b \n\t" + "add %6, %1 \n\t" + "movq %%mm4, %%mm0 \n\t" + "punpckldq %%mm5, %%mm4 \n\t" + "punpckhdq %%mm5, %%mm0 \n\t" + "paddd %%mm0, %%mm4 \n\t" + "psrad $7, %%mm4 \n\t" + "packssdw %%mm4, %%mm4 \n\t" + "mov %3, %%"REG_a" \n\t" + "movd %%mm4, (%%"REG_a", %0) \n\t" + "add $4, %0 \n\t" + " jnc 1b \n\t" - : "+r" (counter), "+r" (filter) - : "m" (filterPos), "m" (dst), "m"(offset), - "m" (src), "r" ((x86_reg)filterSize*2) - : "%"REG_a, "%"REG_c, "%"REG_d + : "+r" (counter), "+r" (filter) + : "m" (filterPos), "m" (dst), "m"(offset), + "m" (src), "r" ((x86_reg)filterSize*2) + : "%"REG_a, "%"REG_c, "%"REG_d ); } #else @@ -2240,59 +2240,59 @@ static inline void RENAME(hyscale)(SwsContext *c, uint16_t *dst, long dstWidth, if (canMMX2BeUsed) { __asm__ volatile( #if defined(PIC) - "mov %%"REG_b", %5 \n\t" + "mov %%"REG_b", %5 \n\t" #endif - "pxor %%mm7, %%mm7 \n\t" - "mov %0, %%"REG_c" \n\t" - "mov %1, %%"REG_D" \n\t" - "mov %2, %%"REG_d" \n\t" - "mov %3, %%"REG_b" \n\t" - "xor %%"REG_a", %%"REG_a" \n\t" // i - PREFETCH" (%%"REG_c") \n\t" - PREFETCH" 32(%%"REG_c") \n\t" - PREFETCH" 64(%%"REG_c") \n\t" + "pxor %%mm7, %%mm7 \n\t" + "mov %0, %%"REG_c" \n\t" + "mov %1, %%"REG_D" \n\t" + "mov %2, %%"REG_d" \n\t" + "mov %3, %%"REG_b" \n\t" + "xor %%"REG_a", %%"REG_a" \n\t" // i + PREFETCH" (%%"REG_c") \n\t" + PREFETCH" 32(%%"REG_c") \n\t" + PREFETCH" 64(%%"REG_c") \n\t" #if ARCH_X86_64 #define CALL_MMX2_FILTER_CODE \ - "movl (%%"REG_b"), %%esi \n\t"\ - "call *%4 \n\t"\ - "movl (%%"REG_b", %%"REG_a"), %%esi \n\t"\ - "add %%"REG_S", %%"REG_c" \n\t"\ - "add %%"REG_a", %%"REG_D" \n\t"\ - "xor %%"REG_a", %%"REG_a" \n\t"\ + "movl (%%"REG_b"), %%esi \n\t"\ + "call *%4 \n\t"\ + "movl (%%"REG_b", %%"REG_a"), %%esi \n\t"\ + "add %%"REG_S", %%"REG_c" \n\t"\ + "add %%"REG_a", %%"REG_D" \n\t"\ + "xor %%"REG_a", %%"REG_a" \n\t"\ #else #define CALL_MMX2_FILTER_CODE \ - "movl (%%"REG_b"), %%esi \n\t"\ - "call *%4 \n\t"\ - "addl (%%"REG_b", %%"REG_a"), %%"REG_c" \n\t"\ - "add %%"REG_a", %%"REG_D" \n\t"\ - "xor %%"REG_a", %%"REG_a" \n\t"\ + "movl (%%"REG_b"), %%esi \n\t"\ + "call *%4 \n\t"\ + "addl (%%"REG_b", %%"REG_a"), %%"REG_c" \n\t"\ + "add %%"REG_a", %%"REG_D" \n\t"\ + "xor %%"REG_a", %%"REG_a" \n\t"\ #endif /* ARCH_X86_64 */ - CALL_MMX2_FILTER_CODE - CALL_MMX2_FILTER_CODE - CALL_MMX2_FILTER_CODE - CALL_MMX2_FILTER_CODE - CALL_MMX2_FILTER_CODE - CALL_MMX2_FILTER_CODE - CALL_MMX2_FILTER_CODE - CALL_MMX2_FILTER_CODE + CALL_MMX2_FILTER_CODE + CALL_MMX2_FILTER_CODE + CALL_MMX2_FILTER_CODE + CALL_MMX2_FILTER_CODE + CALL_MMX2_FILTER_CODE + CALL_MMX2_FILTER_CODE + CALL_MMX2_FILTER_CODE + CALL_MMX2_FILTER_CODE #if defined(PIC) - "mov %5, %%"REG_b" \n\t" + "mov %5, %%"REG_b" \n\t" #endif - :: "m" (src), "m" (dst), "m" (mmx2Filter), "m" (mmx2FilterPos), - "m" (mmx2FilterCode) + :: "m" (src), "m" (dst), "m" (mmx2Filter), "m" (mmx2FilterPos), + "m" (mmx2FilterCode) #if defined(PIC) - ,"m" (ebxsave) + ,"m" (ebxsave) #endif - : "%"REG_a, "%"REG_c, "%"REG_d, "%"REG_S, "%"REG_D + : "%"REG_a, "%"REG_c, "%"REG_d, "%"REG_S, "%"REG_D #if !defined(PIC) - ,"%"REG_b + ,"%"REG_b #endif ); for (i=dstWidth-1; (i*xInc)>>16 >=srcW-1; i--) dst[i] = src[srcW-1]*128; @@ -2302,33 +2302,33 @@ static inline void RENAME(hyscale)(SwsContext *c, uint16_t *dst, long dstWidth, uint16_t xInc_mask = xInc & 0xffff; //NO MMX just normal asm ... __asm__ volatile( - "xor %%"REG_a", %%"REG_a" \n\t" // i - "xor %%"REG_d", %%"REG_d" \n\t" // xx - "xorl %%ecx, %%ecx \n\t" // xalpha - ASMALIGN(4) - "1: \n\t" - "movzbl (%0, %%"REG_d"), %%edi \n\t" //src[xx] - "movzbl 1(%0, %%"REG_d"), %%esi \n\t" //src[xx+1] - FAST_BILINEAR_X86 - "movw %%si, (%%"REG_D", %%"REG_a", 2) \n\t" - "addw %4, %%cx \n\t" //xalpha += xInc&0xFFFF - "adc %3, %%"REG_d" \n\t" //xx+= xInc>>16 + carry + "xor %%"REG_a", %%"REG_a" \n\t" // i + "xor %%"REG_d", %%"REG_d" \n\t" // xx + "xorl %%ecx, %%ecx \n\t" // xalpha + ASMALIGN(4) + "1: \n\t" + "movzbl (%0, %%"REG_d"), %%edi \n\t" //src[xx] + "movzbl 1(%0, %%"REG_d"), %%esi \n\t" //src[xx+1] + FAST_BILINEAR_X86 + "movw %%si, (%%"REG_D", %%"REG_a", 2) \n\t" + "addw %4, %%cx \n\t" //xalpha += xInc&0xFFFF + "adc %3, %%"REG_d" \n\t" //xx+= xInc>>16 + carry - "movzbl (%0, %%"REG_d"), %%edi \n\t" //src[xx] - "movzbl 1(%0, %%"REG_d"), %%esi \n\t" //src[xx+1] - FAST_BILINEAR_X86 - "movw %%si, 2(%%"REG_D", %%"REG_a", 2) \n\t" - "addw %4, %%cx \n\t" //xalpha += xInc&0xFFFF - "adc %3, %%"REG_d" \n\t" //xx+= xInc>>16 + carry + "movzbl (%0, %%"REG_d"), %%edi \n\t" //src[xx] + "movzbl 1(%0, %%"REG_d"), %%esi \n\t" //src[xx+1] + FAST_BILINEAR_X86 + "movw %%si, 2(%%"REG_D", %%"REG_a", 2) \n\t" + "addw %4, %%cx \n\t" //xalpha += xInc&0xFFFF + "adc %3, %%"REG_d" \n\t" //xx+= xInc>>16 + carry - "add $2, %%"REG_a" \n\t" - "cmp %2, %%"REG_a" \n\t" - " jb 1b \n\t" + "add $2, %%"REG_a" \n\t" + "cmp %2, %%"REG_a" \n\t" + " jb 1b \n\t" - :: "r" (src), "m" (dst), "m" (dstWidth), "m" (xInc_shr16), "m" (xInc_mask) - : "%"REG_a, "%"REG_d, "%ecx", "%"REG_D, "%esi" + :: "r" (src), "m" (dst), "m" (dstWidth), "m" (xInc_shr16), "m" (xInc_mask) + : "%"REG_a, "%"REG_d, "%ecx", "%"REG_D, "%esi" ); #if COMPILE_TEMPLATE_MMX2 } //if MMX2 can't be used @@ -2420,46 +2420,46 @@ inline static void RENAME(hcscale)(SwsContext *c, uint16_t *dst, long dstWidth, if (canMMX2BeUsed) { __asm__ volatile( #if defined(PIC) - "mov %%"REG_b", %6 \n\t" + "mov %%"REG_b", %6 \n\t" #endif - "pxor %%mm7, %%mm7 \n\t" - "mov %0, %%"REG_c" \n\t" - "mov %1, %%"REG_D" \n\t" - "mov %2, %%"REG_d" \n\t" - "mov %3, %%"REG_b" \n\t" - "xor %%"REG_a", %%"REG_a" \n\t" // i - PREFETCH" (%%"REG_c") \n\t" - PREFETCH" 32(%%"REG_c") \n\t" - PREFETCH" 64(%%"REG_c") \n\t" + "pxor %%mm7, %%mm7 \n\t" + "mov %0, %%"REG_c" \n\t" + "mov %1, %%"REG_D" \n\t" + "mov %2, %%"REG_d" \n\t" + "mov %3, %%"REG_b" \n\t" + "xor %%"REG_a", %%"REG_a" \n\t" // i + PREFETCH" (%%"REG_c") \n\t" + PREFETCH" 32(%%"REG_c") \n\t" + PREFETCH" 64(%%"REG_c") \n\t" - CALL_MMX2_FILTER_CODE - CALL_MMX2_FILTER_CODE - CALL_MMX2_FILTER_CODE - CALL_MMX2_FILTER_CODE - "xor %%"REG_a", %%"REG_a" \n\t" // i - "mov %5, %%"REG_c" \n\t" // src - "mov %1, %%"REG_D" \n\t" // buf1 - "add $"AV_STRINGIFY(VOF)", %%"REG_D" \n\t" - PREFETCH" (%%"REG_c") \n\t" - PREFETCH" 32(%%"REG_c") \n\t" - PREFETCH" 64(%%"REG_c") \n\t" + CALL_MMX2_FILTER_CODE + CALL_MMX2_FILTER_CODE + CALL_MMX2_FILTER_CODE + CALL_MMX2_FILTER_CODE + "xor %%"REG_a", %%"REG_a" \n\t" // i + "mov %5, %%"REG_c" \n\t" // src + "mov %1, %%"REG_D" \n\t" // buf1 + "add $"AV_STRINGIFY(VOF)", %%"REG_D" \n\t" + PREFETCH" (%%"REG_c") \n\t" + PREFETCH" 32(%%"REG_c") \n\t" + PREFETCH" 64(%%"REG_c") \n\t" - CALL_MMX2_FILTER_CODE - CALL_MMX2_FILTER_CODE - CALL_MMX2_FILTER_CODE - CALL_MMX2_FILTER_CODE + CALL_MMX2_FILTER_CODE + CALL_MMX2_FILTER_CODE + CALL_MMX2_FILTER_CODE + CALL_MMX2_FILTER_CODE #if defined(PIC) - "mov %6, %%"REG_b" \n\t" + "mov %6, %%"REG_b" \n\t" #endif - :: "m" (src1), "m" (dst), "m" (mmx2Filter), "m" (mmx2FilterPos), - "m" (mmx2FilterCode), "m" (src2) + :: "m" (src1), "m" (dst), "m" (mmx2Filter), "m" (mmx2FilterPos), + "m" (mmx2FilterCode), "m" (src2) #if defined(PIC) - ,"m" (ebxsave) + ,"m" (ebxsave) #endif - : "%"REG_a, "%"REG_c, "%"REG_d, "%"REG_S, "%"REG_D + : "%"REG_a, "%"REG_c, "%"REG_d, "%"REG_S, "%"REG_D #if !defined(PIC) - ,"%"REG_b + ,"%"REG_b #endif ); for (i=dstWidth-1; (i*xInc)>>16 >=srcW-1; i--) { @@ -2472,37 +2472,37 @@ inline static void RENAME(hcscale)(SwsContext *c, uint16_t *dst, long dstWidth, x86_reg xInc_shr16 = (x86_reg) (xInc >> 16); uint16_t xInc_mask = xInc & 0xffff; __asm__ volatile( - "xor %%"REG_a", %%"REG_a" \n\t" // i - "xor %%"REG_d", %%"REG_d" \n\t" // xx - "xorl %%ecx, %%ecx \n\t" // xalpha - ASMALIGN(4) - "1: \n\t" - "mov %0, %%"REG_S" \n\t" - "movzbl (%%"REG_S", %%"REG_d"), %%edi \n\t" //src[xx] - "movzbl 1(%%"REG_S", %%"REG_d"), %%esi \n\t" //src[xx+1] - FAST_BILINEAR_X86 - "movw %%si, (%%"REG_D", %%"REG_a", 2) \n\t" + "xor %%"REG_a", %%"REG_a" \n\t" // i + "xor %%"REG_d", %%"REG_d" \n\t" // xx + "xorl %%ecx, %%ecx \n\t" // xalpha + ASMALIGN(4) + "1: \n\t" + "mov %0, %%"REG_S" \n\t" + "movzbl (%%"REG_S", %%"REG_d"), %%edi \n\t" //src[xx] + "movzbl 1(%%"REG_S", %%"REG_d"), %%esi \n\t" //src[xx+1] + FAST_BILINEAR_X86 + "movw %%si, (%%"REG_D", %%"REG_a", 2) \n\t" - "movzbl (%5, %%"REG_d"), %%edi \n\t" //src[xx] - "movzbl 1(%5, %%"REG_d"), %%esi \n\t" //src[xx+1] - FAST_BILINEAR_X86 - "movw %%si, "AV_STRINGIFY(VOF)"(%%"REG_D", %%"REG_a", 2) \n\t" + "movzbl (%5, %%"REG_d"), %%edi \n\t" //src[xx] + "movzbl 1(%5, %%"REG_d"), %%esi \n\t" //src[xx+1] + FAST_BILINEAR_X86 + "movw %%si, "AV_STRINGIFY(VOF)"(%%"REG_D", %%"REG_a", 2) \n\t" - "addw %4, %%cx \n\t" //xalpha += xInc&0xFFFF - "adc %3, %%"REG_d" \n\t" //xx+= xInc>>16 + carry - "add $1, %%"REG_a" \n\t" - "cmp %2, %%"REG_a" \n\t" - " jb 1b \n\t" + "addw %4, %%cx \n\t" //xalpha += xInc&0xFFFF + "adc %3, %%"REG_d" \n\t" //xx+= xInc>>16 + carry + "add $1, %%"REG_a" \n\t" + "cmp %2, %%"REG_a" \n\t" + " jb 1b \n\t" /* GCC 3.3 makes MPlayer crash on IA-32 machines when using "g" operand here, which is needed to support GCC 4.0. */ #if ARCH_X86_64 && ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) - :: "m" (src1), "m" (dst), "g" (dstWidth), "m" (xInc_shr16), "m" (xInc_mask), + :: "m" (src1), "m" (dst), "g" (dstWidth), "m" (xInc_shr16), "m" (xInc_mask), #else - :: "m" (src1), "m" (dst), "m" (dstWidth), "m" (xInc_shr16), "m" (xInc_mask), + :: "m" (src1), "m" (dst), "m" (dstWidth), "m" (xInc_shr16), "m" (xInc_mask), #endif - "r" (src2) - : "%"REG_a, "%"REG_d, "%ecx", "%"REG_D, "%esi" + "r" (src2) + : "%"REG_a, "%"REG_d, "%ecx", "%"REG_D, "%esi" ); #if COMPILE_TEMPLATE_MMX2 } //if MMX2 can't be used From fef7ef08a0023e6f304d725dfa2b09a5586e60f1 Mon Sep 17 00:00:00 2001 From: reimar Date: Sun, 16 Aug 2009 22:39:10 +0000 Subject: [PATCH 70/77] Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS for rawaudio demuxer. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29525 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demux_rawaudio.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/libmpdemux/demux_rawaudio.c b/libmpdemux/demux_rawaudio.c index 769f9be519..7bc751ec7b 100644 --- a/libmpdemux/demux_rawaudio.c +++ b/libmpdemux/demux_rawaudio.c @@ -112,6 +112,23 @@ static void demux_rawaudio_seek(demuxer_t *demuxer,float rel_seek_secs,float aud // printf("demux_rawaudio: streamtell=%d\n",(int)stream_tell(demuxer->stream)); } +static int demux_rawaudio_control(demuxer_t *demuxer,int cmd, void *arg) +{ + sh_audio_t *sh_audio = demuxer->audio->sh; + switch(cmd) { + case DEMUXER_CTRL_GET_TIME_LENGTH: + if (!sh_audio->i_bps) return DEMUXER_CTRL_DONTKNOW; + *(double *)arg = (double)(demuxer->movi_end - demuxer->movi_start) / sh_audio->i_bps; + return DEMUXER_CTRL_GUESS; + + case DEMUXER_CTRL_GET_PERCENT_POS: + *(int *)arg = (stream_tell(demuxer->stream) - demuxer->movi_start) * 100 / (demuxer->movi_end - demuxer->movi_start); + return DEMUXER_CTRL_GUESS; + } + return DEMUXER_CTRL_NOTIMPL; +} + + const demuxer_desc_t demuxer_desc_rawaudio = { "Raw audio demuxer", @@ -126,5 +143,5 @@ const demuxer_desc_t demuxer_desc_rawaudio = { demux_rawaudio_open, NULL, demux_rawaudio_seek, - NULL + demux_rawaudio_control }; From 46f846182864416f1038457afab2ffd35e5479ae Mon Sep 17 00:00:00 2001 From: reimar Date: Sun, 16 Aug 2009 22:44:29 +0000 Subject: [PATCH 71/77] Add some protection to the rawaudio GET_LENGTH/GET_PERCENT_POS in case the file length is not known (streaming). git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29526 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demux_rawaudio.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libmpdemux/demux_rawaudio.c b/libmpdemux/demux_rawaudio.c index 7bc751ec7b..d09f2e3dff 100644 --- a/libmpdemux/demux_rawaudio.c +++ b/libmpdemux/demux_rawaudio.c @@ -117,11 +117,12 @@ static int demux_rawaudio_control(demuxer_t *demuxer,int cmd, void *arg) sh_audio_t *sh_audio = demuxer->audio->sh; switch(cmd) { case DEMUXER_CTRL_GET_TIME_LENGTH: - if (!sh_audio->i_bps) return DEMUXER_CTRL_DONTKNOW; + if (!sh_audio->i_bps || demuxer->movi_start >= demuxer->movi_end) return DEMUXER_CTRL_DONTKNOW; *(double *)arg = (double)(demuxer->movi_end - demuxer->movi_start) / sh_audio->i_bps; return DEMUXER_CTRL_GUESS; case DEMUXER_CTRL_GET_PERCENT_POS: + if (demuxer->movi_start >= demuxer->movi_end) return DEMUXER_CTRL_DONTKNOW; *(int *)arg = (stream_tell(demuxer->stream) - demuxer->movi_start) * 100 / (demuxer->movi_end - demuxer->movi_start); return DEMUXER_CTRL_GUESS; } From 69cb72414aeeb37a5c30b1194f9ee8fff6a8d512 Mon Sep 17 00:00:00 2001 From: ramiro Date: Mon, 17 Aug 2009 02:06:00 +0000 Subject: [PATCH 72/77] swscale-example: Make selection of dstW, dstH, and flags more clear. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29527 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libswscale/swscale-example.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/libswscale/swscale-example.c b/libswscale/swscale-example.c index 7ea4f51de8..a3d9357a02 100644 --- a/libswscale/swscale-example.c +++ b/libswscale/swscale-example.c @@ -182,12 +182,18 @@ static int doTest(uint8_t *ref[4], int refStride[4], int w, int h, int srcFormat static void selfTest(uint8_t *src[4], int stride[4], int w, int h) { + const int flags[] = { SWS_FAST_BILINEAR, + SWS_BILINEAR, SWS_BICUBIC, + SWS_X , SWS_POINT , SWS_AREA, 0 }; + const int srcW = w; + const int srcH = h; + const int dstW[] = { srcW - srcW/3, srcW, srcW + srcW/3, 0 }; + const int dstH[] = { srcH - srcH/3, srcH, srcH + srcH/3, 0 }; enum PixelFormat srcFormat, dstFormat; - int srcW, srcH, dstW, dstH; - int flags; for (srcFormat = 0; srcFormat < PIX_FMT_NB; srcFormat++) { for (dstFormat = 0; dstFormat < PIX_FMT_NB; dstFormat++) { + int i, j, k; int res = 0; printf("%s -> %s\n", @@ -195,13 +201,11 @@ static void selfTest(uint8_t *src[4], int stride[4], int w, int h) sws_format_name(dstFormat)); fflush(stdout); - srcW= w; - srcH= h; - for (dstW=w - w/3; !res && dstW<= 4*w/3; dstW+= w/3) - for (dstH=h - h/3; !res && dstH<= 4*h/3; dstH+= h/3) - for (flags=1; !res && flags<33; flags*=2) + for (i = 0; dstW[i] && !res; i++) + for (j = 0; dstH[j] && !res; j++) + for (k = 0; flags[k] && !res; k++) res = doTest(src, stride, w, h, srcFormat, dstFormat, - srcW, srcH, dstW, dstH, flags); + srcW, srcH, dstW[i], dstH[j], flags[k]); } } } From 5d058a67c1f19df9565f8a3a78a7fa377999222a Mon Sep 17 00:00:00 2001 From: reimar Date: Mon, 17 Aug 2009 05:55:40 +0000 Subject: [PATCH 73/77] Handle demuxers that never set filepos by using stream_tell. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29528 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demuxer.c | 5 +++-- mencoder.c | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c index c46ba9d43d..25c66f92ed 100644 --- a/libmpdemux/demuxer.c +++ b/libmpdemux/demuxer.c @@ -242,7 +242,7 @@ demuxer_t *new_demuxer(stream_t *stream, int type, int a_id, int v_id, d->movi_end = stream->end_pos; d->seekable = 1; d->synced = 0; - d->filepos = 0; + d->filepos = -1; d->audio = new_demuxer_stream(d, a_id); d->video = new_demuxer_stream(d, v_id); d->sub = new_demuxer_stream(d, s_id); @@ -1262,8 +1262,9 @@ int demuxer_get_percent_pos(demuxer_t *demuxer) int res = demux_control(demuxer, DEMUXER_CTRL_GET_PERCENT_POS, &ans); int len = (demuxer->movi_end - demuxer->movi_start) / 100; if (res <= 0) { + off_t pos = demuxer->filepos > 0 ? demuxer->filepos : stream_tell(demuxer->stream); if (len > 0) - ans = (demuxer->filepos - demuxer->movi_start) / len; + ans = (pos - demuxer->movi_start) / len; else ans = 0; } diff --git a/mencoder.c b/mencoder.c index 9129df7c9a..5b569bb5fd 100644 --- a/mencoder.c +++ b/mencoder.c @@ -1399,7 +1399,8 @@ if(sh_audio && !demuxer2){ { float t=(GetTimerMS()-timer_start)*0.001f; float len=(demuxer->movi_end-demuxer->movi_start); - float p=len>1000 ? (float)(demuxer->filepos-demuxer->movi_start) / len : + off_t pos = demuxer->filepos >= 0 ? demuxer->filepos : stream_tell(demuxer->stream); + float p=len>1000 ? (float)(pos-demuxer->movi_start) / len : (demuxer_get_percent_pos(demuxer) / 100.0); #if 0 if(!len && sh_audio && sh_audio->audio.dwLength>100){ From eeaa871baa17c65cc46e3db0e99db590ad542da4 Mon Sep 17 00:00:00 2001 From: reimar Date: Mon, 17 Aug 2009 05:56:36 +0000 Subject: [PATCH 74/77] Get rid of rawaudio control code again that only duplicates the fallback code in demuxer.c now. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29529 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demux_rawaudio.c | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/libmpdemux/demux_rawaudio.c b/libmpdemux/demux_rawaudio.c index d09f2e3dff..0f78e0a6df 100644 --- a/libmpdemux/demux_rawaudio.c +++ b/libmpdemux/demux_rawaudio.c @@ -112,25 +112,6 @@ static void demux_rawaudio_seek(demuxer_t *demuxer,float rel_seek_secs,float aud // printf("demux_rawaudio: streamtell=%d\n",(int)stream_tell(demuxer->stream)); } -static int demux_rawaudio_control(demuxer_t *demuxer,int cmd, void *arg) -{ - sh_audio_t *sh_audio = demuxer->audio->sh; - switch(cmd) { - case DEMUXER_CTRL_GET_TIME_LENGTH: - if (!sh_audio->i_bps || demuxer->movi_start >= demuxer->movi_end) return DEMUXER_CTRL_DONTKNOW; - *(double *)arg = (double)(demuxer->movi_end - demuxer->movi_start) / sh_audio->i_bps; - return DEMUXER_CTRL_GUESS; - - case DEMUXER_CTRL_GET_PERCENT_POS: - if (demuxer->movi_start >= demuxer->movi_end) return DEMUXER_CTRL_DONTKNOW; - *(int *)arg = (stream_tell(demuxer->stream) - demuxer->movi_start) * 100 / (demuxer->movi_end - demuxer->movi_start); - return DEMUXER_CTRL_GUESS; - } - return DEMUXER_CTRL_NOTIMPL; -} - - - const demuxer_desc_t demuxer_desc_rawaudio = { "Raw audio demuxer", "rawaudio", @@ -144,5 +125,4 @@ const demuxer_desc_t demuxer_desc_rawaudio = { demux_rawaudio_open, NULL, demux_rawaudio_seek, - demux_rawaudio_control }; From 9054d575950c6a70baba55bdb9e97f4a8a0adb24 Mon Sep 17 00:00:00 2001 From: reimar Date: Mon, 17 Aug 2009 06:14:12 +0000 Subject: [PATCH 75/77] Set demuxer->filepos in mf demuxer, since the stream_tell fallback is not usable. Fixes progress display in mencoder. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29530 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demux_mf.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libmpdemux/demux_mf.c b/libmpdemux/demux_mf.c index 102fbf2986..9320c544ff 100644 --- a/libmpdemux/demux_mf.c +++ b/libmpdemux/demux_mf.c @@ -41,7 +41,7 @@ static void demux_seek_mf(demuxer_t *demuxer,float rel_seek_secs,float audio_del else newpos+=rel_seek_secs * sh_video->fps; if ( newpos < 0 ) newpos=0; if( newpos >= mf->nr_of_files) newpos=mf->nr_of_files - 1; - mf->curr_frame=newpos; + demuxer->filepos=mf->curr_frame=newpos; } // return value: @@ -71,7 +71,7 @@ static int demux_mf_fill_buffer(demuxer_t *demuxer, demux_stream_t *ds){ } fclose( f ); - mf->curr_frame++; + demuxer->filepos=mf->curr_frame++; return 1; } @@ -126,7 +126,7 @@ static demuxer_t* demux_open_mf(demuxer_t* demuxer){ mp_msg(MSGT_DEMUX, MSGL_INFO, "[demux_mf] file type was not set! trying 'type=%s'...\n", mf_type); } - mf->curr_frame=0; + demuxer->filepos=mf->curr_frame=0; demuxer->movi_start = 0; demuxer->movi_end = mf->nr_of_files - 1; From 6638304dbfc2fb414c2f62c470c4a26fec15427e Mon Sep 17 00:00:00 2001 From: reimar Date: Mon, 17 Aug 2009 07:30:24 +0000 Subject: [PATCH 76/77] Fix 100l broken flag check found due to compiler warning. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29531 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demux_pva.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libmpdemux/demux_pva.c b/libmpdemux/demux_pva.c index 29c705fb4d..835fba2961 100644 --- a/libmpdemux/demux_pva.c +++ b/libmpdemux/demux_pva.c @@ -439,7 +439,7 @@ int pva_get_payload(demuxer_t * d,pva_payload_t * payload) buffer[255]=stream_read_char(d->stream); pes_head_len=stream_read_char(d->stream); stream_read(d->stream,buffer,pes_head_len); - if(!buffer[255]&0x80) //PES header does not contain PTS. + if(!(buffer[255]&0x80)) //PES header does not contain PTS. { mp_msg(MSGT_DEMUX,MSGL_V,"Audio PES packet does not contain PTS. (pes_head_len=%d)\n",pes_head_len); payload->pts=priv->last_audio_pts; From 3961e12fca2f1ec10c64e3ff298828feecca52c9 Mon Sep 17 00:00:00 2001 From: reimar Date: Mon, 17 Aug 2009 08:02:37 +0000 Subject: [PATCH 77/77] Fix incompatible pointer types warning, also seems to fix mis-compilation with gcc-4.4.1 git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29532 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demux_mkv.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libmpdemux/demux_mkv.c b/libmpdemux/demux_mkv.c index 457d32709d..627ac7cd44 100644 --- a/libmpdemux/demux_mkv.c +++ b/libmpdemux/demux_mkv.c @@ -235,7 +235,7 @@ add_cluster_position (mkv_demuxer_t *mkv_d, uint64_t position) if (mkv_d->cluster_positions[i] == position) return; - grow_array(&mkv_d->cluster_positions, mkv_d->num_cluster_pos, + grow_array((void **)&mkv_d->cluster_positions, mkv_d->num_cluster_pos, sizeof(uint64_t)); mkv_d->cluster_positions[mkv_d->num_cluster_pos++] = position; } @@ -1079,7 +1079,7 @@ demux_mkv_read_cues (demuxer_t *demuxer) if (time != EBML_UINT_INVALID && track != EBML_UINT_INVALID && pos != EBML_UINT_INVALID) { - grow_array(&mkv_d->indexes, mkv_d->num_indexes, sizeof(mkv_index_t)); + grow_array((void **)&mkv_d->indexes, mkv_d->num_indexes, sizeof(mkv_index_t)); mkv_d->indexes[mkv_d->num_indexes].tnum = track; mkv_d->indexes[mkv_d->num_indexes].timecode = time; mkv_d->indexes[mkv_d->num_indexes].filepos =mkv_d->segment_start+pos;