Unable to put caps on audioconvert & audioresample.

Sagar pilkhwal.sagar at gmail.com
Fri Mar 4 13:15:29 UTC 2016


Hi,

the following is the code which i am trying to run (removed callback method
before posting)

I get this error when I try to run this code. *assertion failed:
(gst_element_link_filtered (audioconvert1, audioresample,caps))*

I am confused between caps and capsfilter as you can see in my code I am
using both of them 

#define GLIB_DISABLE_DEPRECATION_WARNINGS

#include <gst/gst.h>
#include <string.h>
#include <math.h>

static GMainLoop *loop;
//GstElement *play;
GstElement *pipeline;
GstElement *filesrc, *decodebin, *cutter, *valve, *audioconvert0,
*audioconvert1, *audioresample, *capsfilter, *multifilesink;
gboolean above = FALSE;
guint64 maxaudioduration = 3 * GST_SECOND;
int isSpeaking =1;

int
main (int argc, char *argv[])
{

  GstBus *bus;
  GstCaps *caps;
  
  /* gstreamer */
  gst_init (&argc, &argv);
  
  /* create pipeline */
  pipeline = gst_pipeline_new (NULL);
  
  /* we need to run a GLib main loop to get the messages */
  loop = g_main_loop_new (NULL, FALSE);
  
  filesrc = gst_element_factory_make ("filesrc", "filesrc");
  g_object_set (G_OBJECT(filesrc), "location", "./videos/audiosilence.mp4",
NULL);
  g_assert (filesrc);
  
  decodebin = gst_element_factory_make ("decodebin", "decodebin");
  g_assert (decodebin);
  
  cutter = gst_element_factory_make ("cutter", "cutter");
  g_object_set (G_OBJECT(cutter), "threshold-dB", -39.0, NULL);
  g_object_set (G_OBJECT(cutter), "run-length", 400000000, NULL);
  g_assert (cutter);  
  
  /*TODO t.*/
  
  valve = gst_element_factory_make ("valve", "valve");
  g_assert (valve);
      
  audioconvert0 = gst_element_factory_make ("audioconvert",
"audioconvert0");
  g_assert (audioconvert0);
  audioconvert1 = gst_element_factory_make ("audioconvert",
"audioconvert1");
  g_assert (audioconvert1);
  
  audioresample = gst_element_factory_make ("audioresample",
"audioresample");
  g_assert (audioresample);
  
  caps = gst_caps_from_string("audio/x-raw, format=int, rate=16000,
channels=1");
  g_assert (caps!=NULL);
  capsfilter = gst_element_factory_make("capsfilter", "capsfilter");
  g_object_set (capsfilter, "caps", caps, NULL);
  g_assert (capsfilter);
      
  multifilesink	 = gst_element_factory_make ("multifilesink",
"multifilesink");
  g_object_set (G_OBJECT(multifilesink), "location", "./audio/user%02d.pcm",
NULL);
  g_object_set (G_OBJECT(multifilesink), "next-file", 2, NULL);
  g_assert (multifilesink);  
  
  
  /* This is what I want to do */
/*  play = gst_parse_launch("-v -m -t filesrc location=./videos/audio.webm !
decodebin ! cutter threshold-dB=-39   !tee name=t ! queue ! fakesink t. !
queue ! valve name=valve ! audioconvert! audioresample !  audio/x-raw,
rate=16000, channels=1  ! multifilesink
location=./multifilesink/cutter%02d.pcm next-file=2", NULL);
  g_assert (play);*/
  
  /* BIN ADD MANY */
  gst_bin_add_many(GST_BIN (pipeline),filesrc, decodebin, audioconvert0,
cutter, valve, audioconvert1, audioresample, capsfilter, multifilesink,
NULL);
  
  /* Link Many */
  g_assert(gst_element_link_filtered (audioconvert1, audioresample,caps));
  gst_caps_unref(caps);
  g_assert(gst_element_link_many (filesrc, audioconvert0, cutter, valve,
audioconvert1, audioresample, multifilesink, NULL));
  
    
  bus = gst_pipeline_get_bus (pipeline);
  gst_bus_add_watch (bus, my_bus_callback, NULL);

  gst_element_set_state (pipeline, GST_STATE_READY);
  gst_element_set_state (pipeline, GST_STATE_PLAYING);

  g_main_loop_run (loop);
 
  gst_element_set_state (pipeline, GST_STATE_NULL);
  gst_object_unref (GST_OBJECT (pipeline));
  
  gst_object_unref (bus);

  gst_object_unref (GST_OBJECT (filesrc));
    gst_object_unref (GST_OBJECT (decodebin));
  gst_object_unref (GST_OBJECT (cutter));
  gst_object_unref (GST_OBJECT (valve));
  gst_object_unref (GST_OBJECT (audioconvert0));
    gst_object_unref (GST_OBJECT (audioconvert1));
  gst_object_unref (GST_OBJECT (audioresample));
  gst_object_unref (GST_OBJECT (multifilesink));

  g_main_loop_unref (loop);
  
  return 0;
}





--
View this message in context: http://gstreamer-devel.966125.n4.nabble.com/Unable-to-put-caps-on-audioconvert-audioresample-tp4676180.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.


More information about the gstreamer-devel mailing list