VideoPtr Video::Create(StreamPtr stream, MessageCallback messageCallback, IAudioDevicePtr audioDevice) { static bool initialized = false; if(!initialized) av_register_all(); CVideo* video = new CVideo(messageCallback); av_log_set_callback(CVideo::logCb); av_log_set_level(AV_LOG_WARNING); try { video->openFile(stream, audioDevice); } catch(VideoException e){ delete video; throw e; } return VideoPtr(video); }