]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/h261enc.c
h264: K&R formatting cosmetics
[ffmpeg] / libavcodec / h261enc.c
index f67d31344a273a26372ad9ca7ed5c34df00d4aa3..5f0baba46528d8d3d2a066b28a1fb2e7b71e81aa 100644 (file)
  * H.261 encoder.
  */
 
+#include "libavutil/attributes.h"
 #include "avcodec.h"
+#include "mpegutils.h"
 #include "mpegvideo.h"
 #include "h263.h"
 #include "h261.h"
-#include "h261data.h"
-
-static void h261_encode_block(H261Context *h, int16_t *block,
-                              int n);
 
 int ff_h261_get_picture_format(int width, int height)
 {
@@ -132,7 +130,7 @@ static void h261_encode_motion(H261Context *h, int val)
     int sign, code;
     if (val == 0) {
         code = 0;
-        put_bits(&s->pb, h261_mv_tab[code][1], h261_mv_tab[code][0]);
+        put_bits(&s->pb, ff_h261_mv_tab[code][1], ff_h261_mv_tab[code][0]);
     } else {
         if (val > 15)
             val -= 32;
@@ -140,7 +138,7 @@ static void h261_encode_motion(H261Context *h, int val)
             val += 32;
         sign = val < 0;
         code = sign ? -val : val;
-        put_bits(&s->pb, h261_mv_tab[code][1], h261_mv_tab[code][0]);
+        put_bits(&s->pb, ff_h261_mv_tab[code][1], ff_h261_mv_tab[code][0]);
         put_bits(&s->pb, 1, sign);
     }
 }
@@ -155,6 +153,79 @@ static inline int get_cbp(MpegEncContext *s, int16_t block[6][64])
     return cbp;
 }
 
