| 1 | /* GStreamer | 
| 2 |  * Copyright (C) <2011> Wim Taymans <wim.taymans@gmail.com> | 
| 3 |  * | 
| 4 |  * This library is free software; you can redistribute it and/or | 
| 5 |  * modify it under the terms of the GNU Library General Public | 
| 6 |  * License as published by the Free Software Foundation; either | 
| 7 |  * version 2 of the License, or (at your option) any later version. | 
| 8 |  * | 
| 9 |  * This library is distributed in the hope that it will be useful, | 
| 10 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 11 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
| 12 |  * Library General Public License for more details. | 
| 13 |  * | 
| 14 |  * You should have received a copy of the GNU Library General Public | 
| 15 |  * License along with this library; if not, write to the | 
| 16 |  * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, | 
| 17 |  * Boston, MA 02110-1301, USA. | 
| 18 |  */ | 
| 19 |  | 
| 20 | #ifndef __GST_VIDEO_H__ | 
| 21 | #define __GST_VIDEO_H__ | 
| 22 |  | 
| 23 | #include <gst/gst.h> | 
| 24 |  | 
| 25 | #include <gst/video/video-prelude.h> | 
| 26 |  | 
| 27 | typedef struct _GstVideoAlignment GstVideoAlignment; | 
| 28 |  | 
| 29 | #include <gst/video/video-format.h> | 
| 30 | #include <gst/video/video-color.h> | 
| 31 | #include <gst/video/video-dither.h> | 
| 32 | #include <gst/video/video-info.h> | 
| 33 | #include <gst/video/video-frame.h> | 
| 34 | #include <gst/video/video-enumtypes.h> | 
| 35 | #include <gst/video/video-converter.h> | 
| 36 | #include <gst/video/video-scaler.h> | 
| 37 | #include <gst/video/video-multiview.h> | 
| 38 |  | 
| 39 | G_BEGIN_DECLS | 
| 40 |  | 
| 41 | /** | 
| 42 |  * GstVideoAlignment: | 
| 43 |  * @padding_left: extra pixels on the left side | 
| 44 |  * @padding_right: extra pixels on the right side | 
| 45 |  * @padding_top: extra pixels on the top | 
| 46 |  * @padding_bottom: extra pixels on the bottom | 
| 47 |  * @stride_align: array with extra alignment requirements for the strides | 
| 48 |  * | 
| 49 |  * Extra alignment parameters for the memory of video buffers. This | 
| 50 |  * structure is usually used to configure the bufferpool if it supports the | 
| 51 |  * #GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT. | 
| 52 |  */ | 
| 53 | struct _GstVideoAlignment | 
| 54 | { | 
| 55 |   guint padding_top; | 
| 56 |   guint padding_bottom; | 
| 57 |   guint padding_left; | 
| 58 |   guint padding_right; | 
| 59 |   guint stride_align[GST_VIDEO_MAX_PLANES]; | 
| 60 | }; | 
| 61 |  | 
| 62 | /** | 
| 63 |  * GstVideoOrientationMethod: | 
| 64 |  * @GST_VIDEO_ORIENTATION_IDENTITY: Identity (no rotation) | 
| 65 |  * @GST_VIDEO_ORIENTATION_90R: Rotate clockwise 90 degrees | 
| 66 |  * @GST_VIDEO_ORIENTATION_180: Rotate 180 degrees | 
| 67 |  * @GST_VIDEO_ORIENTATION_90L: Rotate counter-clockwise 90 degrees | 
| 68 |  * @GST_VIDEO_ORIENTATION_HORIZ: Flip horizontally | 
| 69 |  * @GST_VIDEO_ORIENTATION_VERT: Flip vertically | 
| 70 |  * @GST_VIDEO_ORIENTATION_UL_LR: Flip across upper left/lower right diagonal | 
| 71 |  * @GST_VIDEO_ORIENTATION_UR_LL: Flip across upper right/lower left diagonal | 
| 72 |  * @GST_VIDEO_ORIENTATION_AUTO: Select flip method based on image-orientation tag | 
| 73 |  * @GST_VIDEO_ORIENTATION_CUSTOM: Current status depends on plugin internal setup | 
| 74 |  * | 
| 75 |  * The different video orientation methods. | 
| 76 |  * | 
| 77 |  * Since: 1.10 | 
| 78 |  */ | 
| 79 | typedef enum { | 
| 80 |   GST_VIDEO_ORIENTATION_IDENTITY, | 
| 81 |   GST_VIDEO_ORIENTATION_90R, | 
| 82 |   GST_VIDEO_ORIENTATION_180, | 
| 83 |   GST_VIDEO_ORIENTATION_90L, | 
| 84 |   GST_VIDEO_ORIENTATION_HORIZ, | 
| 85 |   GST_VIDEO_ORIENTATION_VERT, | 
| 86 |   GST_VIDEO_ORIENTATION_UL_LR, | 
| 87 |   GST_VIDEO_ORIENTATION_UR_LL, | 
| 88 |   GST_VIDEO_ORIENTATION_AUTO, | 
| 89 |   GST_VIDEO_ORIENTATION_CUSTOM, | 
| 90 | } GstVideoOrientationMethod; | 
| 91 |  | 
| 92 | /** | 
| 93 |  * GST_TYPE_VIDEO_ORIENTATION_METHOD: | 
| 94 |  * | 
| 95 |  * Since: 1.20 | 
| 96 |  */ | 
| 97 |  | 
| 98 | /* metadata macros */ | 
| 99 | /** | 
| 100 |  * GST_META_TAG_VIDEO_STR: | 
| 101 |  * | 
| 102 |  * This metadata is relevant for video streams. | 
| 103 |  * | 
| 104 |  * Since: 1.2 | 
| 105 |  */ | 
| 106 | #define GST_META_TAG_VIDEO_STR "video" | 
| 107 | /** | 
| 108 |  * GST_META_TAG_VIDEO_ORIENTATION_STR: | 
| 109 |  * | 
| 110 |  * This metadata stays relevant as long as video orientation is unchanged. | 
| 111 |  * | 
| 112 |  * Since: 1.2 | 
| 113 |  */ | 
| 114 | #define GST_META_TAG_VIDEO_ORIENTATION_STR "orientation" | 
| 115 | /** | 
| 116 |  * GST_META_TAG_VIDEO_SIZE_STR: | 
| 117 |  * | 
| 118 |  * This metadata stays relevant as long as video size is unchanged. | 
| 119 |  * | 
| 120 |  * Since: 1.2 | 
| 121 |  */ | 
| 122 | #define GST_META_TAG_VIDEO_SIZE_STR "size" | 
| 123 | /** | 
| 124 |  * GST_META_TAG_VIDEO_COLORSPACE_STR: | 
| 125 |  * | 
| 126 |  * This metadata stays relevant as long as video colorspace is unchanged. | 
| 127 |  * | 
| 128 |  * Since: 1.2 | 
| 129 |  */ | 
| 130 | #define GST_META_TAG_VIDEO_COLORSPACE_STR "colorspace" | 
| 131 |  | 
| 132 | GST_VIDEO_API | 
| 133 | void           gst_video_alignment_reset         (GstVideoAlignment *align); | 
| 134 |  | 
| 135 |  | 
| 136 | /* some helper functions */ | 
| 137 |  | 
| 138 | GST_VIDEO_API | 
| 139 | gboolean       gst_video_calculate_display_ratio (guint * dar_n, | 
| 140 |                                                   guint * dar_d, | 
| 141 |                                                   guint   video_width, | 
| 142 |                                                   guint   video_height, | 
| 143 |                                                   guint   video_par_n, | 
| 144 |                                                   guint   video_par_d, | 
| 145 |                                                   guint   display_par_n, | 
| 146 |                                                   guint   display_par_d); | 
| 147 |  | 
| 148 | GST_VIDEO_API | 
| 149 | gboolean       gst_video_guess_framerate (GstClockTime duration, | 
| 150 |                                           gint * dest_n, gint * dest_d); | 
| 151 |  | 
| 152 | /* convert/encode video sample from one format to another */ | 
| 153 |  | 
| 154 | typedef void (*GstVideoConvertSampleCallback) (GstSample * sample, GError *error, gpointer user_data); | 
| 155 |  | 
| 156 | GST_VIDEO_API | 
| 157 | void          gst_video_convert_sample_async (GstSample                    * sample, | 
| 158 |                                               const GstCaps                * to_caps, | 
| 159 |                                               GstClockTime                   timeout, | 
| 160 |                                               GstVideoConvertSampleCallback  callback, | 
| 161 |                                               gpointer                       user_data, | 
| 162 |                                               GDestroyNotify                 destroy_notify); | 
| 163 |  | 
| 164 | GST_VIDEO_API | 
| 165 | GstSample *   gst_video_convert_sample       (GstSample     * sample, | 
| 166 |                                               const GstCaps * to_caps, | 
| 167 |                                               GstClockTime    timeout, | 
| 168 |                                               GError       ** error); | 
| 169 |  | 
| 170 |  | 
| 171 | GST_VIDEO_API | 
| 172 | gboolean gst_video_orientation_from_tag (GstTagList * taglist, | 
| 173 |                                          GstVideoOrientationMethod * method); | 
| 174 |  | 
| 175 | G_END_DECLS | 
| 176 |  | 
| 177 | #include <gst/video/colorbalancechannel.h> | 
| 178 | #include <gst/video/colorbalance.h> | 
| 179 | #include <gst/video/gstvideoaffinetransformationmeta.h> | 
| 180 | #include <gst/video/gstvideoaggregator.h> | 
| 181 | #include <gst/video/gstvideocodecalphameta.h> | 
| 182 | #include <gst/video/gstvideodecoder.h> | 
| 183 | #include <gst/video/gstvideoencoder.h> | 
| 184 | #include <gst/video/gstvideofilter.h> | 
| 185 | #include <gst/video/gstvideometa.h> | 
| 186 | #include <gst/video/gstvideopool.h> | 
| 187 | #include <gst/video/gstvideosink.h> | 
| 188 | #include <gst/video/gstvideotimecode.h> | 
| 189 | #include <gst/video/gstvideoutils.h> | 
| 190 | #include <gst/video/navigation.h> | 
| 191 | #include <gst/video/video-anc.h> | 
| 192 | #include <gst/video/video-blend.h> | 
| 193 | #include <gst/video/videodirection.h> | 
| 194 | #include <gst/video/video-event.h> | 
| 195 | #include <gst/video/video-hdr.h> | 
| 196 | #include <gst/video/videoorientation.h> | 
| 197 | #include <gst/video/video-overlay-composition.h> | 
| 198 | #include <gst/video/videooverlay.h> | 
| 199 |  | 
| 200 | #endif /* __GST_VIDEO_H__ */ | 
| 201 |  |