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 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 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 .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 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 @@ - + Kódolás a <application>MEncoder</application>rel @@ -2593,14 +2593,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) - FAAC használatával 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 @@ - + Telepítés @@ -470,14 +470,10 @@ make install AMR -Az Adaptive Multi-Rate beszéd codec-et harmadik generációs (3G) mobiltelefonokban -használják. -A referencia implementáció elérhetÅ‘ -A 3. Generációs Együttműködés Projekt -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 -AMR-NB és AMR-WB-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 +opencore-amr +projectbÅ‘l és telepítsd Å‘ket az oldalon lévÅ‘ utasítások szerint. 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 +# 2002/09/21 Jürgen Hammelmann # # 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 -// 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_wpriv->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; inb_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; inb_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; inb_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; inb_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 #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_width, (int *)&d_height,A_NOZOOM); - if(sender == kQuitCmd) { mplayer_put_key(KEY_ESC); } if(sender == kHalfScreenCmd) - { - if(isFullscreen) { - vo_fs = (!(vo_fs)); [self fullscreen:NO]; - } - - winSizeMult = 0.5; - frame.size.width = d_width*winSizeMult; - frame.size.height = d_height*winSizeMult; - [window setContentSize: frame.size]; - [self reshape]; - } + [self set_winSizeMult: 0.5]; if(sender == kNormalScreenCmd) - { - if(isFullscreen) { - vo_fs = (!(vo_fs)); [self fullscreen:NO]; - } - - winSizeMult = 1; - frame.size.width = d_width; - frame.size.height = d_height; - [window setContentSize: frame.size]; - [self reshape]; - } + [self set_winSizeMult: 1]; if(sender == kDoubleScreenCmd) - { - if(isFullscreen) { - vo_fs = (!(vo_fs)); [self fullscreen:NO]; - } - - winSizeMult = 2; - frame.size.width = d_width*winSizeMult; - frame.size.height = d_height*winSizeMult; - [window setContentSize: frame.size]; - [self reshape]; - } + [self set_winSizeMult: 2]; if(sender == kFullScreenCmd) { vo_fs = (!(vo_fs)); diff --git a/loader/win32.c b/loader/win32.c index 299a3636d5..81e65f2a0b 100644 --- a/loader/win32.c +++ b/loader/win32.c @@ -5273,6 +5273,9 @@ struct exports exp_msvcr80[]={ FF(_initterm_e, -1) FF(_initterm, -1) FF(_decode_pointer, -1) +/* needed by KGV1-VFW.dll */ + {"??2@YAPAXI@Z", -1, expnew}, + {"??3@YAXPAX@Z", -1, expdelete} }; struct exports exp_msvcp60[]={ diff --git a/mplayer.c b/mplayer.c index 71a0b9d488..cedd9d925e 100644 --- a/mplayer.c +++ b/mplayer.c @@ -2914,6 +2914,13 @@ int i; print_version("MPlayer"); #if defined(__MINGW32__) || defined(__CYGWIN__) + { + HMODULE kernel32 = GetModuleHandle("Kernel32.dll"); + BOOL WINAPI (*setDEP)(DWORD) = NULL; + if (kernel32) + setDEP = GetProcAddress(kernel32, "SetProcessDEPPolicy"); + if (setDEP) setDEP(3); + } // stop Windows from showing all kinds of annoying error dialogs SetErrorMode(0x8003); // request 1ms timer resolution