Camera implementation using AVFoundation