作者jaq865ttu (惡男)
看板AndroidDev
標題[問題] 分析攝影機資料串流
時間Mon Nov 21 18:47:13 2011
大家好,我是Android開發新手,想請問板上高手,
我開發的手機其攝影機有3顆鏡頭(前鏡頭+後鏡頭*2)
我的目的是分別得到後方左鏡頭和右鏡頭的攝影機預覽,
而不是已經經過處理的3D預覽畫面,我有看過該設備提供的文件,
其3D影像格式可以設定成是side by side
所以我的做法是將其預覽的資料串流使用setPreviewCallbackWithBuffer來處理,
先將3D影像預覽畫面存到一個buffer中,在轉成RGB色彩空間,最後再把此buffer
分成兩個(因為其格式是side by side)buffer,照理可以得到存左和右鏡頭預覽
畫面的buffer,但是在執行到轉成RGB色彩空間執行時卻出錯,
出現"此程序未正常中止"的錯誤,想請教是否有那邊寫錯以及
以上的做法是否能實現我的目的,或是要往底層去做開發達到分別獲得
左右鏡頭的預覽畫面,謝謝。
程式碼如下:
// 產生 buffer
PixelFormat p=new PixelFormat();
PixelFormat.getPixelFormatInfo(parameters.getPreviewFormat(),p);
int bufSize=(optimalSize.width*optimalSize.height*p.bitsPerPixel)/8;
// 把buffer給preview callback備用
byte[] buffer=new byte[bufSize];
camera.addCallbackBuffer(buffer);
buffer=new byte[bufSize];
camera.addCallbackBuffer(buffer);
buffer=new byte[bufSize];
camera.addCallbackBuffer(buffer);
// 設定預覽畫面更新時的callback。 Since: API Level 8
camera.setPreviewCallbackWithBuffer(new PreviewCallback(){
public void onPreviewFrame(byte[] data,Camera camera){
byte[] rgb=new byte[data.length];
decodeYUV420SP(rgb,data,width,height);
camera.addCallbackBuffer(rgb);
}
});
camera.startPreview();
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.118.20.62
1F:推 LaPass:之前也被這個搞到很鳥.... 到現在也還沒搞懂 = = 11/21 21:30