}*/
switch (index) {
case MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED:
Log.i(TAG, "INFO_OUTPUT_BUFFERS_CHANGED");
outputBuffers = mCodec.getOutputBuffers();
break;
case MediaCodec.INFO_OUTPUT_FORMAT_CHANGED:
MediaFormat mf = mCodec.getOutputFormat();
mCodec.getCodecInfo();
Log.i(TAG, "INFO_OUTPUT_FORMAT_CHANGED :" + mf);
break;
case MediaCodec.INFO_TRY_AGAIN_LATER:
// 输出为空
break;
default:
// 后补
if(outputBuffers!=null){
ByteBuffer outputBuffer = outputBuffers[index];
byte[] arr = new byte[outputBuffer.remaining()];
outputBuffer.get(arr);
//i420callback.onI420Data(arr,frameInfo);
Log.d("aaa",arr.length+"");
}
// -1表示为第一帧数据
long newSleepUs = -1;
boolean firstTime = previewStampUs == 0l;
if (!firstTime) {
long sleepUs = (info.presentationTimeUs - previewStampUs);
if (sleepUs > 50000) {
// 时间戳异常,可能服务器丢帧了。
Log.w(TAG, "sleep time.too long:" + sleepUs);
sleepUs = 50000;
}
{
long cache = mNewestStample - previewStampUs;
newSleepUs = fixSleepTime(sleepUs, cache, 0);
}
}
previewStampUs = info.presentationTimeUs;
if (false && Build.VERSION.SDK_INT >= 21) {
Log.d(TAG, String.format("releaseoutputbuffer:%d,stampUs:%d", index, previewStampUs));
mCodec.releaseOutputBuffer(index, previewStampUs);
} else {
if (newSleepUs < 0) {
newSleepUs = 0;
}