1 /* 2 * GStreamer 3 * Copyright (C) 2009 Carl-Anton Ingmarsson <ca.ingmarsson@gmail.com> 4 * 5 * This library is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU Library General Public 7 * License as published by the Free Software Foundation; either 8 * version 2 of the License, or (at your option) any later version. 9 * 10 * This library is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 * Library General Public License for more details. 14 * 15 * You should have received a copy of the GNU Library General Public 16 * License along with this library; if not, write to the 17 * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, 18 * Boston, MA 02110-1301, USA. 19 */ 20 21 #ifndef _GST_VDP_DEVICE_H_ 22 #define _GST_VDP_DEVICE_H_ 23 24 #include <X11/Xlib.h> 25 #include <vdpau/vdpau.h> 26 #include <vdpau/vdpau_x11.h> 27 28 #include <gst/gst.h> 29 30 G_BEGIN_DECLS 31 32 #define GST_TYPE_VDP_DEVICE (gst_vdp_device_get_type ()) 33 #define GST_VDP_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_VDP_DEVICE, GstVdpDevice)) 34 #define GST_VDP_DEVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_VDP_DEVICE, GstVdpDeviceClass)) 35 #define GST_IS_VDP_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_VDP_DEVICE)) 36 #define GST_IS_VDP_DEVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_VDP_DEVICE)) 37 #define GST_VDP_DEVICE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_VDP_DEVICE, GstVdpDeviceClass)) 38 39 typedef struct _GstVdpDeviceClass GstVdpDeviceClass; 40 typedef struct _GstVdpDevice GstVdpDevice; 41 42 struct _GstVdpDeviceClass 43 { 44 GObjectClass parent_class; 45 }; 46 47 struct _GstVdpDevice 48 { 49 GObject object; 50 51 gchar *display_name; 52 Display *display; 53 VdpDevice device; 54 55 VdpDeviceDestroy *vdp_device_destroy; 56 VdpGetProcAddress *vdp_get_proc_address; 57 VdpGetErrorString *vdp_get_error_string; 58 59 VdpVideoSurfaceCreate *vdp_video_surface_create; 60 VdpVideoSurfaceDestroy *vdp_video_surface_destroy; 61 VdpVideoSurfaceQueryCapabilities *vdp_video_surface_query_capabilities; 62 VdpVideoSurfaceQueryGetPutBitsYCbCrCapabilities *vdp_video_surface_query_ycbcr_capabilities; 63 VdpVideoSurfaceGetParameters *vdp_video_surface_get_parameters; 64 VdpVideoSurfaceGetBitsYCbCr *vdp_video_surface_get_bits_ycbcr; 65 VdpVideoSurfacePutBitsYCbCr *vdp_video_surface_put_bits_ycbcr; 66 67 VdpDecoderCreate *vdp_decoder_create; 68 VdpDecoderDestroy *vdp_decoder_destroy; 69 VdpDecoderRender *vdp_decoder_render; 70 VdpDecoderQueryCapabilities *vdp_decoder_query_capabilities; 71 VdpDecoderGetParameters *vdp_decoder_get_parameters; 72 73 VdpVideoMixerCreate *vdp_video_mixer_create; 74 VdpVideoMixerDestroy *vdp_video_mixer_destroy; 75 VdpVideoMixerRender *vdp_video_mixer_render; 76 VdpVideoMixerSetFeatureEnables *vdp_video_mixer_set_feature_enables; 77 VdpVideoMixerSetAttributeValues *vdp_video_mixer_set_attribute_values; 78 79 VdpOutputSurfaceCreate *vdp_output_surface_create; 80 VdpOutputSurfaceDestroy *vdp_output_surface_destroy; 81 VdpOutputSurfaceQueryCapabilities *vdp_output_surface_query_capabilities; 82 VdpOutputSurfaceGetBitsNative *vdp_output_surface_get_bits_native; 83 84 VdpPresentationQueueTargetCreateX11 *vdp_presentation_queue_target_create_x11; 85 VdpPresentationQueueTargetDestroy *vdp_presentation_queue_target_destroy; 86 87 VdpPresentationQueueCreate *vdp_presentation_queue_create; 88 VdpPresentationQueueDestroy *vdp_presentation_queue_destroy; 89 VdpPresentationQueueDisplay *vdp_presentation_queue_display; 90 VdpPresentationQueueBlockUntilSurfaceIdle *vdp_presentation_queue_block_until_surface_idle; 91 VdpPresentationQueueSetBackgroundColor *vdp_presentation_queue_set_background_color; 92 VdpPresentationQueueQuerySurfaceStatus *vdp_presentation_queue_query_surface_status; 93 }; 94 95 GType gst_vdp_device_get_type (void); 96 97 GstVdpDevice *gst_vdp_get_device (const gchar *display_name, GError **error); 98 99 G_END_DECLS 100 101 #endif /* _GST_VDP_DEVICE_H_ */ 102