}
val desiredUsec = mPrevMonoUsec + frameDelta // when we want to wake up
var nowUsec = System.nanoTime() / 1000
while (nowUsec < desiredUsec - 100 /*&& mState == RUNNING*/) {
var sleepTimeUsec = desiredUsec - nowUsec
if (sleepTimeUsec > 500000) {
sleepTimeUsec = 500000
}
try {
if (CHECK_SLEEP_TIME) {
val startNsec = System.nanoTime()
Thread.sleep(sleepTimeUsec / 1000, (sleepTimeUsec % 1000).toInt() * 1000)
val actualSleepNsec = System.nanoTime() - startNsec
Log.d(
TAG, "sleep=" + sleepTimeUsec + " actual=" + actualSleepNsec / 1000 +
" diff=" + Math.abs(actualSleepNsec / 1000 - sleepTimeUsec) +
" (usec)"
)
} else {
Thread.sleep(sleepTimeUsec / 1000, (sleepTimeUsec % 1000).toInt() * 1000)
}
} catch (ie: InterruptedException) {
}
nowUsec = System.nanoTime() / 1000
}
mPrevMonoUsec += frameDelta
mPrevPresentUsec += frameDelta
}
}
override fun postRender() {}
override fun loopReset() {
mLoopReset = true
}
companion object {
private const val TAG = "SpeedControlCallback"
private const val CHECK_SLEEP_TIME = false
private const val ONE_MILLION = 1000000L
}
}
以上就是mediaCodec的解码mp4视频轨道的代码了 。
如果你对音视频开发感兴趣,觉得文章对您有帮助,别忘了点赞、收藏哦!或者对本文的一些阐述有自己的看法,有任何问题,欢迎在下方评论区讨论!
推荐阅读
- 怎么在王者荣耀改名字,王者荣耀网名怎么改不了
- 美图秀秀抠图有什么用,美图秀秀要怎么进行抠图
- 怎么关闭抖音商品橱窗功能,商品橱窗开通后可以关闭几次
- 王者荣耀如何把恋人关系解除,怎么才能解除王者里的恋人关系呢
- 活蟹怎么处理干净,螃蟹买回来怎么处理干净
- 表格公式下拉公式不计算,Excel公式不自动计算怎么办
- 可乐开了可以放多久,可乐开封后放冰箱可以存放多久
- cad中文字如何放大,CAD中文字反向怎么办
- 华为手机玩游戏掉帧很卡怎么办