aboutsummaryrefslogtreecommitdiffhomepage
path: root/video
Commit message (Collapse)AuthorAge
* x11: factor out normal window resize codeGravatar wm42013-10-31
| | | | | | | | As preparation for resizing the window with input commands in the following commit. Since there are already so many functions which somehow resize the window, add the word "highlevel" to the name of this new function.
* vd_lavc: add more ifdeffery and ffmpeg cargo culting for correctnessGravatar wm42013-10-31
| | | | | | | | | | | | | We mixed the "old" AVFrame management functions (avcodec_alloc_frame, avcodec_free_frame) with reference counting. This doesn't work correctly; you must use av_frame_alloc and av_frame_free. Of course ffmpeg doesn't warn us about the bad usage, but will just mess up things silently. (Thanks a lot...) While the alloc function seems to be 100% compatible, the free function will do bad things, such as freeing memory that might still be referenced by another frame. I didn't experience any actual bugs, but maybe that was pure luck.
* dec_video: remove unused declaration of a former global variableGravatar wm42013-10-31
|
* gl_common: osx: fix compilation with latest XQuartz RCGravatar Stefano Pigozzi2013-10-30
| | | | Looks the gl.h header in XQuartz is incompatible with the one in OS X 10.9.
* x11: restore support for --wid=0Gravatar wm42013-10-30
| | | | | | | | | | This stopped working when the code was changed to create a window even if --wid is used. It appears we can't create our own window in this case, because in X11 there is no difference between a window with the root window as parent, and a window that is managed by the WM. So make this (kind of worthless) special case use the root window itself.
* x11: remove ancient metacity hackGravatar wm42013-10-30
| | | | | Tested with recent metacity; this code is not triggered anymore. The code was added in 2003 and probably has been unused for years.
* x11: minor cosmeticsGravatar wm42013-10-30
|
* gl_x11: change error message when GL3 context creation failsGravatar wm42013-10-28
| | | | | | | | | | | | | | On systems that provide legacy OpenGL (up to 2.1), but not GL3 and later, creating a GL3 context will fail. We then revert to legacy GL. Apparently the error message printed when the GL3 context creation fails is confusing. We could just silence it, but there's still a X error ("X11 error: GLXBadFBConfig"), which would be quite hard to filter out. For one, it would require messing with the X11 error handler, which doesn't even carry a context pointer (for application private data), so we don't even want to touch it. Instead, change the error message to inform the user what's actually happening: a fallback to an older version of OpenGL.
* x11_common: refactor of fstype codeGravatar wm42013-10-28
| | | | This is completely pointless, but it still somehow bugged me.
* cocoa: apply the more invasive constraining only with cmd+1/2/3Gravatar Stefano Pigozzi2013-10-28
| | | | | Regression from bc49957 Fixes #321
* x11: fix border togglingGravatar wm42013-10-27
| | | | | | | | | | | | | Trying to toggle the border during fullscreen (with "cycle border") would leave the window stuck without border, and it couldn't be restored. This was because vo_x11_decoration() always excepted to be called when toggling the state, and thus confusing the contents of the olddecor variable. Add got_motif_hints to hopefully prevent this. Also, when changing the border, don't take fs in account. May break on older/broken WMs, but all in all is in fact more robust and simpler, because you do not need to update the border state manually when returning from fullscreen.
* vo_xv: check whether image allocation succeedsGravatar wm42013-10-27
|
* gl_common: suggest --vo=opengl-old if OpenGL 2.1 missingGravatar wm42013-10-26
| | | | | | | If the caller requests at least OpenGL 2.1 (which --vo=opengl does), but we get OpenGL 1.x, suggest using opengl-old. Based on a patch by pfor on IRC.
* x11_common: reduce screensaver heartbeat from 30 to 10 secondsGravatar wm42013-10-25
| | | | | Apparently this fixes issues with Gnome, which has a smaller timeout. See github issue #315.
* cocoa: constraint the window position a little moreGravatar Stefano Pigozzi2013-10-25
| | | | | The intention of this is to not make the window go outside the screen when changing dimensions from 2x to .5x.
* wayland: better name for mouse coordinatesGravatar Alexander Preisinger2013-10-25
| | | | | I had to look up what the surf_x and surf_y members do. That means the name is not very good. Also a comment.
* wayland: fix fullscreen transparent border regionsGravatar Alexander Preisinger2013-10-25
| | | | | | | The default behavior of weston changed some time ago to not fill the surface black for fullscreen windows. Now let mpv draw the whole screen in fullscreen mode.
* m_config: refactor option defaults handlingGravatar wm42013-10-24
| | | | | | | | | | | | | Keep track of the default values directly, instead of creating a new instance of the option struct just to get the defaults. Also get rid of the special handling of m_obj_desc.init_options. Instead, handle it purely by the option parser. Originally, I wanted to handle --vo=opengl-hq and --vo=direct3d_shaders with this (by making them aliases to the real VOs with a different preset), but since --vo =opengl-hq=help prints the wrong values (as consequence of the simplification), I'm not doing that, and instead use something different.
* video/filter: remove useless vf_info fieldsGravatar wm42013-10-23
| | | | | This time I didn't bother to move the contents of the author field to the file headers. "git log" is your friend.
* video/out: remove useless info struct and redundant fieldsGravatar wm42013-10-23
| | | | The author and comment fields were printed only in -v mode.
* vo_opengl: don't enable PBOs with opengl-hqGravatar wm42013-10-23
| | | | | The speed advantages are marginal (at least with the way it's currently used), and it might actually be slower on some drivers, like Mesa.
* gl_video: add RGB10_A2 FBO formatGravatar wm42013-10-23
| | | | Maybe this can be the default in the future, but I'm not sure yet.
* cocoa: set and clear gl context inside of sync sectionsGravatar Stefano Pigozzi2013-10-20
| | | | | | | The code did not set and unset the current context inside sync sections. I am not sure if this was an actual problem but this is better since the context is linked to a single thread. In my brief tests this seems to avoid garbage to show up in fullscreen.
* wayland: use mp_input_test_draggingGravatar Alexander Preisinger2013-10-20
| | | | | | Instead of removing dragging we now test if it we should drag the window or not. Because if the OSC shows up we can not drag the window because that would cause mouse events that makes the OSC disappear.
* Revert "wayland: remove moving window by grabbing"Gravatar Alexander Preisinger2013-10-20
| | | | This reverts commit 3308bc2bc919cb8fadddad04e48b94d4e9324a34.
* Revert "wayland: remove outdated comment"Gravatar Alexander Preisinger2013-10-20
| | | | This reverts commit d75cfef49c271e43317666451f17c55e6747e564.
* vdpau_old: restore hardware decoding with old APIGravatar wm42013-10-19
| | | | --hwdec=vdpau did nothing with older ffmpeg/libav versions. Oops.
* mp_msg: remove gettext() supportGravatar wm42013-10-18
| | | | | | | | | Was disabled by default, was never used, internal support was inconsistent and poor, and there has been virtually no interest in creating translations. And I don't even think that a terminal program should be translated. This is something for (hypothetical) GUIs.
* sws_utils: work around libswscale crash with --contrast=-100Gravatar wm42013-10-16
|
* vf_scale: fix get/set confusionGravatar wm42013-10-16
| | | | This caused the equalizer controls to appear stuck.
* x11_common: don't handle mouse enter eventsGravatar wm42013-10-15
| | | | | | | | | | | | | | | | | | | | This could cause the OSC to be displayed without mouse interaction: for example, starting mpv with --fs, and putting the mouse to where the OSC area is beforehand, would cause the OSC to appear and stay visible. We don't want that. The simplest solution is not generating artificial mouse move events from mouse enter events, because they make the OSC think the mouse was actually moved. Also see commit 0c7978c, where handling of mouse enter events was added. This was supposed to fix certain corner cases, but they're not relevant anymore due to changes in OSC behavior. Commit 9777047 fixed this as well (by resetting the mouse state on MOUSE_LEAVE), but all the behavior reverted with this commit as perhaps a bad idea. It wasn't very robust, made it hard to distinguish real events from artificial ones, and finally made the mouse cursor more often visible than needed. (Now switching between workspaces doesn't make the cursor visible again when switching to a fullscreened mpv.)
* mplayer, vo_image: simplify OSD redrawing, fix vo_image crashGravatar wm42013-10-13
| | | | | | | | | | | | | | | | | | vo_image didn't handle OSD redrawing correctly anymore after OSD redrawing behavior was changed in commit ed9295c (or maybe it has been a problem for a longer time, and only showed up now). Basically, flip_page was called unexpectedly and when no image was stored, which made it crash trying to access the image. This could happen when for example provoking OSD redrawing by pausing while using --vo=image, or by using this command line: mpv --vo=image '-vf=lavfi="select=not(mod(n\,3))"' Fix by removing the code that pretends vo_image can redraw OSD, and by removing the framestepping fallback, which could make bad things happen if the VO didn't support OSD redrawing. By now, there aren't any real VOs that can't redraw the OSD properly, so this code is not needed and just complicates things like vo_image. This change likely will also be useful for vo_lavc (encoding).
* talloc: change talloc destructor signatureGravatar wm42013-10-13
| | | | | | | | | | | | | Change talloc destructor so that they can never signal failure, and don't return a status code. This makes our talloc copy even more incompatible to upstream talloc, but on the other hand this is preparation for getting rid of talloc entirely. (The talloc replacement in the next commit won't allow the talloc_free equivalent to fail, and the destructor return value would be useless. But I don't want to change any mpv code either; the idea is that the talloc replacement commit can be reverted for some time in order to test whether the talloc replacement introduced a regression.)
* cocoa: make --ontop also cover dock+menubarGravatar Stefano Pigozzi2013-10-12
| | | | | This only shows any differences when mpv isn't frontmost and is in fullscreen. Cmd+Tab overlay is still at a higher level as to avoid complete usability fail.
* cocoa: refactor precise scrolling to a separate methodGravatar Stefano Pigozzi2013-10-12
|
* cocoa: fix mouse wheel scrollingGravatar Mad Fish2013-10-12
|
* cocoa_common: check if the screen has a menubar in a more generic wayGravatar Stefano Pigozzi2013-10-09
| | | | Fixes #274
* vo_x11, vo_xv: fix OSD redrawing with --force-windowGravatar wm42013-10-06
| | | | The window wasn't cleared in this mode before doing the redrawing.
* cocoa_common: add OS X 10.7 compatibility hacks includesGravatar Stefano Pigozzi2013-10-05
| | | | | I forgot these when I split the code. They will hopefully fix compilation on 10.7.
* gl_x11: fail gracefully if selected FBconfig has no X visualGravatar wm42013-10-03
| | | | | | | | | | | glXGetVisualFromFBConfig() specifies specifies that it can return NULL if there is no associated X visual. Instead of crashing, let initialization fail. I'm not sure if this is actually supposed to work with a fallback visual (passing a NULL visual to vo_x11_config_vo_window would just do this), but let's play safe for now. Apparently this can happen when trying to use vo_opengl over a remote X display.
* vo_opengl_old: mp_msg conversionGravatar wm42013-10-02
| | | | This was the only thing in video/out/ left with major mp_msg() use.
* cosmetics: replace "CTRL" defines by enumsGravatar wm42013-10-02
| | | | Because why not.
* vo: mark frame lost after seek resetGravatar wm42013-10-02
| | | | | | | Reverts a small change made in commit ed9295c. This is needed, because otherwise mplayer.c/update_video_attached_pic() thinks it never has to update the picture after initialization. (Maybe there would be more elegant ways to handle this, but not without adding extra state.)
* core: add --force-windowGravatar wm42013-10-02
| | | | | | | | | | | | | | | | | This commit adds the --force-window option, which will cause mpv always to create a window when started. This can be useful when pretending that mpv is a GUI application (which it isn't, but users pretend anyway), and playing audio files would run mpv in the background without giving a window to control it. This doesn't actually create the window immediately: it only does so only after initializing playback and when it is clear that there won't be any actual video. This could be a problem when starting slow or completely stuck network streams (mpv would remain frozen in the background), or if video initialization somehow is stuck forever in an in-between state (like when the decoder doesn't output a video frame, but doesn't return an error either). Well, we can pretend only so much that mpv is a GUI application.
* vo_vdpau: don't blank screen on VOCTRL_RESETGravatar wm42013-10-02
| | | | | | | | | | | vo_vdpau is the only VO which implements VOCTRL_RESET. Redrawing the last output frame is hard, because the output could consist of several source video frames with certain types of post-processing (deinterlacing). Implement redrawing as special case by keeping the previous video frames aside until at least one new frame is decoded. This improves the previous commit, but is separate, because it's rather complicated.
* video/out: always support redrawing VO window at any pointGravatar wm42013-10-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | Before, a VO could easily refuse to respond to VOCTRL_REDRAW_FRAME, which means the VO wouldn't redraw OSD and window contents, and the player would appear frozen to the user. This was a bit stupid, and makes dealing with some corner cases much harder (think of --keep-open, which was hard to implement, because the VO gets into this state if there are no new video frames after a seek reset). Change this, and require VOs to always react to VOCTRL_REDRAW_FRAME. There are two aspects of this: First, behavior after a (successful) vo_reconfig() call, but before any video frame has been displayed. Second, behavior after a vo_seek_reset(). For the first issue, we define that sending VOCTRL_REDRAW_FRAME after vo_reconfig() should clear the window with black. This requires minor changes to some VOs. In particular vaapi makes this horribly complicated, because OSD rendering is bound to a video surface. We create a black dummy surface for this purpose. The second issue is much simpler and works already with most VOs: they simply redraw whatever has been uploaded previously. The exception is vdpau, which has a complicated mechanism to track and filter video frames. The state associated with this mechanism is completely cleared with vo_seek_reset(), so implementing this to work as expected is not trivial. For now, we just clear the window with black.
* x11: remove colormap code, always request TrueColor visualsGravatar wm42013-09-30
| | | | | | | | | | | | | | | | | | | | vo_x11 had a clever trick to implement a video equalizer: it requested a DirectColor visual. This is a X11 mechanism which allows you to specify a lookup table for each color channel. Effectively, this is a safe override for the graphic card's gamma ramp. If X thinks the window deserves priority over other windows in the system, X would temporarily switch the gamma ramp so that DirectColor visuals can be displayed as the application intends. (I'm not sure what the exact policy is, but in practice, this meant the equalizer worked when the mouse button was inside the window.) But all in all, this is just lots of useless code for a feature that is rarely ever useful. Remove it and use the libswscale equalizer instead. (This comes without a cost, since vo_x11 already uses libswscale.) One worry was that using DirectColor could have made it work better in 8-bit paletted mode. But this is not the case: there's no difference, and in both cases, the video looks equally bad.
* vf_scale: factor out libswscale equalizer controlGravatar wm42013-09-30
| | | | Will be used by vo_x11.
* vaapi: remove non-VLD entrypointsGravatar wm42013-09-29
| | | | | These probably don't work. libavcodec doesn't seem to support them, and neither did the original mplayer-vaapi patch.
* vaapi: fix non-sense conditionGravatar wm42013-09-29
| | | | Attempting signed comparison on unsigned value.