aboutsummaryrefslogtreecommitdiffhomepage
path: root/libvo/vo_direct3d.c
Commit message (Collapse)AuthorAge
* vo_direct3d: implement YUV conversion using shadersGravatar wm42012-03-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Use the 3D rendering functions and shaders to render the video frame. This is very similar to vo_gl. Most planar formats with varying chroma shifts and bit depths are supported (including 10 bit), as well as some RGB formats. The old code that used D3D's StretchRect function is still available, but will by default be used with the least priority. Also implement video equalizers and colorspace selection. These use the same code as vo_gl and vo_vdpau, and are available only if shader YUV conversion is active. The rendering is extremely simple and naive, there are no filters etc. Since compiling shaders seems to require the 500 MB DirectX SDK, all shaders come in pre-compiled form, and there is no make rule to compile them. mplayer should be compilable without 500 MB of garbage. The main problem is that compiling shaders within an application seems to require d3dx9_*.dll, which isn't installed by default. Add an option ("disable-texture-align") that allows making the video textures exactly the same size as the source video. The code used to align the OSD texture size on 16 for unknown reasons, but since this was perhaps a good reason, this behavior is kept for video textures as well. (There is a chance that the alignment improves performance and stability with some drivers.) Passing this option disables this behavior. It is useful for reducing texture filtering artifacts at the bottom/right borders.
* vo_direct3d: reduce number of lock calls in OSD renderingGravatar wm42012-03-17
| | | | | | The code locked the texture once for each OSD object that was rendered. But there doesn't seem to be any good reason to do that, so lock it only once during OSD rendering.
* vo_direct3d: use the same texture management for EOSD and OSDGravatar wm42012-03-17
| | | | | | | | | | | | | | | | | | | The OSD code used a shadow texture on systems that don't report D3DDEVCAPS_TEXTURESYSTEMMEMORY. Do that for EOSD as well. Refactor the OSD texture management code to reduce code duplication. I have not the slightest clue about Direct3D9 texture management, so it seems like a good idea not to do something different for EOSD textures, even though the OSD code does exactly the same as far as texture handling goes. It's also worth noting that D3DDEVCAPS_TEXTURESYSTEMMEMORY doesn't seem to be supported by most real systems [1], and maintaining a shadow copy in system memory in order to update textures is required. The previous EOSD texture code may or may not have worked on some or all real systems, I can't really tell by reading the MSDN documentation only. [1] http://www.kludx.com/capability.php?capability=17
* vo_direct3d: make VO re-config faster by not recreating the whole D3D stateGravatar wm42012-03-17
| | | | | | | | | | | The D3D state (the IDirect3DDevice9 and all textures and buffers) were released and recreated in the config() function. This is completely unnecessary. Instead explicitly handle changes. The video surface is only reallocated if the video format or the video size changes. The OSD texture is only reallocated if the window size is increased. The EOSD texture is not released. Since the resize code is reused to deal with reconfig changes, some of these improvements (and possible bugs) apply to normal window resizing as well.
* vo_direct3d: don't framestep when paused and OSD is updatedGravatar wm42012-03-17
| | | | | | | | | | The required feature for this, VOCTRL_REDRAW_OSD, was unimplemented for unknown reasons. It is trivial to add. There is still a weird issue when switching the fullscreen state while paused. I have no idea why this happens. The contents of the video should survive the window reconfiguration (at least we don't free it), and we explicitly redraw the screen after fullscreen.
* vo_direct3d: add EOSD supportGravatar wm42012-03-17
| | | | | This allows rendering subtitles in display resolution. It also makes inserting the vf_ass video filter unnecessary.
* vo_direct3d: minor cleanupGravatar wm42012-03-17
| | | | | | The code assumed the last format passed to query_format will be the one that is used on playback. This is probably true and thus didn't cause any bugs, but make query_format side effect free just like the other VOs.
* cleanup: vo_direct3d: Mark a function staticGravatar diego2011-07-06
| | | | | | | This fixes the warning: libvo/vo_direct3d.c:984:6: warning: no previous prototype for 'vo_draw_alpha_l8a8' git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33499 b3059339-0415-0410-9bf9-f77b7e298cf2
* sub/OSD: move some related files to sub/Gravatar Uoti Urpala2011-01-26
|
* Merge svn changes up to r30195Gravatar Uoti Urpala2010-01-08
|\
| * Avoid memleaks when vo_direct3d initialization fails.Gravatar reimar2010-01-03
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30191 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Modify -vo direct3d so we do not have to link against d3d9.dll, it mightGravatar reimar2010-01-03
| | | | | | | | | | | | | | | | not be available on some rare systems. Based on patch used for builds by Gianluigi Tiesi [sherpya netfarm it] git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30190 b3059339-0415-0410-9bf9-f77b7e298cf2
* | Remove the internal GUIGravatar Anton Khirnov2009-07-07
| | | | | | | | | | | | | | | | | | The GUI is badly designed and too closely coupled to the internal details of other code. The GUI code is in bad shape and unmaintained for years. There is no indication that anyone would maintain it in the future either. Even if someone did volunteer to implement a better integrated GUI having the current code in the tree probably wouldn't help much. So get rid of it.
* | Merge svn changes up to r28641Gravatar Uoti Urpala2009-02-18
|\| | | | | | | | | | | | | | | Convert vo_x11_border (used in vo_gl/gl2 though the vo_gl_border macro) to use a wrapper macro in old-style VOs which do not provide a VO object argument. Before this function had an explicit global_vo argument in vo_gl/gl2. New vo_vdpau uses it too so use the same mechanism as most other functions.
| * Extend calc_src_dst_rects to also calculate the border values needed forGravatar reimar2009-02-17
| | | | | | | | | | | | | | correctly placed dvdnav highlights, and fix direct3d and vdpau accordingly. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28633 b3059339-0415-0410-9bf9-f77b7e298cf2
* | Merge svn changes up to r28549Gravatar Uoti Urpala2009-02-13
|\|
| * Add a calc_src_dst_rects that calculates from window size, panscan etc.Gravatar reimar2009-02-12
| | | | | | | | | | | | | | | | | | which part of the video source must be scaled onto which part of the window. Direct3D and (future) VDPAU need this, for XvMC it makes it easier to add cropping support and Xv is changed to keep the diff to XvMC small. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28546 b3059339-0415-0410-9bf9-f77b7e298cf2
* | Merge svn changes up to r28537Gravatar Uoti Urpala2009-02-12
|\|
| * Avoid message spam during video adapter uncooperative state.Gravatar gogothebee2009-02-05
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28469 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Unify info/error messages to a common style:Gravatar gogothebee2009-02-05
| | | | | | | | | | | | | | <vo_direct3d> in the beginning, "." at the end. Shorter/more descriptive sentences. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28468 b3059339-0415-0410-9bf9-f77b7e298cf2
* | Merge svn changes up to r28461Gravatar Uoti Urpala2009-02-04
|\|
| * Add checks that a D3D device is available before attempting rendering.Gravatar reimar2009-02-03
| | | | | | | | | | | | | | | | | | We may have lost the device e.g. because it became uncooperative e.g. when using remote desktop or Vista's UAC is activated. Patch by Georgi Petrov [gogothebee gmail com] git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28457 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Remove the Present call after adapter reinitialization, it can not work anywayGravatar reimar2009-02-03
| | | | | | | | | | | | | | since no video frame is uploaded to the new context yet. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28456 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Cosmetics: remove empty line, improve some messages.Gravatar reimar2009-02-03
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28454 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Whitespace/comment typo cosmetics.Gravatar reimar2009-02-03
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28453 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Check for change_d3d_backbuffer failure.Gravatar reimar2009-02-03
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28452 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Fix several return valuesGravatar reimar2009-02-03
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28451 b3059339-0415-0410-9bf9-f77b7e298cf2
* | Merge svn changes up to r28403Gravatar Uoti Urpala2009-01-31
|\|
| * Allocate a larger backbuffer to allow resizing without reinit.Gravatar reimar2009-01-27
| | | | | | | | | | | | | | Patch by Georgi Petrov [gogothebee gmail com] and Jim Hauxwell [james (at) dattrax co uk] git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28379 b3059339-0415-0410-9bf9-f77b7e298cf2
* | Merge svn changes up to r28149Gravatar Uoti Urpala2008-12-14
|\|
| * Set d3d_handle to NULL after release.Gravatar reimar2008-12-09
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28121 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Forgotten part of previous cosmetics commitGravatar reimar2008-12-09
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28120 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Slightly simplify the conditional release/free codeGravatar reimar2008-12-09
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28119 b3059339-0415-0410-9bf9-f77b7e298cf2
| * First version of OSD support for vo_direct3dGravatar reimar2008-12-09
| | | | | | | | | | | | | | Patch by Jim Hauxwell [james dattrax co uk] with modifications by me git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28118 b3059339-0415-0410-9bf9-f77b7e298cf2
| * cosmetics: indentationGravatar diego2008-12-08
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28113 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Remove pointless or even wrong N/A return values doxy commentsGravatar reimar2008-12-08
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28112 b3059339-0415-0410-9bf9-f77b7e298cf2
* | Merge svn changes up to r28087Gravatar Uoti Urpala2008-12-04
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: command.c libao2/ao_ivtv.c libao2/ao_v4l2.c libmpcodecs/dec_video.h libvo/aspect.h libvo/sub.c libvo/sub.h libvo/vo_directx.c libvo/vo_macosx.m libvo/vo_quartz.c mp_core.h mplayer.c mplayer.h osdep/getch2.h osdep/timer.h
| * Fix indentation.Gravatar reimar2008-12-03
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28076 b3059339-0415-0410-9bf9-f77b7e298cf2
* | w32_common.c, vo_direct3d.c: Fix Windows compilation issuesGravatar Uoti Urpala2008-12-02
|/ | | | | | In w32_common.c the special "old_vo_defines.h" header was included too late. vo_direct3d.c was copied from svn without fixing the type of the control() function.
* Remove resize_d3d call from render_d3d_frame that was made uselessGravatar reimar2008-12-02
| | | | | | | | | by previous commit. If this is necessary e.g. to prevent flicker while resizing, check_events should be called instead or even better the functionality be moved to some higher layer. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28065 b3059339-0415-0410-9bf9-f77b7e298cf2
* 100l, do not call check_events from resize_d3d since there should beGravatar reimar2008-12-02
| | | | | | | | no reason to do it and it might call resize_d3d again which makes it hard to guarantee that it works correctly. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28064 b3059339-0415-0410-9bf9-f77b7e298cf2
* Cosmetics: Remove unnecessary ()Gravatar reimar2008-12-02
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28063 b3059339-0415-0410-9bf9-f77b7e298cf2
* Consistency cosmetics: do not compare against NULL in ifsGravatar reimar2008-12-02
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28062 b3059339-0415-0410-9bf9-f77b7e298cf2
* Cosmetics: remove spaces before argument (Gravatar reimar2008-12-02
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28061 b3059339-0415-0410-9bf9-f77b7e298cf2
* Reorganize Direct3D initialization code.Gravatar reimar2008-12-02
| | | | | | | Patch by Georgi Petrov [gogothebee gmail com] git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28060 b3059339-0415-0410-9bf9-f77b7e298cf2
* whitespace cosmetics: prettyprinting and indentationGravatar diego2008-11-28
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28045 b3059339-0415-0410-9bf9-f77b7e298cf2
* Use D3DFMT_ constants where possible instead of MAKEFOURCCGravatar reimar2008-11-26
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28041 b3059339-0415-0410-9bf9-f77b7e298cf2
* Add support for RGB formats to vo_direct3dGravatar reimar2008-11-26
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28040 b3059339-0415-0410-9bf9-f77b7e298cf2
* Remove a ColorFill that is not necessary since the surface it is usedGravatar reimar2008-11-24
| | | | | | | | on has exactly the same size as the video image and the video will be copied into it before it is used the first time. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28019 b3059339-0415-0410-9bf9-f77b7e298cf2
* Make sure the backbuffer is cleared when the border size might have changed.Gravatar reimar2008-11-24
| | | | | | | Patch by Georgi Petrov [gogothebee gmail com] git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28018 b3059339-0415-0410-9bf9-f77b7e298cf2