Adding Hardware Decoding

This version adds hardware decoding and uses it by default instead of
FFmpeg. I will let user choose to use hw-decoding or FFmpeg in the later
version.