Home | History | Annotate | Download | only in vis2
      1 /*
      2  * Copyright (C) 2009 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.musicvis.vis2;
     18 
     19 import com.android.musicvis.GenericWaveRS;
     20 import com.android.musicvis.R;
     21 import com.android.musicvis.AudioCapture;
     22 import android.util.Log;
     23 
     24 import android.media.MediaPlayer;
     25 
     26 class Visualization2RS extends GenericWaveRS {
     27 
     28     Visualization2RS(int width, int height) {
     29         super(width, height, R.drawable.fire);
     30     }
     31 
     32     @Override
     33     public void start() {
     34         if (mAudioCapture == null) {
     35             mAudioCapture = new AudioCapture(AudioCapture.TYPE_PCM, 1024);
     36         }
     37         super.start();
     38     }
     39 
     40     @Override
     41     public void stop() {
     42         super.stop();
     43         if (mAudioCapture != null) {
     44             mAudioCapture.release();
     45             mAudioCapture = null;
     46         }
     47     }
     48 
     49     @Override
     50     public void update() {
     51         int len = 0;
     52         if (mAudioCapture != null) {
     53             mVizData = mAudioCapture.getFormattedData(1,1);
     54             len = mVizData.length;
     55         }
     56 
     57         if (len == 0) {
     58             if (mWorldState.idle == 0) {
     59                 mWorldState.idle = 1;
     60                 //mState.data(mWorldState);
     61                 updateWorldState();
     62             }
     63             return;
     64         }
     65 
     66         int outlen = mPointData.length / 8;
     67         if (len > outlen) len = outlen;
     68 
     69         if (mWorldState.idle != 0) {
     70             mWorldState.idle = 0;
     71             //mState.data(mWorldState);
     72             updateWorldState();
     73         }
     74         // TODO: might be more efficient to push this in to renderscript
     75         for(int i = 0; i < len; i++) {
     76             int amp = mVizData[i];
     77             mPointData[i*8+1] = amp;
     78             mPointData[i*8+5] = -amp;
     79         }
     80         mPointAlloc.copyFromUnchecked(mPointData);
     81     }
     82 
     83 }
     84