class Falcon::Profile

def [](name)

def [](name)
  find(name)
end

def audio_bitrate_in_bits

def audio_bitrate_in_bits
  self.audio_bitrate.to_i * 1024
end

def detect(name)

def detect(name)
  name.is_a?(Falcon::Profile) ? name : find(name.to_s)
end

def encode_options

def encode_options
  { 
    :container => self.container, 
    :video_codec => self.video_codec,
    :video_bitrate_in_bits => self.video_bitrate_in_bits.to_s, 
    :fps => self.fps,
    :audio_codec => self.audio_codec.to_s, 
    :audio_bitrate => self.audio_bitrate.to_s, 
    :audio_bitrate_in_bits => self.audio_bitrate_in_bits.to_s, 
    :audio_sample_rate => self.audio_sample_rate.to_s
  }
end

def exists?(name)

def exists?(name)
  !find(name).nil?
end

def find(name)

def find(name)
  @@all.detect { |p| p.name == name.to_s } 
end

def initialize(name, options = {})

def initialize(name, options = {})
  options.assert_valid_keys(DEFAULTS.keys)
  options = DEFAULTS.merge(options)
  
  @name = name.to_s
  
  if self.class.exists?(@name)
    raise "Profile name: #{@name} already registered."
  end
  
  options.each do |key, value|
    send("#{key}=", value)
  end
  
  @@all << self
end

def path(source, prefix = nil)

def path(source, prefix = nil)
  dirname = File.dirname(source)
  filename = File.basename(source, File.extname(source))
  filename = [prefix, filename].compact.join('_') + '.' + extname
  
  Pathname.new(File.join(dirname, filename))
end

def update(options)

def update(options)
  options.each do |key, value|
    send("#{key}=", value)
  end
end

def video_bitrate_in_bits

def video_bitrate_in_bits
  self.video_bitrate.to_i * 1024
end