Messaging: Remove forgotten MmsVideoRecorder
Usages removed when removing the own camera handling in commit 7f464b4
Change-Id: I7904a5079e733331c9cfc780ff21bdda8bdb9455
This commit is contained in:
@@ -1,139 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2015 The Android Open Source Project
|
||||
* Copyright (C) 2024 The LineageOS Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.messaging.ui.mediapicker;
|
||||
|
||||
import android.hardware.Camera;
|
||||
import android.media.CamcorderProfile;
|
||||
import android.media.MediaRecorder;
|
||||
import android.net.Uri;
|
||||
import android.os.ParcelFileDescriptor;
|
||||
|
||||
import com.android.messaging.Factory;
|
||||
import com.android.messaging.datamodel.MediaScratchFileProvider;
|
||||
import com.android.messaging.util.ContentType;
|
||||
import com.android.messaging.util.SafeAsyncTask;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
|
||||
class MmsVideoRecorder extends MediaRecorder {
|
||||
private static final float VIDEO_OVERSHOOT_SLOP = .85F;
|
||||
|
||||
private static final int BITS_PER_BYTE = 8;
|
||||
|
||||
// We think user will expect to be able to record videos at least this long
|
||||
private static final long MIN_DURATION_LIMIT_SECONDS = 25;
|
||||
|
||||
/** The uri where video is being recorded to */
|
||||
private Uri mTempVideoUri;
|
||||
|
||||
private ParcelFileDescriptor mVideoFD;
|
||||
|
||||
/** The settings used for video recording */
|
||||
private final CamcorderProfile mCamcorderProfile;
|
||||
|
||||
public MmsVideoRecorder(final Camera camera, final int cameraIndex, final int orientation,
|
||||
final int maxMessageSize)
|
||||
throws FileNotFoundException {
|
||||
mCamcorderProfile =
|
||||
CamcorderProfile.get(cameraIndex, CamcorderProfile.QUALITY_LOW);
|
||||
mTempVideoUri = MediaScratchFileProvider.buildMediaScratchSpaceUri(
|
||||
ContentType.getExtension(getContentType()));
|
||||
|
||||
// The video recorder can sometimes return a file that's larger than the max we
|
||||
// say we can handle. Try to handle that overshoot by specifying an 85% limit.
|
||||
final long sizeLimit = (long) (maxMessageSize * VIDEO_OVERSHOOT_SLOP);
|
||||
|
||||
// The QUALITY_LOW profile might not be low enough to allow for video of a reasonable
|
||||
// minimum duration. Adjust a/v bitrates to allow at least MIN_DURATION_LIMIT video
|
||||
// to be recorded.
|
||||
int audioBitRate = mCamcorderProfile.audioBitRate;
|
||||
int videoBitRate = mCamcorderProfile.videoBitRate;
|
||||
final double initialDurationLimit = sizeLimit * BITS_PER_BYTE
|
||||
/ (double) (audioBitRate + videoBitRate);
|
||||
if (initialDurationLimit < MIN_DURATION_LIMIT_SECONDS) {
|
||||
// Reduce the suggested bitrates. These bitrates are only requests, if implementation
|
||||
// can't actually hit these goals it will still record video at higher rate and stop when
|
||||
// it hits the size limit.
|
||||
final double bitRateAdjustmentFactor = initialDurationLimit / MIN_DURATION_LIMIT_SECONDS;
|
||||
audioBitRate *= bitRateAdjustmentFactor;
|
||||
videoBitRate *= bitRateAdjustmentFactor;
|
||||
}
|
||||
|
||||
setCamera(camera);
|
||||
setOrientationHint(orientation);
|
||||
setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
|
||||
setVideoSource(MediaRecorder.VideoSource.CAMERA);
|
||||
setOutputFormat(mCamcorderProfile.fileFormat);
|
||||
mVideoFD = Factory.get().getApplicationContext().getContentResolver()
|
||||
.openFileDescriptor(mTempVideoUri, "w");
|
||||
setOutputFile(mVideoFD.getFileDescriptor());
|
||||
|
||||
// Copy settings from CamcorderProfile to MediaRecorder
|
||||
setAudioEncodingBitRate(audioBitRate);
|
||||
setAudioChannels(mCamcorderProfile.audioChannels);
|
||||
setAudioEncoder(mCamcorderProfile.audioCodec);
|
||||
setAudioSamplingRate(mCamcorderProfile.audioSampleRate);
|
||||
setVideoEncodingBitRate(videoBitRate);
|
||||
setVideoEncoder(mCamcorderProfile.videoCodec);
|
||||
setVideoFrameRate(mCamcorderProfile.videoFrameRate);
|
||||
setVideoSize(
|
||||
mCamcorderProfile.videoFrameWidth, mCamcorderProfile.videoFrameHeight);
|
||||
setMaxFileSize(sizeLimit);
|
||||
}
|
||||
|
||||
Uri getVideoUri() {
|
||||
return mTempVideoUri;
|
||||
}
|
||||
|
||||
int getVideoWidth() {
|
||||
return mCamcorderProfile.videoFrameWidth;
|
||||
}
|
||||
|
||||
int getVideoHeight() {
|
||||
return mCamcorderProfile.videoFrameHeight;
|
||||
}
|
||||
|
||||
void cleanupTempFile() {
|
||||
final Uri tempUri = mTempVideoUri;
|
||||
SafeAsyncTask.executeOnThreadPool(() ->
|
||||
Factory.get().getApplicationContext().getContentResolver().delete(
|
||||
tempUri, null, null));
|
||||
mTempVideoUri = null;
|
||||
}
|
||||
|
||||
String getContentType() {
|
||||
if (mCamcorderProfile.fileFormat == OutputFormat.MPEG_4) {
|
||||
return ContentType.VIDEO_MP4;
|
||||
} else {
|
||||
// 3GPP is the only other video format with a constant in OutputFormat
|
||||
return ContentType.VIDEO_3GPP;
|
||||
}
|
||||
}
|
||||
|
||||
public void closeVideoFileDescriptor() {
|
||||
if (mVideoFD != null) {
|
||||
try {
|
||||
mVideoFD.close();
|
||||
} catch (IOException e) {
|
||||
// Ignore
|
||||
}
|
||||
mVideoFD = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user