]> granicus.if.org Git - handbrake/commitdiff
encavcodec: Fix dts timestamps in VT h.265 encoding
authorJohn Stebbins <jstebbins.hb@gmail.com>
Wed, 16 Jan 2019 16:49:47 +0000 (08:49 -0800)
committerJohn Stebbins <jstebbins.hb@gmail.com>
Fri, 18 Jan 2019 20:10:18 +0000 (12:10 -0800)
The VT h.265 encoder appears to enable b-pyramid, but doesn't expose any
method to modify the setting or query for its value.  So we'll just
assume it's always on whenever there are b-frames.

Fixes https://github.com/HandBrake/HandBrake/issues/1689

libhb/encavcodec.c

index c53d73994a72e7571d18bc6224abe16e422afb6a..5e5c0f900bbc1c3fe7808626c0d0641a041d01e8 100644 (file)
@@ -653,9 +653,19 @@ int encavcodecInit( hb_work_object_t * w, hb_job_t * job )
     pv->context = context;
 
     job->areBframes = 0;
-    if ( context->has_b_frames )
+    if (context->has_b_frames > 0)
     {
-        job->areBframes = 1;
+        if (job->vcodec == HB_VCODEC_FFMPEG_VT_H265)
+        {
+            // VT appears to enable b-pyramid by default and there
+            // is no documented way of modifying this behaviour or
+            // querying if it is enabled.
+            job->areBframes = 2;
+        }
+        else
+        {
+            job->areBframes = context->has_b_frames;
+        }
     }
 
     if (context->extradata != NULL)