お世話になっております。
> デバイスコンソール画面の機能として、ポリゴン座標設定画面からGUIで任意の多角計を描画し、その座標情報をEAPのコールバック関数へ渡すことができると認識しています。
> この情報をEMCustomにも渡し、そちらで処理を行いたいのですがそういったことは可能でしょうか。
EMCustomからcallbackへは通常のsignal経由で渡すことができますが、
callbackからEMCustomへ何らかの情報を渡したい、ということですね?
公開されていないのですが、可能です。
方法は、returnで第三の返却値を渡します。
return events, debug_string, emcustom_events
この第三の返却値は、任意の文字列で、例えば以下のようなものです。
emcustom_events = "{\"shared_int\": %i}" % shared_int
この例の場合は、callback => EMCustom => callback => EMCustom ...を繰り返し行うものですが、
これを受け取るEMCustom側は、processまたはprocess_ipのeventsで受け取ることができます。
shared_intの例では、以下のような実装になります。
void
process_ip (struct video_data *io_buffer, const char *in_meta, char **out_meta,
const char *options, const char *events, GstBuffer * buffer)
{
JsonNode *events_node;
GError *error = NULL;
/* Parse events */
gint shared_int = 0;
if (events) {
events_node = json_from_string (events, &error);
if (error) {
g_print ("ERROR in JSON parsing: %s", error->message);
g_error_free (error);
return;
} else {
shared_int =
json_object_get_int_member (json_node_get_object (events_node),
"shared_int");
}
}
/* Use the shared variable */
printf ("emcustom got shared int: %i and incremented its value\n",
shared_int);
shared_int++;
/* Write events back */
*out_meta = g_strdup_printf ("{\"meta\":{\"shared_int\":%d}}", shared_int);
if (events) {
json_node_unref (events_node);
}
}
2023年3月2日木曜日 18:41:31 UTC+9 w. ito: