お世話になります。
HaLです。
基礎から学ぶAndroidという本を手本に、USBカメラから画像取得をできるようにしたのですが
自作のカメラアプリ内でonPreviewFrame関数で
FileOutputStream outStream = null;
YuvImage yuvimage = new YuvImage(data,ImageFormat.NV21,320,240,null);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
yuvimage.compressToJpeg(new Rect(0,0,320,240), 80, baos);
try {
outStream = new FileOutputStream("/sdcard/11.jpg");
outStream.write(baos.toByteArray());
outStream.close();
} catch (FileNotFoundException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
} catch (IOException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
以上の処理をして取得したカメラの画像をjpegに落とした所、
赤い部分が全部青くなっていました。
YUV422からYUV420SPへの変換部分が怪しいのでは思っている(RGB変換したプレビューは正常に表示される)
のですがどなたか詳しい方、ご教示いただけないでしょうか。
以下のyuyv422_to_yuv420sp関数を使っています。
https://gitorious.org/android-enablement/framework-base/blobs/46d01908327cdf2c12e24931cde0670a0daeffcd/camera/libcameraservice/converter.cpp