summaryrefslogtreecommitdiff
path: root/src/video_out/video_out_vdpau.c
AgeCommit message (Collapse)Author
2013-04-11vdpau_accel_data: removed unused varTorsten Jager
2013-03-18vo_vdpau: color matrix and fullrange supportTorsten Jager
2012-02-06vdpau: Consider displayed window coordinates when scaling osd overlay objectsAndreas Auras
2012-02-03Fixed overlay surface reuse issue for raw rgba overlays within vdpau output ↵Andreas Auras
driver.
2012-01-31Make some variables const and/or static; tidy LOCKDISPLAY (stmt/block).Darren Salt
2012-01-12Put lock display calls into macrosAndreas Auras
It's only a cosmetic change. --HG-- extra : rebase_source : a759588226bbc43bca331c746d14ec2e2d84c9a4
2012-01-12Introduce buffering for output surfaces for vdpau output driverAndreas Auras
The current osd and grab logic needs a lot of output surface objects for rendering. The current implementation create and destroy these objects on demand. This patch introduce a new buffer where output surfaces are hold for reuse preventing most of the create and destroy calls. The size of the new buffer could be configured with parameter "video.output.vdpau_output_surface_buffer_size". Default value is 10 surfaces. Possible range is 2...25 To further minimize surface creation and destroy the first n created surfaces get a minimum size according to the actual display and frame size where n is the size of the surface buffer. These first objects will be allocated as rather big surfaces so that they fit for most of the surface requests. This should be considered when choosing higher buffer values. This patch also improves dirty rect handling within osd handling. Now dirty rect information is used even if more than one osd object is displayed at the same time. --HG-- extra : rebase_source : b40e365ab1f81ebdd72b2e1713cf3526d6dd7493
2012-01-12Initially allocate vdpau output surface objects for display queue with ↵Andreas Auras
actual display dimension To minimize output surface reallocation while resizing the video window these output surfaces are now allocated with the actual display dimension. --HG-- extra : rebase_source : 41e16c3f5bc0c66e1c3e63221f0cc38ffe9d08be
2012-01-12Set clipping region of displayed output surfaces to rendered regionAndreas Auras
Because displayed output surfaces are only increased in size when gui window dimension changes the surface size could be greater than the actual gui window size. --HG-- extra : rebase_source : 4f7be362af8ccfe5851900bda095d0949d1c6e15
2012-01-12Fixed usage of wrong variables to determine current gui output window size ↵Andreas Auras
for grab feature of vdpau output driver Fixed usage of wrong variables to determine current gui output window size for grab feature of vdpau output driver --HG-- extra : rebase_source : f605be7e19142756f3ab388e558d8e65e3ddba5d
2012-01-03Complete rewrite of vdpau output driver osd handling.Andreas Auras
The new implementation has the following advantages towards the existing one: There is now a unique processing of RLE coded images and ARGB based overlay images. For both formats scaled and unscaled images and a video window are supported. Both formats are rendered now in given order into the same output surface not using a dedicated output surface for scaled, unscaled and ARGB images any more. Processing of YCBCR overlay images now uses corresponding vdpau upload functions eliminating the existing (possible slower) conversation to RGB images. Optimized processing of first overlay from stack avoiding unnecessary surface initialization and rendering operations. Currently the new implementation does only take the dirty rect information of a ARGB overlay into account for optimization if this is the only one object that should be displayed.
2011-03-29Continuous video frame grabbing feature.Andreas Auras
In opposite to the 'xine_get_current_frame' based snapshot function this grabbing feature allow continuous grabbing of last or next displayed video frame. Grabbed video frames are returned in simple three byte RGB format. Depending on the capabilities of the used video output driver video image data is taken as close as possible at the end of the video processing chain. Thus a returned video image could contain the blended OSD data, is deinterlaced, cropped and scaled and video properties like hue, sat could be applied. With this patch such a decent grabbing feature is implemented for vdpau video out driver. If a video output driver does not have a decent grabbing implementation then there is a generic fallback feature that grabs the video frame as they are taken from the video display queue (like the xine_get_current_frame' function). In this case color correct conversation to a RGB image incorporating source cropping and scaling to the requested grab size is also supported. A more detailed description can be found in file "xine.h".
2011-04-03Fixes backed out changeset 67f59d571138 (still broken)Andreas Auras
2011-03-29Backing out changeset 2dd76b9df2fd (attempt 2)Darren Salt
2011-03-29Backed out changeset 67f59d571138 (broken back-out)Darren Salt
2011-03-28Backing out changeset 2dd76b9df2fdDarren Salt
2011-03-03Configurable enabling of video properties noise and sharpness depending on ↵Andreas Auras
actual video format (SD or HDTV) for vdpau output driver. With the new configuration parameter 'video.output.vdpau_sd_only_properties" enabling of this video properties can be restricted to SD video only. Videos with a frame width < 800 are considered as SD videos. Often noise and sharpness corrections are only necessary for SD videos and are counterproductive to HDTV videos. With the restriction enabled the user do not have to correct these settings each time the format changes. --HG-- extra : rebase_source : 874a98cd3e9fc64084c0b5c2e9a7eec34414db2a
2011-03-03Optimization of vdpau output driver provide standard frame data function.Andreas Auras
According to the nvidia vdpau documentation for the used formats in this function there are no needs for special alignment for the fetched bitmap images . Thus we can fetch the image data directly to the supplied image buffer avoiding heap memory allocation and additional copying of image data. --HG-- extra : rebase_source : 0956eab8cd2f23ecc1452aa5ecc3db27fca635b9
2011-03-03Added configurable vdpau output surface display queue length.Andreas Auras
For smooth operation of frame displaying on platforms with less processing power (and in preparation for a new frame grabbing extension) the vdpau display queue length, which is actually fixed at size 2, could now be increased by configuration. There is a new configuration parameter 'video.output.vdpau_display_queue_length' with default value of 2. Maximum queue length is 8. Increasing this parameter by 1 should almost be enough. --HG-- extra : rebase_source : b8d045053d744b6693c50e4a8d81199ba7f315e2
2011-03-03Complete rewrite of vdpau output driver osd handling.Andreas Auras
The new implementation has the following advantages towards the existing one: There is now a unique processing of RLE coded images and ARGB based overlay images. For both formats scaled and unscaled images and a video window are supported. Both formats are rendered now in given order into the same output surfaces not using a dedicated output surface for ARGB images any more. Processing of YCBCR overlay images now uses corresponding vdpau bitmap surfaces eliminating the existing (possible slower) conversation to RGB images. Optimized processing of first overlay from stack avoiding unnecessary surface initialization and rendering operations. Currently the new implementation does not take the dirty rect information of a ARGB overlay into account for optimization (but is there actually a existing player implementation that provides this data?). --HG-- extra : rebase_source : 037f67efdabb0b197e4d1ea2ce14d15f3eb3d8fe
2011-03-02Recognize changes of cropping parameters within a frame and trigger ↵Andreas Auras
recalculation of displayed window. This issue comes up when a post plugin only changes the cropping parameters of a frame without changing width, height or ratio of the frame. --HG-- extra : rebase_source : 18832d5ec6acdb8ebe7a0d1d10ceaefb2aef663f
2011-03-02Removed ugly code handling of intercepted frames.Andreas Auras
Intercepted frames should never pass function vdpau_update_frame_format. --HG-- extra : rebase_source : d1d05b67865eb6cc79225f96159184852f239262
2011-01-28Improve stability when decoding bad streams.Reinhard Nißl
VDPAU applies different constraints to surface size and memory consumption than xine. Hence, when decoding bad streams (due to receptions issues for examples) with broken image sizes, it is likely that segfaults happen due to different memory size assumptions. So by adjusting image size to meet xine and VDPAU constraints, segfaults can be avoided. --HG-- extra : rebase_source : c493fac162bb34ab357783821bc72be85682c1eb
2011-01-28Optimize memory usage when clearing surface.Reinhard Nißl
When using pitch 0 it is sufficient to allocate just a single row. --HG-- extra : rebase_source : 47b554da704a5c6fc073fee587a968145d3fa230
2011-01-28Fix pitches for clearing surface.Reinhard Nißl
--HG-- extra : rebase_source : 686c74f934f4f780d08909c24238114cc9f64f4c
2011-01-25Correct type of two VDPAU function pointers.Reinhard Nißl
As both types have the same signature, there was error during build nor at runtime. --HG-- extra : rebase_source : 125cbc9417554303cc6a3c04dfedfedcdcc4710b
2011-01-25Prevent deadlock caused by guarded_vdp_output_surface_destroy()Reinhard Nißl
guarded_vdp_output_surface_destroy() calls XLockDisplay() and XUnlockDisplay() always and not depending on define LOCKDISPLAY. This may cause a deadlock among threads using VDPAU API due to different resource allocation orders when guarding is not used (i. e. #undef LOCKDISPLAY is enabled). --HG-- extra : rebase_source : abafc9604d8cfb6efe07f665361c4e01e60adc37
2010-11-28Add some more locking to work around libxcb bugsJulian Scheel
2010-07-15Change order of locking drawable and frame output callback to avoid deadlock.Reinhard Nißl
Recently I've posted a patch for xine-ui which uses a timed lock to avoid a deadlock when the output callback happens while changing the drawable. It is possible to avoid this deadlock at all by moving the drawable lock (and the reinit call which it is not necessary for the callback) after the callback. As a result the mentioned patch for xine-ui may be reverted.
2010-07-15Fix locking order of drawable and display to avoid deadlock.Reinhard Nißl
It is known to everyone that locking serveral resources requires a consistent order on all places where these resources are required. Otherwise a deadlock will happen.
2010-07-12Avoid X11 error bad drawable when drawable changes while displaying.Reinhard Nißl
At least two threads operate on the drawable -- the video output thread and the xine-ui gui thread. When xine-ui changes the drawable while the output thread is displaying a frame it is likely that the video output thread triggers the X11 error bad drawable. Usually XLockDisplay() is used to synchronize these threads but it causes too much impact and should only be used to implement short atomic operations. In this case scheduling two fields of a frame for displaying may take at least one field duration which is quite a long time. Therefore a separate mutex is used for synchronizing those threads.
2010-05-21Check for mpeg4-part2 vdpau hardware support.Christophe Thommeret
2010-05-21Separate options for SD and HD vdpau deint.Christophe Thommeret
2010-05-10Add an option to configure VDPAU deinterlace filter for SD content.Christophe Thommeret
2010-04-27vdpau: properly unlock the display in preemption reinit.Christophe Thommeret
--HG-- extra : rebase_source : 74bbd9ee7e0732ce16838356a666a07c9a44acd4
2010-04-08Add two new VO_CAP_*: SHARPNESS and NOISE_REDUCTION. Fix vdpau VO driver caps.Christophe Thommeret
2010-01-21video_out_vdpau: provide configureable background colorReinhard Nißl
Plasma TV users have the problem that black border pixels age differently compared to active image pixel in the center of the screen. Changing the background color for example to gray makes the border pixels age almost equally like the image pixels. As a result image brightness will change more equally over TV's lifetime.
2010-01-15Cleanup of log messagesChristophe Thommeret
2010-01-14Don't deinterlace still framesChristophe Thommeret
still frames are marked by the decoder and the video_out will not deinterlace if the flag is set.
2010-01-13Clear VDPAU surfaces on new streams.Christophe Thommeret
2009-12-01Remove some cruft left over from porting vdpau to 1.2.Darren Salt
2009-11-25Added VDPAU support for studio levels instead of PC levels (0-255) in RGB ↵Rolf Ahrenberg
colors.
2009-11-20Merge from 1.1; merge vdpau (with adjustments for 1.2).Darren Salt
--HG-- rename : include/xine.h.in => include/xine.h rename : src/xine-engine/osd.h => include/xine/osd.h rename : src/xine-engine/video_out.h => include/xine/video_out.h rename : src/libspudvb/xine_spudvb_decoder.c => src/spu_dec/spudvb_decoder.c rename : src/libvdpau/Makefile.am => src/video_dec/libvdpau/Makefile.am rename : src/libvdpau/bits_reader.h => src/video_dec/libvdpau/bits_reader.h rename : src/libvdpau/dpb.c => src/video_dec/libvdpau/dpb.c rename : src/libvdpau/dpb.h => src/video_dec/libvdpau/dpb.h rename : src/libvdpau/h264_parser.c => src/video_dec/libvdpau/h264_parser.c rename : src/libvdpau/h264_parser.h => src/video_dec/libvdpau/h264_parser.h rename : src/libvdpau/nal.c => src/video_dec/libvdpau/nal.c rename : src/libvdpau/nal.h => src/video_dec/libvdpau/nal.h rename : src/libvdpau/vdpau_h264.c => src/video_dec/libvdpau/vdpau_h264.c rename : src/libvdpau/vdpau_mpeg12.c => src/video_dec/libvdpau/vdpau_mpeg12.c rename : src/libvdpau/vdpau_vc1.c => src/video_dec/libvdpau/vdpau_vc1.c
2009-10-21Cleanup.Christophe Thommeret
2009-09-07High Quality Scaling.Christophe Thommeret
2009-08-14Default to LOCKDISPLAY atm.Christophe Thommeret
2009-08-14Better deint when paused.Christophe Thommeret
2009-08-06Better deinterlacer logging.Christophe Thommeret
2009-07-08Don't process second field if no future_frame.Christophe Thommeret
2009-06-18Destroy all surfaces before device_destroy.Christophe Thommeret