diff options
author | Saurabh Kothawade <skothawa@codeaurora.org> | 2017-09-18 17:43:03 -0700 |
---|---|---|
committer | Saurabh Kothawade <skothawa@codeaurora.org> | 2017-09-25 14:29:44 -0700 |
commit | ee906b3b5a7aabe36b6e2e89ed02361b0e01ceeb (patch) | |
tree | dc19b00421b9f720ee85df7db243d120150422bd /mm-video-v4l2 | |
parent | e1c701151c7f71a7a069e6b24ae299b7453403e9 (diff) | |
download | media-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.cpp | 22 |
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; } |