summarylogtreecommitdiffstats
path: root/handbrake-fix-2-pass-vp8-and-vp9-encoding.patch
diff options
context:
space:
mode:
Diffstat (limited to 'handbrake-fix-2-pass-vp8-and-vp9-encoding.patch')
-rw-r--r--handbrake-fix-2-pass-vp8-and-vp9-encoding.patch31
1 files changed, 31 insertions, 0 deletions
diff --git a/handbrake-fix-2-pass-vp8-and-vp9-encoding.patch b/handbrake-fix-2-pass-vp8-and-vp9-encoding.patch
new file mode 100644
index 000000000000..cd506bc82fe7
--- /dev/null
+++ b/handbrake-fix-2-pass-vp8-and-vp9-encoding.patch
@@ -0,0 +1,31 @@
+From d64dba737d0136b58545be33c50db093df1880c1 Mon Sep 17 00:00:00 2001
+From: John Stebbins <jstebbins.hb@gmail.com>
+Date: Tue, 27 Dec 2016 08:57:06 -0800
+Subject: [PATCH] encavcodec: fix 2 pass vp8 and vp9 encoding
+
+libvpx only supplies the stats upon the final flush of the encoder. So
+we must also write stats after final flush.
+---
+ libhb/encavcodec.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/libhb/encavcodec.c b/libhb/encavcodec.c
+index 0543fe4..591aa4f 100644
+--- a/libhb/encavcodec.c
++++ b/libhb/encavcodec.c
+@@ -610,6 +610,15 @@ static void Flush( hb_work_object_t * w, hb_buffer_list_t * list )
+ hb_work_private_t * pv = w->private_data;
+
+ avcodec_send_frame(pv->context, NULL);
++
++ // Write stats
++ // vpx only writes stats at final flush
++ if (pv->job->pass_id == HB_PASS_ENCODE_1ST &&
++ pv->context->stats_out != NULL)
++ {
++ fprintf( pv->file, "%s", pv->context->stats_out );
++ }
++
+ get_packets(w, list);
+ }
+