[FFmpeg-cvslog] ffv1enc: allow encoding with 1 slice for CIF and smaller in version 3

Michael Niedermayer git at videolan.org
Wed Dec 5 01:35:06 CET 2012


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Wed Dec  5 01:20:44 2012 +0100| [8bf16e677f5df5c71e92dcfd1cc5b2e2df15410b] | committer: Michael Niedermayer

ffv1enc: allow encoding with 1 slice for CIF and smaller in version 3

the default is still 4 slices for any resolution, this just allows the user
to force 1 slice.
This in my quick test improves compression by 1% for a 320x240 sample

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=8bf16e677f5df5c71e92dcfd1cc5b2e2df15410b
---

 libavcodec/ffv1enc.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libavcodec/ffv1enc.c b/libavcodec/ffv1enc.c
index b3879fc..031db06 100644
--- a/libavcodec/ffv1enc.c
+++ b/libavcodec/ffv1enc.c
@@ -872,7 +872,8 @@ static av_cold int encode_init(AVCodecContext *avctx)
     }
 
     if (s->version > 1) {
-        for (s->num_v_slices = 2; s->num_v_slices < 9; s->num_v_slices++) {
+        s->num_v_slices = (avctx->width > 352 || avctx->height > 288 || !avctx->slices) ? 2 : 1;
+        for (; s->num_v_slices < 9; s->num_v_slices++) {
             for (s->num_h_slices = s->num_v_slices; s->num_h_slices < 2*s->num_v_slices; s->num_h_slices++) {
                 if (avctx->slices == s->num_h_slices * s->num_v_slices && avctx->slices <= 64 || !avctx->slices)
                     goto slices_ok;



More information about the ffmpeg-cvslog mailing list