changeset 18234:a107276371a8

Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
author reynaldo
date Mon, 24 Apr 2006 04:23:53 +0000
parents 30fcc199bec7
children 6fa6d986a863
files help/help_mp-en.h libvo/aspect.c libvo/mga_common.c libvo/vesa_lvo.c libvo/video_out.c libvo/vo_3dfx.c libvo/vo_dxr3.c libvo/vo_mga.c libvo/vo_null.c libvo/vo_png.c libvo/vo_sdl.c libvo/vo_svga.c libvo/vo_syncfb.c libvo/vo_tdfx_vid.c libvo/vo_tdfxfb.c libvo/vo_tga.c libvo/vo_vesa.c libvo/vo_x11.c libvo/vo_xv.c libvo/vosub_vidix.c
diffstat 20 files changed, 596 insertions(+), 331 deletions(-) [+]
line wrap: on
line diff
--- a/help/help_mp-en.h	Sun Apr 23 23:28:46 2006 +0000
+++ b/help/help_mp-en.h	Mon Apr 24 04:23:53 2006 +0000
@@ -1563,3 +1563,250 @@
 
 // libmpcodecs/vf_test.c, vf_yuy2.c, vf_yvu9.c
 #define MSGTR_MPCODECS_WarnNextFilterDoesntSupport "%s not supported by next filter/vo :(\n"
+
+// ================================== LIBMPVO ====================================
+
+// mga_common.c
+
+#define MSGTR_LIBVO_MGA_ErrorInConfigIoctl "Error in mga_vid_config ioctl (wrong mga_vid.o version?)"
+#define MSGTR_LIBVO_MGA_CouldNotGetLumaValuesFromTheKernelModule "Could not get luma values from the kernel module!\n"
+#define MSGTR_LIBVO_MGA_CouldNotSetLumaValuesFromTheKernelModule "Could not set luma values from the kernel module!\n"
+#define MSGTR_LIBVO_MGA_ScreenWidthHeightUnknown "Screen width/height unknown!\n"
+#define MSGTR_LIBVO_MGA_MgaInvalidOutputFormat "Invalid output format %0X.\n"
+#define MSGTR_LIBVO_MGA_IncompatibleDriverVersion "Your mga_vid driver version is incompatible with this MPlayer version!\n"
+#define MSGTR_LIBVO_MGA_UsingBuffers "Using %d buffers.\n"
+#define MSGTR_LIBVO_MGA_CouldntOpen "Couldn't open: %s\n"
+
+// libvo/vesa_lvo.c
+
+#define MSGTR_LIBVO_VESA_ThisBranchIsNoLongerSupported "[VESA_LVO] This branch is no longer supported.\n[VESA_LVO] Please use -vo vesa:vidix instead.\n"
+#define MSGTR_LIBVO_VESA_CouldntOpen "[VESA_LVO] Couldn't open: '%s'\n"
+#define MSGTR_LIBVO_VESA_InvalidOutputFormat "[VESA_LVI] Invalid output format: %s(%0X)\n"
+#define MSGTR_LIBVO_VESA_IncompatibleDriverVersion "[VESA_LVO] Your fb_vid driver version is incompatible with this MPlayer version!\n"
+
+// libvo/vo_3dfx.c
+
+#define MSGTR_LIBVO_3DFX_Only16BppSupported "[VO_3DFX] Only 16bpp supported!"
+#define MSGTR_LIBVO_3DFX_VisualIdIs "[VO_3DFX] Visual id is  %lx.\n"
+#define MSGTR_LIBVO_3DFX_UnableToOpenDevice "[VO_3DFX] Unable to open /dev/3dfx.\n"
+#define MSGTR_LIBVO_3DFX_Error "[VO_3DFX] Error: %d.\n"
+#define MSGTR_LIBVO_3DFX_CouldntMapMemoryArea "[VO_3DFX] Couldn't map 3dfx memory areas: %p,%p,%d.\n"
+#define MSGTR_LIBVO_3DFX_DisplayInitialized "[VO_3DFX] Initialized: %p.\n"
+#define MSGTR_LIBVO_3DFX_UnknownSubdevice "[VO_3DFX] Unknown subdevice: %s.\n"
+
+// libvo/vo_dxr3.c
+
+#define MSGTR_LIBVO_DXR3_UnableToLoadNewSPUPalette "[VO_DXR3] Unable to load new SPU palette!\n"
+#define MSGTR_LIBVO_DXR3_UnableToSetPlaymode "[VO_DXR3] Unable to set playmode!\n"
+#define MSGTR_LIBVO_DXR3_UnableToSetSubpictureMode "[VO_DXR3] Unable to set subpicture mode!\n"
+#define MSGTR_LIBVO_DXR3_UnableToGetTVNorm "[VO_DXR3] Unable to get TV norm!\n"
+#define MSGTR_LIBVO_DXR3_AutoSelectedTVNormByFrameRate "[VO_DXR3] Auto-selected TV norm by frame rate: "
+#define MSGTR_LIBVO_DXR3_UnableToSetTVNorm "[VO_DXR3] Unable to set TV norm!\n"
+#define MSGTR_LIBVO_DXR3_SettingUpForNTSC "[VO_DXR3] Setting up for NTSC.\n"
+#define MSGTR_LIBVO_DXR3_SettingUpForPALSECAM "[VO_DXR3] Setting up for PAL/SECAM.\n"
+#define MSGTR_LIBVO_DXR3_SettingAspectRatioTo43 "[VO_DXR3] Setting aspect ratio to 4:3.\n"
+#define MSGTR_LIBVO_DXR3_SettingAspectRatioTo169 "[VO_DXR3] Setting aspect ratio to 16:9.\n"
+#define MSGTR_LIBVO_DXR3_OutOfMemory "[VO_DXR3] Out of memory.\n"
+#define MSGTR_LIBVO_DXR3_UnableToAllocateKeycolor "[VO_DXR3] Unable to allocate keycolor!\n"
+#define MSGTR_LIBVO_DXR3_UnableToAllocateExactKeycolor "[VO_DXR3] Unable to allocate exact keycolor, using closest match (0x%lx).\n"
+#define MSGTR_LIBVO_DXR3_Uninitializing "[VO_DXR3] Uninitializing.\n"
+#define MSGTR_LIBVO_DXR3_FailedRestoringTVNorm "[VO_DXR3] Failed restoring TV norm!\n"
+#define MSGTR_LIBVO_DXR3_EnablingPrebuffering "[VO_DXR3] Enabling prebuffering.\n"
+#define MSGTR_LIBVO_DXR3_UsingNewSyncEngine "[VO_DXR3] Using new sync engine.\n"
+#define MSGTR_LIBVO_DXR3_UsingOverlay "[VO_DXR3] Using overlay.\n"
+#define MSGTR_LIBVO_DXR3_ErrorYouNeedToCompileMplayerWithX11 "[VO_DXR3] Error: You need to compile mplayer with x11 libraries and headers installed to use overlay.\n"
+#define MSGTR_LIBVO_DXR3_WillSetTVNormTo "[VO_DXR3] Will set TV norm to: "
+#define MSGTR_LIBVO_DXR3_AutoAdjustToMovieFrameRatePALPAL60 "Auto-adjust to movie frame rate (PAL/PAL-60)"
+#define MSGTR_LIBVO_DXR3_AutoAdjustToMovieFrameRatePALNTSC "Auto-adjust to movie frame rate (PAL/NTSC)"
+#define MSGTR_LIBVO_DXR3_UseCurrentNorm "Use current norm"
+#define MSGTR_LIBVO_DXR3_UseUnknownNormSuppliedCurrentNorm "Unknown norm supplied. Use current norm."
+#define MSGTR_LIBVO_DXR3_ErrorOpeningForWritingTrying "[VO_DXR3] Error opening %s for writing, trying /dev/em8300 instead.\n"
+#define MSGTR_LIBVO_DXR3_ErrorOpeningForWritingTryingMV "[VO_DXR3] Error opening %s for writing, trying /dev/em8300_mv instead.\n"
+#define MSGTR_LIBVO_DXR3_ErrorOpeningForWritingAsWell "[VO_DXR3] Error opening /dev/em8300 for writing as well!\nBailing.\n"
+#define MSGTR_LIBVO_DXR3_ErrorOpeningForWritingAsWellMV "[VO_DXR3] Error opening /dev/em8300_mv for writing as well!\nBailing.\n"
+#define MSGTR_LIBVO_DXR3_Opened "[VO_DXR3] Opened: %s.\n"
+#define MSGTR_LIBVO_DXR3_ErrorOpeningForWritingTryingSP "[VO_DXR3] Error opening %s for writing, trying /dev/em8300_sp instead.\n"
+#define MSGTR_LIBVO_DXR3_ErrorOpeningForWritingAsWellSP "[VO_DXR3] Error opening /dev/em8300_sp for writing as well!\nBailing.\n"
+#define MSGTR_LIBVO_DXR3_UnableToOpenDisplayDuringHackSetup "[VO_DXR3] Unable to open display during overlay hack setup!\n"
+#define MSGTR_LIBVO_DXR3_UnableToInitX11 "[VO_DXR3] Unable to init x11!\n"
+#define MSGTR_LIBVO_DXR3_FailedSettingOverlayAttribute "[VO_DXR3] Failed setting overlay attribute.\n"
+#define MSGTR_LIBVO_DXR3_FailedSettingOverlayScreen "[VO_DXR3] Failed setting overlay screen!\nExiting.\n"
+#define MSGTR_LIBVO_DXR3_FailedEnablingOverlay "[VO_DXR3] Failed enabling overlay!\nExiting.\n"
+#define MSGTR_LIBVO_DXR3_FailedResizingOverlayWindow "[VO_DXR3] Failed resizing overlay window!\n"
+#define MSGTR_LIBVO_DXR3_FailedSettingOverlayBcs "[VO_DXR3] Failed setting overlay bcs!\n"
+#define MSGTR_LIBVO_DXR3_FailedGettingOverlayYOffsetValues "[VO_DXR3] Failed getting overlay Y-offset values!\nExiting.\n"
+#define MSGTR_LIBVO_DXR3_FailedGettingOverlayXOffsetValues "[VO_DXR3] Failed getting overlay X-offset values!\nExiting.\n"
+#define MSGTR_LIBVO_DXR3_FailedGettingOverlayXScaleCorrection "[VO_DXR3] Failed getting overlay X scale correction!\nExiting.\n"
+#define MSGTR_LIBVO_DXR3_YOffset "[VO_DXR3] Yoffset: %d.\n"
+#define MSGTR_LIBVO_DXR3_XOffset "[VO_DXR3] Xoffset: %d.\n"
+#define MSGTR_LIBVO_DXR3_XCorrection "[VO_DXR3] Xcorrection: %d.\n"
+#define MSGTR_LIBVO_DXR3_FailedResizingOverlayWindow "[VO_DXR3] Failed resizing overlay window!\n"
+#define MSGTR_LIBVO_DXR3_FailedSetSignalMix "[VO_DXR3] Failed set signal mix!\n"
+
+// libvo/vo_mga.c
+
+#define MSGTR_LIBVO_MGA_AspectResized "[VO_MGA] aspect(): resized to %dx%d.\n"
+#define MSGTR_LIBVO_MGA_Uninit "[VO] uninit!\n"
+
+// libvo/vo_null.c
+
+#define MSGTR_LIBVO_NULL_UnknownSubdevice "[VO_NULL] Unknown subdevice: %s.\n"
+															
+// libvo/vo_png.c
+
+#define MSGTR_LIBVO_PNG_Warning1 "[VO_PNG] Warning: compression level set to 0, compression disabled!\n"
+#define MSGTR_LIBVO_PNG_Warning2 "[VO_PNG] Info: Use -vo png:z=<n> to set compression level from 0 to 9.\n"
+#define MSGTR_LIBVO_PNG_Warning3 "[VO_PNG] Info: (0 = no compression, 1 = fastest, lowest - 9 best, slowest compression)\n"
+#define MSGTR_LIBVO_PNG_ErrorOpeningForWriting "\n[VO_PNG] Error opening '%s' for writing!\n"
+#define MSGTR_LIBVO_PNG_ErrorInCreatePng "[VO_PNG] Error in create_png.\n"
+
+// libvo/vo_sdl.c
+
+#define MSGTR_LIBVO_SDL_CouldntGetAnyAcceptableSDLModeForOutput "[VO_SDL] Couldn't get any acceptable SDL Mode for output.\n"
+#define MSGTR_LIBVO_SDL_SetVideoModeFailed "[VO_SDL] set_video_mode: SDL_SetVideoMode failed: %s.\n"
+#define MSGTR_LIBVO_SDL_SetVideoModeFailedFull "[VO_SDL] Set_fullmode: SDL_SetVideoMode failed: %s.\n"
+#define MSGTR_LIBVO_SDL_MappingI420ToIYUV "[VO_SDL] Mapping I420 to IYUV.\n"
+#define MSGTR_LIBVO_SDL_UnsupportedImageFormat "[VO_SDL] Unsupported image format (0x%X).\n"
+#define MSGTR_LIBVO_SDL_InfoPleaseUseVmOrZoom "[VO_SDL] Info - please use -vm or -zoom to switch to best resolution.\n"
+#define MSGTR_LIBVO_SDL_FailedToSetVideoMode "[VO_SDL] Failed to set video mode: %s.\n"
+#define MSGTR_LIBVO_SDL_CouldntCreateAYUVOverlay "[VO_SDL] Couldn't create a YUV overlay: %s.\n"
+#define MSGTR_LIBVO_SDL_CouldntCreateARGBSurface "[VO_SDL] Couldn't create an RGB surface: %s.\n"
+#define MSGTR_LIBVO_SDL_UsingDepthColorspaceConversion "[VO_SDL] Using depth/colorspace conversion, this will slow things down (%ibpp -> %ibpp).\n"
+#define MSGTR_LIBVO_SDL_UnsupportedImageFormatInDrawslice "[VO_SDL] Unsupported image format in draw_slice, contact MPlayer developers!\n"
+#define MSGTR_LIBVO_SDL_BlitFailed "[VO_SDL] Blit failed: %s.\n"
+#define MSGTR_LIBVO_SDL_InitializingOfSDLFailed "[VO_SDL] Initializing of SDL failed: %s.\n"
+#define MSGTR_LIBVO_SDL_UsingDriver "[VO_SDL] Using driver: %s.\n"
+
+// libvo/vobsub_vidix.c
+
+#define MSGTR_LIBVO_SUB_VIDIX_CantStartPlayback "[VO_SUB_VIDIX] Can't start playback: %s\n"
+#define MSGTR_LIBVO_SUB_VIDIX_CantStopPlayback "[VO_SUB_VIDIX] Can't stop playback: %s\n"
+#define MSGTR_LIBVO_SUB_VIDIX_InterleavedUvForYuv410pNotSupported "[VO_SUB_VIDIX] Interleaved uv for yuv410p not supported.\n"
+#define MSGTR_LIBVO_SUB_VIDIX_DummyVidixdrawsliceWasCalled "[VO_SUB_VIDIX] Dummy vidix_draw_slice() was called.\n"
+#define MSGTR_LIBVO_SUB_VIDIX_DummyVidixdrawframeWasCalled "[VO_SUB_VIDIX] Dummy vidix_draw_frame() was called.\n"
+#define MSGTR_LIBVO_SUB_VIDIX_UnsupportedFourccForThisVidixDriver "[VO_SUB_VIDIX] Unsupported fourcc for this vidix driver: %x (%s).\n"
+#define MSGTR_LIBVO_SUB_VIDIX_VideoServerHasUnsupportedResolution "[VO_SUB_VIDIX] Video server has unsupported resolution (%dx%d), supported: %dx%d-%dx%d.\n"
+#define MSGTR_LIBVO_SUB_VIDIX_VideoServerHasUnsupportedColorDepth "[VO_SUB_VIDIX] Video server has unsupported color depth by vidix (%d).\n"
+#define MSGTR_LIBVO_SUB_VIDIX_DriverCantUpscaleImage "[VO_SUB_VIDIX] Vidix driver can't upscale image (%d%d -> %d%d).\n"
+#define MSGTR_LIBVO_SUB_VIDIX_DriverCantDownscaleImage "[VO_SUB_VIDIX] Vidix driver can't downscale image (%d%d -> %d%d).\n"
+#define MSGTR_LIBVO_SUB_VIDIX_CantConfigurePlayback "[VO_SUB_VIDIX] Can't configure playback: %s.\n"
+#define MSGTR_LIBVO_SUB_VIDIX_YouHaveWrongVersionOfVidixLibrary "[VO_SUB_VIDIX] You have wrong version of VIDIX library.\n"
+#define MSGTR_LIBVO_SUB_VIDIX_CouldntFindWorkingVidixDriver "[VO_SUB_VIDIX] Couldn't find working VIDIX driver.\n"
+#define MSGTR_LIBVO_SUB_VIDIX_CouldntGetCapability "[VO_SUB_VIDIX] Couldn't get capability: %s.\n"
+#define MSGTR_LIBVO_SUB_VIDIX_Description "[VO_SUB_VIDIX] Description: %s.\n"
+#define MSGTR_LIBVO_SUB_VIDIX_Author "[VO_SUB_VIDIX] Author: %s.\n"
+
+// libvo/vo_svga.c
+
+#define MSGTR_LIBVO_SVGA_ForcedVidmodeNotAvailable "[VO_SVGA] Forced vid_mode %d (%s) not available.\n"
+#define MSGTR_LIBVO_SVGA_ForcedVidmodeTooSmall "[VO_SVGA] Forced vid_mode %d (%s) too small.\n"
+#define MSGTR_LIBVO_SVGA_Vidmode "[VO_SVGA] Vid_mode: %d, %dx%d %dbpp.\n"
+#define MSGTR_LIBVO_SVGA_VgasetmodeFailed "[VO_SVGA] Vga_setmode(%d) failed.\n"
+#define MSGTR_LIBVO_SVGA_VideoModeIsLinearAndMemcpyCouldBeUsed "[VO_SVGA] Video mode is linear and memcpy could be used for image transfer.\n"
+#define MSGTR_LIBVO_SVGA_VideoModeHasHardwareAcceleration "[VO_SVGA] Video mode has hardware acceleration and put_image could be used.\n"
+#define MSGTR_LIBVO_SVGA_IfItWorksForYouIWouldLineToKnow "[VO_SVGA] If it works for you i would like to know. \n[VO_SVGA] (send log with `mplayer test.avi -v -v -v -v &> svga.log`). Thx\n"
+#define MSGTR_LIBVO_SVGA_VideoModeHas "[VO_SVGA] Video mode has %d page(s).\n"
+#define MSGTR_LIBVO_SVGA_CenteringImageStartAt "[VO_SVGA] Centering image. start at (%d,%d)\n"
+#define MSGTR_LIBVO_SVGA_UsingVidix "[VO_SVGA] Using VIDIX. w=%i h=%i  mw=%i mh=%i\n"
+
+// libvo/vo_syncfb.c
+
+#define MSGTR_LIBVO_SYNCFB_CouldntOpen "[VO_SYNCFB] Couldn't open /dev/syncfb or /dev/mga_vid.\n"
+#define MSGTR_LIBVO_SYNCFB_UsingPaletteYuv420p3 "[VO_SYNCFB] Using palette yuv420p3.\n"
+#define MSGTR_LIBVO_SYNCFB_UsingPaletteYuv420p2 "[VO_SYNCFB] Using palette yuv420p2.\n"
+#define MSGTR_LIBVO_SYNCFB_UsingPaletteYuv420 "[VO_SYNCFB] Using palette yuv420.\n"
+#define MSGTR_LIBVO_SYNCFB_NoSupportedPaletteFound "[VO_SYNCFB] No supported palette found.\n"
+#define MSGTR_LIBVO_SYNCFB_BesSourcerSize "[VO_SYNCFB] BES Sourcer size: %d x %d.\n"
+#define MSGTR_LIBVO_SYNCFB_FramebufferMemory "[VO_SYNCFB] Framebuffer memory: %ld in %ld buffers.\n"
+#define MSGTR_LIBVO_SYNCFB_RequestingFirstBuffer "[VO_SYNCFB] Requesting first buffer #%d.\n"
+#define MSGTR_LIBVO_SYNCFB_GotFirstBuffer "[VO_SYNCFB] Got first buffer #%d.\n"
+#define MSGTR_LIBVO_SYNCFB_UnknownSubdevice "[VO_SYNCFB] Unknown subdevice: %s.\n"
+
+// libvo/vo_tdfxfb.c
+
+#define MSGTR_LIBVO_TDFXFB_CantOpen "[VO_TDFXFB] Can't open %s: %s.\n"
+#define MSGTR_LIBVO_TDFXFB_ProblemWithFbitgetFscreenInfo "[VO_TDFXFB] Problem with FBITGET_FSCREENINFO ioctl: %s.\n"
+#define MSGTR_LIBVO_TDFXFB_ProblemWithFbitgetVscreenInfo "[VO_TDFXFB] Problem with FBITGET_VSCREENINFO ioctl: %s.\n"
+#define MSGTR_LIBVO_TDFXFB_ThisDriverIsOnlySupports "[VO_TDFXFB] This driver is only supports the 3Dfx Banshee, Voodoo3 and Voodoo 5.\n"
+#define MSGTR_LIBVO_TDFXFB_OutputIsNotSupported "[VO_TDFXFB] %d bpp output is not supported.\n"
+#define MSGTR_LIBVO_TDFXFB_CouldntMapMemoryAreas "[VO_TDFXFB] Couldn't map memory areas: %s.\n"
+#define MSGTR_LIBVO_TDFXFB_BppOutputIsNotSupported "[VO_TDFXFB] %d bpp output is not supported (This should never have happened).\n"
+#define MSGTR_LIBVO_TDFXFB_SomethingIsWrongWithControl "[VO_TDFXFB] Eik! Something's wrong with control().\n"
+#define MSGTR_LIBVO_TDFXFB_NotEnoughVideoMemoryToPlay "[VO_TDFXFB] Not enough video memory to play this movie. Try at a lower resolution.\n"
+#define MSGTR_LIBVO_TDFXFB_ScreenIs "[VO_TDFXFB] Screen is %dx%d at %d bpp, in is %dx%d at %d bpp, norm is %dx%d.\n"
+
+// libvo/vo_tdfx_vid.c
+
+#define MSGTR_LIBVO_TDFXVID_Move "[VO_TDXVID] Move %d(%d) x %d => %d.\n"
+#define MSGTR_LIBVO_TDFXVID_AGPMoveFailedToClearTheScreen "[VO_TDFXVID] AGP move failed to clear the screen.\n"
+#define MSGTR_LIBVO_TDFXVID_BlitFailed "[VO_TDFXVID] Blit failed.\n"
+#define MSGTR_LIBVO_TDFXVID_NonNativeOverlayFormatNeedConversion "[VO_TDFXVID] Non-native overlay format needs conversion.\n"
+#define MSGTR_LIBVO_TDFXVID_UnsupportedInputFormat "[VO_TDFXVID] Unsupported input format 0x%x.\n"
+#define MSGTR_LIBVO_TDFXVID_OverlaySetupFailed "[VO_TDFXVID] Overlay setup failed.\n"
+#define MSGTR_LIBVO_TDFXVID_OverlayOnFailed "[VO_TDFXVID] Overlay on failed.\n"
+#define MSGTR_LIBVO_TDFXVID_OverlayReady "[VO_TDFXVID] Overlay ready: %d(%d) x %d @ %d => %d(%d) x %d @ %d.\n"
+#define MSGTR_LIBVO_TDFXVID_TextureBlitReady "[VO_TDFXVID] Texture blit ready: %d(%d) x %d @ %d => %d(%d) x %d @ %d.\n"
+#define MSGTR_LIBVO_TDFXVID_OverlayOffFailed "[VO_TDFXVID] Overlay off failed\n"
+#define MSGTR_LIBVO_TDFXVID_CantOpen "[VO_TDFXVID] Can't open %s: %s.\n"
+#define MSGTR_LIBVO_TDFXVID_CantGetCurrentCfg "[VO_TDFXVID] Can't get current cfg: %s.\n"
+#define MSGTR_LIBVO_TDFXVID_MemmapFailed "[VO_TDFXVID] Memmap failed !!!!!\n"
+#define MSGTR_LIBVO_TDFXVID_GetImageTodo "Get image todo.\n"
+#define MSGTR_LIBVO_TDFXVID_AgpMoveFailed "[VO_TDFXVID] AGP move failed.\n"
+#define MSGTR_LIBVO_TDFXVID_SetYuvFailed "[VO_TDFXVID] Set yuv failed.\n"
+#define MSGTR_LIBVO_TDFXVID_AgpMoveFailedOnYPlane "[VO_TDFXVID] AGP move failed on Y plane.\n"
+#define MSGTR_LIBVO_TDFXVID_AgpMoveFailedOnUPlane "[VO_TDFXVID] AGP move failed on U plane.\n"
+#define MSGTR_LIBVO_TDFXVID_AgpMoveFailedOnVPlane "[VO_TDFXVID] AGP move failed on V plane.\n"
+#define MSGTR_LIBVO_TDFXVID_WhatsThatForAFormat "[VO_TDFXVID] What's that for a format 0x%x.\n"
+
+// libvo/vo_tga.c
+
+#define MSGTR_LIBVO_TGA_UnknownSubdevice "[VO_TGA] Unknown subdevice: %s.\n"
+
+// libvo/vo_vesa.c
+
+#define MSGTR_LIBVO_VESA_FatalErrorOccurred "[VO_VESA] Fatal error occurred! Can't continue.\n"
+#define MSGTR_LIBVO_VESA_UnkownSubdevice "[VO_VESA] Unknown subdevice: '%s'.\n"
+#define MSGTR_LIBVO_VESA_YourHaveTooSmallSizeOfVideoMemory "[VO_VESA] Your have too small size of video memory for this mode:\n[VO_VESA] Requires: %08lX exists: %08lX.\n"
+#define MSGTR_LIBVO_VESA_YouHaveToSpecifyTheCapabilitiesOfTheMonitor "[VO_VESA] You have to specify the capabilities of the monitor. Not changing refresh rate.\n"
+#define MSGTR_LIBVO_VESA_UnableToFitTheMode "[VO_VESA] Unable to fit the mode into monitor's limitation. Not changing refresh rate.\n"
+#define MSGTR_LIBVO_VESA_DetectedInternalFatalError "[VO_VESA] Detected internal fatal error: init is called before preinit.\n"
+#define MSGTR_LIBVO_VESA_SwitchFlipIsNotSupported "[VO_VESA] Switch -flip is not supported.\n"
+#define MSGTR_LIBVO_VESA_PossibleReasonNoVbe2BiosFound "[VO_VESA] Possible reason: No VBE2 BIOS found.\n"
+#define MSGTR_LIBVO_VESA_FoundVesaVbeBiosVersion "[VO_VESA] Found VESA VBE BIOS Version %x.%x Revision: %x.\n"
+#define MSGTR_LIBVO_VESA_VideoMemory "[VO_VESA] Video memory: %u Kb.\n"
+#define MSGTR_LIBVO_VESA_Capabilites "[VO_VESA] VESA Capabilities: %s %s %s %s %s.\n"
+#define MSGTR_LIBVO_VESA_BelowWillBePrintedOemInfo "[VO_VESA] !!! Below will be printed OEM info. !!!\n"
+#define MSGTR_LIBVO_VESA_YouShouldSee5OemRelatedLines "[VO_VESA] You should see 5 OEM related lines below; else, you've broken vm86.\n"
+#define MSGTR_LIBVO_VESA_OemInfo "[VO_VESA] OEM info: %s.\n"
+#define MSGTR_LIBVO_VESA_OemRevision "[VO_VESA] OEM Revision: %x.\n"
+#define MSGTR_LIBVO_VESA_OemVendor "[VO_VESA] OEM vendor: %s.\n"
+#define MSGTR_LIBVO_VESA_OemProductName "[VO_VESA] OEM Product Name: %s.\n"
+#define MSGTR_LIBVO_VESA_OemProductRev "[VO_VESA] OEM Product Rev: %s.\n"
+#define MSGTR_LIBVO_VESA_Hint "[VO_VESA] Hint: To get workable TV-Out you should have plugged tv-connector in.\n"\
+"[VO_VESA] before booting PC since VESA BIOS initializes itself only during POST.\n"
+#define MSGTR_LIBVO_VESA_UsingVesaMode "[VO_VESA] Using VESA mode (%u) = %x [%ux%u@%u]\n"
+#define MSGTR_LIBVO_VESA_CantInitializeSwscaler "[VO_VESA] Can't initialize SwScaler.\n"
+#define MSGTR_LIBVO_VESA_CantUseDga "[VO_VESA] Can't use DGA. Force bank switching mode. :(\n"
+#define MSGTR_LIBVO_VESA_UsingDga "[VO_VESA] Using DGA (physical resources: %08lXh, %08lXh)"
+#define MSGTR_LIBVO_VESA_CantUseDoubleBuffering "[VO_VESA] Can't use double buffering: not enough video memory.\n"
+#define MSGTR_LIBVO_VESA_CantFindNeitherDga "[VO_VESA] Can find neither DGA nor relocatable window's frame.\n"
+#define MSGTR_LIBVO_VESA_YouveForcedDga "[VO_VESA] You've forced DGA. Exiting\n"
+#define MSGTR_LIBVO_VESA_CantFindValidWindowAddress "[VO_VESA] Can't find valid window address.\n"
+#define MSGTR_LIBVO_VESA_UsingBankSwitchingMode "[VO_VESA] Using bank switching mode (physical resources: %08lXh, %08lXh).\n"
+#define MSGTR_LIBVO_VESA_CantAllocateTemporaryBuffer "[VO_VESA] Can't allocate temporary buffer.\n"
+#define MSGTR_LIBVO_VESA_SorryUnsupportedMode "[VO_VESA] Sorry, unsupported mode -- try -x 640 -zoom.\n"
+#define MSGTR_LIBVO_VESA_OhYouReallyHavePictureOnTv "[VO_VESA] Oh you really have picture on TV!\n"
+#define MSGTR_LIBVO_VESA_CantInitialozeLinuxVideoOverlay "[VO_VESA] Can't initialize Linux Video Overlay.\n"
+#define MSGTR_LIBVO_VESA_UsingVideoOverlay "[VO_VESA] Using video overlay: %s.\n"
+#define MSGTR_LIBVO_VESA_CantInitializeVidixDriver "[VO_VESA] Can't initialize VIDIX driver.\n"
+#define MSGTR_LIBVO_VESA_UsingVidix "[VO_VESA] Using VIDIX.\n"
+#define MSGTR_LIBVO_VESA_CantFindModeFor "[VO_VESA] Can't find mode for: %ux%u@%u.\n"
+#define MSGTR_LIBVO_VESA_InitializationComplete "[VO_VESA] VESA initialization complete.\n"
+
+// libvo/vo_x11.c
+
+#define MSGTR_LIBVO_X11_DrawFrameCalled "[VO_X11] draw_frame() called!!!!!!\n"
+
+// libvo/vo_xv.c
+
+#define MSGTR_LIBVO_XV_DrawFrameCalled "[VO_XV] draw_frame() called!!!!!!\n"
--- a/libvo/aspect.c	Sun Apr 23 23:28:46 2006 +0000
+++ b/libvo/aspect.c	Mon Apr 24 04:23:53 2006 +0000
@@ -1,9 +1,9 @@
 /* Stuff for correct aspect scaling. */
 #include "aspect.h"
 #include "geometry.h"
