+++ /dev/null
-
-plugin_LTLIBRARIES = libgstvideoflip.la
-
-libgstvideoflip_la_SOURCES = \
- gstvideoflip.c \
- videoflip.c
-libgstvideoflip_la_CFLAGS = $(GST_CFLAGS)
-libgstvideoflip_la_LIBADD =
-libgstvideoflip_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-
-noinst_HEADERS = gstvideoflip.h videoflip.h
+++ /dev/null
-/* GStreamer
- * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
- *
- * 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., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-
-/*#define DEBUG_ENABLED */
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <gstvideoflip.h>
-#include <videoflip.h>
-
-
-
-/* elementfactory information */
-static GstElementDetails videoflip_details =
-GST_ELEMENT_DETAILS ("Video scaler",
- "Filter/Effect/Video",
- "Resizes video",
- "Wim Taymans <wim.taymans@chello.be>");
-
-/* GstVideoflip signals and args */
-enum
-{
- /* FILL ME */
- LAST_SIGNAL
-};
-
-enum
-{
- ARG_0,
- ARG_METHOD
- /* FILL ME */
-};
-
-static void gst_videoflip_base_init (gpointer g_class);
-static void gst_videoflip_class_init (GstVideoflipClass * klass);
-static void gst_videoflip_init (GstVideoflip * videoflip);
-
-static void gst_videoflip_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-static void gst_videoflip_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-
-static void gst_videoflip_chain (GstPad * pad, GstData * _data);
-static GstCaps *gst_videoflip_get_capslist (void);
-
-
-static GstElementClass *parent_class = NULL;
-
-#define GST_TYPE_VIDEOFLIP_METHOD (gst_videoflip_method_get_type())
-
-static GType
-gst_videoflip_method_get_type (void)
-{
- static GType videoflip_method_type = 0;
- static GEnumValue videoflip_methods[] = {
- {GST_VIDEOFLIP_METHOD_IDENTITY, "0", "Identity (no rotation)"},
- {GST_VIDEOFLIP_METHOD_90R, "1", "Rotate right 90 degrees"},
- {GST_VIDEOFLIP_METHOD_180, "2", "Rotate 180 degrees"},
- {GST_VIDEOFLIP_METHOD_90L, "3", "Rotate left 90 degrees"},
- {GST_VIDEOFLIP_METHOD_HORIZ, "4", "Flip horizontally"},
- {GST_VIDEOFLIP_METHOD_VERT, "5", "Flip vertically"},
- {GST_VIDEOFLIP_METHOD_TRANS, "6",
- "Flip across upper left/lower right diagonal"},
- {GST_VIDEOFLIP_METHOD_OTHER, "7",
- "Flip across upper right/lower left diagonal"},
- {0, NULL, NULL},
- };
-
- if (!videoflip_method_type) {
- videoflip_method_type = g_enum_register_static ("GstVideoflipMethod",
- videoflip_methods);
- }
- return videoflip_method_type;
-}
-
-static GstPadTemplate *
-gst_videoflip_src_template_factory (void)
-{
- /* well, actually RGB too, but since there's no RGB format anyway */
- GstCaps *caps = gst_caps_from_string ("video/x-raw-yuv, "
- "width = (int) [ 0, MAX ], "
- "height = (int) [ 0, MAX ], " "framerate = (double) [ 0, MAX ]");
-
- caps = gst_caps_intersect (caps, gst_videoflip_get_capslist ());
-
- return gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS, caps);
-}
-
-static GstPadTemplate *
-gst_videoflip_sink_template_factory (void)
-{
- GstCaps *caps = gst_caps_from_string ("video/x-raw-yuv, "
- "width = (int) [ 0, MAX ], "
- "height = (int) [ 0, MAX ], " "framerate = (double) [ 0, MAX ]");
-
- caps = gst_caps_intersect (caps, gst_videoflip_get_capslist ());
-
- return gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, caps);
-}
-
-GType
-gst_videoflip_get_type (void)
-{
- static GType videoflip_type = 0;
-
- if (!videoflip_type) {
- static const GTypeInfo videoflip_info = {
- sizeof (GstVideoflipClass),
- gst_videoflip_base_init,
- NULL,
- (GClassInitFunc) gst_videoflip_class_init,
- NULL,
- NULL,
- sizeof (GstVideoflip),
- 0,
- (GInstanceInitFunc) gst_videoflip_init,
- };
-
- videoflip_type =
- g_type_register_static (GST_TYPE_ELEMENT, "GstVideoflip",
- &videoflip_info, 0);
- }
- return videoflip_type;
-}
-
-static void
-gst_videoflip_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
- gst_element_class_set_details (element_class, &videoflip_details);
-
- gst_element_class_add_pad_template (element_class,
- gst_videoflip_sink_template_factory ());
- gst_element_class_add_pad_template (element_class,
- gst_videoflip_src_template_factory ());
-}
-static void
-gst_videoflip_class_init (GstVideoflipClass * klass)
-{
- GObjectClass *gobject_class;
- GstElementClass *gstelement_class;
-
- gobject_class = (GObjectClass *) klass;
- gstelement_class = (GstElementClass *) klass;
-
- g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_METHOD,
- g_param_spec_enum ("method", "method", "method",
- GST_TYPE_VIDEOFLIP_METHOD, GST_VIDEOFLIP_METHOD_90R,
- G_PARAM_READWRITE));
-
- parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
-
- gobject_class->set_property = gst_videoflip_set_property;
- gobject_class->get_property = gst_videoflip_get_property;
-
-}
-
-static GstCaps *
-gst_videoflip_get_capslist (void)
-{
- GstCaps *caps;
- GstStructure *structure;
- int i;
-
- caps = gst_caps_new_empty ();
- for (i = 0; i < videoflip_n_formats; i++) {
- structure = videoflip_get_cap (videoflip_formats + i);
- gst_caps_append_structure (caps, structure);
- }
-
- return caps;
-}
-
-static GstCaps *
-gst_videoflip_sink_getcaps (GstPad * pad)
-{
- GstVideoflip *videoflip;
- GstCaps *capslist = NULL;
- GstCaps *peercaps;
- GstCaps *sizecaps;
- GstCaps *caps;
- int i;
-
- GST_DEBUG ("gst_videoflip_sink_getcaps");
- videoflip = GST_VIDEOFLIP (gst_pad_get_parent (pad));
-
- /* get list of peer's caps */
- if (pad == videoflip->srcpad) {
- peercaps = gst_pad_get_allowed_caps (videoflip->sinkpad);
- } else {
- peercaps = gst_pad_get_allowed_caps (videoflip->srcpad);
- }
-
- /* FIXME videoflip doesn't allow passthru of video formats it
- * doesn't understand. */
- /* Look through our list of caps and find those that match with
- * the peer's formats. Create a list of them. */
- for (i = 0; i < videoflip_n_formats; i++) {
- GstCaps *fromcaps =
- gst_caps_new_full (videoflip_get_cap (videoflip_formats + i), NULL);
- if (gst_caps_is_always_compatible (fromcaps, peercaps)) {
- gst_caps_append (capslist, fromcaps);
- }
- }
- gst_caps_free (peercaps);
-
- sizecaps = gst_caps_from_string ("video/x-raw-yuv, "
- "width = (int) [ 0, MAX ], "
- "height = (int) [ 0, MAX ], " "framerate = (double) [ 0, MAX ]");
-
- caps = gst_caps_intersect (capslist, sizecaps);
- gst_caps_free (sizecaps);
-
- return caps;
-}
-
-
-static GstPadLinkReturn
-gst_videoflip_src_link (GstPad * pad, const GstCaps * caps)
-{
- GstVideoflip *videoflip;
- GstStructure *structure;
- gboolean ret;
-
- GST_DEBUG ("gst_videoflip_src_link");
- videoflip = GST_VIDEOFLIP (gst_pad_get_parent (pad));
-
- structure = gst_caps_get_structure (caps, 0);
-
- videoflip->format = videoflip_find_by_caps (caps);
- g_return_val_if_fail (videoflip->format, GST_PAD_LINK_REFUSED);
-
- ret = gst_structure_get_int (structure, "width", &videoflip->to_width);
- ret &= gst_structure_get_int (structure, "height", &videoflip->to_height);
-
- if (!ret)
- return GST_PAD_LINK_REFUSED;
-
- return GST_PAD_LINK_OK;
-}
-
-static GstPadLinkReturn
-gst_videoflip_sink_link (GstPad * pad, const GstCaps * caps)
-{
- GstVideoflip *videoflip;
- GstStructure *structure;
- gboolean ret;
-
- GST_DEBUG ("gst_videoflip_sink_link");
- videoflip = GST_VIDEOFLIP (gst_pad_get_parent (pad));
-
- structure = gst_caps_get_structure (caps, 0);
-
- videoflip->format = videoflip_find_by_caps (caps);
- g_return_val_if_fail (videoflip->format, GST_PAD_LINK_REFUSED);
-
- ret = gst_structure_get_int (structure, "width", &videoflip->from_width);
- ret &= gst_structure_get_int (structure, "height", &videoflip->from_height);
-
- if (!ret)
- return GST_PAD_LINK_REFUSED;
-
- return GST_PAD_LINK_OK;
-}
-
-static void
-gst_videoflip_init (GstVideoflip * videoflip)
-{
- GST_DEBUG ("gst_videoflip_init");
- videoflip->sinkpad =
- gst_pad_new_from_template (gst_videoflip_sink_template_factory (),
- "sink");
- gst_element_add_pad (GST_ELEMENT (videoflip), videoflip->sinkpad);
- gst_pad_set_chain_function (videoflip->sinkpad, gst_videoflip_chain);
- gst_pad_set_link_function (videoflip->sinkpad, gst_videoflip_sink_link);
- gst_pad_set_getcaps_function (videoflip->sinkpad, gst_videoflip_sink_getcaps);
-
- videoflip->srcpad =
- gst_pad_new_from_template (gst_videoflip_src_template_factory (), "src");
- gst_element_add_pad (GST_ELEMENT (videoflip), videoflip->srcpad);
- gst_pad_set_link_function (videoflip->srcpad, gst_videoflip_src_link);
- //gst_pad_set_getcaps_function(videoflip->srcpad,gst_videoflip_getcaps);
-
- videoflip->inited = FALSE;
- videoflip->force_size = FALSE;
-}
-
-
-static void
-gst_videoflip_chain (GstPad * pad, GstData * _data)
-{
- GstBuffer *buf = GST_BUFFER (_data);
- GstVideoflip *videoflip;
- guchar *data;
- gulong size;
- GstBuffer *outbuf;
-
- GST_DEBUG ("gst_videoflip_chain");
-
- g_return_if_fail (pad != NULL);
- g_return_if_fail (GST_IS_PAD (pad));
- g_return_if_fail (buf != NULL);
-
- videoflip = GST_VIDEOFLIP (gst_pad_get_parent (pad));
- g_return_if_fail (videoflip->inited);
-
- data = GST_BUFFER_DATA (buf);
- size = GST_BUFFER_SIZE (buf);
-
- if (videoflip->passthru) {
- gst_pad_push (videoflip->srcpad, GST_DATA (buf));
- return;
- }
-
- GST_DEBUG ("gst_videoflip_chain: got buffer of %ld bytes in '%s'", size,
- GST_OBJECT_NAME (videoflip));
-
- GST_DEBUG
- ("size=%ld from=%dx%d to=%dx%d fromsize=%ld (should be %d) tosize=%d",
- size, videoflip->from_width, videoflip->from_height, videoflip->to_width,
- videoflip->to_height, size, videoflip->from_buf_size,
- videoflip->to_buf_size);
-
- g_return_if_fail (size == videoflip->from_buf_size);
-
- outbuf = gst_buffer_new ();
- /* FIXME: handle bufferpools */
- GST_BUFFER_SIZE (outbuf) = videoflip->to_buf_size;
- GST_BUFFER_DATA (outbuf) = g_malloc (videoflip->to_buf_size);
- GST_BUFFER_TIMESTAMP (outbuf) = GST_BUFFER_TIMESTAMP (buf);
-
- g_return_if_fail (videoflip->format);
- GST_DEBUG ("format %s", videoflip->format->fourcc);
- g_return_if_fail (videoflip->format->scale);
-
- videoflip->format->scale (videoflip, GST_BUFFER_DATA (outbuf), data);
-
- GST_DEBUG ("gst_videoflip_chain: pushing buffer of %d bytes in '%s'",
- GST_BUFFER_SIZE (outbuf), GST_OBJECT_NAME (videoflip));
-
- gst_pad_push (videoflip->srcpad, GST_DATA (outbuf));
-
- gst_buffer_unref (buf);
-}
-
-static void
-gst_videoflip_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- GstVideoflip *src;
-
- g_return_if_fail (GST_IS_VIDEOFLIP (object));
- src = GST_VIDEOFLIP (object);
-
- GST_DEBUG ("gst_videoflip_set_property");
- switch (prop_id) {
- case ARG_METHOD:
- src->method = g_value_get_enum (value);
- break;
- default:
- break;
- }
-}
-
-static void
-gst_videoflip_get_property (GObject * object, guint prop_id, GValue * value,
- GParamSpec * pspec)
-{
- GstVideoflip *src;
-
- g_return_if_fail (GST_IS_VIDEOFLIP (object));
- src = GST_VIDEOFLIP (object);
-
- switch (prop_id) {
- case ARG_METHOD:
- g_value_set_enum (value, src->method);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-
-static gboolean
-plugin_init (GstPlugin * plugin)
-{
- return gst_element_register (plugin, "videoflip", GST_RANK_NONE,
- GST_TYPE_VIDEOFLIP);
-}
-
-GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "videoflip",
- "Resizes video", plugin_init, VERSION, GST_LICENSE, GST_PACKAGE, GST_ORIGIN)
+++ /dev/null
-/* GStreamer
- * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
- *
- * 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., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-
-#ifndef __GST_VIDEOFLIP_H__
-#define __GST_VIDEOFLIP_H__
-
-
-#include <gst/gst.h>
-
-
-G_BEGIN_DECLS
-
-typedef enum {
- GST_VIDEOFLIP_METHOD_IDENTITY,
- GST_VIDEOFLIP_METHOD_90R,
- GST_VIDEOFLIP_METHOD_180,
- GST_VIDEOFLIP_METHOD_90L,
- GST_VIDEOFLIP_METHOD_HORIZ,
- GST_VIDEOFLIP_METHOD_VERT,
- GST_VIDEOFLIP_METHOD_TRANS,
- GST_VIDEOFLIP_METHOD_OTHER,
-} GstVideoflipMethod;
-
-
-#define GST_TYPE_VIDEOFLIP \
- (gst_videoflip_get_type())
-#define GST_VIDEOFLIP(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_VIDEOFLIP,GstVideoflip))
-#define GST_VIDEOFLIP_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_VIDEOFLIP,GstVideoflip))
-#define GST_IS_VIDEOFLIP(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_VIDEOFLIP))
-#define GST_IS_VIDEOFLIP_CLASS(obj) \
- (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_VIDEOFLIP))
-
-typedef struct _GstVideoflip GstVideoflip;
-typedef struct _GstVideoflipClass GstVideoflipClass;
-
-struct _GstVideoflip {
- GstElement element;
-
- GstPad *sinkpad,*srcpad;
-
- gboolean force_size;
- gint forced_width;
- gint forced_height;
-
- /* video state */
- gboolean inited;
- struct videoflip_format_struct *format;
- gint to_width;
- gint to_height;
- gint from_width;
- gint from_height;
- gboolean passthru;
-
- GstVideoflipMethod method;
-
- /* private */
- gint from_buf_size;
- gint to_buf_size;
-};
-
-struct _GstVideoflipClass {
- GstElementClass parent_class;
-};
-
-GType gst_videoflip_get_type(void);
-
-void gst_videoflip_setup(GstVideoflip *);
-#define gst_videoflip_scale(scale, src, dest) (scale)->scale_cc((scale), (src), (dest))
-
-G_END_DECLS
-
-#endif /* __GST_VIDEOFLIP_H__ */
-
+++ /dev/null
-/* GStreamer
- * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
- *
- * 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., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#define DEBUG_ENABLED
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gst/gst.h>
-#include <stdlib.h>
-#include <math.h>
-#include <videoflip.h>
-#include <string.h>
-
-#include "gstvideoflip.h"
-
-static void gst_videoflip_planar411 (GstVideoflip * scale, unsigned char *dest,
- unsigned char *src);
-
-static void gst_videoflip_flip (GstVideoflip * videoflip, unsigned char *dest,
- unsigned char *src, int sw, int sh, int dw, int dh);
-
-struct videoflip_format_struct videoflip_formats[] = {
- /* planar */
- {"YV12", 12, gst_videoflip_planar411,},
- {"I420", 12, gst_videoflip_planar411,},
-};
-
-int videoflip_n_formats =
- sizeof (videoflip_formats) / sizeof (videoflip_formats[0]);
-
-GstStructure *
-videoflip_get_cap (struct videoflip_format_struct *format)
-{
- unsigned int fourcc;
- GstStructure *structure;
-
- if (format->scale == NULL)
- return NULL;
-
- fourcc =
- GST_MAKE_FOURCC (format->fourcc[0], format->fourcc[1], format->fourcc[2],
- format->fourcc[3]);
-
- if (format->bpp) {
- structure = gst_structure_new ("video/x-raw-rgb",
- "depth", G_TYPE_INT, format->bpp,
- "bpp", G_TYPE_INT, format->depth,
- "endianness", G_TYPE_INT, format->endianness,
- "red_mask", G_TYPE_INT, format->red_mask,
- "green_mask", G_TYPE_INT, format->green_mask,
- "blue_mask", G_TYPE_INT, format->blue_mask, NULL);
- } else {
- structure = gst_structure_new ("video/x-raw-yuv",
- "format", GST_TYPE_FOURCC, fourcc, NULL);
- }
-
- return structure;
-}
-
-struct videoflip_format_struct *
-videoflip_find_by_caps (const GstCaps * caps)
-{
- int i;
-
- GST_DEBUG ("finding %p", caps);
-
- g_return_val_if_fail (caps != NULL, NULL);
-
- for (i = 0; i < videoflip_n_formats; i++) {
- GstCaps *c;
-
- c = gst_caps_new_full (videoflip_get_cap (videoflip_formats + i), NULL);
- if (c) {
- if (gst_caps_is_always_compatible (caps, c)) {
- gst_caps_free (c);
- return videoflip_formats + i;
- }
- gst_caps_free (c);
- }
- }
-
- return NULL;
-}
-
-void
-gst_videoflip_setup (GstVideoflip * videoflip)
-{
- if (videoflip->from_width == 0 || videoflip->from_height == 0) {
- return;
- }
-
- switch (videoflip->method) {
- case GST_VIDEOFLIP_METHOD_90R:
- case GST_VIDEOFLIP_METHOD_90L:
- case GST_VIDEOFLIP_METHOD_TRANS:
- case GST_VIDEOFLIP_METHOD_OTHER:
- videoflip->to_height = videoflip->from_width;
- videoflip->to_width = videoflip->from_height;
- break;
- case GST_VIDEOFLIP_METHOD_IDENTITY:
- case GST_VIDEOFLIP_METHOD_180:
- case GST_VIDEOFLIP_METHOD_HORIZ:
- case GST_VIDEOFLIP_METHOD_VERT:
- videoflip->to_height = videoflip->from_height;
- videoflip->to_width = videoflip->from_width;
- break;
- default:
- /* FIXME */
- break;
- }
-
- GST_DEBUG ("format=%p \"%s\" from %dx%d to %dx%d",
- videoflip->format, videoflip->format->fourcc,
- videoflip->from_width, videoflip->from_height,
- videoflip->to_width, videoflip->to_height);
-
- if (videoflip->method == GST_VIDEOFLIP_METHOD_IDENTITY) {
- GST_DEBUG ("videoflip: using passthru");
- videoflip->passthru = TRUE;
- videoflip->inited = TRUE;
- return;
- }
-
- videoflip->from_buf_size = (videoflip->from_width * videoflip->from_height
- * videoflip->format->depth) / 8;
- videoflip->to_buf_size = (videoflip->to_width * videoflip->to_height
- * videoflip->format->depth) / 8;
-
- videoflip->inited = TRUE;
-}
-
-static void
-gst_videoflip_planar411 (GstVideoflip * scale, unsigned char *dest,
- unsigned char *src)
-{
- int sw = scale->from_width;
- int sh = scale->from_height;
- int dw = scale->to_width;
- int dh = scale->to_height;
-
- GST_DEBUG ("videoflip: scaling planar 4:1:1 %dx%d to %dx%d", sw, sh, dw, dh);
-
- gst_videoflip_flip (scale, dest, src, sw, sh, dw, dh);
-
- src += sw * sh;
- dest += dw * dh;
-
- dh = dh >> 1;
- dw = dw >> 1;
- sh = sh >> 1;
- sw = sw >> 1;
-
- gst_videoflip_flip (scale, dest, src, sw, sh, dw, dh);
-
- src += sw * sh;
- dest += dw * dh;
-
- gst_videoflip_flip (scale, dest, src, sw, sh, dw, dh);
-}
-
-static void
-gst_videoflip_flip (GstVideoflip * videoflip, unsigned char *dest,
- unsigned char *src, int sw, int sh, int dw, int dh)
-{
- int x, y;
-
- switch (videoflip->method) {
- case GST_VIDEOFLIP_METHOD_90R:
- for (y = 0; y < dh; y++) {
- for (x = 0; x < dw; x++) {
- dest[y * dw + x] = src[(sh - 1 - x) * sw + y];
- }
- }
- break;
- case GST_VIDEOFLIP_METHOD_90L:
- for (y = 0; y < dh; y++) {
- for (x = 0; x < dw; x++) {
- dest[y * dw + x] = src[x * sw + (sw - 1 - y)];
- }
- }
- break;
- case GST_VIDEOFLIP_METHOD_180:
- for (y = 0; y < dh; y++) {
- for (x = 0; x < dw; x++) {
- dest[y * dw + x] = src[(sh - 1 - y) * sw + (sw - 1 - x)];
- }
- }
- break;
- case GST_VIDEOFLIP_METHOD_HORIZ:
- for (y = 0; y < dh; y++) {
- for (x = 0; x < dw; x++) {
- dest[y * dw + x] = src[y * sw + (sw - 1 - x)];
- }
- }
- break;
- case GST_VIDEOFLIP_METHOD_VERT:
- for (y = 0; y < dh; y++) {
- for (x = 0; x < dw; x++) {
- dest[y * dw + x] = src[(sh - 1 - y) * sw + x];
- }
- }
- break;
- case GST_VIDEOFLIP_METHOD_TRANS:
- for (y = 0; y < dh; y++) {
- for (x = 0; x < dw; x++) {
- dest[y * dw + x] = src[x * sw + y];
- }
- }
- break;
- case GST_VIDEOFLIP_METHOD_OTHER:
- for (y = 0; y < dh; y++) {
- for (x = 0; x < dw; x++) {
- dest[y * dw + x] = src[(sh - 1 - x) * sw + (sw - 1 - y)];
- }
- }
- break;
- default:
- /* FIXME */
- break;
- }
-}
+++ /dev/null
-/* GStreamer
- * Copyright (C) <2003> David A. Schleef <ds@schleef.org>
- *
- * 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., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-
-#ifndef __VIDEOFLIP_H__
-#define __VIDEOFLIP_H__
-
-#include "gstvideoflip.h"
-
-struct videoflip_format_struct {
- char *fourcc;
- int depth;
- void (*scale)(GstVideoflip *,unsigned char *dest, unsigned char *src);
- int bpp;
- unsigned int endianness;
- unsigned int red_mask;
- unsigned int green_mask;
- unsigned int blue_mask;
-};
-
-extern struct videoflip_format_struct videoflip_formats[];
-extern int videoflip_n_formats;
-
-GstStructure *videoflip_get_cap(struct videoflip_format_struct *format);
-
-struct videoflip_format_struct *videoflip_find_by_caps(const GstCaps *caps);
-
-
-#endif
-
+++ /dev/null
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="videoflip"
- ProjectGUID="{979C216F-0ACF-4956-AE00-055A42D678DB}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="../../win32/Debug"
- IntermediateDirectory="../../win32/Debug"
- ConfigurationType="2"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../gstreamer/win32;../../../gstreamer;../../../gstreamer/libs;../../../glib;../../../glib/glib;../../../glib/gmodule;"../../gst-libs";../../../popt/include;../../../libxml2/include/libxml2"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;videoflip_EXPORTS;HAVE_CONFIG_H;_USE_MATH_DEFINES"
- MinimalRebuild="TRUE"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="4"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="glib-2.0.lib gmodule-2.0.lib gthread-2.0.lib gobject-2.0.lib libgstreamer.lib gstbytestream.lib iconv.lib intl.lib"
- OutputFile="$(OutDir)/gstvideoflip.dll"
- LinkIncremental="2"
- AdditionalLibraryDirectories="../../../gstreamer/win32/Debug;../../../glib/glib;../../../glib/gmodule;../../../glib/gthread;../../../glib/gobject;../../../gettext/lib;../../../libiconv/lib"
- ModuleDefinitionFile=""
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(OutDir)/videoflip.pdb"
- SubSystem="2"
- OptimizeReferences="2"
- ImportLibrary="$(OutDir)/gstvideoflip.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"
- CommandLine="copy /Y $(TargetPath) c:\gstreamer\plugins"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="../../win32/Release"
- IntermediateDirectory="../../win32/Release"
- ConfigurationType="2"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../gstreamer/win32;../../../gstreamer;../../../gstreamer/libs;../../../glib;../../../glib/glib;../../../glib/gmodule;"../../gst-libs";../../../popt/include;../../../libxml2/include/libxml2"
- PreprocessorDefinitions="WIN32;NDEBUG;GST_DISABLE_GST_DEBUG;_WINDOWS;_USRDLL;videoflip_EXPORTS;HAVE_CONFIG_H;_USE_MATH_DEFINES"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="3"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="glib-2.0.lib gmodule-2.0.lib gthread-2.0.lib gobject-2.0.lib libgstreamer.lib gstbytestream.lib iconv.lib intl.lib"
- OutputFile="$(OutDir)/gstvideoflip.dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories="../../../gstreamer/win32/Release;../../../glib/glib;../../../glib/gmodule;../../../glib/gthread;../../../glib/gobject;../../../gettext/lib;../../../libiconv/lib"
- ModuleDefinitionFile=""
- GenerateDebugInformation="TRUE"
- SubSystem="2"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- ImportLibrary="$(OutDir)/gstvideoflip.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"
- CommandLine="copy /Y $(TargetPath) c:\gstreamer\plugins"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
- <File
- RelativePath=".\videoflip.c">
- </File>
- <File
- RelativePath=".\gstvideoflip.c">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- <File
- RelativePath=".\videoflip.h">
- </File>
- <File
- RelativePath=".\gstvideoflip.h">
- </File>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>