class MpegFrame
	def initialize(buf)
		@buf = buf.unpack("B*").first
	end

	def valid_frame?
		@buf[0..10] == "11111111111"
	end

	def mpeg_version
		case @buf[11..12]
		when "00"
			"MPEG version 2.5"
		when "01"
			"reserved/invalid"
		when "10"
			"MPEG version 2"
		when "11"
			"MPEG version 1"
		else
			"invalid"
		end
	end

	def mpeg_layer
		case @buf[13..14]
		when "00"
			"reserved/invalid"
		when "01"
			"Layer 3"
		when "10"
			"Layer 2"
		when "11"
			"Layer 1"
		else
			"invalid"
		end
	end

	def protected?
		@buf[15, 1] == "1"
	end
end

frame = MpegFrame.new(IO.read(ARGV.first, 2))

puts <<EOF
frame sync:   #{frame.valid_frame?}
mpeg version: #{frame.mpeg_version}
mpeg layer:   #{frame.mpeg_layer}
protected?    #{frame.protected?}
EOF

