summaryrefslogtreecommitdiffstats
path: root/media/mca
diff options
context:
space:
mode:
Diffstat (limited to 'media/mca')
-rw-r--r--media/mca/effect/java/android/media/effect/effects/BackDropperEffect.java3
-rw-r--r--media/mca/filterfw/jni/jni_gl_frame.cpp8
-rw-r--r--media/mca/filterfw/jni/jni_native_frame.cpp8
-rw-r--r--media/mca/filterpacks/java/android/filterpacks/imageproc/RedEyeFilter.java6
-rw-r--r--media/mca/filterpacks/java/android/filterpacks/videosrc/MediaSource.java13
-rwxr-xr-x[-rw-r--r--]media/mca/structgen.py0
6 files changed, 24 insertions, 14 deletions
diff --git a/media/mca/effect/java/android/media/effect/effects/BackDropperEffect.java b/media/mca/effect/java/android/media/effect/effects/BackDropperEffect.java
index d5c7aaa..f977e60 100644
--- a/media/mca/effect/java/android/media/effect/effects/BackDropperEffect.java
+++ b/media/mca/effect/java/android/media/effect/effects/BackDropperEffect.java
@@ -91,6 +91,9 @@ public class BackDropperEffect extends FilterGraphEffect {
if (parameterKey.equals("source")) {
Filter background = mGraph.getFilter("background");
background.setInputValue("sourceUrl", value);
+ } else if (parameterKey.equals("context")) {
+ Filter background = mGraph.getFilter("background");
+ background.setInputValue("context", value);
}
}
diff --git a/media/mca/filterfw/jni/jni_gl_frame.cpp b/media/mca/filterfw/jni/jni_gl_frame.cpp
index 61340f9..b55bc5d 100644
--- a/media/mca/filterfw/jni/jni_gl_frame.cpp
+++ b/media/mca/filterfw/jni/jni_gl_frame.cpp
@@ -221,10 +221,10 @@ jboolean Java_android_filterfw_core_GLFrame_setNativeBitmap(JNIEnv* env,
if (frame && bitmap) {
uint8_t* pixels;
const int result = AndroidBitmap_lockPixels(env, bitmap, reinterpret_cast<void**>(&pixels));
- if (result == ANDROID_BITMAP_RESUT_SUCCESS) {
+ if (result == ANDROID_BITMAP_RESULT_SUCCESS) {
const bool success = frame->WriteData(pixels, size);
return ToJBool(success &&
- AndroidBitmap_unlockPixels(env, bitmap) == ANDROID_BITMAP_RESUT_SUCCESS);
+ AndroidBitmap_unlockPixels(env, bitmap) == ANDROID_BITMAP_RESULT_SUCCESS);
}
}
return JNI_FALSE;
@@ -237,9 +237,9 @@ jboolean Java_android_filterfw_core_GLFrame_getNativeBitmap(JNIEnv* env,
if (frame && bitmap) {
uint8_t* pixels;
const int result = AndroidBitmap_lockPixels(env, bitmap, reinterpret_cast<void**>(&pixels));
- if (result == ANDROID_BITMAP_RESUT_SUCCESS) {
+ if (result == ANDROID_BITMAP_RESULT_SUCCESS) {
frame->CopyDataTo(pixels, frame->Size());
- return (AndroidBitmap_unlockPixels(env, bitmap) == ANDROID_BITMAP_RESUT_SUCCESS);
+ return (AndroidBitmap_unlockPixels(env, bitmap) == ANDROID_BITMAP_RESULT_SUCCESS);
}
}
return JNI_FALSE;
diff --git a/media/mca/filterfw/jni/jni_native_frame.cpp b/media/mca/filterfw/jni/jni_native_frame.cpp
index 1dfa3e6..c8f2352 100644
--- a/media/mca/filterfw/jni/jni_native_frame.cpp
+++ b/media/mca/filterfw/jni/jni_native_frame.cpp
@@ -178,7 +178,7 @@ jboolean Java_android_filterfw_core_NativeFrame_setNativeBitmap(JNIEnv* env,
Pixel* src_ptr;
const int result = AndroidBitmap_lockPixels(env, bitmap, reinterpret_cast<void**>(&src_ptr));
- if (result == ANDROID_BITMAP_RESUT_SUCCESS) {
+ if (result == ANDROID_BITMAP_RESULT_SUCCESS) {
// Create destination pointers
uint8_t* dst_ptr = reinterpret_cast<uint8_t*>(frame->MutableData());
const uint8_t* end_ptr = dst_ptr + frame->Size();
@@ -207,7 +207,7 @@ jboolean Java_android_filterfw_core_NativeFrame_setNativeBitmap(JNIEnv* env,
ALOGE("Unsupported bytes-per-pixel %d in setBitmap!", bytes_per_sample);
break;
}
- return (AndroidBitmap_unlockPixels(env, bitmap) == ANDROID_BITMAP_RESUT_SUCCESS);
+ return (AndroidBitmap_unlockPixels(env, bitmap) == ANDROID_BITMAP_RESULT_SUCCESS);
}
}
return JNI_FALSE;
@@ -222,7 +222,7 @@ jboolean Java_android_filterfw_core_NativeFrame_getNativeBitmap(JNIEnv* env,
if (frame && bitmap) {
Pixel* dst_ptr;
const int result = AndroidBitmap_lockPixels(env, bitmap, reinterpret_cast<void**>(&dst_ptr));
- if (result == ANDROID_BITMAP_RESUT_SUCCESS) {
+ if (result == ANDROID_BITMAP_RESULT_SUCCESS) {
// Make sure frame size matches bitmap size
if ((size / 4) != (frame->Size() / bytes_per_sample)) {
ALOGE("Size mismatch in native getBitmap()!");
@@ -259,7 +259,7 @@ jboolean Java_android_filterfw_core_NativeFrame_getNativeBitmap(JNIEnv* env,
ALOGE("Unsupported bytes-per-pixel %d in getBitmap!", bytes_per_sample);
break;
}
- return (AndroidBitmap_unlockPixels(env, bitmap) == ANDROID_BITMAP_RESUT_SUCCESS);
+ return (AndroidBitmap_unlockPixels(env, bitmap) == ANDROID_BITMAP_RESULT_SUCCESS);
}
}
return JNI_FALSE;
diff --git a/media/mca/filterpacks/java/android/filterpacks/imageproc/RedEyeFilter.java b/media/mca/filterpacks/java/android/filterpacks/imageproc/RedEyeFilter.java
index 3450ef1..8618804 100644
--- a/media/mca/filterpacks/java/android/filterpacks/imageproc/RedEyeFilter.java
+++ b/media/mca/filterpacks/java/android/filterpacks/imageproc/RedEyeFilter.java
@@ -72,9 +72,7 @@ public class RedEyeFilter extends Filter {
"void main() {\n" +
" vec4 color = texture2D(tex_sampler_0, v_texcoord);\n" +
" vec4 mask = texture2D(tex_sampler_1, v_texcoord);\n" +
- " gl_FragColor = vec4(mask.a, mask.a, mask.a, 1.0) * intensity + color * (1.0 - intensity);\n" +
" if (mask.a > 0.0) {\n" +
- " gl_FragColor.r = 0.0;\n" +
" float green_blue = color.g + color.b;\n" +
" float red_intensity = color.r / green_blue;\n" +
" if (red_intensity > intensity) {\n" +
@@ -105,8 +103,8 @@ public class RedEyeFilter extends Filter {
ShaderProgram shaderProgram = new ShaderProgram(context, mRedEyeShader);
shaderProgram.setMaximumTileSize(mTileSize);
mProgram = shaderProgram;
+ mProgram.setHostValue("intensity", DEFAULT_RED_INTENSITY);
break;
-
default:
throw new RuntimeException("Filter RedEye does not support frames of " +
"target " + target + "!");
@@ -180,8 +178,6 @@ public class RedEyeFilter extends Filter {
}
private void updateProgramParams() {
- mProgram.setHostValue("intensity", DEFAULT_RED_INTENSITY);
-
if ( mCenters.length % 2 == 1) {
throw new RuntimeException("The size of center array must be even.");
}
diff --git a/media/mca/filterpacks/java/android/filterpacks/videosrc/MediaSource.java b/media/mca/filterpacks/java/android/filterpacks/videosrc/MediaSource.java
index 9c40cec..0be6c62 100644
--- a/media/mca/filterpacks/java/android/filterpacks/videosrc/MediaSource.java
+++ b/media/mca/filterpacks/java/android/filterpacks/videosrc/MediaSource.java
@@ -35,6 +35,7 @@ import android.filterfw.core.ShaderProgram;
import android.filterfw.format.ImageFormat;
import android.graphics.SurfaceTexture;
import android.media.MediaPlayer;
+import android.net.Uri;
import android.os.ConditionVariable;
import android.opengl.Matrix;
import android.view.Surface;
@@ -64,6 +65,12 @@ public class MediaSource extends Filter {
@GenerateFieldPort(name = "sourceAsset", hasDefault = true)
private AssetFileDescriptor mSourceAsset = null;
+ /** The context for the MediaPlayer to resolve the sourceUrl.
+ * Make sure this is set before the sourceUrl to avoid unexpected result.
+ * If the sourceUrl is not a content URI, it is OK to keep this as null. */
+ @GenerateFieldPort(name = "context", hasDefault = true)
+ private Context mContext = null;
+
/** Whether the media source is a URL or an asset file descriptor. Defaults
* to false.
*/
@@ -459,7 +466,11 @@ public class MediaSource extends Filter {
try {
if (useUrl) {
if (mLogVerbose) Log.v(TAG, "Setting MediaPlayer source to URI " + mSourceUrl);
- mMediaPlayer.setDataSource(mSourceUrl);
+ if (mContext == null) {
+ mMediaPlayer.setDataSource(mSourceUrl);
+ } else {
+ mMediaPlayer.setDataSource(mContext, Uri.parse(mSourceUrl.toString()));
+ }
} else {
if (mLogVerbose) Log.v(TAG, "Setting MediaPlayer source to asset " + mSourceAsset);
mMediaPlayer.setDataSource(mSourceAsset.getFileDescriptor(), mSourceAsset.getStartOffset(), mSourceAsset.getLength());
diff --git a/media/mca/structgen.py b/media/mca/structgen.py
index 437326c..437326c 100644..100755
--- a/media/mca/structgen.py
+++ b/media/mca/structgen.py