|
From: Takashi N. <nak...@ni...> - 2013-04-03 12:43:28
|
中島です。 3月末はバタバタしてましたがまた戻ってきました。 (2013年03月21日 23:47), Kouhei Sutou wrote: > とりあえず、Gst::Bufferはwritableになるようにしました。 > が、そのあとのadapterにpushしたバッファーをtakeしていくやつ > を使うとクラッシュします。これは、adapterがtakeすると、デー > タの所有者をバッファーからadapterに変えないといけない(バッ > ファーは所有権を手放さないといけない)のですが、今はそこらへ > んに対応できていなくて、バッファーもadapterもデータを開放し > ようとしてクラッシュします。 > > 所有権周りをごにょごにょすればいいんですが、それをいい感じに > するにはもう少し作業が必要そうなので途中報告でした。。。 対応ありがとうございます! 今pull --rebaseして試してみましたが、 git masterへの反映はまだですよね? 同じようだったので。 ところで、私の環境ではadapter_test.rbのtakeメソッドに別の問題が出ています。 Cの方ではGstAdapterのtake関数は gpointer gst_adapter_take (GstAdapter *adapter, gsize nbytes); と定義してあって、明らかにnbytesはinputだと思うのですが、 私の環境(Fedora 18)ではGstBase-1.0.girのAdapterクラス、 takeメソッドの定義に <parameters> <parameter name="nbytes" direction="out" caller-allocates="0" transfer-ownership="full"> <doc xml:whitespace="preserve">the number of bytes to take</doc> <type name="gsize" c:type="gsize"/> </parameter> </parameters> なんて書いてあります。ここでdirectionが"out"なためだと思うのですが、 Rubyでgi経由で data = @adapter.take(params.read_size) のようにtakeを呼ぶと /home/nakajima/Projects/ruby/gtk/ruby-gnome2/gobject-introspection/lib/gobject-introspection/loader.rb:221:in `validate_arguments': Gst::Adapter#take: wrong number of arguments (1 for 0) (ArgumentError) といったエラーになってしまいます。 私のところだけなんでしょうか? |