summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUoti Urpala <uau@glyph.nonexistent.invalid>2009-09-16 22:28:12 +0300
committerUoti Urpala <uau@glyph.nonexistent.invalid>2009-09-16 22:28:12 +0300
commite1ecc4315265c465080616b8d8d9257b3aab6ee9 (patch)
treed8a3aacf1b5468c59da202e44c5035924f5c1a3e
parent0e1b7765be878491565cf5e471f22b15e106164c (diff)
parent4dae2a980c4313deed6ddb69556d2ead4417119c (diff)
downloadmpv-e1ecc4315265c465080616b8d8d9257b3aab6ee9.tar.bz2
mpv-e1ecc4315265c465080616b8d8d9257b3aab6ee9.tar.xz
Merge svn changes up to r29684
-rw-r--r--DOCS/man/en/mplayer.12
-rw-r--r--DOCS/man/hu/mplayer.118
-rw-r--r--DOCS/man/zh_CN/mplayer.119
-rw-r--r--DOCS/xml/hu/encoding-guide.xml10
-rw-r--r--DOCS/xml/hu/install.xml14
-rwxr-xr-xTOOLS/mencvcd.sh6
-rwxr-xr-xTOOLS/mplmult.sh4
-rw-r--r--command.c4
-rwxr-xr-xconfigure2
-rw-r--r--etc/codecs.conf27
-rw-r--r--help/help_mp-hu.h7
-rw-r--r--libmpcodecs/vf_expand.c31
-rw-r--r--libmpcodecs/vf_ilpack.c4
-rw-r--r--libmpcodecs/vf_ivtc.c4
-rw-r--r--libmpcodecs/vf_tfields.c4
-rw-r--r--libmpdemux/demux_audio.c3
-rw-r--r--libmpdemux/demux_lavf.c28
-rw-r--r--libmpdemux/demuxer.c4
-rw-r--r--libmpdemux/extension.c2
-rw-r--r--libmpdemux/mp_taglists.c8
-rw-r--r--libmpdemux/mp_taglists.h6
-rw-r--r--libvo/osx_common.c19
-rw-r--r--libvo/vo_corevideo.m62
-rw-r--r--loader/win32.c3
-rw-r--r--mplayer.c7
25 files changed, 178 insertions, 120 deletions
diff --git a/DOCS/man/en/mplayer.1 b/DOCS/man/en/mplayer.1
index 2c034424f4..749c15e922 100644
--- a/DOCS/man/en/mplayer.1
+++ b/DOCS/man/en/mplayer.1
@@ -3571,7 +3571,7 @@ Force WarpOverlay! mode.
.IPs dive
Force DIVE mode.
.IPs (no)t23
-Enable/disable workaround for T23 laptop (default: \-not23).
+Enable/disable workaround for T23 laptop (default: disabled).
Try to enable this option if your video card supports upscaling only.
.RE
.PD 1
diff --git a/DOCS/man/hu/mplayer.1 b/DOCS/man/hu/mplayer.1
index a63c5af287..262036a988 100644
--- a/DOCS/man/hu/mplayer.1
+++ b/DOCS/man/hu/mplayer.1
@@ -1,4 +1,4 @@
-.\" Synced with r29413
+.\" Synced with r29661
.\" MPlayer (C) 2000-2009 MPlayer Team
.\" Ezt a man oldalt Gabucino, Diego Biurrun és Jonas Jermann készíti/készítette
.\" Karbantartó: Gabrov
@@ -33,7 +33,7 @@
.\" Név
.\" --------------------------------------------------------------------------
.
-.TH MPlayer 1 "2009. 07. 13." "MPlayer Project" "A film lejátszó"
+.TH MPlayer 1 "2009. 09. 11." "MPlayer Project" "A film lejátszó"
.
.SH NÉV
mplayer \- film lejátszó
@@ -525,6 +525,12 @@ a ~/.mplayer/ könyvtárba.
A konfigurációs fájlt teheted ugyanabba a könyvtárba is, mint ahol a
lejátszandó fájl van, feltéve hogy megadod a \-use\-filedir\-conf kapcsolót (vagy
a parancssorban vagy a globális konfigurációs fájlban).
+Ha egy fájl specifikus konfigurációs fájl található ugyan abban a könyvtárban, nem
+tölt be egy fájl specifikus konfigurációt sem a ~/.mplayer könyvtárból.
+Ráadásul a \-use\-filedir\-conf opció engedélyezi a könyvtár specifikus konfigurációs
+fájlokat. Ezért az MPlayer elõször megpróbálja betölteni az mplayer.conf-ot az
+lejátszandó fájlt tartalmazó könyvtárból, majd megpróbál betölteni bármilyen fájl
+specifikus konfigurációt.
.PP
.I PÉLDA AZ MPLAYER KONFIGURÁCIÓS FÁJLJÁRA:
.sp 1
@@ -3295,6 +3301,8 @@ VBI bekapcsolása a vesa, dfbmga és az svga videó kimeneti meghajtóhoz.
Ez megadja az MPlayernek hogy egy már létezõ X11 ablakban játsszon le,
hasznos ha böngészõbe akarod integrálni az MPlayert (pl.\& a plugger
kiterjesztéssel).
+Ez az opció a megadott ablakot teljesen kitölti, ezért a méretezést, panscan-t,
+stb. már nem az MPlayer kezeli, hanem az alkalmazás, amelyik az ablakot létrehozta.
.
.TP
.B \-xineramascreen <\-2\-...>
@@ -3629,7 +3637,7 @@ Kényszeríti a WarpOverlay! módot.
.IPs dive
Kényszeríti a DIVE módot.
.IPs (no)t23
-Engedélyezi/letiltja a T23 laptopokra vonatkozó kódot (alapértelmezett: \-not23).
+Engedélyezi/letiltja a T23 laptopokra vonatkozó kódot (alapértelmezett: letiltott).
Próbáld meg engedélyezni ezt az opciót, ha a videó kártyád csak a felméretezést támogatja.
.RE
.PD 1
@@ -7884,10 +7892,6 @@ Adaptív PCM formátumok \- lásd a HTML dokumentációt a részletekért.
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) \- FAAC használatával
.IPs libmp3lame
diff --git a/DOCS/man/zh_CN/mplayer.1 b/DOCS/man/zh_CN/mplayer.1
index a81e1ee77c..6d30e6a112 100644
--- a/DOCS/man/zh_CN/mplayer.1
+++ b/DOCS/man/zh_CN/mplayer.1
@@ -1,4 +1,4 @@
-.\" sync with en/mplayer.1 r29555
+.\" sync with en/mplayer.1 r29661
.\" Encoding: UTF-8
.\" Reminder of hard terms which need better/final solution later:
.\" /capture; playtree in parent list; colorkey; retrace; desync; downmix;
@@ -511,11 +511,16 @@ MEncoder çš„é…置文件是 "mencoder.conf" ä½äºŽä½ çš„é…置目录
而如果è¦åœç”¨å°±æŠŠå®ƒä»¬è®¾ç½®ä¸º "no" 或者 "0" 或者 "false"。
甚至å­é€‰é¡¹ä¹Ÿå¯ä»¥å¦‚此设定选项。
.PP
-你也å¯ä»¥ä¸ºç‰¹å®šæ–‡ä»¶å†™é…置文件。
-如果你希望一个特定文件 "movie.avi" 有个é…置文件, 就新建文件,
-å为 "movie.avi.conf", 写上该特定文件的选项并放在目录 ~/.mplayer/ 下。
-你也å¯ä»¥æŠŠé…置文件放在与播放该特定文件时该特定文件相åŒçš„目录之下,
-åªè¦ä½ ï¼ˆè¦ä¹ˆåœ¨å‘½ä»¤è¡Œæˆ–者在全局é…置文件中)给出 \-use\-filedir\-conf 选项。
+你也å¯ä»¥ç¼–写æ¯ä¸ªåª’体文件专用的é…置文件。
+如果è¦ç»™åå«â€˜movie.avi’的一个文件设置一个é…置文件,则创建一个å为‘movie.avi.conf’的文件,
+其中存放了该媒体文件专用的选项,并将其放到 ~/.mplayer/。
+åªè¦ç»™å‡ºäº† \-use\-filedir\-conf 选项(或是通行命令行,或是在全局é…置文件中),你也å¯ä»¥æŠŠé…置文
+件放到与所播放的媒体文件相åŒçš„目录下。
+如果在媒体文件所在目录下找到其专用的é…置文件,则ä¸ä¼šä»Ž ~/.maplyer 目录下加载任何媒体文件专用的
+é…置。
+å¦å¤–,\-use\-filedir\-conf 选项å¯ç”¨äº†ç›®å½•ä¸“用的é…置文件。
+对于该选项,MPlayer 首先å°è¯•æ‰€æ’­æ”¾æ–‡ä»¶çš„目录下加载 mplayer.conf,然åŽå°è¯•åŠ è½½ä»»ä½•å­˜åœ¨çš„媒体文件
+专用的é…置。
.PP
.I MPLAYER é…置文件示例:
.sp 1
@@ -3380,7 +3385,7 @@ VIDIX çš„ Windows å‰å°
.IPs dive
强制使用 DIVE 模å¼ã€‚
.IPs (no)t23
-å¯ç”¨/ç¦ç”¨è§£å†³ T23 笔记本问题的å˜é€šæ¨¡å¼ï¼ˆé»˜è®¤å€¼ï¼š\-not23)。
+å¯ç”¨/ç¦ç”¨è§£å†³ T23 笔记本问题的å˜é€šæ¨¡å¼ï¼ˆé»˜è®¤å€¼ï¼šç¦ç”¨ï¼‰ã€‚
如果你的显å¡ä»…支æŒç”»é¢æ”¾å¤§è¾“出,å°è¯•å¼€å¯è¿™ä¸ªé€‰é¡¹ã€‚
.RE
.PD 1
diff --git a/DOCS/xml/hu/encoding-guide.xml b/DOCS/xml/hu/encoding-guide.xml
index 434c7a48be..f783423790 100644
--- a/DOCS/xml/hu/encoding-guide.xml
+++ b/DOCS/xml/hu/encoding-guide.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- synced with r28984 -->
+<!-- synced with r29461 -->
<chapter id="encoding-guide">
<title>Kódolás a <application>MEncoder</application>rel</title>
@@ -2594,14 +2594,6 @@ mencoder dvd://2 -o <replaceable>title2.avi</replaceable> -ovc lavc -lavcopts vc
<entry>G.726 ADPCM</entry>
</row>
<row>
- <entry>libamr_nb</entry>
- <entry>3GPP Adaptive Multi-Rate (AMR) narrow-band</entry>
-</row>
-<row>
- <entry>libamr_wb</entry>
- <entry>3GPP Adaptive Multi-Rate (AMR) wide-band</entry>
-</row>
-<row>
<entry>libfaac</entry>
<entry>Advanced Audio Coding (AAC) - FAAC használatával</entry>
</row>
diff --git a/DOCS/xml/hu/install.xml b/DOCS/xml/hu/install.xml
index e92d75f5d7..45b9f5aa8c 100644
--- a/DOCS/xml/hu/install.xml
+++ b/DOCS/xml/hu/install.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- synced with r28510 -->
+<!-- synced with r29461 -->
<chapter id="install">
<title>Telepítés</title>
@@ -470,14 +470,10 @@ make install
<title>AMR</title>
<para>
-Az Adaptive Multi-Rate beszéd codec-et harmadik generációs (3G) mobiltelefonokban
-használják.
-A referencia implementáció elérhető
-<ulink url="http://www.3gpp.org">A 3. Generációs Együttműködés Projekt</ulink>
-oldalán (személyes felhasználásra ingyenes).
-A támogatás bekapcsolásához töltsd le és telepítsd a függvénykönyvtárakat az
-<ulink url="http://www.penguin.cz/~utx/amr">AMR-NB és AMR-WB</ulink>-hez
-az oldal utasításait követve. Utána forgasd újra az MPlayert!
+Az MPlayer használni tudja az OpenCORE AMR függvénykönyvtárakat a FFmpeg-en keresztül.
+Töltsd le a könyvtárakat az AMR-NB-hez és az AMR-WB-hez az
+<ulink url="http://sourceforge.net/projects/opencore-amr/">opencore-amr</ulink>
+projectből és telepítsd őket az oldalon lévő utasítások szerint.
</para>
</sect2>
diff --git a/TOOLS/mencvcd.sh b/TOOLS/mencvcd.sh
index c03f3486a6..6e2650f85a 100755
--- a/TOOLS/mencvcd.sh
+++ b/TOOLS/mencvcd.sh
@@ -4,7 +4,7 @@
#
# Licence: GPL
#
-# 2002/09/21 Jürgen Hammelmann <juergen.hammelmann@gmx.de>
+# 2002/09/21 Jürgen Hammelmann <juergen.hammelmann@gmx.de>
#
# Script: MPlayer Sources (DVD) to (S)VCD ripping and burning
#
@@ -345,8 +345,8 @@ fi
[ $mp3 -eq 1 -a $abrset -eq 0 ] && abr=128
# audio sample rate in kHz
-((a=$asr / 1000))
-((b=$asr % 1000))
+a=$(($a=$asr / 1000))
+b=$(($b=$asr % 1000))
[ $b -le 9 ] && b="00$b00"
[ $b -le 99 ] && b="0$b00"
kasr="$a.$b"
diff --git a/TOOLS/mplmult.sh b/TOOLS/mplmult.sh
index e0d262f23e..8621c010c0 100755
--- a/TOOLS/mplmult.sh
+++ b/TOOLS/mplmult.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
# example how to output video on multiple windows in sync.
# might be even more useful in combination with vo ggi
# to distribute the video arbitrarily
@@ -29,7 +29,7 @@ i=1
fifo_list=""
while test $i -le $count; do
fifo_list="$dir/mp$i $fifo_list"
- let i=$i+1
+ i=$(($i+1))
done
mkfifo $fifo_list
diff --git a/command.c b/command.c
index 67b3ac16f4..0d799c356a 100644
--- a/command.c
+++ b/command.c
@@ -974,6 +974,10 @@ static int mp_property_program(m_option_t *prop, int action, void *arg,
&prog) == DEMUXER_CTRL_NOTIMPL)
return M_PROPERTY_ERROR;
+ if (prog.aid < 0 && prog.vid < 0) {
+ mp_msg(MSGT_CPLAYER, MSGL_ERR, "Selected program contains no audio or video streams!\n");
+ return M_PROPERTY_ERROR;
+ }
mp_property_do("switch_audio", M_PROPERTY_SET, &prog.aid, mpctx);
mp_property_do("switch_video", M_PROPERTY_SET, &prog.vid, mpctx);
return M_PROPERTY_OK;
diff --git a/configure b/configure
index 6d3bee8b70..e55da52c98 100755
--- a/configure
+++ b/configure
@@ -6687,7 +6687,7 @@ echocheck "QuickTime codecs"
_qtx_emulation=no
def_qtx_win32='#undef CONFIG_QTX_CODECS_WIN32'
if test "$_qtx" = auto ; then
- test "$_win32dll" = yes || quicktime && _qtx=yes
+ test "$_win32dll" = yes || test "$quicktime" = yes && _qtx=yes
fi
if test "$_qtx" = yes ; then
def_qtx='#define CONFIG_QTX_CODECS 1'
diff --git a/etc/codecs.conf b/etc/codecs.conf
index fd9a484c09..782ff61809 100644
--- a/etc/codecs.conf
+++ b/etc/codecs.conf
@@ -414,6 +414,14 @@ videocodec mtga
driver mtga
out BGR32,BGR24
+videocodec ffsgi
+ info "FFmpeg SGI image"
+ status working
+ fourcc SGI1 ; SGI1 is an internal MPlayer FOURCC
+ driver ffmpeg
+ dll sgi
+ out RGB24,Y800,RGB48BE
+
videocodec sgi
info "SGI image"
status working
@@ -2209,6 +2217,15 @@ videocodec webtrain
dll "wtvc.dll"
out BGR16 flip
+videocodec kegavideo
+ info "Kega Video"
+ comment "requires MSVCR80.DLL on windows"
+ status working
+ fourcc KGV1
+ driver vfw
+ dll "KGV1-VFW.dll"
+ out BGR16 flip
+
videocodec xfire
info "xfire video"
status working
@@ -3991,7 +4008,7 @@ audiocodec vorbis
audiocodec tremor
info "OggVorbis audio"
status working
- comment "fixed-point decoder useful systems without floating-point unit"
+ comment "fixed-point decoder useful for systems without floating-point unit"
fourcc vrbs
format 0x566F
driver tremor
@@ -4105,6 +4122,14 @@ audiocodec pscelp
driver acm
dll "smcelp32.acm"
+audiocodec fftwinvq
+ info "FFmpeg TwinVQ"
+ status working
+ fourcc TWI2 ; internal MPlayer FourCC, different from mplayer's TwinVQ decoder
+ ; since lavf demuxer is incompatible with it
+ driver ffmpeg
+ dll twinvq
+
audiocodec TwinVQ
info "VQF codec by NTTLabs"
status working
diff --git a/help/help_mp-hu.h b/help/help_mp-hu.h
index 920a6698a6..f8b1a9c257 100644
--- a/help/help_mp-hu.h
+++ b/help/help_mp-hu.h
@@ -3,7 +3,7 @@
//... Okay enough of the hw, now send the other two!
//
// Updated by: Gabrov <gabrov@freemail.hu>
-// Sync'ed with help_mp-en.h r29209 (2009. 05. 24.)
+// Sync'ed with help_mp-en.h r29549 (2009. 09. 11.)
// ========================= MPlayer help ===========================
@@ -1277,10 +1277,7 @@ static const char help_text[]=
#define MSGTR_AO_ALSA_UnableToDisableResampling "[AO_ALSA] A resampling letiltása sikertelen: %s\n"
#define MSGTR_AO_ALSA_UnableToSetSamplerate2 "[AO_ALSA] Sikerteln a samplerate-2 beállítása: %s\n"
#define MSGTR_AO_ALSA_UnableToSetBufferTimeNear "[AO_ALSA] Sikertelen a buffer idő beállítása: %s\n"
-#define MSGTR_AO_ALSA_UnableToSetPeriodTime "[AO_ALSA] Sikertelen a periódusidő beállítása: %s\n"
-#define MSGTR_AO_ALSA_BufferTimePeriodTime "[AO_ALSA] buffer_time: %d, period_time :%d\n"
-#define MSGTR_AO_ALSA_UnableToGetPeriodSize "[AO ALSA] Sikertelen a periódus idő lekérdezése: %s\n"
-#define MSGTR_AO_ALSA_UnableToSetPeriodSize "[AO ALSA] Sikertelen a periódus méret beállítása (%ld): %s\n"
+#define MSGTR_AO_ALSA_UnableToGetPeriodSize "[AO ALSA] Sikertelen a periódus méret lekérdezése: %s\n"
#define MSGTR_AO_ALSA_UnableToSetPeriods "[AO_ALSA] Sikertelen a periódusok beállítása: %s\n"
#define MSGTR_AO_ALSA_UnableToSetHwParameters "[AO_ALSA] Sikerteln a hw-paraméter-ek beállítása: %s\n"
#define MSGTR_AO_ALSA_UnableToGetBufferSize "[AO_ALSA] Sikerteln a buffer méret lekérdezése: %s\n"
diff --git a/libmpcodecs/vf_expand.c b/libmpcodecs/vf_expand.c
index 7d91e3a236..b6a2822745 100644
--- a/libmpcodecs/vf_expand.c
+++ b/libmpcodecs/vf_expand.c
@@ -26,6 +26,13 @@
#include "m_struct.h"
static struct vf_priv_s {
+ // These four values are a backup of the values parsed from the command line.
+ // This is necessary so that we do not get a mess upon filter reinit due to
+ // e.g. aspect changes and with only aspect specified on the command line,
+ // where we would otherwise use the values calculated for a different aspect
+ // instead of recalculating them again.
+ int cfg_exp_w, cfg_exp_h;
+ int cfg_exp_x, cfg_exp_y;
int exp_w,exp_h;
int exp_x,exp_y;
int osd_enabled;
@@ -196,6 +203,10 @@ static int config(struct vf_instance* vf,
return vf_next_config(vf,width,height,d_width,d_height,flags,outfmt);
}
if (outfmt == IMGFMT_IF09) return 0;
+ vf->priv->exp_x = vf->priv->cfg_exp_x;
+ vf->priv->exp_y = vf->priv->cfg_exp_y;
+ vf->priv->exp_w = vf->priv->cfg_exp_w;
+ vf->priv->exp_h = vf->priv->cfg_exp_h;
// calculate the missing parameters:
#if 0
if(vf->priv->exp_w<width) vf->priv->exp_w=width;
@@ -441,11 +452,11 @@ static int open(vf_instance_t *vf, char* args){
vf->draw_slice=draw_slice;
vf->get_image=get_image;
vf->put_image=put_image;
- mp_msg(MSGT_VFILTER, MSGL_INFO, "Expand: %d x %d, %d ; %d, osd: %d, aspect: %lf, round: %d\n",
- vf->priv->exp_w,
- vf->priv->exp_h,
- vf->priv->exp_x,
- vf->priv->exp_y,
+ mp_msg(MSGT_VFILTER, MSGL_INFO, "Expand: %d x %d, %d ; %d, osd: %d, aspect: %f, round: %d\n",
+ vf->priv->cfg_exp_w,
+ vf->priv->cfg_exp_h,
+ vf->priv->cfg_exp_x,
+ vf->priv->cfg_exp_y,
vf->priv->osd_enabled,
vf->priv->aspect,
vf->priv->round);
@@ -453,11 +464,11 @@ static int open(vf_instance_t *vf, char* args){
}
#define ST_OFF(f) M_ST_OFF(struct vf_priv_s,f)
-static const m_option_t vf_opts_fields[] = {
- {"w", ST_OFF(exp_w), CONF_TYPE_INT, 0, 0 ,0, NULL},
- {"h", ST_OFF(exp_h), CONF_TYPE_INT, 0, 0 ,0, NULL},
- {"x", ST_OFF(exp_x), CONF_TYPE_INT, M_OPT_MIN, -1, 0, NULL},
- {"y", ST_OFF(exp_y), CONF_TYPE_INT, M_OPT_MIN, -1, 0, NULL},
+static m_option_t vf_opts_fields[] = {
+ {"w", ST_OFF(cfg_exp_w), CONF_TYPE_INT, 0, 0 ,0, NULL},
+ {"h", ST_OFF(cfg_exp_h), CONF_TYPE_INT, 0, 0 ,0, NULL},
+ {"x", ST_OFF(cfg_exp_x), CONF_TYPE_INT, M_OPT_MIN, -1, 0, NULL},
+ {"y", ST_OFF(cfg_exp_y), CONF_TYPE_INT, M_OPT_MIN, -1, 0, NULL},
{"osd", ST_OFF(osd_enabled), CONF_TYPE_FLAG, 0 , 0, 1, NULL},
{"aspect", ST_OFF(aspect), CONF_TYPE_DOUBLE, M_OPT_MIN, 0, 0, NULL},
{"round", ST_OFF(round), CONF_TYPE_INT, M_OPT_MIN, 1, 0, NULL},
diff --git a/libmpcodecs/vf_ilpack.c b/libmpcodecs/vf_ilpack.c
index dc586762b4..14ff407412 100644
--- a/libmpcodecs/vf_ilpack.c
+++ b/libmpcodecs/vf_ilpack.c
@@ -88,6 +88,7 @@ static void pack_nn_MMX(unsigned char *dst, unsigned char *y,
pack_nn_C(dst, y, u, v, (w&7));
}
+#if HAVE_EBX_AVAILABLE
static void pack_li_0_MMX(unsigned char *dst, unsigned char *y,
unsigned char *u, unsigned char *v, int w, int us, int vs)
{
@@ -307,6 +308,7 @@ static void pack_li_1_MMX(unsigned char *dst, unsigned char *y,
);
pack_li_1_C(dst, y, u, v, (w&15), us, vs);
}
+#endif /* HAVE_EBX_AVAILABLE */
#endif
static pack_func_t *pack_nn;
@@ -399,8 +401,10 @@ static int open(vf_instance_t *vf, char* args)
#if HAVE_MMX
if(gCpuCaps.hasMMX) {
pack_nn = (pack_func_t *)pack_nn_MMX;
+#if HAVE_EBX_AVAILABLE
pack_li_0 = pack_li_0_MMX;
pack_li_1 = pack_li_1_MMX;
+#endif
}
#endif
diff --git a/libmpcodecs/vf_ivtc.c b/libmpcodecs/vf_ivtc.c
index a5e2356eaa..3f1fc7de69 100644
--- a/libmpcodecs/vf_ivtc.c
+++ b/libmpcodecs/vf_ivtc.c
@@ -40,7 +40,7 @@ enum {
F_SHOW
};
-#if HAVE_MMX
+#if HAVE_MMX && HAVE_EBX_AVAILABLE
static void block_diffs_MMX(struct metrics *m, unsigned char *old, unsigned char *new, int os, int ns)
{
int i;
@@ -516,7 +516,7 @@ static int open(vf_instance_t *vf, char* args)
p->first = 1;
if (args) sscanf(args, "%d", &p->drop);
block_diffs = block_diffs_C;
-#if HAVE_MMX
+#if HAVE_MMX && HAVE_EBX_AVAILABLE
if(gCpuCaps.hasMMX) block_diffs = block_diffs_MMX;
#endif
return 1;
diff --git a/libmpcodecs/vf_tfields.c b/libmpcodecs/vf_tfields.c
index 5ec60e3cde..395e55a323 100644
--- a/libmpcodecs/vf_tfields.c
+++ b/libmpcodecs/vf_tfields.c
@@ -169,6 +169,7 @@ static void qpel_li_MMX(unsigned char *d, unsigned char *s, int w, int h, int ds
__asm__ volatile("emms \n\t" : : : "memory");
}
+#if HAVE_EBX_AVAILABLE
static void qpel_4tap_MMX(unsigned char *d, unsigned char *s, int w, int h, int ds, int ss, int up)
{
int i, j, ssd=ss;
@@ -248,6 +249,7 @@ static void qpel_4tap_MMX(unsigned char *d, unsigned char *s, int w, int h, int
if (!up) fast_memcpy(d, s, w);
__asm__ volatile("emms \n\t" : : : "memory");
}
+#endif /* HAVE_EBX_AVAILABLE */
#endif
static inline int clamp(int a)
@@ -482,8 +484,10 @@ static int open(vf_instance_t *vf, char* args)
qpel_4tap = qpel_4tap_C;
#if HAVE_MMX
if(gCpuCaps.hasMMX) qpel_li = qpel_li_MMX;
+#if HAVE_EBX_AVAILABLE
if(gCpuCaps.hasMMX) qpel_4tap = qpel_4tap_MMX;
#endif
+#endif
#if HAVE_MMX2
if(gCpuCaps.hasMMX2) qpel_li = qpel_li_MMX2;
#endif
diff --git a/libmpdemux/demux_audio.c b/libmpdemux/demux_audio.c
index aa950046c6..f20c7d52f1 100644
--- a/libmpdemux/demux_audio.c
+++ b/libmpdemux/demux_audio.c
@@ -528,11 +528,10 @@ static int demux_audio_open(demuxer_t* demuxer) {
}
-static int demux_audio_fill_buffer(demuxer_t *demuxer, demux_stream_t *ds) {
+static int demux_audio_fill_buffer(demuxer_t *demux, demux_stream_t *ds) {
int l;
demux_packet_t* dp;
sh_audio_t* sh_audio = ds->sh;
- demuxer_t* demux = ds->demuxer;
da_priv_t* priv = demux->priv;
double this_pts = priv->next_pts;
stream_t* s = demux->stream;
diff --git a/libmpdemux/demux_lavf.c b/libmpdemux/demux_lavf.c
index fb89accaf3..31eabc67a1 100644
--- a/libmpdemux/demux_lavf.c
+++ b/libmpdemux/demux_lavf.c
@@ -172,16 +172,18 @@ static int lavf_check_file(demuxer_t *demuxer){
static const char * const preferred_list[] = {
"dxa",
- "wv",
- "nuv",
- "nut",
- "gxf",
- "mxf",
"flv",
- "swf",
+ "gxf",
+ "nut",
+ "nuv",
"mov,mp4,m4a,3gp,3g2,mj2",
"mpc",
"mpc8",
+ "mxf",
+ "swf",
+ "vqf",
+ "w64",
+ "wv",
NULL
};
@@ -240,8 +242,6 @@ static void handle_stream(demuxer_t *demuxer, AVFormatContext *avfc, int i) {
// mp4a tag is used for all mp4 files no matter what they actually contain
if(codec->codec_tag == MKTAG('m', 'p', '4', 'a'))
codec->codec_tag= 0;
- if(codec->codec_id == CODEC_ID_ADPCM_IMA_AMV)
- codec->codec_tag= MKTAG('A','M','V','A');
if(!codec->codec_tag)
codec->codec_tag= mp_av_codec_get_tag(mp_wav_taglists, codec->codec_id);
wf->wFormatTag= codec->codec_tag;
@@ -490,6 +490,8 @@ static demuxer_t* demux_open_lavf(demuxer_t *demuxer){
demuxer_add_chapter(demuxer, t ? t->value : NULL, start, end);
}
+ for(i=0; i<avfc->nb_streams; i++)
+ handle_stream(demuxer, avfc, i);
if(avfc->nb_programs) {
int p, start=0, found=0;
@@ -511,15 +513,11 @@ static demuxer_t* demux_open_lavf(demuxer_t *demuxer){
AVProgram *program = avfc->programs[p];
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; i<program->nb_stream_indexes; i++)
- handle_stream(demuxer, avfc, program->stream_index[i]);
if(!priv->cur_program && (demuxer->video->sh || demuxer->audio->sh))
priv->cur_program = program->id;
p = (p + 1) % avfc->nb_programs;
} while(p!=start);
- } else
- for(i=0; i<avfc->nb_streams; i++)
- handle_stream(demuxer, avfc, i);
+ }
mp_msg(MSGT_HEADER,MSGL_V,"LAVF: %d audio and %d video streams found\n",priv->audio_streams,priv->video_streams);
mp_msg(MSGT_HEADER,MSGL_V,"LAVF: build %d\n", LIBAVFORMAT_BUILD);
@@ -714,6 +712,7 @@ static int demux_lavf_control(demuxer_t *demuxer, int cmd, void *arg)
demux_program_t *prog = arg;
AVProgram *program;
int p, i;
+ int start;
if(priv->avfc->nb_programs < 2)
return DEMUXER_CTRL_NOTIMPL;
@@ -735,6 +734,7 @@ static int demux_lavf_control(demuxer_t *demuxer, int cmd, void *arg)
p = i;
}
prog->vid = prog->aid = prog->sid = -2; //no audio and no video by default
+ start = p;
redo:
program = priv->avfc->programs[p];
for(i=0; i<program->nb_stream_indexes; i++)
@@ -758,6 +758,8 @@ redo:
if(prog->progid == -1 && prog->vid == -2 && prog->aid == -2)
{
p = (p + 1) % priv->avfc->nb_programs;
+ if (p == start)
+ return DEMUXER_CTRL_DONTKNOW;
goto redo;
}
priv->cur_program = prog->progid = program->id;
diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c
index 1c39b236e1..d08d97468b 100644
--- a/libmpdemux/demuxer.c
+++ b/libmpdemux/demuxer.c
@@ -1158,6 +1158,10 @@ int demux_info_add(demuxer_t *demuxer, const char *opt, const char *param)
for (n = 0; info && info[2 * n] != NULL; n++) {
if (!strcasecmp(opt, info[2 * n])) {
+ if (!strcmp(param, info[2 * n + 1])) {
+ mp_msg(MSGT_DEMUX, MSGL_V, "Demuxer info %s set to unchanged value %s\n", opt, param);
+ return 0;
+ }
mp_tmsg(MSGT_DEMUX, MSGL_INFO, "Demuxer info %s changed to %s\n", opt,
param);
free(info[2 * n + 1]);
diff --git a/libmpdemux/extension.c b/libmpdemux/extension.c
index 539dd043b4..59d242e4dd 100644
--- a/libmpdemux/extension.c
+++ b/libmpdemux/extension.c
@@ -65,7 +65,7 @@ static struct {
{ "it", DEMUXER_TYPE_XMMS },
{ "mid", DEMUXER_TYPE_XMMS },
{ "midi", DEMUXER_TYPE_XMMS },
- { "vqf", DEMUXER_TYPE_XMMS },
+ { "vqf", DEMUXER_TYPE_LAVF },
{ "nsv", DEMUXER_TYPE_NSV },
{ "nsa", DEMUXER_TYPE_NSV },
{ "mpc", DEMUXER_TYPE_MPC },
diff --git a/libmpdemux/mp_taglists.c b/libmpdemux/mp_taglists.c
index 6ae9235191..12281ae997 100644
--- a/libmpdemux/mp_taglists.c
+++ b/libmpdemux/mp_taglists.c
@@ -50,17 +50,19 @@ static const struct mp_AVCodecTag mp_wav_tags[] = {
{ 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_TWINVQ, MKTAG('T', 'W', 'I', '2')},
{ CODEC_ID_WAVPACK, MKTAG('W', 'V', 'P', 'K')},
{ CODEC_ID_WESTWOOD_SND1, MKTAG('S', 'N', 'D', '1')},
{ CODEC_ID_XAN_DPCM, MKTAG('A', 'x', 'a', 'n')},
{ 0, 0 },
};
-const struct mp_AVCodecTag *mp_wav_taglists[] = {mp_ff_codec_wav_tags, mp_wav_tags, 0};
+const struct mp_AVCodecTag * const mp_wav_taglists[] = {mp_ff_codec_wav_tags, mp_wav_tags, 0};
static const struct mp_AVCodecTag mp_codecid_override_tags[] = {
{ CODEC_ID_AAC, MKTAG('M', 'P', '4', 'A')},
{ CODEC_ID_AC3, 0x2000},
+ { CODEC_ID_ADPCM_IMA_AMV, MKTAG('A', 'M', 'V', 'A')},
{ CODEC_ID_DTS, 0x2001},
{ CODEC_ID_EAC3, MKTAG('E', 'A', 'C', '3')},
{ CODEC_ID_H264, MKTAG('H', '2', '6', '4')},
@@ -79,7 +81,7 @@ static const struct mp_AVCodecTag mp_codecid_override_tags[] = {
{ 0, 0 },
};
-const struct mp_AVCodecTag *mp_codecid_override_taglists[] = {mp_codecid_override_tags, 0};
+const struct mp_AVCodecTag * const mp_codecid_override_taglists[] = {mp_codecid_override_tags, 0};
static const struct mp_AVCodecTag mp_bmp_tags[] = {
{ CODEC_ID_AMV, MKTAG('A', 'M', 'V', 'V')},
@@ -110,4 +112,4 @@ static const struct mp_AVCodecTag mp_bmp_tags[] = {
{ 0, 0 },
};
-const struct mp_AVCodecTag *mp_bmp_taglists[] = {mp_ff_codec_bmp_tags, mp_bmp_tags, 0};
+const struct mp_AVCodecTag * const mp_bmp_taglists[] = {mp_ff_codec_bmp_tags, mp_bmp_tags, 0};
diff --git a/libmpdemux/mp_taglists.h b/libmpdemux/mp_taglists.h
index 81c0b35d86..381b77a8db 100644
--- a/libmpdemux/mp_taglists.h
+++ b/libmpdemux/mp_taglists.h
@@ -23,10 +23,10 @@
#include "ffmpeg_files/taglists.h"
-extern const struct mp_AVCodecTag *mp_wav_taglists[];
+extern const struct mp_AVCodecTag * const mp_wav_taglists[];
-extern const struct mp_AVCodecTag *mp_codecid_override_taglists[];
+extern const struct mp_AVCodecTag * const mp_codecid_override_taglists[];
-extern const struct mp_AVCodecTag *mp_bmp_taglists[];
+extern const struct mp_AVCodecTag * const mp_bmp_taglists[];
#endif /* MPLAYER_MP_TAGLISTS_H */
diff --git a/libvo/osx_common.c b/libvo/osx_common.c
index 642fa9e4da..97651f9f04 100644
--- a/libvo/osx_common.c
+++ b/libvo/osx_common.c
@@ -1,6 +1,23 @@
-// only to get keycode definitions from HIToolbox/Events.h
+/*
+ * 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.
+ */
#include "config.h"
+// only to get keycode definitions from HIToolbox/Events.h
#include <Carbon/Carbon.h>
#include "osx_common.h"
#include "video_out.h"
diff --git a/libvo/vo_corevideo.m b/libvo/vo_corevideo.m
index 9ed49a844d..ed90f5b14c 100644
--- a/libvo/vo_corevideo.m
+++ b/libvo/vo_corevideo.m
@@ -337,7 +337,7 @@ static void uninit(void)
buffer_name = NULL;
}
-static opt_t subopts[] = {
+static const opt_t subopts[] = {
{"device_id", OPT_ARG_INT, &screen_id, NULL},
{"shared_buffer", OPT_ARG_BOOL, &shared_buffer, NULL},
{"buffer_name", OPT_ARG_MSTRZ,&buffer_name, NULL},
@@ -594,58 +594,40 @@ static int control(uint32_t request, void *data)
[menuItem release];
}
+- (void)set_winSizeMult:(float)mult
+{
+ NSRect frame;
+ int d_width, d_height;
+ aspect(&d_width, &d_height, A_NOZOOM);
+
+ if (isFullscreen) {
+ vo_fs = !vo_fs;
+ [self fullscreen:NO];
+ }
+
+ winSizeMult = mult;
+ frame.size.width = d_width * mult;
+ frame.size.height = d_height * mult;
+ [window setContentSize: frame.size];
+ [self reshape];
+}
+
/*
Menu Action
*/
- (void)menuAction:(id)sender
{
- uint32_t d_width;
- uint32_t d_height;
- NSRect frame;
-
- aspect((int *)&d_widt