기존에는 RTSP데이터를 끌어와서 FFMPEG S/W 디코딩한 데이터를 단말에 그려줬었는데요.
Full HD 성능이 나오질 않아서 MediaCodec을 사용하려고 보니 이해가 잘 안가서 질문드립니다.
Canvas canvas = null;
Bitmap bmp = Bitmap.createBitmap(640, 480, Bitmap.Config.RGB_565);
ByteBuffer buf = null;
while (true)
{
int nRet = xxxLib.GetVideoData(m_videoData); //m_videoData는 byte[] 형태고 라이브러리로부터 디코딩된 데이터를 받는 버퍼
if ( nRet == 0 )
{
buf = ByteBuffer.wrap(m_videoData);
canvas = Holder.lockCanvas();
try
{
canvas.drawBitmap(bmp, null, m_rect, null);
}
catch ( Excecption e ) {}
finally
{
if ( canvas != null )
Holder.unlockCanvasAndPost(canvas);
}
}
바꾸게 된다면 라이브러리에서 디코딩된 데이터를 주지 않고 인코딩된 데이터를 줄 예정이구요.
https://plus.google.com/117190652378947175005/posts/RyM9zDQxX9G
여기저기서 샘플코드를 봐도..파일에서 읽어들이고 사용하는 버퍼가 3개, 4개씩 사용되던데 저같은경우 인코딩된 데이터를 바로 큐에 집어넣기 위한 과정이 어떤식으로 작성되야 하는지 감이 오질 않습니다.
답변 부탁드려요...감사합니다