diff options
author | Rodeo <[email protected]> | 2013-10-12 00:30:02 +0000 |
---|---|---|
committer | Rodeo <[email protected]> | 2013-10-12 00:30:02 +0000 |
commit | b450b844c8cf8399c129fadb08f9eaa05acedcb1 (patch) | |
tree | d9337699251341316b595f21e756fa97619387e2 /libhb/work.c | |
parent | 66009cb19c3ba6b6a27fc4bcbf1373cb90307a80 (diff) |
QSV: improve CopyFrame bug workaround a bit.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@5834 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'libhb/work.c')
-rw-r--r-- | libhb/work.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/libhb/work.c b/libhb/work.c index 24f05282b..6ed374a3c 100644 --- a/libhb/work.c +++ b/libhb/work.c @@ -697,13 +697,12 @@ static void do_job(hb_job_t *job) * the list and we can't use CopyFrame, disable QSV decoding until a * better solution is implemented. */ - if (!(hb_qsv_info->capabilities & HB_QSV_CAP_COPYFRAME)) + if (!(hb_qsv_info->capabilities & HB_QSV_CAP_CORE_COPYFRAME)) { if (job->list_filter != NULL) { - for (i = 0; - i < hb_list_count(job->list_filter) && hb_qsv_decode_is_enabled(job); - i++) + int encode_only = 0; + for (i = 0; i < hb_list_count(job->list_filter) && !encode_only; i++) { hb_filter_object_t *filter = hb_list_item(job->list_filter, i); switch (filter->id) @@ -711,8 +710,7 @@ static void do_job(hb_job_t *job) // validated, CPU-based filters case HB_FILTER_ROTATE: case HB_FILTER_RENDER_SUB: - hb_log("do_job: QSV: CopyFrame unavailable, using encode-only path"); - job->qsv.decode = 0; + encode_only = 1; break; // CPU-based deinterlace (validated) @@ -720,8 +718,7 @@ static void do_job(hb_job_t *job) if (filter->settings != NULL && strcasecmp(filter->settings, "qsv") != 0) { - hb_log("do_job: QSV: CopyFrame unavailable, using encode-only path"); - job->qsv.decode = 0; + encode_only = 1; } break; @@ -730,6 +727,15 @@ static void do_job(hb_job_t *job) break; } } + if (encode_only) + { + hb_log("do_job: QSV: possible CopyFrame bug, using encode-only path"); + if (hb_get_cpu_platform() >= HB_CPU_PLATFORM_INTEL_IVB) + { + hb_log("do_job: QSV: please update your Intel graphics driver to version 9.18.10.3257 or later"); + } + job->qsv.decode = 0; + } } } |