summaryrefslogtreecommitdiffstats
path: root/libhb/work.c
diff options
context:
space:
mode:
authorRodeo <[email protected]>2013-10-12 00:30:02 +0000
committerRodeo <[email protected]>2013-10-12 00:30:02 +0000
commitb450b844c8cf8399c129fadb08f9eaa05acedcb1 (patch)
treed9337699251341316b595f21e756fa97619387e2 /libhb/work.c
parent66009cb19c3ba6b6a27fc4bcbf1373cb90307a80 (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.c22
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;
+ }
}
}