2016-05-05 26 views
0

mediacodecでデコードされたフレームのデコード時間を計算するにはどうすればよいでしょうか?以下のコードの実行時間は明らかに正しい時間ではありません。各フレーム/フレームのデコードにどれくらいの時間がかかるかを知る方法はありますか?MediaCodecデコード時間計算

ありがとうございました。

startTime... 

dequeueInputBuffer(); 

getInputBuffer(); 

// copy frame to input buffer 

queueInputBuffer(); 

dequeueOutputBuffer(); 

releaseOutputBuffer(); 

stopTime... 

exectime = startTime - StopTime 

答えて

1

あなたは、待ち時間だけでなく、スループットを測定することがありますので、それは、単一のフレームをデコードするのに必要な時間の意味のある測定を取得することは困難です。データは、アプリケーションからmediaserverプロセスに渡され、ドライバにデコードされ、デコードされたデータは同じ旅を逆にしなければなりません。ドライバ自体に追加のパイプラインが存在する可能性があります。

数百フレームをデコードし、合計時間をフレーム数で割って、妥当な近似を得ることができます。

達成しようとしていることは何ですか?

+0

お返事ありがとうございます。私は、リアルタイムのビデオストリーミングを実行しようとしています(上のコードはNDKの中にあります)。デコード時間が遅延を測定する時間を確認する必要があります。入力がキューに入れられたときに、開始および終了タイマーが正しい行にあるかどうかはわかりません。 – MyNameisAwesome

+3

入力がキューに入れられる時間は重要ではありません。入力を可能な限りいっぱいに保つ必要があります。いくつかのビデオフォーマットでは、エンコードされたフレームが順不同で表示されることがあります。一度に1つのフレームをフィードしようとすると、完全に停止します。出力バッファが解放された時点でビデオのペーシングを管理します。レイテンシについての追加のメモはhttp://stackoverflow.com/questions/21440820/ – fadden

+0

にあります。ありがとうございました。 – MyNameisAwesome