diff options
Diffstat (limited to 'testcase/codec/codec_haltests.cpp')
-rw-r--r-- | testcase/codec/codec_haltests.cpp | 36 |
1 files changed, 11 insertions, 25 deletions
diff --git a/testcase/codec/codec_haltests.cpp b/testcase/codec/codec_haltests.cpp index 41498aa..2d4e592 100644 --- a/testcase/codec/codec_haltests.cpp +++ b/testcase/codec/codec_haltests.cpp @@ -114,45 +114,31 @@ pad_added_cb(GstElement * demux, GstPad * pad, GstBin * pipeline) caps = gst_pad_query_caps(pad, NULL); gchar *caps_str = gst_caps_to_string(caps); + gst_caps_unref(caps); if (strstr(caps_str, "h264")) { parse = gst_element_factory_make("h264parse", NULL); codec = gst_element_factory_make(codec_list[H264].plugins[0], NULL); - sink = gst_element_factory_make("fakesink", NULL); - - gst_bin_add_many(GST_BIN(pipeline), parse, codec, sink, NULL); - gst_element_link_many(demux, parse, codec, sink, NULL); - - gst_element_set_state(parse, GST_STATE_PAUSED); - gst_element_set_state(codec, GST_STATE_PAUSED); - gst_element_set_state(sink, GST_STATE_PAUSED); } else if (strstr(caps_str, "h263")) { parse = gst_element_factory_make("h263parse", NULL); codec = gst_element_factory_make(codec_list[H263].plugins[0], NULL); - sink = gst_element_factory_make("fakesink", NULL); - - gst_bin_add_many(GST_BIN(pipeline), codec, sink, NULL); - gst_element_link_many(demux, codec, sink, NULL); - - gst_element_set_state(parse, GST_STATE_PAUSED); - gst_element_set_state(codec, GST_STATE_PAUSED); - gst_element_set_state(sink, GST_STATE_PAUSED); } else if (strstr(caps_str, "video/mpeg")) { parse = gst_element_factory_make("mpeg4videoparse", NULL); codec = gst_element_factory_make(codec_list[MPEG4].plugins[0], NULL); - sink = gst_element_factory_make("fakesink", NULL); - - gst_bin_add_many(GST_BIN(pipeline), parse, codec, sink, NULL); - gst_element_link_many(demux, parse, codec, sink, NULL); - - gst_element_set_state(parse, GST_STATE_PAUSED); - gst_element_set_state(codec, GST_STATE_PAUSED); - gst_element_set_state(sink, GST_STATE_PAUSED); } else { GST_WARNING_OBJECT(pad, "non video pad"); + g_free(caps_str); + return; } - gst_caps_unref(caps); + sink = gst_element_factory_make("fakesink", NULL); + gst_bin_add_many(GST_BIN(pipeline), parse, codec, sink, NULL); + gst_element_link_many(demux, parse, codec, sink, NULL); + + gst_element_set_state(parse, GST_STATE_PAUSED); + gst_element_set_state(codec, GST_STATE_PAUSED); + gst_element_set_state(sink, GST_STATE_PAUSED); + g_free(caps_str); } static GstBusSyncReply |