mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 06:54:49 +00:00
gst/switch/gstswitch.*: Replace with files from gststreamselector.[ch], registered as the "switch" plugin, with "GstS...
Original commit message from CVS: 2007-12-17 Andy Wingo <wingo@pobox.com> * gst/switch/gstswitch.h: * gst/switch/gstswitch.c: Replace with files from gststreamselector.[ch], registered as the "switch" plugin, with "GstSwitch" types. Patch 1/12.
This commit is contained in:
parent
07cdfe9e63
commit
9db3f63b13
3 changed files with 563 additions and 749 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2007-12-17 Andy Wingo <wingo@pobox.com>
|
||||||
|
|
||||||
|
* gst/switch/gstswitch.h:
|
||||||
|
* gst/switch/gstswitch.c: Replace with files from
|
||||||
|
gststreamselector.[ch], registered as the "switch" plugin, with
|
||||||
|
"GstSwitch" types. Patch 1/12.
|
||||||
|
|
||||||
2007-12-17 Edgard Lima <edgard.lima@indt.org.br>
|
2007-12-17 Edgard Lima <edgard.lima@indt.org.br>
|
||||||
|
|
||||||
* ext/metadata/TODO:
|
* ext/metadata/TODO:
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,5 +1,6 @@
|
||||||
/* GStreamer
|
/* GStreamer
|
||||||
* Copyright (C) 2003 Julien Moutte <julien@moutte.net>
|
* Copyright (C) 2003 Julien Moutte <julien@moutte.net>
|
||||||
|
* Copyright (C) 2005 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Library General Public
|
* modify it under the terms of the GNU Library General Public
|
||||||
|
@ -17,67 +18,44 @@
|
||||||
* Boston, MA 02111-1307, USA.
|
* Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __GST_SWITCH_H__
|
#ifndef __GST_STREAM_SELECTOR_H__
|
||||||
#define __GST_SWITCH_H__
|
#define __GST_STREAM_SELECTOR_H__
|
||||||
|
|
||||||
#include <gst/gst.h>
|
#include <gst/gst.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
#define GST_TYPE_SWITCH \
|
#define GST_TYPE_STREAM_SELECTOR \
|
||||||
(gst_switch_get_type())
|
(gst_stream_selector_get_type())
|
||||||
#define GST_SWITCH(obj) \
|
#define GST_STREAM_SELECTOR(obj) \
|
||||||
(G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_SWITCH, GstSwitch))
|
(G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_STREAM_SELECTOR, GstStreamSelector))
|
||||||
#define GST_SWITCH_CLASS(klass) \
|
#define GST_STREAM_SELECTOR_CLASS(klass) \
|
||||||
(G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_SWITCH, GstSwitchClass))
|
(G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_STREAM_SELECTOR, GstStreamSelectorClass))
|
||||||
#define GST_IS_SWITCH(obj) \
|
#define GST_IS_STREAM_SELECTOR(obj) \
|
||||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_SWITCH))
|
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_STREAM_SELECTOR))
|
||||||
#define GST_IS_SWITCH_CLASS(klass) \
|
#define GST_IS_STREAM_SELECTOR_CLASS(klass) \
|
||||||
(G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_SWITCH))
|
(G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_STREAM_SELECTOR))
|
||||||
|
|
||||||
typedef struct _GstSwitch GstSwitch;
|
typedef struct _GstStreamSelector GstStreamSelector;
|
||||||
typedef struct _GstSwitchClass GstSwitchClass;
|
typedef struct _GstStreamSelectorClass GstStreamSelectorClass;
|
||||||
|
|
||||||
struct _GstSwitch {
|
struct _GstStreamSelector {
|
||||||
GstElement element;
|
GstElement element;
|
||||||
|
|
||||||
GstPad *active_sinkpad;
|
|
||||||
GstPad *srcpad;
|
|
||||||
GstPad *previous_sinkpad;
|
|
||||||
|
|
||||||
|
GstPad *srcpad;
|
||||||
|
|
||||||
|
GstPad *active_sinkpad;
|
||||||
guint nb_sinkpads;
|
guint nb_sinkpads;
|
||||||
/* this hash table stores for key of the pad pointer
|
|
||||||
* the last new segment event received for this pad
|
GstSegment segment;
|
||||||
* so when switching we can send new segment events
|
|
||||||
*/
|
|
||||||
GHashTable *newsegment_events;
|
|
||||||
/* flag to decide whether we need to send a new segment event
|
|
||||||
* before we receive the next buffer */
|
|
||||||
gboolean need_to_send_newsegment;
|
|
||||||
/* flag to decide whether to queue buffers received from current
|
|
||||||
* pads */
|
|
||||||
gboolean queue_buffers;
|
|
||||||
GstClockTime stop_value;
|
|
||||||
GstClockTime start_value;
|
|
||||||
GstClockTime current_start;
|
|
||||||
GstClockTime last_ts;
|
|
||||||
/* this hash tables stores for key of the pad pointer
|
|
||||||
* a GList of stored buffers that need to be sent once the
|
|
||||||
* new segment has been sent
|
|
||||||
*/
|
|
||||||
GHashTable *stored_buffers;
|
|
||||||
GMutex *switch_mutex;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#define GST_SWITCH_LOCK(obj) g_mutex_lock(obj->switch_mutex)
|
struct _GstStreamSelectorClass {
|
||||||
#define GST_SWITCH_UNLOCK(obj) g_mutex_unlock(obj->switch_mutex)
|
|
||||||
|
|
||||||
struct _GstSwitchClass {
|
|
||||||
GstElementClass parent_class;
|
GstElementClass parent_class;
|
||||||
};
|
};
|
||||||
|
|
||||||
GType gst_switch_get_type (void);
|
GType gst_stream_selector_get_type (void);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __GST_SWITCH_H__ */
|
#endif /* __GST_STREAM_SELECTOR_H__ */
|
||||||
|
|
Loading…
Reference in a new issue