diff options
| -rw-r--r-- | media/libstagefright/CameraSource.cpp | 12 | 
1 files changed, 12 insertions, 0 deletions
diff --git a/media/libstagefright/CameraSource.cpp b/media/libstagefright/CameraSource.cpp index 66280da..ed3d520 100644 --- a/media/libstagefright/CameraSource.cpp +++ b/media/libstagefright/CameraSource.cpp @@ -298,6 +298,12 @@ status_t CameraSource::isCameraColorFormatSupported(      return OK;  } +static int32_t getHighSpeedFrameRate(const CameraParameters& params) { +    const char* hsr = params.get("video-hsr"); +    int32_t rate = (hsr != NULL && strncmp(hsr, "off", 3)) ? atoi(hsr) : 0; +    return rate > 240 ? 240 : rate; +} +  /*   * Configure the camera to use the requested video size   * (width and height) and/or frame rate. If both width and @@ -350,6 +356,10 @@ status_t CameraSource::configureCamera(                  params->get(CameraParameters::KEY_SUPPORTED_PREVIEW_FRAME_RATES);          CHECK(supportedFrameRates != NULL);          ALOGV("Supported frame rates: %s", supportedFrameRates); +        if (getHighSpeedFrameRate(*params)) { +            ALOGI("Use default 30fps for HighSpeed %dfps", frameRate); +            frameRate = 30; +        }          char buf[4];          snprintf(buf, 4, "%d", frameRate);          if (strstr(supportedFrameRates, buf) == NULL) { @@ -451,6 +461,8 @@ status_t CameraSource::checkFrameRate(          ALOGE("Failed to retrieve preview frame rate (%d)", frameRateActual);          return UNKNOWN_ERROR;      } +    int32_t highSpeedRate = getHighSpeedFrameRate(params); +    frameRateActual = highSpeedRate ? highSpeedRate : frameRateActual;      // Check the actual video frame rate against the target/requested      // video frame rate.  | 
