use of android.hardware.Camera.Size in project android_packages_apps_Camera by CyanogenMod.
the class VideoModule method getDesiredPreviewSize.
@TargetApi(ApiHelper.VERSION_CODES.HONEYCOMB)
private void getDesiredPreviewSize() {
mParameters = mActivity.mCameraDevice.getParameters();
if (ApiHelper.HAS_GET_SUPPORTED_VIDEO_SIZE) {
if (mParameters.getSupportedVideoSizes() == null || (!mActivity.getResources().getBoolean(R.bool.usePreferredPreviewSizeForEffects) && effectsActive()) || Util.useProfileVideoSize()) {
mDesiredPreviewWidth = mProfile.videoFrameWidth;
mDesiredPreviewHeight = mProfile.videoFrameHeight;
} else {
// Driver supports separates outputs for preview and video.
List<Size> sizes = mParameters.getSupportedPreviewSizes();
Size preferred = mParameters.getPreferredPreviewSizeForVideo();
if (mActivity.getResources().getBoolean(R.bool.ignorePreferredPreviewSizeForVideo) || preferred == null) {
preferred = sizes.get(0);
}
int product = preferred.width * preferred.height;
Iterator<Size> it = sizes.iterator();
// Remove the preview sizes that are not preferred.
while (it.hasNext()) {
Size size = it.next();
if (size.width * size.height > product) {
it.remove();
}
}
Size optimalSize = Util.getOptimalPreviewSize(mActivity, sizes, (double) mProfile.videoFrameWidth / mProfile.videoFrameHeight);
mDesiredPreviewWidth = optimalSize.width;
mDesiredPreviewHeight = optimalSize.height;
}
} else {
mDesiredPreviewWidth = mProfile.videoFrameWidth;
mDesiredPreviewHeight = mProfile.videoFrameHeight;
}
Log.v(TAG, "mDesiredPreviewWidth=" + mDesiredPreviewWidth + ". mDesiredPreviewHeight=" + mDesiredPreviewHeight);
}
use of android.hardware.Camera.Size in project android_packages_apps_Camera by CyanogenMod.
the class VideoModule method checkQualityAndStartPreview.
// Verifies that the current preview view size is correct before starting
// preview. If not, resets the surface texture and resizes the view.
private void checkQualityAndStartPreview() {
readVideoPreferences();
showTimeLapseUI(mCaptureTimeLapse);
Size size = mParameters.getPreviewSize();
if (size.width != mDesiredPreviewWidth || size.height != mDesiredPreviewHeight) {
resizeForPreviewAspectRatio();
}
// Start up preview again
startPreview();
}
use of android.hardware.Camera.Size in project android_packages_apps_Camera by CyanogenMod.
the class VideoModule method setCameraParameters.
@SuppressWarnings("deprecation")
private void setCameraParameters() {
mParameters.setPreviewSize(mDesiredPreviewWidth, mDesiredPreviewHeight);
mParameters.setPreviewFrameRate(mProfile.videoFrameRate);
// Set video mode
CameraSettings.setVideoMode(mParameters, true);
// Set video size before recording starts
CameraSettings.setEarlyVideoSize(mParameters, mProfile);
// Set flash mode.
String flashMode;
if (mActivity.mShowCameraAppView) {
flashMode = mPreferences.getString(CameraSettings.KEY_VIDEOCAMERA_FLASH_MODE, mActivity.getString(R.string.pref_camera_video_flashmode_default));
} else {
flashMode = Parameters.FLASH_MODE_OFF;
}
List<String> supportedFlash = mParameters.getSupportedFlashModes();
if (isSupported(flashMode, supportedFlash)) {
mParameters.setFlashMode(flashMode);
} else {
flashMode = mParameters.getFlashMode();
if (flashMode == null) {
flashMode = mActivity.getString(R.string.pref_camera_flashmode_no_flash);
}
}
// Set white balance parameter.
String whiteBalance = mPreferences.getString(CameraSettings.KEY_WHITE_BALANCE, mActivity.getString(R.string.pref_camera_whitebalance_default));
if (isSupported(whiteBalance, mParameters.getSupportedWhiteBalance())) {
mParameters.setWhiteBalance(whiteBalance);
} else {
whiteBalance = mParameters.getWhiteBalance();
if (whiteBalance == null) {
whiteBalance = Parameters.WHITE_BALANCE_AUTO;
}
}
// Set zoom.
if (mParameters.isZoomSupported()) {
mParameters.setZoom(mZoomValue);
}
// Set continuous autofocus.
List<String> supportedFocus = mParameters.getSupportedFocusModes();
if (isSupported(Parameters.FOCUS_MODE_CONTINUOUS_VIDEO, supportedFocus)) {
mParameters.setFocusMode(Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
}
mParameters.set(Util.RECORDING_HINT, Util.TRUE);
// Enable video stabilization. Convenience methods not available in API
// level <= 14
String vstabSupported = mParameters.get("video-stabilization-supported");
if ("true".equals(vstabSupported)) {
mParameters.set("video-stabilization", "true");
}
// Set picture size.
// The logic here is different from the logic in still-mode camera.
// There we determine the preview size based on the picture size, but
// here we determine the picture size based on the preview size.
List<Size> supported = mParameters.getSupportedPictureSizes();
Size optimalSize = Util.getOptimalVideoSnapshotPictureSize(supported, (double) mDesiredPreviewWidth / mDesiredPreviewHeight);
Size original = mParameters.getPictureSize();
if (!original.equals(optimalSize)) {
mParameters.setPictureSize(optimalSize.width, optimalSize.height);
}
Log.v(TAG, "Video snapshot size is " + optimalSize.width + "x" + optimalSize.height);
// Set JPEG quality.
int jpegQuality = Integer.parseInt(mPreferences.getString(CameraSettings.KEY_VIDEOCAMERA_JPEG, mActivity.getString(R.string.pref_camera_jpeg_default)));
mParameters.setJpegQuality(jpegQuality);
// Color effect
String colorEffect = mPreferences.getString(CameraSettings.KEY_VIDEOCAMERA_COLOR_EFFECT, mActivity.getString(R.string.pref_camera_coloreffect_default));
if (Util.isSupported(colorEffect, mParameters.getSupportedColorEffects())) {
mParameters.setColorEffect(colorEffect);
}
// Set exposure compensation
int value = CameraSettings.readExposure(mPreferences);
int max = mParameters.getMaxExposureCompensation();
int min = mParameters.getMinExposureCompensation();
if (value >= min && value <= max) {
mParameters.setExposureCompensation(value);
} else {
Log.w(TAG, "invalid exposure range: " + value);
}
// HDR
if (Util.isVideoHdrSupported(mParameters)) {
String videohdr = mPreferences.getString(CameraSettings.KEY_VIDEO_HDR, mActivity.getString(R.string.pref_video_hdr_default));
mParameters.set(mActivity.getString(R.string.videoHdrParam), videohdr);
}
CameraSettings.dumpParameters(mParameters);
mActivity.mCameraDevice.setParameters(mParameters);
// Keep preview size up to date.
mParameters = mActivity.mCameraDevice.getParameters();
updateCameraScreenNailSize(mDesiredPreviewWidth, mDesiredPreviewHeight);
}
use of android.hardware.Camera.Size in project JustAndroid by chinaltz.
the class CameraConfigurationManager method setDesiredCameraParameters.
/**
* 设置相机参数
*
* @param camera
*/
void setDesiredCameraParameters(Camera camera, int cameraID) {
Parameters parameters = camera.getParameters();
parameters.setPreviewSize(cameraResolution.x, cameraResolution.y);
parameters.setPictureSize(pictureResolution.x, pictureResolution.y);
Size size = parameters.getPreviewSize();
Log.e(TAG, "camera default previewSize: " + size.width + "," + size.height);
Size size1 = parameters.getPictureSize();
Log.e(TAG, "camera default pictureSize: " + size1.width + "," + size1.height);
parameters.setPictureFormat(ImageFormat.JPEG);
//parameters.setJpegQuality(85);
parameters.setPreviewFormat(ImageFormat.NV21);
Log.e(TAG, "camera setPreviewSize: " + cameraResolution.x + "," + cameraResolution.y);
if (cameraID == 0) {
//对焦模式
if (Config.focusMode == 0) {
parameters.setFocusMode(Parameters.FLASH_MODE_AUTO);
} else {
parameters.setFocusMode(Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
}
}
parameters.setZoom(0);
setFlash(camera, false);
//setZoom(parameters);
camera.setParameters(parameters);
}
use of android.hardware.Camera.Size in project libstreaming by fyhertz.
the class VideoQuality method determineClosestSupportedResolution.
/**
* Checks if the requested resolution is supported by the camera.
* If not, it modifies it by supported parameters.
**/
public static VideoQuality determineClosestSupportedResolution(Camera.Parameters parameters, VideoQuality quality) {
VideoQuality v = quality.clone();
int minDist = Integer.MAX_VALUE;
String supportedSizesStr = "Supported resolutions: ";
List<Size> supportedSizes = parameters.getSupportedPreviewSizes();
for (Iterator<Size> it = supportedSizes.iterator(); it.hasNext(); ) {
Size size = it.next();
supportedSizesStr += size.width + "x" + size.height + (it.hasNext() ? ", " : "");
int dist = Math.abs(quality.resX - size.width);
if (dist < minDist) {
minDist = dist;
v.resX = size.width;
v.resY = size.height;
}
}
Log.v(TAG, supportedSizesStr);
if (quality.resX != v.resX || quality.resY != v.resY) {
Log.v(TAG, "Resolution modified: " + quality.resX + "x" + quality.resY + "->" + v.resX + "x" + v.resY);
}
return v;
}
Aggregations