summaryrefslogtreecommitdiffstats
path: root/libhb
diff options
context:
space:
mode:
authorRodeo <[email protected]>2014-03-04 00:11:00 +0000
committerRodeo <[email protected]>2014-03-04 00:11:00 +0000
commita50faa6dcb89f6a2a9b2f07d38aced702e973b00 (patch)
tree6cd82e44c65c6129d4725baf9903632bd453c054 /libhb
parent5ade22957f09e273e1bae383b2967fb65c9419b1 (diff)
QSV: alternate workaround for B-pyramid + keyframe insertion issue.
The original workaround (SVN 6016) got rid of the invalid timestamps, but did nothing to prevent visual artifacts. Since it doesn't look like I'll be fixing the underlying cause right away, this will avoid broken output for our users in the meantime. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@6098 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'libhb')
-rw-r--r--libhb/enc_qsv.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/libhb/enc_qsv.c b/libhb/enc_qsv.c
index c3129b749..86f786bdb 100644
--- a/libhb/enc_qsv.c
+++ b/libhb/enc_qsv.c
@@ -794,6 +794,16 @@ int encqsvInit(hb_work_object_t *w, hb_job_t *job)
{
gop_ref_dist *= 2;
}
+ /*
+ * XXX: B-pyramid + forced keyframes will cause visual artifacts,
+ * force-disable B-pyramid until we insert keyframes properly
+ */
+ if (pv->param.gop.b_pyramid && job->chapter_markers)
+ {
+ pv->param.gop.b_pyramid = 0;
+ hb_log("encqsvInit: chapter markers enabled, disabling B-pyramid "
+ "to work around a bug in our keyframe insertion code");
+ }
if ((pv->param.gop.b_pyramid) &&
(pv->param.videoParam->mfx.GopPicSize == 0 ||
pv->param.videoParam->mfx.GopPicSize > gop_ref_dist))
@@ -1556,16 +1566,6 @@ int encqsvWork( hb_work_object_t * w, hb_buffer_t ** buf_in,
((task->bs->TimeStamp -
task->bs->DecodeTimeStamp +
(duration / 2)) / duration));
-
- // When forcing an IDR for a chapter right after another IDR
- // selected by MSDK, we may end up with one more consecutive
- // B-reference frame than the original delay accounts for;
- // work around it by incrementing the delay in this case
- if (pv->bfrm_workaround && job->chapter_markers &&
- pv->bfrm_delay > 1)
- {
- pv->bfrm_delay++;
- }
}
if (!pv->bfrm_workaround)