/**
  * @return X_RtmpDumpOwn3d
  */
 public static function getInstance()
 {
     if (self::$instance === null) {
         self::$instance = new X_RtmpDumpOwn3d();
     }
     return self::$instance;
 }
 public function doStop($threadInfo)
 {
     // this should be "->shutdown()"
     X_RtmpDumpOwn3d::getInstance()->forceKill();
     // wait few seconds
     sleep(2);
     //TODO tweak value better
 }
 private function getEngineUrl($cdn, $playpath, $pageUrl)
 {
     $params = array();
     switch ($cdn) {
         case '${cdn1}':
         case '${cdn2}':
             $cdn = $this->convertCDNUrl($cdn);
             $url = "{$cdn}?{$playpath}";
             break;
         default:
             $url = $cdn;
             break;
     }
     $params['rtmp'] = $url;
     $params['playpath'] = $playpath;
     $params['live'] = true;
     $params['swfVfy'] = true;
     $params['swfUrl'] = self::PLAYER_URL;
     $params['pageUrl'] = $pageUrl;
     return X_RtmpDumpOwn3d::buildUri($params);
 }