-#ifndef ASPECT_TEST
+//#ifndef ASPECT_TEST
 #include "mp_msg.h"
-#endif
+//#endif
 
 //#define ASPECT_DEBUG
 
@@ -105,7 +105,7 @@
 #ifndef ASPECT_TEST
       mp_msg(MSGT_VO,MSGL_WARN,"aspect: Warning: no suitable new res found!\n");
 #else
-      printf("error: no new size found that fits into res!\n");
+      mp_msg(MSGT_VO,MSGL_WARN,"error: no new size found that fits into res!\n");
 #endif
     }
   }
--- a/libvo/mga_common.c	Sun Apr 23 23:28:46 2006 +0000
+++ b/libvo/mga_common.c	Mon Apr 24 04:23:53 2006 +0000
@@ -5,6 +5,7 @@
 #include "postproc/rgb2rgb.h"
 #include "libmpcodecs/vf_scale.h"
 #include "mp_msg.h"
+#include "help_mp.h"
 
 // mga_vid drawing functions
 static void set_window( void );		/* forward declaration to kill warnings */
@@ -138,7 +139,7 @@
 static int
 draw_frame(uint8_t *src[])
 {
-    printf("!!! mga::draw_frame() called !!!\n");
+    mp_msg(MSGT_VO,MSGL_WARN,"!!! mga::draw_frame() called !!!\n");
     return 0;
 }
 
@@ -226,7 +227,7 @@
 	mga_vid_config.x_org=(vo_screenwidth-w)/2;
 	mga_vid_config.y_org=(vo_screenheight-h)/2;
 	if ( ioctl( f,MGA_VID_CONFIG,&mga_vid_config ) )
-		printf( "Error in mga_vid_config ioctl (wrong mga_vid.o version?)" );
+		mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_MGA_ErrorInConfigIoctl );
 }
 
 static int control(uint32_t request, void *data, ...)
@@ -248,7 +249,7 @@
 
      if (ioctl(f,MGA_VID_GET_LUMA,&prev)) {
 	perror("Error in mga_vid_config ioctl()");
-        printf("Could not get luma values from the kernel module!\n");
+    mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_MGA_CouldNotGetLumaValuesFromTheKernelModule);    
 	return VO_FALSE;
      }
 
@@ -269,7 +270,7 @@
      
      if (ioctl(f,MGA_VID_SET_LUMA,luma)) {
 	perror("Error in mga_vid_config ioctl()");
-        printf("Could not set luma values in the kernel module!\n");
+        mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_MGA_CouldNotSetLumaValuesFromTheKernelModule);
 	return VO_FALSE;
      }
 
@@ -287,7 +288,7 @@
 
      if (ioctl(f,MGA_VID_GET_LUMA,&luma)) {
 	perror("Error in mga_vid_config ioctl()");
-        printf("Could not get luma values from the kernel module!\n");
+        mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_MGA_CouldNotGetLumaValuesFromTheKernelModule);
 	return VO_FALSE;
      }
      
@@ -310,7 +311,7 @@
     if (vo_screenwidth && vo_screenheight)
 	mga_fullscreen();
     else
-	printf("Screen width/height unknown!\n");
+	mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_MGA_ScreenWidthHeightUnknown);
     return VO_TRUE;
   case VOCTRL_GET_PANSCAN:
       if ( !vo_fs ) return VO_FALSE;
@@ -367,7 +368,7 @@
 	    mga_vid_config.frame_size = ((width + 31) & ~31) * height * 2;
             mga_vid_config.format=MGA_VID_FORMAT_UYVY; break;
         default: 
-            printf("mga: invalid output format %0X\n",format);
+            mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_MGA_InvalidOutputFormat,format);
             return (-1);
         }
 
@@ -385,11 +386,11 @@
 	if (ioctl(f,MGA_VID_CONFIG,&mga_vid_config))
 	{
 		perror("Error in mga_vid_config ioctl()");
-                printf("Your mga_vid driver version is incompatible with this MPlayer version!\n");
+                mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_MGA_IncompatibleDriverVersion);
 		return -1;
 	}
 	
-	printf("[mga] Using %d buffers.\n",mga_vid_config.num_frames);
+	mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_MGA_UsingBuffers,mga_vid_config.num_frames);
 
 	frames[0] = (char*)mmap(0,mga_vid_config.frame_size*mga_vid_config.num_frames,PROT_WRITE,MAP_SHARED,f,0);
 	frames[1] = frames[0] + 1*mga_vid_config.frame_size;
@@ -427,7 +428,7 @@
 	if(f == -1)
 	{
 		perror("open");
-		printf("vo_mga: Couldn't open %s\n",devname);
+		mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_MGA_CouldntOpen,devname);
 		return(-1);
 	}
 
--- a/libvo/vesa_lvo.c	Sun Apr 23 23:28:46 2006 +0000
+++ b/libvo/vesa_lvo.c	Mon Apr 24 04:23:53 2006 +0000
@@ -21,6 +21,7 @@
 
 #include "config.h"
 #include "mp_msg.h"
+#include "help_mp.h"
 
 #include "vesa_lvo.h"
 #include "img_format.h"
@@ -51,15 +52,14 @@
 
 int vlvo_preinit(const char *drvname)
 {
-  printf("vesa_lvo: This branch is no longer supported.\n"
-	 "vesa_lvo: Please use -vo vesa:vidix instead\n");
+  mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_VESA_ThisBranchIsNoLongerSupported);
   return -1;
   if( mp_msg_test(MSGT_VO,MSGL_DBG2) ) {
-    printf("vesa_lvo: vlvo_preinit(%s) was called\n",drvname); }
+    mp_msg(MSGT_VO,MSGL_DBG2, "vesa_lvo: vlvo_preinit(%s) was called\n",drvname);}
 	lvo_handler = open(drvname,O_RDWR);
 	if(lvo_handler == -1)
 	{
-		printf("vesa_lvo: Couldn't open '%s'\n",drvname);
+ 		mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_VESA_CouldntOpen,drvname);
 		return -1;
 	}
 	/* we are able to tune up this stuff depend on fourcc format */
@@ -76,11 +76,10 @@
 		   unsigned dst_height,unsigned format,unsigned dest_bpp)
 {
   size_t i,awidth;
-  printf("vesa_lvo: This branch is no longer supported.\n"
-	 "vesa_lvo: Please use -vo vesa:vidix instead\n");
+  mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_VESA_ThisBranchIsNoLongerSupported);
   return -1;
   if( mp_msg_test(MSGT_VO,MSGL_DBG2) ) {
-    printf("vesa_lvo: vlvo_init() was called\n"); }
+    mp_msg(MSGT_VO,MSGL_DBG2, "vesa_lvo: vlvo_init() was called\n");}
 	image_width = src_width;
 	image_height = src_height;
 	mga_vid_config.version=MGA_VID_VERSION;
@@ -116,7 +115,7 @@
 	    mga_vid_config.frame_size = awidth*src_height*4;
 	    break;
         default:
-            printf("vesa_lvo: invalid output format %s(%0X)\n",vo_format_name(format),format);
+            mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_VESA_InvalidOutputFormat,vo_format_name(format),format);
             return -1;
         }
         mga_vid_config.colkey_on=0;
@@ -130,7 +129,7 @@
 	if (ioctl(lvo_handler,MGA_VID_CONFIG,&mga_vid_config))
 	{
 		perror("vesa_lvo: Error in mga_vid_config ioctl()");
-                printf("vesa_lvo: Your fb_vid driver version is incompatible with this MPlayer version!\n");
+                mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_VESA_IncompatibleDriverVersion);
 		return -1;
 	}
 	ioctl(lvo_handler,MGA_VID_ON,0);
@@ -149,7 +148,7 @@
 void vlvo_term( void )
 {
   if( mp_msg_test(MSGT_VO,MSGL_DBG2) ) {
-    printf("vesa_lvo: vlvo_term() was called\n"); }
+    mp_msg(MSGT_VO,MSGL_DBG2, "vesa_lvo: vlvo_term() was called\n");}
 	ioctl( lvo_handler,MGA_VID_OFF,0 );
 	munmap(frames[0],mga_vid_config.frame_size*mga_vid_config.num_frames);
 	if(lvo_handler != -1) close(lvo_handler);
