0

2つの入力を持つgstreamerプラグインがあり、それらを処理する関数は1つだけです。入力の1つはchar*で、もう1つは構造体です。

入力バッファのデータ型をテストする方法はありますか?

何かのようなもの:

chain_function(GstBuffer)
{
   if(GST_BUFFER_DATA(buffer) is mystruct)
      do something... 
   elseif(GST_BUFFER_DATA(buffer) is char*)
      do something else
}
4

3 に答える 3

0

実際に gstreamer を使用したことはありません。しかし、GstBuffer のドキュメントから、使用する関数はGstBuffer のメタデータを設定および取得するgst_buffer_set_qdata()ためのものだと思います。gst_buffer_get_qdata()次に、型を表すそれぞれの GstBuffer にメタデータを割り当て、関数でメタデータを取得し、これらをそれぞれのデータ型に一致させます。

于 2012-08-02T20:57:59.743 に答える
0

プラグインにどのようなデータを供給していますか? とにかく、すでに指摘されているように、入力 (パッド) で GstBuffer オブジェクトを受け取ります。各 GstBuffer には、実際のデータとメタデータが含まれていました。メタデータは、タイムスタンプや期間などですが、上限もあります。大文字はデータ形式を表します。キャップをチェックして、送信されたデータの処理方法を確認できます。

既に定義されているフォーマット以外のもの (オーディオ/ビデオ/テキストなど) を送信する場合は、"application/x-" などの独自のキャップを設定する必要があります。これが必要になることはめったにないため、何をしたいのかを説明することをお勧めします。

于 2012-08-03T20:02:24.280 に答える
0

C++ の場合、共通の階層を共有していればdynamic_castを使用できます。

于 2012-08-02T19:47:16.657 に答える