mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-07-01 20:30:41 +00:00
intermediate commit
Original commit message from CVS: intermediate commit
This commit is contained in:
parent
83bd7c9c73
commit
3c39b171b0
9
test/bindings/.gitignore
vendored
9
test/bindings/.gitignore
vendored
|
@ -1,9 +0,0 @@
|
|||
Makefile
|
||||
Makefile.in
|
||||
*.o
|
||||
*.lo
|
||||
*.la
|
||||
.deps
|
||||
.libs
|
||||
|
||||
test
|
|
@ -1,10 +0,0 @@
|
|||
noinst_LTLIBRARIES = libcrashtest.la
|
||||
|
||||
libcrashtest_la_SOURCES = dummy.c
|
||||
libcrashtest_la_CFLAGS = $(GLIB_CFLAGS) $(XML_CFLAGS) $(GST_CFLAGS)
|
||||
|
||||
noinst_HEADERS = dummy.h
|
||||
|
||||
noinst_PROGRAMS = test
|
||||
test_LDADD = libcrashtest.la $(GLIB_LIBS)
|
||||
test_CFLAGS = $(GLIB_CFLAGS) $(XML_CFLAGS) $(GST_CFLAGS)
|
|
@ -1,20 +0,0 @@
|
|||
#include <dummy.h>
|
||||
|
||||
Dummy *dummy_new() {
|
||||
Dummy *dummy;
|
||||
|
||||
dummy = g_malloc(sizeof(Dummy));
|
||||
|
||||
dummy->flags = 0;
|
||||
dummy->name = NULL;
|
||||
|
||||
return dummy;
|
||||
}
|
||||
|
||||
Dummy *dummy_new_with_name(gchar *name) {
|
||||
Dummy *dummy = dummy_new();
|
||||
|
||||
dummy->name = g_strdup(name);
|
||||
|
||||
return dummy;
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
#ifndef __DUMMY_H__
|
||||
#define __DUMMY_H__
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
#define DUMMY(dummy) ((Dummy *)(dummy))
|
||||
|
||||
typedef struct _Dummy Dummy;
|
||||
|
||||
struct _Dummy {
|
||||
gint flags;
|
||||
|
||||
gchar *name;
|
||||
};
|
||||
|
||||
Dummy *dummy_new();
|
||||
Dummy *dummy_new_with_name(gchar *name);
|
||||
|
||||
#endif /* __DUMMY_H__ */
|
|
@ -1,11 +0,0 @@
|
|||
#include <glib.h>
|
||||
#include <dummy.h>
|
||||
|
||||
int main(int argc,char *argv[]) {
|
||||
Dummy *driver,*passenger;
|
||||
|
||||
driver = dummy_new();
|
||||
passenger = dummy_new_with_name("moron");
|
||||
|
||||
g_print("created a couple of dummies, %p and %p\n",driver,passenger);
|
||||
}
|
147
test/dvdplay.c
147
test/dvdplay.c
|
@ -1,147 +0,0 @@
|
|||
#include <gnome.h>
|
||||
#include <gst/gst.h>
|
||||
|
||||
GstPipeline *pipeline;
|
||||
GstElement *v_queue, *a_queue, *v_thread, *a_thread;
|
||||
GtkWidget *appwindow;
|
||||
GtkWidget *gtk_socket;
|
||||
|
||||
void eof(GstElement *src) {
|
||||
g_print("have eos, quitting\n");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
gboolean idle_func(gpointer data) {
|
||||
gst_bin_iterate(GST_BIN(data));
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void mpeg2parse_newpad(GstElement *parser,GstPad *pad, GstElement *pipeline) {
|
||||
|
||||
g_print("***** a new pad %s was created\n", gst_pad_get_name(pad));
|
||||
|
||||
if (strncmp(gst_pad_get_name(pad), "video_", 6) == 0) {
|
||||
gst_pad_connect(pad, gst_element_get_pad(v_queue,"sink"));
|
||||
gst_bin_add(GST_BIN(pipeline),v_thread);
|
||||
gst_element_set_state(v_thread,GST_STATE_PLAYING);
|
||||
} else if (strcmp(gst_pad_get_name(pad), "private_stream_1.0") == 0) {
|
||||
gst_pad_connect(pad, gst_element_get_pad(a_queue,"sink"));
|
||||
gst_bin_add(GST_BIN(pipeline),a_thread);
|
||||
gst_element_set_state(a_thread,GST_STATE_PLAYING);
|
||||
}
|
||||
}
|
||||
|
||||
void mpeg2parse_have_size(GstElement *videosink,gint width,gint height) {
|
||||
gtk_widget_set_usize(gtk_socket,width,height);
|
||||
gtk_widget_show_all(appwindow);
|
||||
}
|
||||
|
||||
int main(int argc,char *argv[]) {
|
||||
GstElement *src, *parse;
|
||||
GstElement *v_decode, *show, *color;
|
||||
GstElement *a_decode, *osssink;
|
||||
|
||||
if (argc < 5) {
|
||||
g_print("usage: %s dvdlocation title chapter angle\n", argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
gst_init(&argc,&argv);
|
||||
gnome_init("MPEG2 Video player","0.0.1",argc,argv);
|
||||
|
||||
// ***** construct the main pipeline *****
|
||||
pipeline = GST_PIPELINE(gst_pipeline_new("pipeline"));
|
||||
g_return_val_if_fail(pipeline != NULL, -1);
|
||||
|
||||
src = gst_elementfactory_make("dvdsrc","src");
|
||||
g_return_val_if_fail(src != NULL, -1);
|
||||
gtk_object_set(GTK_OBJECT(src),"location",argv[1],NULL);
|
||||
gtk_object_set(GTK_OBJECT(src),"title",atoi(argv[2]),NULL);
|
||||
gtk_object_set(GTK_OBJECT(src),"chapter",atoi(argv[3]),NULL);
|
||||
gtk_object_set(GTK_OBJECT(src),"angle",atoi(argv[4]),NULL);
|
||||
|
||||
parse = gst_elementfactory_make("mpeg2parse","parse");
|
||||
//parse = gst_elementfactory_make("mpeg1parse","parse");
|
||||
g_return_val_if_fail(parse != NULL, -1);
|
||||
|
||||
gst_bin_add(GST_BIN(pipeline),GST_ELEMENT(src));
|
||||
gst_bin_add(GST_BIN(pipeline),GST_ELEMENT(parse));
|
||||
|
||||
gst_element_connect(src,"src",parse,"sink");
|
||||
|
||||
|
||||
// ***** pre-construct the video thread *****
|
||||
v_thread = GST_ELEMENT(gst_thread_new("v_thread"));
|
||||
g_return_val_if_fail(v_thread != NULL, -1);
|
||||
|
||||
v_queue = gst_elementfactory_make("queue","v_queue");
|
||||
g_return_val_if_fail(v_queue != NULL, -1);
|
||||
|
||||
v_decode = gst_elementfactory_make("mpeg2dec","decode_video");
|
||||
g_return_val_if_fail(v_decode != NULL, -1);
|
||||
|
||||
color = gst_elementfactory_make("colorspace","color");
|
||||
g_return_val_if_fail(color != NULL, -1);
|
||||
|
||||
show = gst_elementfactory_make("xvideosink","show");
|
||||
g_return_val_if_fail(show != NULL, -1);
|
||||
|
||||
gst_bin_add(GST_BIN(v_thread),GST_ELEMENT(v_queue));
|
||||
gst_bin_add(GST_BIN(v_thread),GST_ELEMENT(v_decode));
|
||||
gst_bin_add(GST_BIN(v_thread),GST_ELEMENT(color));
|
||||
gst_bin_add(GST_BIN(v_thread),GST_ELEMENT(show));
|
||||
|
||||
gst_element_connect(v_queue,"src",v_decode,"sink");
|
||||
gst_element_connect(v_decode,"src",color,"sink");
|
||||
gst_element_connect(color,"src",show,"sink");
|
||||
|
||||
|
||||
// ***** pre-construct the audio thread *****
|
||||
a_thread = GST_ELEMENT(gst_thread_new("a_thread"));
|
||||
g_return_val_if_fail(a_thread != NULL, -1);
|
||||
|
||||
a_queue = gst_elementfactory_make("queue","a_queue");
|
||||
g_return_val_if_fail(a_queue != NULL, -1);
|
||||
|
||||
a_decode = gst_elementfactory_make("a52dec","decode_audio");
|
||||
g_return_val_if_fail(a_decode != NULL, -1);
|
||||
|
||||
osssink = gst_elementfactory_make("osssink","osssink");
|
||||
g_return_val_if_fail(osssink != NULL, -1);
|
||||
|
||||
gst_bin_add(GST_BIN(a_thread),GST_ELEMENT(a_queue));
|
||||
gst_bin_add(GST_BIN(a_thread),GST_ELEMENT(a_decode));
|
||||
gst_bin_add(GST_BIN(a_thread),GST_ELEMENT(osssink));
|
||||
|
||||
gst_element_connect(a_queue,"src",a_decode,"sink");
|
||||
gst_element_connect(a_decode,"src",osssink,"sink");
|
||||
|
||||
|
||||
// ***** construct the GUI *****
|
||||
appwindow = gnome_app_new("DVD Player","DVD Player");
|
||||
|
||||
gtk_socket = gtk_socket_new ();
|
||||
gtk_widget_show (gtk_socket);
|
||||
|
||||
gnome_app_set_contents(GNOME_APP(appwindow),
|
||||
GTK_WIDGET(gtk_socket));
|
||||
|
||||
gtk_widget_realize (gtk_socket);
|
||||
gtk_socket_steal (GTK_SOCKET (gtk_socket),
|
||||
gst_util_get_int_arg (GTK_OBJECT(show), "xid"));
|
||||
|
||||
gtk_signal_connect(GTK_OBJECT(parse),"new_pad",mpeg2parse_newpad, pipeline);
|
||||
gtk_signal_connect(GTK_OBJECT(src),"eos",GTK_SIGNAL_FUNC(eof),NULL);
|
||||
gtk_signal_connect(GTK_OBJECT(show),"have_size",mpeg2parse_have_size, pipeline);
|
||||
|
||||
g_print("setting to PLAYING state\n");
|
||||
gst_element_set_state(GST_ELEMENT(pipeline),GST_STATE_PLAYING);
|
||||
|
||||
gtk_idle_add(idle_func,pipeline);
|
||||
|
||||
gdk_threads_enter();
|
||||
gtk_main();
|
||||
gdk_threads_leave();
|
||||
|
||||
return 0;
|
||||
}
|
101
test/dvshow.c
101
test/dvshow.c
|
@ -1,101 +0,0 @@
|
|||
#include <gnome.h>
|
||||
#include <gst/gst.h>
|
||||
|
||||
static gboolean
|
||||
idle_func (gpointer data)
|
||||
{
|
||||
gst_bin_iterate(GST_BIN(data));
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc,char *argv[])
|
||||
{
|
||||
GstElement *bin;
|
||||
GstElement *src;
|
||||
GstElement *dvdec;
|
||||
//GstElement *cspace;
|
||||
GstElement *deint;
|
||||
GstElement *videosink;
|
||||
|
||||
GtkWidget *appwindow;
|
||||
GtkWidget *vbox1;
|
||||
GtkWidget *button;
|
||||
guint32 draw;
|
||||
GtkWidget *gtk_socket;
|
||||
|
||||
|
||||
gst_init(&argc,&argv);
|
||||
|
||||
gnome_init("Videotest","0.0.1",argc,argv);
|
||||
|
||||
bin = gst_pipeline_new("pipeline");
|
||||
|
||||
if (argc == 1) {
|
||||
src = gst_elementfactory_make ("dv1394src", "src");
|
||||
} else {
|
||||
src = gst_elementfactory_make ("filesrc", "src");
|
||||
gtk_object_set(GTK_OBJECT(src),"location",argv[1],"bytesperread",480,NULL);
|
||||
}
|
||||
dvdec = gst_elementfactory_make ("dvdec", "decoder");
|
||||
if (!dvdec) fprintf(stderr,"no dvdec\n"),exit(1);
|
||||
// cspace = gst_elementfactory_make ("colorspace", "cspace");
|
||||
deint = gst_elementfactory_make ("deinterlace", "deinterlace");
|
||||
videosink = gst_elementfactory_make ("xvideosink", "videosink");
|
||||
if (!videosink) fprintf(stderr,"no dvdec\n"),exit(1);
|
||||
gtk_object_set(GTK_OBJECT(videosink),"width",720,"height",576,NULL);
|
||||
|
||||
gst_bin_add(GST_BIN(bin),GST_ELEMENT(src));
|
||||
gst_bin_add(GST_BIN(bin),GST_ELEMENT(dvdec));
|
||||
// gst_bin_add(GST_BIN(bin),GST_ELEMENT(cspace));
|
||||
gst_bin_add(GST_BIN(bin),GST_ELEMENT(videosink));
|
||||
|
||||
gst_element_connect(src,"src",dvdec,"sink");
|
||||
// gst_element_connect(cspace,"src",videosink,"sink");
|
||||
// gst_element_connect(dvdec,"video",cspace,"sink");
|
||||
gst_element_connect(dvdec,"video",deint,"sink");
|
||||
gst_element_connect(deint,"src",videosink,"sink");
|
||||
|
||||
appwindow = gnome_app_new("Videotest","Videotest");
|
||||
|
||||
vbox1 = gtk_vbox_new (FALSE, 0);
|
||||
gtk_widget_show (vbox1);
|
||||
|
||||
button = gtk_button_new_with_label(_("test"));//_with_label (_("chup"));
|
||||
gtk_widget_show (button);
|
||||
gtk_box_pack_start (GTK_BOX (vbox1), button, FALSE, FALSE, 0);
|
||||
|
||||
draw = gst_util_get_int_arg (GTK_OBJECT (videosink), "xid"),
|
||||
|
||||
gtk_socket = gtk_socket_new ();
|
||||
gtk_widget_set_usize(gtk_socket,720,576);
|
||||
gtk_widget_show (gtk_socket);
|
||||
|
||||
gnome_app_set_contents(GNOME_APP(appwindow), vbox1);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (vbox1),
|
||||
GTK_WIDGET(gtk_socket),
|
||||
TRUE, TRUE, 0);
|
||||
|
||||
gtk_widget_realize (gtk_socket);
|
||||
gtk_socket_steal (GTK_SOCKET (gtk_socket), draw);
|
||||
|
||||
gtk_object_set(GTK_OBJECT(appwindow),"allow_grow",TRUE,NULL);
|
||||
gtk_object_set(GTK_OBJECT(appwindow),"allow_shrink",TRUE,NULL);
|
||||
|
||||
gtk_widget_show_all(appwindow);
|
||||
|
||||
#ifndef GST_DISABLE_LOADSAVE
|
||||
xmlSaveFile("dvshow.xml",gst_xml_write(GST_ELEMENT(bin)));
|
||||
#endif
|
||||
|
||||
gst_element_set_state(GST_ELEMENT(bin),GST_STATE_PLAYING);
|
||||
|
||||
g_idle_add(idle_func,bin);
|
||||
|
||||
gtk_main();
|
||||
|
||||
exit (0);
|
||||
}
|
||||
|
104
test/qtest.c
104
test/qtest.c
|
@ -1,104 +0,0 @@
|
|||
#include <glib.h>
|
||||
#include <gst/gst.h>
|
||||
|
||||
extern gboolean _gst_plugin_spew;
|
||||
|
||||
/* we don't need a lock around the application's state yet, since it's 1
|
||||
bit. as it gets more fleshed in, we'll need a lock so the callbacks
|
||||
don't screw around with state unexpectedly */
|
||||
static gboolean playing = TRUE;
|
||||
|
||||
void eof(GstElement *src) {
|
||||
GST_DEBUG(0,"have EOF\n");
|
||||
playing = FALSE;
|
||||
}
|
||||
|
||||
int main(int argc,char *argv[]) {
|
||||
GstElement *pipeline;
|
||||
GstElement *decodethread;
|
||||
GstElementFactory *srcfactory;
|
||||
GstElement *src;
|
||||
GstElementFactory *decodefactory;
|
||||
GstElement *decode;
|
||||
GstElementFactory *queuefactory;
|
||||
GstElement *queue;
|
||||
GstElement *playthread;
|
||||
GstElementFactory *sinkfactory;
|
||||
GstElement *sink;
|
||||
|
||||
gst_init(&argc,&argv);
|
||||
|
||||
/* first create the main pipeline */
|
||||
pipeline = GST_ELEMENT(gst_pipeline_new("pipeline"));
|
||||
|
||||
/* then the decode thread, source, and decoder */
|
||||
decodethread = gst_thread_new("decodethread");
|
||||
|
||||
srcfactory = gst_elementfactory_find("filesrc");
|
||||
src = gst_elementfactory_create(srcfactory,"src");
|
||||
g_object_set(G_OBJECT(src),"location",argv[1],NULL);
|
||||
gst_bin_add(GST_BIN(decodethread),GST_ELEMENT(src));
|
||||
|
||||
_gst_plugin_spew = TRUE;
|
||||
|
||||
if (argc > 2)
|
||||
gst_plugin_load(argv[2]);
|
||||
else
|
||||
gst_plugin_load_all();
|
||||
decodefactory = gst_elementfactory_find("mpg123");
|
||||
decode = gst_elementfactory_create(decodefactory,"decode");
|
||||
gst_bin_add(GST_BIN(decodethread),GST_ELEMENT(decode));
|
||||
gst_element_add_ghost_pad(GST_ELEMENT(decodethread),
|
||||
gst_element_get_pad(decode,"src"),"src");
|
||||
|
||||
gst_pad_connect(gst_element_get_pad(src,"src"),
|
||||
gst_element_get_pad(decode,"sink"));
|
||||
|
||||
/* then the play thread and sink */
|
||||
playthread = gst_thread_new("playthread");
|
||||
|
||||
sinkfactory = gst_elementfactory_find("osssink");
|
||||
sink = gst_elementfactory_create(sinkfactory,"sink");
|
||||
gst_bin_add(GST_BIN(playthread),GST_ELEMENT(sink));
|
||||
gst_element_add_ghost_pad(GST_ELEMENT(playthread),
|
||||
gst_element_get_pad(sink,"sink"),"sink");
|
||||
|
||||
/* create the queue */
|
||||
queuefactory = gst_elementfactory_find("queue");
|
||||
queue = gst_elementfactory_create(queuefactory,"queue");
|
||||
|
||||
/* add threads to the main pipeline */
|
||||
gst_bin_add(GST_BIN(pipeline),decodethread);
|
||||
gst_bin_add(GST_BIN(pipeline),queue);
|
||||
gst_bin_add(GST_BIN(pipeline),playthread);
|
||||
|
||||
gst_pad_connect(gst_element_get_pad(decodethread,"src"),
|
||||
// gst_element_get_pad(queue,"sink"));
|
||||
// gst_pad_connect(gst_element_get_pad(queue,"src"),
|
||||
gst_element_get_pad(playthread,"sink"));
|
||||
|
||||
g_signal_connect(G_OBJECT(src),"eof",
|
||||
G_CALLBACK(eof),NULL);
|
||||
|
||||
g_print("\nsetting up the decode thread to *NOT* thread\n");
|
||||
// gtk_object_set(GTK_OBJECT(decodethread),"create_thread",TRUE,NULL);
|
||||
g_object_set(G_OBJECT(playthread),"create_thread",FALSE,NULL);
|
||||
|
||||
g_print("\neverything's built, setting it up to be runnable\n");
|
||||
gst_element_set_state(GST_ELEMENT(pipeline),GST_STATE_READY);
|
||||
|
||||
g_print("\nok, runnable, hitting 'play'...\n");
|
||||
gst_element_set_state(GST_ELEMENT(pipeline),GST_STATE_PLAYING);
|
||||
|
||||
g_print("\niterating on %p and %p\n",decodethread,playthread);
|
||||
while (playing) {
|
||||
gst_bin_iterate(GST_BIN(playthread));
|
||||
/* buffers got wedged in the queue, unstick them */
|
||||
// while (((GstQueue *)queue)->buffers_queued)
|
||||
// gst_connection_push(GST_CONNECTION(queue));
|
||||
// gst_thread_iterate(GST_THREAD(playthread));
|
||||
// g_print("stuffed and unstuck the queue\n");
|
||||
// sleep(1);
|
||||
}
|
||||
return 0;
|
||||
}
|
|
@ -1,40 +0,0 @@
|
|||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <glib.h>
|
||||
#include <gst/gst.h>
|
||||
|
||||
int main(int argc,char *argv[]) {
|
||||
int fd;
|
||||
GstElement *pipeline, *osssrc, *fdsink;
|
||||
GstElementFactory *osssrcfactory, *fdsinkfactory;
|
||||
|
||||
gst_init(&argc,&argv);
|
||||
|
||||
pipeline = GST_ELEMENT(gst_pipeline_new("pipeline"));
|
||||
|
||||
osssrcfactory = gst_elementfactory_find("osssrc");
|
||||
osssrc = gst_elementfactory_create(osssrcfactory,"osssrc");
|
||||
|
||||
fd = open(argv[1],O_CREAT|O_RDWR);
|
||||
|
||||
fdsinkfactory = gst_elementfactory_find("fdsink");
|
||||
fdsink = gst_elementfactory_create(fdsinkfactory,"fdsink");
|
||||
g_object_set(G_OBJECT(fdsink),"fd",fd);
|
||||
|
||||
/* add objects to the main pipeline */
|
||||
gst_bin_add(GST_BIN(pipeline),GST_ELEMENT(osssrc));
|
||||
gst_bin_add(GST_BIN(pipeline),GST_ELEMENT(fdsink));
|
||||
|
||||
/* connect src to sink */
|
||||
gst_pad_connect(gst_element_get_pad(osssrc,"src"),
|
||||
gst_element_get_pad(fdsink,"sink"));
|
||||
|
||||
g_print("\nok, runnable, hitting 'play'...\n");
|
||||
gst_element_set_state(GST_ELEMENT(pipeline),GST_STATE_PLAYING);
|
||||
|
||||
while(1) {
|
||||
gst_bin_iterate(GST_BIN(pipeline));
|
||||
}
|
||||
}
|
||||
|
|
@ -1,153 +0,0 @@
|
|||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
#include <gtk/gtk.h>
|
||||
#include <gst/gst.h>
|
||||
#include <gst/control/control.h>
|
||||
|
||||
static gint quit_live(GtkWidget *window, GdkEventAny *e, gpointer data) {
|
||||
gtk_main_quit();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void dynparm_log_value_changed(GtkAdjustment *adj,GstDParam *dparam) {
|
||||
GValue **point;
|
||||
g_return_if_fail(dparam != NULL);
|
||||
g_return_if_fail(GST_IS_DPARAM (dparam));
|
||||
|
||||
point = GST_DPARAM_GET_POINT(dparam, 0LL);
|
||||
|
||||
GST_DPARAM_LOCK(dparam);
|
||||
g_print("setting value from %f to %f\n", g_value_get_float(point[0]), (gfloat)exp(adj->value));
|
||||
g_value_set_float(point[0], (gfloat)exp(adj->value));
|
||||
GST_DPARAM_READY_FOR_UPDATE(dparam) = TRUE;
|
||||
GST_DPARAM_UNLOCK(dparam);
|
||||
}
|
||||
|
||||
static void dynparm_value_changed(GtkAdjustment *adj,GstDParam *dparam) {
|
||||
GValue **point;
|
||||
g_return_if_fail(dparam != NULL);
|
||||
g_return_if_fail(GST_IS_DPARAM (dparam));
|
||||
|
||||
point = GST_DPARAM_GET_POINT(dparam, 0LL);
|
||||
|
||||
GST_DPARAM_LOCK(dparam);
|
||||
g_print("setting value from %f to %f\n", g_value_get_float(point[0]), adj->value);
|
||||
g_value_set_float(point[0], adj->value);
|
||||
GST_DPARAM_READY_FOR_UPDATE(dparam) = TRUE;
|
||||
GST_DPARAM_UNLOCK(dparam);
|
||||
}
|
||||
|
||||
|
||||
int main(int argc,char *argv[]) {
|
||||
GtkWidget *window;
|
||||
GtkWidget *hbox;
|
||||
GtkAdjustment *volume_adj;
|
||||
GtkAdjustment *freq_adj;
|
||||
GtkWidget *volume_slider;
|
||||
GtkWidget *freq_slider;
|
||||
|
||||
GstElement *thread, *sinesrc, *osssink;
|
||||
GstDParamManager *dpman;
|
||||
GstDParam *volume;
|
||||
GstDParam *freq;
|
||||
GstDParamSpec *spec;
|
||||
|
||||
GValue **vals;
|
||||
|
||||
gtk_init(&argc,&argv);
|
||||
gst_init(&argc,&argv);
|
||||
gst_control_init(&argc,&argv);
|
||||
|
||||
/***** construct the pipeline *****/
|
||||
|
||||
g_print("creating elements\n");
|
||||
thread = gst_thread_new("live-example");
|
||||
sinesrc = gst_elementfactory_make("sinesrc","sine-source");
|
||||
osssink = gst_elementfactory_make("osssink","sound-sink");
|
||||
gst_bin_add(GST_BIN(thread),sinesrc);
|
||||
gst_bin_add(GST_BIN(thread),osssink);
|
||||
gst_element_connect(sinesrc,"src",osssink,"sink");
|
||||
g_object_set(G_OBJECT(osssink),"fragment",0x00180008,NULL);
|
||||
g_object_set(G_OBJECT(sinesrc),"buffersize",64,NULL);
|
||||
|
||||
dpman = gst_dpman_get_manager (sinesrc);
|
||||
|
||||
freq = gst_dparam_smooth_new(G_TYPE_FLOAT);
|
||||
vals = GST_DPARAM_GET_POINT(freq, 0LL);
|
||||
|
||||
g_value_set_float(vals[0], 10.0);
|
||||
|
||||
// this defines the maximum slope that this
|
||||
// param can change. This says that in 50ms
|
||||
// the value can change by a maximum of one semitone
|
||||
// (the log of one semitone is 0.693)
|
||||
g_value_set_float(vals[1], 0.693);
|
||||
g_value_set_float(vals[2], 50000000.0);
|
||||
|
||||
// set the default update period to 0.5ms, or 2000Hz
|
||||
GST_DPARAM_DEFAULT_UPDATE_PERIOD(freq) = 2000000LL;
|
||||
|
||||
volume = gst_dparam_smooth_new(G_TYPE_FLOAT);
|
||||
vals = GST_DPARAM_GET_POINT(volume, 0LL);
|
||||
|
||||
// this defines the maximum slope that this
|
||||
// param can change. This says that in 10ms
|
||||
// the value can change by a maximum of 0.2
|
||||
g_value_set_float(vals[1], 0.2);
|
||||
g_value_set_float(vals[2], 10000000.0);
|
||||
|
||||
// set the default update period to 0.5ms, or 2000Hz
|
||||
GST_DPARAM_DEFAULT_UPDATE_PERIOD(volume) = 2000000LL;
|
||||
|
||||
g_assert(gst_dpman_attach_dparam (dpman, "volume", volume));
|
||||
g_assert(gst_dpman_attach_dparam (dpman, "freq", freq));
|
||||
|
||||
gst_dpman_set_mode(dpman, "synchronous");
|
||||
|
||||
/***** set up the GUI *****/
|
||||
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_default_size(GTK_WINDOW(window), 80, 400);
|
||||
g_signal_connect(window,"delete_event",GTK_SIGNAL_FUNC(quit_live),NULL);
|
||||
hbox = gtk_hbox_new(TRUE,0);
|
||||
gtk_container_add(GTK_CONTAINER(window),hbox);
|
||||
|
||||
spec = gst_dpman_get_dparam_spec (dpman, "volume");
|
||||
volume_adj = (GtkAdjustment*)gtk_adjustment_new(g_value_get_float(spec->default_val),
|
||||
g_value_get_float(spec->min_val),
|
||||
g_value_get_float(spec->max_val), 0.1, 0.01, 0.01);
|
||||
volume_slider = gtk_vscale_new(volume_adj);
|
||||
gtk_scale_set_digits(GTK_SCALE(volume_slider), 2);
|
||||
gtk_box_pack_start(GTK_BOX(hbox),volume_slider,TRUE,TRUE,0);
|
||||
|
||||
spec = gst_dpman_get_dparam_spec (dpman, "freq");
|
||||
freq_adj = (GtkAdjustment*)gtk_adjustment_new((gfloat)log(g_value_get_float(spec->default_val)),
|
||||
(gfloat)log(g_value_get_float(spec->min_val)),
|
||||
(gfloat)log(g_value_get_float(spec->max_val)), 0.1, 0.01, 0.01);
|
||||
freq_slider = gtk_vscale_new(freq_adj);
|
||||
gtk_scale_set_digits(GTK_SCALE(freq_slider), 2);
|
||||
gtk_box_pack_start(GTK_BOX(hbox),freq_slider,TRUE,TRUE,0);
|
||||
|
||||
|
||||
/***** set up the handlers and such *****/
|
||||
//gtk_signal_connect(volume_adj,"value-changed",GTK_SIGNAL_FUNC(volume_changed),sinesrc);
|
||||
g_signal_connect(volume_adj,"value-changed",
|
||||
GTK_SIGNAL_FUNC(dynparm_value_changed),
|
||||
volume);
|
||||
|
||||
g_signal_connect(freq_adj,"value-changed",
|
||||
GTK_SIGNAL_FUNC(dynparm_log_value_changed),
|
||||
freq);
|
||||
gtk_adjustment_value_changed(volume_adj);
|
||||
gtk_adjustment_value_changed(freq_adj);
|
||||
|
||||
g_print("starting pipeline\n");
|
||||
|
||||
/***** start everything up *****/
|
||||
gst_element_set_state(thread,GST_STATE_PLAYING);
|
||||
|
||||
|
||||
gtk_widget_show_all(window);
|
||||
gtk_main();
|
||||
|
||||
return 0;
|
||||
}
|
|
@ -1,82 +0,0 @@
|
|||
#include <gnome.h>
|
||||
#include <gst/gst.h>
|
||||
|
||||
extern gboolean _gst_plugin_spew;
|
||||
|
||||
void spectrum_chain(GstPad *pad,GstBuffer *buf);
|
||||
gboolean idle_func(gpointer data);
|
||||
|
||||
GtkWidget *drawingarea;
|
||||
|
||||
int main(int argc,char *argv[]) {
|
||||
GstElement *bin;
|
||||
GstElementFactory *srcfactory;
|
||||
GstElement *src;
|
||||
GstElementFactory *spectrumfactory;
|
||||
GstElement *spectrum;
|
||||
GstPad *spectrumpad;
|
||||
|
||||
GtkWidget *appwindow;
|
||||
|
||||
_gst_plugin_spew = TRUE;
|
||||
|
||||
gst_init(&argc,&argv);
|
||||
gst_plugin_load("libgstspectrum.so");
|
||||
gnome_init("Spectrum","0.0.1",argc,argv);
|
||||
|
||||
bin = gst_bin_new("bin");
|
||||
|
||||
srcfactory = gst_elementfactory_find("osssrc");
|
||||
spectrumfactory = gst_elementfactory_find("gstspectrum");
|
||||
|
||||
src = gst_elementfactory_create(srcfactory,"src");
|
||||
gtk_object_set(GTK_OBJECT(src),"bytes_per_read",(gulong)1024,NULL);
|
||||
spectrum = gst_elementfactory_create(spectrumfactory,"spectrum");
|
||||
gtk_object_set(GTK_OBJECT(spectrum),"width",256,NULL);
|
||||
|
||||
|
||||
gst_bin_add(GST_BIN(bin),GST_ELEMENT(src));
|
||||
gst_bin_add(GST_BIN(bin),GST_ELEMENT(spectrum));
|
||||
|
||||
gst_pad_connect(gst_element_get_pad(src,"src"),
|
||||
gst_element_get_pad(spectrum,"sink"));
|
||||
|
||||
spectrumpad = gst_pad_new("sink",GST_PAD_SINK);
|
||||
gst_pad_set_chain_function(spectrumpad,spectrum_chain);
|
||||
|
||||
gst_pad_connect(gst_element_get_pad(spectrum,"src"),spectrumpad);
|
||||
|
||||
appwindow = gnome_app_new("spectrum","Spectrum");
|
||||
drawingarea = gtk_drawing_area_new();
|
||||
gtk_drawing_area_size(GTK_DRAWING_AREA(drawingarea),256,32);
|
||||
gnome_app_set_contents(GNOME_APP(appwindow),drawingarea);
|
||||
gtk_widget_show_all(appwindow);
|
||||
|
||||
gst_element_set_state(GST_ELEMENT(bin),GST_STATE_READY);
|
||||
gst_element_set_state(GST_ELEMENT(bin),GST_STATE_PLAYING);
|
||||
|
||||
g_idle_add(idle_func,src);
|
||||
|
||||
gtk_main();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void spectrum_chain(GstPad *pad,GstBuffer *buf) {
|
||||
gint i;
|
||||
guchar *data = buf->data;
|
||||
|
||||
gdk_draw_rectangle(drawingarea->window,drawingarea->style->black_gc,
|
||||
TRUE,0,0,GST_BUFFER_SIZE(buf),25);
|
||||
for (i=0;i<GST_BUFFER_SIZE(buf);i++) {
|
||||
gdk_draw_rectangle(drawingarea->window,drawingarea->style->white_gc,
|
||||
TRUE,i,32-data[i],1,data[i]);
|
||||
}
|
||||
gst_buffer_unref(buf);
|
||||
}
|
||||
|
||||
gboolean idle_func(gpointer data) {
|
||||
//gst_src_push(GST_SRC(data));
|
||||
return TRUE;
|
||||
}
|
|
@ -1,72 +0,0 @@
|
|||
#include <gst/gst.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "mem.h"
|
||||
|
||||
extern gboolean _gst_plugin_spew;
|
||||
|
||||
GstPipeline *teardown_create_pipeline() {
|
||||
GstPipeline *pipeline;
|
||||
GstElementFactory *srcfactory, *sinkfactory;
|
||||
GstElement *src, *sink;
|
||||
GstPad *srcpad, *sinkpad;
|
||||
|
||||
pipeline = GST_PIPELINE (gst_pipeline_new("pipeline"));
|
||||
g_return_val_if_fail(pipeline != NULL, NULL);
|
||||
|
||||
srcfactory = gst_elementfactory_find("fakesrc");
|
||||
g_return_val_if_fail(srcfactory != NULL, NULL);
|
||||
sinkfactory = gst_elementfactory_find("fakesink");
|
||||
g_return_val_if_fail(sinkfactory != NULL, NULL);
|
||||
src = gst_elementfactory_create(srcfactory,"src");
|
||||
g_return_val_if_fail(src != NULL, NULL);
|
||||
sink = gst_elementfactory_create(sinkfactory,"sink");
|
||||
g_return_val_if_fail(sink != NULL, NULL);
|
||||
|
||||
gst_bin_add(GST_BIN(pipeline),GST_ELEMENT(src));
|
||||
gst_bin_add(GST_BIN(pipeline),GST_ELEMENT(sink));
|
||||
|
||||
srcpad = gst_element_get_pad(src,"src");
|
||||
g_return_val_if_fail(srcpad != NULL, NULL);
|
||||
sinkpad = gst_element_get_pad(sink,"sink");
|
||||
g_return_val_if_fail(srcpad != NULL, NULL);
|
||||
|
||||
gst_pad_connect(srcpad,sinkpad);
|
||||
|
||||
return GST_PIPELINE(pipeline);
|
||||
}
|
||||
|
||||
void teardown_destroy_pipeline(GstPipeline *pipeline) {
|
||||
gst_element_destroy(pipeline);
|
||||
}
|
||||
|
||||
|
||||
int main(int argc,char *argv[]) {
|
||||
GstElement *pipeline, *src;
|
||||
int i,max = 1;
|
||||
long usage1,usage2;
|
||||
|
||||
// _gst_plugin_spew = TRUE;
|
||||
|
||||
gst_init(&argc,&argv);
|
||||
|
||||
if (argc == 2)
|
||||
max = atoi(argv[1]);
|
||||
|
||||
usage1 = vmsize();
|
||||
for (i=0;i<max;i++) {
|
||||
pipeline = GST_ELEMENT (teardown_create_pipeline());
|
||||
src = gst_bin_get_by_name(GST_BIN(pipeline),"src");
|
||||
// g_print("got source %p, pushing",src);
|
||||
// for (j=0;j<max;j++) {
|
||||
// gst_src_push(GST_SRC(src));
|
||||
// g_print(".");
|
||||
// }
|
||||
// g_print("\n");
|
||||
teardown_destroy_pipeline(GST_PIPELINE (pipeline));
|
||||
}
|
||||
usage2 = vmsize();
|
||||
g_print("uses %ld bytes\n",usage2-usage1);
|
||||
|
||||
return 0;
|
||||
}
|
|
@ -1,86 +0,0 @@
|
|||
#include <gtk/gtk.h>
|
||||
#include <gst/gst.h>
|
||||
|
||||
void play (GtkButton *button, gpointer data)
|
||||
{
|
||||
gtk_signal_emit_by_name(GTK_OBJECT(data), "play");
|
||||
}
|
||||
|
||||
void reset (GtkButton *button, gpointer data)
|
||||
{
|
||||
gtk_signal_emit_by_name(GTK_OBJECT(data), "reset");
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
guint channels;
|
||||
GtkWidget *window, *vbox, *play_button, *reset_button, *quit_button;
|
||||
GstElement *filesrc, *mad, *stereo2mono, *pod, *osssink, *pipeline;
|
||||
|
||||
gst_init (&argc, &argv);
|
||||
gtk_init (&argc, &argv);
|
||||
|
||||
if (argc!=2) {
|
||||
g_print("usage: %s <mp3-filename>\n", argv[0]);
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
filesrc = gst_elementfactory_make("filesrc", "filesrc");
|
||||
mad = gst_elementfactory_make("mad", "mad");
|
||||
pod = gst_elementfactory_make("playondemand", "playondemand");
|
||||
osssink = gst_elementfactory_make("osssink", "osssink");
|
||||
|
||||
gtk_object_set(GTK_OBJECT(filesrc), "location", argv[1], NULL);
|
||||
gtk_object_set(GTK_OBJECT(osssink), "fragment", 0x00180008, NULL);
|
||||
gtk_object_get(GTK_OBJECT(osssink), "channels", &channels, NULL);
|
||||
|
||||
pipeline = gst_pipeline_new("app");
|
||||
|
||||
gst_bin_add(GST_BIN(pipeline), filesrc);
|
||||
gst_bin_add(GST_BIN(pipeline), mad);
|
||||
gst_bin_add(GST_BIN(pipeline), pod);
|
||||
gst_bin_add(GST_BIN(pipeline), osssink);
|
||||
|
||||
gst_element_connect(filesrc, "src", mad, "sink");
|
||||
gst_element_connect(pod, "src", osssink, "sink");
|
||||
|
||||
if (channels != 2) {
|
||||
gst_element_connect(mad, "src", pod, "sink");
|
||||
} else {
|
||||
stereo2mono = gst_elementfactory_make("stereo2mono", "stereo2mono");
|
||||
gst_bin_add(GST_BIN(pipeline), stereo2mono);
|
||||
gst_element_connect(mad, "src", stereo2mono, "sink");
|
||||
gst_element_connect(stereo2mono, "src", pod, "sink");
|
||||
}
|
||||
|
||||
gst_element_set_state(pipeline, GST_STATE_PLAYING);
|
||||
|
||||
/* initialize gui elements ... */
|
||||
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||
vbox = gtk_vbox_new(FALSE, 0);
|
||||
play_button = gtk_button_new_with_label("play");
|
||||
reset_button = gtk_button_new_with_label("reset");
|
||||
quit_button = gtk_button_new_with_label("quit");
|
||||
|
||||
/* do the packing stuff ... */
|
||||
gtk_window_set_default_size(GTK_WINDOW(window), 96, 96);
|
||||
gtk_container_add(GTK_CONTAINER(window), vbox);
|
||||
gtk_box_pack_start(GTK_BOX(vbox), play_button, FALSE, FALSE, 2);
|
||||
gtk_box_pack_start(GTK_BOX(vbox), reset_button, FALSE, FALSE, 2);
|
||||
gtk_box_pack_start(GTK_BOX(vbox), quit_button, FALSE, FALSE, 2);
|
||||
|
||||
/* connect things ... */
|
||||
gtk_signal_connect(GTK_OBJECT(play_button), "clicked", play, pod);
|
||||
gtk_signal_connect(GTK_OBJECT(reset_button), "clicked", reset, pod);
|
||||
gtk_signal_connect(GTK_OBJECT(quit_button), "clicked", gtk_main_quit, NULL);
|
||||
|
||||
/* show the gui. */
|
||||
gtk_widget_show(play_button);
|
||||
gtk_widget_show(reset_button);
|
||||
gtk_widget_show(quit_button);
|
||||
gtk_widget_show(vbox);
|
||||
gtk_widget_show(window);
|
||||
gtk_idle_add((GtkFunction)gst_bin_iterate, pipeline);
|
||||
|
||||
gtk_main();
|
||||
}
|
|
@ -1,67 +0,0 @@
|
|||
#include <gtk/gtk.h>
|
||||
#include <gst/gst.h>
|
||||
|
||||
void set_speed (GtkAdjustment *adj, gpointer data)
|
||||
{
|
||||
GstElement *speed = GST_ELEMENT(data);
|
||||
gtk_object_set(GTK_OBJECT(speed), "speed", adj->value, NULL);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
GtkWidget *window, *vbox, *hscale, *button;
|
||||
GstElement *filesrc, *mad, *stereo2mono, *speed, *osssink, *pipeline;
|
||||
|
||||
gst_init (&argc, &argv);
|
||||
gtk_init (&argc, &argv);
|
||||
|
||||
if (argc!=2) {
|
||||
g_print("usage: %s <your.mp3>\n", argv[0]);
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_default_size(GTK_WINDOW(window), 400, 80);
|
||||
vbox = gtk_vbox_new(FALSE, 0);
|
||||
gtk_widget_show(vbox);
|
||||
hscale = gtk_hscale_new(GTK_ADJUSTMENT(gtk_adjustment_new(1.0, 0.01, 4.0,
|
||||
0.1, 0.0, 0.0)));
|
||||
gtk_scale_set_digits(GTK_SCALE(hscale), 2);
|
||||
gtk_range_set_update_policy(GTK_RANGE(hscale), GTK_UPDATE_CONTINUOUS);
|
||||
button = gtk_button_new_with_label("quit");
|
||||
gtk_container_add(GTK_CONTAINER(window), vbox);
|
||||
gtk_box_pack_start(GTK_BOX(vbox), hscale, TRUE, TRUE, 2);
|
||||
gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 2);
|
||||
gtk_widget_show(hscale);
|
||||
gtk_signal_connect(GTK_OBJECT(button), "clicked", gtk_main_quit, NULL);
|
||||
gtk_widget_show(button);
|
||||
|
||||
filesrc = gst_elementfactory_make("filesrc", "filesrc");
|
||||
mad = gst_elementfactory_make("mad", "mad");
|
||||
stereo2mono = gst_elementfactory_make("stereo2mono", "stereo2mono");
|
||||
speed = gst_elementfactory_make("speed", "speed");
|
||||
osssink = gst_elementfactory_make("osssink", "osssink");
|
||||
gtk_object_set(GTK_OBJECT(osssink), "fragment", 0x00180008, NULL);
|
||||
|
||||
gtk_signal_connect(GTK_OBJECT(gtk_range_get_adjustment(GTK_RANGE(hscale))),
|
||||
"value_changed", set_speed, speed);
|
||||
|
||||
pipeline = gst_pipeline_new("app");
|
||||
gst_bin_add(GST_BIN(pipeline), filesrc);
|
||||
gst_bin_add(GST_BIN(pipeline), mad);
|
||||
gst_bin_add(GST_BIN(pipeline), stereo2mono);
|
||||
gst_bin_add(GST_BIN(pipeline), speed);
|
||||
gst_bin_add(GST_BIN(pipeline), osssink);
|
||||
gst_element_connect(filesrc, "src", mad, "sink");
|
||||
gst_element_connect(mad, "src", stereo2mono, "sink");
|
||||
gst_element_connect(stereo2mono, "src", speed, "sink");
|
||||
gst_element_connect(speed, "src", osssink, "sink");
|
||||
gtk_object_set(GTK_OBJECT(filesrc), "location", argv[1], NULL);
|
||||
|
||||
gst_element_set_state(pipeline, GST_STATE_PLAYING);
|
||||
|
||||
gtk_widget_show(window);
|
||||
gtk_idle_add((GtkFunction)gst_bin_iterate, pipeline);
|
||||
|
||||
gtk_main();
|
||||
}
|
|
@ -1,63 +0,0 @@
|
|||
#include <gst/gst.h>
|
||||
|
||||
int main(int argc,char *argv[]) {
|
||||
GstType *mp3type;
|
||||
GList *factories;
|
||||
GstElement *src;
|
||||
GList *padlist;
|
||||
|
||||
gst_init(&argc,&argv);
|
||||
gst_plugin_load_all();
|
||||
|
||||
bin = gst_bin_new("bin");
|
||||
|
||||
filesrc = gst_filesrc_new("filesrc");
|
||||
g_print("created filesrc\n");
|
||||
if (argc == 2)
|
||||
gst_filesrc_set_filename(filesrc,argv[1]);
|
||||
else
|
||||
gst_filesrc_set_filename(filesrc,"Thank_you_very_much.au");
|
||||
g_print("loaded file '%s'\n",gst_filesrc_get_filename(filesrc));
|
||||
|
||||
|
||||
/* now it's time to get the parser */
|
||||
autype = gst_type_get_by_mime("audio/au");
|
||||
factories = gst_type_get_sinks(autype);
|
||||
if (factories != NULL)
|
||||
parsefactory = GST_ELEMENTFACTORY(factories->data);
|
||||
else {
|
||||
g_print("sorry, can't find anyone registered to sink 'au'\n");
|
||||
return 1;
|
||||
}
|
||||
parse = gst_elementfactory_create(parsefactory,"parser");
|
||||
if (parse == NULL) {
|
||||
g_print("sorry, couldn't create parser\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
osssink = gst_osssink_new("osssink");
|
||||
|
||||
gtk_signal_connect(GTK_OBJECT(filesrc),"eof",
|
||||
GTK_SIGNAL_FUNC(eof),NULL);
|
||||
|
||||
/* add objects to the main pipeline */
|
||||
gst_bin_add(GST_BIN(bin),GST_OBJECT(filesrc));
|
||||
gst_bin_add(GST_BIN(bin),GST_OBJECT(parse));
|
||||
gst_bin_add(GST_BIN(bin),GST_OBJECT(osssink));
|
||||
|
||||
/* connect src to sink */
|
||||
gst_pad_connect(gst_element_get_pad(filesrc,"src"),
|
||||
gst_element_get_pad(parse,"sink"));
|
||||
gst_pad_connect(gst_element_get_pad(parse,"src"),
|
||||
gst_element_get_pad(osssink,"sink"));
|
||||
|
||||
while(1)
|
||||
gst_filesrc_push(GST_SRC(filesrc));
|
||||
|
||||
gst_object_destroy(GST_OBJECT(osssink));
|
||||
gst_object_destroy(GST_OBJECT(parse));
|
||||
gst_object_destroy(GST_OBJECT(filesrc));
|
||||
gst_object_destroy(GST_OBJECT(bin));
|
||||
}
|
||||
|
44
test/types.c
44
test/types.c
|
@ -1,44 +0,0 @@
|
|||
#include <glib.h>
|
||||
#include <gst/gst.h>
|
||||
|
||||
extern gboolean _gst_plugin_spew;
|
||||
|
||||
GstTypeFactory testfactory = { "test/test", ".tst", NULL };
|
||||
|
||||
int main(int argc,char *argv[]) {
|
||||
guint16 id;
|
||||
GstType *type;
|
||||
GstElementFactory *element;
|
||||
GList *types, *elements;
|
||||
|
||||
// _gst_plugin_spew = TRUE;
|
||||
|
||||
gst_init(&argc,&argv);
|
||||
// gst_plugin_load_all();
|
||||
gst_plugin_load("libgstparseau.so");
|
||||
gst_plugin_load("libgstparsewav.so");
|
||||
gst_plugin_load("libgstxa.so");
|
||||
gst_plugin_load("libstereo.so");
|
||||
gst_plugin_load("libvolume.so");
|
||||
gst_plugin_load("libsmoothwave.so");
|
||||
gst_plugin_load("libgstspectrum.so");
|
||||
gst_plugin_load("libsynaesthesia.so");
|
||||
gst_plugin_load("libvumeter.so");
|
||||
|
||||
id = gst_type_register(&testfactory);
|
||||
|
||||
types = gst_type_get_list();
|
||||
while (types) {
|
||||
type = (GstType *)types->data;
|
||||
g_print("%d: have type '%s'\n",type->id,type->mime);
|
||||
types = g_list_next(types);
|
||||
}
|
||||
|
||||
elements = gst_elementfactory_get_list();
|
||||
while (elements) {
|
||||
element = (GstElementFactory *)elements->data;
|
||||
g_print("%d: have elementfactory '%s': \"%s\"\n",element->type,
|
||||
element->name,element->details->longname);
|
||||
elements = g_list_next(elements);
|
||||
}
|
||||
}
|
|
@ -1,80 +0,0 @@
|
|||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <glib.h>
|
||||
#include <gst/gst.h>
|
||||
|
||||
int main(int argc,char *argv[]) {
|
||||
int fd;
|
||||
GstPipeline *pipeline;
|
||||
GstElement *osssrc, *videosrc, *fdsink, *encoder, *compress, *video_queue, *video_thread;
|
||||
GstElementFactory *osssrcfactory, *fdsinkfactory, *encoderfactory, *compressfactory;
|
||||
GstElementFactory *videosrcfactory;
|
||||
|
||||
gst_init(&argc,&argv);
|
||||
|
||||
gst_plugin_load("v4lsrc");
|
||||
gst_plugin_load("aviencoder");
|
||||
gst_plugin_load("jpeg");
|
||||
|
||||
pipeline = GST_PIPELINE (gst_pipeline_new("pipeline"));
|
||||
|
||||
osssrcfactory = gst_elementfactory_find("osssrc");
|
||||
osssrc = gst_elementfactory_create(osssrcfactory,"osssrc");
|
||||
|
||||
videosrcfactory = gst_elementfactory_find("v4lsrc");
|
||||
videosrc = gst_elementfactory_create(videosrcfactory,"videosrc");
|
||||
compressfactory = gst_elementfactory_find("jpegenc");
|
||||
compress = gst_elementfactory_create(compressfactory,"jpegenc");
|
||||
encoderfactory = gst_elementfactory_find("aviencoder");
|
||||
encoder = gst_elementfactory_create(encoderfactory,"aviencoder");
|
||||
g_object_set(G_OBJECT(videosrc),"width",320,"height",240,NULL);
|
||||
g_object_set(G_OBJECT(videosrc),"format",9,NULL);
|
||||
|
||||
g_object_set(G_OBJECT(encoder),"video","00:I420",NULL);
|
||||
|
||||
fd = open(argv[1],O_CREAT|O_RDWR|O_TRUNC);
|
||||
|
||||
fdsinkfactory = gst_elementfactory_find("fdsink");
|
||||
fdsink = gst_elementfactory_create(fdsinkfactory,"fdsink");
|
||||
g_object_set(G_OBJECT(fdsink),"fd",fd,NULL);
|
||||
|
||||
gst_bin_add(GST_BIN(pipeline),GST_ELEMENT(videosrc));
|
||||
|
||||
/* add objects to the main pipeline */
|
||||
video_thread = gst_thread_new("video_thread");
|
||||
g_return_val_if_fail(video_thread != NULL, -1);
|
||||
gst_bin_add(GST_BIN(video_thread),GST_ELEMENT(compress));
|
||||
gst_bin_add(GST_BIN(video_thread),GST_ELEMENT(encoder));
|
||||
gst_bin_add(GST_BIN(video_thread),GST_ELEMENT(fdsink));
|
||||
|
||||
|
||||
/* connect src to sink */
|
||||
gst_element_add_ghost_pad(GST_ELEMENT(video_thread),
|
||||
// gst_element_get_pad(compress,"sink"));
|
||||
//gst_pad_connect(gst_element_get_pad(compress,"src"),
|
||||
gst_element_get_pad(encoder,"video_00"),"video_00");
|
||||
gst_pad_connect(gst_element_get_pad(encoder,"src"),
|
||||
gst_element_get_pad(fdsink,"sink"));
|
||||
|
||||
|
||||
// construct queue and connect everything in the main pipeline
|
||||
video_queue = gst_elementfactory_make("queue","video_queue");
|
||||
g_object_set(G_OBJECT(video_queue),"max_level",30,NULL);
|
||||
gst_bin_add(GST_BIN(pipeline),GST_ELEMENT(video_queue));
|
||||
gst_bin_add(GST_BIN(pipeline),GST_ELEMENT(video_thread));
|
||||
gst_pad_connect(gst_element_get_pad(videosrc, "src"),
|
||||
gst_element_get_pad(video_queue,"sink"));
|
||||
gst_pad_connect(gst_element_get_pad(video_queue,"src"),
|
||||
gst_element_get_pad(video_thread,"video_00"));
|
||||
|
||||
g_object_set(G_OBJECT(video_thread),"create_thread",TRUE,NULL);
|
||||
g_print("\neverything's built, setting it up to be runnable\n");
|
||||
gst_element_set_state(GST_ELEMENT(pipeline),GST_STATE_READY);
|
||||
g_print("\nok, runnable, hitting 'play'...\n");
|
||||
gst_element_set_state(GST_ELEMENT(pipeline),GST_STATE_PLAYING);
|
||||
|
||||
while(1)
|
||||
gst_bin_iterate(GST_BIN(pipeline));
|
||||
}
|
||||
|
|
@ -1,81 +0,0 @@
|
|||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <glib.h>
|
||||
#include <gst/gst.h>
|
||||
|
||||
int main(int argc,char *argv[]) {
|
||||
int fd;
|
||||
GstPipeline *pipeline;
|
||||
GstElement *osssrc, *videosrc, *fdsink, *encoder, *compress, *video_queue, *video_thread;
|
||||
GstElementFactory *osssrcfactory, *fdsinkfactory, *encoderfactory, *compressfactory;
|
||||
GstElementFactory *videosrcfactory;
|
||||
|
||||
gst_init(&argc,&argv);
|
||||
|
||||
gst_plugin_load("v4lsrc");
|
||||
gst_plugin_load("aviencoder");
|
||||
gst_plugin_load("wincodec");
|
||||
|
||||
pipeline = GST_PIPELINE (gst_pipeline_new("pipeline"));
|
||||
|
||||
osssrcfactory = gst_elementfactory_find("osssrc");
|
||||
osssrc = gst_elementfactory_create(osssrcfactory,"osssrc");
|
||||
|
||||
videosrcfactory = gst_elementfactory_find("v4lsrc");
|
||||
videosrc = gst_elementfactory_create(videosrcfactory,"videosrc");
|
||||
compressfactory = gst_elementfactory_find("winenc");
|
||||
compress = gst_elementfactory_create(compressfactory,"winenc");
|
||||
g_assert(compress != NULL);
|
||||
encoderfactory = gst_elementfactory_find("aviencoder");
|
||||
encoder = gst_elementfactory_create(encoderfactory,"aviencoder");
|
||||
g_object_set(G_OBJECT(videosrc),"width",320,"height",240,NULL);
|
||||
g_object_set(G_OBJECT(videosrc),"format",5,NULL);
|
||||
|
||||
g_object_set(G_OBJECT(encoder),"video","00:DIV3",NULL);
|
||||
|
||||
fd = open(argv[1],O_CREAT|O_RDWR|O_TRUNC);
|
||||
|
||||
fdsinkfactory = gst_elementfactory_find("fdsink");
|
||||
fdsink = gst_elementfactory_create(fdsinkfactory,"fdsink");
|
||||
g_object_set(G_OBJECT(fdsink),"fd",fd,NULL);
|
||||
|
||||
gst_bin_add(GST_BIN(pipeline),GST_ELEMENT(videosrc));
|
||||
|
||||
/* add objects to the main pipeline */
|
||||
video_thread = gst_thread_new("video_thread");
|
||||
g_return_val_if_fail(video_thread != NULL, -1);
|
||||
gst_bin_add(GST_BIN(video_thread),GST_ELEMENT(compress));
|
||||
gst_bin_add(GST_BIN(video_thread),GST_ELEMENT(encoder));
|
||||
gst_bin_add(GST_BIN(video_thread),GST_ELEMENT(fdsink));
|
||||
|
||||
|
||||
/* connect src to sink */
|
||||
gst_element_add_ghost_pad(GST_ELEMENT(video_thread),
|
||||
gst_element_get_pad(compress,"sink"),"sink");
|
||||
gst_pad_connect(gst_element_get_pad(compress,"src"),
|
||||
gst_element_get_pad(encoder,"video_00"));
|
||||
gst_pad_connect(gst_element_get_pad(encoder,"src"),
|
||||
gst_element_get_pad(fdsink,"sink"));
|
||||
|
||||
|
||||
// construct queue and connect everything in the main pipeline
|
||||
video_queue = gst_elementfactory_make("queue","video_queue");
|
||||
g_object_set(G_OBJECT(video_queue),"max_level",30,NULL);
|
||||
gst_bin_add(GST_BIN(pipeline),GST_ELEMENT(video_queue));
|
||||
gst_bin_add(GST_BIN(pipeline),GST_ELEMENT(video_thread));
|
||||
gst_pad_connect(gst_element_get_pad(videosrc, "src"),
|
||||
gst_element_get_pad(video_queue,"sink"));
|
||||
gst_pad_connect(gst_element_get_pad(video_queue,"src"),
|
||||
gst_element_get_pad(video_thread,"sink"));
|
||||
|
||||
g_object_set(G_OBJECT(video_thread),"create_thread",TRUE,NULL);
|
||||
g_print("\neverything's built, setting it up to be runnable\n");
|
||||
gst_element_set_state(GST_ELEMENT(pipeline),GST_STATE_READY);
|
||||
g_print("\nok, runnable, hitting 'play'...\n");
|
||||
gst_element_set_state(GST_ELEMENT(pipeline),GST_STATE_PLAYING);
|
||||
|
||||
while(1)
|
||||
gst_bin_iterate(GST_BIN(pipeline));
|
||||
}
|
||||
|
234
test/video2mp1.c
234
test/video2mp1.c
|
@ -1,234 +0,0 @@
|
|||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <string.h>
|
||||
#include <glib.h>
|
||||
#include <gst/gst.h>
|
||||
#include <gnome.h>
|
||||
|
||||
static void
|
||||
gst_play_have_type (GstElement *sink, GstElement *sink2, gpointer data)
|
||||
{
|
||||
GST_DEBUG (0,"GstPipeline: play have type %p\n", (gboolean *)data);
|
||||
|
||||
*(gboolean *)data = TRUE;
|
||||
}
|
||||
|
||||
gboolean
|
||||
idle_func (gpointer data)
|
||||
{
|
||||
return gst_bin_iterate (GST_BIN (data));
|
||||
}
|
||||
|
||||
static GstCaps*
|
||||
gst_play_typefind (GstBin *bin, GstElement *element)
|
||||
{
|
||||
gboolean found = FALSE;
|
||||
GstElement *typefind;
|
||||
GstCaps *caps = NULL;
|
||||
|
||||
GST_DEBUG (0,"GstPipeline: typefind for element \"%s\" %p\n",
|
||||
GST_ELEMENT_NAME(element), &found);
|
||||
|
||||
typefind = gst_elementfactory_make ("typefind", "typefind");
|
||||
g_return_val_if_fail (typefind != NULL, FALSE);
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (typefind), "have_type",
|
||||
GTK_SIGNAL_FUNC (gst_play_have_type), &found);
|
||||
|
||||
gst_pad_connect (gst_element_get_pad (element, "src"),
|
||||
gst_element_get_pad (typefind, "sink"));
|
||||
|
||||
gst_bin_add (bin, typefind);
|
||||
|
||||
gst_element_set_state (GST_ELEMENT (bin), GST_STATE_PLAYING);
|
||||
|
||||
// push a buffer... the have_type signal handler will set the found flag
|
||||
gst_bin_iterate (bin);
|
||||
|
||||
gst_element_set_state (GST_ELEMENT (bin), GST_STATE_NULL);
|
||||
|
||||
caps = gst_pad_get_caps (gst_element_get_pad (element, "src"));
|
||||
|
||||
gst_pad_disconnect (gst_element_get_pad (element, "src"),
|
||||
gst_element_get_pad (typefind, "sink"));
|
||||
gst_bin_remove (bin, typefind);
|
||||
|
||||
return caps;
|
||||
}
|
||||
|
||||
static GstElement*
|
||||
get_video_encoder_bin (void)
|
||||
{
|
||||
GstElement *bin;
|
||||
GstElement *encoder, *queue, *colorspace, *videoscale;
|
||||
|
||||
bin = gst_bin_new ("video_encoder_bin");
|
||||
|
||||
colorspace = gst_elementfactory_make ("colorspace", "colorspace");
|
||||
g_assert (colorspace != NULL);
|
||||
videoscale = gst_elementfactory_make ("videoscale", "videoscale");
|
||||
g_assert (videoscale != NULL);
|
||||
gtk_object_set (GTK_OBJECT (videoscale), "width", 352, "height", 288, NULL);
|
||||
encoder = gst_elementfactory_make ("mpeg2enc", "video_encoder");
|
||||
g_assert (encoder != NULL);
|
||||
queue = gst_elementfactory_make ("queue", "video_encoder_queue");
|
||||
g_assert (queue != NULL);
|
||||
|
||||
gst_bin_add (GST_BIN (bin), colorspace);
|
||||
gst_bin_add (GST_BIN (bin), videoscale);
|
||||
gst_bin_add (GST_BIN (bin), encoder);
|
||||
gst_bin_add (GST_BIN (bin), queue);
|
||||
|
||||
gst_element_connect (colorspace, "src", videoscale, "sink");
|
||||
gst_element_connect (videoscale, "src", encoder, "sink");
|
||||
gst_element_connect (encoder, "src", queue, "sink");
|
||||
|
||||
gst_element_add_ghost_pad (bin, gst_element_get_pad (colorspace, "sink"), "sink");
|
||||
gst_element_add_ghost_pad (bin, gst_element_get_pad (queue, "src"), "src");
|
||||
|
||||
return bin;
|
||||
}
|
||||
|
||||
static GstElement*
|
||||
get_audio_encoder_bin (void)
|
||||
{
|
||||
GstElement *bin;
|
||||
GstElement *encoder, *queue;
|
||||
|
||||
bin = gst_bin_new ("audio_encoder_bin");
|
||||
|
||||
encoder = gst_elementfactory_make ("mpegaudio", "audio_encoder");
|
||||
g_assert (encoder != NULL);
|
||||
queue = gst_elementfactory_make ("queue", "audio_encoder_queue");
|
||||
g_assert (queue != NULL);
|
||||
|
||||
gst_bin_add (GST_BIN (bin), encoder);
|
||||
gst_bin_add (GST_BIN (bin), queue);
|
||||
|
||||
gst_element_connect (encoder, "src", queue, "sink");
|
||||
|
||||
gst_element_add_ghost_pad (bin, gst_element_get_pad (encoder, "sink"), "sink");
|
||||
gst_element_add_ghost_pad (bin, gst_element_get_pad (queue, "src"), "src");
|
||||
|
||||
return bin;
|
||||
}
|
||||
|
||||
int main(int argc,char *argv[])
|
||||
{
|
||||
GstElement *filesrc, *audio_enc, *video_enc;
|
||||
GstElement *muxthread_video, *muxer, *fdsink_video;
|
||||
GstElement *muxthread_audio, *fdsink_audio;
|
||||
GstElement *bin;
|
||||
GstCaps *srccaps;
|
||||
GstElement *new_element;
|
||||
GstAutoplug *autoplug;
|
||||
gint fd_video;
|
||||
gint fd_audio;
|
||||
|
||||
g_thread_init(NULL);
|
||||
gst_init(&argc,&argv);
|
||||
gnome_init("autoplug","0.0.1", argc,argv);
|
||||
|
||||
if (argc != 4) {
|
||||
g_print("usage: %s <in_filename> <out_video> <out_audio>\n", argv[0]);
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
/* create a new bin to hold the elements */
|
||||
bin = gst_pipeline_new("pipeline");
|
||||
g_assert(bin != NULL);
|
||||
|
||||
/* create a disk reader */
|
||||
filesrc = gst_elementfactory_make("filesrc", "disk_source");
|
||||
g_assert(filesrc != NULL);
|
||||
gtk_object_set(GTK_OBJECT(filesrc),"location", argv[1],NULL);
|
||||
|
||||
gst_bin_add (GST_BIN (bin), filesrc);
|
||||
|
||||
srccaps = gst_play_typefind (GST_BIN (bin), filesrc);
|
||||
|
||||
if (!srccaps) {
|
||||
g_print ("could not autoplug, unknown media type...\n");
|
||||
exit (-1);
|
||||
}
|
||||
|
||||
audio_enc = get_audio_encoder_bin();
|
||||
video_enc = get_video_encoder_bin();
|
||||
|
||||
autoplug = gst_autoplugfactory_make ("staticrender");
|
||||
g_assert (autoplug != NULL);
|
||||
|
||||
new_element = gst_autoplug_to_renderers (autoplug,
|
||||
srccaps,
|
||||
video_enc,
|
||||
audio_enc,
|
||||
NULL);
|
||||
|
||||
if (!new_element) {
|
||||
g_print ("could not autoplug, no suitable codecs found...\n");
|
||||
exit (-1);
|
||||
}
|
||||
|
||||
gst_object_ref (GST_OBJECT (filesrc));
|
||||
gst_bin_remove (GST_BIN (bin), filesrc);
|
||||
gst_object_destroy (GST_OBJECT (bin));
|
||||
|
||||
// FIXME hack, reparent the filesrc so the scheduler doesn't break
|
||||
bin = gst_pipeline_new("pipeline");
|
||||
|
||||
gst_bin_add (GST_BIN (bin), filesrc);
|
||||
gst_bin_add (GST_BIN (bin), new_element);
|
||||
|
||||
gst_element_connect (filesrc, "src", new_element, "sink");
|
||||
|
||||
muxer = gst_elementfactory_make ("system_encode", "muxer");
|
||||
g_assert (muxer != NULL);
|
||||
|
||||
if (gst_bin_get_by_name (GST_BIN (new_element), "video_encoder_bin")) {
|
||||
muxthread_video = gst_thread_new("thread_video");
|
||||
|
||||
fdsink_video = gst_elementfactory_make ("fdsink", "fdsink_video");
|
||||
g_assert (fdsink_video != NULL);
|
||||
fd_video = open (argv[2], O_CREAT|O_RDWR|O_TRUNC);
|
||||
gtk_object_set (GTK_OBJECT (fdsink_video), "fd", fd_video, NULL);
|
||||
|
||||
gst_element_connect (video_enc, "src", fdsink_video, "sink");
|
||||
gst_bin_add (GST_BIN (muxthread_video), fdsink_video);
|
||||
|
||||
gst_bin_add (GST_BIN (bin), muxthread_video);
|
||||
}
|
||||
|
||||
if (gst_bin_get_by_name (GST_BIN (new_element), "audio_encoder_bin")) {
|
||||
muxthread_audio = gst_thread_new("thread_audio");
|
||||
|
||||
fdsink_audio = gst_elementfactory_make ("fdsink", "fdsink_audio");
|
||||
g_assert (fdsink_audio != NULL);
|
||||
fd_audio = open (argv[3], O_CREAT|O_RDWR|O_TRUNC);
|
||||
gtk_object_set (GTK_OBJECT (fdsink_audio), "fd", fd_audio, NULL);
|
||||
|
||||
gst_element_connect (audio_enc, "src", fdsink_audio, "sink");
|
||||
gst_bin_add (GST_BIN (muxthread_audio), fdsink_audio);
|
||||
|
||||
gst_bin_add (GST_BIN (bin), muxthread_audio);
|
||||
}
|
||||
|
||||
//gtk_object_set (GTK_OBJECT (muxer), "video", "00", NULL);
|
||||
//gtk_object_set (GTK_OBJECT (muxer), "audio", "00", NULL);
|
||||
|
||||
/* start playing */
|
||||
gst_element_set_state(GST_ELEMENT(bin), GST_STATE_PLAYING);
|
||||
|
||||
gtk_idle_add(idle_func, bin);
|
||||
|
||||
gst_main();
|
||||
|
||||
/* stop the bin */
|
||||
gst_element_set_state(GST_ELEMENT(bin), GST_STATE_NULL);
|
||||
|
||||
gst_pipeline_destroy(bin);
|
||||
|
||||
exit(0);
|
||||
}
|
||||
|
112
test/videotest.c
112
test/videotest.c
|
@ -1,112 +0,0 @@
|
|||
#include <gnome.h>
|
||||
#include <gst/gst.h>
|
||||
|
||||
extern gboolean _gst_plugin_spew;
|
||||
|
||||
gboolean idle_func(gpointer data);
|
||||
|
||||
GstElement *videosink;
|
||||
GstElement *videosink2;
|
||||
GstElement *src;
|
||||
|
||||
int main(int argc,char *argv[]) {
|
||||
GstElement *bin;
|
||||
GstElement *tee;
|
||||
GstElementFactory *srcfactory;
|
||||
GstElementFactory *videosinkfactory;
|
||||
|
||||
GtkWidget *appwindow;
|
||||
GtkWidget *appwindow2;
|
||||
GtkWidget *vbox1;
|
||||
GtkWidget *button;
|
||||
GtkWidget *draw;
|
||||
GtkWidget *draw2;
|
||||
|
||||
|
||||
//_gst_plugin_spew = TRUE;
|
||||
gst_init(&argc,&argv);
|
||||
|
||||
gnome_init("Videotest","0.0.1",argc,argv);
|
||||
|
||||
bin = gst_bin_new("bin");
|
||||
|
||||
srcfactory = gst_elementfactory_find("v4lsrc");
|
||||
g_return_val_if_fail(srcfactory != NULL,-1);
|
||||
videosinkfactory = gst_elementfactory_find("videosink");
|
||||
g_return_val_if_fail(videosinkfactory != NULL,-1);
|
||||
|
||||
src = gst_elementfactory_create(srcfactory,"src");
|
||||
gtk_object_set(GTK_OBJECT(src),"format",3,NULL);
|
||||
gtk_object_set(GTK_OBJECT(src),"width",320,"height",240,NULL);
|
||||
|
||||
videosink = gst_elementfactory_create(videosinkfactory,"videosink");
|
||||
gtk_object_set(GTK_OBJECT(videosink),"xv_enabled",FALSE,NULL);
|
||||
gtk_object_set(GTK_OBJECT(videosink),"width",320,"height",240,NULL);
|
||||
|
||||
videosink2 = gst_elementfactory_create(videosinkfactory,"videosink2");
|
||||
gtk_object_set(GTK_OBJECT(videosink2),"xv_enabled",FALSE,NULL);
|
||||
gtk_object_set(GTK_OBJECT(videosink2),"width",320,"height",240,NULL);
|
||||
|
||||
tee = gst_elementfactory_make ("tee", "tee");
|
||||
|
||||
gst_bin_add(GST_BIN(bin),GST_ELEMENT(src));
|
||||
gst_bin_add(GST_BIN(bin),GST_ELEMENT(tee));
|
||||
gst_bin_add(GST_BIN(bin),GST_ELEMENT(videosink));
|
||||
gst_bin_add(GST_BIN(bin),GST_ELEMENT(videosink2));
|
||||
|
||||
gst_pad_connect(gst_element_get_pad(src,"src"),
|
||||
gst_element_get_pad(tee,"sink"));
|
||||
gst_pad_connect(gst_element_request_pad_by_name (tee,"src%d"),
|
||||
gst_element_get_pad(videosink,"sink"));
|
||||
gst_pad_connect(gst_element_request_pad_by_name (tee,"src%d"),
|
||||
gst_element_get_pad(videosink2,"sink"));
|
||||
|
||||
appwindow = gnome_app_new("Videotest","Videotest");
|
||||
appwindow2 = gnome_app_new("Videotest2","Videotest2");
|
||||
|
||||
vbox1 = gtk_vbox_new (FALSE, 0);
|
||||
gtk_widget_show (vbox1);
|
||||
|
||||
button = gtk_button_new_with_label(_("test"));//_with_label (_("chup"));
|
||||
gtk_widget_show (button);
|
||||
gtk_box_pack_start (GTK_BOX (vbox1), button, FALSE, FALSE, 0);
|
||||
//gtk_widget_set_usize (button, 50, 50);
|
||||
//gtk_widget_set_usize (button, 0, 0);
|
||||
|
||||
draw = gst_util_get_pointer_arg(GTK_OBJECT(videosink),"widget"),
|
||||
gtk_box_pack_start (GTK_BOX (vbox1),
|
||||
draw,
|
||||
TRUE, TRUE, 0);
|
||||
gtk_widget_show (draw);
|
||||
|
||||
draw2 = gst_util_get_pointer_arg(GTK_OBJECT(videosink2),"widget"),
|
||||
gtk_widget_show (draw2);
|
||||
|
||||
gnome_app_set_contents(GNOME_APP(appwindow), vbox1);
|
||||
|
||||
gnome_app_set_contents(GNOME_APP(appwindow2), draw2);
|
||||
|
||||
gtk_object_set(GTK_OBJECT(appwindow),"allow_grow",TRUE,NULL);
|
||||
gtk_object_set(GTK_OBJECT(appwindow),"allow_shrink",TRUE,NULL);
|
||||
|
||||
gtk_widget_show_all(appwindow);
|
||||
gtk_widget_show_all(appwindow2);
|
||||
|
||||
gst_element_set_state(GST_ELEMENT(bin),GST_STATE_PLAYING);
|
||||
|
||||
gtk_object_set(GTK_OBJECT(src),"bright",32000,"contrast", 32000,NULL);
|
||||
|
||||
//gtk_object_set(GTK_OBJECT(src),"tune",133250,NULL);
|
||||
g_idle_add(idle_func,bin);
|
||||
|
||||
gtk_main();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
gboolean idle_func(gpointer data) {
|
||||
//static int i=0;
|
||||
//g_print("pushing %d\n",i++);
|
||||
gst_bin_iterate(GST_BIN(data));
|
||||
return TRUE;
|
||||
}
|
|
@ -1,85 +0,0 @@
|
|||
#include <gnome.h>
|
||||
#include <gst/gst.h>
|
||||
|
||||
static gboolean
|
||||
idle_func (gpointer data)
|
||||
{
|
||||
gst_bin_iterate(GST_BIN(data));
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc,char *argv[])
|
||||
{
|
||||
GstElement *bin;
|
||||
GstElement *src;
|
||||
GstElement *videosink;
|
||||
|
||||
GtkWidget *appwindow;
|
||||
GtkWidget *vbox1;
|
||||
GtkWidget *button;
|
||||
guint32 draw;
|
||||
GtkWidget *gtk_socket;
|
||||
|
||||
|
||||
gst_init(&argc,&argv);
|
||||
|
||||
gnome_init("Videotest","0.0.1",argc,argv);
|
||||
|
||||
bin = gst_pipeline_new("pipeline");
|
||||
|
||||
src = gst_elementfactory_make ("v4lsrc", "src");
|
||||
gtk_object_set(GTK_OBJECT(src),"format",9,NULL);
|
||||
gtk_object_set(GTK_OBJECT(src),"width",320,"height",240,NULL);
|
||||
//gtk_object_set(GTK_OBJECT(src),"width",100,"height",100,NULL);
|
||||
|
||||
videosink = gst_elementfactory_make ("xvideosink", "videosink");
|
||||
gtk_object_set(GTK_OBJECT(videosink),"width",320,"height",240,NULL);
|
||||
|
||||
gst_bin_add(GST_BIN(bin),GST_ELEMENT(src));
|
||||
gst_bin_add(GST_BIN(bin),GST_ELEMENT(videosink));
|
||||
|
||||
gst_pad_connect(gst_element_get_pad(src,"src"),
|
||||
gst_element_get_pad(videosink,"sink"));
|
||||
|
||||
appwindow = gnome_app_new("Videotest","Videotest");
|
||||
|
||||
vbox1 = gtk_vbox_new (FALSE, 0);
|
||||
gtk_widget_show (vbox1);
|
||||
|
||||
button = gtk_button_new_with_label(_("test"));//_with_label (_("chup"));
|
||||
gtk_widget_show (button);
|
||||
gtk_box_pack_start (GTK_BOX (vbox1), button, FALSE, FALSE, 0);
|
||||
|
||||
draw = gst_util_get_int_arg (GTK_OBJECT (videosink), "xid"),
|
||||
|
||||
gtk_socket = gtk_socket_new ();
|
||||
gtk_widget_show (gtk_socket);
|
||||
|
||||
gnome_app_set_contents(GNOME_APP(appwindow), vbox1);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (vbox1),
|
||||
GTK_WIDGET(gtk_socket),
|
||||
TRUE, TRUE, 0);
|
||||
|
||||
gtk_widget_realize (gtk_socket);
|
||||
gtk_socket_steal (GTK_SOCKET (gtk_socket), draw);
|
||||
|
||||
gtk_object_set(GTK_OBJECT(appwindow),"allow_grow",TRUE,NULL);
|
||||
gtk_object_set(GTK_OBJECT(appwindow),"allow_shrink",TRUE,NULL);
|
||||
|
||||
gtk_widget_show_all(appwindow);
|
||||
|
||||
gst_element_set_state(GST_ELEMENT(bin),GST_STATE_PLAYING);
|
||||
|
||||
gtk_object_set(GTK_OBJECT(src),"bright",32000,"contrast", 32000,NULL);
|
||||
|
||||
//gtk_object_set(GTK_OBJECT(src),"tune",133250,NULL);
|
||||
g_idle_add(idle_func,bin);
|
||||
|
||||
gtk_main();
|
||||
|
||||
exit (0);
|
||||
}
|
||||
|
61
test/wave.c
61
test/wave.c
|
@ -1,61 +0,0 @@
|
|||
#include <gnome.h>
|
||||
#include <gst/gst.h>
|
||||
|
||||
extern gboolean _gst_plugin_spew;
|
||||
|
||||
gboolean idle_func(gpointer data);
|
||||
|
||||
GtkWidget *drawingarea;
|
||||
|
||||
int main(int argc,char *argv[]) {
|
||||
GstElement *bin;
|
||||
GstElementFactory *srcfactory;
|
||||
GstElement *src;
|
||||
GstElementFactory *wavefactory;
|
||||
GstElement *wave;
|
||||
|
||||
GtkWidget *appwindow;
|
||||
|
||||
_gst_plugin_spew = TRUE;
|
||||
|
||||
gst_init(&argc,&argv);
|
||||
gst_plugin_load("libsmoothwave.so");
|
||||
gnome_init("Wave","0.0.1",argc,argv);
|
||||
|
||||
bin = gst_bin_new("bin");
|
||||
|
||||
srcfactory = gst_elementfactory_find("audiosrc");
|
||||
g_return_val_if_fail(srcfactory != NULL, -1);
|
||||
wavefactory = gst_elementfactory_find("smoothwave");
|
||||
g_return_val_if_fail(wavefactory != NULL, -1);
|
||||
|
||||
src = gst_elementfactory_create(srcfactory,"src");
|
||||
gtk_object_set(GTK_OBJECT(src),"bytes_per_read",(gulong)2048,NULL);
|
||||
wave = gst_elementfactory_create(wavefactory,"wave");
|
||||
gtk_object_set(GTK_OBJECT(wave),"width",256,"height",100,NULL);
|
||||
|
||||
|
||||
gst_bin_add(GST_BIN(bin),GST_ELEMENT(src));
|
||||
gst_bin_add(GST_BIN(bin),GST_ELEMENT(wave));
|
||||
|
||||
gst_pad_connect(gst_element_get_pad(src,"src"),
|
||||
gst_element_get_pad(wave,"sink"));
|
||||
|
||||
appwindow = gnome_app_new("wave","Wave");
|
||||
gnome_app_set_contents(GNOME_APP(appwindow),gst_util_get_pointer_arg(GTK_OBJECT(wave),"widget"));
|
||||
gtk_widget_show_all(appwindow);
|
||||
|
||||
gst_element_set_state(GST_ELEMENT(bin),GST_STATE_READY);
|
||||
gst_element_set_state(GST_ELEMENT(bin),GST_STATE_PLAYING);
|
||||
|
||||
g_idle_add(idle_func,bin);
|
||||
|
||||
gtk_main();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
gboolean idle_func(gpointer data) {
|
||||
gst_bin_iterate(GST_BIN(data));
|
||||
return TRUE;
|
||||
}
|
|
@ -1,66 +0,0 @@
|
|||
#include <gst/gst.h>
|
||||
|
||||
extern gboolean _gst_plugin_spew;
|
||||
|
||||
gboolean idle_func(gpointer data);
|
||||
|
||||
GstElement *src;
|
||||
|
||||
int
|
||||
main (int argc,char *argv[])
|
||||
{
|
||||
GstElement *bin;
|
||||
GstElement *effect;
|
||||
GstElement *osssink;
|
||||
|
||||
gst_init(&argc,&argv);
|
||||
|
||||
bin = gst_bin_new("bin");
|
||||
|
||||
src = gst_elementfactory_make("XMMS_INPUT_mpeg_layer_1/2/3_player_1.2.4", "xmms_plugin");
|
||||
//src = gst_elementfactory_make("XMMS_INPUT_oggvorbis_player_0.1", "xmms_plugin");
|
||||
//src = gst_elementfactory_make("XMMS_INPUT_mikmod_player_1.2.4", "xmms_plugin");
|
||||
//src = gst_elementfactory_make("XMMS_INPUT_tone_generator_1.2.4", "xmms_plugin");
|
||||
g_return_val_if_fail(src != NULL, -1);
|
||||
|
||||
//effect = gst_elementfactory_make("XMMS_EFFECT_voice_removal_plugin_1.2.4", "xmms_effect");
|
||||
effect = gst_elementfactory_make("XMMS_EFFECT_extra_stereo_plugin_1.2.4", "xmms_effect");
|
||||
//effect = gst_elementfactory_make("XMMS_EFFECT_echo_plugin_1.2.4", "xmms_effect");
|
||||
g_return_val_if_fail(effect != NULL, -1);
|
||||
|
||||
g_object_set (G_OBJECT (src), "location", argv[1], NULL);
|
||||
//gtk_object_set (G_OBJECT (src), "filename", "tone://1000", NULL);
|
||||
|
||||
g_print ("Song Info (text:length): %s\n",gst_util_get_string_arg (G_OBJECT (src), "song_info"));
|
||||
//gtk_object_set (G_OBJECT (src), "show_about", TRUE, NULL);
|
||||
//gtk_object_set (G_OBJECT (src), "configure", TRUE, NULL);
|
||||
//gtk_object_set (G_OBJECT (src), "show_file_info", TRUE, NULL);
|
||||
|
||||
osssink = gst_elementfactory_make("osssink", "osssink");
|
||||
g_return_val_if_fail(osssink != NULL, -1);
|
||||
|
||||
gst_bin_add(GST_BIN(bin),GST_ELEMENT(src));
|
||||
gst_bin_add(GST_BIN(bin),GST_ELEMENT(effect));
|
||||
gst_bin_add(GST_BIN(bin),GST_ELEMENT(osssink));
|
||||
|
||||
gst_pad_connect(gst_element_get_pad(src,"src"),
|
||||
gst_element_get_pad(effect,"sink"));
|
||||
gst_pad_connect(gst_element_get_pad(effect,"src"),
|
||||
gst_element_get_pad(osssink,"sink"));
|
||||
|
||||
gst_element_set_state(GST_ELEMENT(bin),GST_STATE_PLAYING);
|
||||
|
||||
g_idle_add(idle_func, bin);
|
||||
|
||||
//gtk_main();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
gboolean
|
||||
idle_func (gpointer data)
|
||||
{
|
||||
gst_bin_iterate(GST_BIN(data));
|
||||
|
||||
return TRUE;
|
||||
}
|
Loading…
Reference in a new issue