@@ -198,7 +197,7 @@
 uint32_t vlvo_draw_slice(uint8_t *image[], int stride[], int w,int h,int x,int y)
 {
  if( mp_msg_test(MSGT_VO,MSGL_DBG2) ) {
-   printf("vesa_lvo: vlvo_draw_slice() was called\n"); }
+   mp_msg(MSGT_VO,MSGL_DBG2, "vesa_lvo: vlvo_draw_slice() was called\n");}
     if(src_format == IMGFMT_YV12 || src_format == IMGFMT_I420 || src_format == IMGFMT_IYUV)
 	vlvo_draw_slice_420(image,stride,w,h,x,y);
     else
@@ -218,14 +217,14 @@
 /* Note it's very strange but sometime for YUY2 draw_frame is called */
   memcpy(lvo_mem,image[0],mga_vid_config.frame_size);
   if( mp_msg_test(MSGT_VO,MSGL_DBG2) ) {
-    printf("vesa_lvo: vlvo_draw_frame() was called\n"); }
+    mp_msg(MSGT_VO,MSGL_DBG2, "vesa_lvo: vlvo_flip_page() was called\n");}
   return 0;
 }
 
 void     vlvo_flip_page(void)
 {
   if( mp_msg_test(MSGT_VO,MSGL_DBG2) ) {
-    printf("vesa_lvo: vlvo_flip_page() was called\n"); }
+    mp_msg(MSGT_VO,MSGL_DBG2, "vesa_lvo: vlvo_draw_osd() was called\n");}
   if(vo_doublebuffering)
   {
 	ioctl(lvo_handler,MGA_VID_FSEL,&next_frame);
@@ -284,7 +283,7 @@
 void     vlvo_draw_osd(void)
 {
   if( mp_msg_test(MSGT_VO,MSGL_DBG2) ) {
-    printf("vesa_lvo: vlvo_draw_osd() was called\n"); }
+    mp_msg(MSGT_VO,MSGL_DBG2,"vesa_lvo: vlvo_draw_osd() was called\n"); }
   /* TODO: hw support */
 #if 0
 /* disable this stuff until new fbvid.h interface will be implemented
@@ -297,7 +296,7 @@
 uint32_t vlvo_query_info(uint32_t format)
 {
   if( mp_msg_test(MSGT_VO,MSGL_DBG2) ) {
-    printf("vesa_lvo: query_format was called: %x (%s)\n",format,vo_format_name(format)); }
+    mp_msg(MSGT_VO,MSGL_DBG2, "vesa_lvo: query_format was called: %x (%s)\n",format,vo_format_name(format)); }
   return VFCAP_CSP_SUPPORTED;
 }
 
--- a/libvo/video_out.c	Sun Apr 23 23:28:46 2006 +0000
+++ b/libvo/video_out.c	Mon Apr 24 04:23:53 2006 +0000
@@ -267,9 +267,9 @@
         mp_msg(MSGT_GLOBAL, MSGL_INFO, "ID_VIDEO_OUTPUTS\n");
       while (video_out_drivers[i]) {
         const vo_info_t *info = video_out_drivers[i++]->info;
-      	printf("\t%s\t%s\n", info->short_name, info->name);
+      	mp_msg(MSGT_GLOBAL, MSGL_INFO,"\t%s\t%s\n", info->short_name, info->name);
       }
-      printf("\n");
+      mp_msg(MSGT_GLOBAL, MSGL_INFO,"\n");
 }
 
 vo_functions_t* init_best_video_out(char** vo_list){
@@ -354,7 +354,7 @@
 		if (*s == ',')
 			goto out_err;
 		if (!(r = (range_t *) realloc(r, sizeof(*r) * (i + 2)))) {
-			printf("can't realloc 'r'\n");
+			mp_msg(MSGT_GLOBAL, MSGL_WARN,"can't realloc 'r'\n");
 			return NULL;
 		}
 		tmp_min = strtod(s, &endptr);
--- a/libvo/vo_3dfx.c	Sun Apr 23 23:28:46 2006 +0000
+++ b/libvo/vo_3dfx.c	Mon Apr 24 04:23:53 2006 +0000
@@ -27,6 +27,8 @@
 #include <string.h>
 
 #include "config.h"
+#include "mp_msg.h"
+#include "help_mp.h"
 #include "video_out.h"
 #include "video_out_internal.h"
 
@@ -167,12 +169,12 @@
 	bpp = attribs.depth;
 	if (bpp != 16) 
 	{
-		printf("Only 16bpp supported!");
+		mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_3DFX_Only16BppSupported);
 		exit(-1);
 	}
 
 	XMatchVisualInfo(display,screen,bpp,TrueColor,&vinfo);
-	printf("visual id is  %lx\n",vinfo.visualid);
+	mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_3DFX_VisualIdIs,vinfo.visualid);
 
 	theCmap = XCreateColormap(display, RootWindow(display,screen),
 			vinfo.visual, AllocNone);
@@ -333,7 +335,7 @@
 	// Open driver device
 	if ( fd == -1 ) 
 	{
-		printf("Device not opened /dev/3dfx\n");
+		mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_3DFX_UnableToOpenDevice);
 		return -1;
 	}
 
@@ -352,7 +354,7 @@
 	data.device = 0;
 	if ((retval = ioctl(fd,_IOC(_IOC_READ,'3',3,0),&data)) < 0) 
 	{
-		printf("Error: %d\n",retval);
+		mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_3DFX_Error,retval);
 		return -1;
 	}
 
@@ -363,7 +365,7 @@
 	data.device = 0;
 	if ((retval = ioctl(fd,_IOC(_IOC_READ,'3',3,0),&data)) < 0) 
 	{
-		printf("Error: %d\n",retval);
+		mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_3DFX_Error,retval);
 		return -1;
 	}
 
@@ -372,7 +374,7 @@
 	memBase1 = mmap(0,3*page_space,PROT_READ | PROT_WRITE,MAP_SHARED,fd,baseAddr1);
 	if (memBase0 == (uint32_t *) 0xFFFFFFFF || memBase1 == (uint32_t *) 0xFFFFFFFF) 
 	{
-		printf("Couldn't map 3dfx memory areas: %p,%p,%d\n", 
+		mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_3DFX_CouldntMapMemoryArea, 
 		 memBase0,memBase1,errno);
 	}  
 
@@ -411,7 +413,7 @@
 
 	atexit(restore);
 
-	printf("(display) 3dfx initialized %p\n",memBase1);
+	mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_3DFX_DisplayInitialized,memBase1);
 	return 0;
 }
 
@@ -483,13 +485,13 @@
 {
     if ( (fd = open("/dev/3dfx",O_RDWR) ) == -1) 
     {
-        printf("Couldn't open /dev/3dfx\n");
+        mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_3DFX_UnableToOpenDevice);
         return -1;
     }
                                                         
     if(arg) 
     {
-	printf("vo_3dfx: Unknown subdevice: %s\n",arg);
+	mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_3DFX_UnknownSubdevice,arg);
 	return ENOSYS;
     }
     return 0;
--- a/libvo/vo_dxr3.c	Sun Apr 23 23:28:46 2006 +0000
+++ b/libvo/vo_dxr3.c	Mon Apr 24 04:23:53 2006 +0000
@@ -130,6 +130,8 @@
 #include <math.h>
 
 #include "config.h"
+#include "mp_msg.h"
+#include "help_mp.h"
 #ifdef HAVE_MALLOC_H
 #include <malloc.h>
 #endif
@@ -281,7 +283,7 @@
 		return VO_TRUE;
 	case VOCTRL_SET_SPU_PALETTE:
 		if (ioctl(fd_spu, EM8300_IOCTL_SPU_SETPALETTE, data) < 0) {
-			printf("VO: [dxr3] Unable to load new SPU palette!\n");
+			mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_DXR3_UnableToLoadNewSPUPalette);
 			return VO_ERROR;
 		}
 		return VO_TRUE;
@@ -311,7 +313,7 @@
 		if (dxr3_prebuf) {
 			ioval = EM8300_PLAYMODE_PLAY;
 			if (ioctl(fd_control, EM8300_IOCTL_SET_PLAYMODE, &ioval) < 0) {
-				printf("VO: [dxr3] Unable to set playmode!\n");
+				mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_DXR3_UnableToSetPlaymode);
 			}
 		}
 		return VO_TRUE;
@@ -319,7 +321,7 @@
 		if (dxr3_prebuf) {
 			ioval = EM8300_PLAYMODE_PAUSED;
 			if (ioctl(fd_control, EM8300_IOCTL_SET_PLAYMODE, &ioval) < 0) {
-				printf("VO: [dxr3] Unable to set playmode!\n");
+				mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_DXR3_UnableToSetPlaymode);
 			}
 		}
 		return VO_TRUE;
@@ -425,7 +427,7 @@
 	/* up in a lockup */
 	ioval = EM8300_SPUMODE_ON;
 	if (ioctl(fd_control, EM8300_IOCTL_SET_SPUMODE, &ioval) < 0) {
-		printf("VO: [dxr3] Unable to set subpicture mode!\n");
+		mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_DXR3_UnableToSetSubpictureMode);
 		uninit();
 		return -1;
 	}
@@ -433,7 +435,7 @@
 	/* Set the playmode to play (just in case another app has set it to something else) */
 	ioval = EM8300_PLAYMODE_PLAY;
 	if (ioctl(fd_control, EM8300_IOCTL_SET_PLAYMODE, &ioval) < 0) {
-		printf("VO: [dxr3] Unable to set playmode!\n");
+		mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_DXR3_UnableToSetPlaymode);
 	}
 	
 	/* Start em8300 prebuffering and sync engine */
@@ -465,7 +467,7 @@
 	monitor_aspect = (float) width / (float) height;
 
 	if (ioctl(fd_control, EM8300_IOCTL_GET_VIDEOMODE, &old_vmode) < 0) {
-		printf("VO: [dxr3] Unable to get TV norm!\n");
+		mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_DXR3_UnableToGetTVNorm);
 		old_vmode = -1;
 	}
 	
@@ -484,8 +486,8 @@
 			    ioval = EM8300_VIDEOMODE_PAL;
 			}
 			
-			printf("VO: [dxr3] Auto-selected TV norm by frame rate: ");
-			ioval == EM8300_VIDEOMODE_PAL60 ? printf("PAL-60") : printf("PAL");
+			mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_DXR3_AutoSelectedTVNormByFrameRate);
+			ioval == EM8300_VIDEOMODE_PAL60 ? mp_msg(MSGT_VO,MSGL_INFO, "PAL-60") : mp_msg(MSGT_VO,MSGL_INFO, "PAL");
 			printf(".\n"); 
 		} else {
 			if (vo_fps > 28) {
@@ -494,14 +496,14 @@
 			    ioval = EM8300_VIDEOMODE_PAL;
 			}
 
-			printf("VO: [dxr3] Auto-selected TV norm by frame rate: ");
-			ioval == EM8300_VIDEOMODE_NTSC ? printf("NTSC") : printf("PAL");
+			mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_DXR3_AutoSelectedTVNormByFrameRate);
+			ioval == EM8300_VIDEOMODE_NTSC ? mp_msg(MSGT_VO,MSGL_INFO, "NTSC") : mp_msg(MSGT_VO,MSGL_INFO, "PAL");
 			printf(".\n"); 
 	    }
 	
 		if (old_vmode != ioval) {
 	    	if (ioctl(fd_control, EM8300_IOCTL_SET_VIDEOMODE, &ioval) < 0) {
-				printf("VO: [dxr3] Unable to set TV norm!\n");
+				mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_DXR3_UnableToSetTVNorm);
 	    	}
 		}
 	}
@@ -512,10 +514,10 @@
 	aspect_save_prescale(d_width, d_height);
 	ioctl(fd_control, EM8300_IOCTL_GET_VIDEOMODE, &ioval);
 	if (ioval == EM8300_VIDEOMODE_NTSC) {
-		printf("VO: [dxr3] Setting up for NTSC.\n");
+		mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_DXR3_SettingUpForNTSC);
 		aspect_save_screenres(352, 240);
 	} else {
-		printf("VO: [dxr3] Setting up for PAL/SECAM.\n");
+		mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_DXR3_SettingUpForPALSECAM);
 		aspect_save_screenres(352, 288);
 	}
 	aspect(&s_width, &s_height, A_ZOOM);
@@ -528,10 +530,10 @@
 	tmp2 = abs(d_height - (int) (d_width / 2.35));
 	if (tmp1 < tmp2) {
 		ioval = EM8300_ASPECTRATIO_4_3;
-		printf("VO: [dxr3] Setting aspect ratio to 4:3.\n");
+		mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_DXR3_SettingAspectRatioTo43);
 	} else {
 		ioval = EM8300_ASPECTRATIO_16_9;
-		printf("VO: [dxr3] Setting aspect ratio to 16:9.\n");
+		mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_DXR3_SettingAspectRatioTo169);
 	}
 	ioctl(fd_control, EM8300_IOCTL_SET_ASPECTRATIO, &ioval);
 
@@ -550,20 +552,20 @@
 
 	osdpicbuf = calloc( 1,s_width * s_height);
 	if (osdpicbuf == NULL) {
-		printf("VO: [dxr3] Out of memory.\n");
+		mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_DXR3_OutOfMemory);
 		return -1;
 	}
 	spued = (encodedata *) malloc(sizeof(encodedata));
 	if (spued == NULL) {
 	        free( osdpicbuf );
-		printf("VO: [dxr3] Out of memory.\n");
+		mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_DXR3_OutOfMemory);
 		return -1;
 	}
 	spubuf = (encodedata *) malloc(sizeof(encodedata));
 	if (spubuf == NULL) {
 	        free( osdpicbuf );
 		free( spued );
-		printf("VO: [dxr3] Out of memory.\n");
+		mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_DXR3_OutOfMemory);
 		return -1;
 	}
 	osd_w = s_width;
@@ -651,13 +653,13 @@
 				   ((key_color.blue >> (16 - blue_prec)) << blue_shift));
 		key_color.flags = DoRed | DoGreen | DoBlue;
 		if (!XAllocColor(mDisplay, cmap, &key_color)) {
-			printf("VO: [dxr3] Unable to allocate keycolor!\n");
+			mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_DXR3_UnableToAllocateKeycolor);
 			return -1;
 		}
 		
 		acq_color = ((key_color.red / 256) << 16) | ((key_color.green / 256) << 8) | key_color.blue;
 		if (key_color.pixel != KEY_COLOR) {
-			printf("VO: [dxr3] Unable to allocate exact keycolor, using closest match (0x%lx).\n", key_color.pixel);	
+			mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_DXR3_UnableToAllocateExactKeycolor, key_color.pixel);	
 		}
 		
 		/* Set keycolor and activate overlay */
@@ -814,7 +816,7 @@
 
 static void uninit(void)
 {
-	printf("VO: [dxr3] Uninitializing.\n");
+	mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_DXR3_Uninitializing);
 #ifdef HAVE_X11
 	if (dxr3_overlay) {
 		overlay_set_mode(overlay_data, EM8300_OVERLAY_MODE_OFF);
@@ -832,7 +834,7 @@
 #endif
 	if (old_vmode != -1) {
 		if (ioctl(fd_control, EM8300_IOCTL_SET_VIDEOMODE, &old_vmode) < 0) {
-			printf("VO: [dxr3] Failed restoring TV norm!\n");
+			mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_DXR3_FailedRestoringTVNorm);
 		}
 	}
 	
@@ -867,49 +869,49 @@
 	/* Parse commandline */
 	while (arg) {
 		if (!strncmp("prebuf", arg, 6) && !dxr3_prebuf) {
-			printf("VO: [dxr3] Enabling prebuffering.\n");
+			mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_DXR3_EnablingPrebuffering);
 			dxr3_prebuf = 1;
 		} else if (!strncmp("sync", arg, 4) && !dxr3_newsync) {
-			printf("VO: [dxr3] Using new sync engine.\n");
+			mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_DXR3_UsingNewSyncEngine);
 			dxr3_newsync = 1;
 		} else if (!strncmp("overlay", arg, 7) && !dxr3_overlay) {
 #ifdef HAVE_X11
-			printf("VO: [dxr3] Using overlay.\n");
+			mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_DXR3_UsingOverlay);
 			dxr3_overlay = 1;
 #else
-			printf("VO: [dxr3] Error: You need to compile mplayer with x11 libraries and headers installed to use overlay.\n");
+			mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_DXR3_ErrorYouNeedToCompileMplayerWithX11);
 #endif
 		} else if (!strncmp("norm=", arg, 5)) {
 			arg += 5;
 			// dxr3_norm is 0 (-> don't change norm) by default
 			// but maybe someone changes this in the future
 
-			printf("VO: [dxr3] Will set TV norm to: ");
+			mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_DXR3_WillSetTVNormTo);
 			
 			if (*arg == '5') {
 			    dxr3_norm = 5;
-			    printf("NTSC");
+			    mp_msg(MSGT_VO,MSGL_INFO, "NTSC");
 			} else if (*arg == '4') {
 			    dxr3_norm = 4;
-			    printf("PAL-60");
+			    mp_msg(MSGT_VO,MSGL_INFO, "PAL-60");
 			} else if (*arg == '3') {
 			    dxr3_norm = 3;
-			    printf("PAL");
+			    mp_msg(MSGT_VO,MSGL_INFO, "PAL");
 			} else if (*arg == '2') {
 			    dxr3_norm = 2;
-			    printf("Auto-adjust to movie frame rate (PAL/PAL-60)");
+			    mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_DXR3_AutoAdjustToMovieFrameRatePALPAL60);
 			} else if (*arg == '1') {
 			    dxr3_norm = 1;
-			    printf("Auto-adjust to movie frame rate (PAL/NTSC)");
+			    mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_DXR3_AutoAdjustToMovieFrameRatePALNTSC);
 			} else if (*arg == '0') {
 			    dxr3_norm = 0;
-			    printf("Use current norm");
+			    mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_DXR3_UseCurrentNorm);
 			} else {
 			    dxr3_norm = 0;
-			    printf("Unknown norm supplied. Use current norm");
+			    mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_DXR3_UseUnknownNormSuppliedCurrentNorm);
 			}
 			
-			printf(".\n");
+			mp_msg(MSGT_VO,MSGL_INFO, ".\n");
 		} else if (arg[0] == '0' || arg[0] == '1' || arg[0] == '2' || arg[0] == '3') {
 			dxr3_device_num = arg[0];
 		}
@@ -926,15 +928,15 @@
 	fd_control = open(devname, fdflags);
 	if (fd_control < 1) {
 		/* Fall back to old naming scheme */
-		printf("VO: [dxr3] Error opening %s for writing, trying /dev/em8300 instead.\n", devname);
+		mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_DXR3_ErrorOpeningForWritingTrying, devname);
 		sprintf(devname, "/dev/em8300");
 		fd_control = open(devname, fdflags);
 		if (fd_control < 1) {
-			printf("VO: [dxr3] Error opening /dev/em8300 for writing as well!\nBailing.\n");
+			mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_DXR3_ErrorOpeningForWritingAsWell);
 			return -1;
 		}
 	} else {
-		printf("VO: [dxr3] Opened %s.\n", devname);
+		mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_DXR3_Opened, devname);
 	}
 
 	/* Open the video interface */
@@ -942,16 +944,16 @@
 	fd_video = open(devname, fdflags);
 	if (fd_video < 0) {
 		/* Fall back to old naming scheme */
-		printf("VO: [dxr3] Error opening %s for writing, trying /dev/em8300_mv instead.\n", devname);
+		mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_DXR3_ErrorOpeningForWritingTryingMV, devname);
 		sprintf(devname, "/dev/em8300_mv");
 		fd_video = open(devname, fdflags);
 		if (fd_video < 0) {
-			printf("VO: [dxr3] Error opening /dev/em8300_mv for writing as well!\nBailing.\n");
+			mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_DXR3_ErrorOpeningForWritingAsWellMV);
 			uninit();
 			return -1;
 		}
 	} else {
-		printf("VO: [dxr3] Opened %s.\n", devname);
+		mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_DXR3_Opened, devname);
 	}
 	strcpy(fdv_name, devname);
 	
