MediaCodec

areRenderMetricsEnabled()

在这里插入图片描述

  1. server_configurable_flags::GetServerConfigurableFlag 函数的本质:
    把参数_1和参数_2和 “persist.device_config” 拼接到一块,当做property的key值,获取其value,如果没有,就获取默认值
"persist.device_config.${param_1_string}.${param_2_string}"
  1. areRenderMetricsEnabled 获取 persist.device_config.media_native.render_metrics_enabled 属性值,返回值如下:
    a. Pixel 8a 返回 false;
    b. XiaoMi 13 Ultra 返回空,故也是false

VideoRenderQualityTracker::Configuration::getFromServerConfigurableFlags(GetServerConfigurableFlag)

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/386962ba13d1496a96e3bb0e3312d44f.png在这里插入图片描述

getFlag的本质是,获取 persist.device_config.media_native.render_metrics_xxx 存放到 c.xxx变量中
如果找不到对应的属性值,c.xxx的值不变

而执行命令 adb shell getprop | findstr persist.device_config.media_native ,获得结果如下:
Pixel 8a

C:\Users\Liming>adb shell getprop | findstr persist.device_config.media_native
[persist.device_config.media_native.render_metrics_are_skipped_frames_dropped]: [true]
[persist.device_config.media_native.render_metrics_enable]: [true]
[persist.device_config.media_native.render_metrics_enabled]: [false]
[persist.device_config.media_native.render_metrics_frame_detection_tolerance_us]: [2000]
[persist.device_config.media_native.render_metrics_freeze_distance_ms_histogram_buckets]: [0,20,100,400,1000,2000,3000,4000,8000,15000,30000,60000]
[persist.device_config.media_native.render_metrics_freeze_duration_ms_histogram_buckets]: [0,20,40,60,80,100,120,150,175,225,300,400,500]
[persist.device_config.media_native.render_metrics_freeze_duration_ms_histogram_to_score]: [1,1,50,50,100,100,100,100,100,100,250,250,500]
[persist.device_config.media_native.render_metrics_freeze_event_details_max]: [20]
[persist.device_config.media_native.render_metrics_freeze_event_distance_ms_max]: [60000]
[persist.device_config.media_native.render_metrics_freeze_event_max]: [0]
[persist.device_config.media_native.render_metrics_judder_error_tolerance_us]: [2000]
[persist.device_config.media_native.render_metrics_judder_event_details_max]: [20]
[persist.device_config.media_native.render_metrics_judder_event_distance_ms_max]: [5000]
[persist.device_config.media_native.render_metrics_judder_event_max]: [0]
[persist.device_config.media_native.render_metrics_judder_score_histogram_buckets]: [0,4,5,9,11,20,30,40,50,60,70,80]
[persist.device_config.media_native.render_metrics_judder_score_histogram_to_score]: [1,1,1,1,1,1,1,1,1,1,1,1]
[persist.device_config.media_native.render_metrics_live_content_frame_drop_tolerance_us]: [200000]
[persist.device_config.media_native.render_metrics_max_expected_content_frame_duration_us]: [400000]
[persist.device_config.media_native.render_metrics_trace_maximum_freeze_duration_ms]: [1500]
[persist.device_config.media_native.render_metrics_trace_minimum_freeze_duration_ms]: [400]
[persist.device_config.media_native.render_metrics_trace_trigger_enabled]: [false]
[persist.device_config.media_native.render_metrics_trace_trigger_throttle_ms]: [300000]

故 VideoRenderQualityTracker::Configuration c 的一些变量如下:

enabled: false
areSkippedFramesDropped: true
maxExpectedContentFrameDurationUs: 400000
frameRateDetectionToleranceUs: 2000
liveContentFrameDropToleranceUs: 200000
freezeDurationMsHistogramBuckets:[0,20,40,60,80,100,120,150,175,225,300,400,500]
freezeDurationMsHistogramToScore:[1,1,50,50,100,100,100,100,100,100,250,250,500]
freezeDistanceMsHistogramBuckets: [0,20,100,400,1000,2000,3000,4000,8000,15000,30000,60000]
freezeEventMax: 0
freezeEventDetailsMax: 20
freezeEventDistanceToleranceMs: 原始值, 60000
judderErrorToleranceUs: 2000
judderScoreHistogramBuckets: [0,4,5,9,11,20,30,40,50,60,70,80]
judderScoreHistogramToScore: [1,1,1,1,1,1,1,1,1,1,1,1]
judderEventMax: 0
judderEventDetailsMax: 20
judderEventDistanceToleranceMs: 原始值, 5000

XiaoMi 13 Ultra上返回空, 故 VideoRenderQualityTracker::Configuration c 仍然采用代码中默认的值
而 MediaCodec与 VideoRenderQualityTracker 以及 VideoRenderQualityTracker::Configuration 的关系如下:

在这里插入图片描述

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