Sha256: cdeaf5934ff94e2e4365ca747c7392b67c53425f2ff1560d94561dbe640b8dd8

Contents?: true

Size: 1015 Bytes

Versions: 2

Compression:

Stored size: 1015 Bytes

Contents

require 'forwardable'
require 'ffi/libav'
require 'libav/version'
require 'libav/frame'
require 'libav/stream'
require 'libav/reader'

module Libav

  private

  @@registered_all = false
  def self.register_all
    return if @@registered_all
    FFI::Libav.av_register_all
    @@registered_all = true
  end
end

class String
  def hexdump
    buf = ""
    offset = 0
    words = self.unpack("N%d" % (self.length/4.0).ceil)
    until words.empty?
      line = words.shift(4).compact
      buf += sprintf("[%04x] " + ("%08x " * line.size) + "|%s|\n", 
                     offset * 16, *line, 
                     line.pack("N%d" % line.size).tr("^\040-\176","."))
      offset += 1
    end
    buf
  end unless String.instance_methods.include? :hexdump
end

class FFI::Struct
  def to_hash
    return {} if pointer.null?

    members.inject({}) { |h,k| h[k] = send(:[], k); h }
  end unless FFI::Struct.instance_methods.include? :to_hash

  def to_hexdump
    self.pointer.read_bytes(self.size).hexdump
  end
end


Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ffi-libav-0.3.0 lib/ffi-libav.rb
ffi-libav-0.2.0 lib/ffi-libav.rb