/**
  * @param KalturaConvertJobData $data
  * @param string $errMessage
  * @return number
  */
 public function parse(KalturaConvertJobData &$data, &$errMessage)
 {
     $sendData = new KEncodingComData();
     $sendData->setUserId($this->getUserId());
     $sendData->setUserKey($this->getUserKey());
     $sendData->setAction(KEncodingComData::ACTION_GET_STATUS);
     $sendData->setMediaId($data->remoteMediaId);
     $err = null;
     $requestXml = $sendData->getXml();
     $responseXml = $this->sendRequest($requestXml, $err);
     if (!$responseXml) {
         $errMessage = "Error: {$err}";
         return KalturaBatchJobStatus::ALMOST_DONE;
     }
     preg_match('/\\<status\\>([\\w\\s]*)\\<\\/status\\>/', $responseXml, $status);
     $status = isset($status[1]) ? $status[1] : null;
     if (!$status) {
         $errMessage = 'status not found';
         return KalturaBatchJobStatus::ALMOST_DONE;
     }
     if (strtolower($status) == "error") {
         preg_match_all('/\\<description\\>([^<]*)\\<\\/description\\>/', $responseXml, $description);
         $errMessage = implode("\n", $description[1]);
         return KalturaBatchJobStatus::FAILED;
     }
     if (strtolower($status) != "finished") {
         $errMessage = $status;
         return KalturaBatchJobStatus::ALMOST_DONE;
     }
     preg_match('/\\<s3_destination\\>(.*)\\<\\/s3_destination\\>/', $responseXml, $s3_destination);
     $s3_destination = isset($s3_destination[1]) ? $s3_destination[1] : null;
     $data->destFileSyncRemoteUrl = $s3_destination;
     $errMessage = "Remote url: {$s3_destination}";
     return KalturaBatchJobStatus::FINISHED;
 }
 public function convertJob(KalturaConvertJobData &$data)
 {
     $sendData = new KEncodingComData();
     $sendData->setFormatTurbo('yes');
     $sendData->setUserId($this->getUserId());
     $sendData->setUserKey($this->getUserKey());
     $sendData->setAction(KEncodingComData::ACTION_ADD_MEDIA);
     $sendData->setSource($this->getSrcRemoteUrlFromData($data));
     switch ($data->flavorParamsOutput->videoCodec) {
         case KalturaVideoCodec::NONE:
             $sendData->setFormatOutput('mp3');
             //$sendData->setFormatVideoCodec('none');
             break;
         case KalturaVideoCodec::VP6:
             $sendData->setFormatOutput('flv');
             $sendData->setFormatVideoCodec('vp6');
             break;
         case KalturaVideoCodec::FLV:
             $sendData->setFormatOutput('flv');
             $sendData->setFormatVideoCodec('vp6');
             break;
         case KalturaVideoCodec::H263:
             return array(false, "Do not support H263");
             $sendData->setFormatOutput('3gp');
             $sendData->setFormatVideoCodec('h263');
             break;
         case KalturaVideoCodec::H264:
             $sendData->setFormatOutput('mp4');
             $sendData->setFormatVideoCodec('libx264');
             break;
     }
     $sendData->setFormatBitrate($data->flavorParamsOutput->videoBitrate);
     if (!$data->flavorParamsOutput->width) {
         $data->flavorParamsOutput->width = '0';
     }
     if (!$data->flavorParamsOutput->height) {
         $data->flavorParamsOutput->height = '0';
     }
     $sendData->setFormatSize($data->flavorParamsOutput->width . 'x' . $data->flavorParamsOutput->height);
     $sendData->setFormatKeyFrame($data->flavorParamsOutput->gopSize);
     $sendData->setFormatFramerate($data->flavorParamsOutput->frameRate);
     $sendData->setFormatAudioBitrate($data->flavorParamsOutput->audioBitrate);
     $sendData->setFormatCbr("no");
     if ($data->flavorParamsOutput->twoPass) {
         $sendData->setFormatTwoPass("yes");
     } else {
         $sendData->setFormatTwoPass("no");
     }
     $err = null;
     $requestXml = $sendData->getXml();
     $responseXml = $this->sendRequest($requestXml, $err);
     if (!$responseXml) {
         return array(false, $err);
     }
     if (preg_match('/\\<errors\\>(.+)\\<\\/errors\\>/i', $responseXml, $arr)) {
         $err = isset($arr[1]) ? $arr[1] : $responseXml;
         return array(false, $err);
     }
     if (preg_match('/\\<mediaid\\>(\\w*)\\<\\/mediaid\\>/i', $responseXml, $arr)) {
         $media_id = isset($arr[1]) ? $arr[1] : null;
         if (!$media_id) {
             return array(false, "media id was not returned");
         }
         $data->remoteMediaId = $media_id;
         return array(true, "Remote Media Id: {$media_id}");
     }
     return array(false, $responseXml);
 }