2929import android .filterfw .format .ImageFormat ;
3030import android .opengl .GLES20 ;
3131import android .os .SystemClock ;
32+ import android .os .SystemProperties ;
3233import android .util .Log ;
3334
3435import 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