[general]
-upstream_branch = tizen
+upstream_branch = upstream/1.6
upstream_tag = ${upstreamversion}
-DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc
+DISTCHECK_CONFIGURE_FLAGS=--disable-gtk-doc
SUBDIRS = \
gst-libs gst sys ext pkgconfig \
- m4 common docs tests po tools
+ m4 common tests po tools
DIST_SUBDIRS = \
gst gst-libs sys ext pkgconfig \
- m4 common docs tests po tools
+ m4 common tests po tools
# include before EXTRA_DIST for win32 assignment
include $(top_srcdir)/common/win32.mak
LIBS=$old_LIBS
CFLAGS=$old_CFLAGS
- PKG_CHECK_MODULES(WAYLAND_EGL, wayland-client >= 1.0 wayland-cursor >= 1.0 wayland-egl >= 9.0 wayland-tbm-client tizen-extension-client, HAVE_WAYLAND_EGL=yes, HAVE_WAYLAND_EGL=no)
+ PKG_CHECK_MODULES(WAYLAND_EGL, wayland-client >= 1.0 wayland-cursor >= 1.0 wayland-egl >= 9.0, HAVE_WAYLAND_EGL=yes, HAVE_WAYLAND_EGL=no)
;;
esac
gboolean
gst_mpd_client_get_next_fragment (GstMpdClient * client,
- guint indexStream, GstMediaFragmentInfo * fragment, gboolean forward)
+ guint indexStream, GstMediaFragmentInfo * fragment)
{
GstActiveStream *stream = NULL;
GstMediaSegment *currentChunk;
GstClockTime gst_mpd_client_get_media_presentation_duration (GstMpdClient *client);
gboolean gst_mpd_client_get_last_fragment_timestamp_end (GstMpdClient * client, guint stream_idx, GstClockTime * ts);
gboolean gst_mpd_client_get_next_fragment_timestamp (GstMpdClient * client, guint stream_idx, GstClockTime * ts);
-gboolean gst_mpd_client_get_next_fragment (GstMpdClient *client, guint indexStream, GstMediaFragmentInfo * fragment, gboolean forward);
+gboolean gst_mpd_client_get_next_fragment (GstMpdClient *client, guint indexStream, GstMediaFragmentInfo * fragment);
gboolean gst_mpd_client_get_next_header (GstMpdClient *client, gchar **uri, guint stream_idx, gint64 * range_start, gint64 * range_end);
gboolean gst_mpd_client_get_next_header_index (GstMpdClient *client, gchar **uri, guint stream_idx, gint64 * range_start, gint64 * range_end);
gboolean gst_mpd_client_is_live (GstMpdClient * client);
GValue * value, GParamSpec * pspec);
static void gst_gl_mixer_pad_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec);
-static void gst_gl_mixer_pad_finalize (GObject * object);
enum
{
wldisplay.c \
wlwindow.c \
wlvideoformat.c \
- scaler-protocol.c \
- tizen-wlvideoformat.c
+ scaler-protocol.c
libgstwaylandsink_la_CFLAGS = $(GST_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
- $(WAYLAND_CFLAGS) $(GST_PLUGINS_BAD_CFLAGS) $(DRM_CFLAGS) $(TBM_CFLAGS) $(MMCOMMON_CFLAGS)
+ $(WAYLAND_CFLAGS) $(GST_PLUGINS_BAD_CFLAGS)
libgstwaylandsink_la_LIBADD = \
$(GST_PLUGINS_BASE_LIBS) \
-lgstvideo-$(GST_API_VERSION) \
- $(WAYLAND_LIBS) $(DRM_LIBS) $(TBM_LIBS)\
+ $(WAYLAND_LIBS) \
$(top_builddir)/gst-libs/gst/wayland/libgstwayland-$(GST_API_VERSION).la
libgstwaylandsink_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
libgstwaylandsink_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
wldisplay.h \
wlwindow.h \
wlvideoformat.h \
- scaler-client-protocol.h \
- tizen-wlvideoformat.h
+ scaler-client-protocol.h
EXTRA_DIST = scaler.xml
CLEANFILES = scaler-protocol.c scaler-client-protocol.h
#endif
#include "gstwaylandsink.h"
-#ifdef GST_WLSINK_ENHANCEMENT
-#include <mm_types.h>
-#include "tizen-wlvideoformat.h"
-#else
#include "wlvideoformat.h"
#include "wlbuffer.h"
#include "wlshmallocator.h"
#include <gst/wayland/wayland.h>
#include <gst/video/videooverlay.h>
-#ifdef GST_WLSINK_ENHANCEMENT
-#define GST_TYPE_WAYLANDSINK_DISPLAY_GEOMETRY_METHOD (gst_waylandsink_display_geometry_method_get_type())
-#define GST_TYPE_WAYLANDSINK_ROTATE_ANGLE (gst_waylandsink_rotate_angle_get_type())
-#define GST_TYPE_WAYLANDSINK_FLIP (gst_waylandsink_flip_get_type())
-
-static GType
-gst_waylandsink_rotate_angle_get_type (void)
-{
- static GType waylandsink_rotate_angle_type = 0;
- static const GEnumValue rotate_angle_type[] = {
- {0, "No rotate", "DEGREE_0"},
- {1, "Rotate 90 degree", "DEGREE_90"},
- {2, "Rotate 180 degree", "DEGREE_180"},
- {3, "Rotate 270 degree", "DEGREE_270"},
- {4, NULL, NULL},
- };
-
- if (!waylandsink_rotate_angle_type) {
- waylandsink_rotate_angle_type =
- g_enum_register_static ("GstWaylandSinkRotateAngleType",
- rotate_angle_type);
- }
-
- return waylandsink_rotate_angle_type;
-}
-
-
-static GType
-gst_waylandsink_display_geometry_method_get_type (void)
-{
- static GType waylandsink_display_geometry_method_type = 0;
- static const GEnumValue display_geometry_method_type[] = {
- {0, "Letter box", "LETTER_BOX"},
- {1, "Origin size", "ORIGIN_SIZE"},
- {2, "Full-screen", "FULL_SCREEN"},
- {3, "Cropped full-screen", "CROPPED_FULL_SCREEN"},
- {4, "Origin size(if screen size is larger than video size(width/height)) or Letter box(if video size(width/height) is larger than screen size)", "ORIGIN_SIZE_OR_LETTER_BOX"},
- {5, NULL, NULL},
- };
-
- if (!waylandsink_display_geometry_method_type) {
- waylandsink_display_geometry_method_type =
- g_enum_register_static ("GstWaylandSinkDisplayGeometryMethodType",
- display_geometry_method_type);
- }
- return waylandsink_display_geometry_method_type;
-}
-
-static GType
-gst_waylandsink_flip_get_type (void)
-{
- static GType waylandsink_flip_type = 0;
- static const GEnumValue flip_type[] = {
- {FLIP_NONE, "Flip NONE", "FLIP_NONE"},
- {FLIP_HORIZONTAL, "Flip HORIZONTAL", "FLIP_HORIZONTAL"},
- {FLIP_VERTICAL, "Flip VERTICAL", "FLIP_VERTICAL"},
- {FLIP_BOTH, "Flip BOTH", "FLIP_BOTH"},
- {FLIP_NUM, NULL, NULL},
- };
-
- if (!waylandsink_flip_type) {
- waylandsink_flip_type =
- g_enum_register_static ("GstWaylandSinkFlipType", flip_type);
- }
-
- return waylandsink_flip_type;
-}
-
-#endif
-
-
/* signals */
enum
{
enum
{
PROP_0,
- PROP_DISPLAY,
-#ifdef GST_WLSINK_ENHANCEMENT
- PROP_ROTATE_ANGLE,
- PROP_DISPLAY_GEOMETRY_METHOD,
- PROP_ORIENTATION,
- PROP_FLIP
-#endif
+ PROP_DISPLAY
};
GST_DEBUG_CATEGORY (gstwayland_debug);
GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE
("{ BGRx, BGRA, RGBx, xBGR, xRGB, RGBA, ABGR, ARGB, RGB, BGR, "
"RGB16, BGR16, YUY2, YVYU, UYVY, AYUV, NV12, NV21, NV16, "
-#ifdef GST_WLSINK_ENHANCEMENT
- "SN12, ST12, "
-#endif
"YUV9, YVU9, Y41B, I420, YV12, Y42B, v308 }"))
);
iface);
static void gst_wayland_sink_begin_geometry_change (GstWaylandVideo * video);
static void gst_wayland_sink_end_geometry_change (GstWaylandVideo * video);
-#ifdef GST_WLSINK_ENHANCEMENT
-static void gst_wayland_sink_update_window_geometry (GstWaylandSink * sink);
-static void render_last_buffer (GstWaylandSink * sink);
-static void gst_wayland_sink_render_last_buffer (GstWaylandSink * sink);
-
-#endif
#define gst_wayland_sink_parent_class parent_class
G_DEFINE_TYPE_WITH_CODE (GstWaylandSink, gst_wayland_sink, GST_TYPE_VIDEO_SINK,
static void
gst_wayland_sink_class_init (GstWaylandSinkClass * klass)
{
- FUNCTION_ENTER ();
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
GstBaseSinkClass *gstbasesink_class;
g_param_spec_string ("display", "Wayland Display name", "Wayland "
"display name to connect to, if not supplied via the GstContext",
NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-#ifdef GST_WLSINK_ENHANCEMENT
- g_object_class_install_property (gobject_class, PROP_ROTATE_ANGLE,
- g_param_spec_enum ("rotate", "Rotate angle",
- "Rotate angle of display output",
- GST_TYPE_WAYLANDSINK_ROTATE_ANGLE, DEGREE_0,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- g_object_class_install_property (gobject_class, PROP_DISPLAY_GEOMETRY_METHOD,
- g_param_spec_enum ("display-geometry-method", "Display geometry method",
- "Geometrical method for display",
- GST_TYPE_WAYLANDSINK_DISPLAY_GEOMETRY_METHOD,
- DEF_DISPLAY_GEOMETRY_METHOD,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- g_object_class_install_property (gobject_class, PROP_ORIENTATION,
- g_param_spec_enum ("orientation",
- "Orientation information used for ROI/ZOOM",
- "Orientation information for display",
- GST_TYPE_WAYLANDSINK_ROTATE_ANGLE, DEGREE_0,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- g_object_class_install_property (gobject_class, PROP_FLIP,
- g_param_spec_enum ("flip", "Display flip",
- "Flip for display",
- GST_TYPE_WAYLANDSINK_FLIP, DEF_DISPLAY_FLIP,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
-#endif
}
static void
gst_wayland_sink_init (GstWaylandSink * sink)
{
- FUNCTION_ENTER ();
-
- sink->display_geometry_method = DEF_DISPLAY_GEOMETRY_METHOD;
- sink->flip = DEF_DISPLAY_FLIP;
- sink->rotate_angle = DEGREE_0;
- sink->orientation = DEGREE_0;
-
g_mutex_init (&sink->display_lock);
g_mutex_init (&sink->render_lock);
}
gst_wayland_sink_get_property (GObject * object,
guint prop_id, GValue * value, GParamSpec * pspec)
{
- FUNCTION_ENTER ();
-
GstWaylandSink *sink = GST_WAYLAND_SINK (object);
+
switch (prop_id) {
case PROP_DISPLAY:
GST_OBJECT_LOCK (sink);
g_value_set_string (value, sink->display_name);
GST_OBJECT_UNLOCK (sink);
break;
-#ifdef GST_WLSINK_ENHANCEMENT
- case PROP_ROTATE_ANGLE:
- g_value_set_enum (value, sink->rotate_angle);
- break;
- case PROP_DISPLAY_GEOMETRY_METHOD:
- g_value_set_enum (value, sink->display_geometry_method);
- break;
- case PROP_ORIENTATION:
- g_value_set_enum (value, sink->orientation);
- break;
- case PROP_FLIP:
- g_value_set_enum (value, sink->flip);
- break;
-#endif
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
gst_wayland_sink_set_property (GObject * object,
guint prop_id, const GValue * value, GParamSpec * pspec)
{
- FUNCTION_ENTER ();
-
GstWaylandSink *sink = GST_WAYLAND_SINK (object);
+
switch (prop_id) {
case PROP_DISPLAY:
GST_OBJECT_LOCK (sink);
sink->display_name = g_value_dup_string (value);
GST_OBJECT_UNLOCK (sink);
break;
-#ifdef GST_WLSINK_ENHANCEMENT
- case PROP_ROTATE_ANGLE:
- sink->rotate_angle = g_value_get_enum (value);
- GST_INFO_OBJECT (sink, "Rotate angle is set (%d)", sink->rotate_angle);
- if (sink->window) {
- gst_wl_window_set_rotate_angle (sink->window, sink->rotate_angle);
- }
- sink->video_info_changed = TRUE;
- if (GST_STATE (sink) == GST_STATE_PAUSED) {
- /*need to render last buffer */
- gst_wayland_sink_render_last_buffer (sink);
- }
- break;
- case PROP_DISPLAY_GEOMETRY_METHOD:
- sink->display_geometry_method = g_value_get_enum (value);
- GST_INFO_OBJECT (sink, "Display geometry method is set (%d)",
- sink->display_geometry_method);
- if (sink->window) {
- gst_wl_window_set_disp_geo_method (sink->window,
- sink->display_geometry_method);
- }
- sink->video_info_changed = TRUE;
- if (GST_STATE (sink) == GST_STATE_PAUSED) {
- /*need to render last buffer */
- gst_wayland_sink_render_last_buffer (sink);
- }
- break;
- case PROP_ORIENTATION:
- sink->orientation = g_value_get_enum (value);
- GST_INFO_OBJECT (sink, "Orientation is set (%d)", sink->orientation);
- if (sink->window) {
- gst_wl_window_set_orientation (sink->window, sink->orientation);
- }
- sink->video_info_changed = TRUE;
- if (GST_STATE (sink) == GST_STATE_PAUSED) {
- /*need to render last buffer */
- gst_wayland_sink_render_last_buffer (sink);
- }
- break;
- case PROP_FLIP:
- sink->flip = g_value_get_enum (value);
- GST_INFO_OBJECT (sink, "flip is set (%d)", sink->flip);
- if (sink->flip) {
- gst_wl_window_set_flip (sink->window, sink->flip);
- }
- sink->video_info_changed = TRUE;
- if (GST_STATE (sink) == GST_STATE_PAUSED) {
- /*need to render last buffer */
- gst_wayland_sink_render_last_buffer (sink);
- }
- break;
-#endif
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
static void
gst_wayland_sink_finalize (GObject * object)
{
- FUNCTION_ENTER ();
-
GstWaylandSink *sink = GST_WAYLAND_SINK (object);
+
GST_DEBUG_OBJECT (sink, "Finalizing the sink..");
if (sink->last_buffer)
g_object_unref (sink->display);
if (sink->window)
g_object_unref (sink->window);
- sink->window = NULL;
- }
- if (sink->pool) {
+ if (sink->pool)
gst_object_unref (sink->pool);
- sink->pool = NULL;
- }
- if (sink->display_name) {
+ if (sink->display_name)
g_free (sink->display_name);
- sink->display_name = NULL;
- }
g_mutex_clear (&sink->display_lock);
g_mutex_clear (&sink->render_lock);
gst_wayland_sink_set_display_from_context (GstWaylandSink * sink,
GstContext * context)
{
- FUNCTION_ENTER ();
-
struct wl_display *display;
GError *error = NULL;
static gboolean
gst_wayland_sink_find_display (GstWaylandSink * sink)
{
- FUNCTION_ENTER ();
-
GstQuery *query;
GstMessage *msg;
GstContext *context = NULL;
static GstStateChangeReturn
gst_wayland_sink_change_state (GstElement * element, GstStateChange transition)
{
- FUNCTION_ENTER ();
-
GstWaylandSink *sink = GST_WAYLAND_SINK (element);
GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
static void
gst_wayland_sink_set_context (GstElement * element, GstContext * context)
{
- FUNCTION_ENTER ();
-
GstWaylandSink *sink = GST_WAYLAND_SINK (element);
+
if (gst_context_has_context_type (context,
GST_WAYLAND_DISPLAY_HANDLE_CONTEXT_TYPE)) {
g_mutex_lock (&sink->display_lock);
- if (G_LIKELY (!sink->display)) {
+ if (G_LIKELY (!sink->display))
gst_wayland_sink_set_display_from_context (sink, context);
- } else {
+ else
GST_WARNING_OBJECT (element, "changing display handle is not supported");
- g_mutex_unlock (&sink->display_lock);
- return;
- }
g_mutex_unlock (&sink->display_lock);
}
- GST_INFO ("element %p context %p", element, context);
if (GST_ELEMENT_CLASS (parent_class)->set_context)
GST_ELEMENT_CLASS (parent_class)->set_context (element, context);
}
static GstCaps *
gst_wayland_sink_get_caps (GstBaseSink * bsink, GstCaps * filter)
{
- FUNCTION_ENTER ();
-
GstWaylandSink *sink;
GstCaps *caps;
+
sink = GST_WAYLAND_SINK (bsink);
caps = gst_pad_get_pad_template_caps (GST_VIDEO_SINK_PAD (sink));
GValue value = G_VALUE_INIT;
GArray *formats;
gint i;
-#ifdef GST_WLSINK_ENHANCEMENT
- uint32_t fmt;
-#else
enum wl_shm_format fmt;
-#endif
g_value_init (&list, GST_TYPE_LIST);
g_value_init (&value, G_TYPE_STRING);
fmt = g_array_index (formats, uint32_t, i);
g_value_set_string (&value, gst_wl_shm_format_to_string (fmt));
gst_value_list_append_value (&list, &value);
-#ifdef GST_WLSINK_ENHANCEMENT
- /* TBM doesn't support SN12. So we add SN12 manually as supported format.
- * SN12 is exactly same with NV12.
- */
- if (fmt == TBM_FORMAT_NV12) {
- g_value_set_string (&value,
- gst_video_format_to_string (GST_VIDEO_FORMAT_SN12));
- gst_value_list_append_value (&list, &value);
- }
-#endif
}
caps = gst_caps_make_writable (caps);
static gboolean
gst_wayland_sink_set_caps (GstBaseSink * bsink, GstCaps * caps)
{
- FUNCTION_ENTER ();
-
GstWaylandSink *sink;
GstBufferPool *newpool;
GstVideoInfo info;
-#ifdef GST_WLSINK_ENHANCEMENT
- uint32_t format;
-#else
enum wl_shm_format format;
-#endif
GArray *formats;
gint i;
GstStructure *structure;
/* extract info from caps */
if (!gst_video_info_from_caps (&info, caps))
goto invalid_format;
-#ifdef GST_WLSINK_ENHANCEMENT
- sink->caps = gst_caps_copy (caps);
-#endif
format = gst_video_format_to_wl_shm_format (GST_VIDEO_INFO_FORMAT (&info));
if ((gint) format == -1)
if (i >= formats->len)
goto unsupported_format;
-#ifdef GST_WLSINK_ENHANCEMENT
- if (GST_VIDEO_INFO_FORMAT (&info) == GST_VIDEO_FORMAT_SN12 ||
- GST_VIDEO_INFO_FORMAT (&info) == GST_VIDEO_FORMAT_ST12) {
- sink->display->is_native_format = TRUE;
- } else {
- sink->display->is_native_format = FALSE;
-
- /* create a new pool for the new configuration */
- newpool = gst_wayland_buffer_pool_new (sink->display);
- if (!newpool)
- goto pool_failed;
-
- structure = gst_buffer_pool_get_config (newpool);
- gst_buffer_pool_config_set_params (structure, caps, info.size, 2, 0);
- gst_buffer_pool_config_set_allocator (structure, NULL, ¶ms);
- if (!gst_buffer_pool_set_config (newpool, structure))
- goto config_failed;
-
- gst_object_replace ((GstObject **) & sink->pool, (GstObject *) newpool);
- gst_object_unref (newpool);
-
- }
- /* store the video info */
- sink->video_info = info;
- sink->video_info_changed = TRUE;
-#else
/* create a new pool for the new configuration */
newpool = gst_video_buffer_pool_new ();
if (!newpool)
gst_object_replace ((GstObject **) & sink->pool, (GstObject *) newpool);
gst_object_unref (newpool);
-#endif
+
return TRUE;
invalid_format:
static gboolean
gst_wayland_sink_propose_allocation (GstBaseSink * bsink, GstQuery * query)
{
- FUNCTION_ENTER ();
-
GstWaylandSink *sink = GST_WAYLAND_SINK (bsink);
GstStructure *config;
guint size, min_bufs, max_bufs;
static GstFlowReturn
gst_wayland_sink_preroll (GstBaseSink * bsink, GstBuffer * buffer)
{
- FUNCTION_ENTER ();
-
GST_DEBUG_OBJECT (bsink, "preroll buffer %p", buffer);
return gst_wayland_sink_render (bsink, buffer);
}
static void
frame_redraw_callback (void *data, struct wl_callback *callback, uint32_t time)
{
- FUNCTION_ENTER ();
-
GstWaylandSink *sink = data;
GST_LOG ("frame_redraw_cb");
static GstFlowReturn
gst_wayland_sink_render (GstBaseSink * bsink, GstBuffer * buffer)
{
- FUNCTION_ENTER ();
-
GstWaylandSink *sink = GST_WAYLAND_SINK (bsink);
GstBuffer *to_render;
GstWlBuffer *wlbuffer;
GstFlowReturn ret = GST_FLOW_OK;
-#ifdef GST_WLSINK_ENHANCEMENT
- GstBufferPool *newpool;
- GstStructure *structure;
- static GstAllocationParams params = { 0, 0, 0, 15, };
-#endif
-
g_mutex_lock (&sink->render_lock);
GST_LOG_OBJECT (sink, "render buffer %p", buffer);
gst_buffer_replace (&sink->last_buffer, to_render);
render_last_buffer (sink);
- if (buffer != to_render) {
- GST_LOG_OBJECT (sink, "Decrease ref count of buffer");
+ if (buffer != to_render)
gst_buffer_unref (to_render);
- }
goto done;
no_window_size:
static void
gst_wayland_sink_videooverlay_init (GstVideoOverlayInterface * iface)
{
- FUNCTION_ENTER ();
-
iface->set_window_handle = gst_wayland_sink_set_window_handle;
iface->set_render_rectangle = gst_wayland_sink_set_render_rectangle;
iface->expose = gst_wayland_sink_expose;
static void
gst_wayland_sink_set_window_handle (GstVideoOverlay * overlay, guintptr handle)
{
- FUNCTION_ENTER ();
-
GstWaylandSink *sink = GST_WAYLAND_SINK (overlay);
struct wl_surface *surface = (struct wl_surface *) handle;
g_return_if_fail (sink != NULL);
- if (sink->window != NULL) {
- GST_WARNING_OBJECT (sink, "changing window handle is not supported");
- return;
- }
-
g_mutex_lock (&sink->render_lock);
GST_DEBUG_OBJECT (sink, "Setting window handle %" GST_PTR_FORMAT,
"display handle from your application with GstContext"));
} else {
sink->window = gst_wl_window_new_in_surface (sink->display, surface);
- GST_DEBUG ("sink->window %p", sink->window);
}
} else {
GST_ERROR_OBJECT (sink, "Failed to find display handle, "
"ignoring window handle");
}
}
-#ifdef GST_WLSINK_ENHANCEMENT
- gst_wayland_sink_update_window_geometry (sink);
-#endif
g_mutex_unlock (&sink->render_lock);
}
-#ifdef GST_WLSINK_ENHANCEMENT
-static void
-gst_wayland_sink_update_window_geometry (GstWaylandSink * sink)
-{
- FUNCTION_ENTER ();
- g_return_if_fail (sink != NULL);
- g_return_if_fail (sink->window != NULL);
-
- gst_wl_window_set_rotate_angle (sink->window, sink->rotate_angle);
- gst_wl_window_set_disp_geo_method (sink->window,
- sink->display_geometry_method);
- gst_wl_window_set_orientation (sink->window, sink->orientation);
- gst_wl_window_set_flip (sink->window, sink->flip);
-}
-
-static void
-gst_wayland_sink_render_last_buffer (GstWaylandSink * sink)
-{
- FUNCTION_ENTER ();
- g_return_if_fail (sink != NULL);
-
- g_mutex_lock (&sink->render_lock);
- gst_wl_window_set_video_info (sink->window, &sink->video_info);
- sink->video_info_changed = FALSE;
- if (sink->last_buffer)
- render_last_buffer (sink);
- g_mutex_unlock (&sink->render_lock);
-}
-#endif
static void
gst_wayland_sink_set_render_rectangle (GstVideoOverlay * overlay,
gint x, gint y, gint w, gint h)
{
- FUNCTION_ENTER ();
-
GstWaylandSink *sink = GST_WAYLAND_SINK (overlay);
g_return_if_fail (sink != NULL);
static void
gst_wayland_sink_expose (GstVideoOverlay * overlay)
{
- FUNCTION_ENTER ();
-
GstWaylandSink *sink = GST_WAYLAND_SINK (overlay);
g_return_if_fail (sink != NULL);
static void
gst_wayland_sink_waylandvideo_init (GstWaylandVideoInterface * iface)
{
- FUNCTION_ENTER ();
-
iface->begin_geometry_change = gst_wayland_sink_begin_geometry_change;
iface->end_geometry_change = gst_wayland_sink_end_geometry_change;
}
static void
gst_wayland_sink_begin_geometry_change (GstWaylandVideo * video)
{
- FUNCTION_ENTER ();
-
GstWaylandSink *sink = GST_WAYLAND_SINK (video);
g_return_if_fail (sink != NULL);
static void
gst_wayland_sink_end_geometry_change (GstWaylandVideo * video)
{
- FUNCTION_ENTER ();
-
GstWaylandSink *sink = GST_WAYLAND_SINK (video);
g_return_if_fail (sink != NULL);
static gboolean
plugin_init (GstPlugin * plugin)
{
- FUNCTION_ENTER ();
-
GST_DEBUG_CATEGORY_INIT (gstwayland_debug, "waylandsink", 0,
" wayland video sink");
#include "wlwindow.h"
G_BEGIN_DECLS
+
#define GST_TYPE_WAYLAND_SINK \
(gst_wayland_sink_get_type())
#define GST_WAYLAND_SINK(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_WAYLAND_SINK))
#define GST_WAYLAND_SINK_GET_CLASS(inst) \
(G_TYPE_INSTANCE_GET_CLASS ((inst), GST_TYPE_WAYLAND_SINK, GstWaylandSinkClass))
-#ifdef GST_WLSINK_ENHANCEMENT
- enum
-{
- DISP_GEO_METHOD_LETTER_BOX = 0,
- DISP_GEO_METHOD_ORIGIN_SIZE,
- DISP_GEO_METHOD_FULL_SCREEN,
- DISP_GEO_METHOD_CROPPED_FULL_SCREEN,
- DISP_GEO_METHOD_ORIGIN_SIZE_OR_LETTER_BOX,
- DISP_GEO_METHOD_NUM,
-};
-enum
-{
- DEGREE_0,
- DEGREE_90,
- DEGREE_180,
- DEGREE_270,
- DEGREE_NUM,
-};
-
-enum
-{
- FLIP_NONE = 0,
- FLIP_HORIZONTAL,
- FLIP_VERTICAL,
- FLIP_BOTH,
- FLIP_NUM,
-};
-
-#define DEF_DISPLAY_FLIP FLIP_NONE
-#define DEF_DISPLAY_GEOMETRY_METHOD DISP_GEO_METHOD_FULL_SCREEN
-
-#define WL_SCREEN_SIZE_WIDTH 4096
-#define WL_SCREEN_SIZE_HEIGHT 4096
-
-#endif
-#if 1
-#define FUNCTION_ENTER() GST_INFO("<ENTER>")
-#else
-#define FUNCTION_ENTER()
-#endif
typedef struct _GstWaylandSink GstWaylandSink;
typedef struct _GstWaylandSinkClass GstWaylandSinkClass;
gboolean video_info_changed;
GstVideoInfo video_info;
- /*property */
gchar *display_name;
-#ifdef GST_WLSINK_ENHANCEMENT
- guint rotate_angle;
- guint display_geometry_method;
- guint orientation;
- guint flip;
- GstCaps *caps;
-#endif
+
gboolean redraw_pending;
GMutex render_lock;
GstBuffer *last_buffer;
GstVideoSinkClass parent;
};
-GType
-gst_wayland_sink_get_type (void)
- G_GNUC_CONST;
+GType gst_wayland_sink_get_type (void) G_GNUC_CONST;
G_END_DECLS
+
#endif /* __GST_WAYLAND_VIDEO_SINK_H__ */
+++ /dev/null
-/* GStreamer Wayland video sink
- *
- * Copyright (C) 2011 Intel Corporation
- * Copyright (C) 2011 Sreerenj Balachandran <sreerenj.balachandran@intel.com>
- * Copyright (C) 2012 Wim Taymans <wim.taymans@gmail.com>
- * Copyright (C) 2014 Collabora Ltd.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301 USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "tizen-wlvideoformat.h"
-#ifdef GST_WLSINK_ENHANCEMENT
-
-GST_DEBUG_CATEGORY_EXTERN (gstwayland_debug);
-#define GST_CAT_DEFAULT gstwayland_debug
-
-typedef struct
-{
- uint32_t wl_format;
- GstVideoFormat gst_format;
-} wl_VideoFormat;
-
-static const wl_VideoFormat formats[] = {
-#if G_BYTE_ORDER == G_BIG_ENDIAN
- {TBM_FORMAT_XRGB8888, GST_VIDEO_FORMAT_xRGB},
- {TBM_FORMAT_XBGR8888, GST_VIDEO_FORMAT_xBGR},
- {TBM_FORMAT_RGBX8888, GST_VIDEO_FORMAT_RGBx},
- {TBM_FORMAT_BGRX8888, GST_VIDEO_FORMAT_BGRx},
- {TBM_FORMAT_ARGB8888, GST_VIDEO_FORMAT_ARGB},
- {TBM_FORMAT_ABGR8888, GST_VIDEO_FORMAT_RGBA},
- {TBM_FORMAT_RGBA8888, GST_VIDEO_FORMAT_RGBA},
- {TBM_FORMAT_BGRA8888, GST_VIDEO_FORMAT_BGRA},
-#else
- {TBM_FORMAT_XRGB8888, GST_VIDEO_FORMAT_BGRx},
- {TBM_FORMAT_XBGR8888, GST_VIDEO_FORMAT_RGBx},
- {TBM_FORMAT_RGBX8888, GST_VIDEO_FORMAT_xBGR},
- {TBM_FORMAT_BGRX8888, GST_VIDEO_FORMAT_xRGB},
- {TBM_FORMAT_ARGB8888, GST_VIDEO_FORMAT_BGRA},
- {TBM_FORMAT_ABGR8888, GST_VIDEO_FORMAT_RGBA},
- {TBM_FORMAT_RGBA8888, GST_VIDEO_FORMAT_ABGR},
- {TBM_FORMAT_BGRA8888, GST_VIDEO_FORMAT_ARGB},
-#endif
- {TBM_FORMAT_RGB565, GST_VIDEO_FORMAT_RGB16},
- {TBM_FORMAT_BGR565, GST_VIDEO_FORMAT_BGR16},
- {TBM_FORMAT_RGB888, GST_VIDEO_FORMAT_RGB},
- {TBM_FORMAT_BGR888, GST_VIDEO_FORMAT_BGR},
- {TBM_FORMAT_YUYV, GST_VIDEO_FORMAT_YUY2},
- {TBM_FORMAT_YVYU, GST_VIDEO_FORMAT_YVYU},
- {TBM_FORMAT_UYVY, GST_VIDEO_FORMAT_UYVY},
- {TBM_FORMAT_AYUV, GST_VIDEO_FORMAT_AYUV},
- {TBM_FORMAT_NV12, GST_VIDEO_FORMAT_NV12},
- {TBM_FORMAT_NV21, GST_VIDEO_FORMAT_NV21},
- {TBM_FORMAT_NV16, GST_VIDEO_FORMAT_NV16},
- {TBM_FORMAT_YUV410, GST_VIDEO_FORMAT_YUV9},
- {TBM_FORMAT_YVU410, GST_VIDEO_FORMAT_YVU9},
- {TBM_FORMAT_YUV411, GST_VIDEO_FORMAT_Y41B},
- {TBM_FORMAT_YUV420, GST_VIDEO_FORMAT_I420},
- {TBM_FORMAT_YVU420, GST_VIDEO_FORMAT_YV12},
- {TBM_FORMAT_YUV422, GST_VIDEO_FORMAT_Y42B},
- {TBM_FORMAT_YUV444, GST_VIDEO_FORMAT_v308},
- {TBM_FORMAT_NV12MT, GST_VIDEO_FORMAT_ST12},
- {TBM_FORMAT_NV12, GST_VIDEO_FORMAT_SN12},
-};
-
-uint32_t
-gst_video_format_to_wayland_format (GstVideoFormat format)
-{
- guint i;
-
- for (i = 0; i < G_N_ELEMENTS (formats); i++)
- if (formats[i].gst_format == format)
- return formats[i].wl_format;
-
- GST_WARNING ("wayland video format not found");
- return -1;
-}
-
-GstVideoFormat
-gst_wayland_format_to_video_format (uint32_t wl_format)
-{
- guint i;
-
- for (i = 0; i < G_N_ELEMENTS (formats); i++)
- if (formats[i].wl_format == wl_format)
- return formats[i].gst_format;
-
- GST_WARNING ("gst video format not found");
- return GST_VIDEO_FORMAT_UNKNOWN;
-}
-
-const gchar *
-gst_wayland_format_to_string (uint32_t wl_format)
-{
- return gst_video_format_to_string
- (gst_wayland_format_to_video_format (wl_format));
-}
-#endif
+++ /dev/null
-/* GStreamer Wayland video sink
- *
- * Copyright (C) 2011 Intel Corporation
- * Copyright (C) 2011 Sreerenj Balachandran <sreerenj.balachandran@intel.com>
- * Copyright (C) 2012 Wim Taymans <wim.taymans@gmail.com>
- * Copyright (C) 2014 Collabora Ltd.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301 USA.
- */
-
-#ifndef __GST_TIZEN_WL_VIDEO_FORMAT_H__
-#define __GST_TIZEN_WL_VIDEO_FORMAT_H__
-
-#include <wayland-client.h>
-#include <gst/video/video.h>
-
-#ifdef GST_WLSINK_ENHANCEMENT
-#include <tbm_surface.h>
-
-G_BEGIN_DECLS
- uint32_t gst_video_format_to_wayland_format (GstVideoFormat format);
-GstVideoFormat gst_wayland_format_to_video_format (uint32_t wl_format);
-
-const gchar *gst_wayland_format_to_string (uint32_t wl_format);
-
-G_END_DECLS
-#endif
-#endif
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+
#include "wldisplay.h"
#include "wlbuffer.h"
#include <errno.h>
-#ifdef GST_WLSINK_ENHANCEMENT
-#include <fcntl.h>
-#include <unistd.h>
-#include <xf86drm.h>
-#include <string.h>
-#include <stdlib.h>
-
-static void
-handle_tizen_video_format (void *data, struct tizen_video *tizen_video,
- uint32_t format)
-{
- FUNCTION_ENTER ();
- GstWlDisplay *self = data;
-
- g_return_if_fail (self != NULL);
-
- GST_INFO ("format is %d", format);
- g_array_append_val (self->formats, format);
-}
-
-static const struct tizen_video_listener tz_video_listener = {
- handle_tizen_video_format
-};
-#endif
-
GST_DEBUG_CATEGORY_EXTERN (gstwayland_debug);
#define GST_CAT_DEFAULT gstwayland_debug
static void
gst_wl_display_class_init (GstWlDisplayClass * klass)
{
- FUNCTION_ENTER ();
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
gobject_class->finalize = gst_wl_display_finalize;
}
static void
gst_wl_display_init (GstWlDisplay * self)
{
- FUNCTION_ENTER ();
-
self->formats = g_array_new (FALSE, FALSE, sizeof (uint32_t));
self->wl_fd_poll = gst_poll_new (TRUE);
self->buffers = g_hash_table_new (g_direct_hash, g_direct_equal);
static void
gst_wl_display_finalize (GObject * gobject)
{
- FUNCTION_ENTER ();
-
GstWlDisplay *self = GST_WL_DISPLAY (gobject);
gst_poll_set_flushing (self->wl_fd_poll, TRUE);
(GHFunc) gst_wl_buffer_force_release_and_unref, NULL);
g_hash_table_remove_all (self->buffers);
-#ifdef GST_WLSINK_ENHANCEMENT
- if (self->is_native_format == FALSE) {
- /*in case of normal video format */
- if (self->tbm_bo)
- tbm_bo_unref (self->tbm_bo);
- self->tbm_bo = NULL;
- }
- if (self->tbm_client) {
- wayland_tbm_client_deinit (self->tbm_client);
- self->tbm_client = NULL;
- }
- self->tbm_bufmgr = NULL;
-#endif
-
g_array_unref (self->formats);
gst_poll_free (self->wl_fd_poll);
g_hash_table_unref (self->buffers);
g_mutex_clear (&self->buffers_mutex);
-#ifndef GST_WLSINK_ENHANCEMENT
if (self->shm)
wl_shm_destroy (self->shm);
-#endif
if (self->shell)
wl_shell_destroy (self->shell);
wl_display_flush (self->display);
wl_display_disconnect (self->display);
}
-#ifdef GST_WLSINK_ENHANCEMENT
- if (self->tizen_policy)
- tizen_policy_destroy (self->tizen_policy);
- if (self->tizen_video)
- tizen_video_destroy (self->tizen_video);
-#endif
G_OBJECT_CLASS (gst_wl_display_parent_class)->finalize (gobject);
}
static void
sync_callback (void *data, struct wl_callback *callback, uint32_t serial)
{
- FUNCTION_ENTER ();
-
gboolean *done = data;
*done = TRUE;
}
static gint
gst_wl_display_roundtrip (GstWlDisplay * self)
{
- FUNCTION_ENTER ();
-
struct wl_callback *callback;
gint ret = 0;
gboolean done = FALSE;
static void
shm_format (void *data, struct wl_shm *wl_shm, uint32_t format)
{
- FUNCTION_ENTER ();
-
GstWlDisplay *self = data;
g_array_append_val (self->formats, format);
registry_handle_global (void *data, struct wl_registry *registry,
uint32_t id, const char *interface, uint32_t version)
{
-
- FUNCTION_ENTER ();
GstWlDisplay *self = data;
if (g_strcmp0 (interface, "wl_compositor") == 0) {
wl_registry_bind (registry, id, &wl_subcompositor_interface, 1);
} else if (g_strcmp0 (interface, "wl_shell") == 0) {
self->shell = wl_registry_bind (registry, id, &wl_shell_interface, 1);
-#ifndef GST_WLSINK_ENHANCEMENT
} else if (g_strcmp0 (interface, "wl_shm") == 0) {
self->shm = wl_registry_bind (registry, id, &wl_shm_interface, 1);
wl_shm_add_listener (self->shm, &shm_listener, self);
-#endif
} else if (g_strcmp0 (interface, "wl_scaler") == 0) {
self->scaler = wl_registry_bind (registry, id, &wl_scaler_interface, 2);
-#ifdef GST_WLSINK_ENHANCEMENT
- } else if (g_strcmp0 (interface, "tizen_policy") == 0) {
- self->tizen_policy =
- wl_registry_bind (registry, id, &tizen_policy_interface, 1);
- } else if (g_strcmp0 (interface, "tizen_video") == 0) {
- self->tizen_video =
- wl_registry_bind (registry, id, &tizen_video_interface, version);
- g_return_if_fail (self->tizen_video != NULL);
-
- GST_INFO ("id(%d)", id);
-
- tizen_video_add_listener (self->tizen_video, &tz_video_listener, self);
}
-#endif
}
static const struct wl_registry_listener registry_listener = {
static gpointer
gst_wl_display_thread_run (gpointer data)
{
- FUNCTION_ENTER ();
-
GstWlDisplay *self = data;
GstPollFD pollfd = GST_POLL_FD_INIT;
GstWlDisplay *
gst_wl_display_new (const gchar * name, GError ** error)
{
- FUNCTION_ENTER ();
-
struct wl_display *display;
display = wl_display_connect (name);
gst_wl_display_new_existing (struct wl_display * display,
gboolean take_ownership, GError ** error)
{
- FUNCTION_ENTER ();
-
GstWlDisplay *self;
GError *err = NULL;
gint i;
VERIFY_INTERFACE_EXISTS (compositor, "wl_compositor");
VERIFY_INTERFACE_EXISTS (subcompositor, "wl_subcompositor");
VERIFY_INTERFACE_EXISTS (shell, "wl_shell");
-#ifdef GST_WLSINK_ENHANCEMENT
- VERIFY_INTERFACE_EXISTS (tizen_video, "tizen_video");
- self->tbm_client = wayland_tbm_client_init (self->display);
- if (!self->tbm_client) {
- *error = g_error_new (g_quark_from_static_string ("GstWlDisplay"), 0,
- "Error initializing wayland-tbm");
- g_object_unref (self);
- return NULL;
- }
-#else
VERIFY_INTERFACE_EXISTS (shm, "wl_shm");
-#endif
VERIFY_INTERFACE_EXISTS (scaler, "wl_scaler");
#undef VERIFY_INTERFACE_EXISTS
#include <gst/gst.h>
#include <wayland-client.h>
#include "scaler-client-protocol.h"
-#ifdef GST_WLSINK_ENHANCEMENT
-#include <tbm_bufmgr.h>
-#include <wayland-tbm-client.h>
-#include <tizen-extension-client-protocol.h>
-#define NV_BUF_PLANE_NUM 2 /*SN12 or ST12 has 2 plane */
-#endif
+
G_BEGIN_DECLS
+
#define GST_TYPE_WL_DISPLAY (gst_wl_display_get_type ())
#define GST_WL_DISPLAY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_WL_DISPLAY, GstWlDisplay))
#define GST_IS_WL_DISPLAY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_WL_DISPLAY))
#define GST_WL_DISPLAY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_WL_DISPLAY, GstWlDisplayClass))
#define GST_IS_WL_DISPLAY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_WL_DISPLAY))
#define GST_WL_DISPLAY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_WL_DISPLAY, GstWlDisplayClass))
-#if 1
-#define FUNCTION_ENTER() GST_INFO("<ENTER>")
-#else
-#define FUNCTION_ENTER()
-#endif
+
typedef struct _GstWlDisplay GstWlDisplay;
typedef struct _GstWlDisplayClass GstWlDisplayClass;
GType gst_wl_display_get_type (void);
GstWlDisplay *gst_wl_display_new (const gchar * name, GError ** error);
-GstWlDisplay *gst_wl_display_new_existing (struct wl_display *display,
+GstWlDisplay *gst_wl_display_new_existing (struct wl_display * display,
gboolean take_ownership, GError ** error);
/* see wlbuffer.c for explanation */
void gst_wl_display_unregister_buffer (GstWlDisplay * self, gpointer buf);
G_END_DECLS
+
#endif /* __GST_WL_DISPLAY_H__ */
GST_DEBUG_CATEGORY_EXTERN (gstwayland_debug);
#define GST_CAT_DEFAULT gstwayland_debug
-#ifndef GST_WLSINK_ENHANCEMENT
-
typedef struct
{
enum wl_shm_format wl_format;
return gst_video_format_to_string
(gst_wl_shm_format_to_video_format (wl_format));
}
-#endif
#include <wayland-client-protocol.h>
#include <gst/video/video.h>
-#ifndef GST_WLSINK_ENHANCEMENT
+G_BEGIN_DECLS
enum wl_shm_format gst_video_format_to_wl_shm_format (GstVideoFormat format);
GstVideoFormat gst_wl_shm_format_to_video_format (enum wl_shm_format wl_format);
const gchar *gst_wl_shm_format_to_string (enum wl_shm_format wl_format);
G_END_DECLS
-#endif
+
#endif
handle_ping (void *data, struct wl_shell_surface *shell_surface,
uint32_t serial)
{
- FUNCTION_ENTER ();
-
wl_shell_surface_pong (shell_surface, serial);
}
handle_configure (void *data, struct wl_shell_surface *shell_surface,
uint32_t edges, int32_t width, int32_t height)
{
- FUNCTION_ENTER ();
-
}
static void
handle_popup_done (void *data, struct wl_shell_surface *shell_surface)
{
- FUNCTION_ENTER ();
-
}
static const struct wl_shell_surface_listener shell_surface_listener = {
static void
gst_wl_window_class_init (GstWlWindowClass * klass)
{
- FUNCTION_ENTER ();
-
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
gobject_class->finalize = gst_wl_window_finalize;
}
static void
gst_wl_window_init (GstWlWindow * self)
{
- FUNCTION_ENTER ();
-
}
static void
gst_wl_window_finalize (GObject * gobject)
{
- FUNCTION_ENTER ();
-
GstWlWindow *self = GST_WL_WINDOW (gobject);
if (self->shell_surface) {
static GstWlWindow *
gst_wl_window_new_internal (GstWlDisplay * display)
{
- FUNCTION_ENTER ();
-
GstWlWindow *window;
GstVideoInfo info;
GstBuffer *buf;
GstWlWindow *
gst_wl_window_new_toplevel (GstWlDisplay * display, const GstVideoInfo * info)
{
- FUNCTION_ENTER ();
-
GstWlWindow *window;
gint width;
gst_wl_window_new_in_surface (GstWlDisplay * display,
struct wl_surface * parent)
{
- FUNCTION_ENTER ();
-
GstWlWindow *window;
window = gst_wl_window_new_internal (display);
window->area_surface, parent);
wl_subsurface_set_desync (window->area_subsurface);
- wl_surface_commit (parent);
-#endif
return window;
}
GstWlDisplay *
gst_wl_window_get_display (GstWlWindow * window)
{
- FUNCTION_ENTER ();
-
g_return_val_if_fail (window != NULL, NULL);
return g_object_ref (window->display);
struct wl_surface *
gst_wl_window_get_wl_surface (GstWlWindow * window)
{
- FUNCTION_ENTER ();
-
g_return_val_if_fail (window != NULL, NULL);
return window->video_surface;
gboolean
gst_wl_window_is_toplevel (GstWlWindow * window)
{
- FUNCTION_ENTER ();
-
g_return_val_if_fail (window != NULL, FALSE);
return (window->shell_surface != NULL);
/* center the video_subsurface inside area_subsurface */
src.w = window->video_width;
src.h = window->video_height;
-#ifdef GST_WLSINK_ENHANCEMENT // need to change ifndef to ifdef
-
- GstVideoRectangle src_origin = { 0, 0, 0, 0 };
- GstVideoRectangle src_input = { 0, 0, 0, 0 };
- GstVideoRectangle dst = { 0, 0, 0, 0 };
-
- gint rotate = 0;
- gint transform = WL_OUTPUT_TRANSFORM_NORMAL;
-
- src.x = src.y = 0;
- src_input.w = src_origin.w = window->video_width;
- src_input.h = src_origin.h = window->video_height;
- GST_INFO ("video (%d x %d)", window->video_width, window->video_height);
- GST_INFO ("src_input(%d, %d, %d x %d)", src_input.x, src_input.y, src_input.w,
- src_input.h);
- GST_INFO ("src_origin(%d, %d, %d x %d)", src_origin.x, src_origin.y,
- src_origin.w, src_origin.h);
-
- if (window->rotate_angle == DEGREE_0 || window->rotate_angle == DEGREE_180) {
- src.w = window->video_width; //video_width
- src.h = window->video_height; //video_height
- } else {
- src.w = window->video_height;
- src.h = window->video_width;
- }
- GST_INFO ("src(%d, %d, %d x %d)", src.x, src.y, src.w, src.h);
-
- /*default res.w and res.h */
- dst.w = window->render_rectangle.w;
- dst.h = window->render_rectangle.h;
- GST_INFO ("dst(%d,%d,%d x %d)", dst.x, dst.y, dst.w, dst.h);
- GST_INFO ("window->render_rectangle(%d,%d,%d x %d)",
- window->render_rectangle.x, window->render_rectangle.y,
- window->render_rectangle.w, window->render_rectangle.h);
- switch (window->disp_geo_method) {
- case DISP_GEO_METHOD_LETTER_BOX:
- GST_INFO ("DISP_GEO_METHOD_LETTER_BOX");
- gst_video_sink_center_rect (src, dst, &res, TRUE);
- gst_video_sink_center_rect (dst, src, &src_input, FALSE);
- res.x += window->render_rectangle.x;
- res.y += window->render_rectangle.y;
- break;
- case DISP_GEO_METHOD_ORIGIN_SIZE_OR_LETTER_BOX:
- if (src.w > dst.w || src.h > dst.h) {
- /*LETTER BOX */
- GST_INFO
- ("DISP_GEO_METHOD_ORIGIN_SIZE_OR_LETTER_BOX -> set LETTER BOX");
- gst_video_sink_center_rect (src, dst, &res, TRUE);
- gst_video_sink_center_rect (dst, src, &src_input, FALSE);
- res.x += window->render_rectangle.x;
- res.y += window->render_rectangle.y;
- } else {
- /*ORIGIN SIZE */
- GST_INFO ("DISP_GEO_METHOD_ORIGIN_SIZE");
- gst_video_sink_center_rect (src, dst, &res, FALSE);
- gst_video_sink_center_rect (dst, src, &src_input, FALSE);
- }
- break;
- case DISP_GEO_METHOD_ORIGIN_SIZE: //is working
- GST_INFO ("DISP_GEO_METHOD_ORIGIN_SIZE");
- gst_video_sink_center_rect (src, dst, &res, FALSE);
- gst_video_sink_center_rect (dst, src, &src_input, FALSE);
- break;
- case DISP_GEO_METHOD_FULL_SCREEN: //is working
- GST_INFO ("DISP_GEO_METHOD_FULL_SCREEN");
- res.x = res.y = 0;
- res.w = window->render_rectangle.w;
- res.h = window->render_rectangle.h;
- break;
- case DISP_GEO_METHOD_CROPPED_FULL_SCREEN:
- GST_INFO ("DISP_GEO_METHOD_CROPPED_FULL_SCREEN");
- gst_video_sink_center_rect (src, dst, &res, FALSE);
- gst_video_sink_center_rect (dst, src, &src_input, FALSE);
- res.x = res.y = 0;
- res.w = dst.w;
- res.h = dst.h;
- break;
- default:
- break;
- }
+ gst_video_sink_center_rect (src, window->render_rectangle, &res, TRUE);
wl_subsurface_set_position (window->video_subsurface, res.x, res.y);
wl_viewport_set_destination (window->video_viewport, res.w, res.h);
/* this is saved for use in wl_surface_damage */
window->surface_width = res.w;
window->surface_height = res.h;
-#endif
}
void
gst_wl_window_set_render_rectangle (GstWlWindow * window, gint x, gint y,
gint w, gint h)
{
- FUNCTION_ENTER ();
-
g_return_if_fail (window != NULL);
window->render_rectangle.x = x;
if (window->video_width != 0)
wl_subsurface_set_desync (window->video_subsurface);
}
-
-#ifdef GST_WLSINK_ENHANCEMENT
-void
-gst_wl_window_set_rotate_angle (GstWlWindow * window, guint rotate_angle)
-{
- FUNCTION_ENTER ();
- g_return_if_fail (window != NULL);
- window->rotate_angle = rotate_angle;
- GST_INFO ("rotate_angle value is (%d)", window->rotate_angle);
-
-}
-
-void
-gst_wl_window_set_disp_geo_method (GstWlWindow * window, guint disp_geo_method)
-{
- FUNCTION_ENTER ();
- g_return_if_fail (window != NULL);
- window->disp_geo_method = disp_geo_method;
- GST_INFO ("disp_geo_method value is (%d)", window->disp_geo_method);
-}
-
-void
-gst_wl_window_set_orientation (GstWlWindow * window, guint orientation)
-{
- FUNCTION_ENTER ();
- g_return_if_fail (window != NULL);
- window->orientation = orientation;
- GST_INFO ("orientation value is (%d)", window->orientation);
-}
-
-void
-gst_wl_window_set_flip (GstWlWindow * window, guint flip)
-{
- FUNCTION_ENTER ();
- g_return_if_fail (window != NULL);
- window->flip = flip;
- GST_INFO ("flip value is (%d)", window->flip);
-}
-#endif
#include <gst/video/video.h>
G_BEGIN_DECLS
+
#define GST_TYPE_WL_WINDOW (gst_wl_window_get_type ())
#define GST_WL_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_WL_WINDOW, GstWlWindow))
#define GST_IS_WL_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_WL_WINDOW))
#define GST_WL_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_WL_WINDOW, GstWlWindowClass))
#define GST_IS_WL_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_WL_WINDOW))
#define GST_WL_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_WL_WINDOW, GstWlWindowClass))
-#if 1
-#define FUNCTION_ENTER() GST_INFO("<ENTER>")
-#else
-#define FUNCTION_ENTER()
-#endif
+
typedef struct _GstWlWindow GstWlWindow;
typedef struct _GstWlWindowClass GstWlWindowClass;
gint video_width, video_height;
/* the size of the video_(sub)surface */
gint surface_width, surface_height;
-#ifdef GST_WLSINK_ENHANCEMENT
- /*Display geometry method */
- guint disp_geo_method;
- guint rotate_angle;
- guint orientation;
- guint flip;
-#endif
};
struct _GstWlWindowClass
GstWlWindow *gst_wl_window_new_toplevel (GstWlDisplay * display,
const GstVideoInfo * info);
GstWlWindow *gst_wl_window_new_in_surface (GstWlDisplay * display,
- struct wl_surface *parent);
+ struct wl_surface * parent);
GstWlDisplay *gst_wl_window_get_display (GstWlWindow * window);
struct wl_surface *gst_wl_window_get_wl_surface (GstWlWindow * window);
-gboolean gst_wl_window_is_toplevel (GstWlWindow * window);
+gboolean gst_wl_window_is_toplevel (GstWlWindow *window);
void gst_wl_window_render (GstWlWindow * window, GstWlBuffer * buffer,
const GstVideoInfo * info);
void gst_wl_window_set_render_rectangle (GstWlWindow * window, gint x, gint y,
- gint w, gint h);
-
-#ifdef GST_WLSINK_ENHANCEMENT
-void gst_wl_window_set_rotate_angle (GstWlWindow * window, guint rotate_angle);
-void gst_wl_window_set_disp_geo_method (GstWlWindow * window,
- guint disp_geo_method);
-void gst_wl_window_set_orientation (GstWlWindow * window, guint orientation);
-void gst_wl_window_set_flip (GstWlWindow * window, guint flip);
-#endif
-
+ gint w, gint h);
G_END_DECLS
+
#endif /* __GST_WL_WINDOW_H__ */
lib_LTLIBRARIES = libgstwayland-@GST_API_VERSION@.la
+libgstwayland_@GST_API_VERSION@_la_SOURCES = wayland.c
+
libgstwaylandinclude_HEADERS = wayland.h
-libgstwayland_@GST_API_VERSION@_la_SOURCES = wayland.c
+libgstwayland_@GST_API_VERSION@includedir = \
+ $(includedir)/gstreamer-@GST_API_VERSION@/gst/wayland
libgstwayland_@GST_API_VERSION@_la_CFLAGS = \
$(GST_PLUGINS_BAD_CFLAGS) \
g_snprintf (cur_stream_name, 32, "audio-%d-language", i);
lang_code = gst_structure_get_string (structure, cur_stream_name);
- if (lang_code && temp) {
+ if (lang_code) {
GstTagList *list = temp->pending_tags;
if (!list)
GST_DEBUG ("Wraparound prev-cur (guess_offset:%" GST_TIME_FORMAT
") bitrate:%" G_GUINT64_FORMAT,
GST_TIME_ARGS (PCRTIME_TO_GSTTIME (guess_offset)), lastbr);
- if(prevbr == 0) {
- GST_ERROR ("Division by zero error, prevbr is 0");
- continue;
- }
diffprev = (float) 100.0 *(ABSDIFF (prevbr, lastbr)) / (float) prevbr;
GST_DEBUG ("Difference with previous bitrate:%f", diffprev);
if (diffprev < 10.0) {
s = gst_caps_get_structure (caps, 0);
mt = gst_structure_get_name (s);
- g_return_val_if_fail (mt != NULL, GST_FLOW_ERROR);
-
value = gst_structure_get_value (s, "codec_data");
if (value != NULL)
codec_data = gst_value_get_buffer (value);
%bcond_with wayland
-%bcond_with x
+#%bcond_with x
%define gst_branch 1.0
Name: gst-plugins-bad
-Version: 1.4.1
-Release: 6
+Version: 1.6.1
+Release: 1
Summary: GStreamer Streaming-Media Framework Plug-Ins
License: GPL-2.0+ and LGPL-2.1+
Group: Multimedia/Framework
Url: http://gstreamer.freedesktop.org/
Source: http://gstreamer.freedesktop.org/src/gst-plugins-bad/%{name}-%{version}.tar.xz
-Source100: common.tar.bz2
+Source100: common.tar.gz
BuildRequires: gettext-tools
BuildRequires: SDL-devel
BuildRequires: autoconf
BuildRequires: pkgconfig(libdrm)
BuildRequires: pkgconfig(libtbm)
BuildRequires: pkgconfig(mm-common)
+#BuildRequires: mesa-libGLESv2
+#BuildRequires: mesa-libEGL
%if %{with wayland}
+#BuildRequires: opengl-es-devel
+BuildRequires: pkgconfig(gles20)
+BuildRequires: pkgconfig(wayland-egl) >= 9.0
BuildRequires: pkgconfig(wayland-client) >= 1.0.0
+BuildRequires: pkgconfig(wayland-cursor) >= 1.0.0
BuildRequires: pkgconfig(wayland-tbm-client)
BuildRequires: pkgconfig(tizen-extension-client)
%endif
%build
export V=1
NOCONFIGURE=1 ./autogen.sh
-export CFLAGS="-DGST_WLSINK_ENHANCEMENT -DGST_TBM_SUPPORT"
+export CFLAGS="-DGST_WLSINK_ENHANCEMENT -DGST_TBM_SUPPORT -DMESA_EGL_NO_X11_HEADERS"
%configure\
--disable-static\
--disable-examples\
--enable-experimental\
--disable-audiomixer\
- --disable-compositor\
+ --enable-compositor\
--disable-ivfparse\
--disable-jp2kdecimator\
--disable-opengl\
- --disable-gles2\
+ --enable-egl=yes\
+ --enable-wayland=yes\
+ --enable-gles2=yes\
+ --disable-glx\
--disable-sndfile\
--disable-stereo\
--disable-videosignal\
--disable-vmnc\
- --disable-gtk-doc
+ --disable-gtk-doc\
+ --disable-warnings-as-errors
%__make %{?_smp_mflags} V=1
%install
%clean
rm -rf $RPM_BUILD_ROOT
-
%post -p /sbin/ldconfig
%{_libdir}/libgsturidownloader-%{gst_branch}.so.0*
%{_libdir}/libgstbadbase-%{gst_branch}.so.0*
%{_libdir}/libgstbadvideo-%{gst_branch}.so.0*
+%{_libdir}/gstreamer-%{gst_branch}/include/gst/gl/gstglconfig.h
+%{_libdir}/gstreamer-%{gst_branch}/libgstcompositor.so
+%{_libdir}/gstreamer-%{gst_branch}/libgstdtls.so
+%{_libdir}/gstreamer-%{gst_branch}/libgstfragmented.so
+%{_libdir}/gstreamer-%{gst_branch}/libgstopengl.so
+%{_libdir}/gstreamer-%{gst_branch}/libgstrtpbad.so
+%{_libdir}/gstreamer-%{gst_branch}/libgstrtponvif.so
+%{_libdir}/gstreamer-%{gst_branch}/libgstvcdsrc.so
+#%{_libdir}/gstreamer-%{gst_branch}/libgstwaylandsink.so
+%{_libdir}/libgstadaptivedemux-1.0.so.0
+%{_libdir}/libgstadaptivedemux-1.0.so.0.601.0
+%{_libdir}/libgstgl-1.0.so.0
+%{_libdir}/libgstgl-1.0.so.0.601.0
+#%{_libdir}/libgstwayland-1.0.so.0
+#%{_libdir}/libgstwayland-1.0.so.0.601.0
+%{_libdir}/pkgconfig/gstreamer-gl-1.0.pc
+/usr/share/gstreamer-%{gst_branch}/presets/GstFreeverb.prs
+
%files devel
%manifest %{name}.manifest
%{_libdir}/pkgconfig/gstreamer-wayland-%{gst_branch}.pc
%{_includedir}/gstreamer-%{gst_branch}/gst/wayland/wayland.h
%endif
+
msgid "OpenCV failed to load template image"
msgstr ""
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instea of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
#, fuzzy
msgid "Could not read title information for DVD."
msgstr "Kon nie skryf na lêer \"%s\" nie."
msgid "OpenCV failed to load template image"
msgstr ""
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instea of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
#, fuzzy
msgid "Could not read title information for DVD."
msgstr "\"%s\" faylına yazıla bilmədi."
msgid "OpenCV failed to load template image"
msgstr "OpenCV selhalo při načítání obrazu šablony"
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instea of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
msgid "Could not read title information for DVD."
msgstr "Nezdařilo se přečtení informací o titulu DVD."
msgid "OpenCV failed to load template image"
msgstr ""
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instea of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
msgid "Could not read title information for DVD."
msgstr "Kunne ikke læse titelinformation for dvd."
msgid "OpenCV failed to load template image"
msgstr ""
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instea of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
#, fuzzy
msgid "Could not read title information for DVD."
msgstr "Could not write to file \"%s\"."
msgid "OpenCV failed to load template image"
msgstr ""
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instea of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
msgid "Could not read title information for DVD."
msgstr "Impossible de lire les informations de titre du DVD."
msgid "OpenCV failed to load template image"
msgstr ""
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instea of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
#, fuzzy
msgid "Could not read title information for DVD."
msgstr "\"%s\" ଫାଇଲ ଲେଖିହେଲା ନାହିଁ."
msgid "OpenCV failed to load template image"
msgstr ""
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instea of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
msgid "Could not read title information for DVD."
msgstr "Não foi possível ler as informações de título do DVD."
msgid "OpenCV failed to load template image"
msgstr ""
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instea of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
msgid "Could not read title information for DVD."
msgstr "Не могу да прочитам информације о наслову ДВД-а."
msgid "OpenCV failed to load template image"
msgstr ""
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instea of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
msgid "Could not read title information for DVD."
msgstr "DVD'deki başlık bilgisi okunamıyor."
{bmdModeHD1080p30, 1920, 1080, 30, 1, false, HD},
{bmdModeHD1080i50, 1920, 1080, 25, 1, true, HD},
- {bmdModeHD1080i5994, 1920, 1080, 60000, 1001, true, HD},
- {bmdModeHD1080i6000, 1920, 1080, 60, 1, true, HD},
+ {bmdModeHD1080i5994, 1920, 1080, 30000, 1001, true, HD},
+ {bmdModeHD1080i6000, 1920, 1080, 30, 1, true, HD},
{bmdModeHD1080p50, 1920, 1080, 50, 1, false, HD},
{bmdModeHD1080p5994, 1920, 1080, 60000, 1001, false, HD},
PROP_SOCKET_PATH,
PROP_IS_LIVE,
PROP_SHM_AREA_NAME
+#ifdef GST_TBM_SUPPORT
+ ,PROP_USE_TBM
+#endif
};
struct GstShmBuffer
g_param_spec_boolean ("is-live", "Is this a live source",
"True if the element cannot produce data in PAUSED", FALSE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+ g_object_class_install_property (gobject_class, PROP_SHM_AREA_NAME,
+ g_param_spec_string ("shm-area-name",
+ "Name of the shared memory area",
+ "The name of the shared memory area used to get buffers",
+ NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
#ifdef GST_TBM_SUPPORT
g_object_class_install_property (gobject_class, PROP_USE_TBM,
g_param_spec_boolean ("use-tbm",
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
#endif
- g_object_class_install_property (gobject_class, PROP_SHM_AREA_NAME,
- g_param_spec_string ("shm-area-name",
- "Name of the shared memory area",
- "The name of the shared memory area used to get buffers",
- NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
-
gst_element_class_add_pad_template (gstelement_class,
gst_static_pad_template_get (&srctemplate));
g_value_set_string (value, sp_get_shm_area_name (self->pipe->pipe));
GST_OBJECT_UNLOCK (object);
break;
+#ifdef GST_TBM_SUPPORT
+ case PROP_USE_TBM:
+ g_value_set_boolean (value, self->use_tbm);
+ break;
+#endif
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
return TRUE;
}
+
static void
free_buffer (gpointer data)
{
+++ /dev/null
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9,00"
- Name="3dvideo"
- ProjectGUID="{E83070C2-58E4-48AE-AEB3-A4580EDE1212}"
- RootNamespace="filtervideooverlay"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="1"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""C:\gstreamer\include\glib-2.0";"C:\gstreamer\lib\glib-2.0\include";"..\..\..\..\..\gtk+\include\gtk-2.0";"..\..\..\..\..\gtk+\lib\gtk-2.0\include";"C:\gstreamer\include\gstreamer-1.0";C:\gstreamer\include\cairo;"C:\gstreamer\include\pango-1.0";"..\..\..\..\..\atk\include\atk-1.0";C:\gstreamer\include\libxml2;C:\gstreamer\include"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="gstreamer-1.0.lib glib-2.0.lib gmodule-2.0.lib gobject-2.0.lib gthread-2.0.lib gtk-win32-2.0.lib gdk-win32-2.0.lib"
- LinkIncremental="2"
- AdditionalLibraryDirectories="C:\gstreamer\lib;"..\..\..\..\..\gtk+\lib""
- GenerateDebugInformation="true"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="1"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=""C:\gstreamer\include\glib-2.0";"C:\gstreamer\lib\glib-2.0\include";"..\..\..\..\..\gtk+\include\gtk-2.0";"..\..\..\..\..\gtk+\lib\gtk-2.0\include";"C:\gstreamer\include\gstreamer-1.0";C:\gstreamer\include\cairo;"C:\gstreamer\include\pango-1.0";"..\..\..\..\..\atk\include\atk-1.0";C:\gstreamer\include\libxml2;C:\gstreamer\include"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="gstreamer-1.0.lib glib-2.0.lib gmodule-2.0.lib gobject-2.0.lib gthread-2.0.lib gtk-win32-2.0.lib gdk-win32-2.0.lib"
- LinkIncremental="1"
- AdditionalLibraryDirectories="C:\gstreamer\lib;"..\..\..\..\..\gtk+\lib""
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
- >
- <File
- RelativePath="..\gstgtk.c"
- >
- </File>
- <File
- RelativePath=".\main.cpp"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
- >
- <File
- RelativePath="..\gstgtk.h"
- >
- </File>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
- >
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>