@@ -960,16 +962,16 @@
 	fd_spu = open(devname, fdflags);
 	if (fd_spu < 0) {
 		/* Fall back to old naming scheme */
-		printf("VO: [dxr3] Error opening %s for writing, trying /dev/em8300_sp instead.\n", devname);
+		mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_DXR3_ErrorOpeningForWritingTryingSP, devname);
 		sprintf(devname, "/dev/em8300_sp");
 		fd_spu = open(devname, fdflags);
 		if (fd_spu < 0) {
-			printf("VO: [dxr3] Error opening /dev/em8300_sp for writing as well!\nBailing.\n");
+			mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_DXR3_ErrorOpeningForWritingAsWellSP);
 			uninit();
 			return -1;
 		}
 	} else {
-		printf("VO: [dxr3] Opened %s.\n", devname);
+		mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_DXR3_Opened, devname);
 	}
 	strcpy(fds_name, devname);
 	
@@ -986,7 +988,7 @@
 		
 		dpy = XOpenDisplay(NULL);
 	    	if (!dpy) {
-			printf("VO: [dxr3] Unable to open display during overlay hack setup!\n");
+			mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_DXR3_UnableToOpenDisplayDuringHackSetup);
 			return -1;
 		}
 		XGetWindowAttributes(dpy, RootWindow(dpy, DefaultScreen(dpy)), &attribs);
@@ -1006,7 +1008,7 @@
 		if (!use_gui) {
 #endif
 			if (!vo_init()) {
-				printf("VO: [dxr3] Unable to init x11!\n");
+				mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_DXR3_UnableToInitX11);
 				return -1;
 			}
 #ifdef HAVE_NEW_GUI
@@ -1045,7 +1047,7 @@
     attr.value = value;
     if (ioctl(o->dev, EM8300_IOCTL_OVERLAY_SET_ATTRIBUTE, &attr)==-1)
         {
-	     printf("VO: [dxr3] Failed setting overlay attribute.\n");
+	     mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_DXR3_FailedSettingOverlayAttribute);
 	     return -1;
         }
 
@@ -1251,7 +1253,7 @@
    
    if (ioctl(o->dev, EM8300_IOCTL_OVERLAY_SETSCREEN, &scr)==-1)
         {
-            printf("VO: [dxr3] Failed setting overlay screen!\nExiting.\n");
+            mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_DXR3_FailedSettingOverlayScreen);
             return -1;
 	}
    return 0;
@@ -1260,7 +1262,7 @@
 static int overlay_set_mode(overlay_t *o, int mode)
 {
     if (ioctl(o->dev, EM8300_IOCTL_OVERLAY_SETMODE, &mode)==-1) {
-	printf("VO: [dxr3] Failed enabling overlay!\nExiting.\n");
+	mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_DXR3_FailedEnablingOverlay);
 	return -1;
     }
     return 0;
@@ -1276,7 +1278,7 @@
 
     if (ioctl(o->dev, EM8300_IOCTL_OVERLAY_SETWINDOW, &win)==-1)
         {
-            printf("VO: [dxr3] Failed resizing overlay window!\n");
+            mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_DXR3_FailedResizingOverlayWindow);
             return -1;
         }
     return 0;
@@ -1291,7 +1293,7 @@
 
     if (ioctl(o->dev, EM8300_IOCTL_GETBCS, &bcs)==-1)
         {
-            printf("VO: [dxr3] Failed setting overlay bcs!\n");
+            mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_DXR3_FailedSettingOverlayBcs);
             return -1;
         }
     return 0;
@@ -1379,11 +1381,11 @@
     cal.cal_mode = EM8300_OVERLAY_CALMODE_YOFFSET;
     if (ioctl(o->dev, EM8300_IOCTL_OVERLAY_CALIBRATE, &cal))
         {
-	    printf("VO: [dxr3] Failed getting overlay Y-offset values!\nExiting.\n");
+	    mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_DXR3_FailedGettingOverlayYOffsetValues);
 	    return -1;
         }
     o->yoffset = cal.result;
-    printf("Yoffset: %d\n",cal.result);
+    mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_DXR3_YOffset,cal.result);
 
     /* Calibrate X-offset */
 
@@ -1392,11 +1394,11 @@
     cal.cal_mode = EM8300_OVERLAY_CALMODE_XOFFSET;
     if (ioctl(o->dev, EM8300_IOCTL_OVERLAY_CALIBRATE, &cal))
 	{
- 	    printf("VO: [dxr3] Failed getting overlay X-offset values!\nExiting.\n");
+ 	    mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_DXR3_FailedGettingOverlayXOffsetValues);
  	    return -1;
 	}
     o->xoffset = cal.result;
-    printf("Xoffset: %d\n",cal.result);
+    mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_DXR3_XOffset,cal.result);
 
     /* Calibrate X scale correction */
 
@@ -1405,10 +1407,10 @@
     cal.cal_mode = EM8300_OVERLAY_CALMODE_XCORRECTION;
     if (ioctl(o->dev, EM8300_IOCTL_OVERLAY_CALIBRATE, &cal))
 	{
- 	    printf("VO: [dxr3] Failed getting overlay X-scale correction!\nExiting.\n");
+ 	    mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_DXR3_FailedGettingOverlayYScaleCorrection);
  	    return -1;
 	}
-    printf("Xcorrection: %d\n",cal.result);
+    mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_DXR3_XCorrection,cal.result);
     o->xcorr = cal.result;
 
     win.xpos = 10;
@@ -1416,7 +1418,7 @@
     win.width = o->xres-20;
     win.height = o->yres-20;
     if (ioctl(o->dev, EM8300_IOCTL_OVERLAY_SETWINDOW, &win)==-1) {
-	printf("VO: [dxr3] Failed resizing overlay window!\n");
+	mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_DXR3_FailedResizingOverlayWindow);
 	exit(1);
     }
 
@@ -1479,7 +1481,7 @@
 
 static int overlay_signalmode(overlay_t *o, int mode) {
 	if(ioctl(o->dev, EM8300_IOCTL_OVERLAY_SIGNALMODE, &mode) ==-1) {
-	    printf("VO: [dxr3] Failed set signal mix!\n");
+	    mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_DXR3_FailedSetSignalMix);
 	    return -1;
 	}
 	return 0;
--- a/libvo/vo_mga.c	Sun Apr 23 23:28:46 2006 +0000
+++ b/libvo/vo_mga.c	Mon Apr 24 04:23:53 2006 +0000
@@ -7,6 +7,8 @@
 #include <string.h>
 
 #include "config.h"
+#include "mp_msg.h"
+#include "help_mp.h"
 #include "video_out.h"
 #include "video_out_internal.h"
 
@@ -67,7 +69,7 @@
 			aspect(&d_width,&d_height,A_NOZOOM);
 			vo_fs = VO_FALSE;
 		}
-		printf("vo_mga aspect(): resized to %dx%d\n",d_width,d_height);
+		mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_MGA_AspectResized,d_width,d_height);
 	}
 
 	vo_dwidth=d_width; vo_dheight=d_height;
@@ -85,7 +87,7 @@
 
 static void uninit(void)
 {
-    printf("vo: uninit!\n");
+    mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_MGA_Uninit);
     mga_uninit();
 }
 
--- a/libvo/vo_null.c	Sun Apr 23 23:28:46 2006 +0000
+++ b/libvo/vo_null.c	Mon Apr 24 04:23:53 2006 +0000
@@ -26,6 +26,8 @@
 #include <string.h>
 #include <errno.h>
 #include "config.h"
+#include "mp_msg.h"
+#include "help_mp.h"
 #include "video_out.h"
 #include "video_out_internal.h"
 
@@ -91,7 +93,7 @@
 {
     if(arg) 
     {
-	printf("vo_null: Unknown subdevice: %s\n",arg);
+	mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_NULL_UnknownSubdevice,arg);
 	return ENOSYS;
     }
     return 0;
--- a/libvo/vo_png.c	Sun Apr 23 23:28:46 2006 +0000
+++ b/libvo/vo_png.c	Mon Apr 24 04:23:53 2006 +0000
@@ -16,6 +16,8 @@
 
 #include "mp_msg.h"
 #include "config.h"
+#include "mp_msg.h"
+#include "help_mp.h"
 #include "video_out.h"
 #include "video_out_internal.h"
 #include "subopt-helper.h"
@@ -45,13 +47,13 @@
 {
     
 	    if(z_compression == 0) {
-		    printf("PNG Warning: compression level set to 0, compression disabled!\n");
-		    printf("PNG Info: Use -vo png:z=<n> to set compression level from 0 to 9.\n");
-		    printf("PNG Info: (0 = no compression, 1 = fastest, lowest - 9 best, slowest compression)\n");
+ 		    mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_PNG_Warning1);
+ 		    mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_PNG_Warning2);
+ 		    mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_PNG_Warning3);
 	    }	    
     
     if( mp_msg_test(MSGT_VO,MSGL_DBG2) ) {
-        printf("PNG Compression level %i\n", z_compression); }
+        mp_msg(MSGT_VO,MSGL_DBG2, "PNG Compression level %i\n", z_compression); }
 	  	
     return 0;
 }
@@ -72,14 +74,14 @@
    
     if (!png.png_ptr) {
        if( mp_msg_test(MSGT_VO,MSGL_DBG2) ) {
-           printf("PNG Failed to init png pointer\n"); }
+           mp_msg(MSGT_VO,MSGL_DBG2, "PNG Failed to init png pointer\n"); }
        png.status = ERROR;
        return png;
     }   
     
     if (!png.info_ptr) {
        if( mp_msg_test(MSGT_VO,MSGL_DBG2) ) {
-           printf("PNG Failed to init png infopointer\n"); }
+           mp_msg(MSGT_VO,MSGL_DBG2, "PNG Failed to init png infopointer\n"); }
        png_destroy_write_struct(&png.png_ptr,
          (png_infopp)NULL);
        png.status = ERROR;
@@ -88,7 +90,7 @@
     
     if (setjmp(png.png_ptr->jmpbuf)) {
 	if( mp_msg_test(MSGT_VO,MSGL_DBG2) ) {
-            printf("PNG Internal error!\n");}
+            mp_msg(MSGT_VO,MSGL_DBG2, "PNG Internal error!\n"); }
         png_destroy_write_struct(&png.png_ptr, &png.info_ptr);
         fclose(png.fp);
         png.status = ERROR;
@@ -97,13 +99,13 @@
     
     png.fp = fopen (fname, "wb");
     if (png.fp == NULL) {
-	printf("\nPNG Error opening %s for writing!\n", strerror(errno));
+ 	mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_PNG_ErrorOpeningForWriting, strerror(errno));
        	png.status = ERROR;
        	return png;
     }	    
     
     if( mp_msg_test(MSGT_VO,MSGL_DBG2) ) {
-        printf("PNG Init IO\n"); }
+        mp_msg(MSGT_VO,MSGL_DBG2, "PNG Init IO\n"); }
     png_init_io(png.png_ptr, png.fp);
 
     /* set the zlib compression level */
@@ -118,12 +120,12 @@
        PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
     
     if( mp_msg_test(MSGT_VO,MSGL_DBG2) ) {
-        printf("PNG Write Info\n"); }
+        mp_msg(MSGT_VO,MSGL_DBG2, "PNG Write Info\n"); }
     png_write_info(png.png_ptr, png.info_ptr);
     
     if(swapped) {
     	if( mp_msg_test(MSGT_VO,MSGL_DBG2) ) {
-            printf("PNG Set BGR Conversion\n"); }
+            mp_msg(MSGT_VO,MSGL_DBG2, "PNG Set BGR Conversion\n"); }
     	png_set_bgr(png.png_ptr);
     }	
 
@@ -134,11 +136,11 @@
 static uint8_t destroy_png(struct pngdata png) {
 	    
     if( mp_msg_test(MSGT_VO,MSGL_DBG2) ) {
-        printf("PNG Write End\n"); }
+        mp_msg(MSGT_VO,MSGL_DBG2, "PNG Write End\n"); }
     png_write_end(png.png_ptr, png.info_ptr);
 
     if( mp_msg_test(MSGT_VO,MSGL_DBG2) ) {
-        printf("PNG Destroy Write Struct\n"); }
+        mp_msg(MSGT_VO,MSGL_DBG2, "PNG Destroy Write Struct\n"); }
     png_destroy_write_struct(&png.png_ptr, &png.info_ptr);
     
     fclose (png.fp);
@@ -160,12 +162,12 @@
     png = create_png(buf, mpi->w, mpi->h, mpi->flags&MP_IMGFLAG_SWAPPED);
 
     if(png.status){
-	    printf("PNG Error in create_png\n");
+ 	    mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_PNG_ErrorInCreatePng);
 	    return 1;
     }	     
 
     if( mp_msg_test(MSGT_VO,MSGL_DBG2) ) {
-        printf("PNG Creating Row Pointers\n"); }
+        mp_msg(MSGT_VO,MSGL_DBG2, "PNG Creating Row Pointers\n"); }
     for ( k = 0; k < mpi->h; k++ )
 	row_pointers[k] = mpi->planes[0]+mpi->stride[0]*k;
 
@@ -173,7 +175,7 @@
     //png_set_flush(png.png_ptr, nrows);
 
     if( mp_msg_test(MSGT_VO,MSGL_DBG2) ) {
-        printf("PNG Writing Image Data\n"); }
+        mp_msg(MSGT_VO,MSGL_DBG2, "PNG Writing Image Data\n"); }
     png_write_image(png.png_ptr, row_pointers);
 
     destroy_png(png);
--- a/libvo/vo_sdl.c	Sun Apr 23 23:28:46 2006 +0000
+++ b/libvo/vo_sdl.c	Mon Apr 24 04:23:53 2006 +0000
@@ -107,6 +107,8 @@
 
 #include "mp_msg.h"
 #include "config.h"
+#include "mp_msg.h"
+#include "help_mp.h"
 #include "video_out.h"
 #include "video_out_internal.h"
 
@@ -141,7 +143,7 @@
 #ifdef SDL_ENABLE_LOCKS
 #define	SDL_OVR_LOCK(x)        if (SDL_LockYUVOverlay (priv->overlay)) { \
 				if( mp_msg_test(MSGT_VO,MSGL_V) ) { \
-				  printf("SDL: Couldn't lock YUV overlay\n");} \
+ 				  mp_msg(MSGT_VO,MSGL_V, "SDL: Couldn't lock YUV overlay\n"); } \
 				return x; \
 	    		    }
 #define SDL_OVR_UNLOCK      SDL_UnlockYUVOverlay (priv->overlay);
@@ -149,7 +151,7 @@
 #define SDL_SRF_LOCK(srf, x)   if(SDL_MUSTLOCK(srf)) { \
 				if(SDL_LockSurface (srf)) { \
 					if( mp_msg_test(MSGT_VO,MSGL_V) ) { \
-					  printf("SDL: Couldn't lock RGB surface\n"); } \
+ 					  mp_msg(MSGT_VO,MSGL_V, "SDL: Couldn't lock RGB surface\n"); } \
 					return x; \
 				} \
 			    }
@@ -424,7 +426,7 @@
 	/* other default values */
 	#ifdef SDL_NOHWSURFACE
 		if( mp_msg_test(MSGT_VO,MSGL_V) ) {
-			printf("SDL: using software-surface\n"); }
+			mp_msg(MSGT_VO,MSGL_V, "SDL: using software-surface\n"); }
 		priv->sdlflags = SDL_SWSURFACE|SDL_RESIZABLE|SDL_ANYFORMAT;
 		priv->sdlfullflags = SDL_SWSURFACE|SDL_FULLSCREEN|SDL_ANYFORMAT;
 		// XXX:FIXME: ASYNCBLIT should be enabled for SMP systems
@@ -437,7 +439,7 @@
 		}	
 		else {	*/
 			if( mp_msg_test(MSGT_VO,MSGL_V) ) {
-				printf("SDL: using hardware-surface\n"); }
+	 			mp_msg(MSGT_VO,MSGL_V, "SDL: using hardware-surface\n"); }
 			priv->sdlflags = SDL_HWSURFACE|SDL_RESIZABLE/*|SDL_ANYFORMAT*/;
 			priv->sdlfullflags = SDL_HWSURFACE|SDL_FULLSCREEN/*|SDL_ANYFORMAT*/;
 			// XXX:FIXME: ASYNCBLIT should be enabled for SMP systems
@@ -473,7 +475,7 @@
 		 */
 		priv->sdlflags &= ~SDL_HWSURFACE;
 		if ((!SDL_ListModes (vidInfo->vfmt, priv->sdlflags)) && (!priv->fullmodes)) {
-			printf("SDL: Couldn't get any acceptable SDL Mode for output.\n");
+			mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_SDL_CouldntGetAnyAcceptableSDLModeForOutput);
 			return -1;
 		}
 	}
@@ -488,7 +490,7 @@
 	if (priv->mode == YUV && priv->bpp < 16) {
 
 		if( mp_msg_test(MSGT_VO,MSGL_V) )
-                    printf("SDL: Your SDL display target wants to be at a color "
+ 		    mp_msg(MSGT_VO,MSGL_V, "SDL: Your SDL display target wants to be at a color "
                            "depth of (%d), but we need it to be at least 16 "
                            "bits, so we need to emulate 16-bit color. This is "
                            "going to slow things down; you might want to "
@@ -567,7 +569,7 @@
 static SDL_Rect aspect(int srcw, int srch, int dstw, int dsth) {
 	SDL_Rect newres;
 	if( mp_msg_test(MSGT_VO,MSGL_V) ) {
-		printf("SDL Aspect: src: %ix%i dst: %ix%i\n", srcw, srch, dstw, dsth); }
+	 	mp_msg(MSGT_VO,MSGL_V, "SDL Aspect-Destinationres: %ix%i (x: %i, y: %i)\n", newres.w, newres.h, newres.x, newres.y); }
 	newres.h = ((float)dstw / (float)srcw * (float)srch) * ((float)dsth/((float)dstw/(MONITOR_ASPECT)));
 	if(newres.h > dsth) {
 		newres.w = ((float)dsth / (float)newres.h) * dstw;
@@ -582,7 +584,7 @@
 	}
 	
 	if( mp_msg_test(MSGT_VO,MSGL_V) ) {
-		printf("SDL Aspect-Destinationres: %ix%i (x: %i, y: %i)\n", newres.w, newres.h, newres.x, newres.y); }
+		mp_msg(MSGT_VO,MSGL_V, "SDL Mode: %d:  %d x %d\n", i, priv->fullmodes[i]->w, priv->fullmodes[i]->h); }
 
 	return newres;
 }
@@ -658,7 +660,7 @@
         setup_surfaces();
     }
     else
