2011-11-18 127 views
2

假設我製作了基於gstreamer的插件。我已經安裝了它,它可以正常使用gst-launch應用程序。我該如何測試我的gstreamer插件?是否有用於gstreamer插件測試的標準測試套件?

但現在我想測試我的gstreamer插件。那麼對於這種插件測試,是否有標準測試套件

是否有任何用gstreamer組件構建的媒體播放器所以我可以用我的插件替換該組件並測試它?

+0

我不太明白你想要做什麼。你能否進一步描述你想達到的目標? – joar

+0

我已經做了一個插件元素,現在我想測試它是否正常工作?所以爲了測試這樣的元素,gstreamer中有沒有標準的測試套件? –

+0

您可能想要諮詢irc.freenode.net上的#gstreamer。 – joar

回答

0

我認爲this將解決您的問題。

+0

閱讀後,我已經使插件...!但是這樣的測試套件沒有足夠的信息 –

1

我不確定GStreamer 0.10,我認爲這個問題是關於給定年齡的。但是,對於任何人編寫插件的GStreamer 1.0,這裏是一個非常簡單的單元測試套件,使用的GStreamer的內置Check frameworkGstCheck module

// This header will include some GStreamer-specific test utilities, as well as 
// the internal Check API 
#include <gst/check/gstcheck.h> 

// Surround your tests with the GST_START_TEST and GST_END_TEST macros, then 
// use the GstCheck and Check APIs 
GST_START_TEST(my_test) 
{ 
    ck_assert(0); 
} 
GST_END_TEST; 

// This is a suite initialization function where you should register your tests. 
// It must end with "_suite" and traditionally starts with your plugin's 
// namespace. 
Suite *gst_myplugin_suite(void) { 
    Suite *s = suite_create("GstMyPlugin"); 
    TCase *tc = tcase_create("general"); 
    tcase_add_test(tc, my_test); 
    // Add more tests with tcase_add_test(tc, test_function_name) 
    suite_add_tcase(s, tc); 
    return s; 
} 

// This generates an entry point that executes your test suite. The argument 
// should be the name of your suite intialization function without "_suite". 
GST_CHECK_MAIN(gst_myplugin); 

在構建你的測試,你需要用你的插件*和鏈接gstcheck-1.0庫。使用pkg-config可以使事情變得更加容易:

gcc -o gstmyplugintests `pkg-config --cflags --libs gstreamer-check-1.0` gstmyplugin.so gstmyplugintests.c 

當運行測試,記得告訴GStreamer的哪裏尋找你的插件:

GST_PLUGIN_PATH=. ./gstmyplugintests 

這應該是所有有它!

*編輯:實際上,如果你的測試訪問它的內部數據結構和功能,你只需要連接你的插件。