summaryrefslogtreecommitdiff
path: root/include/xine/osd.h
AgeCommit message (Collapse)Author
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.
2009-11-30Trim trailing space & reduce space+tab.Darren Salt
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-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-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
2007-12-23Remove XINE_COMPILE conditionals where they just changed the include ↵Diego 'Flameeyes' Pettenò
directive paths.
2007-12-22Merge -headers-reshuffle branch into main.Diego 'Flameeyes' Pettenò
--HG-- rename : src/xine-engine/osd.h => include/xine/osd.h
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