summaryrefslogtreecommitdiff
path: root/test/record.c
blob: ebd082a3cecac49ceffd0d53bc81a453af7ec86a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#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));
  }
}