|
From: NAKAJIMA T. <nak...@ni...> - 2013-02-02 14:31:37
|
須藤様 中島です。返信ありがとうございます。 > もしよかったら、3)で取ってきたGIInfoTypeに > g_registered_type_info_get_g_type()して、これのGTypeを調べて > もらえませんか? > GTypeがとれたらg_type_name()でGTypeの名前が見れるのでそれを > 教えてもらいたいです。 やってみたところ、g_type_name()では void と表示されました。環境が悪いみたいですね。 > sidのGst-1.0.girだと↑がないんですよねぇ。 > 念のため、GStreamerのリポジトリの最新版を手元でビルドしてみ > たのですが、それにも↑は入っていませんでした。Fedoraではどう > して入っているのかしら。。。 Fedoraだから... いや私のせいかもしれないし(^^;) ごめんなさい、GStreamerを修復してからリトライすることにします。 (2013年02月02日 22:41), Kouhei Sutou wrote: > 須藤です。 > > 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になっていて欲しいのですが、それが違 > うのになっているんじゃないかと思っています。 > > ------------------------------------------------------------------------------ > Everyone hates slow websites. So do we. > Make your web apps faster with AppDynamics > Download AppDynamics Lite for free today: > http://p.sf.net/sfu/appdyn_d2d_jan > _______________________________________________ > ruby-gnome2-devel-ja mailing list > rub...@li... > https://lists.sourceforge.net/lists/listinfo/ruby-gnome2-devel-ja |