mirror of
https://github.com/mpv-player/mpv
synced 2025-03-25 04:38:01 +00:00
Merge svn changes up to r29971
This commit is contained in:
commit
ed333bb31d
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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_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_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: 检测到 30fps 的 NTSC 内容, 改变帧率中。\n"
|
||||
#define MSGTR_EnterTelecineMode "\ndemux_mpg: 检测到 24fps 渐进的 NTSC 内容, 改变帧率中。\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_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"
|
||||
|
@ -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];
|
||||
|
@ -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){
|
||||
|
@ -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) {
|
||||
|
@ -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") ) {
|
||||
|
Loading…
Reference in New Issue
Block a user