デバイスコンソール画面のポリゴン座標設定で設定した情報をEMCustomへ渡す方法

54 views
Skip to first unread message

w. ito

unread,
Mar 2, 2023, 4:41:31 AM3/2/23
to EDGEMATRIX Stream Toolkit Forum
お世話になっております。

表題の件につきまして、
デバイスコンソール画面の機能として、ポリゴン座標設定画面からGUIで任意の多角計を描画し、その座標情報をEAPのコールバック関数へ渡すことができると認識しています。
この情報をEMCustomにも渡し、そちらで処理を行いたいのですがそういったことは可能でしょうか。
可能な場合、どのように渡せばいいのかご教示いただけますでしょうか。

ts...@edgematrix.com

unread,
Mar 6, 2023, 7:07:14 PM3/6/23
to EDGEMATRIX Stream Toolkit Forum, w. ito
お世話になっております。

> デバイスコンソール画面の機能として、ポリゴン座標設定画面から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:

w. ito

unread,
Mar 15, 2023, 2:46:41 AM3/15/23
to EDGEMATRIX Stream Toolkit Forum, ts...@edgematrix.com, w. ito
回答いただきありがとうございます。

callback→EMCustomへはcallbackのreturnに3つ目の返却値を追加することで情報を渡すことが可能となること、承知いたしました。

> EMCustomからcallbackへは通常のsignal経由で渡すことができますが、
> callbackからEMCustomへ何らかの情報を渡したい、ということですね?
すみません、callbackを経由するのは必須ではなく、できればEMCustomに直接情報を渡したいです。
なので追加の質問で恐縮ですが
・callbackを介さずに直接GUIの座標情報をEMCustomに渡す方法はありますでしょうか。
・pipelineの順番としてはEMCustom→callbackの順に処理される認識ですが、callback→EMCustomへの処理はフレームをまたがって行われるということでしょうか。
 上記が正しい場合、アプリ実行後の1フレーム目にはEMCustomに情報が渡ってこないのかと思いますが合っていますでしょうか。
2023年3月7日火曜日 9:07:14 UTC+9 ts...@edgematrix.com:

ts...@edgematrix.com

unread,
Mar 15, 2023, 2:51:23 AM3/15/23
to EDGEMATRIX Stream Toolkit Forum, w. ito, ts...@edgematrix.com
> できればEMCustomに直接情報を渡したいです。
...
> アプリ実行後の1フレーム目にはEMCustomに情報が渡ってこないのかと思いますが合っていますでしょうか。

その場合ですと、以下に回答した方法が良いので、ご検討ください。
EMCustomの場合も、EMPyCustom同様に設定可能です。
https://groups.google.com/a/edgematrix.com/g/edgematrixstreamtoolkit/c/cM1l_OdeTr0/m/FT3eOCeIAgAJ

2023年3月15日水曜日 15:46:41 UTC+9 w. ito:

w. ito

unread,
Mar 15, 2023, 9:19:48 AM3/15/23
to EDGEMATRIX Stream Toolkit Forum, ts...@edgematrix.com, w. ito
回答ありがとうございます。

https://groups.google.com/a/edgematrix.com/g/edgematrixstreamtoolkit/c/cM1l_OdeTr0/m/FT3eOCeIAgAJ
上記回答を踏まえるとGUIのポリゴン設定からEMCustomへ座標情報を渡すには、
 ①設定した座標情報をemcustom.optionsにコピペする
 ②設定した座標情報をcallbackで受け取り、EMCustomへ流す
の2通りがあるという理解でよろしいでしょうか。
弊社で開発中のEAPではEMCustomを多用しており、optionsで指定しているjsonが複雑なため
お客様に手入力させるのはあまりしたくなく、
できればGUIで設定した座標情報がcallbackの代わりにEMCustomへ流れてくれるとありがたいのですが
それはできないという理解でよろしいでしょうか。
2023年3月15日水曜日 15:51:23 UTC+9 ts...@edgematrix.com:

ts...@edgematrix.com

unread,
Mar 15, 2023, 7:45:45 PM3/15/23
to EDGEMATRIX Stream Toolkit Forum, w. ito, ts...@edgematrix.com
> 2通りがあるという理解でよろしいでしょうか。

はい、その通りです。

> できればGUIで設定した座標情報がcallbackの代わりにEMCustomへ流れてくれるとありがたいのですが
それはできないという理解でよろしいでしょうか。

その通りになります。

2023年3月15日水曜日 22:19:48 UTC+9 w. ito:

w. ito

unread,
Mar 15, 2023, 11:56:50 PM3/15/23
to EDGEMATRIX Stream Toolkit Forum, ts...@edgematrix.com, w. ito
回答いただきありがとうございます。

すみません、最後にもう1点ですが

・pipelineの順番としてはEMCustom→callbackの順に処理される認識ですが、callback→EMCustomへの処理はフレームをまたがって行われるということでしょうか。
 上記が正しい場合、アプリ実行後の1フレーム目にはEMCustomに情報が渡ってこないのかと思いますが合っていますでしょうか。
こちらの理解は合っていますでしょうか。

五月雨でいろいろ聞いてしまい、お手数おかけしますがなにとぞよろしくお願いいたします。

2023年3月16日木曜日 8:45:45 UTC+9 ts...@edgematrix.com:

ts...@edgematrix.com

unread,
Mar 16, 2023, 12:24:43 AM3/16/23
to EDGEMATRIX Stream Toolkit Forum, w. ito, ts...@edgematrix.com
アプリ実行後の1フレーム目にはEMCustomに情報が渡ってこないのかと思いますが合っていますでしょうか

はい。その通りです。

2023年3月16日木曜日 12:56:50 UTC+9 w. ito:

w. ito

unread,
Mar 16, 2023, 4:07:00 AM3/16/23
to EDGEMATRIX Stream Toolkit Forum, ts...@edgematrix.com, w. ito
ありがとうございます。
承知いたしました。

2023年3月16日木曜日 13:24:43 UTC+9 ts...@edgematrix.com:
Reply all
Reply to author
Forward
0 new messages