마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드 개발에서 Camera2 api로 써서 작업중인데요 NV21 변환에서 퍼포먼스가 떨어져요

0 추천
안드 초보입니다 ㅠㅠ

안드 개발에서 Camera2 api로 써서 작업중인데요

아래처럼 ImageFormat.YUV_420_888 으로 뽑아서 reader.acquireNextImage() 으로 image를 뽑아서 결국 NV21 로 뽑아내는게 목적입니다만...

 

mImageReader_for_preview = ImageReader.newInstance(new_ww, new_hh, ImageFormat.YUV_420_888, 1);
mImageReader_for_preview.setOnImageAvailableListener(new ImageReader.OnImageAvailableListener() {
@Override
public void onImageAvailable(ImageReader reader) {
if (reader != null) {

Image image = null;
image = reader.acquireNextImage();
 

byte[] data = ImageUtils.YUV_420_888toNV21(image);

 

현재 아래 부분( YUV_420_888toNV21 ) 에서 퍼포먼스가 너무 떨어져서요 ㅠㅠ ;;  앱이 버벅거리거나 느려집니다 ㅠㅠ

개인적인 생각으론 c++이나 OpenCV?? JavaCV?? 를 써야하나 싶기도 한데;; 어떻게 해야 이부분의 퍼포먼스를 끌어올릴수 있는지요?;;

 

public static byte[] YUV_420_888toNV21(Image image) {
byte[] nv21;
ByteBuffer yBuffer = image.getPlanes()[0].getBuffer();
ByteBuffer vuBuffer = image.getPlanes()[2].getBuffer();

int ySize = yBuffer.remaining();
int vuSize = vuBuffer.remaining();

nv21 = new byte[ySize + vuSize];

yBuffer.get(nv21, 0, ySize);
vuBuffer.get(nv21, ySize, vuSize);

return nv21;
}
kc2013 (120 포인트) 님이 2021년 4월 7일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...