Ruby-FFI
これまでの各記事は、以下から。 ニコニコ動画のダウンロードツールを改良してみた。(その1) - いものやま。 ニコニコ動画のダウンロードツールを改良してみた。(その2) - いものやま。 ということで、最終的なコードは、以下。 実のところ、ここまで来…
昨日の続き。 今日は、アプリケーション側のコードを実装していく。 中断ファイルの処理 中断ファイルから中断時の情報を取り出す必要があるので、それに関するコードをまず用意。 最初に、中断情報を表す構造体を定義しておく。 module NicovideoDL module …
ということで、以前作ったニコニコ動画のダウンロードツールを改良し、RTMPで配信されている動画をダウンロードするときにも進捗度合いがわかるようにしてみた。 まず、ニコニコ動画のダウンロードツールをRubyで書いた話は、以下から。 そして、これを改善…
これまでの各記事は、以下から。 Ruby-FFIについて調べてみた。(その1) - いものやま。 Ruby-FFIについて調べてみた。(その2) - いものやま。 Ruby-FFIについて調べてみた。(その3) - いものやま。 Ruby-FFIについて調べてみた。(その4) - いものや…
残すはFFI::MemoryPointerの話のみ。 OUT引数 Cのインタフェースを設計するときに、関数にポインタを渡し、ポインタを介することで関数の出力を受け取るようにするということがよくある。 例えば、次のようなコードが一例。 /* rbuf.h */ typedef struct _ri…
昨日の続き。 いよいよCインタフェースとの結びつけをやっていく。 グローバル変数の結びつけ グローバル変数の結びつけを行うには、FFI::Library#attach_variableを使う。 そうすると、グローバル変数にアクセスするアクセサメソッドが使えるようになる。 a…
昨日の続き。 Ruby-FFIのコア・コンポーネント Ruby-FFIを理解する上で、重要なクラス、モジュールがいくつかある。 FFI::Library ライブラリのロードや、グローバル変数、関数を結びつける機能などを提供する。 FFI::Pointer ライブラリで確保されたネイテ…
ニコニコ動画のダウンロードツールを作ってみたものの、ちょっと不満点が。 それは何かと言うと、RTMPで配信されている動画をダウンロードする場合、 ダウンロードの進捗が細かく表示されない ダウンロードの進捗度合いが分からない というもの。 これは、ダ…