static GstElement * setup_opusenc (void) { GstElement *opusenc; GST_DEBUG ("setup_opusenc"); opusenc = gst_check_setup_element ("opusenc"); myencsrcpad = gst_check_setup_src_pad (opusenc, &srctemplate); myencsinkpad = gst_check_setup_sink_pad (opusenc, &sinktemplate); gst_pad_set_active (myencsrcpad, TRUE); gst_pad_set_active (myencsinkpad, TRUE); return opusenc; }
static GstElement * setup_amplify (void) { GstElement *amplify; GST_DEBUG ("setup_amplify"); amplify = gst_check_setup_element ("audioamplify"); mysrcpad = gst_check_setup_src_pad (amplify, &srctemplate); mysinkpad = gst_check_setup_sink_pad (amplify, &sinktemplate); gst_pad_set_active (mysrcpad, TRUE); gst_pad_set_active (mysinkpad, TRUE); return amplify; }
static GstElement * setup_echo (void) { GstElement *echo; GST_DEBUG ("setup_echo"); echo = gst_check_setup_element ("audioecho"); mysrcpad = gst_check_setup_src_pad (echo, &srctemplate); mysinkpad = gst_check_setup_sink_pad (echo, &sinktemplate); gst_pad_set_active (mysrcpad, TRUE); gst_pad_set_active (mysinkpad, TRUE); return echo; }
static GstElement * setup_rglimiter (void) { GstElement *element; GST_DEBUG ("setup_rglimiter"); element = gst_check_setup_element ("rglimiter"); mysrcpad = gst_check_setup_src_pad (element, &srctemplate); mysinkpad = gst_check_setup_sink_pad (element, &sinktemplate); gst_pad_set_active (mysrcpad, TRUE); gst_pad_set_active (mysinkpad, TRUE); return element; }
static GstElement * setup_jpegenc (GstStaticPadTemplate * sinktemplate) { GstElement *jpegenc; GST_DEBUG ("setup_jpegenc"); jpegenc = gst_check_setup_element ("jpegenc"); mysinkpad = gst_check_setup_sink_pad (jpegenc, sinktemplate); mysrcpad = gst_check_setup_src_pad (jpegenc, &any_srctemplate); gst_pad_set_active (mysrcpad, TRUE); gst_pad_set_active (mysinkpad, TRUE); return jpegenc; }
static void setup_subparse (void) { subparse = gst_check_setup_element ("subparse"); mysrcpad = gst_check_setup_src_pad (subparse, &srctemplate, NULL); mysinkpad = gst_check_setup_sink_pad (subparse, &sinktemplate, NULL); gst_pad_set_active (mysrcpad, TRUE); gst_pad_set_active (mysinkpad, TRUE); fail_unless_equals_int (gst_element_set_state (subparse, GST_STATE_PLAYING), GST_STATE_CHANGE_SUCCESS); }
static GstElement * setup_vorbisdec (void) { GstElement *vorbisdec; GST_DEBUG ("setup_vorbisdec"); vorbisdec = gst_check_setup_element ("vorbisdec"); mysrcpad = gst_check_setup_src_pad (vorbisdec, &srctemplate); mysinkpad = gst_check_setup_sink_pad (vorbisdec, &sinktemplate); gst_pad_set_active (mysrcpad, TRUE); gst_pad_set_active (mysinkpad, TRUE); return vorbisdec; }
/* takes over reference for outcaps */ GstElement * setup_level () { GstElement *level; GST_DEBUG ("setup_level"); level = gst_check_setup_element ("level"); mysrcpad = gst_check_setup_src_pad (level, &srctemplate, NULL); mysinkpad = gst_check_setup_sink_pad (level, &sinktemplate, NULL); gst_pad_set_active (mysrcpad, TRUE); gst_pad_set_active (mysinkpad, TRUE); return level; }
GstElement * setup_wavpackdec () { GstElement *wavpackdec; GST_DEBUG ("setup_wavpackdec"); wavpackdec = gst_check_setup_element ("wavpackdec"); mysrcpad = gst_check_setup_src_pad (wavpackdec, &srctemplate, NULL); mysinkpad = gst_check_setup_sink_pad (wavpackdec, &sinktemplate, NULL); gst_pad_set_active (mysrcpad, TRUE); gst_pad_set_active (mysinkpad, TRUE); return wavpackdec; }
static GstElement * setup_videorate (void) { GstElement *videorate; GST_DEBUG ("setup_videorate"); videorate = gst_check_setup_element ("videorate"); mysrcpad = gst_check_setup_src_pad (videorate, &srctemplate, NULL); mysinkpad = gst_check_setup_sink_pad (videorate, &sinktemplate, NULL); gst_pad_set_active (mysrcpad, TRUE); gst_pad_set_active (mysinkpad, TRUE); return videorate; }
static GstElement * setup_videorate_full (GstStaticPadTemplate * srctemplate, GstStaticPadTemplate * sinktemplate) { GstElement *videorate; GST_DEBUG ("setup_videorate"); videorate = gst_check_setup_element ("videorate"); mysrcpad = gst_check_setup_src_pad (videorate, srctemplate, NULL); mysinkpad = gst_check_setup_sink_pad (videorate, sinktemplate, NULL); gst_pad_set_active (mysrcpad, TRUE); gst_pad_set_active (mysinkpad, TRUE); return videorate; }
static GstElement * setup_wavpackparse (void) { GstElement *wavpackparse; GST_DEBUG ("setup_wavpackparse"); wavpackparse = gst_check_setup_element ("wavpackparse"); mysrcpad = gst_check_setup_src_pad (wavpackparse, &srctemplate); mysinkpad = gst_check_setup_sink_pad (wavpackparse, &sinktemplate); gst_pad_set_active (mysrcpad, TRUE); gst_pad_set_active (mysinkpad, TRUE); return wavpackparse; }
/* takes over reference for outcaps */ static GstElement * setup_filter (const gchar * name, const gchar * prop, va_list var_args) { GstElement *element; GST_DEBUG ("setup_element"); element = gst_check_setup_element (name); g_object_set_valist (G_OBJECT (element), prop, var_args); mysrcpad = gst_check_setup_src_pad (element, &srctemplate); gst_pad_set_active (mysrcpad, TRUE); mysinkpad = gst_check_setup_sink_pad (element, &sinktemplate); gst_pad_set_active (mysinkpad, TRUE); return element; }
static GstElement * setup_capssetter (void) { GstElement *capssetter; GST_DEBUG ("setup_capssetter"); capssetter = gst_check_setup_element ("capssetter"); mysrcpad = gst_check_setup_src_pad (capssetter, &srctemplate); mysinkpad = gst_check_setup_sink_pad (capssetter, &sinktemplate); gst_pad_set_active (mysrcpad, TRUE); gst_pad_set_active (mysinkpad, TRUE); return capssetter; }
static void setup_videodecodertester (GstStaticPadTemplate * sinktmpl, GstStaticPadTemplate * srctmpl) { if (sinktmpl == NULL) sinktmpl = &sinktemplate; if (srctmpl == NULL) srctmpl = &srctemplate; dec = g_object_new (GST_VIDEO_DECODER_TESTER_TYPE, NULL); mysrcpad = gst_check_setup_src_pad (dec, srctmpl); mysinkpad = gst_check_setup_sink_pad (dec, sinktmpl); gst_pad_set_event_function (mysinkpad, _mysinkpad_event); }
static GstElement * setup_identity (void) { GstElement *identity; GST_DEBUG ("setup_identity"); identity = gst_check_setup_element ("identity"); mysrcpad = gst_check_setup_src_pad (identity, &srctemplate, NULL); mysinkpad = gst_check_setup_sink_pad (identity, &sinktemplate, NULL); gst_pad_set_event_function (mysinkpad, event_func); gst_pad_set_active (mysrcpad, TRUE); gst_pad_set_active (mysinkpad, TRUE); return identity; }
static void setup_dtmfsrc (void) { testclock = gst_test_clock_new (); bus = gst_bus_new (); method = 2; dtmfsrc = gst_check_setup_element ("dtmfsrc"); sink = gst_check_setup_sink_pad (dtmfsrc, &audio_dtmfsrc_sink_template); gst_element_set_bus (dtmfsrc, bus); fail_unless (gst_element_set_clock (dtmfsrc, testclock)); gst_pad_set_active (sink, TRUE); fail_unless (gst_element_set_state (dtmfsrc, GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS); }
static GstElement * setup_filesrc (void) { GstElement *filesrc; GST_DEBUG ("setup_filesrc"); filesrc = gst_check_setup_element ("filesrc"); mysinkpad = gst_check_setup_sink_pad (filesrc, &sinktemplate, NULL); gst_pad_set_event_function (mysinkpad, event_func); gst_pad_set_active (mysinkpad, TRUE); eos_cond = g_cond_new (); event_mutex = g_mutex_new (); return filesrc; }
static GstElement * setup_avisubtitle (void) { GstElement *avisubtitle; GstCaps *srccaps; GST_DEBUG ("setup_avisubtitle"); avisubtitle = gst_check_setup_element ("avisubtitle"); mysinkpad = gst_check_setup_sink_pad (avisubtitle, &sink_template); mysrcpad = gst_check_setup_src_pad (avisubtitle, &src_template); gst_pad_set_active (mysinkpad, TRUE); gst_pad_set_active (mysrcpad, TRUE); srccaps = gst_caps_new_empty_simple ("application/x-subtitle-avi"); gst_check_setup_events (mysrcpad, avisubtitle, srccaps, GST_FORMAT_TIME); gst_caps_unref (srccaps); return avisubtitle; }
static GstElement * setup_audioresample (int channels, int inrate, int outrate) { GstElement *audioresample; GstCaps *caps; GstStructure *structure; GstPad *pad; GST_DEBUG ("setup_audioresample"); audioresample = gst_check_setup_element ("audioresample"); caps = gst_caps_from_string (RESAMPLE_CAPS_TEMPLATE_STRING); structure = gst_caps_get_structure (caps, 0); gst_structure_set (structure, "channels", G_TYPE_INT, channels, "rate", G_TYPE_INT, inrate, NULL); fail_unless (gst_caps_is_fixed (caps)); fail_unless (gst_element_set_state (audioresample, GST_STATE_PAUSED) == GST_STATE_CHANGE_SUCCESS, "could not set to paused"); mysrcpad = gst_check_setup_src_pad (audioresample, &srctemplate, caps); pad = gst_pad_get_peer (mysrcpad); gst_pad_set_caps (pad, caps); gst_object_unref (GST_OBJECT (pad)); gst_caps_unref (caps); gst_pad_set_active (mysrcpad, TRUE); caps = gst_caps_from_string (RESAMPLE_CAPS_TEMPLATE_STRING); structure = gst_caps_get_structure (caps, 0); gst_structure_set (structure, "channels", G_TYPE_INT, channels, "rate", G_TYPE_INT, outrate, NULL); fail_unless (gst_caps_is_fixed (caps)); mysinkpad = gst_check_setup_sink_pad (audioresample, &sinktemplate, caps); /* this installs a getcaps func that will always return the caps we set * later */ gst_pad_use_fixed_caps (mysinkpad); pad = gst_pad_get_peer (mysinkpad); gst_pad_set_caps (pad, caps); gst_object_unref (GST_OBJECT (pad)); gst_caps_unref (caps); gst_pad_set_active (mysinkpad, TRUE); return audioresample; }
GstElement * setup_rgvolume () { GstElement *element; GST_DEBUG ("setup_rgvolume"); element = gst_check_setup_element ("rgvolume"); mysrcpad = gst_check_setup_src_pad (element, &srctemplate, NULL); mysinkpad = gst_check_setup_sink_pad (element, &sinktemplate, NULL); /* Capture events, to test tag filtering behavior: */ gst_pad_set_event_function (mysinkpad, event_func); gst_pad_set_active (mysrcpad, TRUE); gst_pad_set_active (mysinkpad, TRUE); return element; }
static GstElement * setup_wavpackdec (void) { GstElement *wavpackdec; GST_DEBUG ("setup_wavpackdec"); wavpackdec = gst_check_setup_element ("wavpackdec"); mysrcpad = gst_check_setup_src_pad (wavpackdec, &srctemplate); mysinkpad = gst_check_setup_sink_pad (wavpackdec, &sinktemplate); gst_pad_set_active (mysrcpad, TRUE); gst_pad_set_active (mysinkpad, TRUE); gst_check_setup_events (mysrcpad, wavpackdec, NULL, GST_FORMAT_TIME); fail_unless (gst_element_set_state (wavpackdec, GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, "could not set to playing"); return wavpackdec; }
/* takes over reference for outcaps */ static GstElement * setup_spectrum (const gchar * caps_str) { GstElement *spectrum; GstCaps *caps; GST_DEBUG ("setup_spectrum"); spectrum = gst_check_setup_element ("spectrum"); mysrcpad = gst_check_setup_src_pad (spectrum, &srctemplate); mysinkpad = gst_check_setup_sink_pad (spectrum, &sinktemplate); gst_pad_set_active (mysrcpad, TRUE); gst_pad_set_active (mysinkpad, TRUE); caps = gst_caps_from_string (caps_str); gst_check_setup_events (mysrcpad, spectrum, caps, GST_FORMAT_TIME); gst_caps_unref (caps); return spectrum; }
/* Create input-selector with given number of sink pads and switch given number of input buffers to each sink pad. */ static void run_input_selector_buffer_count (gint num_input_pads, gint num_buffers_per_input) { /* set up input_pads ! selector ! output_pad */ gint i = 0, probe_id = 0; GList *input_pads = NULL, *output_pads = NULL; GstElement *sel = gst_check_setup_element ("input-selector"); GstPad *output_pad = gst_check_setup_sink_pad (sel, &sinktemplate); output_pads = g_list_append (output_pads, output_pad); gst_pad_set_active (output_pad, TRUE); for (i = 0; i < num_input_pads; i++) { input_pads = g_list_append (input_pads, setup_input_pad (sel)); } /* add probe */ probe_id = gst_pad_add_probe (output_pad, GST_PAD_PROBE_TYPE_DATA_BOTH, (GstPadProbeCallback) probe_cb, NULL, NULL); g_object_set_data (G_OBJECT (output_pad), "probe_id", GINT_TO_POINTER (probe_id)); /* run the test */ fail_unless (gst_element_set_state (sel, GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, "could not set to playing"); push_newsegment_events (input_pads); push_switched_buffers (input_pads, sel, input_pads, num_buffers_per_input); count_output_buffers (output_pads, (num_input_pads * num_buffers_per_input)); fail_unless (gst_element_set_state (sel, GST_STATE_NULL) == GST_STATE_CHANGE_SUCCESS, "could not set to null"); /* clean up */ gst_pad_remove_probe (output_pad, probe_id); gst_pad_set_active (output_pad, FALSE); gst_check_teardown_sink_pad (sel); GST_DEBUG ("setting selector pad to NULL"); selector_set_active_pad (sel, NULL); // unref input-selector active pad g_list_foreach (input_pads, (GFunc) cleanup_pad, sel); g_list_free (input_pads); g_list_free (output_pads); gst_check_teardown_element (sel); }
GstElement * setup_xingmux () { GstElement *xingmux; GstCaps *caps; GST_DEBUG ("setup_xingmux"); xingmux = gst_check_setup_element ("xingmux"); mysrcpad = gst_check_setup_src_pad (xingmux, &srctemplate); mysinkpad = gst_check_setup_sink_pad (xingmux, &sinktemplate); gst_pad_set_active (mysrcpad, TRUE); gst_pad_set_active (mysinkpad, TRUE); caps = gst_caps_new_simple ("audio/mpeg", "mpegversion", G_TYPE_INT, 1, "layer", G_TYPE_INT, 3, NULL); gst_check_setup_events (mysrcpad, xingmux, caps, GST_FORMAT_TIME); gst_caps_unref (caps); return xingmux; }
static void setup_videoencodertester (void) { static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, GST_STATIC_CAPS ("video/x-test-custom") ); static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, GST_STATIC_CAPS ("video/x-raw") ); dec = g_object_new (GST_VIDEO_ENCODER_TESTER_TYPE, NULL); mysrcpad = gst_check_setup_src_pad (dec, &srctemplate); mysinkpad = gst_check_setup_sink_pad (dec, &sinktemplate); gst_pad_set_event_function (mysinkpad, _mysinkpad_event); }
static GstElement * setup_wavpackenc (void) { GstElement *wavpackenc; GST_DEBUG ("setup_wavpackenc"); wavpackenc = gst_check_setup_element ("wavpackenc"); mysrcpad = gst_check_setup_src_pad (wavpackenc, &srctemplate); mysinkpad = gst_check_setup_sink_pad (wavpackenc, &sinktemplate); gst_pad_set_active (mysrcpad, TRUE); gst_pad_set_active (mysinkpad, TRUE); fail_unless (gst_element_set_state (wavpackenc, GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, "could not set to playing"); bus = gst_bus_new (); gst_pad_push_event (mysrcpad, gst_event_new_stream_start ("test-silence")); return wavpackenc; }
static GstElement * setup_mpeg2enc (void) { GstElement *mpeg2enc; GST_DEBUG ("setup_mpeg2enc"); mpeg2enc = gst_check_setup_element ("mpeg2enc"); mysrcpad = gst_check_setup_src_pad (mpeg2enc, &srctemplate); mysinkpad = gst_check_setup_sink_pad (mpeg2enc, &sinktemplate); gst_pad_set_active (mysrcpad, TRUE); gst_pad_set_active (mysinkpad, TRUE); /* need to know when we are eos */ gst_pad_set_event_function (mysinkpad, test_sink_event); /* and notify the test run */ g_mutex_init (&mpeg2enc_mutex); g_cond_init (&mpeg2enc_cond); return mpeg2enc; }
static void setup_audiodecodertester (void) { static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, GST_STATIC_CAPS ("audio/x-raw, format=(string)S32LE, " "rate=(int)[1, 320000], channels=(int)[1, 32]," "layout=(string)interleaved") ); static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, GST_STATIC_CAPS ("audio/x-test-custom") ); dec = g_object_new (GST_AUDIO_DECODER_TESTER_TYPE, NULL); mysrcpad = gst_check_setup_src_pad (dec, &srctemplate); mysinkpad = gst_check_setup_sink_pad (dec, &sinktemplate); gst_pad_set_event_function (mysinkpad, _mysinkpad_event); }
static GstElement * setup_x264enc (const gchar * profile, const gchar * stream_format, const gchar * input_format) { GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, GST_STATIC_CAPS (MPEG_CAPS_STRING)); GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, GST_STATIC_CAPS (VIDEO_CAPS_STRING)); GstElement *x264enc; gchar *caps_str; GstCaps *caps; GST_DEBUG ("setup_x264enc"); caps_str = g_strdup_printf ("%s, profile = (string) %s, " "stream-format = (string) %s", MPEG_CAPS_STRING, profile, stream_format); sinktemplate.static_caps.string = caps_str; x264enc = gst_check_setup_element ("x264enc"); mysrcpad = gst_check_setup_src_pad (x264enc, &srctemplate); mysinkpad = gst_check_setup_sink_pad (x264enc, &sinktemplate); gst_pad_set_active (mysrcpad, TRUE); gst_pad_set_active (mysinkpad, TRUE); caps = gst_caps_from_string (VIDEO_CAPS_STRING); gst_caps_set_simple (caps, "format", G_TYPE_STRING, input_format, NULL); gst_check_setup_events (mysrcpad, x264enc, caps, GST_FORMAT_TIME); gst_caps_unref (caps); g_free (caps_str); return x264enc; }