diff options
-rw-r--r-- | DOCS/man/en/mplayer.1 | 3 | ||||
-rw-r--r-- | DOCS/man/it/mplayer.1 | 9 | ||||
-rw-r--r-- | Makefile | 1 | ||||
-rwxr-xr-x | configure | 19 | ||||
-rw-r--r-- | help/help_mp-it.h | 5 | ||||
-rw-r--r-- | libao2/ao_pulse.c | 17 | ||||
-rw-r--r-- | libvo/gl_common.c | 12 | ||||
-rw-r--r-- | libvo/gl_common.h | 12 | ||||
-rw-r--r-- | libvo/vo_gl.c | 12 | ||||
-rw-r--r-- | libvo/vo_gl2.c | 16 | ||||
-rw-r--r-- | mpcommon.c | 11 |
11 files changed, 65 insertions, 52 deletions
diff --git a/DOCS/man/en/mplayer.1 b/DOCS/man/en/mplayer.1 index 29efd7c437..60c9ac9599 100644 --- a/DOCS/man/en/mplayer.1 +++ b/DOCS/man/en/mplayer.1 @@ -3305,7 +3305,8 @@ This option is not suitable to only set the startup screen (because it will always display on the given screen in fullscreen mode), \-geometry is the best that is available for that purpose currently. -Supported by at least the direct3d, gl, gl2, x11, xv and corevideo video output drivers. +Supported by at least the direct3d, gl, gl2, x11, xv and corevideo video output +drivers. . .TP .B \-zrbw (\-vo zr only) diff --git a/DOCS/man/it/mplayer.1 b/DOCS/man/it/mplayer.1 index 4d43a1b66f..891240c0d8 100644 --- a/DOCS/man/it/mplayer.1 +++ b/DOCS/man/it/mplayer.1 @@ -1,4 +1,4 @@ -.\" synced with r29905 +.\" synced with r30043 .\" Encoding: iso-8859-1 .\" MPlayer (C) 2000-2009 MPlayer Team .\" Questa pagina di manuale è stata fatta da Gabucino, Diego Biurrun, @@ -3275,11 +3275,11 @@ allora le coordinate x ed y sono relative all'angolo in alto a sinistra della finestra stessa piuttosto che dello schermo. Le coordinate sono relative allo schermo indicato con \-xineramascreen per i driver di uscita video che gestiscono completamente \-xineramascreen (direct3d, -gl, gl2, vdpau, x11, xv, xvmc). +gl, gl2, vdpau, x11, xv, xvmc, corevideo). .br .I NOTA: Questa opzione è supportata dai driver di uscita video x11, xmga, xv, xvmc, -xvidix, gl, gl2, directx, fbdev e tdfxfb. +xvidix, gl, gl2, directx, fbdev, tdfxfb e corevideo. .sp 1 .I ESEMPIO: .PD 0 @@ -3478,7 +3478,8 @@ Funzionerà solitamente solo con "\-fstype \-fullscreen" o "\-fstype none". Quest'opzione non è utilizzabile per impostare solo la schermata di avvio (dato che si aprirà sempre a tutto schermo sullo schermo indicato), per far ciò la miglior opzione attualmente disponibilie è \-geometry. -Supportata almeno dai driver di uscita video direct3d, gl, gl2, x11 e xv. +Supportata almeno dai driver di uscita video direct3d, gl, gl2, x11, xv e +corevideo. . .TP .B \-zrbw (solo \-vo zr) @@ -540,6 +540,7 @@ SRCS_MPLAYER-$(GGI) += libvo/vo_ggi.c SRCS_MPLAYER-$(GIF) += libvo/vo_gif89a.c SRCS_MPLAYER-$(GL) += libvo/gl_common.c libvo/vo_gl.c libvo/vo_gl2.c SRCS_MPLAYER-$(GL_WIN32) += libvo/w32_common.c +SRCS_MPLAYER-$(GL_X11) += libvo/x11_common.c SRCS_MPLAYER-$(IVTV) += libao2/ao_ivtv.c libvo/vo_ivtv.c SRCS_MPLAYER-$(JACK) += libao2/ao_jack.c @@ -4799,11 +4799,14 @@ EOF _gl=no if cc_check -lGL $_ld_lm ; then _gl=yes + _gl_x11=yes libs_mplayer="$libs_mplayer -lGL $_ld_dl" elif cc_check -lGL $_ld_lm $_ld_pthread ; then _gl=yes + _gl_x11=yes libs_mplayer="$libs_mplayer -lGL $_ld_pthread $_ld_dl" - elif cc_check -DGL_WIN32 -lopengl32 ; then + fi + if cc_check -DGL_WIN32 -lopengl32 ; then _gl=yes _gl_win32=yes libs_mplayer="$libs_mplayer -lopengl32 -lgdi32" @@ -4813,14 +4816,20 @@ else fi if test "$_gl" = yes ; then def_gl='#define CONFIG_GL 1' + _res_comment="backends:" if test "$_gl_win32" = yes ; then - def_gl_win32='#define GL_WIN32 1' - _res_comment="win32 version" + def_gl_win32='#define CONFIG_GL_WIN32 1' + _res_comment="$_res_comment win32" + fi + if test "$_gl_x11" = yes ; then + def_gl_x11='#define CONFIG_GL_X11 1' + _res_comment="$_res_comment x11" fi _vomodules="opengl $_vomodules" else def_gl='#undef CONFIG_GL' - def_gl_win32='#undef GL_WIN32' + def_gl_win32='#undef CONFIG_GL_WIN32' + def_gl_x11='#undef CONFIG_GL_X11' _novomodules="opengl $_novomodules" fi echores "$_gl" @@ -7830,6 +7839,7 @@ GIF = $_gif GGI = $_ggi GL = $_gl GL_WIN32 = $_gl_win32 +GL_X11 = $_gl_x11 HAVE_POSIX_SELECT = $_posix_select HAVE_SYS_MMAN_H = $_mman IVTV = $_ivtv @@ -8302,6 +8312,7 @@ $def_gif_4 $def_gif_tvt_hack $def_gl $def_gl_win32 +$def_gl_x11 $def_ivtv $def_jpeg $def_kva diff --git a/help/help_mp-it.h b/help/help_mp-it.h index 4fab4f04a7..ab33704006 100644 --- a/help/help_mp-it.h +++ b/help/help_mp-it.h @@ -2,7 +2,7 @@ // Updated by: Roberto Togni <see AUTHORS for email address> // Updated by: PaulTT <see AUTHORS for email address> -// Updated to help_mp-en.h r29912 +// Updated to help_mp-en.h r30044 // ========================= MPlayer help =========================== @@ -851,8 +851,7 @@ static const char help_text[]= #define MSGTR_LIBVO_FONT_LOAD_FT_CannotPrepareOSDFont "Impossibile preparare il font per l'OSD.\n" #define MSGTR_LIBVO_FONT_LOAD_FT_CannotGenerateTables "Impossibile generare le tabelle.\n" #define MSGTR_LIBVO_FONT_LOAD_FT_DoneFreeTypeFailed "FT_Done_FreeType in errore.\n" - - +#define MSGTR_LIBVO_FONT_LOAD_FT_FontconfigNoMatch "Fontconfig non ha potuto selezionare un font. Provo senza fontconfig...\n" // sub.c #define MSGTR_VO_SUB_Seekbar "Barra ricerca" diff --git a/libao2/ao_pulse.c b/libao2/ao_pulse.c index b2fdcbb175..a07bf31da0 100644 --- a/libao2/ao_pulse.c +++ b/libao2/ao_pulse.c @@ -49,9 +49,6 @@ static struct pa_context *context; /** Main event loop object */ static struct pa_threaded_mainloop *mainloop; -/** A temporary variable to store the current volume */ -static pa_cvolume volume; - static int broken_pause; LIBAO_EXTERN(pulse) @@ -143,7 +140,7 @@ static int init(int rate_hz, int channels, int format, int flags) { char *devarg = NULL; char *host = NULL; char *sink = NULL; - char *version = pa_get_library_version(); + const char *version = pa_get_library_version(); if (ao_subdevice) { devarg = strdup(ao_subdevice); @@ -189,8 +186,6 @@ static int init(int rate_hz, int channels, int format, int flags) { pa_channel_map_init_auto(&map, ss.channels, PA_CHANNEL_MAP_ALSA); ao_data.bps = pa_bytes_per_second(&ss); - pa_cvolume_reset(&volume, ss.channels); - if (!(mainloop = pa_threaded_mainloop_new())) { mp_msg(MSGT_AO, MSGL_ERR, "AO: [pulse] Failed to allocate main loop\n"); goto fail; @@ -224,7 +219,7 @@ static int init(int rate_hz, int channels, int format, int flags) { pa_stream_set_write_callback(stream, stream_request_cb, NULL); pa_stream_set_latency_update_callback(stream, stream_latency_update_cb, NULL); - if (pa_stream_connect_playback(stream, sink, NULL, PA_STREAM_INTERPOLATE_TIMING|PA_STREAM_AUTO_TIMING_UPDATE, &volume, NULL) < 0) + if (pa_stream_connect_playback(stream, sink, NULL, PA_STREAM_INTERPOLATE_TIMING|PA_STREAM_AUTO_TIMING_UPDATE, NULL, NULL) < 0) goto unlock_and_fail; /* Wait until the stream is ready */ @@ -350,13 +345,14 @@ static float get_delay(void) { * pa_context_get_sink_input_info() operation completes. Saves the * volume field of the specified structure to the global variable volume. */ static void info_func(struct pa_context *c, const struct pa_sink_input_info *i, int is_last, void *userdata) { + struct pa_cvolume *volume = userdata; if (is_last < 0) { GENERIC_ERR_MSG(context, "Failed to get sink input info"); return; } if (!i) return; - volume = i->volume; + *volume = i->volume; pa_threaded_mainloop_signal(mainloop, 0); } @@ -365,8 +361,9 @@ static int control(int cmd, void *arg) { case AOCONTROL_GET_VOLUME: { ao_control_vol_t *vol = arg; uint32_t devidx = pa_stream_get_index(stream); + struct pa_cvolume volume; pa_threaded_mainloop_lock(mainloop); - if (!waitop(pa_context_get_sink_input_info(context, devidx, info_func, NULL))) { + if (!waitop(pa_context_get_sink_input_info(context, devidx, info_func, &volume))) { GENERIC_ERR_MSG(context, "pa_stream_get_sink_input_info() failed"); return CONTROL_ERROR; } @@ -384,7 +381,9 @@ static int control(int cmd, void *arg) { case AOCONTROL_SET_VOLUME: { const ao_control_vol_t *vol = arg; pa_operation *o; + struct pa_cvolume volume; + pa_cvolume_reset(&volume, ao_data.channels); if (volume.channels != 2) pa_cvolume_set(&volume, volume.channels, (pa_volume_t)vol->left*PA_VOLUME_NORM/100); else { diff --git a/libvo/gl_common.c b/libvo/gl_common.c index 250f2df2da..f9b8359906 100644 --- a/libvo/gl_common.c +++ b/libvo/gl_common.c @@ -1539,7 +1539,7 @@ void glDrawTex(GLfloat x, GLfloat y, GLfloat w, GLfloat h, End(); } -#ifdef GL_WIN32 +#ifdef CONFIG_GL_WIN32 #include "w32_common.h" /** * \brief little helper since wglGetProcAddress definition does not fit our @@ -1635,7 +1635,7 @@ static void swapGlBuffers_w32(MPGLContext *ctx) { vo_w32_release_dc(vo_w32_window, vo_hdc); } #endif -#ifdef CONFIG_X11 +#ifdef CONFIG_GL_X11 #ifdef HAVE_LIBDL #include <dlfcn.h> #endif @@ -1828,7 +1828,7 @@ int init_mpglcontext(MPGLContext *ctx, enum MPGLType type) { memset(ctx, 0, sizeof(*ctx)); ctx->type = type; switch (ctx->type) { -#ifdef GL_WIN32 +#ifdef CONFIG_GL_WIN32 case GLTYPE_W32: ctx->setGlWindow = setGlWindow_w32; ctx->releaseGlContext = releaseGlContext_w32; @@ -1840,7 +1840,7 @@ int init_mpglcontext(MPGLContext *ctx, enum MPGLType type) { ctx->ontop = vo_w32_ontop; return vo_w32_init(); #endif -#ifdef CONFIG_X11 +#ifdef CONFIG_GL_X11 case GLTYPE_X11: ctx->setGlWindow = setGlWindow_x11; ctx->releaseGlContext = releaseGlContext_x11; @@ -1860,12 +1860,12 @@ int init_mpglcontext(MPGLContext *ctx, enum MPGLType type) { void uninit_mpglcontext(MPGLContext *ctx) { ctx->releaseGlContext(ctx); switch (ctx->type) { -#ifdef GL_WIN32 +#ifdef CONFIG_GL_WIN32 case GLTYPE_W32: vo_w32_uninit(); break; #endif -#ifdef CONFIG_X11 +#ifdef CONFIG_GL_X11 case GLTYPE_X11: vo_x11_uninit(); break; diff --git a/libvo/gl_common.h b/libvo/gl_common.h index 5a3b4c4163..654f13caf9 100644 --- a/libvo/gl_common.h +++ b/libvo/gl_common.h @@ -27,12 +27,12 @@ #include "video_out.h" -#ifdef GL_WIN32 +#ifdef CONFIG_GL_WIN32 #include <windows.h> #include <GL/gl.h> #include "w32_common.h" #endif -#ifdef CONFIG_X11 +#ifdef CONFIG_GL_X11 #include <GL/gl.h> #include <X11/Xlib.h> #include <GL/glx.h> @@ -45,7 +45,7 @@ #ifndef GLAPIENTRY #ifdef APIENTRY #define GLAPIENTRY APIENTRY -#elif defined(GL_WIN32) +#elif defined(CONFIG_GL_WIN32) #define GLAPIENTRY __stdcall #else #define GLAPIENTRY @@ -364,15 +364,15 @@ typedef struct MPGLContext { enum MPGLType type; union { int w32; -#ifdef CONFIG_X11 +#ifdef CONFIG_GL_X11 XVisualInfo *x11; #endif } vinfo; union { -#ifdef GL_WIN32 +#ifdef CONFIG_GL_WIN32 HGLRC w32; #endif -#ifdef CONFIG_X11 +#ifdef CONFIG_GL_X11 GLXContext x11; #endif } context; diff --git a/libvo/vo_gl.c b/libvo/vo_gl.c index e3c4571b32..fab076355f 100644 --- a/libvo/vo_gl.c +++ b/libvo/vo_gl.c @@ -44,7 +44,7 @@ static const vo_info_t info = const LIBVO_EXTERN(gl) -#ifdef CONFIG_X11 +#ifdef CONFIG_GL_X11 static int wsGLXAttrib[] = { GLX_RGBA, GLX_RED_SIZE,1, GLX_GREEN_SIZE,1, @@ -424,7 +424,7 @@ static void uninitGl(void) { DeleteBuffers(2, gl_buffer_uv); gl_buffer_uv[0] = gl_buffer_uv[1] = 0; gl_buffersize_uv = 0; gl_bufferptr_uv[0] = gl_bufferptr_uv[1] = 0; -#ifdef CONFIG_X11 +#ifdef CONFIG_GL_X11 if (mesa_bufferptr) FreeMemoryMESA(mDisplay, mScreen, mesa_bufferptr); #endif @@ -529,11 +529,11 @@ config(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uin vo_flipped = !!(flags & VOFLAG_FLIPPING); -#ifdef GL_WIN32 +#ifdef CONFIG_GL_WIN32 if (glctx.type == GLTYPE_W32 && !vo_w32_config(d_width, d_height, flags)) return -1; #endif -#ifdef CONFIG_X11 +#ifdef CONFIG_GL_X11 if (glctx.type == GLTYPE_X11) { XVisualInfo *vinfo=glXChooseVisual( mDisplay,mScreen,wsGLXAttrib ); if (vinfo == NULL) @@ -762,7 +762,7 @@ static uint32_t get_image(mp_image_t *mpi) { mpi->stride[0] = mpi->width * mpi->bpp / 8; needed_size = mpi->stride[0] * mpi->height; if (mesa_buffer) { -#ifdef CONFIG_X11 +#ifdef CONFIG_GL_X11 if (mesa_bufferptr && needed_size > mesa_buffersize) { FreeMemoryMESA(mDisplay, mScreen, mesa_bufferptr); mesa_bufferptr = NULL; @@ -990,7 +990,7 @@ static int preinit(const char *arg) { enum MPGLType gltype = GLTYPE_X11; // set defaults -#ifdef GL_WIN32 +#ifdef CONFIG_GL_WIN32 gltype = GLTYPE_W32; #endif many_fmts = 1; diff --git a/libvo/vo_gl2.c b/libvo/vo_gl2.c index 70557b07c2..73c09364f7 100644 --- a/libvo/vo_gl2.c +++ b/libvo/vo_gl2.c @@ -104,7 +104,7 @@ struct TexSquare static GLint getInternalFormat(void) { switch (glctx.type) { -#ifdef GL_WIN32 +#ifdef CONFIG_GL_WIN32 case GLTYPE_W32: { PIXELFORMATDESCRIPTOR pfd; @@ -122,7 +122,7 @@ static GLint getInternalFormat(void) } break; #endif -#ifdef CONFIG_X11 +#ifdef CONFIG_GL_X11 case GLTYPE_X11: if (glXGetConfig(mDisplay, glctx.vinfo.x11, GLX_RED_SIZE, &r_sz) != 0) r_sz = 0; if (glXGetConfig(mDisplay, glctx.vinfo.x11, GLX_GREEN_SIZE, &g_sz) != 0) g_sz = 0; @@ -462,7 +462,7 @@ static void draw_alpha_15(int x0,int y0, int w,int h, unsigned char* src, unsign static void draw_alpha_null(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride){ } -#ifdef GL_WIN32 +#ifdef CONFIG_GL_WIN32 static int config_w32(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uint32_t flags, char *title, uint32_t format) { if (!vo_w32_config(d_width, d_height, flags)) @@ -609,7 +609,7 @@ config(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uin image_width = width; image_format = format; -#ifdef GL_WIN32 +#ifdef CONFIG_GL_WIN32 if (config_w32(width, height, d_width, d_height, flags, title, format) == -1) #else if (config_glx(width, height, d_width, d_height, flags, title, format) == -1) @@ -659,7 +659,7 @@ config(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uin return 0; } -#ifndef GL_WIN32 +#ifndef CONFIG_GL_WIN32 static int gl_handlekey(int key) { if(key=='a'||key=='A') { @@ -676,7 +676,7 @@ static int gl_handlekey(int key) static void check_events(void) { int e; -#ifndef GL_WIN32 +#ifndef CONFIG_GL_WIN32 XEvent Event; char buf[100]; KeySym keySym; @@ -830,7 +830,7 @@ static int preinit(const char *arg) { enum MPGLType gltype = GLTYPE_X11; // set defaults -#ifdef GL_WIN32 +#ifdef CONFIG_GL_WIN32 gltype = GLTYPE_W32; #endif use_yuv = 0; @@ -882,7 +882,7 @@ static int control(uint32_t request, void *data) case VOCTRL_SET_PANSCAN: resize(vo_dwidth, vo_dheight); return VO_TRUE; -#ifndef GL_WIN32 +#ifndef CONFIG_GL_WIN32 case VOCTRL_SET_EQUALIZER: { struct voctrl_set_equalizer_args *args = data; diff --git a/mpcommon.c b/mpcommon.c index 456b6e9ee7..4088aada6d 100644 --- a/mpcommon.c +++ b/mpcommon.c @@ -199,12 +199,13 @@ void update_subtitles(struct MPContext *mpctx, struct MPOpts *opts, (long long)((endpts-subpts)*1000 + 0.5)); } else { // plaintext subs with libass if (subpts != MP_NOPTS_VALUE) { + subtitle tmp_subs = {0}; if (endpts == MP_NOPTS_VALUE) endpts = subpts + 3; - sub_clear_text(&subs, MP_NOPTS_VALUE); - sub_add_text(&subs, packet, len, endpts); - subs.start = subpts * 100; - subs.end = endpts * 100; - ass_process_subtitle(ass_track, &subs); + sub_add_text(&tmp_subs, packet, len, endpts); + tmp_subs.start = subpts * 100; + tmp_subs.end = endpts * 100; + ass_process_subtitle(ass_track, &tmp_subs); + sub_clear_text(&tmp_subs, MP_NOPTS_VALUE); } } continue; |