summaryrefslogtreecommitdiff
path: root/mm-video-v4l2
diff options
context:
space:
mode:
authorSaurabh Kothawade <skothawa@codeaurora.org>2017-09-18 17:43:03 -0700
committerSaurabh Kothawade <skothawa@codeaurora.org>2017-09-25 14:29:44 -0700
commitee906b3b5a7aabe36b6e2e89ed02361b0e01ceeb (patch)
treedc19b00421b9f720ee85df7db243d120150422bd /mm-video-v4l2
parente1c701151c7f71a7a069e6b24ae299b7453403e9 (diff)
downloadmedia-ee906b3b5a7aabe36b6e2e89ed02361b0e01ceeb.tar.gz
mm-video-v4l2: venc: Update conditions for enabling HP
Update validation logic to enable Hier P layers by default in video encode use-cases. If encoder resolution is 1080p or less and fps 60 or less, don't enable HP by default. Moreover, when resolution is more than 1080p, enable HP when fps is higher than 30. CRs-Fixed: 2112004 Change-Id: I9e05814d3603ada271d01d96b5703017dbc7124f
Diffstat (limited to 'mm-video-v4l2')
-rw-r--r--mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp22
1 files changed, 20 insertions, 2 deletions
diff --git a/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp b/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp
index 8b8f2767..4c0442d9 100644
--- a/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp
+++ b/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp
@@ -6550,8 +6550,21 @@ bool venc_dev::venc_convert_abs2cum_bitrate(QOMX_EXTNINDEX_VIDEO_HYBRID_HP_MODE
bool venc_dev::venc_validate_temporal_settings() {
- if (((m_sVenc_cfg.fps_num / m_sVenc_cfg.fps_den) < 60) && (operating_rate < 60)) {
- DEBUG_PRINT_HIGH("TemporalLayer: Invalid FPS/operating rate settings for Hier layers");
+ bool fps_30_plus = false;
+ bool fps_60_plus = false;
+ bool res_1080p_plus = false;
+
+ fps_30_plus = (((m_sVenc_cfg.fps_num / m_sVenc_cfg.fps_den) > 30) || ((operating_rate) > 30));
+ fps_60_plus = (((m_sVenc_cfg.fps_num / m_sVenc_cfg.fps_den) > 60) || ((operating_rate) > 60));
+ res_1080p_plus = ((m_sVenc_cfg.input_width * m_sVenc_cfg.input_height / 256) > (1920 * 1088 / 256));
+
+ if (res_1080p_plus == false && fps_60_plus == false) {
+ DEBUG_PRINT_HIGH("TemporalLayer: Hier layers cannot be enabled for res <= 1080p & fps <= 60");
+ return false;
+ }
+
+ if (res_1080p_plus == true && fps_30_plus == false) {
+ DEBUG_PRINT_HIGH("TemporalLayer: Hier layers cannot be enabled for res > 1080p & fps <= 30");
return false;
}
@@ -6560,6 +6573,11 @@ bool venc_dev::venc_validate_temporal_settings() {
return false;
}
+ if (rate_ctrl.rcmode == V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_OFF) {
+ DEBUG_PRINT_HIGH("TemporalLayer: Hier layers cannot be enabled when RC is off");
+ return false;
+ }
+
return true;
}