summaryrefslogtreecommitdiffstats
path: root/libvo
Commit message (Collapse)AuthorAgeFilesLines
* vo_opengl: fix help output typowm42012-10-231-1/+1
|
* vo_vdpau: fix screenshotswm42012-10-211-18/+32
| | | | | | | | | | | | | | | | Attempting to take screenshots printed vdpau errors on the terminal, and the resulting screenshots were filled with black. The problem was that that the screenshot code tried to use an unallocated output surface (the one at vc->output_surfaces[vc->num_output_surfaces]). This used to refer to the last allocated surface, until this was changed by a recently merged commit. That commit also added a separate screenshot surface. The merge somehow went wrong, and that part was not integrated. <uau> wm4: you used an earlier buggy version of a commit OK...
* VO: fix screenshot size with -geometrywm42012-10-204-24/+8
| | | | | | | | | | The -geometry switch works by modifying the d_width/d_height values passed to VOs. Moreover, d_width/d_height seem to be subject to the -monitorpixelaspect option. Screenshots should not be influenced by this. Change screenshot supporting VOs to use the original d_width/d_height values stored in vo->aspdat.prew/h. (Not all uses of -geometry did this. E.g. --geometry=900x560+0+20 did.)
* gl_common: hack to support compilation on FreeBSDwm42012-10-201-0/+12
| | | | | | It seems FreeBSD 10.0-CURRENT as of this time doesn't include the GLX extension and header file definitions for creating OpenGL 3.x core contexts. Dump some more hacks into gl_header_fixes.h.
* cocoa_common: avoid situational nil dereferencingStefano Pigozzi2012-10-191-2/+3
|
* cocoa_common: use the same window level when windowed and fullscreenStefano Pigozzi2012-10-161-17/+7
| | | | | | | | This greatly simplifies the code and makes alt tab behave like it is supposed to: it doesn't put the mplayer window behind the other ones when losing focus. If you have other programs that are displaying themselves above the normal window level, avoid them or use --ontop.
* cocoa_common: split window creation in helper functionsStefano Pigozzi2012-10-161-88/+112
| | | | This commit hopefully makes it easier to follow the flow of the program.
* cocoa_common: cosmetics / reformatStefano Pigozzi2012-10-161-87/+118
| | | | | Use 80columns almost exclusively and reformat Objective-C messages declarations to follow Apple's style (i.e.: - (int)name; instead of - (int) name;).
* gl_common: remove useless cocoa wrapper functionsStefano Pigozzi2012-10-161-18/+3
|
* cocoa_common: remove useless importStefano Pigozzi2012-10-161-2/+0
| | | | | QuartzCore was probably forgot after extracting the code from `vo_corevideo`. The OpenGL.h include can be avoided with no warnings/errors.
* cocoa_common: replace TickCount() with NSProcessInfo#systemUptimeStefano Pigozzi2012-10-161-4/+3
| | | | | TickCount is depracted in OS X 10.8. Substitute it with a public Cocoa API call available since OS X 10.6.
* cocoa_common: use IOKit to perform power managementStefano Pigozzi2012-10-167-10/+78
| | | | | | This allows to remove the call to the deprecated `UpdateSystemActivity`. The additional benefit is power management is disabled only if the video is really playing. A paused video will not stop the system from idling.
* cocoa_common: save state in the vo structStefano Pigozzi2012-10-165-62/+85
| | | | | Save the cocoa state in an instance variable for the Objective-C part of the code and use a field in the vo struct for the raw C part of the code.
* manpage: improvements to vo_opengl documentationwm42012-10-151-7/+7
| | | | | | | | Mention the FBO format chaos. Some other things were not entirely correct anymore. Also update the "builtin" documentation in vo_opengl.c.
* input: track location info for input commandswm42012-10-141-1/+1
| | | | | | If parsing a command fails, its location is printed. The location is the path to the input.conf, and the line number of the key binding and the associated input command.
* vo_opengl: fix filter reinitializationwm42012-10-141-4/+4
| | | | | | | The second scaling filter (cscale) was never reset correctly due to a fatal oversight. In particular, this could lead to OpenGL errors, if the new filter needs a 2D texture, but the old texture was 1D (because init_scaler reuses the texture).
* Merge branch 'input_changes' into masterwm42012-10-121-1/+1
|\ | | | | | | | | | | | | | | Conflicts: DOCS/man/en/vo.rst etc/input.conf input/input.c m_property.c
| * input: verify input.conf on loadingwm42012-10-121-1/+1
| | | | | | | | | | | | | | | | | | When input.conf is loaded, verify each command and print a warning if it's invalid or uses legacy commands. This is done for both the user's and the embedded config files. The diff is a bit noisy, because mp_input_parse_cmd() is changed to take a bstr as argument instead of a char*.
* | Rename to "mpv"wm42012-10-126-13/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changes the name of this project to mpv. Most user-visible mentions of "MPlayer" and "mplayer" are changed to "mpv". The binary name and the default config file location are changed as well. The new default config file location is: ~/.mpv/ Remove etc/mplayer.desktop. Apparently this was for the MPlayer GUI, which has been removed from mplayer2 ages ago. We don't have a logo, and the MS Windows resource files sort-of require one, so leave etc/mplayer.ico/.xpm as-is. Remove the debian and rpm packaging scripts. These contained outdated dependencies and likely were more harmful than useful. (Patches which add working and well-tested packaging are welcome.)
* | gl_common: allow compilation on Mac OS 10.6Stefano Pigozzi2012-10-072-1/+18
| | | | | | | | | | Define just enough constants to allow compilation on OS X Snow Leopard. mpv's OpenGL autodetection features should make the rest.
* | vo_opengl: don't try to map an empty bufferwm42012-10-031-1/+1
| | | | | | | | | | | | | | | | The change detection signalled a full re-upload on initialization, but no texture reallocation. Binding the uninitialized buffer caused an OpenGL error. Fixes error messages on start with "opengl-hq".
* | vo_opengl: change default FBO formatwm42012-10-031-1/+1
| | | | | | | | | | | | | | | | | | GL_RGB16 doesn't seem to work universally (e.g. Intel). Use GL_RGB by default, and use GL_RGB16 for "opengl-hq" only. This may require users of Intel GPUs to manually experiment with the fbo-format suboption when using "opengl-hq", as GL_RGB16 doesn't seem to work there in some cases (black screen).
* | vo_opengl: use PBOs by default with opengl-hqwm42012-10-031-1/+1
| | | | | | | | | | | | | | | | | | | | It's not really known whether PBO use causes problems of any kind (most likely not). They should slightly increase performance. Use them by default with "opengl-hq". Even though PBOs don't have anything to do with rendering quality, "opengl-hq" provides a test bed for features that should be enabled by default, but aren't out of fear for regressions.
* | vo_opengl: use low quality default settings, add opengl-hq aliaswm42012-10-032-7/+31
| | | | | | | | | | | | | | | | Change the default settings for vo_opengl to highest performance and compatibility, but lowest quality. Use bilinear as default scaler. Add "opengl-hq" as alias for high quality settings. This alias uses exactly the same settings as vo_opengl did before this commit.
* | VO: add mechanism to replace old VO names, use it with "gl" and "gl3"wm42012-10-032-37/+24
| | | | | | | | | | Rather than duplicating the VO driver structs to add aliases, replace them textually when searching for the VO on initialization.
* | vo_opengl: always check GL errors in first 5 frameswm42012-10-031-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | Normally, we don't want to call glGetError() all the time, because this supposedly causes slowdowns. (I could not measure any on Linux with nVidia binary drivers; maybe it's due to the fact that we have only a few, expensive calls per frame.) However, having to ask users to add the "debug" suboption when trying to diagnose problems is very annoying. Since most errors happen during initialization only, enabling it for the first 5 frames only is an interesting compromise.
* | VO: actually rename VOs gl -> opengl-old, gl3 -> openglwm42012-10-033-39/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | This renames vo_gl3 to vo_opengl, and makes it the default. The old vo_gl is still available under "opengl-old". We keep "gl3" as alias to "opengl" for short-term compatibility. For OSX/Cocoa, the autoprobe order changes (prefer the "opengl" over "opengl-old"). Remove "gl_nosw". This was a compatibility alias for "opengl-old", and there's no point in keeping it.
* | VO: rename file: vo_gl3_shaders.glsl -> vo_opengl_shaders.glslwm42012-10-032-2/+2
| |
* | VO: rename file: vo_gl3.c -> vo_opengl.cwm42012-10-031-0/+0
| |
* | VO: rename file: vo_gl.c -> vo_opengl_old.cwm42012-10-031-0/+0
| |
* | gl_common: require GLX 1.3 for vo_gl, remove old pre-1.3 codewm42012-10-031-123/+91
| | | | | | | | | | | | Now both GL3 (for vo_gl3) and legacy context context creation (for vo_gl) use the same code to create the X window. Only actual GL context creation is different.
* | vo_gl3: make it work on OpenGL 2.1wm42012-10-037-642/+956
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now vo_gl3 should work with standard OpenGL 2.1, as long as the GL_ARB_texture_rg extension is available. Optional features, which require features that are always in OpenGL 3.0, but are available as extensions only in OpenGL 2.1, are automatically disabled. The force-gl2 suboption, which was an unreliable hack to run vo_gl3 in an OpenGL 2.1 context, is removed. Significant changes are done to the extension loader to make it easier to identify optional OpenGL features. Context creation is a bit changed to simplify the code and to handle the fallback better if OpenGL 3 context creation fails, and creating an OpenGL legacy context is attempted. Based on the initial work by Rudolf Polzer <divverent@xonotic.org>, which included making the shader GLSL 1.20 compatible, and more.
* | encode: fix -ocopyts with certain DVD imagesRudolf Polzer2012-09-291-56/+50
|/ | | | | | When timestamps jump by more than 30 seconds, assume an unexpected discontinuity. Fixes encoding aborts (i.e. no more frames written) at DVD cell switches.
* cocoa_common: make fullscreen menubar/dock hiding conditionalStefano Pigozzi2012-09-181-1/+9
| | | | | | | | | | cocoa_common was hiding the dock and menubar unconditionally when going fullscreen. This means they were hidden even if they weren't on the screen mplayer2 was going fullscreen on, resulting in poor user experience. Change the fullscreen function in the cocoa backend to check that mplayer2 is on the same screen as the menubar/dock before hiding them.
* encode: video encoding now supported using mencoder-like optionsRudolf Polzer2012-09-185-22/+631
|
* subs, vo_vdpau: support RGBA color for PGS subtitlesUoti Urpala2012-09-183-40/+127
| | | | | | | | | | | | | | | | | | | | | | Support passing bitmap subtitles to VOs in full RGBA color, and implement this for libavcodec-decoded subtitle formats on decoding side and vo_vdpau on display side. Currently this is enabled for PGS (blu-ray) and DVB subtitles. VDPAU seems to have sampling issues similar to known GL ones when drawing a sub-rectangle from a larger texture with scaling, where adjacent pixels outside the specified source rectangle affect the result. As the bitmap subtitles may be scaled, add padding support to the bitmap packer code. In principle, this could be used for colored DVD subtitles too. However, the libavcodec DVD decoder lacks parts of the resolution and palette handling that are present in spudec.c. Conflicts: libvo/vo_gl.c sub/dec_sub.h sub/sd_lavc.c
* Remove VESA/FBDEV remains, clean up example.confwm42012-09-182-93/+0
| | | | | | Remove VESA and FBDEV specific code that was forgotten when the respective VOs were removed. Remove references to old or broken stuff from example.conf.
* subs, vo: do sub bitmap change detection by comparing IDsUoti Urpala2012-09-183-8/+16
| | | | | | | | | | | | | | | | | vo_vdpau and vo_gl cache the last subtitle bitmaps uploaded to video card in case they stay the same over multiple frames. Detecting whether the bitmaps have changed and should be re-uploaded was somewhat fragile. Change the VO API to provide a bitmap ID which can be compared with what the VO has to determine whether a new upload of the bitmaps is needed. Conflicts: libvo/vo_gl.c Note: the changes for vo_gl.c were not merged. Instead, eosd_packer is modified to use the new way of detecting EOSD changes. This takes care of vo_gl, vo_gl3 and vo_direct3d, which all render EOSD. They don't need to be updated in turn.
* vo_vdpau: split bitmap packing code into a separate fileUoti Urpala2012-09-183-146/+483
| | | | | | | | | | | | | | | | | | Split the vo_vdpau code that calculates how to pack all subtitle bitmaps into a larger surface into a separate file. This will allow using it in other VOs. Conflicts: Makefile libvo/vo_vdpau.c Note: this commit does the same as an earlier commit by me (4010dd0b1a27e3996). My commit added the vo_vdpau packer code as eosd_packer.c, while this commit by uau uses bitmap_packer.c. Since bitmap_packer.c has a different interface, and because there are more commits changing OSD rendering coming, I will pick uau's version. However, vo_gl, vo_gl3 and vo_direct3d are still using eosd_packer.c, so to make the transition easier, don't delete eosd_packer.c yet.
* cleanup: video_out: remove vo_subdevice global variablewm42012-09-182-8/+2
| | | | | | | This wasn't accessed anymore. This is all what was left of mplayer2 commit c54fae82fd16 ("vo: fix crash if all VO open fallback attempts fail").
* subs: always use sub decoder framework for libass renderingUoti Urpala2012-09-181-0/+1
| | | | | | | | | | | | | | | | | | | | | Remove subtitle selection code setting osd->ass_track directly and vf_ass/vf_vo code rendering the track directly with libass. Instead, do track selection and rendering with dec_sub.c functions. Before, mpctx->set_of_ass_tracks[] contained bare libass tracks generated from external subtitle files. For use with dec_sub.c, it now contains struct sh_sub instances with decoder already initialized. This commit breaks the sub_step command ('g' and 'y' keys) for libass-rendered subtitles. It could be fixed, but it's so useless - especially as with the existing implementation there's no practical way to get subtitle delay back to normal after using it - that I didn't bother. Conflicts: command.c mp_core.h mplayer.c
* subs: libass: use a single persistent renderer for subtitlesUoti Urpala2012-09-181-6/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To draw libass subtitles, the code used ASS_Renderer objects created in vf_vo (VO rendering) or vf_ass. They were destroyed and recreated together with the video filter chain. Change the code to use a single persistent renderer instance stored in the main osd_state struct. Because libass seems to misbehave if fonts are changed while a renderer exists (even if ass_set_fonts() is called on the renderer afterwards), the renderer is recreated after adding embedded fonts. The known benefits are simpler code and avoiding delays when switching between timeline parts from different files (libass fontconfig initialization, needed when creating a new renderer, can take a long time in some cases; switching between files rebuilds the video filter chain, and this required recreating the renderers). On the other hand, I'm not sure whether this could cause inefficient bitmap caching in libass; explicitly resetting the renderer in some cases could be beneficial. The new code does not keep the distinction of separate renderers for vsfilter munged aspect vs normal; this means that changing subtitle tracks can lose cache for the previous track. The new code always sets some libass parameters on each rendering call, which were previously only set if they had potentially changed. This should be harmless as libass itself has checks to see if the values differ from previous ones. Conflicts: command.c libmpcodecs/vf_ass.c libmpcodecs/vf_vo.c mplayer.c sub/ass_mp.c
* cleanup: remove pointless #definesUoti Urpala2012-09-182-11/+0
| | | | | | | | | | | | | | | | | | | | Remove the following #defines, which should never change in practice: CONFIG_FAKE_MONO, OUTBURST, FAST_OSD, FAST_OSD_TABLE The configure script hardcoded these to particular values in config.h. They could only be changed by manually editing it. I don't think anyone would want to. X11_FULLSCREEN This once did something, but became meaningless years ago and was now always set to true if the files using it were compiled at all. Conflicts: configure libvo/osd.c libvo/vo_gl.c Merged from mplayer2. The OSD defines were already removed in this fork.
* video_out: free memory if initializing a VO failswm42012-09-181-1/+3
| | | | This was a minor memory leak with no real impact.
* cocoa_common: improve conditional dock hiding from 3259e4a7aStefano Pigozzi2012-08-281-2/+3
| | | | | | Make the conditional hiding logic introduced in commit 3259e4a7a2a938 ("cocoa_common: make fullscreen menubar/dock hiding conditional") work when mplayer is started with the `fs` and `xineramascreen` options.
* Adjust ffmpeg/libav #includes to work with recent upstream changesUoti Urpala2012-08-211-1/+1
| | | | | | | | The <libavutil/avutil.h> stopped including <libavutil/common.h> recursively in recent ffmpeg/libav git revisions. As a result, some files no longer got needed definitions, causing a build failure. Modify #include lines in various files to fix build with the latest versions of ffmpeg/libav headers.
* video: honor the video's colormatrix and color range flagscantabile2012-08-212-0/+36
| | | | | | If either of them is not defined, the old behavior is used: - the colormatrix is guessed based on resolution. - the color range is assumed to be tv aka limited range.
* osd: get rid of useless initialization functionwm42012-08-202-20/+0
| | | | | The function merely printed redundant messages that were not visible by default.
* cocoa_common: add HiDPI/retina supportStefano Pigozzi2012-08-163-17/+63
| | | | | | | | | | | | | | | | | | | | With a HiDPI screen, for performance and backwards compatibility reasons, AppKit requests an OpenGL surface with a pixel number that equals the user points number. After the image is rendered to this smaller surface, it is upscaled so that its dimensions are comparable across screens of different DPIs. The applied scaling is not that good and makes the video/subtitles blurry; this is not acceptable for a video player. Request AppKit to use a high resolution OpenGL surface to back the mplayer2 OpenGL view. Also set the window pixel size information correctly in the VO object by converting user points to actual pixels. All the system version checks are done at runtime so that the feature is available on OSX 10.7 even with a binary compiled with older SDKs. Also replace is_lion_or_better() with is_osx_version_at_least(10, 7, 0) which is defined in osx_common.
* cocoa_common.m: add missing config.h includeStefano Pigozzi2012-08-161-0/+2
| | | | This is needed for the check on CONFIG_SDL in this file.
* cleanup: osx_common: remove unused functionsStefano Pigozzi2012-08-162-53/+0
| | | | | | | | | Remove functions that aren't called anymore: * `osx_foreground_hack` was replaced by the NSApplication's activateIgnoringOtherApps: in cocoa_common. * Aspect ratio functions were not called by the "new" cocoa backend, since the corresponding menu item was deleted.
* cocoa_common: refactor menu generationStefano Pigozzi2012-08-161-16/+41
| | | | | This commit is supposed to make the menu generation a little more readable. It also fixes menu generation for the `cmd+q` entry.
* gl_common: fix compilation on OS X 10.8Stefano Pigozzi2012-08-161-0/+6
| | | | | | | | | As of OS X 10.8 Apple completely removed X11 from the system. gl_common.h was including gl.h using the path <GL/gl.h>. This path comes from the X11 headers, which are missing in 10.8. Change gl_common.h to include gl.h from Apple's OpenGL implementation as <OpenGL/gl.h> if X11/XQuartz is not detected.
*