All pastes #676887 Raw Edit

Miscellany

public text v1 · immutable
#676887 ·published 2007-08-31 14:10 UTC
rendered paste body
#include <gst/gst.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int
main (int   argc,
      char *argv[])
{
  GstStateChangeReturn sret;
  GstElement *pipeline;
  GstElement *source, *sink, *queue;

  gst_init (&argc, &argv);

  if (unlink("test")) {
    perror("unlink:");
  }

  if (mkfifo("test", O_CREAT|S_IRWXU)) {
    perror("mkfifo:");
  }

  if (!fopen("test", "w+")) {
    perror("fopen:");
  }

  pipeline = gst_pipeline_new ("my-pipeline");

  source = gst_element_factory_make ("fakesrc", "source");

  g_object_set (G_OBJECT (source), "num-buffers", 5, NULL);
  g_object_set (G_OBJECT (source), "sizetype", 2, NULL);
  g_object_set (G_OBJECT (source), "filltype", 4, NULL);
  g_object_set (G_OBJECT (source), "sizemax", 70000, NULL);

  queue = gst_element_factory_make ("queue", "queue");

  gst_bin_add_many (GST_BIN (pipeline), source, queue, NULL);

  if (!gst_element_link_many (source, queue, NULL)) {
    g_warning ("Failed to link elements!");
  }

  sret = gst_element_set_state (pipeline, GST_STATE_PLAYING);

  sink = gst_element_factory_make ("filesink", "sink");
  g_object_set (G_OBJECT (sink), "location",
		"test",
		NULL);

  gst_bin_add (GST_BIN (pipeline), sink);

  gst_element_set_state (sink, GST_STATE_PLAYING);

  gst_element_link (queue, sink);

  sleep (1);

  gst_element_set_state (sink, GST_STATE_NULL);

  return 0;
}