summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libhb/qsv_common.c91
-rw-r--r--libhb/qsv_common.h2
2 files changed, 69 insertions, 24 deletions
diff --git a/libhb/qsv_common.c b/libhb/qsv_common.c
index e70220a87..d9143c8fd 100644
--- a/libhb/qsv_common.c
+++ b/libhb/qsv_common.c
@@ -10,6 +10,7 @@
#ifdef USE_QSV
#include <stdio.h>
+#include <string.h>
#include "hb.h"
#include "ports.h"
@@ -416,7 +417,7 @@ static int query_capabilities(mfxSession session, mfxVersion version, hb_qsv_inf
}
if (extCodingOption2.NumMbPerSlice)
{
- info->capabilities |= HB_QSV_CAP_OPTION2_NMBSLICE;
+ info->capabilities |= HB_QSV_CAP_OPTION2_NMPSLICE;
}
}
}
@@ -500,26 +501,70 @@ int hb_qsv_info_init()
static void log_capabilities(int log_level, uint64_t caps, const char *prefix)
{
- if (!caps)
+ /*
+ * Note: keep the string short, as it may be logged by default.
+ */
+ char buffer[128] = "";
+
+ /* B-Pyramid, with or without direct control (BRefType) */
+ if (caps & HB_QSV_CAP_B_REF_PYRAMID)
{
- hb_deep_log(log_level, "%s none (standard feature set)", prefix);
+ if (caps & HB_QSV_CAP_OPTION2_BREFTYPE)
+ {
+ strcat(buffer, " breftype");
+ }
+ else
+ {
+ strcat(buffer, " bpyramid");
+ }
}
- else
+ /* Rate control: ICQ, lookahead (options: interlaced, downsampling) */
+ if (caps & HB_QSV_CAP_RATECONTROL_LA)
+ {
+ if (caps & HB_QSV_CAP_RATECONTROL_ICQ)
+ {
+ strcat(buffer, " icq+la");
+ }
+ else
+ {
+ strcat(buffer, " la");
+ }
+ if (caps & HB_QSV_CAP_RATECONTROL_LAi)
+ {
+ strcat(buffer, "+i");
+ }
+ if (caps & HB_QSV_CAP_OPTION2_LA_DOWNS)
+ {
+ strcat(buffer, "+downs");
+ }
+ }
+ else if (caps & HB_QSV_CAP_RATECONTROL_ICQ)
+ {
+ strcat(buffer, " icq");
+ }
+ if (caps & HB_QSV_CAP_OPTION2_MBBRC)
+ {
+ strcat(buffer, " mbbrc");
+ }
+ if (caps & HB_QSV_CAP_OPTION2_EXTBRC)
{
- hb_deep_log(log_level, "%s%s%s%s%s%s%s%s%s%s%s%s%s", prefix,
- !(caps & HB_QSV_CAP_MSDK_API_1_6) ? "" : " api1.6",
- !(caps & HB_QSV_CAP_B_REF_PYRAMID) ? "" : " bpyramid",
- !(caps & HB_QSV_CAP_OPTION2_BREFTYPE) ? "" : " breftype",
- !(caps & HB_QSV_CAP_RATECONTROL_LA) ? "" : " lookahead",
- !(caps & HB_QSV_CAP_RATECONTROL_LAi) ? "" : " lookaheadi",
- !(caps & HB_QSV_CAP_OPTION2_LA_DOWNS) ? "" : " lookaheadds",
- !(caps & HB_QSV_CAP_RATECONTROL_ICQ) ? "" : " icq",
- !(caps & HB_QSV_CAP_OPTION2_MBBRC) ? "" : " mbbrc",
- !(caps & HB_QSV_CAP_OPTION2_EXTBRC) ? "" : " extbrc",
- !(caps & HB_QSV_CAP_OPTION2_TRELLIS) ? "" : " trellis",
- !(caps & HB_QSV_CAP_OPTION2_IB_ADAPT) ? "" : " adaptivei adaptiveb",
- !(caps & HB_QSV_CAP_OPTION2_NMBSLICE) ? "" : " nummbperslice");
+ strcat(buffer, " extbrc");
}
+ if (caps & HB_QSV_CAP_OPTION2_TRELLIS)
+ {
+ strcat(buffer, " trellis");
+ }
+ if (caps & HB_QSV_CAP_OPTION2_IB_ADAPT)
+ {
+ strcat(buffer, " ib_adapt");
+ }
+ if (caps & HB_QSV_CAP_OPTION2_NMPSLICE)
+ {
+ strcat(buffer, " nmpslice");
+ }
+
+ hb_deep_log(log_level, "%s%s", prefix,
+ strnlen(buffer, 1) ? buffer : " standard feature set");
}
void hb_qsv_info_print()
@@ -550,12 +595,12 @@ void hb_qsv_info_print()
hb_qsv_impl_get_name(hb_qsv_info_avc->implementation));
if (qsv_hardware_info_avc.available)
{
- log_capabilities(2, qsv_hardware_info_avc.capabilities,
+ log_capabilities(1, qsv_hardware_info_avc.capabilities,
" - capabilities (hardware): ");
}
if (qsv_software_info_avc.available)
{
- log_capabilities(2, qsv_software_info_avc.capabilities,
+ log_capabilities(1, qsv_software_info_avc.capabilities,
" - capabilities (software): ");
}
}
@@ -565,9 +610,9 @@ void hb_qsv_info_print()
}
if (hb_qsv_info_hevc != NULL && hb_qsv_info_hevc->available)
{
- hb_log(" - H.265 encoder: yes (unsupported)");
- hb_log(" - preferred implementation: %s",
- hb_qsv_impl_get_name(hb_qsv_info_hevc->implementation));
+ hb_deep_log(2, " - H.265 encoder: yes (unsupported)");
+ hb_deep_log(2, " - preferred implementation: %s",
+ hb_qsv_impl_get_name(hb_qsv_info_hevc->implementation));
if (qsv_hardware_info_hevc.available)
{
log_capabilities(2, qsv_hardware_info_hevc.capabilities,
@@ -581,7 +626,7 @@ void hb_qsv_info_print()
}
else
{
- hb_log(" - H.265 encoder: no");
+ hb_deep_log(2, " - H.265 encoder: no");
}
}
}
diff --git a/libhb/qsv_common.h b/libhb/qsv_common.h
index dad517f4d..4b2630f39 100644
--- a/libhb/qsv_common.h
+++ b/libhb/qsv_common.h
@@ -53,7 +53,7 @@ typedef struct hb_qsv_info_s
#define HB_QSV_CAP_OPTION2_BREFTYPE (1LL << 23)
#define HB_QSV_CAP_OPTION2_IB_ADAPT (1LL << 24)
#define HB_QSV_CAP_OPTION2_LA_DOWNS (1LL << 25)
-#define HB_QSV_CAP_OPTION2_NMBSLICE (1LL << 26)
+#define HB_QSV_CAP_OPTION2_NMPSLICE (1LL << 26)
// TODO: add maximum encode resolution, etc.
} hb_qsv_info_t;