我从论坛中到一个android上的h264解码器,但解码速度很慢,图像也不大,只有352*288,播放出来完全是慢动作
请问大侠们,如何提高速度啊!!!
源码如下!
package h264.com;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Matrix;//////////////////////////////////////////////////////////////////
import android.graphics.Paint;
import android.graphics.Bitmap.Config;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
public class H264Android extends Activity {//有关窗口的各种事宜都在Activity中声明
VView vv;
@Override
public void onCreate(Bundle savedInstanceState) {//建立并显示一个窗口
super.onCreate(savedInstanceState);
vv = new VView(this);
setContentView(vv);
}
// Menu item Ids
public static final int PLAY_ID = Menu.FIRST;
public static final int EXIT_ID = Menu.FIRST + 1;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(0, PLAY_ID, 0, R.string.play);
menu.add(0, EXIT_ID, 1, R.string.exit);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case PLAY_ID:
{
// 此处设定不同分辨率的码流文件
String file = "/sdcard/352x288.h264"; //352x288.264"; //240x320.264";
vv.PlayVideo(file);
return true;
}
case EXIT_ID:
{
finish();
return true;
}
}
return super.onOptionsItemSelected(item);
}
}//至此,对窗口的各种说明都完成
class VView extends View implements Runnable{
Bitmap mBitQQ = null;
Paint mPaint = null;
Bitmap mSCBitmap = null;
Matrix matrix = new Matrix(); ////////////////////////////////////////////////////////////////////////////
int width = 352; // 此处设定不同的分辨率
int height = 288;
byte [] mPixel = new byte[width*height*2];//创建一个字符串mPixel,单位为byte,个数为width*height*2
ByteBuffer buffer = ByteBuffer.wrap( mPixel );//将mPixel中的元素打包在Buffer中
Bitmap VideoBit = Bitmap.createBitmap(width, height, Config.RGB_565); //以参数所要求的格式创建一个bitmap
int mTrans=0x0F0F0F0F;
String PathFileName;
public native int InitDecoder(int width, int height);
public native int UninitDecoder();
public native int DecoderNal(byte[] in, int insize, byte[] out);
static {
System.loadLibrary("H264Android");
}
public VView(Context context) {//构造函数
super(context);
setFocusable(true);//使当前视图focused
int i = mPixel.length;
for(i=0; i<mPixel.length; i++)
{
mPixel[i]=(byte)0x00;//将mPixel中每个元素初始化为零
}
}