+/**
+ * Encode an 8x8 block.
+ * @param block the 8x8 block
+ * @param n block index (0-3 are luma, 4-5 are chroma)
+ */
+static void h261_encode_block(H261Context *h, int16_t *block, int n)
+{
+    MpegEncContext *const s = &h->s;
+    int level, run, i, j, last_index, last_non_zero, sign, slevel, code;
+    RLTable *rl;
+
+    rl = &ff_h261_rl_tcoeff;
+    if (s->mb_intra) {
+        /* DC coef */
+        level = block[0];
+        /* 255 cannot be represented, so we clamp */
+        if (level > 254) {
+            level    = 254;
+            block[0] = 254;
+        }
+        /* 0 cannot be represented also */
+        else if (level < 1) {
+            level    = 1;
+            block[0] = 1;
+        }
+        if (level == 128)
+            put_bits(&s->pb, 8, 0xff);
+        else
+            put_bits(&s->pb, 8, level);
+        i = 1;
+    } else if ((block[0] == 1 || block[0] == -1) &&
+               (s->block_last_index[n] > -1)) {
+        // special case
+        put_bits(&s->pb, 2, block[0] > 0 ? 2 : 3);
+        i = 1;
+    } else {
+        i = 0;
+    }
+
+    /* AC coefs */
+    last_index    = s->block_last_index[n];
+    last_non_zero = i - 1;
+    for (; i <= last_index; i++) {
+        j     = s->intra_scantable.permutated[i];
+        level = block[j];
+        if (level) {
+            run    = i - last_non_zero - 1;
+            sign   = 0;
+            slevel = level;
+            if (level < 0) {
+                sign  = 1;
+                level = -level;
+            }
+            code = get_rl_index(rl, 0 /*no last in H.261, EOB is used*/,
+                                run, level);
+            if (run == 0 && level < 16)
+                code += 1;
+            put_bits(&s->pb, rl->table_vlc[code][1], rl->table_vlc[code][0]);
+            if (code == rl->n) {
+                put_bits(&s->pb, 6, run);
+                assert(slevel != 0);
+                assert(level <= 127);
+                put_sbits(&s->pb, 8, slevel);
+            } else {
+                put_bits(&s->pb, 1, sign);
+            }
+            last_non_zero = i;
+        }
+    }
+    if (last_index > -1)
+        put_bits(&s->pb, rl->table_vlc[0][1], rl->table_vlc[0][0]); // EOB
+}
+
 void ff_h261_encode_mb(MpegEncContext *s, int16_t block[6][64],
                        int motion_x, int motion_y)
 {
@@ -183,8 +254,9 @@ void ff_h261_encode_mb(MpegEncContext *s, int16_t block[6][64],
     }
 
     /* MB is not skipped, encode MBA */
-    put_bits(&s->pb, h261_mba_bits[(h->current_mba - h->previous_mba) - 1],
-             h261_mba_code[(h->current_mba - h->previous_mba) - 1]);
+    put_bits(&s->pb,
+             ff_h261_mba_bits[(h->current_mba - h->previous_mba) - 1],
+             ff_h261_mba_code[(h->current_mba - h->previous_mba) - 1]);
 
     /* calculate MTYPE */
     if (!s->mb_intra) {
@@ -202,9 +274,11 @@ void ff_h261_encode_mb(MpegEncContext *s, int16_t block[6][64],
     if (s->dquant)
         h->mtype++;
 
-    put_bits(&s->pb, h261_mtype_bits[h->mtype], h261_mtype_code[h->mtype]);
+    put_bits(&s->pb,
+             ff_h261_mtype_bits[h->mtype],
+             ff_h261_mtype_code[h->mtype]);
 
-    h->mtype = h261_mtype_map[h->mtype];
+    h->mtype = ff_h261_mtype_map[h->mtype];
 
     if (IS_QUANT(h->mtype)) {
         ff_set_qscale(s, s->qscale + s->dquant);
@@ -224,7 +298,9 @@ void ff_h261_encode_mb(MpegEncContext *s, int16_t block[6][64],
 
     if (HAS_CBP(h->mtype)) {
         assert(cbp > 0);
-        put_bits(&s->pb, h261_cbp_tab[cbp - 1][1], h261_cbp_tab[cbp - 1][0]);
+        put_bits(&s->pb,
+                 ff_h261_cbp_tab[cbp - 1][1],
+                 ff_h261_cbp_tab[cbp - 1][0]);
     }
     for (i = 0; i < 6; i++)
         /* encode each block */
@@ -237,14 +313,9 @@ void ff_h261_encode_mb(MpegEncContext *s, int16_t block[6][64],
     }
 }
 
-void ff_h261_encode_init(MpegEncContext *s)
+av_cold void ff_h261_encode_init(MpegEncContext *s)
 {
-    static int done = 0;
-
-    if (!done) {
-        done = 1;
-        ff_init_rl(&h261_rl_tcoeff, ff_h261_rl_table_store);
-    }
+    ff_h261_common_init();
 
     s->min_qcoeff       = -127;
     s->max_qcoeff       = 127;
@@ -252,83 +323,11 @@ void ff_h261_encode_init(MpegEncContext *s)
     s->c_dc_scale_table = ff_mpeg1_dc_scale_table;
 }
 
-/**
- * Encode an 8x8 block.
- * @param block the 8x8 block
- * @param n block index (0-3 are luma, 4-5 are chroma)
- */
-static void h261_encode_block(H261Context *h, int16_t *block, int n)
-{
-    MpegEncContext *const s = &h->s;
-    int level, run, i, j, last_index, last_non_zero, sign, slevel, code;
-    RLTable *rl;
-
-    rl = &h261_rl_tcoeff;
-    if (s->mb_intra) {
-        /* DC coef */
-        level = block[0];
-        /* 255 cannot be represented, so we clamp */
-        if (level > 254) {
-            level    = 254;
-            block[0] = 254;
-        }
-        /* 0 cannot be represented also */
-        else if (level < 1) {
-            level    = 1;
-            block[0] = 1;
-        }
-        if (level == 128)
-            put_bits(&s->pb, 8, 0xff);
-        else
-            put_bits(&s->pb, 8, level);
-        i = 1;
-    } else if ((block[0] == 1 || block[0] == -1) &&
-               (s->block_last_index[n] > -1)) {
-        // special case
-        put_bits(&s->pb, 2, block[0] > 0 ? 2 : 3);
-        i = 1;
-    } else {
-        i = 0;
-    }
-
-    /* AC coefs */
-    last_index    = s->block_last_index[n];
-    last_non_zero = i - 1;
-    for (; i <= last_index; i++) {
-        j     = s->intra_scantable.permutated[i];
-        level = block[j];
-        if (level) {
-            run    = i - last_non_zero - 1;
-            sign   = 0;
-            slevel = level;
-            if (level < 0) {
-                sign  = 1;
-                level = -level;
-            }
-            code = get_rl_index(rl, 0 /*no last in H.261, EOB is used*/,
-                                run, level);
-            if (run == 0 && level < 16)
-                code += 1;
-            put_bits(&s->pb, rl->table_vlc[code][1], rl->table_vlc[code][0]);
-            if (code == rl->n) {
-                put_bits(&s->pb, 6, run);
-                assert(slevel != 0);
-                assert(level <= 127);
-                put_sbits(&s->pb, 8, slevel);
-            } else {
-                put_bits(&s->pb, 1, sign);
-            }
-            last_non_zero = i;
-        }
-    }
-    if (last_index > -1)
-        put_bits(&s->pb, rl->table_vlc[0][1], rl->table_vlc[0][0]); // EOB
-}
-
 FF_MPV_GENERIC_CLASS(h261)
 
 AVCodec ff_h261_encoder = {
     .name           = "h261",
+    .long_name      = NULL_IF_CONFIG_SMALL("H.261"),
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_H261,
     .priv_data_size = sizeof(H261Context),
@@ -337,6 +336,5 @@ AVCodec ff_h261_encoder = {
     .close          = ff_MPV_encode_end,
     .pix_fmts       = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P,
                                                      AV_PIX_FMT_NONE },
-    .long_name      = NULL_IF_CONFIG_SMALL("H.261"),
     .priv_class     = &h261_class,
 };