场景:将手机录屏编码后得到的 byte[]序列化成 protobuf 类问题:一秒编码 30 帧,随着时间推移,手机会越来越卡。经过排查,发现是这行代码造成卡顿,val toByteArray = screenMes.build().toByteArray()
完整的代码如下:
val byteBuffer: ByteBuffer = ByteBuffer.allocateDirect(1024 1024 3)private lateinit var screenMes:UDXMessage.ScreencapMes.Builder
*
编码回调
bytes 编码后的数据
flags 是否 I 帧
/
override fun onScreenInfo(bytes: ByteArray?, flags:
Int
) {
isRecording
=
true
if
(bytes !
null) {
screenMes.data
ByteString.copyFrom(bytes)
screenMes.sort
mFlowSort
(flags
MediaCodec.BUFFER_FLAG_KEY_FRAME) {
screenMes.frameType
0
}
else
{
1
val toByteArray
screenMes.build().toByteArray()
byteBuffer.clear()
byteBuffer.putInt(toByteArray.size
+
4
)
byteBuffer.putInt(UdxType.Type_Send_Frame)
byteBuffer.put(toByteArray)
byteBuffer.flip()
(mUdxState
(mFlowSort >
999999999999999999
SendUtils.getInstance().handlePacket(true, byteBuffer, screenMes.frameType)
[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。