mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-22 17:51:16 +00:00
Pending editor changes. fixes for autoplug of elementary MPEG1 video streams make sure mp3 types get compiled videosi...
Original commit message from CVS: Pending editor changes. fixes for autoplug of elementary MPEG1 video streams make sure mp3 types get compiled videosink changes for xml loading
This commit is contained in:
parent
41aa51ba45
commit
f4a635c8dc
17 changed files with 457 additions and 151 deletions
|
@ -14,6 +14,7 @@ libgsteditor_la_SOURCES = \
|
|||
gsteditorbin.c \
|
||||
gsteditorcanvas.c \
|
||||
gsteditorpad.c \
|
||||
gsteditorpadtemplate.c \
|
||||
gsteditorconnection.c \
|
||||
gsteditorimage.c \
|
||||
gsteditorpalette.c \
|
||||
|
|
|
@ -52,7 +52,9 @@ main (int argc, char *argv[])
|
|||
|
||||
gst_editor_project_view_new(project);
|
||||
|
||||
gdk_threads_enter ();
|
||||
gtk_main();
|
||||
gdk_threads_leave ();
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
|
|
@ -35,6 +35,8 @@ typedef struct _GstEditorCanvas GstEditorCanvas;
|
|||
typedef struct _GstEditorCanvasClass GstEditorCanvasClass;
|
||||
typedef struct _GstEditorPad GstEditorPad;
|
||||
typedef struct _GstEditorPadClass GstEditorPadClass;
|
||||
typedef struct _GstEditorPadTemplate GstEditorPadTemplate;
|
||||
typedef struct _GstEditorPadTemplateClass GstEditorPadTemplateClass;
|
||||
typedef struct _GstEditorConnection GstEditorConnection;
|
||||
typedef struct _GstEditorConnectionClass GstEditorConnectionClass;
|
||||
|
||||
|
@ -142,6 +144,9 @@ struct _GstEditorElement {
|
|||
GList *srcpads,*sinkpads;
|
||||
gboolean padlistchange;
|
||||
|
||||
/* list of padtemplates */
|
||||
GList *srcpadtemps,*sinkpadtemps;
|
||||
|
||||
/* interaction state */
|
||||
gboolean dragging,resizing,moved,hesitating;
|
||||
gdouble offx,offy,dragx,dragy;
|
||||
|
@ -168,8 +173,6 @@ void gst_editor_element_construct(GstEditorElement *element,
|
|||
const gchar *first_arg_name,
|
||||
va_list args);
|
||||
void gst_editor_element_repack(GstEditorElement *element);
|
||||
GstEditorPad *gst_editor_element_add_pad(GstEditorElement *element,
|
||||
GstPad *pad);
|
||||
void gst_editor_element_set_name(GstEditorElement *element,
|
||||
const gchar *name);
|
||||
const gchar *gst_editor_element_get_name(GstEditorElement *element);
|
||||
|
@ -314,6 +317,75 @@ void gst_editor_pad_repack(GstEditorPad *pad);
|
|||
|
||||
|
||||
|
||||
#define GST_TYPE_EDITOR_PADTEMPLATE \
|
||||
(gst_editor_padtemplate_get_type())
|
||||
#define GST_EDITOR_PADTEMPLATE(obj) \
|
||||
(GTK_CHECK_CAST((obj),GST_TYPE_EDITOR_PADTEMPLATE,GstEditorPadTemplate))
|
||||
#define GST_EDITOR_PADTEMPLATE_CLASS(klass) \
|
||||
(GTK_CHECK_CLASS_CAST((klass),GST_TYPE_EDITOR_PADTEMPLATE,GstEditorPadTemplateClass))
|
||||
#define GST_IS_EDITOR_PADTEMPLATE(obj) \
|
||||
(GTK_CHECK_TYPE((obj),GST_TYPE_EDITOR_PADTEMPLATE))
|
||||
#define GST_IS_EDITOR_PADTEMPLATE_CLASS(obj) \
|
||||
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_EDITOR_PADTEMPLATE))
|
||||
|
||||
struct _GstEditorPadTemplate {
|
||||
GtkObject object;
|
||||
|
||||
/* parent element */
|
||||
GstEditorElement *parent;
|
||||
|
||||
/* toplevel canvas */
|
||||
GstEditorCanvas *canvas;
|
||||
|
||||
/* the padtemplate we're associated with */
|
||||
GstPadTemplate *padtemplate;
|
||||
|
||||
/* pads created from this template */
|
||||
GList *pads;
|
||||
|
||||
/* if this is a sink (convenience) */
|
||||
gboolean issrc;
|
||||
|
||||
/* whether we've been realized or not */
|
||||
gboolean realized;
|
||||
|
||||
/* connections */
|
||||
GstEditorConnection *connection;
|
||||
GstEditorConnection *ghostconnection;
|
||||
|
||||
/* visual stuff */
|
||||
GnomeCanvasGroup *group;
|
||||
GnomeCanvasItem *border,*title,*padtemplatebox;
|
||||
gboolean sinkpadtemplate; // is this a sink padtemplate?
|
||||
gdouble x,y; // location
|
||||
gdouble width,height; // actual size
|
||||
gdouble boxwidth,boxheight; // size of padtemplate box
|
||||
gboolean resize; // does it need resizing?
|
||||
|
||||
/* interaction state */
|
||||
gboolean dragging,resizing,moved;
|
||||
gdouble dragx,dragy;
|
||||
|
||||
/* connection */
|
||||
// GnomeCanvasItem *connection; // can't use
|
||||
//GstEditorConnection
|
||||
};
|
||||
|
||||
struct _GstEditorPadTemplateClass {
|
||||
GtkObjectClass parent_class;
|
||||
|
||||
void (*realize) (GstEditorPadTemplate *padtemplate);
|
||||
};
|
||||
|
||||
GtkType gst_editor_padtemplate_get_type();
|
||||
GstEditorPadTemplate *gst_editor_padtemplate_new(GstEditorElement *parent,GstPadTemplate *padtemplate,
|
||||
const gchar *first_arg_name, ...);
|
||||
void gst_editor_padtemplate_construct(GstEditorPadTemplate *element,
|
||||
GstEditorElement *parent,
|
||||
const gchar *first_arg_name,va_list args);
|
||||
void gst_editor_padtemplate_repack(GstEditorPadTemplate *padtemplate);
|
||||
|
||||
|
||||
#define GST_TYPE_EDITOR_CONNECTION \
|
||||
(gst_editor_connection_get_type())
|
||||
#define GST_EDITOR_CONNECTION(obj) \
|
||||
|
|
|
@ -353,6 +353,7 @@ gst_editor_bin_object_added (GstEditorBin *editorbin, GstObject *bin, GstObject
|
|||
g_print ("gsteditorbin: object added\n");
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
gst_editor_bin_add (GstEditorBin *bin, GstEditorElement *element)
|
||||
{
|
||||
|
|
|
@ -50,19 +50,22 @@ static gint gst_editor_element_state_event (GnomeCanvasItem *item,
|
|||
GdkEvent *event,
|
||||
gpointer data);
|
||||
|
||||
/* external events (from GstElement) */
|
||||
static void gst_editor_element_state_change (GstElement *element,
|
||||
gint state,
|
||||
GstEditorElement *editorelement);
|
||||
|
||||
/* utility functions */
|
||||
static void gst_editor_element_resize (GstEditorElement *element);
|
||||
static void gst_editor_element_set_state (GstEditorElement *element,
|
||||
gint id,gboolean set);
|
||||
static void gst_editor_element_add_pad_wrapper (GstEditorElement *element,
|
||||
GstPad *pad);
|
||||
static void gst_editor_element_add_pad (GstEditorElement *element,
|
||||
GstPad *pad);
|
||||
GstEditorPadTemplate* gst_editor_element_add_padtemplate (GstEditorElement *element,
|
||||
GstPadTemplate *pad);
|
||||
static void gst_editor_element_sync_state (GstEditorElement *element);
|
||||
static void gst_editor_element_sync_state_wrapper (GstEditorElement *element);
|
||||
static void gst_editor_element_move (GstEditorElement *element,
|
||||
gdouble dx,gdouble dy);
|
||||
|
||||
static void gst_editor_element_position_changed (GstEditorElement *element,
|
||||
GstEditorElement *parent);
|
||||
|
||||
static gchar *_gst_editor_element_states[] = { "S","R","P","F" };
|
||||
|
||||
|
@ -367,7 +370,6 @@ gst_editor_element_realize (GstEditorElement *element)
|
|||
gint i;
|
||||
gdouble x1,y1,x2,y2;
|
||||
GList *pads;
|
||||
GstPad *pad;
|
||||
|
||||
// g_print("realizing editor element %p\n",element);
|
||||
|
||||
|
@ -375,9 +377,17 @@ gst_editor_element_realize (GstEditorElement *element)
|
|||
g_return_if_fail(element->parent != NULL);
|
||||
|
||||
// set the state signal of the actual element
|
||||
gtk_signal_connect(GTK_OBJECT(element->element),"state_change",
|
||||
GTK_SIGNAL_FUNC(gst_editor_element_state_change),
|
||||
element);
|
||||
gtk_signal_connect_object (GTK_OBJECT(element->element),"state_change",
|
||||
GTK_SIGNAL_FUNC(gst_editor_element_sync_state_wrapper),
|
||||
GTK_OBJECT (element));
|
||||
|
||||
gtk_signal_connect_object (GTK_OBJECT(element->element),"new_pad",
|
||||
GTK_SIGNAL_FUNC(gst_editor_element_add_pad_wrapper),
|
||||
GTK_OBJECT (element));
|
||||
|
||||
gtk_signal_connect_object (GTK_OBJECT(element->parent),"position_changed",
|
||||
GTK_SIGNAL_FUNC(gst_editor_element_position_changed),
|
||||
GTK_OBJECT (element));
|
||||
|
||||
// create the bounds if we haven't had them set
|
||||
// g_print("centering element at %.2fx%.2f (%.2fx%.2f)\n",
|
||||
|
@ -454,10 +464,22 @@ gst_editor_element_realize (GstEditorElement *element)
|
|||
GTK_SIGNAL_FUNC(gst_editor_element_state_event),
|
||||
GINT_TO_POINTER(i));
|
||||
}
|
||||
|
||||
// get all the padtemplates
|
||||
pads = gst_element_get_padtemplate_list(element->element);
|
||||
while (pads) {
|
||||
GstPadTemplate *temp = (GstPadTemplate *) pads->data;
|
||||
|
||||
gst_editor_element_add_padtemplate (element,temp);
|
||||
|
||||
pads = g_list_next(pads);
|
||||
}
|
||||
|
||||
// get all the pads
|
||||
pads = gst_element_get_pad_list(element->element);
|
||||
while (pads) {
|
||||
pad = GST_PAD(pads->data);
|
||||
GstPad *pad = GST_PAD(pads->data);
|
||||
|
||||
gst_editor_element_add_pad(element,pad);
|
||||
|
||||
pads = g_list_next(pads);
|
||||
|
@ -489,6 +511,7 @@ gst_editor_element_resize (GstEditorElement *element)
|
|||
gdouble groupwidth,groupheight;
|
||||
GList *pads;
|
||||
GstEditorPad *editorpad;
|
||||
GstEditorPadTemplate *editorpadtemplate;
|
||||
gint i;
|
||||
|
||||
if (element->resize != TRUE) return;
|
||||
|
@ -552,12 +575,28 @@ gst_editor_element_resize (GstEditorElement *element)
|
|||
element->srcs++;
|
||||
pads = g_list_next(pads);
|
||||
}
|
||||
pads = element->sinkpadtemps;
|
||||
while (pads) {
|
||||
editorpadtemplate = GST_EDITOR_PADTEMPLATE(pads->data);
|
||||
element->sinkwidth = MAX(element->sinkwidth,editorpadtemplate->width);
|
||||
element->sinkheight = MAX(element->sinkheight,editorpadtemplate->height);
|
||||
element->sinks++;
|
||||
pads = g_list_next(pads);
|
||||
}
|
||||
pads = element->srcpadtemps;
|
||||
while (pads) {
|
||||
editorpadtemplate = GST_EDITOR_PADTEMPLATE(pads->data);
|
||||
element->srcwidth = MAX(element->srcwidth,editorpadtemplate->width);
|
||||
element->srcheight = MAX(element->srcheight,editorpadtemplate->height);
|
||||
element->srcs++;
|
||||
pads = g_list_next(pads);
|
||||
}
|
||||
// add in the needed space
|
||||
element->minheight += MAX((element->sinkheight*element->sinks),
|
||||
(element->srcheight*element->srcs)) + 4.0;
|
||||
element->minwidth = MAX(element->minwidth,
|
||||
((element->sinkwidth*element->sinks) +
|
||||
(element->srcwidth*element->srcs) + 4.0));
|
||||
((element->sinkwidth) +
|
||||
(element->srcwidth) + 4.0));
|
||||
// g_print("have %d sinks (%.2fx%.2f) and %d srcs (%.2fx%.2f)\n",
|
||||
// element->sinks,element->sinkwidth,element->sinkheight,
|
||||
// element->srcs,element->srcwidth,element->srcheight);
|
||||
|
@ -569,6 +608,8 @@ gst_editor_element_resize (GstEditorElement *element)
|
|||
element->width = MAX(element->width,element->minwidth);
|
||||
element->height = MAX(element->height,element->minheight);
|
||||
// g_print("is now %.2fx%.2f\n",element->width,element->height);
|
||||
|
||||
gtk_signal_emit(GTK_OBJECT(element),gst_editor_element_signals[SIZE_CHANGED], element);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -576,6 +617,7 @@ gst_editor_element_repack (GstEditorElement *element)
|
|||
{
|
||||
GList *pads;
|
||||
GstEditorPad *editorpad;
|
||||
GstEditorPadTemplate *editorpadtemplate;
|
||||
gint sinks;
|
||||
gint srcs;
|
||||
gdouble x1,y1,x2,y2;
|
||||
|
@ -642,13 +684,25 @@ gst_editor_element_repack (GstEditorElement *element)
|
|||
sinks--;
|
||||
pads = g_list_next(pads);
|
||||
}
|
||||
pads = element->sinkpadtemps;
|
||||
while (pads) {
|
||||
editorpadtemplate = GST_EDITOR_PADTEMPLATE(pads->data);
|
||||
gtk_object_set(GTK_OBJECT(editorpadtemplate),
|
||||
"x",x1,
|
||||
"y",y2 - 2.0 - element->stateheight -
|
||||
(element->sinkheight * sinks),
|
||||
NULL);
|
||||
gst_editor_padtemplate_repack(editorpadtemplate);
|
||||
sinks--;
|
||||
pads = g_list_next(pads);
|
||||
}
|
||||
|
||||
srcs = element->srcs;
|
||||
pads = element->srcpads;
|
||||
while (pads) {
|
||||
editorpad = GST_EDITOR_PAD(pads->data);
|
||||
gtk_object_set(GTK_OBJECT(editorpad),
|
||||
"x",x2 - element->srcwidth,
|
||||
"x",x2 - editorpad->width,
|
||||
"y",y2 - 2.0 - element->stateheight -
|
||||
(element->srcheight * srcs),
|
||||
NULL);
|
||||
|
@ -656,14 +710,37 @@ gst_editor_element_repack (GstEditorElement *element)
|
|||
srcs--;
|
||||
pads = g_list_next(pads);
|
||||
}
|
||||
pads = element->srcpadtemps;
|
||||
while (pads) {
|
||||
editorpadtemplate = GST_EDITOR_PADTEMPLATE(pads->data);
|
||||
gtk_object_set(GTK_OBJECT(editorpadtemplate),
|
||||
"x",x2 - editorpadtemplate->width,
|
||||
"y",y2 - 2.0 - element->stateheight -
|
||||
(element->srcheight * srcs),
|
||||
NULL);
|
||||
gst_editor_padtemplate_repack(editorpadtemplate);
|
||||
srcs--;
|
||||
pads = g_list_next(pads);
|
||||
}
|
||||
|
||||
gtk_signal_emit(GTK_OBJECT(element),gst_editor_element_signals[SIZE_CHANGED], element);
|
||||
// g_print("done resizing element\n");
|
||||
}
|
||||
|
||||
static void
|
||||
gst_editor_element_add_pad_wrapper (GstEditorElement *element,
|
||||
GstPad *pad)
|
||||
{
|
||||
gdk_threads_enter ();
|
||||
gst_editor_element_add_pad (element, pad);
|
||||
element->resize = TRUE;
|
||||
gst_editor_element_repack (element);
|
||||
gdk_threads_leave ();
|
||||
}
|
||||
|
||||
GstEditorPad*
|
||||
gst_editor_element_add_pad (GstEditorElement *element,
|
||||
GstPad *pad)
|
||||
static void
|
||||
gst_editor_element_add_pad_func (GstEditorElement *element,
|
||||
GstPad *pad)
|
||||
{
|
||||
GstEditorPad *editorpad;
|
||||
|
||||
|
@ -681,9 +758,69 @@ gst_editor_element_add_pad (GstEditorElement *element,
|
|||
g_print("HUH?!? Don't know which direction this pad is...\n");
|
||||
|
||||
gst_editor_element_repack(element);
|
||||
return editorpad;
|
||||
}
|
||||
|
||||
static void
|
||||
gst_editor_element_add_pad (GstEditorElement *element,
|
||||
GstPad *pad)
|
||||
{
|
||||
GstPadTemplate *temp;
|
||||
|
||||
temp = pad->padtemplate;
|
||||
if (!temp) {
|
||||
gst_editor_element_add_pad_func (element,pad);
|
||||
}
|
||||
else {
|
||||
// find the template
|
||||
GList *temppads;
|
||||
|
||||
temppads = element->sinkpadtemps;
|
||||
while (temppads) {
|
||||
GstEditorPadTemplate *editorpadtemp = (GstEditorPadTemplate *) temppads->data;
|
||||
|
||||
if (editorpadtemp->padtemplate == temp) {
|
||||
gst_editor_padtemplate_add_pad (editorpadtemp, pad);
|
||||
break;
|
||||
}
|
||||
temppads = g_list_next (temppads);
|
||||
}
|
||||
temppads = element->srcpadtemps;
|
||||
while (temppads) {
|
||||
GstEditorPadTemplate *editorpadtemp = (GstEditorPadTemplate *) temppads->data;
|
||||
|
||||
if (editorpadtemp->padtemplate == temp) {
|
||||
gst_editor_padtemplate_add_pad (editorpadtemp, pad);
|
||||
break;
|
||||
}
|
||||
temppads = g_list_next (temppads);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
GstEditorPadTemplate*
|
||||
gst_editor_element_add_padtemplate (GstEditorElement *element,
|
||||
GstPadTemplate *pad)
|
||||
{
|
||||
GstEditorPadTemplate *editorpad;
|
||||
|
||||
g_print ("gsteditorelement: new padtemplate\n");
|
||||
|
||||
editorpad = gst_editor_padtemplate_new (element, pad, NULL);
|
||||
|
||||
if (pad->direction == GST_PAD_SINK) {
|
||||
element->sinkpadtemps = g_list_prepend(element->sinkpadtemps,editorpad);
|
||||
element->sinks++;
|
||||
// g_print("added 'new' pad to sink list\n");
|
||||
} else if (pad->direction == GST_PAD_SRC) {
|
||||
// g_print("added 'new' pad to src list\n");
|
||||
element->srcpadtemps = g_list_prepend(element->srcpadtemps,editorpad);
|
||||
element->srcs++;
|
||||
} else
|
||||
g_print("HUH?!? Don't know which direction this pad is...\n");
|
||||
|
||||
gst_editor_element_repack(element);
|
||||
return editorpad;
|
||||
}
|
||||
|
||||
static gint
|
||||
gst_editor_element_group_event (GnomeCanvasItem *item,
|
||||
|
@ -717,12 +854,8 @@ gst_editor_element_event(GnomeCanvasItem *item,
|
|||
|
||||
switch(event->type) {
|
||||
case GDK_ENTER_NOTIFY:
|
||||
gnome_canvas_item_set(GNOME_CANVAS_ITEM(element->border),
|
||||
"fill_color_rgba", 0xeeeeee80, NULL);
|
||||
return TRUE;
|
||||
case GDK_LEAVE_NOTIFY:
|
||||
gnome_canvas_item_set(GNOME_CANVAS_ITEM(element->border),
|
||||
"fill_color", "white", NULL);
|
||||
return TRUE;
|
||||
case GDK_BUTTON_PRESS:
|
||||
{
|
||||
|
@ -893,7 +1026,9 @@ gst_editor_element_state_event(GnomeCanvasItem *item,
|
|||
return FALSE;
|
||||
|
||||
if (id < 4) {
|
||||
gdk_threads_leave ();
|
||||
gst_editor_element_set_state(element,id,TRUE);
|
||||
gdk_threads_enter ();
|
||||
} else
|
||||
g_warning("Uh, shouldn't have gotten here, unknown state\n");
|
||||
//g_print("in element statebox_event, setting inchild");
|
||||
|
@ -919,14 +1054,11 @@ gst_editor_element_set_state(GstEditorElement *element,
|
|||
|
||||
|
||||
static void
|
||||
gst_editor_element_state_change(GstElement *element,
|
||||
gint state,
|
||||
GstEditorElement *editorelement)
|
||||
gst_editor_element_sync_state_wrapper (GstEditorElement *element)
|
||||
{
|
||||
g_return_if_fail(editorelement != NULL);
|
||||
|
||||
//g_print("gst_editor_element_state_change got state 0x%08x\n",state);
|
||||
gst_editor_element_sync_state(editorelement);
|
||||
gdk_threads_enter ();
|
||||
gst_editor_element_sync_state (element);
|
||||
gdk_threads_leave ();
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -951,35 +1083,21 @@ gst_editor_element_sync_state (GstEditorElement *element)
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gst_editor_element_position_changed (GstEditorElement *element,
|
||||
GstEditorElement *parent)
|
||||
{
|
||||
if (element != parent)
|
||||
gtk_signal_emit(GTK_OBJECT(element),gst_editor_element_signals[POSITION_CHANGED], element);
|
||||
}
|
||||
|
||||
static void
|
||||
gst_editor_element_move(GstEditorElement *element,
|
||||
gdouble dx,gdouble dy)
|
||||
{
|
||||
GList *pads;
|
||||
GstEditorPad *pad;
|
||||
|
||||
// this is a 'little' trick to keep from repacking the whole thing...
|
||||
element->x += dx;element->y += dy;
|
||||
gnome_canvas_item_move(GNOME_CANVAS_ITEM(element->group),dx,dy);
|
||||
|
||||
pads = element->srcpads;
|
||||
while (pads) {
|
||||
pad = GST_EDITOR_PAD(pads->data);
|
||||
if (pad->connection) {
|
||||
// g_print("updating pad's connection\n");
|
||||
pad->connection->resize = TRUE;
|
||||
gst_editor_connection_resize(pad->connection);
|
||||
}
|
||||
pads = g_list_next(pads);
|
||||
}
|
||||
pads = element->sinkpads;
|
||||
while (pads) {
|
||||
pad = GST_EDITOR_PAD(pads->data);
|
||||
if (pad->connection) {
|
||||
// g_print("updating pad's connection\n");
|
||||
pad->connection->resize = TRUE;
|
||||
gst_editor_connection_resize(pad->connection);
|
||||
}
|
||||
pads = g_list_next(pads);
|
||||
}
|
||||
gtk_signal_emit(GTK_OBJECT(element),gst_editor_element_signals[POSITION_CHANGED], element);
|
||||
}
|
||||
|
|
|
@ -30,6 +30,8 @@ static void gst_editor_pad_set_arg(GtkObject *object,GtkArg *arg,guint id);
|
|||
static void gst_editor_pad_get_arg(GtkObject *object,GtkArg *arg,guint id);
|
||||
static void gst_editor_pad_realize(GstEditorPad *pad);
|
||||
|
||||
static void gst_editor_pad_position_changed(GstEditorPad *pad, GstEditorElement *element);
|
||||
|
||||
/* class implementation functions */
|
||||
//static void gst_editor_pad_update(GnomeCanvasItem *item,double *affine,
|
||||
// ArtSVP *clip_path,int flags);
|
||||
|
@ -60,7 +62,9 @@ enum {
|
|||
static GtkObjectClass *parent_class;
|
||||
//static guint gst_editor_pad_signals[LAST_SIGNAL] = { 0 };
|
||||
|
||||
GtkType gst_editor_pad_get_type() {
|
||||
GtkType
|
||||
gst_editor_pad_get_type (void)
|
||||
{
|
||||
static GtkType pad_type = 0;
|
||||
|
||||
if (!pad_type) {
|
||||
|
@ -79,7 +83,9 @@ GtkType gst_editor_pad_get_type() {
|
|||
return pad_type;
|
||||
}
|
||||
|
||||
static void gst_editor_pad_class_init(GstEditorPadClass *klass) {
|
||||
static void
|
||||
gst_editor_pad_class_init (GstEditorPadClass *klass)
|
||||
{
|
||||
GtkObjectClass *object_class;
|
||||
|
||||
object_class = (GtkObjectClass*)klass;
|
||||
|
@ -103,7 +109,9 @@ static void gst_editor_pad_class_init(GstEditorPadClass *klass) {
|
|||
object_class->get_arg = gst_editor_pad_get_arg;
|
||||
}
|
||||
|
||||
static void gst_editor_pad_init(GstEditorPad *pad) {
|
||||
static void
|
||||
gst_editor_pad_init(GstEditorPad *pad)
|
||||
{
|
||||
}
|
||||
|
||||
GstEditorPad*
|
||||
|
@ -142,12 +150,17 @@ gst_editor_pad_new(GstEditorElement *parent,GstPad *pad,
|
|||
}
|
||||
}
|
||||
|
||||
gtk_signal_connect_object (GTK_OBJECT (parent), "position_changed",
|
||||
gst_editor_pad_position_changed, editorpad);
|
||||
|
||||
return editorpad;
|
||||
}
|
||||
|
||||
void gst_editor_pad_construct(GstEditorPad *pad,
|
||||
GstEditorElement *parent,
|
||||
const gchar *first_arg_name,va_list args) {
|
||||
void
|
||||
gst_editor_pad_construct(GstEditorPad *pad,
|
||||
GstEditorElement *parent,
|
||||
const gchar *first_arg_name,va_list args)
|
||||
{
|
||||
GtkObject *obj = GTK_OBJECT(pad);
|
||||
GSList *arg_list = NULL, *info_list = NULL;
|
||||
gchar *error;
|
||||
|
@ -175,7 +188,9 @@ void gst_editor_pad_construct(GstEditorPad *pad,
|
|||
(padclass->realize)(pad);
|
||||
}
|
||||
|
||||
static void gst_editor_pad_set_arg(GtkObject *object,GtkArg *arg,guint id) {
|
||||
static void
|
||||
gst_editor_pad_set_arg (GtkObject *object,GtkArg *arg,guint id)
|
||||
{
|
||||
GstEditorPad *pad;
|
||||
|
||||
/* get the major types of this object */
|
||||
|
@ -206,7 +221,9 @@ static void gst_editor_pad_set_arg(GtkObject *object,GtkArg *arg,guint id) {
|
|||
}
|
||||
}
|
||||
|
||||
static void gst_editor_pad_get_arg(GtkObject *object,GtkArg *arg,guint id) {
|
||||
static void
|
||||
gst_editor_pad_get_arg (GtkObject *object,GtkArg *arg,guint id)
|
||||
{
|
||||
GstEditorPad *pad;
|
||||
|
||||
/* get the major types of this object */
|
||||
|
@ -231,7 +248,9 @@ static void gst_editor_pad_get_arg(GtkObject *object,GtkArg *arg,guint id) {
|
|||
}
|
||||
}
|
||||
|
||||
static void gst_editor_pad_realize(GstEditorPad *pad) {
|
||||
static void
|
||||
gst_editor_pad_realize (GstEditorPad *pad)
|
||||
{
|
||||
// g_print("realizing editor pad %p\n",pad);
|
||||
|
||||
/* we must be attached to an element */
|
||||
|
@ -283,7 +302,9 @@ static void gst_editor_pad_realize(GstEditorPad *pad) {
|
|||
}
|
||||
|
||||
|
||||
static void gst_editor_pad_resize(GstEditorPad *pad) {
|
||||
static void
|
||||
gst_editor_pad_resize (GstEditorPad *pad)
|
||||
{
|
||||
gdouble minwidth,minheight;
|
||||
|
||||
// g_print("resizing pad\n");
|
||||
|
@ -311,7 +332,9 @@ static void gst_editor_pad_resize(GstEditorPad *pad) {
|
|||
gst_editor_connection_resize(pad->connection);
|
||||
}
|
||||
|
||||
void gst_editor_pad_repack(GstEditorPad *pad) {
|
||||
void
|
||||
gst_editor_pad_repack (GstEditorPad *pad)
|
||||
{
|
||||
gdouble x1,y1,x2,y2;
|
||||
|
||||
if (!pad->realized) return;
|
||||
|
@ -387,9 +410,11 @@ static gint gst_editor_pad_event(GnomeCanvasItem *item,GdkEvent *event) {
|
|||
*/
|
||||
|
||||
/* FIXME FIXME FIXME */
|
||||
static gint gst_editor_pad_padbox_event(GnomeCanvasItem *item,
|
||||
GdkEvent *event,
|
||||
GstEditorPad *pad) {
|
||||
static gint
|
||||
gst_editor_pad_padbox_event(GnomeCanvasItem *item,
|
||||
GdkEvent *event,
|
||||
GstEditorPad *pad)
|
||||
{
|
||||
GstEditorElement *element;
|
||||
GstEditorBin *bin;
|
||||
|
||||
|
@ -403,14 +428,10 @@ static gint gst_editor_pad_padbox_event(GnomeCanvasItem *item,
|
|||
case GDK_ENTER_NOTIFY:
|
||||
gtk_object_set(GTK_OBJECT(pad->border),
|
||||
"fill_color_rgba", 0xBBDDBB00, NULL);
|
||||
// g_print("entered pad '%s'\n",
|
||||
// gst_pad_get_name(pad->pad));
|
||||
break;
|
||||
case GDK_LEAVE_NOTIFY:
|
||||
gtk_object_set(GTK_OBJECT(pad->border),
|
||||
"fill_color_rgba", 0xCCFFCC00, NULL);
|
||||
// g_print("left pad '%s'\n",
|
||||
// gst_pad_get_name(pad->pad));
|
||||
break;
|
||||
case GDK_BUTTON_PRESS:
|
||||
// g_print("have button press in pad '%s'\n",
|
||||
|
@ -426,3 +447,16 @@ static gint gst_editor_pad_padbox_event(GnomeCanvasItem *item,
|
|||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
gst_editor_pad_position_changed(GstEditorPad *pad,
|
||||
GstEditorElement *element)
|
||||
{
|
||||
GList *pads;
|
||||
|
||||
if (pad->connection) {
|
||||
// g_print("updating pad's connection\n");
|
||||
pad->connection->resize = TRUE;
|
||||
gst_editor_connection_resize(pad->connection);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -35,14 +35,15 @@ static void gst_editor_palette_make(GstEditorPalette *palette);
|
|||
struct _palette_entry {
|
||||
gchar *tooltip;
|
||||
GtkType (*type) (void);
|
||||
gchar *factoryname;
|
||||
};
|
||||
|
||||
#define CORE_ELEMENT_SIZE 4
|
||||
struct _palette_entry _palette_contents_core[CORE_ELEMENT_SIZE] = {
|
||||
{"Bin", gst_bin_get_type },
|
||||
{"Thread", gst_thread_get_type },
|
||||
{"Pipeline", gst_pipeline_get_type },
|
||||
{"Tee", gst_tee_get_type },
|
||||
{"Bin", gst_bin_get_type, "bin" },
|
||||
{"Thread", gst_thread_get_type, "thread" },
|
||||
{"Pipeline", gst_pipeline_get_type, "pipeline" },
|
||||
{"Tee", gst_tee_get_type, "tee" },
|
||||
};
|
||||
|
||||
enum {
|
||||
|
@ -58,7 +59,9 @@ enum {
|
|||
static GtkObjectClass *parent_class;
|
||||
static guint gst_editor_palette_signals[LAST_SIGNAL] = { 0 };
|
||||
|
||||
GtkType gst_editor_palette_get_type() {
|
||||
GtkType
|
||||
gst_editor_palette_get_type (void)
|
||||
{
|
||||
static GtkType palette_type = 0;
|
||||
|
||||
if (!palette_type) {
|
||||
|
@ -77,7 +80,9 @@ GtkType gst_editor_palette_get_type() {
|
|||
return palette_type;
|
||||
}
|
||||
|
||||
static void gst_editor_palette_class_init(GstEditorPaletteClass *klass) {
|
||||
static void
|
||||
gst_editor_palette_class_init (GstEditorPaletteClass *klass)
|
||||
{
|
||||
GtkObjectClass *object_class;
|
||||
|
||||
object_class = (GtkObjectClass*)klass;
|
||||
|
@ -102,7 +107,9 @@ static void gst_editor_palette_class_init(GstEditorPaletteClass *klass) {
|
|||
object_class->get_arg = gst_editor_palette_get_arg;
|
||||
}
|
||||
|
||||
static void gst_editor_palette_init(GstEditorPalette *palette) {
|
||||
static void
|
||||
gst_editor_palette_init (GstEditorPalette *palette)
|
||||
{
|
||||
palette->tooltips = gtk_tooltips_new();
|
||||
}
|
||||
|
||||
|
@ -112,13 +119,14 @@ typedef struct {
|
|||
} connect_struct;
|
||||
|
||||
/* we need more control here so... */
|
||||
static void gst_editor_palette_connect_func (const gchar *handler_name,
|
||||
GtkObject *object,
|
||||
const gchar *signal_name,
|
||||
const gchar *signal_data,
|
||||
GtkObject *connect_object,
|
||||
gboolean after,
|
||||
gpointer user_data)
|
||||
static void
|
||||
gst_editor_palette_connect_func (const gchar *handler_name,
|
||||
GtkObject *object,
|
||||
const gchar *signal_name,
|
||||
const gchar *signal_data,
|
||||
GtkObject *connect_object,
|
||||
gboolean after,
|
||||
gpointer user_data)
|
||||
{
|
||||
GtkSignalFunc func;
|
||||
connect_struct *data = (connect_struct *)user_data;
|
||||
|
@ -133,7 +141,9 @@ static void gst_editor_palette_connect_func (const gchar *handler_name,
|
|||
}
|
||||
}
|
||||
|
||||
GstEditorPalette *gst_editor_palette_new() {
|
||||
GstEditorPalette*
|
||||
gst_editor_palette_new()
|
||||
{
|
||||
GstEditorPalette *palette;
|
||||
GtkWidget *palette_window;
|
||||
connect_struct data;
|
||||
|
@ -164,11 +174,19 @@ typedef struct {
|
|||
struct _palette_entry *entry;
|
||||
} _signal_data;
|
||||
|
||||
static void gst_editor_palette_element_clicked(GtkButton *button, _signal_data *data) {
|
||||
gtk_signal_emit(GTK_OBJECT(data->palette),gst_editor_palette_signals[SIGNAL_ELEMENT_SELECTED], data->entry->type());
|
||||
static void
|
||||
gst_editor_palette_element_clicked(GtkButton *button, _signal_data *data)
|
||||
{
|
||||
GstElementFactory *factory;
|
||||
|
||||
factory = gst_elementfactory_find (data->entry->factoryname);
|
||||
|
||||
gtk_signal_emit(GTK_OBJECT(data->palette),gst_editor_palette_signals[SIGNAL_ELEMENT_SELECTED], factory);
|
||||
}
|
||||
|
||||
static void gst_editor_palette_make(GstEditorPalette *palette) {
|
||||
static void
|
||||
gst_editor_palette_make (GstEditorPalette *palette)
|
||||
{
|
||||
GtkWidget *button;
|
||||
GstEditorImage *editimage;
|
||||
GtkWidget *image;
|
||||
|
@ -212,7 +230,9 @@ static void gst_editor_palette_make(GstEditorPalette *palette) {
|
|||
}
|
||||
}
|
||||
|
||||
static void gst_editor_palette_set_arg(GtkObject *object,GtkArg *arg,guint id) {
|
||||
static void
|
||||
gst_editor_palette_set_arg (GtkObject *object,GtkArg *arg,guint id)
|
||||
{
|
||||
GstEditorPalette *palette;
|
||||
|
||||
/* get the major types of this object */
|
||||
|
@ -225,7 +245,9 @@ static void gst_editor_palette_set_arg(GtkObject *object,GtkArg *arg,guint id) {
|
|||
}
|
||||
}
|
||||
|
||||
static void gst_editor_palette_get_arg(GtkObject *object,GtkArg *arg,guint id) {
|
||||
static void
|
||||
gst_editor_palette_get_arg (GtkObject *object,GtkArg *arg,guint id)
|
||||
{
|
||||
GstEditorPalette *palette;
|
||||
|
||||
/* get the major types of this object */
|
||||
|
|
|
@ -51,7 +51,7 @@ struct _GstEditorPaletteClass {
|
|||
GtkObjectClass parent_class;
|
||||
|
||||
void (*element_selected) (GstEditorPalette *palette,
|
||||
GstEditorElement *element);
|
||||
GstElementFactory *factory);
|
||||
void (*in_selection_mode) (GstEditorPalette *palette,
|
||||
GstEditorElement *element);
|
||||
};
|
||||
|
|
|
@ -114,11 +114,11 @@ gst_editor_project_connect_func (const gchar *handler_name,
|
|||
|
||||
static void
|
||||
gst_editor_project_element_selected (GstEditorProjectView *view,
|
||||
GtkType type, GstEditorPalette *palette)
|
||||
GstElementFactory *factory, GstEditorPalette *palette)
|
||||
{
|
||||
GstElement *element;
|
||||
|
||||
element = gtk_type_new(type);
|
||||
element = gst_elementfactory_create (factory, "new_element");
|
||||
|
||||
g_return_if_fail(element != NULL);
|
||||
g_return_if_fail(GST_IS_ELEMENT(element));
|
||||
|
|
|
@ -224,10 +224,10 @@ make_readable_name (gchar *name)
|
|||
len = strlen(new);
|
||||
inupper = TRUE;
|
||||
for (i=0; i<len; i++) {
|
||||
if (inupper) new[i] = toupper(new[i]);
|
||||
inupper = FALSE;
|
||||
if (new[i] == ' ')
|
||||
inupper = TRUE;
|
||||
if (inupper) new[i] = toupper(new[i]);
|
||||
inupper = FALSE;
|
||||
if (new[i] == ' ')
|
||||
inupper = TRUE;
|
||||
}
|
||||
|
||||
return new;
|
||||
|
@ -255,6 +255,49 @@ gst_editor_props_show_func (GstPropsEntry *entry)
|
|||
return g_strdup ("unknown");
|
||||
}
|
||||
|
||||
static void
|
||||
gst_editor_add_caps_to_tree (GstCaps *caps, GtkWidget *tree, GtkCTreeNode *padnode)
|
||||
{
|
||||
if (caps) {
|
||||
GstProps *props = gst_caps_get_props (caps);
|
||||
if (props) {
|
||||
GSList *propslist = props->properties;
|
||||
|
||||
while (propslist) {
|
||||
gchar *data[2];
|
||||
GstPropsEntry *entry = (GstPropsEntry *)propslist->data;
|
||||
|
||||
data[0] = g_quark_to_string (entry->propid);
|
||||
|
||||
switch (entry->propstype) {
|
||||
case GST_PROPS_LIST_ID_NUM:
|
||||
{
|
||||
GList *list;
|
||||
guint count = 0;
|
||||
data[1] = "";
|
||||
|
||||
list = entry->data.list_data.entries;
|
||||
|
||||
while (list) {
|
||||
data[1] = g_strconcat (data[1], (count++?", ":""),
|
||||
gst_editor_props_show_func ((GstPropsEntry *)list->data), NULL);
|
||||
list = g_list_next (list);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
data[1] = gst_editor_props_show_func (entry);
|
||||
break;
|
||||
}
|
||||
gtk_ctree_insert_node (GTK_CTREE (tree), padnode, NULL, data, 0,
|
||||
NULL, NULL, NULL, NULL, TRUE, TRUE);
|
||||
|
||||
propslist = g_slist_next (propslist);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static GtkWidget*
|
||||
gst_editor_pads_create (GstEditorProperty *property, GstEditorElement *element)
|
||||
{
|
||||
|
@ -263,8 +306,6 @@ gst_editor_pads_create (GstEditorProperty *property, GstEditorElement *element)
|
|||
GtkWidget *tree;
|
||||
gchar *columns[2];
|
||||
|
||||
pads = gst_element_get_pad_list(realelement);
|
||||
|
||||
columns[0] = "name";
|
||||
columns[1] = "info";
|
||||
|
||||
|
@ -272,6 +313,9 @@ gst_editor_pads_create (GstEditorProperty *property, GstEditorElement *element)
|
|||
gtk_clist_set_column_width (GTK_CLIST (tree), 0, 150);
|
||||
|
||||
gtk_clist_freeze (GTK_CLIST (tree));
|
||||
|
||||
pads = gst_element_get_pad_list(realelement);
|
||||
|
||||
while (pads) {
|
||||
GstPad *pad = (GstPad *)pads->data;
|
||||
GstCaps *caps = gst_pad_get_caps (pad);
|
||||
|
@ -292,45 +336,39 @@ gst_editor_pads_create (GstEditorProperty *property, GstEditorElement *element)
|
|||
data[1] = mime;
|
||||
padnode = gtk_ctree_insert_node (GTK_CTREE (tree), NULL, NULL, data, 0,
|
||||
NULL, NULL, NULL, NULL, FALSE, TRUE);
|
||||
if (caps) {
|
||||
GstProps *props = gst_caps_get_props (caps);
|
||||
if (props) {
|
||||
GSList *propslist = props->properties;
|
||||
|
||||
while (propslist) {
|
||||
GstPropsEntry *entry = (GstPropsEntry *)propslist->data;
|
||||
gst_editor_add_caps_to_tree (caps, tree, padnode);
|
||||
|
||||
data[0] = g_quark_to_string (entry->propid);
|
||||
|
||||
switch (entry->propstype) {
|
||||
case GST_PROPS_LIST_ID_NUM:
|
||||
{
|
||||
GList *list;
|
||||
guint count = 0;
|
||||
data[1] = "";
|
||||
|
||||
list = entry->data.list_data.entries;
|
||||
|
||||
while (list) {
|
||||
data[1] = g_strconcat (data[1], (count++?", ":""),
|
||||
gst_editor_props_show_func ((GstPropsEntry *)list->data), NULL);
|
||||
list = g_list_next (list);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
data[1] = gst_editor_props_show_func (entry);
|
||||
break;
|
||||
}
|
||||
gtk_ctree_insert_node (GTK_CTREE (tree), padnode, NULL, data, 0,
|
||||
NULL, NULL, NULL, NULL, TRUE, TRUE);
|
||||
|
||||
propslist = g_slist_next (propslist);
|
||||
}
|
||||
}
|
||||
}
|
||||
pads = g_list_next (pads);
|
||||
}
|
||||
|
||||
pads = gst_element_get_padtemplate_list(realelement);
|
||||
while (pads) {
|
||||
GstPadTemplate *templ = (GstPadTemplate *)pads->data;
|
||||
GstCaps *caps = templ->caps;
|
||||
gchar *mime;
|
||||
gchar *data[2];
|
||||
GtkCTreeNode *padnode;
|
||||
|
||||
if (caps) {
|
||||
GstType *type;
|
||||
type = gst_type_find_by_id (caps->id);
|
||||
mime = type->mime;
|
||||
}
|
||||
else {
|
||||
mime = "unknown/unknown";
|
||||
}
|
||||
|
||||
data[0] = g_strdup (templ->name_template);
|
||||
data[1] = mime;
|
||||
padnode = gtk_ctree_insert_node (GTK_CTREE (tree), NULL, NULL, data, 0,
|
||||
NULL, NULL, NULL, NULL, FALSE, TRUE);
|
||||
|
||||
gst_editor_add_caps_to_tree (caps, tree, padnode);
|
||||
|
||||
pads = g_list_next (pads);
|
||||
}
|
||||
|
||||
gtk_clist_thaw (GTK_CLIST (tree));
|
||||
|
||||
gtk_widget_show(tree);
|
||||
|
@ -471,9 +509,20 @@ widget_bool_toggled (GtkToggleButton *button, arg_data *arg)
|
|||
toggled = gtk_toggle_button_get_active(button);
|
||||
gtk_object_set (GTK_OBJECT (button), "label", (toggled? _("Yes"):_("No")), NULL);
|
||||
|
||||
gdk_threads_leave ();
|
||||
gtk_object_set (GTK_OBJECT (arg->element), arg->arg->name, toggled, NULL);
|
||||
gdk_threads_enter ();
|
||||
}
|
||||
|
||||
static void
|
||||
widget_adjustment_value_changed (GtkAdjustment *adjustment,
|
||||
arg_data *arg)
|
||||
{
|
||||
gdk_threads_leave ();
|
||||
gtk_object_set (GTK_OBJECT (arg->element), arg->arg->name, (gint) adjustment->value, NULL);
|
||||
gdk_threads_enter ();
|
||||
}
|
||||
|
||||
static void
|
||||
on_file_selected (GtkEditable *entry, arg_data *fs)
|
||||
{
|
||||
|
@ -518,11 +567,16 @@ create_property_entry (GtkArg *arg, GstElement *element)
|
|||
{
|
||||
gint value;
|
||||
GtkAdjustment *spinner_adj;
|
||||
arg_data *data = g_new0(arg_data, 1);
|
||||
|
||||
data->element = element;
|
||||
data->arg = arg;
|
||||
|
||||
value = GTK_VALUE_INT(*arg);
|
||||
spinner_adj = (GtkAdjustment *) gtk_adjustment_new(50.0, 0.0, 10000000.0, 1.0, 5.0, 5.0);
|
||||
entry = gtk_spin_button_new(spinner_adj, 1.0, 0);
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(entry), (gfloat) value);
|
||||
gtk_signal_connect(GTK_OBJECT(spinner_adj), "value_changed", widget_adjustment_value_changed, data);
|
||||
break;
|
||||
}
|
||||
case GTK_TYPE_FLOAT:
|
||||
|
|
|
@ -206,7 +206,7 @@ gst_queue_chain (GstPad *pad, GstBuffer *buf)
|
|||
/* put the buffer on the tail of the list */
|
||||
queue->queue = g_slist_append (queue->queue, buf);
|
||||
// STATUS("%s: +\n");
|
||||
g_print("(%s:%s)+ ",GST_DEBUG_PAD_NAME(pad));
|
||||
DEBUG("(%s:%s)+ ",GST_DEBUG_PAD_NAME(pad));
|
||||
|
||||
/* if we were empty, but aren't any more, signal a condition */
|
||||
tosignal = (queue->level_buffers >= 0);
|
||||
|
@ -266,7 +266,7 @@ gst_queue_get (GstPad *pad)
|
|||
|
||||
queue->level_buffers--;
|
||||
// STATUS("%s: -\n");
|
||||
g_print("(%s:%s)- ",GST_DEBUG_PAD_NAME(pad));
|
||||
DEBUG("(%s:%s)- ",GST_DEBUG_PAD_NAME(pad));
|
||||
tosignal = queue->level_buffers < queue->max_buffers;
|
||||
GST_UNLOCK(queue);
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
//#define GST_DEBUG_ENABLED
|
||||
#define GST_DEBUG_ENABLED
|
||||
|
||||
#include "gstbin.h"
|
||||
#include "gstdebug.h"
|
||||
|
|
|
@ -368,7 +368,7 @@ gst_pipeline_autoplug (GstPipeline *pipeline)
|
|||
|
||||
// check to other paths for mathing elements (factories)
|
||||
for (i=1; i<numsinks; i++) {
|
||||
if (factory != (GstElementFactory *)(factories[i]->data)) {
|
||||
if (!factories[i] || (factory != (GstElementFactory *)(factories[i]->data))) {
|
||||
goto differ;
|
||||
}
|
||||
factories[i] = g_list_next(factories[i]);
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
//#define GST_DEBUG_ENABLED
|
||||
#define GST_DEBUG_ENABLED
|
||||
|
||||
#include "gstscheduler.h"
|
||||
#include "gstdebug.h"
|
||||
|
@ -393,6 +393,7 @@ void gst_bin_schedule_func(GstBin *bin) {
|
|||
pads = g_list_next (pads);
|
||||
DEBUG("have pad %s:%s\n",GST_DEBUG_PAD_NAME(pad));
|
||||
|
||||
DEBUG("peer pad %p\n", pad->peer);
|
||||
// only bother with if the pad's peer's parent is this bin or it's DECOUPLED
|
||||
// only add it if it's in the list of un-visited elements still
|
||||
if ((g_list_find (elements, pad->peer->parent) != NULL) ||
|
||||
|
|
|
@ -206,7 +206,7 @@ gst_queue_chain (GstPad *pad, GstBuffer *buf)
|
|||
/* put the buffer on the tail of the list */
|
||||
queue->queue = g_slist_append (queue->queue, buf);
|
||||
// STATUS("%s: +\n");
|
||||
g_print("(%s:%s)+ ",GST_DEBUG_PAD_NAME(pad));
|
||||
DEBUG("(%s:%s)+ ",GST_DEBUG_PAD_NAME(pad));
|
||||
|
||||
/* if we were empty, but aren't any more, signal a condition */
|
||||
tosignal = (queue->level_buffers >= 0);
|
||||
|
@ -266,7 +266,7 @@ gst_queue_get (GstPad *pad)
|
|||
|
||||
queue->level_buffers--;
|
||||
// STATUS("%s: -\n");
|
||||
g_print("(%s:%s)- ",GST_DEBUG_PAD_NAME(pad));
|
||||
DEBUG("(%s:%s)- ",GST_DEBUG_PAD_NAME(pad));
|
||||
tosignal = queue->level_buffers < queue->max_buffers;
|
||||
GST_UNLOCK(queue);
|
||||
|
||||
|
|
|
@ -32,6 +32,7 @@ int main(int argc,char *argv[]) {
|
|||
g_return_val_if_fail(encodefactory != NULL, -1);
|
||||
sinkfactory = gst_elementfactory_find("fdsink");
|
||||
g_return_val_if_fail(sinkfactory != NULL, -1);
|
||||
sink = gst_elementfactory_create(sinkfactory,"sink");
|
||||
|
||||
src = gst_elementfactory_create(srcfactory,"src");
|
||||
g_return_val_if_fail(src != NULL, -1);
|
||||
|
|
|
@ -24,7 +24,7 @@ dump_factories (void)
|
|||
while (factories) {
|
||||
GstElementFactory *factory = (GstElementFactory *)factories->data;
|
||||
|
||||
g_print ("factory: %s\n", factory->name);
|
||||
g_print ("factory: %s %d\n", factory->name, factory->type);
|
||||
|
||||
factories = g_list_next (factories);
|
||||
}
|
||||
|
@ -80,8 +80,8 @@ load_something (gchar *name)
|
|||
GstElementFactory *factory;
|
||||
GstElement *element;
|
||||
|
||||
factory = gst_elementfactory_find ("foo");
|
||||
g_print ("factory \"foo\" %s\n", (factory?"found":"not found"));
|
||||
//factory = gst_elementfactory_find ("foo");
|
||||
//g_print ("factory \"foo\" %s\n", (factory?"found":"not found"));
|
||||
|
||||
factory = gst_elementfactory_find (name);
|
||||
g_print ("factory \"%s\" %s\n", name, (factory?"found":"not found"));
|
||||
|
@ -129,13 +129,13 @@ int main(int argc,char *argv[])
|
|||
|
||||
gst_init(&argc,&argv);
|
||||
|
||||
dump_plugins ();
|
||||
dump_factories ();
|
||||
dump_types ();
|
||||
//dump_plugins ();
|
||||
//dump_factories ();
|
||||
//dump_types ();
|
||||
|
||||
print_some_providers ("audio/mp3");
|
||||
//print_some_providers ("audio/mp3");
|
||||
|
||||
load_something ("mpg123");
|
||||
load_something ("fdsink");
|
||||
|
||||
print_some_providers ("audio/mp3");
|
||||
|
||||
|
|
Loading…
Reference in a new issue