mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 04:01:08 +00:00
videodirection: interface for rotation and flip
A GstVideoOrientationMethod enumeration is also provided for the admitted property values. https://bugzilla.gnome.org/show_bug.cgi?id=768687
This commit is contained in:
parent
89554f665b
commit
0341f04ce1
11 changed files with 169 additions and 1 deletions
|
@ -209,6 +209,7 @@
|
|||
<xi:include href="xml/gstvideosink.xml" />
|
||||
<xi:include href="xml/gstcolorbalance.xml" />
|
||||
<xi:include href="xml/gstcolorbalancechannel.xml" />
|
||||
<xi:include href="xml/gstvideodirection.xml" />
|
||||
<xi:include href="xml/gstvideoorientation.xml" />
|
||||
<xi:include href="xml/gstvideooverlay.xml" />
|
||||
<xi:include href="xml/gstvideodecoder.xml" />
|
||||
|
|
|
@ -880,6 +880,19 @@ GST_IS_STREAM_VOLUME_INTERFACE
|
|||
gst_stream_volume_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gstvideodirection</FILE>
|
||||
<INCLUDE>gst/video/videodirection.h</INCLUDE>
|
||||
GstVideoDirection
|
||||
GstVideoDirectionInterface
|
||||
<SUBSECTION Standard>
|
||||
GST_TYPE_VIDEO_DIRECTION
|
||||
GST_VIDEO_DIRECTION
|
||||
GST_IS_VIDEO_DIRECTION
|
||||
GST_VIDEO_DIRECTION_GET_INTERFACE
|
||||
gst_video_direction_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gstvideoorientation</FILE>
|
||||
<INCLUDE>gst/video/videoorientation.h</INCLUDE>
|
||||
|
@ -2365,6 +2378,8 @@ GST_META_TAG_VIDEO_ORIENTATION_STR
|
|||
GST_META_TAG_VIDEO_SIZE_STR
|
||||
GST_META_TAG_VIDEO_COLORSPACE_STR
|
||||
|
||||
GstVideoOrientationMethod
|
||||
|
||||
#video-event.h
|
||||
<SUBSECTION>
|
||||
gst_video_event_new_still_frame
|
||||
|
|
|
@ -43,6 +43,8 @@ gst_video_sink_get_type
|
|||
#include <gst/video/colorbalance.h>
|
||||
gst_color_balance_get_type
|
||||
gst_color_balance_channel_get_type
|
||||
#include <gst/video/videodirection.h>
|
||||
gst_video_direction_get_type
|
||||
#include <gst/video/videoorientation.h>
|
||||
gst_video_orientation_get_type
|
||||
#include <gst/video/videooverlay.h>
|
||||
|
|
|
@ -38,6 +38,7 @@ libgstvideo_@GST_API_VERSION@_la_SOURCES = \
|
|||
gstvideoaffinetransformationmeta.c \
|
||||
gstvideometa.c \
|
||||
gstvideopool.c \
|
||||
videodirection.c \
|
||||
videoorientation.c \
|
||||
videooverlay.c \
|
||||
gstvideodecoder.c \
|
||||
|
@ -73,6 +74,7 @@ libgstvideo_@GST_API_VERSION@include_HEADERS = \
|
|||
gstvideometa.h \
|
||||
gstvideoaffinetransformationmeta.h \
|
||||
gstvideopool.h \
|
||||
videodirection.h \
|
||||
videoorientation.h \
|
||||
videooverlay.h \
|
||||
gstvideodecoder.h \
|
||||
|
|
|
@ -57,6 +57,36 @@ struct _GstVideoAlignment
|
|||
guint stride_align[GST_VIDEO_MAX_PLANES];
|
||||
};
|
||||
|
||||
/**
|
||||
* GstVideoOrientationMethod:
|
||||
* @GST_VIDEO_ORIENTATION_IDENTITY: Identity (no rotation)
|
||||
* @GST_VIDEO_ORIENTATION_90R: Rotate clockwise 90 degrees
|
||||
* @GST_VIDEO_ORIENTATION_180: Rotate 180 degrees
|
||||
* @GST_VIDEO_ORIENTATION_90L: Rotate counter-clockwise 90 degrees
|
||||
* @GST_VIDEO_ORIENTATION_HORIZ: Flip horizontally
|
||||
* @GST_VIDEO_ORIENTATION_VERT: Flip vertically
|
||||
* @GST_VIDEO_ORIENTATION_UL_LR: Flip across upper left/lower right diagonal
|
||||
* @GST_VIDEO_ORIENTATION_UR_LL: Flip across upper right/lower left diagonal
|
||||
* @GST_VIDEO_ORIENTATION_AUTO: Select flip method based on image-orientation tag
|
||||
* @GST_VIDEO_ORIENTATION_CUSTOM: Current status depends on plugin internal setup
|
||||
*
|
||||
* The different video orientation methods.
|
||||
*
|
||||
* Since: 1.10
|
||||
*/
|
||||
typedef enum {
|
||||
GST_VIDEO_ORIENTATION_IDENTITY,
|
||||
GST_VIDEO_ORIENTATION_90R,
|
||||
GST_VIDEO_ORIENTATION_180,
|
||||
GST_VIDEO_ORIENTATION_90L,
|
||||
GST_VIDEO_ORIENTATION_HORIZ,
|
||||
GST_VIDEO_ORIENTATION_VERT,
|
||||
GST_VIDEO_ORIENTATION_UL_LR,
|
||||
GST_VIDEO_ORIENTATION_UR_LL,
|
||||
GST_VIDEO_ORIENTATION_AUTO,
|
||||
GST_VIDEO_ORIENTATION_CUSTOM,
|
||||
} GstVideoOrientationMethod;
|
||||
|
||||
/* metadata macros */
|
||||
/**
|
||||
* GST_META_TAG_VIDEO_STR:
|
||||
|
@ -137,6 +167,7 @@ G_END_DECLS
|
|||
#include <gst/video/navigation.h>
|
||||
#include <gst/video/video-blend.h>
|
||||
#include <gst/video/video-event.h>
|
||||
#include <gst/video/videodirection.h>
|
||||
#include <gst/video/videoorientation.h>
|
||||
#include <gst/video/video-overlay-composition.h>
|
||||
#include <gst/video/videooverlay.h>
|
||||
|
|
52
gst-libs/gst/video/videodirection.c
Normal file
52
gst-libs/gst/video/videodirection.c
Normal file
|
@ -0,0 +1,52 @@
|
|||
/* GStreamer
|
||||
* Copyright (C) 2016 Igalia <calvaris@igalia.com>
|
||||
*
|
||||
* videodirection.c: video rotation and flipping interface
|
||||
*
|
||||
* 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 St, Fifth Floor,
|
||||
* Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "video.h"
|
||||
|
||||
#define PROP_DIRECTION_DEFAULT GST_VIDEO_ORIENTATION_IDENTITY
|
||||
|
||||
/**
|
||||
* SECTION:gstvideodirection
|
||||
* @short_description: Interface for elements providing video
|
||||
* rotation and flipping controls
|
||||
*
|
||||
* The interface allows unified access to control flipping and rotation
|
||||
* operations of video-sources or operators.
|
||||
*
|
||||
* Since: 1.10
|
||||
*/
|
||||
|
||||
G_DEFINE_INTERFACE (GstVideoDirection, gst_video_direction, 0);
|
||||
|
||||
static void
|
||||
gst_video_direction_default_init (GstVideoDirectionInterface * iface)
|
||||
{
|
||||
g_object_interface_install_property (iface,
|
||||
g_param_spec_enum ("video-direction", "Video direction",
|
||||
"Video direction: rotation and flipping",
|
||||
GST_TYPE_VIDEO_ORIENTATION_METHOD, PROP_DIRECTION_DEFAULT,
|
||||
GST_PARAM_CONTROLLABLE | G_PARAM_READWRITE | G_PARAM_CONSTRUCT |
|
||||
G_PARAM_STATIC_STRINGS));
|
||||
}
|
62
gst-libs/gst/video/videodirection.h
Normal file
62
gst-libs/gst/video/videodirection.h
Normal file
|
@ -0,0 +1,62 @@
|
|||
/* GStreamer
|
||||
* Copyright (C) 2016 Igalia <calvaris@igalia.com>
|
||||
*
|
||||
* videodirection.h: video rotation and flipping interface
|
||||
*
|
||||
* 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 St, Fifth Floor,
|
||||
* Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GST_VIDEO_DIRECTION_H__
|
||||
#define __GST_VIDEO_DIRECTION_H__
|
||||
|
||||
#include <gst/gst.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
#define GST_TYPE_VIDEO_DIRECTION \
|
||||
(gst_video_direction_get_type ())
|
||||
#define GST_VIDEO_DIRECTION(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_VIDEO_DIRECTION, GstVideoDirection))
|
||||
#define GST_IS_VIDEO_DIRECTION(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_VIDEO_DIRECTION))
|
||||
#define GST_VIDEO_DIRECTION_GET_INTERFACE(inst) \
|
||||
(G_TYPE_INSTANCE_GET_INTERFACE ((inst), GST_TYPE_VIDEO_DIRECTION, GstVideoDirectionInterface))
|
||||
/**
|
||||
* GstVideoDirection:
|
||||
*
|
||||
* Opaque #GstVideoDirection data structure.
|
||||
*
|
||||
* Since: 1.10
|
||||
*/
|
||||
typedef struct _GstVideoDirection GstVideoDirection;
|
||||
typedef struct _GstVideoDirectionInterface GstVideoDirectionInterface;
|
||||
|
||||
/**
|
||||
* GstVideoDirectionInterface:
|
||||
* @iface: parent interface type.
|
||||
*
|
||||
* #GstVideoDirectionInterface interface.
|
||||
*
|
||||
* Since: 1.10
|
||||
*/
|
||||
struct _GstVideoDirectionInterface
|
||||
{
|
||||
GTypeInterface iface;
|
||||
};
|
||||
|
||||
GType gst_video_direction_get_type (void);
|
||||
|
||||
G_END_DECLS
|
||||
#endif /* __GST_VIDEO_DIRECTION_H__ */
|
|
@ -221,6 +221,7 @@ GStreamer Plugins Base library development and header files.
|
|||
%{_includedir}/gstreamer-%{majorminor}/gst/audio/streamvolume.h
|
||||
%{_includedir}/gstreamer-%{majorminor}/gst/video/colorbalance.h
|
||||
%{_includedir}/gstreamer-%{majorminor}/gst/video/colorbalancechannel.h
|
||||
%{_includedir}/gstreamer-%{majorminor}/gst/video/videodirection.h
|
||||
%{_includedir}/gstreamer-%{majorminor}/gst/video/videoorientation.h
|
||||
%{_includedir}/gstreamer-%{majorminor}/gst/video/videooverlay.h
|
||||
%{_includedir}/gstreamer-%{majorminor}/gst/app/app.h
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
#include <gst/video/video.h>
|
||||
#include <gst/video/colorbalancechannel.h>
|
||||
#include <gst/video/colorbalance.h>
|
||||
#include <gst/video/videodirection.h>
|
||||
#include <gst/video/videoorientation.h>
|
||||
#include <gst/video/videooverlay.h>
|
||||
#include <gst/video/navigation.h>
|
||||
|
|
|
@ -62,6 +62,7 @@
|
|||
#include <gst/video/gstvideofilter.h>
|
||||
#include <gst/video/gstvideosink.h>
|
||||
#include <gst/video/colorbalance.h>
|
||||
#include <gst/video/videodirection.h>
|
||||
#include <gst/video/videoorientation.h>
|
||||
#include <gst/video/videooverlay.h>
|
||||
#include <gst/video/navigation.h>
|
||||
|
|
|
@ -48,7 +48,7 @@ for lib in allocators app audio fft pbutils riff rtp rtsp sdp tag video ; do
|
|||
video-info.h video-frame.h gstvideosink.h gstvideofilter.h \
|
||||
gstvideometa.h gstvideopool.h videoorientation.h videooverlay.h \
|
||||
gstvideodecoder.h gstvideoencoder.h gstvideoutils.h \
|
||||
video-blend.h video-overlay-composition.h"
|
||||
video-blend.h video-overlay-composition.h videodirection.h"
|
||||
fi
|
||||
|
||||
CFLAGS=`pkg-config --cflags gstreamer-1.0 gstreamer-$lib-1.0`
|
||||
|
|
Loading…
Reference in a new issue