mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-24 08:08:22 +00:00
9920b88c3f
Original commit message from CVS: This is the audio/video sync release. Changed the mpegvideoparser to parse complete pictures. Added the PTS timestamps to the pictures. Added PTS timestamps to the MPEG audio frames. Made the clock a littlebit better. Gstplay now uses two more threads one for video, one for audio playback. Added the first QoS callbacks for the pads. hopefully fix an mmx compilation problem.
131 lines
3.8 KiB
C
131 lines
3.8 KiB
C
/* Gnome-Streamer
|
|
* 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_PAD_H__
|
|
#define __GST_PAD_H__
|
|
|
|
|
|
#include <gnome-xml/parser.h>
|
|
#include <gst/gstobject.h>
|
|
#include <gst/gstbuffer.h>
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif /* __cplusplus */
|
|
|
|
|
|
#define GST_TYPE_PAD (gst_pad_get_type())
|
|
#define GST_PAD(obj) (GTK_CHECK_CAST((obj),GST_TYPE_PAD,GstPad))
|
|
#define GST_PAD_CLASS(klass) (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_PAD,GstPadClass))
|
|
#define GST_IS_PAD(obj) (GTK_CHECK_TYPE((obj),GST_TYPE_PAD))
|
|
#define GST_IS_PAD_CLASS(obj) (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_PAD))
|
|
|
|
// quick test to see if the pad is connected
|
|
#define GST_PAD_CONNECTED(pad) \
|
|
((pad)->peer != NULL)
|
|
#define GST_PAD_CAN_PULL(pad) \
|
|
((pad)->pull != NULL)
|
|
|
|
typedef struct _GstPad GstPad;
|
|
typedef struct _GstPadClass GstPadClass;
|
|
|
|
/* this defines the functions used to chain buffers
|
|
* pad is the sink pad (so the same chain function can be used for N pads)
|
|
* buf is the buffer being passed */
|
|
typedef void (*GstPadChainFunction) (GstPad *pad,GstBuffer *buf);
|
|
typedef GstBuffer *(*GstPadPullFunction) (GstPad *pad);
|
|
typedef void (*GstPadPushFunction) (GstPad *pad);
|
|
typedef void (*GstPadQoSFunction) (GstPad *pad, glong qos_message);
|
|
|
|
typedef enum {
|
|
GST_PAD_UNKNOWN,
|
|
GST_PAD_SRC,
|
|
GST_PAD_SINK,
|
|
} GstPadDirection;
|
|
|
|
//typedef enum {
|
|
//} GstPadFlags;
|
|
|
|
struct _GstPad {
|
|
GstObject object;
|
|
|
|
gchar *name;
|
|
guint16 type;
|
|
|
|
GstPadDirection direction;
|
|
|
|
GstPad *peer;
|
|
|
|
GstBuffer *bufpen;
|
|
|
|
GstPadChainFunction chain;
|
|
GstPadPullFunction pull;
|
|
GstPadQoSFunction qos;
|
|
|
|
GstObject *parent;
|
|
GList *ghostparents;
|
|
};
|
|
|
|
struct _GstPadClass {
|
|
GstObjectClass parent_class;
|
|
};
|
|
|
|
GtkType gst_pad_get_type(void);
|
|
GstPad *gst_pad_new(gchar *name,GstPadDirection direction);
|
|
void gst_pad_destroy(GstPad *pad);
|
|
|
|
GstPadDirection gst_pad_get_direction(GstPad *pad);
|
|
void gst_pad_set_chain_function(GstPad *pad,GstPadChainFunction chain);
|
|
void gst_pad_set_pull_function(GstPad *pad, GstPadPullFunction pull);
|
|
void gst_pad_set_qos_function(GstPad *pad, GstPadQoSFunction qos);
|
|
|
|
guint16 gst_pad_get_type_id(GstPad *pad);
|
|
void gst_pad_set_type_id(GstPad *pad,guint16 id);
|
|
|
|
void gst_pad_set_name(GstPad *pad,gchar *name);
|
|
gchar *gst_pad_get_name(GstPad *pad);
|
|
#define gst_pad_destroy(pad) gst_object_destroy(GST_OBJECT(pad))
|
|
|
|
void gst_pad_set_parent(GstPad *pad,GstObject *parent);
|
|
void gst_pad_add_ghost_parent(GstPad *pad,GstObject *parent);
|
|
void gst_pad_remove_ghost_parent(GstPad *pad,GstObject *parent);
|
|
GstObject *gst_pad_get_parent(GstPad *pad);
|
|
GList *gst_pad_get_ghost_parents(GstPad *pad);
|
|
|
|
GstPad *gst_pad_get_peer(GstPad *pad);
|
|
|
|
void gst_pad_connect(GstPad *srcpad,GstPad *sinkpad);
|
|
void gst_pad_disconnect(GstPad *srcpad,GstPad *sinkpad);
|
|
|
|
void gst_pad_push(GstPad *pad,GstBuffer *buffer);
|
|
GstBuffer *gst_pad_pull(GstPad *pad);
|
|
void gst_pad_handle_qos(GstPad *pad, glong qos_message);
|
|
|
|
xmlNodePtr gst_pad_save_thyself(GstPad *pad,xmlNodePtr parent);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif /* __cplusplus */
|
|
|
|
|
|
#endif /* __GST_PAD_H__ */
|
|
|