diff options
author | Andriy Chepurnyy <x0155536@ti.com> | 2013-01-10 14:18:14 +0200 |
---|---|---|
committer | Hashcode <hashcode0f@gmail.com> | 2015-02-03 13:38:43 -0800 |
commit | 8736cdb17c995e83399ba0604d52f007439afcee (patch) | |
tree | a965abf7fcf7ebbeeb623a4c3f535ed7f2a6a4de /camera/OMXCameraAdapter | |
parent | 36abd1f5030c36d32b7d139e0989b04c7c02fa9c (diff) | |
download | hardware_ti_omap4-8736cdb17c995e83399ba0604d52f007439afcee.tar.gz hardware_ti_omap4-8736cdb17c995e83399ba0604d52f007439afcee.tar.bz2 hardware_ti_omap4-8736cdb17c995e83399ba0604d52f007439afcee.zip |
CameraHal: Correctly set preview framerate
Since Camera API supports 2 mechanisms that
used to set FPS : setPreviewFpsRange and setPreviewFrameRate
HAL should correctly handle situation when only one
of that call were made. CameraHAL should not
modify fps range or fps that was set by client,
but it should inform camera adpter somehow what
exactly was modified and what value should be used
for configuration of preview port. So therefore
new paramter KEY_PREVIEW_FRAME_RATE_RANGE was added.
Now it will be used by camera adapters for
preview configuration and camera hal will be
capable for value of this parameter.
Possible situations:
1) User had changed FPS range and HAL will use it for fps port
value (don't care about changed or not const FPS).
2) User had changed single FPS and had not changed FPS
range - will be applyed single FPS value to port.
3) Both FPS range and const FPS are unchanged - FPS range
will be applied to port.
This patch also fixed several CTS tests from
android.media.cts.MediaRecorderTest : testRecorderCamera,
testRecorderVideo, testSetMaxFileSize.
Change-Id: I31badcdc62a1a33474cb8e0e893f50378e9f6114
Signed-off-by: Andriy Chepurnyy <x0155536@ti.com>
Diffstat (limited to 'camera/OMXCameraAdapter')
-rw-r--r-- | camera/OMXCameraAdapter/OMXCameraAdapter.cpp | 69 |
1 files changed, 25 insertions, 44 deletions
diff --git a/camera/OMXCameraAdapter/OMXCameraAdapter.cpp b/camera/OMXCameraAdapter/OMXCameraAdapter.cpp index 75bde38..47e245c 100644 --- a/camera/OMXCameraAdapter/OMXCameraAdapter.cpp +++ b/camera/OMXCameraAdapter/OMXCameraAdapter.cpp @@ -594,56 +594,37 @@ status_t OMXCameraAdapter::setParameters(const android::CameraParameters ¶ms params.getPreviewSize(&w, &h); frameRate = params.getPreviewFrameRate(); - params.getPreviewFpsRange(&minFramerate, &maxFramerate); + + const char *frameRateRange = params.get(TICameraParameters::KEY_PREVIEW_FRAME_RATE_RANGE); + bool fpsRangeParsed = CameraHal::parsePair(frameRateRange, &minFramerate, &maxFramerate, ','); + CAMHAL_ASSERT(fpsRangeParsed); + minFramerate /= CameraHal::VFR_SCALE; maxFramerate /= CameraHal::VFR_SCALE; - if ( ( 0 < minFramerate ) && ( 0 < maxFramerate ) ) { - if ( minFramerate > maxFramerate ) { - CAMHAL_LOGEA(" Min FPS set higher than MAX. So setting MIN and MAX to the higher value"); - maxFramerate = minFramerate; - } - if ( 0 >= frameRate ) { - frameRate = maxFramerate; - } + frameRate = maxFramerate; - if ( ( cap->mMinFrameRate != (OMX_U32) minFramerate ) || - ( cap->mMaxFrameRate != (OMX_U32) maxFramerate ) ) { - cap->mMinFrameRate = minFramerate; - cap->mMaxFrameRate = maxFramerate; - setVFramerate(cap->mMinFrameRate, cap->mMaxFrameRate); - } + if ( ( cap->mMinFrameRate != (OMX_U32) minFramerate ) || + ( cap->mMaxFrameRate != (OMX_U32) maxFramerate ) ) { + cap->mMinFrameRate = minFramerate; + cap->mMaxFrameRate = maxFramerate; + setVFramerate(cap->mMinFrameRate, cap->mMaxFrameRate); } - if ( 0 < frameRate ) - { - cap->mColorFormat = pixFormat; - cap->mWidth = w; - cap->mHeight = h; - cap->mFrameRate = frameRate; - - CAMHAL_LOGVB("Prev: cap.mColorFormat = %d", (int)cap->mColorFormat); - CAMHAL_LOGVB("Prev: cap.mWidth = %d", (int)cap->mWidth); - CAMHAL_LOGVB("Prev: cap.mHeight = %d", (int)cap->mHeight); - CAMHAL_LOGVB("Prev: cap.mFrameRate = %d", (int)cap->mFrameRate); - - //TODO: Add an additional parameter for video resolution - //use preview resolution for now - cap = &mCameraAdapterParameters.mCameraPortParams[mCameraAdapterParameters.mPrevPortIndex]; - cap->mColorFormat = pixFormat; - cap->mWidth = w; - cap->mHeight = h; - cap->mFrameRate = frameRate; - - CAMHAL_LOGVB("Video: cap.mColorFormat = %d", (int)cap->mColorFormat); - CAMHAL_LOGVB("Video: cap.mWidth = %d", (int)cap->mWidth); - CAMHAL_LOGVB("Video: cap.mHeight = %d", (int)cap->mHeight); - CAMHAL_LOGVB("Video: cap.mFrameRate = %d", (int)cap->mFrameRate); - - ///mStride is set from setBufs() while passing the APIs - cap->mStride = 4096; - cap->mBufSize = cap->mStride * cap->mHeight; - } + cap->mColorFormat = pixFormat; + cap->mWidth = w; + cap->mHeight = h; + cap->mFrameRate = frameRate; + + CAMHAL_LOGVB("Prev: cap.mColorFormat = %d", (int)cap->mColorFormat); + CAMHAL_LOGVB("Prev: cap.mWidth = %d", (int)cap->mWidth); + CAMHAL_LOGVB("Prev: cap.mHeight = %d", (int)cap->mHeight); + CAMHAL_LOGVB("Prev: cap.mFrameRate = %d", (int)cap->mFrameRate); + + ///mStride is set from setBufs() while passing the APIs + cap->mStride = 4096; + cap->mBufSize = cap->mStride * cap->mHeight; + if ( ( cap->mWidth >= 1920 ) && ( cap->mHeight >= 1080 ) && |