|
From: Kouhei S. <ko...@co...> - 2013-05-05 14:16:53
|
須藤です。 In <518...@ni...> "Re: [ruby-gnome2-devel-ja] GStreamerサンプルsteppingのappsink使用方法について" on Sat, 04 May 2013 23:12:46 +0900, Takashi Nakajima <nak...@ni...> wrote: >> masterで対応したのでpull --rebaseしてglib2と >> gobject-introspectionをmakeしてください。今回の対応のために >> これらも変更しています。 > > ありがとうございます、ブロックしなくなりました! よかったです! > ただちょっと問題があって... > Cコードの方はpauseをかけたあと、当該の > gst_element_get_state(bin, &state, &pending, -1) > で > state = 3(PAUSED), pending = 0(NULL) > が返ってくるのに対して、Rubyコード > state, pending = bin.get_state(Gst::CLOCK_TIME_NONE) > では > state = 1(READY), pending = 3(PAUSED) > が返ってきます。 あ、これは、stateとpendingだけじゃなく、GstStateChangeReturn も返っているのです。なので、 state_change_return, state, pending = bin.get_state(Gst::CLOCK_TIME_NONE) とすると期待した動きになります。 http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-get-state みたいに、Cで戻り値と出力引数があるときは [戻り値, 出力引数1, 出力引数2, ...] というのがRubyの戻り値になります。 > あと質問です。Gst::Eventにnew_stepコンストラクタがないようですが、 > Gst::Event.new()の引数の型が合っていれば、new_stepを選択してくれる > のでしょうか? はい!そうです! |