avcodec/mjpegenc: move end padding/alignment to ff_mjpeg_escape_FF()
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 6 Dec 2013 10:55:23 +0000 (11:55 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 6 Dec 2013 11:01:28 +0000 (12:01 +0100)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/mjpegenc.c

index 34de4bd..423a2f5 100644 (file)
@@ -326,10 +326,17 @@ end:
 
 void ff_mjpeg_escape_FF(PutBitContext *pb, int start)
 {
-    int size = put_bits_count(pb) - start * 8;
+    int size;
     int i, ff_count;
     uint8_t *buf = pb->buf + start;
     int align= (-(size_t)(buf))&3;
+    int pad = (-put_bits_count(pb))&7;
+
+    if (pad)
+        put_bits(pb, pad, (1<<pad)-1);
+
+    flush_put_bits(pb);
+    size = put_bits_count(pb) - start * 8;
 
     av_assert1((size&7) == 0);
     size >>= 3;
@@ -381,11 +388,8 @@ void ff_mjpeg_encode_stuffing(MpegEncContext *s)
     int length, i;
     PutBitContext *pbc = &s->pb;
     int mb_y = s->mb_y - !s->mb_x;
-    length= (-put_bits_count(pbc))&7;
-    if(length) put_bits(pbc, length, (1<<length)-1);
 
-    flush_put_bits(&s->pb);
-    ff_mjpeg_escape_FF(&s->pb, s->esc_pos);
+    ff_mjpeg_escape_FF(pbc, s->esc_pos);
 
     if((s->avctx->active_thread_type & FF_THREAD_SLICE) && mb_y < s->mb_height)
         put_marker(pbc, RST0 + (mb_y&7));