-        printf("set_video_mode: SDL_SetVideoMode failed: %s\n", SDL_GetError());
+        mp_msg(MSGT_VO,MSGL_WARN, "set_video_mode: SDL_SetVideoMode failed: %s\n", SDL_GetError());
 }
 
 static void set_fullmode (int mode) {
@@ -684,7 +686,7 @@
         int i,j,imax;
 		mode = 0; // Default to the biggest mode avaible
 		if ( mp_msg_test(MSGT_VO,MSGL_V) ) for(i=0;priv->fullmodes[i];++i)
-	           printf("SDL Mode: %d:  %d x %d\n", i, priv->fullmodes[i]->w, priv->fullmodes[i]->h);
+ 	           mp_msg(MSGT_VO,MSGL_V, "SDL Mode: %d:  %d x %d\n", i, priv->fullmodes[i]->w, priv->fullmodes[i]->h);
 		for(i = findArrayEnd(priv->fullmodes) - 1; i >=0; i--) {
 		  if( (priv->fullmodes[i]->w >= priv->dstwidth) && 
 		      (priv->fullmodes[i]->h >= priv->dstheight) ) {
@@ -699,7 +701,7 @@
 		    }
 		  }
 		if ( mp_msg_test(MSGT_VO,MSGL_V) ) {
-			printf("SET SDL Mode: %d:  %d x %d\n", mode, priv->fullmodes[mode]->w, priv->fullmodes[mode]->h); }
+			mp_msg(MSGT_VO,MSGL_V, "SET SDL Mode: %d:  %d x %d\n", mode, priv->fullmodes[mode]->w, priv->fullmodes[mode]->h); }
 		priv->fullmode = mode;
         screen_surface_h = priv->fullmodes[mode]->h;
         screen_surface_w = priv->fullmodes[mode]->w;
@@ -758,7 +760,7 @@
         setup_surfaces();
 	}		
     else
-        printf("set_fullmode: SDL_SetVideoMode failed: %s\n", SDL_GetError());
+        mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_SDL_SetVideoModeFailedFull, SDL_GetError());
 }
 
 
@@ -780,7 +782,7 @@
 
     switch(format){
         case IMGFMT_I420:
-            printf("SDL: Mapping I420 to IYUV\n");
+            mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_SDL_MappingI420ToIYUV);
             format = SDL_IYUV_OVERLAY;
 		case IMGFMT_YV12:
 		case IMGFMT_IYUV:
@@ -802,14 +804,14 @@
 			priv->mode = RGB;
 			break;
 		default:
-			printf("SDL: Unsupported image format (0x%X)\n",format);
+ 			mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_SDL_UnsupportedImageFormat,format);
 			return -1;
 	}
 
     if ( vo_config_count ) sdl_close();
 
     if( mp_msg_test(MSGT_VO,MSGL_V) ) {
-      printf("SDL: Using 0x%X (%s) image format\n", format, vo_format_name(format)); }
+      mp_msg(MSGT_VO,MSGL_V, "SDL: Using 0x%X (%s) image format\n", format, vo_format_name(format)); }
     
     if(priv->mode != YUV) {
 		priv->sdlflags |= SDL_ANYFORMAT;
@@ -857,13 +859,13 @@
 //	printf("SDL: Width: %i Height: %i D_Width %i D_Height: %i\n", width, height, d_width, d_height);
 	if(flags&VOFLAG_FLIPPING) {
 		if( mp_msg_test(MSGT_VO,MSGL_V) ) {
-			printf("SDL: using flipped video (only with RGB/BGR/packed YUV)\n"); }
+			mp_msg(MSGT_VO,MSGL_V, "SDL: using flipped video (only with RGB/BGR/packed YUV)\n"); }
 		priv->flip = 1; 
 	}
 	if(flags&VOFLAG_FULLSCREEN) {
 	  	if( mp_msg_test(MSGT_VO,MSGL_V) ) {
-			printf("SDL: setting zoomed fullscreen without modeswitching\n"); }
-		printf("SDL: Info - please use -vm or -zoom to switch to best resolution.\n");
+ 	  	    mp_msg(MSGT_VO,MSGL_V, "SDL: setting zoomed fullscreen without modeswitching\n");}
+ 		    mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_SDL_InfoPleaseUseVmOrZoom);
 		priv->fulltype = VOFLAG_FULLSCREEN;
 		set_fullmode(priv->fullmode);
           	/*if((priv->surface = SDL_SetVideoMode (d_width, d_height, priv->bpp, priv->sdlfullflags)))
@@ -871,7 +873,7 @@
 	} else	
 	if(flags&VOFLAG_MODESWITCHING) {
 	 	if( mp_msg_test(MSGT_VO,MSGL_V) ) {
-			printf("SDL: setting zoomed fullscreen with modeswitching\n"); }
+ 	 		mp_msg(MSGT_VO,MSGL_V, "SDL: setting zoomed fullscreen with modeswitching\n"); }
 		priv->fulltype = VOFLAG_MODESWITCHING;
 		set_fullmode(priv->fullmode);
           	/*if((priv->surface = SDL_SetVideoMode (d_width ? d_width : width, d_height ? d_height : height, priv->bpp, priv->sdlfullflags)))
@@ -879,7 +881,7 @@
 	} else
 	if(flags&VOFLAG_SWSCALE) {
 	 	if( mp_msg_test(MSGT_VO,MSGL_V) ) {
-			printf("SDL: setting zoomed fullscreen with modeswitching\n"); }
+			mp_msg(MSGT_VO,MSGL_V, "SDL: setting zoomed fullscreen with modeswitching\n"); }
 		priv->fulltype = VOFLAG_SWSCALE;
 		set_fullmode(priv->fullmode);
 	} 
@@ -891,19 +893,19 @@
 		||(strcmp(priv->driver, "cgx") == 0)
 		||((strcmp(priv->driver, "aalib") == 0) && priv->X)){
 			if( mp_msg_test(MSGT_VO,MSGL_V) ) {
-				printf("SDL: setting windowed mode\n"); }
+ 				mp_msg(MSGT_VO,MSGL_V, "SDL: setting windowed mode\n"); }
             set_video_mode(priv->dstwidth, priv->dstheight, priv->bpp, priv->sdlflags);
 		}
 		else {
 			if( mp_msg_test(MSGT_VO,MSGL_V) ) {
-				printf("SDL: setting zoomed fullscreen with modeswitching\n"); }
+ 				mp_msg(MSGT_VO,MSGL_V, "SDL: setting zoomed fullscreen with modeswitching\n"); }
 			priv->fulltype = VOFLAG_SWSCALE;
 			set_fullmode(priv->fullmode);
 		}	
 	}
 
         if(!priv->surface) { // cannot SetVideoMode
-		printf("SDL: failed to set video mode: %s\n", SDL_GetError());
+ 		mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_SDL_FailedToSetVideoMode, SDL_GetError());
 		return -1;
 	}	
 
@@ -991,7 +993,7 @@
 	    default:
 		/* Initialize and create the YUV Overlay used for video out */
 		if (!(priv->overlay = SDL_CreateYUVOverlay (surfwidth, surfheight, priv->format, priv->surface))) {
-			printf ("SDL: Couldn't create a YUV overlay: %s\n", SDL_GetError());
+			mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_SDL_CouldntCreateAYUVOverlay, SDL_GetError());
 			return -1;
 		}
 		priv->framePlaneY = priv->width * priv->height;
@@ -1004,15 +1006,14 @@
 	
     if(priv->mode != YUV) {
         if(!priv->rgbsurface) {
-            printf ("SDL: Couldn't create a RGB surface: %s\n", SDL_GetError());
+            mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_SDL_CouldntCreateARGBSurface, SDL_GetError());
             return -1;
         }
 
         priv->dblit = 0;
 
         if((priv->format&0xFF) != priv->bpp)
-            printf("SDL: using depth/colorspace conversion, this will slow things"
-                   "down (%ibpp -> %ibpp).\n", priv->format&0xFF, priv->bpp);
+            mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_SDL_UsingDepthColorspaceConversion, priv->format&0xFF, priv->bpp);
 
         priv->framePlaneRGB = priv->width * priv->height * priv->rgbsurface->format->BytesPerPixel;
         priv->stridePlaneRGB = priv->width * priv->rgbsurface->format->BytesPerPixel;
@@ -1140,7 +1141,7 @@
 
     break;
     default:
-	printf("SDL: unsupported image format in draw_slice, contact MPlayer developers!\n");
+	mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_SDL_UnsupportedImageFormatInDrawslice);
     }
 
 	SDL_OVR_UNLOCK
@@ -1182,7 +1183,7 @@
 				    priv->windowsize.h = priv->surface->h;
 				//}
 				if( mp_msg_test(MSGT_VO,MSGL_DBG3) ) {
-					printf("SDL: Window resize\n"); }
+ 					mp_msg(MSGT_VO,MSGL_DBG3, "SDL: Window resize\n"); }
 			break;
 			
 			case SDL_MOUSEBUTTONDOWN:
@@ -1223,7 +1224,7 @@
 #endif			
 				keypressed = event.key.keysym.sym;
 				if( mp_msg_test(MSGT_VO,MSGL_DBG2) ) {
-					printf("SDL: Key pressed: '%i'\n", keypressed); }
+ 					mp_msg(MSGT_VO,MSGL_DBG2, "SDL: Key pressed: '%i'\n", keypressed); }
 
 				/* c key pressed. c cycles through available fullscreenmodes, if we have some */
 				if ( ((keypressed == SDLK_c)) && (priv->fullmodes) ) {
@@ -1233,7 +1234,7 @@
 					set_fullmode(priv->fullmode);
 	
 					if( mp_msg_test(MSGT_VO,MSGL_DBG2) ) {
-						printf("SDL: Set next available fullscreen mode.\n"); }
+ 						mp_msg(MSGT_VO,MSGL_DBG2, "SDL: Set next available fullscreen mode.\n"); }
 				}
 
 				else if ( keypressed == SDLK_n ) {
@@ -1245,14 +1246,14 @@
 					    	priv->windowsize.w = priv->surface->w;
 						priv->windowsize.h = priv->surface->h;
 						if( mp_msg_test(MSGT_VO,MSGL_DBG2) ) {
-							printf("SDL: Normal size\n"); }
+ 							mp_msg(MSGT_VO,MSGL_DBG2, "SDL: Normal size\n"); }
 					} else
 					if (priv->surface->w != priv->dstwidth * 2 || priv->surface->h != priv->dstheight * 2) {
                         set_video_mode(priv->dstwidth * 2, priv->dstheight * 2, priv->bpp, priv->sdlflags);
 					    	priv->windowsize.w = priv->surface->w;
 						priv->windowsize.h = priv->surface->h;
 						if( mp_msg_test(MSGT_VO,MSGL_DBG2) ) {
-							printf("SDL: Double size\n"); }
+ 							mp_msg(MSGT_VO,MSGL_DBG2, "SDL: Double size\n"); }
 					}
 				}	
 
@@ -1511,7 +1512,7 @@
 		if(!priv->dblit) {
 		  	/* blit to the RGB surface */
 			if(SDL_BlitSurface (priv->rgbsurface, NULL, priv->surface, NULL))
-				printf("SDL: Blit failed: %s\n", SDL_GetError());
+				mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_SDL_BlitFailed, SDL_GetError());
 		}
 
 		/* update screen */
@@ -1575,7 +1576,7 @@
     struct sdl_priv_s *priv = &sdl_priv;
     if(priv->X) {
 		if( mp_msg_test(MSGT_VO,MSGL_V) ) {
-			printf("SDL: activating XScreensaver/DPMS\n"); }
+ 			mp_msg(MSGT_VO,MSGL_V, "SDL: activating XScreensaver/DPMS\n"); }
 		vo_x11_uninit();
 	}
 #endif
@@ -1586,7 +1587,7 @@
         SDL_QuitSubSystem(SDL_INIT_VIDEO);
 
 	if( mp_msg_test(MSGT_VO,MSGL_DBG3) ) {
-		printf("SDL: Closed Plugin\n"); }
+ 		mp_msg(MSGT_VO,MSGL_DBG3, "SDL: Closed Plugin\n"); }
 
 }
 
@@ -1613,7 +1614,7 @@
     priv->surface = NULL;
 
     if( mp_msg_test(MSGT_VO,MSGL_DBG3) ) {
-        printf("SDL: Opening Plugin\n"); }
+        mp_msg(MSGT_VO,MSGL_DBG3, "SDL: Opening Plugin\n"); }
 
     if(sdl_driver) {
         setenv("SDL_VIDEODRIVER", sdl_driver, 1);
@@ -1637,24 +1638,24 @@
     /* initialize the SDL Video system */
     if (!SDL_WasInit(SDL_INIT_VIDEO)) {
         if (SDL_Init (SDL_INIT_VIDEO|SDL_INIT_NOPARACHUTE)) {
-            printf("SDL: Initializing of SDL failed: %s.\n", SDL_GetError());
+            mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_SDL_InitializingOfSDLFailed, SDL_GetError());
             return -1;
         }
     }
 
     SDL_VideoDriverName(priv->driver, 8);
-    printf("SDL: Using driver: %s\n", priv->driver);
+    mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_SDL_UsingDriver, priv->driver);
 
     priv->X = 0;
 #ifdef HAVE_X11
     if(vo_init()) {
 		if( mp_msg_test(MSGT_VO,MSGL_V) ) {
-			printf("SDL: deactivating XScreensaver/DPMS\n"); }
+			mp_msg(MSGT_VO,MSGL_V, "SDL: deactivating XScreensaver/DPMS\n"); }
 		priv->XWidth = vo_screenwidth;
 		priv->XHeight = vo_screenheight;
 		priv->X = 1;
 		if( mp_msg_test(MSGT_VO,MSGL_V) ) {
-			printf("SDL: X11 Resolution %ix%i\n", priv->XWidth, priv->XHeight); }
+			mp_msg(MSGT_VO,MSGL_V, "SDL: X11 Resolution %ix%i\n", priv->XWidth, priv->XHeight); }
 	}
 #endif
 
@@ -1720,11 +1721,11 @@
       set_video_mode(priv->windowsize.w, priv->windowsize.h, priv->bpp, priv->sdlflags);
       SDL_ShowCursor(1);
       if( mp_msg_test(MSGT_VO,MSGL_DBG2) ) {
-        printf("SDL: Windowed mode\n"); }
+	mp_msg(MSGT_VO,MSGL_DBG2, "SDL: Windowed mode\n"); }
     } else if (priv->fullmodes) {
       set_fullmode(priv->fullmode);
       if( mp_msg_test(MSGT_VO,MSGL_DBG2) ) {
-        printf("SDL: Set fullscreen mode\n"); }
+	mp_msg(MSGT_VO,MSGL_DBG2, "SDL: Set fullscreen mode\n"); }
     }
     return VO_TRUE;
   }
--- a/libvo/vo_svga.c	Sun Apr 23 23:28:46 2006 +0000
+++ b/libvo/vo_svga.c	Mon Apr 24 04:23:53 2006 +0000
@@ -45,6 +45,7 @@
 #include "sub.h"
 
 #include "mp_msg.h"
+#include "help_mp.h"
 //#include "mp_image.h"
 
 #include <assert.h>
@@ -171,7 +172,7 @@
 
         force_vm=vga_getmodenumber(s);
         if(force_vm>0) {
-          if( mp_msg_test(MSGT_VO,MSGL_V) ) printf("vo_svga: Forcing mode %i\n",force_vm);
+          if( mp_msg_test(MSGT_VO,MSGL_V) ) mp_msg(MSGT_VO,MSGL_V, "vo_svga: Forcing mode %i\n",force_vm);
         }else{ 
           force_vm = 0;
         }
@@ -191,7 +192,7 @@
 
   if (mode_capabilities&CAP_ACCEL_CLEAR){
     if( mp_msg_test(MSGT_VO,MSGL_DBG3) )
-      printf("vo_svga: clearing box %d,%d - %d,%d with HW acceleration\n",
+      mp_msg(MSGT_VO,MSGL_DBG3, "vo_svga: clearing box %d,%d - %d,%d with HW acceleration\n",
              x,y,w,h);
     if(mode_capabilities&CAP_ACCEL_BACKGR)  
       vga_accel(ACCEL_SYNC);
@@ -201,7 +202,7 @@
   }
   if (mode_capabilities & CAP_LINEAR){
     if( mp_msg_test(MSGT_VO,MSGL_DBG3) )
-      printf("vo_svga: clearing box %d,%d - %d,%d with memset\n",x,y,w,h);
+      mp_msg(MSGT_VO,MSGL_DBG3, "vo_svga: clearing box %d,%d - %d,%d with memset\n",x,y,w,h);
     rgbplane=PageStore[0].vbase + (y*mode_stride) + (x*modeinfo->bytesperpixel);
     for(i=0;i<h;i++){
 //i'm afraid that memcpy is better optimized than memset;)
@@ -213,7 +214,7 @@
   }
   //native
   if( mp_msg_test(MSGT_VO,MSGL_DBG3) )
-    printf("vo_svga: clearing box %d,%d - %d,%d with native draw \n",x,y,w,h);
+    mp_msg(MSGT_VO,MSGL_DBG3, "vo_svga: clearing box %d,%d - %d,%d with native draw \n",x,y,w,h);
   if(modeinfo->bytesperpixel!=0) w*=modeinfo->bytesperpixel;
   for(i=0;i<h;i++){
     vga_drawscansegment(zerobuf,x,y+i,w);
@@ -229,7 +230,7 @@
 
   if(mpi->flags & MP_IMGFLAG_DIRECT){
     if( mp_msg_test(MSGT_VO,MSGL_DBG3) )
-      printf("vo_svga: drawing direct rendered surface\n");
+      mp_msg(MSGT_VO,MSGL_DBG3, "vo_svga: drawing direct rendered surface\n");
     cpage=(uint32_t)mpi->priv;
     assert((cpage>=0)&&(cpage<max_pages));
     return VO_TRUE; //it's already done
@@ -259,7 +260,7 @@
       w=(stride*8)/mpi->bpp;//we transfer pixels in the stride so the source
 //ACCELERATE
       if( mp_msg_test(MSGT_VO,MSGL_DBG3) )
-        printf("vo_svga: using HW PutImage (x=%d,y=%d,w=%d,h=%d)\n",x,y,w,h);
+        mp_msg(MSGT_VO,MSGL_DBG3, "vo_svga: using HW PutImage (x=%d,y=%d,w=%d,h=%d)\n",x,y,w,h);
       if(mode_capabilities & CAP_ACCEL_BACKGR)
         vga_accel(ACCEL_SYNC);
 
@@ -270,7 +271,7 @@
     if( mode_capabilities&CAP_LINEAR){
 //DIRECT  
       if( mp_msg_test(MSGT_VO,MSGL_DBG3) )
-        printf("vo_svga: using Direct memcpy (x=%d,y=%d,w=%d,h=%d)\n",x,y,w,h);
+        mp_msg(MSGT_VO,MSGL_DBG3, "vo_svga: using Direct memcpy (x=%d,y=%d,w=%d,h=%d)\n",x,y,w,h);
       bytesperline=(w*mpi->bpp)/8;
       base=PageStore[cpage].vbase + (y*mode_stride) + (x*mpi->bpp)/8;     
 
@@ -292,7 +293,7 @@
     if(mpi->imgfmt==IMGFMT_RG4B || mpi->imgfmt==IMGFMT_BG4B) length=w;
   
     if( mp_msg_test(MSGT_VO,MSGL_DBG3) )
-      printf("vo_svga: using Native vga_draw(x=%d,y=%d,w=%d,h=%d)\n",x,y,w,h);
+      mp_msg(MSGT_VO,MSGL_DBG3, "vo_svga: using Native vga_draw(x=%d,y=%d,w=%d,h=%d)\n",x,y,w,h);
     y+=PageStore[cpage].yoffset;//y position of the page beggining
     for(i=0;i<h;i++){
       vga_drawscansegment(rgbplane,x,y+i,length);
@@ -328,7 +329,7 @@
     vminfo = vga_getmodeinfo(i);
     if( vminfo == NULL ) continue;
     if( mp_msg_test(MSGT_VO,MSGL_DBG4) )
-      printf("vo_svga: testing mode %d (%s)\n",i,vga_getmodename(i));
+      mp_msg(MSGT_VO,MSGL_DBG4, "vo_svga: testing mode %d (%s)\n",i,vga_getmodename(i));
     if( vga_hasmode(i) == 0 ) continue;
     if( req_bpp != bpp_from_vminfo(vminfo) )continue;
     if( (vminfo->width < req_w) || (vminfo->height < req_h) ) continue;
@@ -341,7 +342,7 @@
       prev_badness=badness;
       bestmode=i;
       if( mp_msg_test(MSGT_VO,MSGL_DBG4) )
-        printf("vo_svga: found good mode %d with badness %d\n",i,badness);
+        mp_msg(MSGT_VO,MSGL_DBG4, "vo_svga: found good mode %d with badness %d\n",i,badness);
     }
   }
   return bestmode;
@@ -404,7 +405,7 @@
   
   uint32_t accflags;
   if( mp_msg_test(MSGT_VO,MSGL_V) )
-    printf("vo_svga: config(%i, %i, %i, %i, %08x, %s, %08x)\n", width, height,
+    mp_msg(MSGT_VO,MSGL_V, "vo_svga: config(%i, %i, %i, %i, %08x, %s, %08x)\n", width, height,
            d_width, d_height, flags, title, format);
 //Only RGB modes supported
   if (!IMGFMT_IS_RGB(format) && !IMGFMT_IS_BGR(format)) {assert(0);return -1;} 
@@ -414,8 +415,8 @@
     
   if(!force_vm) {
     if ( mp_msg_test(MSGT_VO,MSGL_V) ) {
-      printf("vo_svga: Looking for the best resolution...\n");
-      printf("vo_svga: req_w: %d, req_h: %d, bpp: %d\n",req_w,req_h,req_bpp);
+      mp_msg(MSGT_VO,MSGL_V, "vo_svga: Looking for the best resolution...\n");
+      mp_msg(MSGT_VO,MSGL_V, "vo_svga: req_w: %d, req_h: %d, bpp: %d\n",req_w,req_h,req_bpp);
     }
     vid_mode=find_best_svga_mode(req_w,req_h,req_bpp);
     if(vid_mode==0) 
@@ -424,24 +425,24 @@
   }else{//force_vm
     vid_mode=force_vm;
     if(vga_hasmode(vid_mode) == 0){
-      printf("vo_svga: forced vid_mode %d (%s) not available\n",
+      mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_SVGA_ForcedVidmodeNotAvailable,
              vid_mode,vga_getmodename(vid_mode));
       return 1; //error;
     }
     modeinfo=vga_getmodeinfo(vid_mode);
     if( (modeinfo->width < req_w) || (modeinfo->height < req_h) ){
-      printf("vo_svga: forced vid_mode %d (%s) too small\n",
+      mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_SVGA_ForcedVidmodeTooSmall,
              vid_mode,vga_getmodename(vid_mode));
       return 1;
     }
   }
   mode_bpp=bpp_from_vminfo(modeinfo);
      
-  printf("vo_svga: vid_mode: %d, %dx%d %dbpp\n",
+  mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_SVGA_Vidmode,
          vid_mode,modeinfo->width,modeinfo->height,mode_bpp);
   
   if (vga_setmode(vid_mode) == -1) {
-    printf("vo_svga: vga_setmode(%d) failed.\n",vid_mode);
+    mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_SVGA_VgasetmodeFailed,vid_mode);
     uninit();
     return 1; // error
   }
@@ -491,11 +492,11 @@
     }
   }//fi force native
   if(mode_capabilities&CAP_LINEAR){
-    printf("vo_svga: video mode is linear and memcpy could be used for image transfer\n");
+    mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_SVGA_VideoModeIsLinearAndMemcpyCouldBeUsed);
   }
   if(mode_capabilities&CAP_ACCEL_PUTIMAGE){
-    printf("vo_svga: video mode have hardware acceleration and put_image could be used\n");
-    printf("vo_svga: If it works for you i would like to know \nvo_svga: (send log with `mplayer test.avi -v -v -v -v &> svga.log`). Thx\n");
+    mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_SVGA_VideoModeHasHardwareAcceleration);
+    mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_SVGA_IfItWorksForYouIWouldLineToKnow);
   }
   
 //here is the place to handle strides for accel_ modes;
