add audio support and getopt