summaryrefslogtreecommitdiff
path: root/include/xine/video_out.h
AgeCommit message (Collapse)Author
2013-01-17VAAPI decoder and video output plugin from ↵Petri Hintukainen
https://github.com/huceke/xine-lib-vaapi
2012-06-29Add color matrix support to video out interfaceTorsten Jager
2012-06-11Added VO_PROP_MAX_VIDEO_WIDTH and VO_PROP_MAX_VIDEO_HEIGHTPetri Hintukainen
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-02-06Fix argb_layer handling in xine-libs OSD stack.Reinhard Nißl
xine-libs OSD stack is event driven and some memory blocks are not copied but responsibility to free the memory moves to different layers of the OSD stack. When argb_layer was introduced, this behavior was not taken into account and as such it is likely that for example osd_free_object() frees the argb_layer while vdpau_overlay_* functions still access the memory. Passing responsibility for the argb_layer is not that easy as it seems as the design goal of the argb_layer was to not duplicate any memory of the argb_buffer which all other OSD functions usually do. To solve this issue, argb_layer_t will be turned into a managed data structure by introducing a ref_count member. ref_count increases as more layers of the OSD stack hold a reference to that memory block, and it decreases when they are no longer interested in it. When ref_count reaches zero the memory block is freed automatically. To deal with ref counting, set_argb_layer_ptr() has been introduced. Some functions of the OSD layers had to be modified to deal with reference tracking. For convinience, osd_free_object() should clear the argb_buffer pointer so that the buffer may be freed safely after returning.
2011-01-22Provide _x_query_buffers() to allow analyzing buffer usage by pluginsReinhard Nißl
This function is similar to _x_query_buffer_usage() but retrieves also the total and available (= free) number of buffers besides the number of buffers ready for processing. For example if one wants to create a buffering algorithm based on the number of frames ready, it's not that easy to determine the maximum number of ready frames possible. In case one configures engine.buffers.video_num_frames:50 it may happen, that only 30 frames can actually be provided by the video out driver. Next a video codec like H.264 may hold several frames in its display picture buffer so that you may end up with only 13 ready frames at maximum. At the same time, the number of available (= free) frames will be 0 (or almost zero in case of vo). So it may be even easier to base the buffer algorithm on the number of free buffers. The reported numbers may also reveal that too few input buffers have been provided to compensate a large a/v offset at input stage. --HG-- extra : rebase_source : 255cb186891fbab5199a99031cf1b1e93ac19923
2010-05-21Check for mpeg4-part2 vdpau hardware support.Christophe Thommeret
2010-04-08Add two new VO_CAP_*: SHARPNESS and NOISE_REDUCTION. Fix vdpau VO driver caps.Christophe Thommeret
2010-04-08Typo fix.Darren Salt
2010-04-08Merge from 1.1.Darren Salt
--HG-- rename : include/xine.h.in => include/xine.h rename : src/xine-engine/video_out.h => include/xine/video_out.h
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.
2009-12-17Merge from 1.2 main.Darren Salt
2009-11-30Trim trailing space & reduce space+tab.Darren Salt
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-06-11Provide framework to define a video output area within the OSD area.Reinhard Nißl
The supplied functions and constants allow to define a video output area (called video window) within the OSD area to show for example a small preview of the current channel in the top right corner while zapping through the channel list displayed as OSD. A VDPAU enabled xine-lib implements VO_CAP_VIDEO_WINDOW_OVERLAY already.
2009-01-18Merge from 1.1.Darren Salt
--HG-- rename : src/libxineadec/gsm610/long_term.c => contrib/gsm610/long_term.c rename : src/libxineadec/gsm610/lpc.c => contrib/gsm610/lpc.c rename : src/libxineadec/gsm610/rpe.c => contrib/gsm610/rpe.c rename : src/libxineadec/gsm610/short_term.c => contrib/gsm610/short_term.c rename : src/libfaad/common.h => contrib/libfaad/common.h rename : src/xine-engine/broadcaster.h => include/xine/broadcaster.h rename : src/xine-engine/buffer.h => include/xine/buffer.h rename : src/xine-engine/refcounter.h => include/xine/refcounter.h rename : src/xine-engine/video_out.h => include/xine/video_out.h rename : src/xine-engine/vo_scale.h => include/xine/vo_scale.h rename : src/xine-utils/xineutils.h => include/xine/xineutils.h rename : src/libxineadec/fooaudio.c => src/audio_dec/fooaudio.c rename : src/liba52/xine_a52_decoder.c => src/audio_dec/xine_a52_decoder.c rename : src/libdts/xine_dts_decoder.c => src/audio_dec/xine_dts_decoder.c rename : src/libfaad/xine_faad_decoder.c => src/audio_dec/xine_faad_decoder.c rename : src/libxineadec/xine_lpcm_decoder.c => src/audio_dec/xine_lpcm_decoder.c rename : src/libmad/xine_mad_decoder.c => src/audio_dec/xine_mad_decoder.c rename : src/libmusepack/xine_musepack_decoder.c => src/audio_dec/xine_musepack_decoder.c rename : src/libxineadec/nsf.c => src/combined/nsf_decoder.c rename : src/libspucc/cc_decoder.c => src/spu_dec/cc_decoder.c rename : src/libspudec/xine_spu_decoder.c => src/spu_dec/spu_decoder.c rename : src/libspudec/spu.c => src/spu_dec/spudec.c rename : src/libspudec/spu.h => src/spu_dec/spudec.h rename : src/libsputext/xine_sputext_decoder.c => src/spu_dec/sputext_decoder.c rename : src/libspucc/xine_cc_decoder.c => src/spu_dec/xine_cc_decoder.c rename : src/libxinevdec/bitplane.c => src/video_dec/bitplane.c rename : src/libxinevdec/foovideo.c => src/video_dec/foovideo.c rename : src/libxinevdec/gdkpixbuf.c => src/video_dec/gdkpixbuf.c rename : src/libxinevdec/image.c => src/video_dec/image.c rename : src/libmpeg2/slice_xvmc_vld.c => src/video_dec/libmpeg2/slice_xvmc_vld.c rename : src/libmpeg2/xine_mpeg2_decoder.c => src/video_dec/libmpeg2/xine_mpeg2_decoder.c rename : src/libmpeg2new/include/Makefile.am => src/video_dec/libmpeg2new/include/Makefile.am rename : src/libmpeg2new/libmpeg2/motion_comp_vis.c => src/video_dec/libmpeg2new/libmpeg2/motion_comp_vis.c rename : src/libmpeg2new/xine_mpeg2new_decoder.c => src/video_dec/libmpeg2new/xine_mpeg2new_decoder.c rename : src/libxinevdec/rgb.c => src/video_dec/rgb.c rename : src/libxinevdec/yuv.c => src/video_dec/yuv.c
2009-01-02Extend OSD framework by ARGB layer and custom extent specification.Reinhard Nißl
The ARGB layer is based on the idea and scratch implementation of Julian Scheel. Each OSD object may be associated with a client ARGB buffer which holds the content of the OSD, hence there is no need to copy the buffer content. So far an OSD's reference coordinate system was defined by coded video resolution. By specifing an OSD's extent, capable hardware or software implementations my scale an arbitrarily sized OSD to the video output area while blending. Additional constants have been defined to allow vo_drivers to report their capabilities and to allow clients to check whether an OSD implementation supports these new features.
2008-12-30Add frame procedure for retrieving image data from accelerated frames in ↵Reinhard Nißl
standard format. Frame grabbing didn't work for frame image formats besides YV12 and YUY2 as decoded data is not stored in accelarated frames. Some acceleration APIs allow to read back decoded image data in the common standard formats mentioned above. The new procedure allows the vo_driver to provide a way for retrieving image data which can later be utilized by _x_get_current_frame_data() to implement frame grabbing for accelerated frames.
2008-05-29Merge from 1.1.Darren Salt
--HG-- rename : src/xine-utils/array.h => include/xine/array.h rename : src/xine-utils/attributes.h => include/xine/attributes.h rename : src/xine-engine/audio_out.h => include/xine/audio_out.h rename : src/xine-engine/broadcaster.h => include/xine/broadcaster.h rename : src/xine-engine/buffer.h => include/xine/buffer.h rename : src/xine-engine/configfile.h => include/xine/configfile.h rename : src/xine-utils/list.h => include/xine/list.h rename : src/xine-engine/metronom.h => include/xine/metronom.h rename : src/xine-engine/osd.h => include/xine/osd.h rename : src/xine-utils/pool.h => include/xine/pool.h rename : src/xine-engine/refcounter.h => include/xine/refcounter.h rename : src/xine-utils/ring_buffer.h => include/xine/ring_buffer.h rename : src/xine-engine/scratch.h => include/xine/scratch.h rename : src/xine-utils/sorted_array.h => include/xine/sorted_array.h rename : src/xine-engine/video_out.h => include/xine/video_out.h rename : src/xine-engine/video_overlay.h => include/xine/video_overlay.h rename : src/xine-engine/xine_internal.h => include/xine/xine_internal.h rename : src/xine-utils/xineutils.h => include/xine/xineutils.h rename : src/libspucc/cc_decoder.c => src/spu_dec/cc_decoder.c
2008-03-06Fix compilation for installed libintl.h in include pathsMatthias Ringwald
Compilation of xine-lib-1.2 hg failed for me as libintl.h does this: #define textdomain libintl_textdomain This causes trouble accessing fields in structures which are accidentally named "textdomain". The patch renames textdomain to text_domain in xine headers and xine- engine/xine.c and xine/load_plugins.c
2008-02-25Add more VO_CAP_* to indicate support for colour controls & zoom properties.Darren Salt
--HG-- extra : transplant_source : %C2%84%E8%0E%FD%DE%D3%3E%FB%B8%AF%F3%80a%5E%B3v%C5%8B%08
2007-12-30Merge from 1.1 (except po/*; translators needed for this).Darren Salt
--HG-- rename : src/video_out/vidix/drivers/mga_vid.c => contrib/vidix/drivers/mga_vid.c rename : src/video_out/vidix/drivers/nvidia_vid.c => contrib/vidix/drivers/nvidia_vid.c rename : src/video_out/vidix/drivers/savage_vid.c => contrib/vidix/drivers/savage_vid.c rename : src/xine-engine/video_out.h => include/xine/video_out.h rename : src/xine-utils/xmllexer.h => include/xine/xmllexer.h rename : po/libxine1.pot => po/libxine2.pot rename : src/libsputext/xine_sputext_decoder.c => src/spu_dec/sputext_decoder.c rename : src/libsputext/demux_sputext.c => src/spu_dec/sputext_demuxer.c
2007-12-23Make the node pointer transparent during xine build.Diego 'Flameeyes' Pettenò
Check XINE_COMPILE definition, if it's present, define node as a plugin_node_t pointer rather than a void pointer.
2007-12-23Remove XINE_COMPILE conditionals where they just changed the include ↵Diego 'Flameeyes' Pettenò
directive paths.
2007-12-19Consolidate all public include files into include/xine directory.Diego 'Flameeyes' Pettenò
--HG-- rename : src/xine-engine/alphablend.h => include/xine/alphablend.h rename : src/xine-utils/array.h => include/xine/array.h rename : src/xine-utils/attributes.h => include/xine/attributes.h rename : src/xine-engine/audio_decoder.h => include/xine/audio_decoder.h rename : src/xine-engine/audio_out.h => include/xine/audio_out.h rename : src/xine-engine/broadcaster.h => include/xine/broadcaster.h rename : src/xine-engine/buffer.h => include/xine/buffer.h rename : src/xine-utils/compat.h => include/xine/compat.h rename : src/xine-engine/configfile.h => include/xine/configfile.h rename : src/demuxers/demux.h => include/xine/demux.h rename : src/xine-engine/info_helper.h => include/xine/info_helper.h rename : src/input/input_plugin.h => include/xine/input_plugin.h rename : src/xine-engine/io_helper.h => include/xine/io_helper.h rename : src/xine-utils/list.h => include/xine/list.h rename : src/xine-engine/metronom.h => include/xine/metronom.h rename : src/xine-engine/osd.h => include/xine/osd.h rename : src/xine-engine/plugin_catalog.h => include/xine/plugin_catalog.h rename : src/xine-utils/pool.h => include/xine/pool.h rename : src/xine-engine/post.h => include/xine/post.h rename : src/xine-engine/refcounter.h => include/xine/refcounter.h rename : src/xine-engine/resample.h => include/xine/resample.h rename : src/xine-utils/ring_buffer.h => include/xine/ring_buffer.h rename : src/xine-engine/scratch.h => include/xine/scratch.h rename : src/xine-utils/sorted_array.h => include/xine/sorted_array.h rename : src/xine-engine/spu.h => include/xine/spu.h rename : src/xine-engine/spu_decoder.h => include/xine/spu_decoder.h rename : src/xine-engine/video_decoder.h => include/xine/video_decoder.h rename : src/xine-engine/video_out.h => include/xine/video_out.h rename : src/xine-engine/video_overlay.h => include/xine/video_overlay.h rename : src/xine-engine/vo_scale.h => include/xine/vo_scale.h rename : src/xine-utils/xine_buffer.h => include/xine/xine_buffer.h rename : src/xine-engine/xine_internal.h => include/xine/xine_internal.h rename : src/xine-engine/xine_plugin.h => include/xine/xine_plugin.h rename : src/xine-engine/xineintl.h => include/xine/xineintl.h rename : src/xine-utils/xineutils.h => include/xine/xineutils.h rename : src/xine-utils/xmllexer.h => include/xine/xmllexer.h rename : src/xine-utils/xmlparser.h => include/xine/xmlparser.h