@@ -529,7 +530,7 @@
     }
   }
   assert(max_pages>0);
-  printf("vo_svga: video mode have %d page(s)\n",max_pages);
+  mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_SVGA_VideoModeHas,max_pages);
   //15bpp
   if(modeinfo->bytesperpixel!=0)
     vga_claimvideomemory(max_pages * modeinfo->height * modeinfo->width * modeinfo->bytesperpixel);
@@ -544,14 +545,14 @@
   x_pos = (modeinfo->width  - req_w) / 2;
   y_pos = (modeinfo->height - req_h) / 2;
   x_pos &= ~(15); //align x offset position to 16 pixels
-  printf("vo_svga: centering image. start at (%d,%d)\n",x_pos,y_pos);
+  mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_SVGA_CenteringImageStartAt,x_pos,y_pos);
 
 #ifdef CONFIG_VIDIX
 
   if(vidix_name[0]){ 
     vidix_init(width, height, x_pos, y_pos, modeinfo->width, modeinfo->height, 
         format, mode_bpp, modeinfo->width,modeinfo->height);
-    printf("vo_svga: Using VIDIX. w=%i h=%i  mw=%i mh=%i\n",width,height,
+    mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_SVGA_UsingVidix,width,height,
            modeinfo->width,modeinfo->height);
     vidix_start();
     /*set colorkey*/       
@@ -593,7 +594,7 @@
 static void draw_osd(void)
 {
   if( mp_msg_test(MSGT_VO,MSGL_DBG4) )
-     printf("vo_svga: draw_osd()\n");
+     mp_msg(MSGT_VO,MSGL_DBG4, "vo_svga: draw_osd()\n");
   //only modes with bytesperpixel>0 can draw OSD
   if(modeinfo->bytesperpixel==0) return;
   if(!(mode_capabilities&CAP_LINEAR)) return;//force_native will remove OSD
@@ -622,9 +623,9 @@
   PageStore[cpage].locks=PAGE_BUSY;
 
   if( mp_msg_test(MSGT_VO,MSGL_DBG3) )
-    printf("vo_svga: viewing page %d\n",cpage);
+    mp_msg(MSGT_VO,MSGL_DBG3, "vo_svga: viewing page %d\n",cpage);
   if(sync_flip && old_page!=cpage){
-    if( mp_msg_test(MSGT_VO,MSGL_DBG3) ) printf("vo_svga:vga_waitretrace\n");
+    if( mp_msg_test(MSGT_VO,MSGL_DBG3) ) mp_msg(MSGT_VO,MSGL_DBG3, "vo_svga:vga_waitretrace\n");
     vga_waitretrace();
   }
   vga_setdisplaystart(PageStore[cpage].doffset);
@@ -650,7 +651,7 @@
 vga_modeinfo * vminfo;
 
   if ( mp_msg_test(MSGT_VO,MSGL_DBG4) )
-    printf("vo_svga: query_format=%X \n",format);
+    mp_msg(MSGT_VO,MSGL_DBG4, "vo_svga: query_format=%X \n",format);
 //only RGB modes supported
   if( (!IMGFMT_IS_RGB(format)) && (!IMGFMT_IS_BGR(format)) ) return 0; 
 
@@ -688,7 +689,7 @@
   char* base;
 
   if( mp_msg_test(MSGT_VO,MSGL_DBG3) )
-    printf("vo_svga: draw_alpha(x0=%d,y0=%d,w=%d,h=%d,src=%p,srca=%p,stride=%d\n",
+    mp_msg(MSGT_VO,MSGL_DBG3, "vo_svga: draw_alpha(x0=%d,y0=%d,w=%d,h=%d,src=%p,srca=%p,stride=%d\n",
            x0,y0,w,h,src,srca,stride);
   if(!blackbar_osd) {
     //drawing in the image, so place the stuff there
@@ -697,7 +698,7 @@
   }
   
   if( mp_msg_test(MSGT_VO,MSGL_DBG4) )
-    printf("vo_svga: OSD draw in page %d\n",cpage);
+    mp_msg(MSGT_VO,MSGL_DBG4, "vo_svga: OSD draw in page %d\n",cpage);
   base=PageStore[cpage].vbase + y0*mode_stride + x0*modeinfo->bytesperpixel;
   switch (mode_bpp) {
     case 32: 
@@ -745,7 +746,7 @@
              y_pos*mode_stride + (x_pos*mpi->bpp)/8;
       mpi->priv=(void *)page;
       if( mp_msg_test(MSGT_VO,MSGL_DBG3) )
-        printf("vo_svga: direct render allocated! page=%d\n",page);
+        mp_msg(MSGT_VO,MSGL_DBG3, "vo_svga: direct render allocated! page=%d\n",page);
       return(VO_TRUE);
     }
   }
--- a/libvo/vo_syncfb.c	Sun Apr 23 23:28:46 2006 +0000
+++ b/libvo/vo_syncfb.c	Mon Apr 24 04:23:53 2006 +0000
@@ -31,6 +31,8 @@
 #include <errno.h>
 
 #include "config.h"
+#include "mp_msg.h"
+#include "help_mp.h"
 #include "video_out.h"
 #include "video_out_internal.h"
 
@@ -286,7 +288,7 @@
 
 	if ( dbg_singleframe ) {
 		if ( debug_skip_first == 0 ) {
-			printf( "Press 'anykey' for field 1\n" );
+			mp_msg(MSGT_VO,MSGL_INFO, "Press 'anykey' for field 1\n" );
 			getchar();
 			ioctl(f,SYNCFB_VBI,0);
 		}
@@ -302,14 +304,14 @@
 		}
 
 		if ( debug_skip_first == 0 ) {
-			printf( "Press 'anykey' for field 2\n" );
+			mp_msg(MSGT_VO,MSGL_INFO, "Press 'anykey' for field 2\n" );
 			getchar();
 			ioctl(f,SYNCFB_VBI,0);
 		}
 	}
 
 	ioctl(f,SYNCFB_REQUEST_BUFFER,&bufinfo);
-	if ( bufinfo.id == -1 ) printf( "Got buffer #%d\n", bufinfo.id );
+	if ( bufinfo.id == -1 ) mp_msg(MSGT_VO,MSGL_INFO, "Got buffer #%d\n", bufinfo.id );
 
 	vid_data = (uint_8 *)(frame_mem + bufinfo.offset);
 	if ( bufinfo.id == -1 ) {
@@ -322,7 +324,7 @@
 
 static int draw_frame(uint8_t *src[])
 {
-	printf("DRAW FRAME!!!\n");
+	mp_msg(MSGT_VO,MSGL_INFO, "DRAW FRAME!!!\n");
 	if ( conf_palette == VIDEO_PALETTE_YUV422 ) {
 		write_frame_YUV422(src[0],src[1], src[2]);
 	} else if ( conf_palette == VIDEO_PALETTE_YUV420P2 ) {
@@ -358,7 +360,7 @@
 		f = open("/dev/mga_vid",O_RDWR);
 		if(f == -1)
 		{
-			printf("Couldn't open /dev/syncfb or /dev/mga_vid\n");
+			mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_SYNCFB_CouldntOpen);
 			return(-1);
 		}
 	}
@@ -368,15 +370,15 @@
 
 	if (sfb_caps.palettes & (1<<VIDEO_PALETTE_YUV420P3) ) {
 		_config.src_palette= VIDEO_PALETTE_YUV420P3;
-		printf("using palette yuv420p3\n");
+		mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_SYNCFB_UsingPaletteYuv420p3);
 	}else if ( sfb_caps.palettes & (1<<VIDEO_PALETTE_YUV420P2) ) {
 		_config.src_palette= VIDEO_PALETTE_YUV420P2;
-		printf("using palette yuv420p2\n");
+		mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_SYNCFB_UsingPaletteYuv420p2);
 	} else if ( sfb_caps.palettes & (1<<VIDEO_PALETTE_YUV422) ) {
 		_config.src_palette= VIDEO_PALETTE_YUV422;
-		printf("using palette yuv422\n");
+		mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_SYNCFB_UsingPaletteYuv420);
 	} else {
-		printf("no supported palette found\n");
+		mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_SYNCFB_NoSupportedPaletteFound);
 		return -1;
 	}
 
@@ -409,19 +411,19 @@
 	_config.image_yorg= 0;
 
 
-	printf ("BES Sourcer size: %d x %d\n", width, height);
+	mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_SYNCFB_BesSourcerSize, width, height);
 
 	ioctl(f,SYNCFB_ON,0);
 	if (ioctl(f,SYNCFB_SET_CONFIG,&_config)) perror("Error in mga_vid_config ioctl");
 
-	printf ("Framebuffer memory: %ld in %ld buffers\n", sfb_caps.memory_size, _config.buffers);
+	mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_SYNCFB_FramebufferMemory, sfb_caps.memory_size, _config.buffers);
 
 	frame_size = ((width + 31) & ~31) * height + (((width + 31) & ~31) * height) / 2;
 	frame_mem = (uint_8*)mmap(0,sfb_caps.memory_size,PROT_WRITE,MAP_SHARED,f,0);
 
-	printf( "Requesting first buffer #%d\n", bufinfo.id );
+	mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_SYNCFB_RequestingFirstBuffer, bufinfo.id );
 	ioctl(f,SYNCFB_REQUEST_BUFFER,&bufinfo);
-	printf( "Got first buffer #%d\n", bufinfo.id );
+	mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_SYNCFB_GotFirstBuffer, bufinfo.id );
 
 
 	vid_data = (uint_8 *)(frame_mem + bufinfo.offset);
@@ -447,7 +449,7 @@
 {
     if(arg) 
     {
-	printf("vo_syncfb: Unknown subdevice: %s\n",arg);
+	mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_SYNCFB_UnknownSubdevice,arg);
 	return ENOSYS;
     }
     return 0;
--- a/libvo/vo_tdfx_vid.c	Sun Apr 23 23:28:46 2006 +0000
+++ b/libvo/vo_tdfx_vid.c	Mon Apr 24 04:23:53 2006 +0000
@@ -36,6 +36,7 @@
 #include "video_out_internal.h"
 #include "aspect.h"
 #include "mp_msg.h"
+#include "help_mp.h"
 
 #include "fastmemcpy.h"
 #include "drivers/tdfx_vid.h"
@@ -88,10 +89,10 @@
   mov.dst = front_buffer;
   mov.dst_stride = tdfx_cfg.screen_stride;
 
-  printf("Move %d(%d) x %d => %d \n", mov.width,mov.src_stride,mov.height,mov.dst_stride);
+  mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_TDFXVID_Move, mov.width,mov.src_stride,mov.height,mov.dst_stride);
 
   if(ioctl(tdfx_fd,TDFX_VID_AGP_MOVE,&mov))
-    printf("tdfx_vid: AGP move failed to clear the screen\n");
+    mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_AGPMoveFailedToClearTheScreen);
   
 }
 
@@ -176,7 +177,7 @@
       blit.dst_h = src_height;
       blit.dst_format = IMGFMT_BGR16;
       if(ioctl(tdfx_fd,TDFX_VID_BLIT,&blit))
-	printf("tdfx_vid: Blit failed\n");
+	mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_BlitFailed);
     }
     return;
   }
@@ -198,7 +199,7 @@
   blit.dst_format = dst_fmt;
 
   if(ioctl(tdfx_fd,TDFX_VID_BLIT,&blit))
-    printf("tdfx_vid: Blit failed\n");
+    mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_BlitFailed);
 }
 
 static int
@@ -266,7 +267,7 @@
   case IMGFMT_BGR24:
   case IMGFMT_BGR32:
     if(use_overlay)
-      printf("tdfx_vid: Non-native overlay format need conversion\n");
+      mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_TDFXVID_NonNativeOverlayFormatNeedConversion);
   case IMGFMT_BGR15:
   case IMGFMT_BGR16:
     src_bpp = ((format & 0x3F)+7)/8; 
@@ -282,7 +283,7 @@
     src_bpp = 2;
     break;
   default:
-    printf("Unsupported input format 0x%x\n",format);
+    mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_UnsupportedInputFormat,format);
     return 1;
   }
 
@@ -338,28 +339,28 @@
     ov.use_colorkey = 0;
 
     if(ioctl(tdfx_fd,TDFX_VID_SET_OVERLAY,&ov)) {
-      printf("tdfxvid: Overlay setup failed\n");
+      mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_OverlaySetupFailed);
       use_overlay = 0;
       break;
     }
     tdfx_ov = ov;
     if(use_overlay == 1) {
       if(ioctl(tdfx_fd,TDFX_VID_OVERLAY_ON)) {
-	printf("tdfx_vid: Overlay on failed\n");
+	mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_OverlayOnFailed);
 	use_overlay = 0;
 	break;
       }
       use_overlay++;
     }
     
-    printf("tdfx_vid: Overlay ready : %d(%d) x %d @ %d => %d(%d) x %d @ %d\n",
+    mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_TDFXVID_OverlayReady,
 	   src_width,src_stride,src_height,src_bpp,
 	   dst_width,dst_stride,dst_height,dst_bpp);
     break;
   }
 
   if(!use_overlay)
-    printf("tdfx_vid : Texture blit ready %d(%d) x %d @ %d => %d(%d) x %d @ %d\n",
+    mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_TDFXVID_TextureBlitReady,
 	   src_width,src_stride,src_height,src_bpp,
 	   dst_width,dst_stride,dst_height,dst_bpp);
   
@@ -371,7 +372,7 @@
 {
   if(use_overlay == 2) {
     if(ioctl(tdfx_fd,TDFX_VID_OVERLAY_OFF))
-      printf("tdfx_vid: Overlay off failed\n");
+      mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_OverlayOffFailed);
     use_overlay--;
   }
   close(tdfx_fd);
@@ -388,17 +389,17 @@
  
   tdfx_fd = open(arg ? arg : "/dev/tdfx_vid", O_RDWR);
   if(tdfx_fd < 0) {
-    printf("tdfx_vid: Can't open %s: %s\n",arg ? arg : "/dev/tdfx_vid",
+    mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_CantOpen,arg ? arg : "/dev/tdfx_vid",
 	   strerror(errno));
     return 1;
   }
 
   if(ioctl(tdfx_fd,TDFX_VID_GET_CONFIG,&tdfx_cfg)) {
-    printf("tdfx_vid: Can't get current cfg: %s\n",strerror(errno));
+    mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_CantGetCurrentCfg,strerror(errno));
     return 1;
   }
 
-  printf("tdfx_vid version %d\n"
+  mp_msg(MSGT_VO,MSGL_INFO, "tdfx_vid version %d\n"
 	 "  Ram: %d\n"
 	 "  Screen: %d x %d\n"
 	 "  Format: %c%c%c%d\n",
@@ -413,7 +414,7 @@
 		  tdfx_fd, 0);
 
   if(agp_mem == MAP_FAILED) {
-    printf("tdfx_vid: Memmap failed !!!!!\n");
+    mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_MemmapFailed);
     return 1;
   }
   
@@ -465,7 +466,7 @@
     mpi->stride[2] = mpi->chroma_width;
     break;
   default:
-    printf("Get image todo\n");
+    mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_GetImageTodo);
     return VO_FALSE;
   }
   mpi->flags |= MP_IMGFLAG_DIRECT;
@@ -532,7 +533,7 @@
     mov.dst_stride = src_stride;
 	 
     if(ioctl(tdfx_fd,TDFX_VID_AGP_MOVE,&mov))
-      printf("tdfx_vid: AGP move failed\n");
+      mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_AgpMoveFailed);
     break;
 
   case IMGFMT_YV12:
@@ -561,7 +562,7 @@
     yuv.base = back_buffer;
     yuv.stride = src_stride;
     if(ioctl(tdfx_fd,TDFX_VID_SET_YUV,&yuv)) {
-      printf("tdfx_vid: Set yuv failed\n");
+      mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_SetYuvFailed);
       break;
     }
     
@@ -577,7 +578,7 @@
     mov.dst_stride = TDFX_VID_YUV_STRIDE;
 
     if(ioctl(tdfx_fd,TDFX_VID_AGP_MOVE,&mov)) {
-      printf("tdfx_vid: AGP move failed on Y plane\n");
+      mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_AgpMoveFailedOnYPlane);
       break;
     }
     //return 0;
