|
From: Kouhei S. <ko...@co...> - 2013-02-02 13:41:26
|
須藤です。 In <510...@ni...> "[ruby-gnome2-devel-ja] giを使ったgstreamer-1.0の初期化(loader)でエラー" on Sat, 02 Feb 2013 21:30:25 +0900, NAKAJIMA Takashi <nak...@ni...> wrote: > 先日ruby-listにアナウンスいただきましたRuby-GNOME2リリースの案内で > GObject Introspectionを利用したサンプル移植のお誘いを読ませていただき、 > 素人ながら無謀にも挑戦してみることにしました。 わぁ!ありがとうございます! > GStreamerのhelloworld.cからと思ったのですが、以下のコード2行目の > 初期化の時点でつまづいてしまい、どなたかご助言いただければ幸いです。 > > テストコード(simple.rb): > require "gst-gi" > Gst.init おぉ。。。 > 環境: > OS: Fedora 18 > Ruby: ruby 1.9.3p374 (2013-01-15 revision 38858) [x86_64-linux] > GStreamer(RPM): gstreamer1-devel-1.0.5-1.fc18.x86_64 > Gem version: > gobject-introspection (1.2.1, 1.2.0) > gtk2 (1.2.1, 1.2.0) > Ruby-GNOME2ソース: (1/27にgit clone) 手元のDebian GNU/Linux sidだと大丈夫なんですけどねぇ。 GStreamerのバージョンも1.0.5-1で同じで。。。 % dpkg -l | grep libgstreamer1.0-dev ii libgstreamer1.0-dev 1.0.5-1 amd64 GStreamer core development files > やったこと: > (1)Ruby側 > 原因が環境なのかコードなのかわかりませんが、例外が起きている場所が > gobject-introspectionのloader.loadなので、gst-gi.rbにloadメソッドを > コピーして、repositoryの列挙ループの挙動を見たところ、8番目にある > info.nameがBUFFER_COPY_ALLというところで落ちているようです。 > この箇所のgirファイル(Gst-1.0.gir)は、以下のようなものでした。 > <constant name="BUFFER_COPY_ALL" value="0" c:type="GST_BUFFER_COPY_ALL"> > <type name="BufferCopyFlags" c:type="GstBufferCopyFlags"/> > </constant> sidのGst-1.0.girだと↑がないんですよねぇ。 念のため、GStreamerのリポジトリの最新版を手元でビルドしてみ たのですが、それにも↑は入っていませんでした。Fedoraではどう して入っているのかしら。。。 > (2)C側 > ライブラリ側のソースを追いかけながら、見よう見まねで別にCコードを > 書いてrepositoryを叩いてみたところ、上記BUFFER_COPY_ALLのデータは > 以下のように見えました。 > 1)列挙したGIBaseInfoをg_base_info_get_typeでGIInfoTypeを取ると > GI_INFO_TYPE_CONSTANT。 > 2)そこからg_constant_info_get_typeでGITypeInfoを取ると > GI_TYPE_TAG_INTERFACE。 > 3)GITypeInfoからg_type_info_get_interfaceでGIBaseInfoを取り、 > さらにg_base_info_get_typeでGIInfoTypeを取ると > GI_INFO_TYPE_FLAGS。 > Rubyクラスを作るところまで追いたかったのですが、迷ってしまい > 力尽きました... いえいえ! ここまで調べてもらってありがとうございます! もしよかったら、3)で取ってきたGIInfoTypeに g_registered_type_info_get_g_type()して、これのGTypeを調べて もらえませんか? GTypeがとれたらg_type_name()でGTypeの名前が見れるのでそれを 教えてもらいたいです。 g_type_name(): http://developer.gnome.org/gobject/stable/gobject-Type-Information.html#g-type-name 本当はGstBufferCopyFlagsになっていて欲しいのですが、それが違 うのになっているんじゃないかと思っています。 |