DUMP码流
框架层
如果在媒体框架层dump流可以使用如下方法
$ setenforce 0
$ mkdir /data/video/
1)Android 12 及以上的版本使用 Codec2 框架,按以下命令抓取
$ setprop vendor.c2.vdec.debug 0x0f000000
2)Android 11 及之前的版本使用 OMX 框架,按以下命令抓取
// 解码 dec_in*.bin
$ setprop vendor.omx.vdec.debug 0x01000000
$ setprop record_omx_dec_in 1
// 编码enc_in*.bin enc_out*.bin
$ setprop vendor.omx.venc.debug 0x03000000
$ setprop record_omx_enc_in 1
$ setprop record_omx_enc_out 1
以上命令会在 /data/video 目录下生成dump文件
编码库
如果以上方法无法生成文件,则可以使用底层编码库的开关
$ setenforce 0
$ mkdir /data/video/
$ setprop mpp_dump_in /data/video/mpp_dec_in.bin
$ setprop mpp_dump_out /data/video/mpp_dec_out.bin
$ setprop vendor.mpp_dump_in /data/video/mpp_dec_in.bin
$ setprop vendor.mpp_dump_out /data/video/mpp_dec_out.bin
$ setprop mpp_debug 0x600 && setprop vendor.mpp_debug 0x600
打印每帧的编解码时间
vpu
// 内核单帧解码时间
4.19/5.10 内核(Android 10.0及以上版本)
$ echo 0x0100 > /sys/module/rk_vcodec/parameters/mpp_dev_debug
$ cat /proc/kmsg
4.4 内核(Android 7.1到9.0)
$ echo 0x0100 > /sys/module/rk_vcodec/parameters/debug
$ cat /proc/kmsg
框架层
框架层的打印如下,可以在logcat搜索出来
setprop vendor.dump.c2.log 1
c2_trace("in buffer attr. size %zu timestamp %lld frameindex %lld, flags %x",
inSize, timestamp, frameIndex, flags);
c2_trace("get one frame [%d:%d] stride [%d:%d] pts %lld err %d eos %d",
width, height, hstride, vstride, pts, err, eos);