Skip to content

Commit 0a4cbc3

Browse files
Ruei-sung LinAndroid (Google) Code Review
authored andcommitted
Merge "Add property to override backdropper effect threshold." into jb-dev
2 parents 6a79777 + 4239373 commit 0a4cbc3

File tree

1 file changed

+26
-2
lines changed

1 file changed

+26
-2
lines changed

media/mca/filterpacks/java/android/filterpacks/videoproc/BackDropperFilter.java

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import android.filterfw.format.ImageFormat;
3030
import android.opengl.GLES20;
3131
import android.os.SystemClock;
32+
import android.os.SystemProperties;
3233
import android.util.Log;
3334

3435
import java.lang.ArrayIndexOutOfBoundsException;
@@ -510,6 +511,20 @@ public BackDropperFilter(String name) {
510511
super(name);
511512

512513
mLogVerbose = Log.isLoggable(TAG, Log.VERBOSE);
514+
515+
String adjStr = SystemProperties.get("ro.media.effect.bgdropper.adj");
516+
if (adjStr.length() > 0) {
517+
try {
518+
mAcceptStddev += Float.parseFloat(adjStr);
519+
if (mLogVerbose) {
520+
Log.v(TAG, "Adjusting accept threshold by " + adjStr +
521+
", now " + mAcceptStddev);
522+
}
523+
} catch (NumberFormatException e) {
524+
Log.e(TAG,
525+
"Badly formatted property ro.media.effect.bgdropper.adj: " + adjStr);
526+
}
527+
}
513528
}
514529

515530
@Override
@@ -695,7 +710,6 @@ public void process(FilterContext context) {
695710
mBgUpdateVarianceProgram.setHostValue("bg_adapt_rate", mAdaptRateLearning);
696711
mBgUpdateVarianceProgram.setHostValue("fg_adapt_rate", mAdaptRateLearning);
697712
mFrameCount = 0;
698-
mStartLearning = false;
699713
}
700714

701715
// Select correct pingpong buffers
@@ -720,6 +734,11 @@ public void process(FilterContext context) {
720734
mBgInput.setTextureParameter(GLES20.GL_TEXTURE_MIN_FILTER,
721735
GLES20.GL_LINEAR_MIPMAP_NEAREST);
722736

737+
if (mStartLearning) {
738+
copyShaderProgram.process(mVideoInput, mBgMean[inputIndex]);
739+
mStartLearning = false;
740+
}
741+
723742
// Process shaders
724743
Frame[] distInputs = { mVideoInput, mBgMean[inputIndex], mBgVariance[inputIndex] };
725744
mBgDistProgram.process(distInputs, mDistance);
@@ -765,7 +784,12 @@ public void process(FilterContext context) {
765784
ByteBuffer mMaskAverageByteBuffer = mMaskAverage.getData();
766785
byte[] mask_average = mMaskAverageByteBuffer.array();
767786
int bi = (int)(mask_average[3] & 0xFF);
768-
if (mLogVerbose) Log.v(TAG, String.format("Mask_average is %d", bi));
787+
788+
if (mLogVerbose) {
789+
Log.v(TAG,
790+
String.format("Mask_average is %d, threshold is %d",
791+
bi, DEFAULT_LEARNING_DONE_THRESHOLD));
792+
}
769793

770794
if (bi >= DEFAULT_LEARNING_DONE_THRESHOLD) {
771795
mStartLearning = true; // Restart learning

0 commit comments

Comments
 (0)