@@ -589,7 +590,7 @@
     mov.src_stride = buffer_stride[p];
     mov.dst += TDFX_VID_YUV_PLANE_SIZE;
     if(ioctl(tdfx_fd,TDFX_VID_AGP_MOVE,&mov)) {
-      printf("tdfx_vid: AGP move failed on U plane\n");
+      mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_AgpMoveFailedOnUPlane);
       break;
     }
     // V
@@ -598,12 +599,12 @@
     mov.src_stride = buffer_stride[p];
     mov.dst += TDFX_VID_YUV_PLANE_SIZE;
     if(ioctl(tdfx_fd,TDFX_VID_AGP_MOVE,&mov)) {
-      printf("tdfx_vid: AGP move failed on U plane\n");
+      mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_AgpMoveFailedOnVPlane);
       break;
     }
     break;
   default:
-    printf("What's that for a format 0x%x\n",mpi->imgfmt);
+    mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TDFXVID_WhatsThatForAFormat,mpi->imgfmt);
     return VO_TRUE;
   }
 
--- a/libvo/vo_tdfxfb.c	Sun Apr 23 23:28:46 2006 +0000
+++ b/libvo/vo_tdfxfb.c	Mon Apr 24 04:23:53 2006 +0000
@@ -38,6 +38,8 @@
 #include <linux/fb.h>
 
 #include "config.h"
+#include "mp_msg.h"
+#include "help_mp.h"
 #include "fastmemcpy.h"
 #include "video_out.h"
 #include "video_out_internal.h"
@@ -91,12 +93,12 @@
 		name = "/dev/fb0";
 
 	if((fd = open(name, O_RDWR)) == -1) {
-		printf("tdfxfb: can't open %s: %s\n", name, strerror(errno));
+		mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_TDFXFB_CantOpen, name, strerror(errno));
 		return -1;
 	}
 
 	if(ioctl(fd, FBIOGET_FSCREENINFO, &fb_finfo)) {
-		printf("tdfxfb: problem with FBITGET_FSCREENINFO ioctl: %s\n",
+		mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_TDFXFB_ProblemWithFbitgetFscreenInfo,
 				strerror(errno));
 		close(fd);
 		fd = -1;
@@ -104,7 +106,7 @@
 	}
 
 	if(ioctl(fd, FBIOGET_VSCREENINFO, &fb_vinfo)) {
-		printf("tdfxfb: problem with FBITGET_VSCREENINFO ioctl: %s\n",
+		mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_TDFXFB_ProblemWithFbitgetVscreenInfo,
 				strerror(errno));
 		close(fd);
 		fd = -1;
@@ -113,8 +115,7 @@
 
 	/* BANSHEE means any of the series aparently */
 	if (fb_finfo.accel != FB_ACCEL_3DFX_BANSHEE) {
-		printf("tdfxfb: This driver is only supports the 3Dfx Banshee,"
-				" Voodoo3 and Voodoo 5\n");
+		mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_TDFXFB_ThisDriverIsOnlySupports);
 		close(fd);
 		fd = -1;
 		return -1;
@@ -127,7 +128,7 @@
 	case 32:
 	  break; // Ok
 	default:
-	  printf("tdfxfb: %d bpp output is not supported\n", fb_vinfo.bits_per_pixel);
+	  mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_TDFXFB_OutputIsNotSupported, fb_vinfo.bits_per_pixel);
 	  close(fd);
 	  fd = -1;
 	  return -1;
@@ -140,7 +141,7 @@
 					MAP_SHARED, fd, fb_finfo.smem_len);
 
 	if((long)memBase0 == -1 || (long)memBase1 == -1) {
-		printf("tdfxfb: Couldn't map memory areas: %s\n", strerror(errno));
+		mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_TDFXFB_CouldntMapMemoryAreas, strerror(errno));
 		if((long)memBase0 != -1)
 		  munmap(memBase0, fb_finfo.smem_len);
 		if((long)memBase1 != -1)
@@ -247,7 +248,7 @@
 		break;
 
 	default:
-		printf("tdfxfb: %d bpp output is not supported (This should never happend)\n", fb_vinfo.bits_per_pixel);
+		MSGTR_LIBVO_TDFXFB_BppOutputIsNotSupported, fb_vinfo.bits_per_pixel);
 		return -1;
 	}
 
@@ -285,7 +286,7 @@
 		break;
 
 	default:
-		printf("tdfxfb: Eik! Something's wrong with control().\n");
+		mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_TDFXFB_SomethingIsWrongWithControl);
 		return -1;
 	}
 
@@ -302,7 +303,7 @@
 	inpageoffset = hidpageoffset + screenwidth * screenheight * screendepth;
 
 	if(inpageoffset + in_width * in_depth * in_height > fb_finfo.smem_len) {
-		printf("tdfxfb: Not enough video memory to play this movie. Try at a lower resolution\n");
+		mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_TDFXFB_NotEnoughVideoMemoryToPlay);
 		return -1;
 	}
 
@@ -314,7 +315,7 @@
 
 	memset(inpage, 0, in_width * in_height * in_depth);
 
-	printf("tdfxfb: screen is %dx%d at %d bpp, in is %dx%d at %d bpp, norm is %dx%d\n",
+	mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_TDFXFB_ScreenIs,
 			screenwidth, screenheight, screendepth * 8,
 			in_width, in_height, in_depth * 8,
 			d_width, d_height);
--- a/libvo/vo_tga.c	Sun Apr 23 23:28:46 2006 +0000
+++ b/libvo/vo_tga.c	Mon Apr 24 04:23:53 2006 +0000
@@ -32,6 +32,8 @@
 #include <math.h>
 
 #include "config.h"
+#include "mp_msg.h"
+#include "help_mp.h"
 #include "video_out.h"
 #include "video_out_internal.h"
 
@@ -230,7 +232,7 @@
 static int preinit(const char *arg)
 {
     if(arg) {
-	printf("vo_tga: Unknown subdevice: %s\n",arg);
+	mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_TGA_UnknownSubdevice,arg);
 	return ENOSYS;
     }
     return 0;
--- a/libvo/vo_vesa.c	Sun Apr 23 23:28:46 2006 +0000
+++ b/libvo/vo_vesa.c	Mon Apr 24 04:23:53 2006 +0000
@@ -15,6 +15,8 @@
     note: triple buffering requires VBE 3.0 - need volunteers.
 */
 #include "config.h"
+#include "mp_msg.h"
+#include "help_mp.h"
 #include "gtf.h"
 #include <stdio.h>
 #ifdef HAVE_MALLOC_H
@@ -152,7 +154,7 @@
   return retval;
 }
 
-#define PRINT_VBE_ERR(name,err) { printf("vo_vesa: %s returns: %s\n",name,vbeErrToStr(err)); fflush(stdout); }
+#define PRINT_VBE_ERR(name,err) { mp_msg(MSGT_VO,MSGL_WARN, "vo_vesa: %s returns: %s\n",name,vbeErrToStr(err)); fflush(stdout); }
 
 static void vesa_term( void )
 {
@@ -188,7 +190,7 @@
     show_err:
     vesa_term();
     PRINT_VBE_ERR("vbeSetWindow",err);
-    printf("vo_vesa: Fatal error occurred! Can't continue\n");
+    mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_VESA_FatalErrorOccurred);
     abort();
   }
   win.low = new_offset * gran;
@@ -280,7 +282,7 @@
     uint8_t *dst[3]= {dga_buffer, NULL, NULL};
     int dstStride[3];
     if( mp_msg_test(MSGT_VO,MSGL_DBG3) )
-	printf("vo_vesa: draw_slice was called: w=%u h=%u x=%u y=%u\n",w,h,x,y);
+	mp_msg(MSGT_VO,MSGL_DBG3, "vo_vesa: draw_slice was called: w=%u h=%u x=%u y=%u\n",w,h,x,y);
     dstStride[0]=dstride*((dstBpp+7)/8);
     dstStride[1]=
     dstStride[2]=dstStride[0]>>1;
@@ -361,7 +363,7 @@
 {
  uint32_t w,h;
  if( mp_msg_test(MSGT_VO,MSGL_DBG3) )
-	printf("vo_vesa: draw_osd was called\n");
+	mp_msg(MSGT_VO,MSGL_DBG3, "vo_vesa: draw_osd was called\n");
  {
 #ifdef OSD_OUTSIDE_MOVIE
    w = HAS_DGA()?video_mode_info.XResolution:dstW;
@@ -377,7 +379,7 @@
 static void flip_page(void)
 {
   if( mp_msg_test(MSGT_VO,MSGL_DBG3) )
-	printf("vo_vesa: flip_page was called\n");
+	mp_msg(MSGT_VO,MSGL_DBG3, "vo_vesa: flip_page was called\n");
   if(flip_trigger) 
   {
     if(!HAS_DGA()) __vbeCopyData(dga_buffer);
@@ -390,7 +392,7 @@
     {
       vesa_term();
       PRINT_VBE_ERR("vbeSetDisplayStart",err);
-      printf("vo_vesa: Fatal error occurred! Can't continue\n");
+      mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_VESA_FatalErrorOccurred);
       abort();
     }
     multi_idx = multi_idx ? 0 : 1;
@@ -412,7 +414,7 @@
 static int draw_frame(uint8_t *src[])
 {
     if( mp_msg_test(MSGT_VO,MSGL_DBG3) )
-        printf("vo_vesa: draw_frame was called\n");
+        mp_msg(MSGT_VO,MSGL_DBG3, "vo_vesa: draw_frame was called\n");
     if(sws)
     {
 	int dstride=HAS_DGA()?video_mode_info.XResolution:dstW;
@@ -456,14 +458,14 @@
    else
    if(memcmp(sd,"vidix",5) == 0) vidix_name = &sd[5]; /* vidix_name will be valid within init() */
 #endif
-   else { printf("vo_vesa: Unknown subdevice: '%s'\n", sd); return 0xFFFFFFFFUL; }
+   else { mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_VESA_UnkownSubdevice, sd); return 0xFFFFFFFFUL; }
    return flags;
 }
 
 static int query_format(uint32_t format)
 {
     if( mp_msg_test(MSGT_VO,MSGL_DBG3) )
-        printf("vo_vesa: query_format was called: %x (%s)\n",format,vo_format_name(format));
+        mp_msg(MSGT_VO,MSGL_DBG3, "vo_vesa: query_format was called: %x (%s)\n",format,vo_format_name(format));
 #ifdef CONFIG_VIDIX
     if(vidix_name)return(vidix_query_fourcc(format));
 #endif
@@ -538,14 +540,13 @@
   if(screen_size%64) screen_size=((screen_size/64)*64)+64;
   total = vsize / screen_size;
   if( mp_msg_test(MSGT_VO,MSGL_V) )
-    printf("vo_vesa: Can use up to %u video buffers\n",total);
+    mp_msg(MSGT_VO,MSGL_V, "vo_vesa: Can use up to %u video buffers\n",total);
   i = 0;
   offset = 0;
   total = min(total,nbuffs);
   while(i < total) { multi_buff[i++] = offset; offset += screen_size; }
   if(!i)
-    printf("vo_vesa: Your have too small size of video memory for this mode:\n"
-	   "vo_vesa: Requires: %08lX exists: %08lX\n", screen_size, vsize);
+    mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_VESA_YourHaveTooSmallSizeOfVideoMemory, screen_size, vsize);
   return i;
 }
 
@@ -564,8 +565,7 @@
     monitor_dotclock = str2range(monitor_dotclock_str);
     
 		if (!monitor_hfreq || !monitor_vfreq || !monitor_dotclock) {
-			printf("vo_vesa: you have to specify the capabilities of"
-					" the monitor. Not changing refresh rate.\n");
+			mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_VESA_YouHaveToSpecifyTheCapabilitiesOfTheMonitor);
 			return 0;
 		}
 
@@ -602,8 +602,7 @@
     
     if (!in_range(monitor_vfreq,crtc_pass->RefreshRate/100)||
 	!in_range(monitor_hfreq,H_freq*1000)) {
-        printf( "vo_vesa: Unable to fit the mode into monitor's limitation."
-		" Not changing refresh rate.\n");
+        mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_VESA_UnableToFitTheMode);
 	return 0;
     }
 
@@ -633,13 +632,13 @@
 	fs_mode = 0;
         if(subdev_flags == 0xFFFFFFFEUL)
 	{
-	  printf("vo_vesa: detected internal fatal error: init is called before preinit\n");
+	  mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_VESA_DetectedInternalFatalError);
 	  return -1;
 	}
 	if(subdev_flags == 0xFFFFFFFFUL) return -1;
 	if(flags & VOFLAG_FLIPPING)
 	{
-	  printf("vo_vesa: switch -flip is not supported\n");
+	  mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_VESA_SwitchFlipIsNotSupported);
 	}
 	if(flags & VOFLAG_SWSCALE) use_scaler = 1;
 	if(flags & VOFLAG_FULLSCREEN)
@@ -652,30 +651,29 @@
 	if((err=vbeGetControllerInfo(&vib)) != VBE_OK)
 	{
 	  PRINT_VBE_ERR("vbeGetControllerInfo",err);
-	  printf("vo_vesa: possible reason: No VBE2 BIOS found\n");
+	  mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_VESA_PossibleReasonNoVbe2BiosFound);
 	  return -1;
 	}
 	/* Print general info here */
-	printf("vo_vesa: Found VESA VBE BIOS Version %x.%x Revision: %x\n",
+	mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_VESA_FoundVesaVbeBiosVersion,
 		(int)(vib.VESAVersion >> 8) & 0xff,
 		(int)(vib.VESAVersion & 0xff),
 		(int)(vib.OemSoftwareRev & 0xffff));
-	printf("vo_vesa: Video memory: %u Kb\n",vib.TotalMemory*64);
-	printf("vo_vesa: VESA Capabilities: %s %s %s %s %s\n"
+	mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_VESA_VideoMemory,vib.TotalMemory*64);
+	mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_VESA_Capabilites
 		,vib.Capabilities & VBE_DAC_8BIT ? "8-bit DAC," : "6-bit DAC,"
 		,vib.Capabilities & VBE_NONVGA_CRTC ? "non-VGA CRTC,":"VGA CRTC,"
 		,vib.Capabilities & VBE_SNOWED_RAMDAC ? "snowed RAMDAC,":"normal RAMDAC,"
 		,vib.Capabilities & VBE_STEREOSCOPIC ? "stereoscopic,":"no stereoscopic,"
 		,vib.Capabilities & VBE_STEREO_EVC ? "Stereo EVC":"no stereo");
-	printf("vo_vesa: !!! Below will be printed OEM info. !!!\n");
-	printf("vo_vesa: You should watch 5 OEM related lines below else you've broken vm86\n");
-	printf("vo_vesa: OEM info: %s\n",vib.OemStringPtr);
-	printf("vo_vesa: OEM Revision: %x\n",vib.OemSoftwareRev);
-	printf("vo_vesa: OEM vendor: %s\n",vib.OemVendorNamePtr);
-	printf("vo_vesa: OEM Product Name: %s\n",vib.OemProductNamePtr);
-	printf("vo_vesa: OEM Product Rev: %s\n",vib.OemProductRevPtr);
-	printf("vo_vesa: Hint: To get workable TV-Out you should have plugged tv-connector in\n"
-	       "vo_vesa: before booting PC since VESA BIOS initializes itself only during POST\n");
+	mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_VESA_BelowWillBePrintedOemInfo);
+	mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_VESA_YouShouldSee5OemRelatedLines);
+	mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_VESA_OemInfo,vib.OemStringPtr);
+	mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_VESA_OemRevision,vib.OemSoftwareRev);
+	mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_VESA_OemVendor,vib.OemVendorNamePtr);
+	mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_VESA_OemProductName,vib.OemProductNamePtr);
+	mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_VESA_OemProductRev,vib.OemProductRevPtr);
+	mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_VESA_Hint);
 	/* Find best mode here */
 	num_modes = 0;
 	mode_ptr = vib.VideoModePtr;
@@ -717,15 +715,15 @@
 	}
 	if( mp_msg_test(MSGT_VO,MSGL_V) )
 	{
-	  printf("vo_vesa: Requested mode: %ux%u@%u (%s)\n",width,height,bpp,vo_format_name(format));
-	  printf("vo_vesa: Total modes found: %u\n",num_modes);
+	  mp_msg(MSGT_VO,MSGL_V, "vo_vesa: Requested mode: %ux%u@%u (%s)\n",width,height,bpp,vo_format_name(format));
+	  mp_msg(MSGT_VO,MSGL_V, "vo_vesa: Total modes found: %u\n",num_modes);
 	  mode_ptr = vib.VideoModePtr;
-	  printf("vo_vesa: Mode list:");
+	  mp_msg(MSGT_VO,MSGL_V, "vo_vesa: Mode list:");
 	  for(i = 0;i < num_modes;i++)
 	  {
-	    printf(" %04X",mode_ptr[i]);
+	    mp_msg(MSGT_VO,MSGL_V, " %04X",mode_ptr[i]);
 	  }
-	  printf("\nvo_vesa: Modes in detail:\n");
+	  mp_msg(MSGT_VO,MSGL_V, "\nvo_vesa: Modes in detail:\n");
 	}
 	mode_ptr = vib.VideoModePtr;
 	if(use_scaler)
@@ -760,7 +758,7 @@
 		   }
 		if( mp_msg_test(MSGT_VO,MSGL_V) )
 		{
-		  printf("vo_vesa: Mode (%03u): mode=%04X %ux%u@%u attr=%04X\n"
+		  mp_msg(MSGT_VO,MSGL_V, "vo_vesa: Mode (%03u): mode=%04X %ux%u@%u attr=%04X\n"
 			 "vo_vesa:             #planes=%u model=%u(%s) #pages=%u\n"
 			 "vo_vesa:             winA=%X(attr=%u) winB=%X(attr=%u) winSize=%u winGran=%u\n"
 			 "vo_vesa:             direct_color=%u DGA_phys_addr=%08lX\n"
@@ -769,7 +767,7 @@
 			 ,vmib.WinASegment,vmib.WinAAttributes,vmib.WinBSegment,vmib.WinBAttributes,vmib.WinSize,vmib.WinGranularity
 			 ,vmib.DirectColorModeInfo,vmib.PhysBasePtr);
 		  if(vmib.MemoryModel == 6 || vmib.MemoryModel == 7)
-			printf("vo_vesa:             direct_color_info = %u:%u:%u:%u\n"
+			mp_msg(MSGT_VO,MSGL_V, "vo_vesa:             direct_color_info = %u:%u:%u:%u\n"
 				,vmib.RedMaskSize,vmib.GreenMaskSize,vmib.BlueMaskSize,vmib.RsvdMaskSize);
 		  fflush(stdout);
 		}
@@ -784,14 +782,14 @@
 			return -1;
 		}
 		if( mp_msg_test(MSGT_VO,MSGL_V) ) {
-			printf("vo_vesa: Initial video mode: %x\n",init_mode); }
+			mp_msg(MSGT_VO,MSGL_V, "vo_vesa: Initial video mode: %x\n",init_mode); }
 		if((err=vbeGetModeInfo(video_mode,&video_mode_info)) != VBE_OK)
 		{
 			PRINT_VBE_ERR("vbeGetModeInfo",err);
 			return -1;
 		}
 		dstBpp = video_mode_info.BitsPerPixel;
-		printf("vo_vesa: Using VESA mode (%u) = %x [%ux%u@%u]\n"
+ 		mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_VESA_UsingVesaMode
 			,best_mode_idx,video_mode,video_mode_info.XResolution
 			,video_mode_info.YResolution,dstBpp);
 		if(subdev_flags & SUBDEV_NODGA) video_mode_info.PhysBasePtr = 0;
