ref: 69be28bd1b80d99857074a4b0074ac667fe2488e
dir: /codec/build/android/enc/src/com/wels/enc/WelsEncTest.java/
package com.wels.enc; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import android.os.Process; import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import java.io.*; import java.util.Vector; public class WelsEncTest extends Activity { /** Called when the activity is first created. */ private OnClickListener OnClickEvent; private Button mBtnLoad, mBtnStartSW; final String mStreamPath = "/sdcard/welsenc/"; Vector<String> mCfgFiles = new Vector<String>(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final TextView tv = new TextView(this); System.out.println("Here we go ..."); Log.i(TAG, "sdcard path:" + Environment.getExternalStorageDirectory().getAbsolutePath()); setContentView(R.layout.main); mBtnLoad = (Button)findViewById(R.id.cfg); mBtnStartSW = (Button)findViewById(R.id.buttonSW); OnClickEvent = new OnClickListener() { public void onClick(View v) { switch(v.getId()) { case R.id.cfg: { String cfgFile = mStreamPath + "cfgs.txt"; try { BufferedReader bufferedReader = new BufferedReader(new FileReader(cfgFile)); String text; while((text = bufferedReader.readLine()) != null) { mCfgFiles.add(mStreamPath + text); Log.i(TAG, mStreamPath + text); } bufferedReader.close(); } catch(IOException e) { Log.e(TAG, e.getMessage()); } } break; case R.id.buttonSW: { System.out.println("encode sequence number = " + mCfgFiles.size()); Log.i(TAG,"after click"); try { for (int k=0; k < mCfgFiles.size(); k++) { String cfgFile = mCfgFiles.get(k); DoEncoderTest(cfgFile); } } catch (Exception e) { Log.e(TAG, e.getMessage()); } mCfgFiles.clear(); tv.setText( "Encoder is completed!" ); } break; } } }; mBtnLoad.setOnClickListener(OnClickEvent); mBtnStartSW.setOnClickListener(OnClickEvent); System.out.println("Done!"); //run the test automatically,if you not want to autotest, just comment this line runAutoEnc(); } public void runAutoEnc() { Thread thread = new Thread() { public void run() { Log.i(TAG,"encoder performance test begin"); String inYuvfile=null,outBitfile=null,inOrgfile=null,inLayerfile = null; File encCase = new File(mStreamPath); String[] caseNum = encCase.list(); if(caseNum==null || caseNum.length==0) { Log.i(TAG,"have not find any encoder resourse"); finish(); } for(int i=0;i<caseNum.length;i++) { String[] yuvName = null; File yuvPath = null; File encCaseNo = new File(mStreamPath + caseNum[i]); String[] encFile = encCaseNo.list(); for(int k=0;k<encFile.length;k++) { if(encFile[k].compareToIgnoreCase("welsenc.cfg") == 0) inOrgfile = encCaseNo + File.separator+encFile[k]; else if(encFile[k].compareToIgnoreCase("layer2.cfg") == 0) inLayerfile = encCaseNo + File.separator+encFile[k]; else if(encFile[k].compareToIgnoreCase("yuv") == 0) { yuvPath = new File(encCaseNo + File.separator+encFile[k]); yuvName = yuvPath.list(); } } for(int m=0; m<yuvName.length;m++) { inYuvfile = yuvPath +File.separator+yuvName[m]; outBitfile = inYuvfile +".264"; Log.i(TAG,"enc yuv file:" + yuvName[m]); DoEncoderAutoTest(inOrgfile,inLayerfile,inYuvfile,outBitfile); } } Log.i(TAG,"encoder performance test finish"); finish(); } }; thread.start(); } @Override public void onStart() { Log.i(TAG,"welsencdemo onStart"); super.onStart(); } @Override public void onDestroy() { super.onDestroy(); Log.i(TAG,"OnDestroy"); Process.killProcess(Process.myPid()); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_BACK: return true; default: return super.onKeyDown(keyCode, event); } } public native void DoEncoderTest(String cfgFileName); public native void DoEncoderAutoTest(String cfgFileName,String layerFileName,String yuvFileName,String outBitsName); private static final String TAG = "welsenc"; static { try { System.loadLibrary("openh264"); System.loadLibrary("stlport_shared"); System.loadLibrary("welsencdemo"); Log.v(TAG, "Load libwelsencdemo.so successful"); } catch(Exception e) { Log.e(TAG, "Failed to load welsenc"+e.getMessage()); } } }