aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoman Birg <roman@cyngn.com>2015-06-22 14:10:33 -0700
committerRoman Birg <roman@cyngn.com>2015-06-23 17:55:20 -0700
commit291c0204b784039be83ce8ddebefb6a87849224d (patch)
tree2959fa567bfa18c04c670775cfd3086518321dff
parent232ef21f54869228c48ebe7f05f00f48108b2f32 (diff)
downloadandroid_external_android-visualizer-291c0204b784039be83ce8ddebefb6a87849224d.tar.gz
android_external_android-visualizer-291c0204b784039be83ce8ddebefb6a87849224d.tar.bz2
android_external_android-visualizer-291c0204b784039be83ce8ddebefb6a87849224d.zip
visualizer view: optimize allocations during drawing
Change-Id: I7d4c081b250953769768d0848fab8062ec9f9afc Signed-off-by: Roman Birg <roman@cyngn.com>
-rw-r--r--src/com/pheelicks/visualizer/VisualizerView.java47
1 files changed, 26 insertions, 21 deletions
diff --git a/src/com/pheelicks/visualizer/VisualizerView.java b/src/com/pheelicks/visualizer/VisualizerView.java
index a2fe6d7..dcbdcd0 100644
--- a/src/com/pheelicks/visualizer/VisualizerView.java
+++ b/src/com/pheelicks/visualizer/VisualizerView.java
@@ -50,9 +50,11 @@ public class VisualizerView extends View {
private Paint mFlashPaint = new Paint();
private Paint mFadePaint = new Paint();
+ private Matrix mMatrix;
+ private AudioData mAudioData;
+ private FFTData mFftData;
- public VisualizerView(Context context, AttributeSet attrs, int defStyle)
- {
+ public VisualizerView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs);
init();
}
@@ -71,6 +73,11 @@ public class VisualizerView extends View {
mBytes = null;
mFFTBytes = null;
+ mAudioData = new AudioData(null);
+ mFftData = new FFTData(null);
+
+ mMatrix = new Matrix();
+
mFlashPaint.setColor(Color.argb(122, 255, 255, 255));
mFadePaint.setColor(Color.argb(200, 255, 255, 255)); // Adjust alpha to
// change how
@@ -84,7 +91,7 @@ public class VisualizerView extends View {
/**
* Links the visualizer to a player
*
- * @param player - MediaPlayer instance to link to
+ * @param audioSessionId - MediaPlayer instance to link to
*/
public void link(int audioSessionId)
{
@@ -94,7 +101,6 @@ public class VisualizerView extends View {
mVisualizer = null;
}
- Log.i(TAG, "session=" + audioSessionId);
mAudioSessionId = audioSessionId;
if (mVisualizer == null) {
@@ -173,6 +179,7 @@ public class VisualizerView extends View {
*/
public void updateVisualizer(byte[] bytes) {
mBytes = bytes;
+ mAudioData.bytes = bytes;
invalidate();
}
@@ -185,6 +192,7 @@ public class VisualizerView extends View {
*/
public void updateVisualizerFFT(byte[] bytes) {
mFFTBytes = bytes;
+ mFftData.bytes = bytes;
invalidate();
}
@@ -199,6 +207,12 @@ public class VisualizerView extends View {
invalidate();
}
+ @Override
+ protected void onSizeChanged(int w, int h, int oldw, int oldh) {
+ super.onSizeChanged(w, h, oldw, oldh);
+ mRect.set(0, 0, getWidth(), getHeight());
+ }
+
Bitmap mCanvasBitmap;
Canvas mCanvas;
@@ -207,46 +221,37 @@ public class VisualizerView extends View {
super.onDraw(canvas);
// Create canvas once we're ready to draw
- mRect.set(0, 0, getWidth(), getHeight());
-
- if (mCanvasBitmap == null)
- {
+ if (mCanvasBitmap == null) {
mCanvasBitmap = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(),
Config.ARGB_8888);
}
- if (mCanvas == null)
- {
+ if (mCanvas == null) {
mCanvas = new Canvas(mCanvasBitmap);
}
if (mBytes != null) {
// Render all audio renderers
- AudioData audioData = new AudioData(mBytes);
- for (Renderer r : mRenderers)
- {
- r.render(mCanvas, audioData, mRect);
+ for (Renderer r : mRenderers) {
+ r.render(mCanvas, mAudioData, mRect);
}
}
if (mFFTBytes != null) {
// Render all FFT renderers
- FFTData fftData = new FFTData(mFFTBytes);
- for (Renderer r : mRenderers)
- {
- r.render(mCanvas, fftData, mRect);
+ for (Renderer r : mRenderers) {
+ r.render(mCanvas, mFftData, mRect);
}
}
// Fade out old contents
mCanvas.drawPaint(mFadePaint);
- if (mFlash)
- {
+ if (mFlash) {
mFlash = false;
mCanvas.drawPaint(mFlashPaint);
}
- canvas.drawBitmap(mCanvasBitmap, new Matrix(), null);
+ canvas.drawBitmap(mCanvasBitmap, mMatrix, null);
}
// Methods for adding renderers to visualizer