@@ -826,11 +824,11 @@
 		    sws = sws_getContextFromCmdLine(srcW,srcH,srcFourcc,dstW,dstH,dstFourcc);
 		    if(!sws)
 		    {
-			printf("vo_vesa: Can't initialize SwScaler\n");
+ 			mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_VESA_CantInitializeSwscaler);
 			return -1;
 		    }
 		    else if( mp_msg_test(MSGT_VO,MSGL_V) ) {
-			printf("vo_vesa: Using SW BES emulator\n"); }
+			mp_msg(MSGT_VO,MSGL_V, "vo_vesa: Using SW BES emulator\n"); }
 		}
 		if((video_mode_info.WinAAttributes & FRAME_MODE) == FRAME_MODE)
 		   win.idx = 0; /* frame A */
@@ -846,7 +844,7 @@
 		    vsize = vib.TotalMemory*64*1024;
 		    lfb = vbeMapVideoBuffer(video_mode_info.PhysBasePtr,vsize);
 		    if(lfb == NULL)
-		      printf("vo_vesa: Can't use DGA. Force bank switching mode. :(\n");
+		      mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_VESA_CantUseDga);
 		    else
 		    {
 		      video_base = win.ptr = lfb;
@@ -854,7 +852,7 @@
 		      win.high = vsize;
 		      win.idx = -1; /* HAS_DGA() is on */
 		      video_mode |= VESA_MODE_USE_LINEAR;
-		      printf("vo_vesa: Using DGA (physical resources: %08lXh, %08lXh)"
+ 		      mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_VESA_UsingDga
 			     ,video_mode_info.PhysBasePtr
 			     ,vsize);
 		      if( mp_msg_test(MSGT_VO,MSGL_V) ) {
@@ -862,30 +860,30 @@
 		      printf("\n");
 		      if(!(multi_size = fillMultiBuffer(vsize,2))) return -1;
 		      if(vo_doublebuffering && multi_size < 2)
-			printf("vo_vesa: Can't use double buffering: not enough video memory\n");
+ 			mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_VESA_CantUseDoubleBuffering);
 		    }
 		}
 		if(win.idx == -2)
 		{
-		   printf("vo_vesa: Can't find neither DGA nor relocatable window's frame.\n");
+ 		   mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_VESA_CantFindNeitherDga);
 		   return -1;
 		}
 		if(!HAS_DGA())
 		{
 		  if(subdev_flags & SUBDEV_FORCEDGA)
 		  {
-			printf("vo_vesa: you've forced DGA. Exiting\n");
+ 			mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_VESA_YouveForcedDga);
 			return -1;
 		  }
 		  if(!(win_seg = win.idx == 0 ? video_mode_info.WinASegment:video_mode_info.WinBSegment))
 		  {
-		    printf("vo_vesa: Can't find valid window address\n");
+ 		    mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_VESA_CantFindValidWindowAddress);
 		    return -1;
 		  }
 		  win.ptr = PhysToVirtSO(win_seg,0);
 		  win.low = 0L;
 		  win.high= video_mode_info.WinSize*1024;
-		  printf("vo_vesa: Using bank switching mode (physical resources: %08lXh, %08lXh)\n"
+ 		  mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_VESA_UsingBankSwitchingMode
 			 ,(unsigned long)win.ptr,(unsigned long)win.high);
 		}
 		if(video_mode_info.XResolution > dstW)
@@ -895,7 +893,7 @@
 		    y_offset = (video_mode_info.YResolution - dstH) / 2;
 		else y_offset = 0;
 		if( mp_msg_test(MSGT_VO,MSGL_V) )
-		  printf("vo_vesa: image: %ux%u screen = %ux%u x_offset = %u y_offset = %u\n"
+ 		  mp_msg(MSGT_VO,MSGL_V, "vo_vesa: image: %ux%u screen = %ux%u x_offset = %u y_offset = %u\n"
 			,dstW,dstH
 			,video_mode_info.XResolution,video_mode_info.YResolution
 			,x_offset,y_offset);
@@ -915,11 +913,11 @@
 		  {
 		    if(!(dga_buffer = memalign(64,video_mode_info.XResolution*video_mode_info.YResolution*dstBpp)))
 		    {
-		      printf("vo_vesa: Can't allocate temporary buffer\n");
+ 		      mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_VESA_CantAllocateTemporaryBuffer);
 		      return -1;
 		    }
 		    if( mp_msg_test(MSGT_VO,MSGL_V) ) {
-			printf("vo_vesa: dga emulator was allocated = %p\n",dga_buffer); }
+			mp_msg(MSGT_VO,MSGL_V, "vo_vesa: dga emulator was allocated = %p\n",dga_buffer); }
 		  }
 		}
 		if((err=vbeSaveState(&init_state)) != VBE_OK)
@@ -952,28 +950,28 @@
 		if (neomagic_tvout) {
 		    err = vbeSetTV(video_mode,neomagic_tvnorm);
 		    if (err!=0x4f) {
-		    printf("vo_vesa: Sorry unsupported mode, try -x 640 -zoom\n");
+ 		    mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_VESA_SorryUnsupportedMode);
 		    }
 		    else {
-		    printf("vo_vesa: Oh you really have picture on TV!\n");
+ 		    mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_VESA_OhYouReallyHavePictureOnTv);
 		    } 
 		}
 		/* Now we are in video mode!!!*/
 		/* Below 'return -1' is impossible */
 		if( mp_msg_test(MSGT_VO,MSGL_V) )
 		{
-		  printf("vo_vesa: Graphics mode was activated\n");
+		  mp_msg(MSGT_VO,MSGL_V, "vo_vesa: Graphics mode was activated\n");
 		  fflush(stdout);
 		}
 		if(lvo_name)
 		{
 		  if(vlvo_init(width,height,x_offset,y_offset,dstW,dstH,format,dstBpp) != 0)
 		  {
-		    printf("vo_vesa: Can't initialize Linux Video Overlay\n");
+ 		    mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_VESA_CantInitialozeLinuxVideoOverlay);
 		    vesa_term();
 		    return -1;
 		  }
-		  else printf("vo_vesa: Using video overlay: %s\n",lvo_name);
+		  else mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_VESA_UsingVideoOverlay,lvo_name);
 		  lvo_opened = 1;
 		}
 #ifdef CONFIG_VIDIX
@@ -984,11 +982,11 @@
 				dstH,format,dstBpp,
 				video_mode_info.XResolution,video_mode_info.YResolution) != 0)
 		  {
-		    printf("vo_vesa: Can't initialize VIDIX driver\n");
+		    mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_VESA_CantInitializeVidixDriver);
 		    vesa_term();
 		    return -1;
 		  }
-		  else printf("vo_vesa: Using VIDIX\n");
+		  else mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_VESA_UsingVidix);
 		  vidix_start();
 
 		  /* set colorkey */       
@@ -1014,12 +1012,12 @@
 	}
 	else
 	{
-	  printf("vo_vesa: Can't find mode for: %ux%u@%u\n",width,height,bpp);
+ 	  mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_VESA_CantFindModeFor,width,height,bpp);
 	  return -1;
 	}
 	if( mp_msg_test(MSGT_VO,MSGL_V) )
 	{
-	  printf("vo_vesa: VESA initialization complete\n");
+	  mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_VESA_InitializationComplete);
 	  fflush(stdout);
 	}
 	if(HAS_DGA() && vo_doublebuffering)
@@ -1052,14 +1050,14 @@
     // not inited
     vesa_term();
     if( mp_msg_test(MSGT_VO,MSGL_DBG3) )
-        printf("vo_vesa: uninit was called\n");
+        mp_msg(MSGT_VO,MSGL_DBG3, "vo_vesa: uninit was called\n");
 }
 
 
 static void check_events(void)
 {
     if( mp_msg_test(MSGT_VO,MSGL_DBG3) )
-        printf("vo_vesa: check_events was called\n");
+        mp_msg(MSGT_VO,MSGL_DBG3, "vo_vesa: check_events was called\n");
 /* Nothing to do */
 }
 
@@ -1068,9 +1066,9 @@
   int pre_init_err = 0;
   int fd;
   if( mp_msg_test(MSGT_VO,MSGL_DBG2) )
-        printf("vo_vesa: preinit(%s) was called\n",arg);
+        mp_msg(MSGT_VO,MSGL_DBG2, "vo_vesa: preinit(%s) was called\n",arg);
   if( mp_msg_test(MSGT_VO,MSGL_DBG3) )
-        printf("vo_vesa: subdevice %s is being initialized\n",arg);
+        mp_msg(MSGT_VO,MSGL_DBG3, "vo_vesa: subdevice %s is being initialized\n",arg);
   subdev_flags = 0;
   lvo_name = NULL;
 #ifdef CONFIG_VIDIX
@@ -1089,7 +1087,7 @@
   else
   	close(fd);
   if( mp_msg_test(MSGT_VO,MSGL_DBG3) )
-        printf("vo_subdevice: initialization returns: %i\n",pre_init_err);
+        mp_msg(MSGT_VO,MSGL_DBG3, "vo_subdevice: initialization returns: %i\n",pre_init_err);
   return pre_init_err;
 }
 
--- a/libvo/vo_x11.c	Sun Apr 23 23:28:46 2006 +0000
+++ b/libvo/vo_x11.c	Mon Apr 24 04:23:53 2006 +0000
@@ -44,6 +44,7 @@
 #include "libmpcodecs/vf_scale.h"
 
 #include "mp_msg.h"
+#include "help_mp.h"
 
 #ifdef HAVE_NEW_GUI
 #include "Gui/interface.h"
@@ -654,7 +655,7 @@
 
     return draw_slice(src, stride, srcW, srcH, 0, 0);
 #else
-    printf("draw_frame() called!!!!!!\n");
+    mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_X11_DrawFrameCalled);
     return -1;
 #endif
 }
--- a/libvo/vo_xv.c	Sun Apr 23 23:28:46 2006 +0000
+++ b/libvo/vo_xv.c	Mon Apr 24 04:23:53 2006 +0000
@@ -668,7 +668,7 @@
 
 static int draw_frame(uint8_t * src[])
 {
-    printf("draw_frame() called!!!!!!");
+    mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_XV_DrawFrameCalled);
     return -1;
 }
 
--- a/libvo/vosub_vidix.c	Sun Apr 23 23:28:46 2006 +0000
+++ b/libvo/vosub_vidix.c	Mon Apr 24 04:23:53 2006 +0000
@@ -25,6 +25,7 @@
 
 #include "config.h"
 #include "mp_msg.h"
+#include "help_mp.h"
 
 #include "vosub_vidix.h"
 #include "vidix/vidixlib.h"
@@ -63,7 +64,7 @@
     int err;
     if((err=vdlPlaybackOn(vidix_handler))!=0)
     {
-	printf("vosub_vidix: Can't start playback: %s\n",strerror(err));
+	mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_SUB_VIDIX_CantStartPlayback,strerror(err));
 	return -1;
     }
     video_on=1;
@@ -75,7 +76,7 @@
     int err;
     if((err=vdlPlaybackOff(vidix_handler))!=0)
     {
-	printf("vosub_vidix: Can't stop playback: %s\n",strerror(err));
+	mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_SUB_VIDIX_CantStopPlayback,strerror(err));
 	return -1;
     }
     video_on=0;
@@ -85,7 +86,7 @@
 void vidix_term( void )
 {
   if( mp_msg_test(MSGT_VO,MSGL_DBG2) ) {
-    printf("vosub_vidix: vidix_term() was called\n"); }
+    mp_msg(MSGT_VO,MSGL_DBG2, "vosub_vidix: vidix_term() was called\n"); }
 	vidix_stop();
 	vdlClose(vidix_handler);
 //  ((vo_functions_t *)vo_server)->control=server_control;
@@ -173,7 +174,7 @@
     
     if (vidix_play.flags & VID_PLAY_INTERLEAVED_UV)
     {
-	printf("vosub_vidix: interleaved uv for yuv410p not supported\n");
+	mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_SUB_VIDIX_InterleavedUvForYuv410pNotSupported);
     }
     else 
     {
@@ -249,13 +250,13 @@
 
 uint32_t vidix_draw_slice(uint8_t *image[], int stride[], int w,int h,int x,int y)
 {
-    printf("vosub_vidix: dummy vidix_draw_slice() was called\n");
+    mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_SUB_VIDIX_DummyVidixdrawsliceWasCalled);
     return -1;
 }
 
 static uint32_t  vidix_draw_image(mp_image_t *mpi){
     if( mp_msg_test(MSGT_VO,MSGL_DBG2) ) {
-      printf("vosub_vidix: vidix_draw_image() was called\n"); }
+      mp_msg(MSGT_VO,MSGL_DBG2, "vosub_vidix: vidix_draw_image() was called\n"); }
 
     // if -dr or -slices then do nothing:
     if(mpi->flags&(MP_IMGFLAG_DIRECT|MP_IMGFLAG_DRAW_CALLBACK)) return VO_TRUE;
@@ -267,14 +268,14 @@
 
 uint32_t vidix_draw_frame(uint8_t *image[])
 {
-  printf("vosub_vidix: dummy vidix_draw_frame() was called\n");
+  mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_SUB_VIDIX_DummyVidixdrawframeWasCalled);
   return -1;
 }
 
 void     vidix_flip_page(void)
 {
   if( mp_msg_test(MSGT_VO,MSGL_DBG2) ) {
-    printf("vosub_vidix: vidix_flip_page() was called\n"); }
+    mp_msg(MSGT_VO,MSGL_DBG2, "vosub_vidix: vidix_flip_page() was called\n"); }
   if(vo_doublebuffering)
   {
 	vdlPlaybackFrameSelect(vidix_handler,next_frame);
@@ -335,7 +336,7 @@
 void     vidix_draw_osd(void)
 {
   if( mp_msg_test(MSGT_VO,MSGL_DBG2) ) {
-    printf("vosub_vidix: vidix_draw_osd() was called\n"); }
+    mp_msg(MSGT_VO,MSGL_DBG2, "vosub_vidix: vidix_draw_osd() was called\n"); }
   /* TODO: hw support */
   vo_draw_text(vidix_play.src.w,vidix_play.src.h,draw_alpha);
 }
@@ -343,7 +344,7 @@
 uint32_t vidix_query_fourcc(uint32_t format)
 {
   if( mp_msg_test(MSGT_VO,MSGL_DBG2) ) {
-    printf("vosub_vidix: query_format was called: %x (%s)\n",format,vo_format_name(format)); }
+    mp_msg(MSGT_VO,MSGL_DBG2, "vosub_vidix: query_format was called: %x (%s)\n",format,vo_format_name(format)); }
   vidix_fourcc.fourcc = format;
   vdlQueryFourcc(vidix_handler,&vidix_fourcc);
   if (vidix_fourcc.depth == VID_DEPTH_NONE)
@@ -414,7 +415,7 @@
   int err;
   uint32_t sstride,apitch;
   if( mp_msg_test(MSGT_VO,MSGL_DBG2) )
-     printf("vosub_vidix: vidix_init() was called\n"
+     mp_msg(MSGT_VO,MSGL_DBG2, "vosub_vidix: vidix_init() was called\n"
     	    "src_w=%u src_h=%u dest_x_y_w_h = %u %u %u %u\n"
 	    "format=%s dest_bpp=%u vid_w=%u vid_h=%u\n"
 	    ,src_width,src_height,x_org,y_org,dst_width,dst_height
@@ -422,7 +423,7 @@
 
 	if(vidix_query_fourcc(format) == 0)
 	{
-	  printf("vosub_vidix: unsupported fourcc for this vidix driver: %x (%s)\n",
+	  mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_SUB_VIDIX_UnsupportedFourccForThisVidixDriver,
 	    format,vo_format_name(format));
 	  return -1;
 	} 
@@ -432,7 +433,7 @@
 	    ((vidix_cap.maxheight != -1) && (vid_h > vidix_cap.maxheight)) ||
 	    ((vidix_cap.minwidth != -1 ) && (vid_h < vidix_cap.minheight)))
 	{
-	  printf("vosub_vidix: video server has unsupported resolution (%dx%d), supported: %dx%d-%dx%d\n",
+	  mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_SUB_VIDIX_VideoServerHasUnsupportedResolution,
 	    vid_w, vid_h, vidix_cap.minwidth, vidix_cap.minheight,
 	    vidix_cap.maxwidth, vidix_cap.maxheight);
 	  return -1;
@@ -454,19 +455,19 @@
 	}
 	if(err)
 	{
-	  printf("vosub_vidix: video server has unsupported color depth by vidix (%d)\n"
+	  mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_SUB_VIDIX_VideoServerHasUnsupportedColorDepth
 	  ,vidix_fourcc.depth);
 	  return -1;
 	}
 	if((dst_width > src_width || dst_height > src_height) && (vidix_cap.flags & FLAG_UPSCALER) != FLAG_UPSCALER)
 	{
-	  printf("vosub_vidix: vidix driver can't upscale image (%d%d -> %d%d)\n",
+	  mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_SUB_VIDIX_DriverCantUpscaleImage,
 	  src_width, src_height, dst_width, dst_height);
 	  return -1;
 	}
 	if((dst_width > src_width || dst_height > src_height) && (vidix_cap.flags & FLAG_DOWNSCALER) != FLAG_DOWNSCALER)
 	{
-	  printf("vosub_vidix: vidix driver can't downscale image (%d%d -> %d%d)\n",
+	  mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_SUB_VIDIX_DriverCantDownscaleImage,
 	  src_width, src_height, dst_width, dst_height);
 	  return -1;
 	}
@@ -494,11 +495,11 @@
 
 	if((err=vdlConfigPlayback(vidix_handler,&vidix_play))!=0)
 	{
-		printf("vosub_vidix: Can't configure playback: %s\n",strerror(err));
+ 		mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_SUB_VIDIX_CantConfigurePlayback,strerror(err));
 		return -1;
 	}
 	if ( mp_msg_test(MSGT_VO,MSGL_V) ) {
-		printf("vosub_vidix: using %d buffer(s)\n", vidix_play.num_frames); }
+		mp_msg(MSGT_VO,MSGL_V, "vosub_vidix: using %d buffer(s)\n", vidix_play.num_frames); }
 
 	vidix_mem = vidix_play.dga_addr;
 
@@ -709,10 +710,10 @@
 {
   int err;
   if( mp_msg_test(MSGT_VO,MSGL_DBG2) ) {
-    printf("vosub_vidix: vidix_preinit(%s) was called\n",drvname); }
+    mp_msg(MSGT_VO,MSGL_DBG2, "vosub_vidix: vidix_preinit(%s) was called\n",drvname); }
 	if(vdlGetVersion() != VIDIX_VERSION)
 	{
-	  printf("vosub_vidix: You have wrong version of VIDIX library\n");
+	  mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_SUB_VIDIX_YouHaveWrongVersionOfVidixLibrary);
 	  return -1;
 	}
 #ifndef __MINGW32__
@@ -729,16 +730,16 @@
               
 	if(vidix_handler == NULL)
 	{
-		printf("vosub_vidix: Couldn't find working VIDIX driver\n");
+		mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_SUB_VIDIX_CouldntFindWorkingVidixDriver);
 		return -1;
 	}
 	if((err=vdlGetCapability(vidix_handler,&vidix_cap)) != 0)
 	{
-		printf("vosub_vidix: Couldn't get capability: %s\n",strerror(err));
+		mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_SUB_VIDIX_CouldntGetCapability,strerror(err));
 		return -1;
 	}
-	printf("VIDIX: Description: %s\n", vidix_cap.name);
-	printf("VIDIX: Author: %s\n", vidix_cap.author);
+	mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_SUB_VIDIX_Description, vidix_cap.name);
+	mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_SUB_VIDIX_Author, vidix_cap.author);
 	/* we are able to tune up this stuff depend on fourcc format */
 	((vo_functions_t *)server)->draw_slice=vidix_draw_slice;
 	((vo_functions_t *)server)->draw_frame=vidix_draw_frame;