diff --git a/Changelog b/Changelog
index 7ced40d04e..59293eb0f6 100644
--- a/Changelog
+++ b/Changelog
@@ -1,5 +1,17 @@
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
+
+ Demuxers:
+ * support for TrueHD in BluRay streams in libmpdemux
+
rc3: "BikeshedCounter" March 27, 2009
Decoders:
* support for X8 frames (fixes "J-type picture is not supported" for WMV2)
diff --git a/DOCS/man/en/mplayer.1 b/DOCS/man/en/mplayer.1
index 0d8ac1a73a..dc7a65febd 100644
--- a/DOCS/man/en/mplayer.1
+++ b/DOCS/man/en/mplayer.1
@@ -7809,10 +7809,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/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
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:
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 86afaaf65d..dd03e00377 100644
--- a/DOCS/xml/en/install.xml
+++ b/DOCS/xml/en/install.xml
@@ -448,14 +448,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.
diff --git a/cfg-common-opts.h b/cfg-common-opts.h
index a96ff40798..053a24b372 100644
--- a/cfg-common-opts.h
+++ b/cfg-common-opts.h
@@ -84,7 +84,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},
diff --git a/codec-cfg.c b/codec-cfg.c
index db26866fbe..6e90c06fa8 100644
--- a/codec-cfg.c
+++ b/codec-cfg.c
@@ -141,10 +141,13 @@ 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[] = {
+ // 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},
@@ -162,20 +165,22 @@ static int add_to_format(char *s, char *alias,unsigned int *fourcc, unsigned int
{"UYVY", IMGFMT_UYVY},
{"YVYU", IMGFMT_YVYU},
- {"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},
+ {"RGB48LE", IMGFMT_RGB48LE},
+ {"RGB48BE", IMGFMT_RGB48BE},
+ {"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},
diff --git a/command.c b/command.c
index bbe9300e5e..67b3ac16f4 100644
--- a/command.c
+++ b/command.c
@@ -32,28 +32,18 @@
#include "spudec.h"
#include "get_path.h"
#include "ass_mp.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_MENU
#include "m_struct.h"
#include "libmenu/menu.h"
-#endif
#include "mp_core.h"
#include "mp_fifo.h"
diff --git a/configure b/configure
index c4ee96feea..424ab36d77 100755
--- a/configure
+++ b/configure
@@ -2755,8 +2755,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"
@@ -7379,7 +7380,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
@@ -7940,6 +7941,7 @@ CONFIG_XVMC=$_xvmc
CONFIG_ZLIB=$_zlib
HAVE_PTHREADS = $_pthreads
+HAVE_SHM = $_shm
HAVE_W32THREADS = $_w32threads
HAVE_YASM = $_have_yasm
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
diff --git a/etc/codecs.conf b/etc/codecs.conf
index 103955c322..530630beff 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 RGB48BE,RGB48LE
+
videocodec ffgif
info "FFmpeg GIF"
status working
@@ -369,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"
@@ -3548,6 +3556,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/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},
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 ===================================
diff --git a/libao2/ao_alsa.c b/libao2/ao_alsa.c
index d71600e183..92e827ea7e 100644
--- a/libao2/ao_alsa.c
+++ b/libao2/ao_alsa.c
@@ -210,6 +210,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_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] Error setting left channel, %s\n",
snd_strerror(err));
+ snd_mixer_close(handle);
return CONTROL_ERROR;
}
mp_msg(MSGT_AO,MSGL_DBG2,"left=%li, ", set_vol);
@@ -219,6 +220,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_tmsg(MSGT_AO,MSGL_ERR,"[AO_ALSA] Error setting right channel, %s\n",
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",
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 b5c56d9f33..47a05ef2fa 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
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..89efb1d6cb 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|48|128)
#define IMGFMT_BGR_MASK 0xFFFFFF00
#define IMGFMT_BGR (('B'<<24)|('G'<<16)|('R'<<8))
diff --git a/libmpcodecs/ve_x264.c b/libmpcodecs/ve_x264.c
index 51da237169..3a909cdfb7 100644
--- a/libmpcodecs/ve_x264.c
+++ b/libmpcodecs/ve_x264.c
@@ -218,9 +218,11 @@ static int config(struct vf_instance* vf, int width, int height, int d_width, in
static int control(struct vf_instance* 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:
diff --git a/libmpcodecs/vf_expand.c b/libmpcodecs/vf_expand.c
index dc3928b0da..7d91e3a236 100644
--- a/libmpcodecs/vf_expand.c
+++ b/libmpcodecs/vf_expand.c
@@ -15,6 +15,7 @@
#include "vf.h"
#include "libvo/fastmemcpy.h"
+#include "libavutil/avutil.h"
#ifdef OSD_SUPPORT
#include "libvo/sub.h"
@@ -24,8 +25,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;
@@ -255,8 +254,8 @@ static void get_image(struct vf_instance* 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)){
@@ -298,8 +297,8 @@ static void start_slice(struct vf_instance* 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_tmsg(MSGT_VFILTER, MSGL_WARN, "WARNING! Next filter doesn't support SLICES, get ready for sig11...\n"); // shouldn't happen.
vf->priv->first_slice = 1;
diff --git a/libmpcodecs/vf_scale.c b/libmpcodecs/vf_scale.c
index 2590481eee..ab931c8080 100644
--- a/libmpcodecs/vf_scale.c
+++ b/libmpcodecs/vf_scale.c
@@ -473,6 +473,8 @@ static int query_format(struct vf_instance* 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;
diff --git a/libmpdemux/demux_lavf.c b/libmpdemux/demux_lavf.c
index 1c25edf160..344a71d615 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))
diff --git a/libmpdemux/demux_mf.c b/libmpdemux/demux_mf.c
index c7ac81d56f..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;
}
@@ -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') },
@@ -125,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;
diff --git a/libmpdemux/demux_mkv.c b/libmpdemux/demux_mkv.c
index 9c984a11a9..27e564578e 100644
--- a/libmpdemux/demux_mkv.c
+++ b/libmpdemux/demux_mkv.c
@@ -1798,6 +1798,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)
@@ -2037,7 +2039,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/demux_pva.c b/libmpdemux/demux_pva.c
index ee9b4158bd..39fad12184 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;
diff --git a/libmpdemux/demux_rawaudio.c b/libmpdemux/demux_rawaudio.c
index 769f9be519..0f78e0a6df 100644
--- a/libmpdemux/demux_rawaudio.c
+++ b/libmpdemux/demux_rawaudio.c
@@ -112,7 +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));
}
-
const demuxer_desc_t demuxer_desc_rawaudio = {
"Raw audio demuxer",
"rawaudio",
@@ -126,5 +125,4 @@ const demuxer_desc_t demuxer_desc_rawaudio = {
demux_rawaudio_open,
NULL,
demux_rawaudio_seek,
- NULL
};
diff --git a/libmpdemux/demux_rtp.cpp b/libmpdemux/demux_rtp.cpp
index afe550b284..652be80a2b 100644
--- a/libmpdemux/demux_rtp.cpp
+++ b/libmpdemux/demux_rtp.cpp
@@ -118,6 +118,9 @@ int rtsp_transport_tcp = 0;
#endif
extern int rtsp_port;
+#ifdef CONFIG_LIBAVCODEC
+extern AVCodecContext *avcctx;
+#endif
extern "C" demuxer_t* demux_open_rtp(demuxer_t* demuxer) {
struct MPOpts *opts = demuxer->opts;
@@ -390,6 +393,9 @@ extern "C" void demux_close_rtp(demuxer_t* demuxer) {
delete rtpState->videoBufferQueue;
delete rtpState->sdpDescription;
delete rtpState;
+#ifdef CONFIG_LIBAVCODEC
+ av_freep(&avcctx);
+#endif
env->reclaim(); delete scheduler;
}
@@ -563,7 +569,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,
+ avcctx,
&poutbuf, &poutbuf_size,
dp->buffer, dp->len);
diff --git a/libmpdemux/demux_rtp_codec.cpp b/libmpdemux/demux_rtp_codec.cpp
index 839da403ca..32bfc43647 100644
--- a/libmpdemux/demux_rtp_codec.cpp
+++ b/libmpdemux/demux_rtp_codec.cpp
@@ -29,6 +29,7 @@ extern "C" {
#ifdef CONFIG_LIBAVCODEC
AVCodecParserContext * h264parserctx;
+AVCodecContext *avcctx;
#endif
// Copied from vlc
@@ -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) {
@@ -181,6 +183,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;
@@ -315,6 +319,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;
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;
diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c
index 349131f12b..f4e5351290 100644
--- a/libmpdemux/demuxer.c
+++ b/libmpdemux/demuxer.c
@@ -240,7 +240,7 @@ demuxer_t *new_demuxer(struct MPOpts *opts, stream_t *stream, int type,
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);
@@ -1276,8 +1276,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/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"
diff --git a/libmpdemux/mp_taglists.c b/libmpdemux/mp_taglists.c
index e1b6e90454..7874721987 100644
--- a/libmpdemux/mp_taglists.c
+++ b/libmpdemux/mp_taglists.c
@@ -48,6 +48,7 @@ static const struct mp_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')},
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);
diff --git a/mencoder.c b/mencoder.c
index 47b0efb8a1..de862fac48 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"
#include "options.h"
@@ -1419,7 +1414,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){
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"
diff --git a/mpcommon.c b/mpcommon.c
index 4a68fe9f25..245383c803 100644
--- a/mpcommon.c
+++ b/mpcommon.c
@@ -13,9 +13,7 @@
#include "spudec.h"
#include "version.h"
#include "vobsub.h"
-#ifdef CONFIG_TV_TELETEXT
#include "stream/tv.h"
-#endif
#include "ffmpeg_files/intreadwrite.h"
#include "m_option.h"
diff --git a/mplayer.c b/mplayer.c
index 8c46d0edcf..7553621f9a 100644
--- a/mplayer.c
+++ b/mplayer.c
@@ -103,17 +103,12 @@ 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
+#include "stream/cache2.h"
//**************************************************************************//
// Playtree
@@ -149,10 +144,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"
diff --git a/stream/tv.h b/stream/tv.h
index 5a38df690d..d177628e85 100644
--- a/stream/tv.h
+++ b/stream/tv.h
@@ -1,10 +1,30 @@
+/*
+ * TV interface
+ *
+ * Copyright (C) 2001 Alex Beregszászi
+ * Copyright (C) 2007 Attila Ötvös
+ * 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
-//#include "libao2/afmt.h"
-//#include "libmpcodecs/img_format.h"
-//#include "mp_msg.h"
-
typedef struct tv_param_s {
char *freq;
char *channel;
@@ -202,7 +222,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
@@ -217,7 +237,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
@@ -273,7 +293,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!)
@@ -287,9 +307,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
diff --git a/stream/tvi_vbi.c b/stream/tvi_vbi.c
index 15524d8ccd..8677fa1d69 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
*/
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;