Created
October 22, 2012 08:55
-
-
Save mk0x9/3930461 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'ffi' | |
class ASS_Event < FFI::Struct | |
layout :start, :long_long, | |
:duration, :long_long, | |
:readOrder, :int, | |
:layer, :int, | |
:style, :int, | |
:name, :string, | |
:marginL, :int, | |
:marginR, :int, | |
:marginV, :int, | |
:effect, :string, | |
:text, :string, | |
:render_priv, :pointer | |
end | |
class ASS_Track < FFI::Struct | |
layout :n_styles, :int, | |
:max_styles, :int, | |
:n_events, :int, | |
:max_events, :int, | |
:styles, :pointer, | |
:events, :pointer | |
end | |
def cast_to_ass_track pointer | |
ASS_Track.new pointer | |
end | |
def cast_to_ass_event pointer | |
ASS_Event.new pointer | |
end | |
def get_event ass_track, num | |
cast_to_ass_event ass_track[:events] + ASS_Event.size * num | |
end | |
module Ass | |
extend FFI::Library | |
ffi_lib ['ass'] | |
attach_function :ass_library_init, [], :pointer | |
attach_function :ass_read_file, [:pointer, :string, :uint], :pointer | |
attach_function :ass_free_track, [:pointer], :void | |
attach_function :ass_library_done, [:pointer], :void | |
end | |
ass_library = Ass.ass_library_init | |
ptr = Ass.ass_read_file ass_library, './sao16.ass', 0 | |
ass_track = cast_to_ass_track ptr | |
puts "Lines: #{ass_track[:n_events]}" | |
for i in 0..ass_track[:n_events] - 1 | |
puts (get_event ass_track, i)[:text] | |
end | |
Ass.ass_free_track ass_track | |
Ass.ass_library_done ass_library |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment