1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GStreamerAdvent Calendar 2016

Day 1

プロパティが変更されたことをBus messageから知る (GStreamer 1.10)

Last updated at Posted at 2016-11-30

アドベントカレンダー1日目 ~ 3日目までは、私が GStreamer 1.10 で実装された
新APIのハンズオン?使ってみた?をやろうと思います。

1日目はリリースノート先頭に書かれている、こちら(↓)の機能

Receive property change notifications via bus messages

New API was added to receive element ... (長いので省略)

Bus message経由でプロパティの変更通知を受け取るというものです。

今まではプロパティの値が変わったことを知るために、GObject APIのsignalを使ったcallbackを書く必要があったわけです。
しかし、この方法はGStreamerとしてはあまりきれいではないものでした。

それは、Pipeline(Element)→Applicationの通知は、Elementの状態遷移(GST_STATE)を伝える時のように、「ElementがBusにMessageを流し、Applicationがこれをフックする」というの流れが基本だからです。

communication

新しく実装されたこのAPIによって Element -> Bus -> Application の正しい?(理想的な?)流れで通知を渡せるようになりました。

サンプルコード

そこで、gst-element-add-property-notify-watch を使ったサンプルを書いてみました。

実行画面

Ctrl-CのSIGINTにより、videoratemax-rateを10<->30と切り替えるものです。
アプリケーションスレッドからプロパティを書き換えと、Bus経由で変わったことが伝わってくるのが見えます。

ソースコードは Gist に貼ってます。
https://gist.github.com/shocrunch/a764b64adb52c47751b1c1114c503e15b

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?