intermediate commit

Original commit message from CVS:
intermediate commit
This commit is contained in:
Andy Wingo 2002-01-04 22:01:09 +00:00
parent 83bd7c9c73
commit 3c39b171b0
23 changed files with 0 additions and 1747 deletions

View file

@ -1,9 +0,0 @@
Makefile
Makefile.in
*.o
*.lo
*.la
.deps
.libs
test

View file

@ -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)

View file

@ -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;
}

View file

@ -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__ */

View file

@ -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);
}

View file

@ -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;
}

View file

@ -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);
}

View file

@ -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;
}

View file

@ -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));
}
}

View file

@ -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;
}

View file

@ -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;
}

View file

@ -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;
}

View file

@ -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();
}

View file

@ -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();
}

View file

@ -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));
}

View file

@ -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);
}
}

View file

@ -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));
}

View file

@ -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));
}

View file

@ -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);
}

View file

@ -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;
}

View file

@ -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);
}

View file

@ -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;
}

View file

@ -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;
}