mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-28 11:10:37 +00:00
607d32dd1f
Original commit message from CVS: * ext/sdl/sdlvideosink.c: (gst_sdlvideosink_supported), (gst_sdlvideosink_xoverlay_set_xwindow_id), (gst_sdlvideosink_deinitsdl), (gst_sdlv_process_events), (gst_sdlvideosink_event_thread), (gst_sdlvideosink_initsdl), (gst_sdlvideosink_destroy), (gst_sdlvideosink_create), (gst_sdlvideosink_setcaps), (gst_sdlvideosink_show_frame), (gst_sdlvideosink_change_state), (gst_sdlvideosink_navigation_send_event): * ext/sdl/sdlvideosink.h: Fix output stride copying, so that it displays correctly on framebuffer devices that don't match our implict GStreamer stride arrangement. Fix locking things. Offer XOverlay only when SDL is running against X. Make non-scaled (and ugly) embedding work via X Overlay. It can't actually match the embedded window size because there's no way to figure out what size that should be from the XOverlay interface. See comment in sdlvideosink.c
82 lines
2.3 KiB
C
82 lines
2.3 KiB
C
/* GStreamer SDL plugin
|
|
* Copyright (C) 2001-2002 Ronald Bultje <rbultje@ronald.bitfreak.net>
|
|
*
|
|
* 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_SDLVIDEOSINK_H__
|
|
#define __GST_SDLVIDEOSINK_H__
|
|
|
|
#include <gst/video/gstvideosink.h>
|
|
|
|
#include <SDL.h>
|
|
|
|
G_BEGIN_DECLS
|
|
|
|
#define GST_TYPE_SDLVIDEOSINK \
|
|
(gst_sdlvideosink_get_type())
|
|
#define GST_SDLVIDEOSINK(obj) \
|
|
(G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_SDLVIDEOSINK,GstSDLVideoSink))
|
|
#define GST_SDLVIDEOSINK_CLASS(klass) \
|
|
(G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_SDLVIDEOSINK,GstSDLVideoSink))
|
|
#define GST_IS_SDLVIDEOSINK(obj) \
|
|
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_SDLVIDEOSINK))
|
|
#define GST_IS_SDLVIDEOSINK_CLASS(obj) \
|
|
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_SDLVIDEOSINK))
|
|
|
|
typedef enum {
|
|
GST_SDLVIDEOSINK_OPEN = (GST_ELEMENT_FLAG_LAST << 0),
|
|
|
|
GST_SDLVIDEOSINK_FLAG_LAST = (GST_ELEMENT_FLAG_LAST << 2),
|
|
} GstSDLVideoSinkFlags;
|
|
|
|
typedef struct _GstSDLVideoSink GstSDLVideoSink;
|
|
typedef struct _GstSDLVideoSinkClass GstSDLVideoSinkClass;
|
|
|
|
struct _GstSDLVideoSink {
|
|
GstVideoSink videosink;
|
|
|
|
guint32 format; /* the SDL format */
|
|
guint32 fourcc; /* our fourcc from the caps */
|
|
|
|
gint width, height; /* the size of the incoming YUV stream */
|
|
unsigned long xwindow_id;
|
|
gboolean is_xwindows;
|
|
|
|
gint framerate_n;
|
|
gint framerate_d;
|
|
|
|
gboolean full_screen;
|
|
gboolean init;
|
|
gboolean running;
|
|
GThread *event_thread;
|
|
SDL_Surface *screen;
|
|
SDL_Overlay *overlay;
|
|
SDL_Rect rect;
|
|
|
|
GMutex *lock;
|
|
};
|
|
|
|
struct _GstSDLVideoSinkClass {
|
|
GstVideoSinkClass parent_class;
|
|
|
|
};
|
|
|
|
GType gst_sdlsink_get_type(void);
|
|
|
|
G_END_DECLS
|
|
|
|
#endif /* __GST_SDLVIDEOSINK_H__ */
|