Hi,

HEAD currently does note pass "make fate-hevc THREADS=6" because of a
missing output frame in POC_A. Except for this sequence, the patch
passes for THREADS={2,3,4,6,7} on a 6-cores system.

This is more of an RFC because the value used in reporting surprises
me and my understanding leads to the attached patch.

Another point irrelevant to this patch is the "+9" in
hevc_await_progress. While qpel may access 4 lines more (warranting a
+4 or +5), I don't understand the rationale for +9.

-- 
Christophe
From 02ea44ba0918ffc08045374355057e69767f9973 Mon Sep 17 00:00:00 2001
From: Christophe Gisquet <christophe.gisq...@gmail.com>
Date: Fri, 18 Jul 2014 16:44:43 +0200
Subject: [PATCH] hevc: report more precise progress

After a CTB has been filtered, only the bottom and rightmost parts may still
be modified by filtering of other CTBs later on, for up to 4 pixels.

Therefore, report progress up to those 4 bottom pixels. Up to 20% speedup for
a lowdelay-P sequence using 6 cores.
---
 libavcodec/hevc_filter.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/libavcodec/hevc_filter.c b/libavcodec/hevc_filter.c
index 0d3e238..a724e78 100644
--- a/libavcodec/hevc_filter.c
+++ b/libavcodec/hevc_filter.c
@@ -687,17 +687,17 @@ void ff_hevc_hls_filter(HEVCContext *s, int x, int y, int ctb_size)
         if (y && x_end) {
             sao_filter_CTB(s, x, y - ctb_size);
             if (s->threads_type & FF_THREAD_FRAME )
-                ff_thread_report_progress(&s->ref->tf, y - ctb_size, 0);
+                ff_thread_report_progress(&s->ref->tf, y - 4, 0);
         }
         if (x_end && y_end) {
             sao_filter_CTB(s, x , y);
             if (s->threads_type & FF_THREAD_FRAME )
-                ff_thread_report_progress(&s->ref->tf, y, 0);
+                ff_thread_report_progress(&s->ref->tf, y + ctb_size - 4, 0);
         }
     } else {
         if (y && x >= s->sps->width - ctb_size)
             if (s->threads_type & FF_THREAD_FRAME )
-                ff_thread_report_progress(&s->ref->tf, y, 0);
+                ff_thread_report_progress(&s->ref->tf, y + ctb_size - 4, 0);
     }
 }
 
-- 
1.9.2.msysgit.0

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to