summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUoti Urpala <uau@glyph.nonexistent.invalid>2009-11-29 06:11:02 +0200
committerUoti Urpala <uau@glyph.nonexistent.invalid>2009-11-29 06:11:02 +0200
commited333bb31dd62030f62c534277f144e7da318194 (patch)
tree34e67542a3f9e32f399f231b11c7d2c09da722c2
parent5017d713b1765048cf97d9ef73518ece826e9306 (diff)
parentb2adf9d98d8f59162ffcfdcd254e8626aacbec18 (diff)
downloadmpv-ed333bb31dd62030f62c534277f144e7da318194.tar.bz2
mpv-ed333bb31dd62030f62c534277f144e7da318194.tar.xz
Merge svn changes up to r29971
-rw-r--r--DOCS/tech/wishlist4
-rw-r--r--etc/codecs.conf1
-rw-r--r--etc/example.conf4
-rw-r--r--help/help_mp-zh_CN.h82
-rw-r--r--libaf/reorder_ch.c22
-rw-r--r--libmpcodecs/ad_ffmpeg.c2
-rw-r--r--mplayer.c1
-rw-r--r--stream/asf_streaming.c1
8 files changed, 61 insertions, 56 deletions
diff --git a/DOCS/tech/wishlist b/DOCS/tech/wishlist
index fd53e8f660..9ac16d8a23 100644
--- a/DOCS/tech/wishlist
+++ b/DOCS/tech/wishlist
@@ -139,11 +139,9 @@ Enhancements:
* make -noborder work with all video outputs
- * add option to use ffmpeg network code (rtsp, http, mms etc)
-
Difficult stuff:
- * RE all closed source codecs (QDMC, WMA9, Indeo 4/5, ...)
+ * RE all closed source codecs (Voxware, VIVO, MVI2, MSS1/MSS2, Indeo 4/5, ...)
* support for Bink codec
diff --git a/etc/codecs.conf b/etc/codecs.conf
index ac3dc06aca..49faf25322 100644
--- a/etc/codecs.conf
+++ b/etc/codecs.conf
@@ -3929,6 +3929,7 @@ audiocodec ffac3
format 0x2000
format 0x332D6361 ; ac-3 in mp4
format 0x332D4341
+ format 0x20736D ; "ms\20" older ac3 fcc (MOV files)
fourcc dnet
fourcc sac3
driver ffmpeg
diff --git a/etc/example.conf b/etc/example.conf
index 5f94437db9..a0fec86eb0 100644
--- a/etc/example.conf
+++ b/etc/example.conf
@@ -91,6 +91,10 @@
# Fixes playback when playlist and media file use the same URL.
#user-agent=NSPlayer/4.1.0.3856
+# Pretend to be Quicktime
+# Fixes playback for apple.com/trailers redirects
+#user-agent="QuickTime/7.1.3 (qtver=7.1.3;cpu=PPC;os=Mac 10.4.8)"
+
# Drop frames to preserve audio/video sync.
#framedrop = yes
diff --git a/help/help_mp-zh_CN.h b/help/help_mp-zh_CN.h
index 8c3ad7fd98..69e2bb7000 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 r29912 (MSGTR_UsingNINI)
+// Synced with help_mp-en.h r29912 (MSGTR_MPDEMUX_ASFHDR_HeaderSizeOver1MB)
// Reminder of hard terms which need better/final solution later:
// (file links to be updated later if available!);
// NAV; section/subsection; XScreenSaver; keycolor;
@@ -148,9 +148,9 @@ static const char help_text[]=
#define MSGTR_LoadingExtensionProfile "加载扩展组件相关的配置集‘%s’\n"
#define MSGTR_AddedSubtitleFile "字幕:添加字幕文件(%d):%s\n"
#define MSGTR_RemovedSubtitleFile "字幕:移除字幕文件(%d): %s\n"
-#define MSGTR_ErrorOpeningOutputFile "以写入方式打开文件 [%s] 失败!\n"
+#define MSGTR_ErrorOpeningOutputFile "未能以写入方式打开文件 [%s]!\n"
#define MSGTR_CommandLine "命令行:"
-#define MSGTR_RTCDeviceNotOpenable "打开 %s 失败:%s(用户应当有权限读取该设备。)\n"
+#define MSGTR_RTCDeviceNotOpenable "未能打开 %s:%s(用户应当有权限读取该设备。)\n"
#define MSGTR_LinuxRTCInitErrorIrqpSet "ioctl (rtc_irqp_set %lu) 中出现 Linux RTC 初始化错误:%s\n"
#define MSGTR_IncreaseRTCMaxUserFreq "尝试添加 \"echo %lu > /proc/sys/dev/rtc/max-user-freq\" 到你的系统启动脚本中。\n"
#define MSGTR_LinuxRTCInitErrorPieOn "ioctl (rtc_pie_on) 中出现 Linux RTC 初始化错误:%s\n"
@@ -259,7 +259,7 @@ static const char help_text[]=
#define MSGTR_NoAudioEncoderSelected "\n没有选择音频编码器(-oac)。请选择一个编码器(参见 -oac help)或者使用 -nosound。\n"
#define MSGTR_NoVideoEncoderSelected "\n没有选择视频编码器(-ovc)。请选择一个编码器(参见 -ovc help)。\n"
#define MSGTR_CannotOpenOutputFile "无法打开输出文件‘%s’。\n"
-#define MSGTR_EncoderOpenFailed "打开编码器失败。\n"
+#define MSGTR_EncoderOpenFailed "未能打开编码器。\n"
#define MSGTR_MencoderWrongFormatAVI "\n警告:输出文件格式是 _AVI_。参见 -of help。\n"
#define MSGTR_MencoderWrongFormatMPG "\n警告:输出文件格式是 _MPEG_。参见 -of help。\n"
#define MSGTR_MissingOutputFilename "没有指定输出文件,请参见 -o 选项。"
@@ -889,7 +889,7 @@ static const char help_text[]=
#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_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"
@@ -908,18 +908,18 @@ static const char help_text[]=
#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_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"
+#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。"
@@ -1406,33 +1406,33 @@ static const char help_text[]=
#define MSGTR_NI_Detected "检测到"
#define MSGTR_NI_Message "%s 非交错合并的 AVI 文件模式!\n"
-#define MSGTR_UsingNINI "使用非交错的损坏的 AVI 文件格式。\n"
-#define MSGTR_CouldntDetFNo "无法决定帧数(用于绝对搜索)。\n"
-#define MSGTR_CantSeekRawAVI "无法在原始的 AVI 流中搜索。(需要索引, 尝试使用 -idx 选项。) \n"
-#define MSGTR_CantSeekFile "不能在此文件中搜索。\n"
-
-#define MSGTR_MOVcomprhdr "MOV: 支持压缩的文件头需要 ZLIB!\n"
-#define MSGTR_MOVvariableFourCC "MOV: 警告: 检测到可变的 FourCC!?\n"
-#define MSGTR_MOVtooManyTrk "MOV: 警告: 轨迹太多。"
-#define MSGTR_FoundAudioStream "==> 找到音频流: %d\n"
-#define MSGTR_FoundVideoStream "==> 找到视频流: %d\n"
-#define MSGTR_DetectedTV "检测到 TV! ;-)\n"
-#define MSGTR_ErrorOpeningOGGDemuxer "无法打开 Ogg 分路器。\n"
-#define MSGTR_ASFSearchingForAudioStream "ASF: 寻找音频流 (id:%d)。\n"
-#define MSGTR_CannotOpenAudioStream "打不开音频流: %s\n"
-#define MSGTR_CannotOpenSubtitlesStream "打不开字幕流: %s\n"
-#define MSGTR_OpeningAudioDemuxerFailed "打开音频分路器: %s 失败\n"
-#define MSGTR_OpeningSubtitlesDemuxerFailed "打开字幕分路器: %s 失败\n"
-#define MSGTR_TVInputNotSeekable "TV 输入不能搜索! (可能搜索应该用来更换频道;)\n"
-#define MSGTR_DemuxerInfoChanged "分路器信息 %s 已变成 %s\n"
-#define MSGTR_ClipInfo "剪辑信息: \n"
-
-#define MSGTR_LeaveTelecineMode "\ndemux_mpg: 检测到 30fps 的 NTSC 内容, 改变帧率中。\n"
-#define MSGTR_EnterTelecineMode "\ndemux_mpg: 检测到 24fps 渐进的 NTSC 内容, 改变帧率中。\n"
-
-#define MSGTR_CacheFill "\r缓存填充: %5.2f%% (%"PRId64" 字节) "
-#define MSGTR_NoBindFound "找不到键 '%s' 的键绑定。"
-#define MSGTR_FailedToOpen "打开 %s 失败。\n"
+#define MSGTR_UsingNINI "使用非交错合并的无效的 AVI 文件格式。\n"
+#define MSGTR_CouldntDetFNo "无法确定(绝对定位所用的)帧数。\n"
+#define MSGTR_CantSeekRawAVI "无法在原生的 AVI 流中定位。(需要索引信息,请尝试使用 -idx 选项。)\n"
+#define MSGTR_CantSeekFile "无法在此文件中定位。\n"
+
+#define MSGTR_MOVcomprhdr "MOV:需要 ZLIB 以支持经过压缩的文件头!\n"
+#define MSGTR_MOVvariableFourCC "MOV:警告:检测到可变的 FourCC 代码!?\n"
+#define MSGTR_MOVtooManyTrk "MOV:警告:轨道太多。"
+#define MSGTR_FoundAudioStream "==> 找到音频流:%d\n"
+#define MSGTR_FoundVideoStream "==> 找到视频流:%d\n"
+#define MSGTR_DetectedTV "检测到电视信号!;-)\n"
+#define MSGTR_ErrorOpeningOGGDemuxer "无法打开 Ogg 流分离器。\n"
+#define MSGTR_ASFSearchingForAudioStream "ASF:寻找音频流(id:%d)。\n"
+#define MSGTR_CannotOpenAudioStream "无法打开音频流:%s\n"
+#define MSGTR_CannotOpenSubtitlesStream "无法打开字幕流:%s\n"
+#define MSGTR_OpeningAudioDemuxerFailed "未能打开音频分离器:%s\n"
+#define MSGTR_OpeningSubtitlesDemuxerFailed "未能打开字幕流分离器:%s\n"
+#define MSGTR_TVInputNotSeekable "电视信号输入无法定位!(定位功能可能应该用于更换频道)\n"
+#define MSGTR_DemuxerInfoChanged "流分离器信息 %s 已变为 %s\n"
+#define MSGTR_ClipInfo "媒体剪辑信息:\n"
+
+#define MSGTR_LeaveTelecineMode "\ndemux_mpg:检测到 30000/1001fps 的 NTSC 内容,切换帧率。\n"
+#define MSGTR_EnterTelecineMode "\ndemux_mpg:检测到 24000/1001fps 的逐行扫描 NTSC 内容,切换帧率。\n"
+
+#define MSGTR_CacheFill "\r缓冲已填充:%5.2f%%(%"PRId64" 字节)"
+#define MSGTR_NoBindFound "按键‘%s’未绑定功能。"
+#define MSGTR_FailedToOpen "未能打开 %s。\n"
#define MSGTR_VideoID "[%s] 找到视频流,-vid %d\n"
#define MSGTR_AudioID "[%s] 找到音频流,-aid %d\n"
diff --git a/libaf/reorder_ch.c b/libaf/reorder_ch.c
index 03b489e862..5a6a1d9d93 100644
--- a/libaf/reorder_ch.c
+++ b/libaf/reorder_ch.c
@@ -68,7 +68,7 @@ static int reorder_copy_5ch(void *dest, const void *src,
{
int8_t *dest_8 = dest;
const int8_t *src_8 = src;
- for (i = 0; i < samples; i += 15) {
+ for (i = 0; i < samples * 3; i += 15) {
dest_8[i] = src_8[i+s0*3];
dest_8[i+1] = src_8[i+s0*3+1];
dest_8[i+2] = src_8[i+s0*3+2];
@@ -144,7 +144,7 @@ static int reorder_copy_6ch(void *dest, const void *src,
{
int8_t *dest_8 = dest;
const int8_t *src_8 = src;
- for (i = 0; i < samples; i += 18) {
+ for (i = 0; i < samples * 3; i += 18) {
dest_8[i] = src_8[i+s0*3];
dest_8[i+1] = src_8[i+s0*3+1];
dest_8[i+2] = src_8[i+s0*3+2];
@@ -226,7 +226,7 @@ static int reorder_copy_8ch(void *dest, const void *src,
{
int8_t *dest_8 = dest;
const int8_t *src_8 = src;
- for (i = 0; i < samples; i += 24) {
+ for (i = 0; i < samples * 3; i += 24) {
dest_8[i] = src_8[i+s0*3];
dest_8[i+1] = src_8[i+s0*3+1];
dest_8[i+2] = src_8[i+s0*3+2];
@@ -455,7 +455,7 @@ static int reorder_self_2(void *src, unsigned int samples,
{
int8_t *src_8 = src;
int8_t tmp0, tmp1, tmp2;
- for (i = 0; i < samples; i += chnum*3) {
+ for (i = 0; i < samples * 3; i += chnum * 3) {
tmp0 = src_8[i+s0*3];
tmp1 = src_8[i+s0*3+1];
tmp2 = src_8[i+s0*3+2];
@@ -555,7 +555,7 @@ static int reorder_self_3(void *src, unsigned int samples,
{
int8_t *src_8 = src;
int8_t tmp0, tmp1, tmp2;
- for (i = 0; i < samples; i += chnum*3) {
+ for (i = 0; i < samples * 3; i += chnum * 3) {
tmp0 = src_8[i+s0*3];
tmp1 = src_8[i+s0*3+1];
tmp2 = src_8[i+s0*3+2];
@@ -653,7 +653,7 @@ static int reorder_self_4_step_1(void *src, unsigned int samples,
{
int8_t *src_8 = src;
int8_t tmp0, tmp1, tmp2;
- for (i = 0; i < samples; i += chnum*3) {
+ for (i = 0; i < samples * 3; i += chnum * 3) {
tmp0 = src_8[i+s0*3];
tmp1 = src_8[i+s0*3+1];
tmp2 = src_8[i+s0*3+2];
@@ -731,7 +731,7 @@ static int reorder_self_4_step_2(void *src, unsigned int samples,
{
int8_t *src_8 = src;
int8_t tmp0, tmp1, tmp2;
- for (i = 0; i < samples; i += chnum*3) {
+ for (i = 0; i < samples * 3; i += chnum * 3) {
tmp0 = src_8[i+s0*3];
tmp1 = src_8[i+s0*3+1];
tmp2 = src_8[i+s0*3+2];
@@ -806,7 +806,7 @@ static int reorder_self_5_step_1(void *src, unsigned int samples,
{
int8_t *src_8 = src;
int8_t tmp0, tmp1, tmp2;
- for (i = 0; i < samples; i += chnum*3) {
+ for (i = 0; i < samples * 3; i += chnum * 3) {
tmp0 = src_8[i+s0*3];
tmp1 = src_8[i+s0*3+1];
tmp2 = src_8[i+s0*3+2];
@@ -896,7 +896,7 @@ static int reorder_self_2_3(void *src, unsigned int samples,
{
int8_t *src_8 = src;
int8_t tmp0, tmp1, tmp2;
- for (i = 0; i < samples; i += 18) {
+ for (i = 0; i < samples * 3; i += 18) {
tmp0 = src_8[i+s0*3];
tmp1 = src_8[i+s0*3+1];
tmp2 = src_8[i+s0*3+2];
@@ -980,7 +980,7 @@ static int reorder_self_3_3(void *src, unsigned int samples,
{
int8_t *src_8 = src;
int8_t tmp0, tmp1, tmp2;
- for (i = 0; i < samples; i += 18) {
+ for (i = 0; i < samples * 3; i += 18) {
tmp0 = src_8[i+s0*3];
tmp1 = src_8[i+s0*3+1];
tmp2 = src_8[i+s0*3+2];
@@ -1075,7 +1075,7 @@ static int reorder_self_2_4(void *src, unsigned int samples,
{
int8_t *src_8 = src;
int8_t tmp0, tmp1, tmp2;
- for (i = 0; i < samples; i += 3*chnum) {
+ for (i = 0; i < samples * 3; i += chnum * 3) {
tmp0 = src_8[i+s0*3];
tmp1 = src_8[i+s0*3+1];
tmp2 = src_8[i+s0*3+2];
diff --git a/libmpcodecs/ad_ffmpeg.c b/libmpcodecs/ad_ffmpeg.c
index 79601f9b63..12bd6aef6a 100644
--- a/libmpcodecs/ad_ffmpeg.c
+++ b/libmpcodecs/ad_ffmpeg.c
@@ -93,7 +93,7 @@ static int init(sh_audio_t *sh_audio)
mp_tmsg(MSGT_DECAUDIO,MSGL_ERR, "Could not open codec.\n");
return 0;
}
- mp_msg(MSGT_DECAUDIO,MSGL_V,"INFO: libavcodec init OK!\n");
+ mp_msg(MSGT_DECAUDIO,MSGL_V,"INFO: libavcodec \"%s\" init OK!\n", lavc_codec->name);
// printf("\nFOURCC: 0x%X\n",sh_audio->format);
if(sh_audio->format==0x3343414D){
diff --git a/mplayer.c b/mplayer.c
index a3152c9523..79916914e6 100644
--- a/mplayer.c
+++ b/mplayer.c
@@ -1897,6 +1897,7 @@ static void mp_dvdnav_reset_stream (MPContext *ctx) {
}
audio_delay = 0.0f;
+ ctx->global_sub_size = ctx->global_sub_indices[SUB_SOURCE_DEMUX] + mp_dvdnav_number_of_subs(ctx->stream);
if (dvdsub_lang && opts->sub_id == dvdsub_lang_id) {
dvdsub_lang_id = mp_dvdnav_sid_from_lang(ctx->stream, dvdsub_lang);
if (dvdsub_lang_id != opts->sub_id) {
diff --git a/stream/asf_streaming.c b/stream/asf_streaming.c
index 77c0b1ea09..41e9087b50 100644
--- a/stream/asf_streaming.c
+++ b/stream/asf_streaming.c
@@ -473,6 +473,7 @@ static int asf_http_streaming_type(char *content_type, char *features, HTTP_head
if( !strcasecmp(content_type, "application/octet-stream") ||
!strcasecmp(content_type, "application/vnd.ms.wms-hdr.asfv1") || // New in Corona, first request
!strcasecmp(content_type, "application/x-mms-framed") || // New in Corana, second request
+ !strcasecmp(content_type, "video/x-ms-wmv") ||
!strcasecmp(content_type, "video/x-ms-asf")) {
if( strstr(features, "broadcast") ) {