diff options
Diffstat (limited to 'media/mca')
-rw-r--r-- | media/mca/effect/java/android/media/effect/effects/BackDropperEffect.java | 3 | ||||
-rw-r--r-- | media/mca/filterfw/jni/jni_gl_frame.cpp | 8 | ||||
-rw-r--r-- | media/mca/filterfw/jni/jni_native_frame.cpp | 8 | ||||
-rw-r--r-- | media/mca/filterpacks/java/android/filterpacks/imageproc/RedEyeFilter.java | 6 | ||||
-rw-r--r-- | media/mca/filterpacks/java/android/filterpacks/videosrc/MediaSource.java | 13 | ||||
-rwxr-xr-x[-rw-r--r--] | media/mca/structgen.py | 0 |
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 |