カメラでキャプチャされたフレームを取得してエンコードし、最終的に RTP/RTSP を使用して送信しようとしています。
キャプチャを行うには、stagefright の CameraSource クラスを使用しています。画面上のプレビュー (Java から渡された Surface) は素晴らしいです。しかし、フレームを抽出しようとすると、20 バイトのフレームが得られます。
私は何を間違っていますか?
Size videoSize;
videoSize.width = 352;
videoSize.height = 288;
sp<CameraSource> myCamera = CameraSource::CreateFromCamera(NULL, NULL,
1 /*front camera*/, videoSize, 25, mySurface, true);
myCamera->start();
//the following is from a reader thread.
status_t err = OK;
MediaBuffer* pBuffer;
while ((err = myCamera->read(&pBuffer)) == OK)
{
// if not getting a valid buffer from source, then exit
if (pBuffer == NULL)
{
return;
}
else
{
LOGD("The Size of the returned buffer is: %d", pBuffer->size() );
}
pBuffer->release();
pBuffer = NULL;
}