Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(789)

Unified Diff: media/base/android/java/src/org/chromium/media/VideoCapture.java

Issue 23903032: Move NV21 colorspace treatment from VideoCapture java to C++ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Try again uploading - didn't work :( Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/base/android/java/src/org/chromium/media/VideoCapture.java
diff --git a/media/base/android/java/src/org/chromium/media/VideoCapture.java b/media/base/android/java/src/org/chromium/media/VideoCapture.java
index df9eb4dcffb61a8ea9a8bd8ea8d0e16d92d775a1..27b55320673240708720b2504018b9cfeb154d21 100644
--- a/media/base/android/java/src/org/chromium/media/VideoCapture.java
+++ b/media/base/android/java/src/org/chromium/media/VideoCapture.java
@@ -51,7 +51,6 @@ public class VideoCapture implements PreviewCallback, OnFrameAvailableListener {
return ImageFormat.NV21;
}
}
-
return ImageFormat.YV12;
}
}
@@ -238,6 +237,27 @@ public class VideoCapture implements PreviewCallback, OnFrameAvailableListener {
}
@CalledByNative
+ public int getColorspace() {
+ switch (mImageFormat){
+ case ImageFormat.YV12:
+ return AndroidImageFormatList.ANDROID_IMAGEFORMAT_YV12;
+ case ImageFormat.NV21:
+ return AndroidImageFormatList.ANDROID_IMAGEFORMAT_NV21;
+ case ImageFormat.YUY2:
+ return AndroidImageFormatList.ANDROID_IMAGEFORMAT_YUY2;
+ case ImageFormat.NV16:
+ return AndroidImageFormatList.ANDROID_IMAGEFORMAT_NV16;
+ case ImageFormat.JPEG:
+ return AndroidImageFormatList.ANDROID_IMAGEFORMAT_JPEG;
+ case ImageFormat.RGB_565:
+ return AndroidImageFormatList.ANDROID_IMAGEFORMAT_RGB_565;
+ case ImageFormat.UNKNOWN:
+ default:
+ return AndroidImageFormatList.ANDROID_IMAGEFORMAT_UNKNOWN;
+ }
+ }
+
+ @CalledByNative
public int startCapture() {
if (mCamera == null) {
Log.e(TAG, "startCapture: camera is null");
@@ -325,9 +345,6 @@ public class VideoCapture implements PreviewCallback, OnFrameAvailableListener {
} else {
rotation = (mCameraOrientation - rotation + 360) % 360;
}
- if (mImageFormat == ImageFormat.NV21) {
- convertNV21ToYV12(data);
- }
nativeOnFrameAvailable(mNativeVideoCaptureDeviceAndroid,
data, mExpectedFrameSize,
rotation, flipVertical, flipHorizontal);
@@ -417,19 +434,5 @@ public class VideoCapture implements PreviewCallback, OnFrameAvailableListener {
private void calculateImageFormat(int width, int height) {
mImageFormat = DeviceImageFormatHack.getImageFormat();
- if (mImageFormat == ImageFormat.NV21) {
- mColorPlane = new byte[width * height / 4];
- }
- }
-
- private void convertNV21ToYV12(byte[] data) {
- final int ySize = mCurrentCapability.mWidth * mCurrentCapability.mHeight;
- final int uvSize = ySize / 4;
- for (int i = 0; i < uvSize; i++) {
- final int index = ySize + i * 2;
- data[ySize + i] = data[index];
- mColorPlane[i] = data[index + 1];
- }
- System.arraycopy(mColorPlane, 0, data, ySize + uvSize, uvSize);
}
}

Powered by Google App Engine
This is Rietveld 408576698