0
我打算在NPAPI插件中調用gstreamer函數,但是我發現當我在插件中調用方法「gst_init」時,它總是失敗!不管我在新線程或子進程中調用它,它都無法通過。所以我想知道如何以正確的方式調用gst_init函數? :)如何調用NPAPI中的gstreamer函數
例如:
Javascript代碼:obj.play();
obj是插件NPObject。
static void* play(void *) {
GMainLoop *loop;
GstElement *pipeline,*source,*decoder,*sink;
GstBus *bus;
gst_init(NULL, NULL);
...
}
bool plugin_invoke(NPObject *obj, NPIdentifier methodName, const NPVariant *args, uint32_t argCount, NPVariant *result) {
NPUTF8 *name = sBrowserFuncs->utf8fromidentifier(methodName);
if (strcmp(name, plugin_method_name_gs) == 0) {
...
pthread_t tid = 0;
int ret = 10000;
ret = pthread_create(&tid, NULL, play, NULL);
...
return true;
}
sBrowserFuncs->memfree(name);
return false;
}
您確定可以從非主線程調用'gst_init()'嗎?如果失敗,控制檯或日誌中是否有錯誤?請注意,還有一個'gst_init_check()'用於優雅的失敗,並且您可能不想在每次調用play()時調用'gst_init()'。 –
我曾嘗試在主線程,另一個線程和子進程(通過fork())調用gst_init(),但都失敗了。不,我不想在每個play()的calll上調用gst_init(),這裏只是一個測試,看它是否可以成功。 – darkwind
我只是在Chrome和Firefox中測試這個插件,它是發佈版本,我只能捕獲除瀏覽器日誌以外的插件日誌。 – darkwind