You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	avpacket, bfi, bgmc, rawenc: K&R prettyprinting cosmetics
This commit is contained in:
		| @@ -19,13 +19,13 @@ | ||||
|  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||||
|  */ | ||||
|  | ||||
| #include "avcodec.h" | ||||
| #include "libavutil/avassert.h" | ||||
|  | ||||
| #include "avcodec.h" | ||||
|  | ||||
| void av_destruct_packet_nofree(AVPacket *pkt) | ||||
| { | ||||
|     pkt->data = NULL; pkt->size = 0; | ||||
|     pkt->data            = NULL; | ||||
|     pkt->size            = 0; | ||||
|     pkt->side_data       = NULL; | ||||
|     pkt->side_data_elems = 0; | ||||
| } | ||||
| @@ -35,7 +35,8 @@ void av_destruct_packet(AVPacket *pkt) | ||||
|     int i; | ||||
|  | ||||
|     av_free(pkt->data); | ||||
|     pkt->data = NULL; pkt->size = 0; | ||||
|     pkt->data = NULL; | ||||
|     pkt->size = 0; | ||||
|  | ||||
|     for (i = 0; i < pkt->side_data_elems; i++) | ||||
|         av_free(pkt->side_data[i].data); | ||||
| @@ -45,40 +46,41 @@ void av_destruct_packet(AVPacket *pkt) | ||||
|  | ||||
| void av_init_packet(AVPacket *pkt) | ||||
| { | ||||
|     pkt->pts   = AV_NOPTS_VALUE; | ||||
|     pkt->dts   = AV_NOPTS_VALUE; | ||||
|     pkt->pos   = -1; | ||||
|     pkt->duration = 0; | ||||
|     pkt->pts                  = AV_NOPTS_VALUE; | ||||
|     pkt->dts                  = AV_NOPTS_VALUE; | ||||
|     pkt->pos                  = -1; | ||||
|     pkt->duration             = 0; | ||||
|     pkt->convergence_duration = 0; | ||||
|     pkt->flags = 0; | ||||
|     pkt->stream_index = 0; | ||||
|     pkt->destruct= NULL; | ||||
|     pkt->side_data       = NULL; | ||||
|     pkt->side_data_elems = 0; | ||||
|     pkt->flags                = 0; | ||||
|     pkt->stream_index         = 0; | ||||
|     pkt->destruct             = NULL; | ||||
|     pkt->side_data            = NULL; | ||||
|     pkt->side_data_elems      = 0; | ||||
| } | ||||
|  | ||||
| int av_new_packet(AVPacket *pkt, int size) | ||||
| { | ||||
|     uint8_t *data= NULL; | ||||
|     if((unsigned)size < (unsigned)size + FF_INPUT_BUFFER_PADDING_SIZE) | ||||
|     uint8_t *data = NULL; | ||||
|     if ((unsigned)size < (unsigned)size + FF_INPUT_BUFFER_PADDING_SIZE) | ||||
|         data = av_malloc(size + FF_INPUT_BUFFER_PADDING_SIZE); | ||||
|     if (data){ | ||||
|     if (data) { | ||||
|         memset(data + size, 0, FF_INPUT_BUFFER_PADDING_SIZE); | ||||
|     }else | ||||
|         size=0; | ||||
|     } else | ||||
|         size = 0; | ||||
|  | ||||
|     av_init_packet(pkt); | ||||
|     pkt->data = data; | ||||
|     pkt->size = size; | ||||
|     pkt->data     = data; | ||||
|     pkt->size     = size; | ||||
|     pkt->destruct = av_destruct_packet; | ||||
|     if(!data) | ||||
|     if (!data) | ||||
|         return AVERROR(ENOMEM); | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| void av_shrink_packet(AVPacket *pkt, int size) | ||||
| { | ||||
|     if (pkt->size <= size) return; | ||||
|     if (pkt->size <= size) | ||||
|         return; | ||||
|     pkt->size = size; | ||||
|     memset(pkt->data + size, 0, FF_INPUT_BUFFER_PADDING_SIZE); | ||||
| } | ||||
| @@ -89,40 +91,45 @@ int av_grow_packet(AVPacket *pkt, int grow_by) | ||||
|     av_assert0((unsigned)pkt->size <= INT_MAX - FF_INPUT_BUFFER_PADDING_SIZE); | ||||
|     if (!pkt->size) | ||||
|         return av_new_packet(pkt, grow_by); | ||||
|     if ((unsigned)grow_by > INT_MAX - (pkt->size + FF_INPUT_BUFFER_PADDING_SIZE)) | ||||
|     if ((unsigned)grow_by > | ||||
|         INT_MAX - (pkt->size + FF_INPUT_BUFFER_PADDING_SIZE)) | ||||
|         return -1; | ||||
|     new_ptr = av_realloc(pkt->data, pkt->size + grow_by + FF_INPUT_BUFFER_PADDING_SIZE); | ||||
|     new_ptr = av_realloc(pkt->data, | ||||
|                          pkt->size + grow_by + FF_INPUT_BUFFER_PADDING_SIZE); | ||||
|     if (!new_ptr) | ||||
|         return AVERROR(ENOMEM); | ||||
|     pkt->data = new_ptr; | ||||
|     pkt->data  = new_ptr; | ||||
|     pkt->size += grow_by; | ||||
|     memset(pkt->data + pkt->size, 0, FF_INPUT_BUFFER_PADDING_SIZE); | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| #define DUP_DATA(dst, src, size, padding) \ | ||||
|     do { \ | ||||
|         void *data; \ | ||||
|         if (padding) { \ | ||||
|             if ((unsigned)(size) > (unsigned)(size) + FF_INPUT_BUFFER_PADDING_SIZE) \ | ||||
|                 goto failed_alloc; \ | ||||
|             data = av_malloc(size + FF_INPUT_BUFFER_PADDING_SIZE); \ | ||||
|         } else { \ | ||||
|             data = av_malloc(size); \ | ||||
|         } \ | ||||
|         if (!data) \ | ||||
|             goto failed_alloc; \ | ||||
|         memcpy(data, src, size); \ | ||||
|         if (padding) \ | ||||
|             memset((uint8_t*)data + size, 0, FF_INPUT_BUFFER_PADDING_SIZE); \ | ||||
|         dst = data; \ | ||||
|     } while(0) | ||||
| #define DUP_DATA(dst, src, size, padding)                               \ | ||||
|     do {                                                                \ | ||||
|         void *data;                                                     \ | ||||
|         if (padding) {                                                  \ | ||||
|             if ((unsigned)(size) >                                      \ | ||||
|                 (unsigned)(size) + FF_INPUT_BUFFER_PADDING_SIZE)        \ | ||||
|                 goto failed_alloc;                                      \ | ||||
|             data = av_malloc(size + FF_INPUT_BUFFER_PADDING_SIZE);      \ | ||||
|         } else {                                                        \ | ||||
|             data = av_malloc(size);                                     \ | ||||
|         }                                                               \ | ||||
|         if (!data)                                                      \ | ||||
|             goto failed_alloc;                                          \ | ||||
|         memcpy(data, src, size);                                        \ | ||||
|         if (padding)                                                    \ | ||||
|             memset((uint8_t *)data + size, 0,                           \ | ||||
|                    FF_INPUT_BUFFER_PADDING_SIZE);                       \ | ||||
|         dst = data;                                                     \ | ||||
|     } while (0) | ||||
|  | ||||
| int av_dup_packet(AVPacket *pkt) | ||||
| { | ||||
|     AVPacket tmp_pkt; | ||||
|  | ||||
|     if (((pkt->destruct == av_destruct_packet_nofree) || (pkt->destruct == NULL)) && pkt->data) { | ||||
|     if (((pkt->destruct == av_destruct_packet_nofree) || | ||||
|          (pkt->destruct == NULL)) && pkt->data) { | ||||
|         tmp_pkt = *pkt; | ||||
|  | ||||
|         pkt->data      = NULL; | ||||
| @@ -135,14 +142,15 @@ int av_dup_packet(AVPacket *pkt) | ||||
|  | ||||
|             DUP_DATA(pkt->side_data, tmp_pkt.side_data, | ||||
|                      pkt->side_data_elems * sizeof(*pkt->side_data), 0); | ||||
|             memset(pkt->side_data, 0, pkt->side_data_elems * sizeof(*pkt->side_data)); | ||||
|             for (i = 0; i < pkt->side_data_elems; i++) { | ||||
|             memset(pkt->side_data, 0, | ||||
|                    pkt->side_data_elems * sizeof(*pkt->side_data)); | ||||
|             for (i = 0; i < pkt->side_data_elems; i++) | ||||
|                 DUP_DATA(pkt->side_data[i].data, tmp_pkt.side_data[i].data, | ||||
|                          pkt->side_data[i].size, 1); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     return 0; | ||||
|  | ||||
| failed_alloc: | ||||
|     av_destruct_packet(pkt); | ||||
|     return AVERROR(ENOMEM); | ||||
| @@ -151,14 +159,16 @@ failed_alloc: | ||||
| void av_free_packet(AVPacket *pkt) | ||||
| { | ||||
|     if (pkt) { | ||||
|         if (pkt->destruct) pkt->destruct(pkt); | ||||
|         pkt->data = NULL; pkt->size = 0; | ||||
|         if (pkt->destruct) | ||||
|             pkt->destruct(pkt); | ||||
|         pkt->data            = NULL; | ||||
|         pkt->size            = 0; | ||||
|         pkt->side_data       = NULL; | ||||
|         pkt->side_data_elems = 0; | ||||
|     } | ||||
| } | ||||
|  | ||||
| uint8_t* av_packet_new_side_data(AVPacket *pkt, enum AVPacketSideDataType type, | ||||
| uint8_t *av_packet_new_side_data(AVPacket *pkt, enum AVPacketSideDataType type, | ||||
|                                  int size) | ||||
| { | ||||
|     int elems = pkt->side_data_elems; | ||||
| @@ -168,7 +178,8 @@ uint8_t* av_packet_new_side_data(AVPacket *pkt, enum AVPacketSideDataType type, | ||||
|     if ((unsigned)size > INT_MAX - FF_INPUT_BUFFER_PADDING_SIZE) | ||||
|         return NULL; | ||||
|  | ||||
|     pkt->side_data = av_realloc(pkt->side_data, (elems + 1) * sizeof(*pkt->side_data)); | ||||
|     pkt->side_data = av_realloc(pkt->side_data, | ||||
|                                 (elems + 1) * sizeof(*pkt->side_data)); | ||||
|     if (!pkt->side_data) | ||||
|         return NULL; | ||||
|  | ||||
| @@ -182,7 +193,7 @@ uint8_t* av_packet_new_side_data(AVPacket *pkt, enum AVPacketSideDataType type, | ||||
|     return pkt->side_data[elems].data; | ||||
| } | ||||
|  | ||||
| uint8_t* av_packet_get_side_data(AVPacket *pkt, enum AVPacketSideDataType type, | ||||
| uint8_t *av_packet_get_side_data(AVPacket *pkt, enum AVPacketSideDataType type, | ||||
|                                  int *size) | ||||
| { | ||||
|     int i; | ||||
|   | ||||
| @@ -39,8 +39,8 @@ typedef struct BFIContext { | ||||
| static av_cold int bfi_decode_init(AVCodecContext *avctx) | ||||
| { | ||||
|     BFIContext *bfi = avctx->priv_data; | ||||
|     avctx->pix_fmt = PIX_FMT_PAL8; | ||||
|     bfi->dst = av_mallocz(avctx->width * avctx->height); | ||||
|     avctx->pix_fmt  = PIX_FMT_PAL8; | ||||
|     bfi->dst        = av_mallocz(avctx->width * avctx->height); | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| @@ -48,9 +48,9 @@ static int bfi_decode_frame(AVCodecContext *avctx, void *data, | ||||
|                             int *data_size, AVPacket *avpkt) | ||||
| { | ||||
|     GetByteContext g; | ||||
|     int buf_size = avpkt->size; | ||||
|     int buf_size    = avpkt->size; | ||||
|     BFIContext *bfi = avctx->priv_data; | ||||
|     uint8_t *dst = bfi->dst; | ||||
|     uint8_t *dst    = bfi->dst; | ||||
|     uint8_t *src, *dst_offset, colour1, colour2; | ||||
|     uint8_t *frame_end = bfi->dst + avctx->width * avctx->height; | ||||
|     uint32_t *pal; | ||||
| @@ -82,9 +82,8 @@ static int bfi_decode_frame(AVCodecContext *avctx, void *data, | ||||
|             int shift = 16; | ||||
|             *pal = 0; | ||||
|             for (j = 0; j < 3; j++, shift -= 8) | ||||
|                 *pal += | ||||
|                     ((avctx->extradata[i * 3 + j] << 2) | | ||||
|                     (avctx->extradata[i * 3 + j] >> 4)) << shift; | ||||
|                 *pal += ((avctx->extradata[i * 3 + j] << 2) | | ||||
|                          (avctx->extradata[i * 3 + j] >> 4)) << shift; | ||||
|             pal++; | ||||
|         } | ||||
|         bfi->frame.palette_has_changed = 1; | ||||
| @@ -107,7 +106,7 @@ static int bfi_decode_frame(AVCodecContext *avctx, void *data, | ||||
|             return -1; | ||||
|         } | ||||
|  | ||||
|         /* Get length and offset(if required) */ | ||||
|         /* Get length and offset (if required) */ | ||||
|         if (length == 0) { | ||||
|             if (code == 1) { | ||||
|                 length = bytestream2_get_byte(&g); | ||||
| @@ -127,8 +126,7 @@ static int bfi_decode_frame(AVCodecContext *avctx, void *data, | ||||
|             break; | ||||
|  | ||||
|         switch (code) { | ||||
|  | ||||
|         case 0:                //Normal Chain | ||||
|         case 0:                // normal chain | ||||
|             if (length >= bytestream2_get_bytes_left(&g)) { | ||||
|                 av_log(avctx, AV_LOG_ERROR, "Frame larger than buffer.\n"); | ||||
|                 return -1; | ||||
| @@ -136,21 +134,18 @@ static int bfi_decode_frame(AVCodecContext *avctx, void *data, | ||||
|             bytestream2_get_buffer(&g, dst, length); | ||||
|             dst += length; | ||||
|             break; | ||||
|  | ||||
|         case 1:                //Back Chain | ||||
|         case 1:                // back chain | ||||
|             dst_offset = dst - offset; | ||||
|             length *= 4;        //Convert dwords to bytes. | ||||
|             length    *= 4;     // Convert dwords to bytes. | ||||
|             if (dst_offset < bfi->dst) | ||||
|                 break; | ||||
|             while (length--) | ||||
|                 *dst++ = *dst_offset++; | ||||
|             break; | ||||
|  | ||||
|         case 2:                //Skip Chain | ||||
|         case 2:                // skip chain | ||||
|             dst += length; | ||||
|             break; | ||||
|  | ||||
|         case 3:                //Fill Chain | ||||
|         case 3:                // fill chain | ||||
|             colour1 = bytestream2_get_byte(&g); | ||||
|             colour2 = bytestream2_get_byte(&g); | ||||
|             while (length--) { | ||||
| @@ -158,7 +153,6 @@ static int bfi_decode_frame(AVCodecContext *avctx, void *data, | ||||
|                 *dst++ = colour2; | ||||
|             } | ||||
|             break; | ||||
|  | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @@ -169,12 +163,12 @@ static int bfi_decode_frame(AVCodecContext *avctx, void *data, | ||||
|         src += avctx->width; | ||||
|         dst += bfi->frame.linesize[0]; | ||||
|     } | ||||
|     *data_size = sizeof(AVFrame); | ||||
|     *data_size       = sizeof(AVFrame); | ||||
|     *(AVFrame *)data = bfi->frame; | ||||
|     return buf_size; | ||||
| } | ||||
|  | ||||
| static av_cold int bfi_decode_close(AVCodecContext * avctx) | ||||
| static av_cold int bfi_decode_close(AVCodecContext *avctx) | ||||
| { | ||||
|     BFIContext *bfi = avctx->priv_data; | ||||
|     if (bfi->frame.data[0]) | ||||
|   | ||||
| @@ -25,10 +25,8 @@ | ||||
|  * @author Thilo Borgmann <thilo.borgmann _at_ googlemail.com> | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #include "bgmc.h" | ||||
|  | ||||
|  | ||||
| #define FREQ_BITS  14                      // bits used by frequency counters | ||||
| #define VALUE_BITS 18                      // bits used to represent the values | ||||
| #define TOP_VALUE  ((1 << VALUE_BITS) - 1) // maximum value | ||||
| @@ -41,382 +39,381 @@ | ||||
| #define LUT_BUFF   4                       // number of buffered lookup tables | ||||
|  | ||||
|  | ||||
| /** Cumulative frequency tables for block Gilbert-Moore coding. | ||||
|  */ | ||||
| /** Cumulative frequency tables for block Gilbert-Moore coding. */ | ||||
| static const uint16_t cf_tables_1[3][129] = { | ||||
|     { | ||||
|     16384, 16066, 15748, 15431, 15114, 14799, 14485, 14173, 13861, 13552, | ||||
|     13243, 12939, 12635, 12336, 12038, 11745, 11452, 11161, 10870, 10586, | ||||
|     10303, 10027,  9751,  9483,  9215,  8953,  8692,  8440,  8189,  7946, | ||||
|      7704,  7472,  7240,  7008,  6776,  6554,  6333,  6122,  5912,  5711, | ||||
|      5512,  5320,  5128,  4947,  4766,  4595,  4425,  4264,  4104,  3946, | ||||
|      3788,  3640,  3493,  3355,  3218,  3090,  2963,  2842,  2721,  2609, | ||||
|      2498,  2395,  2292,  2196,  2100,  2004,  1908,  1820,  1732,  1651, | ||||
|      1570,  1497,  1424,  1355,  1287,  1223,  1161,  1100,  1044,   988, | ||||
|       938,   888,   839,   790,   746,   702,   662,   623,   588,   553, | ||||
|       520,   488,   459,   431,   405,   380,   357,   334,   311,   288, | ||||
|       268,   248,   230,   213,   197,   182,   168,   154,   142,   130, | ||||
|       119,   108,    99,    90,    81,    72,    64,    56,    49,    42, | ||||
|        36,    30,    25,    20,    15,    11,     7,     3,     0 | ||||
|    }, | ||||
|    { | ||||
|     16384, 16080, 15776, 15473, 15170, 14868, 14567, 14268, 13970, 13674, | ||||
|     13378, 13086, 12794, 12505, 12218, 11936, 11654, 11373, 11092, 10818, | ||||
|     10544, 10276, 10008,  9749,  9490,  9236,  8982,  8737,  8492,  8256, | ||||
|      8020,  7792,  7564,  7336,  7108,  6888,  6669,  6459,  6249,  6050, | ||||
|      5852,  5660,  5468,  5286,  5104,  4931,  4760,  4598,  4436,  4275, | ||||
|      4115,  3965,  3816,  3674,  3534,  3403,  3272,  3147,  3023,  2907, | ||||
|      2792,  2684,  2577,  2476,  2375,  2274,  2173,  2079,  1986,  1897, | ||||
|      1810,  1724,  1645,  1567,  1493,  1419,  1351,  1284,  1222,  1161, | ||||
|      1105,  1050,   995,   941,   891,   842,   797,   753,   713,   673, | ||||
|       636,   599,   566,   533,   503,   473,   446,   419,   392,   365, | ||||
|       340,   316,   294,   272,   253,   234,   216,   199,   184,   169, | ||||
|       155,   142,   130,   118,   106,    95,    85,    75,    66,    57, | ||||
|        49,    41,    34,    27,    21,    15,    10,     5,     0 | ||||
|    }, | ||||
|    { | ||||
|     16384, 16092, 15801, 15510, 15219, 14930, 14641, 14355, 14069, 13785, | ||||
|     13501, 13219, 12938, 12661, 12384, 12112, 11841, 11571, 11301, 11037, | ||||
|     10773, 10514, 10256, 10005,  9754,  9508,  9263,  9025,  8787,  8557, | ||||
|      8327,  8103,  7879,  7655,  7431,  7215,  7000,  6792,  6585,  6387, | ||||
|      6190,  5998,  5807,  5625,  5445,  5272,  5100,  4937,  4774,  4613, | ||||
|      4452,  4301,  4150,  4007,  3865,  3731,  3597,  3469,  3341,  3218, | ||||
|      3099,  2981,  2869,  2758,  2652,  2546,  2440,  2334,  2234,  2134, | ||||
|      2041,  1949,  1864,  1779,  1699,  1620,  1547,  1474,  1407,  1340, | ||||
|      1278,  1217,  1157,  1097,  1043,   989,   940,   891,   846,   801, | ||||
|       759,   718,   680,   643,   609,   575,   543,   511,   479,   447, | ||||
|       418,   389,   363,   337,   314,   291,   270,   249,   230,   212, | ||||
|       195,   179,   164,   149,   135,   121,   108,    96,    85,    74, | ||||
|        64,    54,    45,    36,    28,    20,    13,     6,     0 | ||||
|    } | ||||
|         16384, 16066, 15748, 15431, 15114, 14799, 14485, 14173, 13861, 13552, | ||||
|         13243, 12939, 12635, 12336, 12038, 11745, 11452, 11161, 10870, 10586, | ||||
|         10303, 10027,  9751,  9483,  9215,  8953,  8692,  8440,  8189,  7946, | ||||
|          7704,  7472,  7240,  7008,  6776,  6554,  6333,  6122,  5912,  5711, | ||||
|          5512,  5320,  5128,  4947,  4766,  4595,  4425,  4264,  4104,  3946, | ||||
|          3788,  3640,  3493,  3355,  3218,  3090,  2963,  2842,  2721,  2609, | ||||
|          2498,  2395,  2292,  2196,  2100,  2004,  1908,  1820,  1732,  1651, | ||||
|          1570,  1497,  1424,  1355,  1287,  1223,  1161,  1100,  1044,   988, | ||||
|           938,   888,   839,   790,   746,   702,   662,   623,   588,   553, | ||||
|           520,   488,   459,   431,   405,   380,   357,   334,   311,   288, | ||||
|           268,   248,   230,   213,   197,   182,   168,   154,   142,   130, | ||||
|           119,   108,    99,    90,    81,    72,    64,    56,    49,    42, | ||||
|            36,    30,    25,    20,    15,    11,     7,     3,     0 | ||||
|     }, | ||||
|     { | ||||
|         16384, 16080, 15776, 15473, 15170, 14868, 14567, 14268, 13970, 13674, | ||||
|         13378, 13086, 12794, 12505, 12218, 11936, 11654, 11373, 11092, 10818, | ||||
|         10544, 10276, 10008,  9749,  9490,  9236,  8982,  8737,  8492,  8256, | ||||
|          8020,  7792,  7564,  7336,  7108,  6888,  6669,  6459,  6249,  6050, | ||||
|          5852,  5660,  5468,  5286,  5104,  4931,  4760,  4598,  4436,  4275, | ||||
|          4115,  3965,  3816,  3674,  3534,  3403,  3272,  3147,  3023,  2907, | ||||
|          2792,  2684,  2577,  2476,  2375,  2274,  2173,  2079,  1986,  1897, | ||||
|          1810,  1724,  1645,  1567,  1493,  1419,  1351,  1284,  1222,  1161, | ||||
|          1105,  1050,   995,   941,   891,   842,   797,   753,   713,   673, | ||||
|           636,   599,   566,   533,   503,   473,   446,   419,   392,   365, | ||||
|           340,   316,   294,   272,   253,   234,   216,   199,   184,   169, | ||||
|           155,   142,   130,   118,   106,    95,    85,    75,    66,    57, | ||||
|            49,    41,    34,    27,    21,    15,    10,     5,     0 | ||||
|     }, | ||||
|     { | ||||
|         16384, 16092, 15801, 15510, 15219, 14930, 14641, 14355, 14069, 13785, | ||||
|         13501, 13219, 12938, 12661, 12384, 12112, 11841, 11571, 11301, 11037, | ||||
|         10773, 10514, 10256, 10005,  9754,  9508,  9263,  9025,  8787,  8557, | ||||
|          8327,  8103,  7879,  7655,  7431,  7215,  7000,  6792,  6585,  6387, | ||||
|          6190,  5998,  5807,  5625,  5445,  5272,  5100,  4937,  4774,  4613, | ||||
|          4452,  4301,  4150,  4007,  3865,  3731,  3597,  3469,  3341,  3218, | ||||
|          3099,  2981,  2869,  2758,  2652,  2546,  2440,  2334,  2234,  2134, | ||||
|          2041,  1949,  1864,  1779,  1699,  1620,  1547,  1474,  1407,  1340, | ||||
|          1278,  1217,  1157,  1097,  1043,   989,   940,   891,   846,   801, | ||||
|           759,   718,   680,   643,   609,   575,   543,   511,   479,   447, | ||||
|           418,   389,   363,   337,   314,   291,   270,   249,   230,   212, | ||||
|           195,   179,   164,   149,   135,   121,   108,    96,    85,    74, | ||||
|           64,     54,    45,    36,    28,    20,    13,     6,     0 | ||||
|     } | ||||
| }; | ||||
|  | ||||
|  | ||||
| static const uint16_t cf_tables_2[8][193] = { | ||||
|     { | ||||
|     16384, 16104, 15825, 15546, 15268, 14991, 14714, 14439, 14164, 13891, | ||||
|     13620, 13350, 13081, 12815, 12549, 12287, 12025, 11765, 11505, 11250, | ||||
|     10996, 10746, 10497, 10254, 10011,  9772,  9534,  9303,  9072,  8848, | ||||
|      8624,  8406,  8188,  7970,  7752,  7539,  7327,  7123,  6919,  6724, | ||||
|      6529,  6339,  6150,  5970,  5790,  5618,  5446,  5282,  5119,  4957, | ||||
|      4795,  4642,  4490,  4345,  4201,  4065,  3929,  3798,  3669,  3547, | ||||
|      3425,  3310,  3196,  3086,  2976,  2866,  2756,  2650,  2545,  2447, | ||||
|      2350,  2260,  2170,  2085,  2000,  1921,  1843,  1770,  1698,  1632, | ||||
|      1566,  1501,  1436,  1376,  1316,  1261,  1207,  1157,  1108,  1061, | ||||
|      1015,   973,   931,   893,   855,   819,   783,   747,   711,   677, | ||||
|       644,   614,   584,   557,   530,   505,   480,   458,   436,   416, | ||||
|       396,   378,   360,   343,   326,   310,   295,   281,   267,   255, | ||||
|       243,   232,   221,   211,   201,   192,   183,   174,   166,   158, | ||||
|       150,   142,   134,   126,   119,   112,   106,   100,    95,    90, | ||||
|        85,    80,    76,    72,    69,    66,    63,    60,    57,    54, | ||||
|        51,    48,    46,    44,    42,    40,    38,    36,    34,    33, | ||||
|        32,    31,    30,    29,    28,    27,    26,    25,    24,    23, | ||||
|        22,    21,    20,    19,    18,    17,    16,    15,    14,    13, | ||||
|        12,    11,    10,     9,     8,     7,     6,     5,     4,     3, | ||||
|         2,     1,     0 | ||||
|         16384, 16104, 15825, 15546, 15268, 14991, 14714, 14439, 14164, 13891, | ||||
|         13620, 13350, 13081, 12815, 12549, 12287, 12025, 11765, 11505, 11250, | ||||
|         10996, 10746, 10497, 10254, 10011,  9772,  9534,  9303,  9072,  8848, | ||||
|          8624,  8406,  8188,  7970,  7752,  7539,  7327,  7123,  6919,  6724, | ||||
|          6529,  6339,  6150,  5970,  5790,  5618,  5446,  5282,  5119,  4957, | ||||
|          4795,  4642,  4490,  4345,  4201,  4065,  3929,  3798,  3669,  3547, | ||||
|          3425,  3310,  3196,  3086,  2976,  2866,  2756,  2650,  2545,  2447, | ||||
|          2350,  2260,  2170,  2085,  2000,  1921,  1843,  1770,  1698,  1632, | ||||
|          1566,  1501,  1436,  1376,  1316,  1261,  1207,  1157,  1108,  1061, | ||||
|          1015,   973,   931,   893,   855,   819,   783,   747,   711,   677, | ||||
|           644,   614,   584,   557,   530,   505,   480,   458,   436,   416, | ||||
|           396,   378,   360,   343,   326,   310,   295,   281,   267,   255, | ||||
|           243,   232,   221,   211,   201,   192,   183,   174,   166,   158, | ||||
|           150,   142,   134,   126,   119,   112,   106,   100,    95,    90, | ||||
|            85,    80,    76,    72,    69,    66,    63,    60,    57,    54, | ||||
|            51,    48,    46,    44,    42,    40,    38,    36,    34,    33, | ||||
|            32,    31,    30,    29,    28,    27,    26,    25,    24,    23, | ||||
|            22,    21,    20,    19,    18,    17,    16,    15,    14,    13, | ||||
|            12,    11,    10,     9,     8,     7,     6,     5,     4,     3, | ||||
|             2,     1,     0 | ||||
|     }, | ||||
|     { | ||||
|     16384, 16116, 15849, 15582, 15316, 15050, 14785, 14521, 14257, 13995, | ||||
|     13734, 13476, 13218, 12963, 12708, 12457, 12206, 11956, 11706, 11460, | ||||
|     11215, 10975, 10735, 10500, 10265, 10034,  9803,  9579,  9355,  9136, | ||||
|      8917,  8703,  8489,  8275,  8061,  7853,  7645,  7444,  7244,  7051, | ||||
|      6858,  6671,  6484,  6305,  6127,  5956,  5785,  5622,  5459,  5298, | ||||
|      5137,  4983,  4830,  4684,  4539,  4401,  4263,  4131,  3999,  3874, | ||||
|      3750,  3632,  3515,  3401,  3287,  3173,  3059,  2949,  2840,  2737, | ||||
|      2635,  2539,  2444,  2354,  2264,  2181,  2098,  2020,  1943,  1872, | ||||
|      1801,  1731,  1661,  1596,  1532,  1472,  1412,  1357,  1303,  1251, | ||||
|      1200,  1153,  1106,  1063,  1020,   979,   938,   897,   856,   818, | ||||
|       780,   746,   712,   681,   650,   621,   592,   566,   540,   517, | ||||
|       494,   473,   452,   431,   410,   391,   373,   356,   340,   325, | ||||
|       310,   296,   282,   270,   258,   247,   236,   225,   214,   203, | ||||
|       192,   182,   172,   162,   153,   144,   136,   128,   121,   114, | ||||
|       108,   102,    97,    92,    87,    82,    77,    73,    69,    65, | ||||
|        62,    59,    56,    53,    50,    47,    45,    43,    41,    39, | ||||
|        37,    35,    33,    31,    29,    27,    26,    25,    24,    23, | ||||
|        22,    21,    20,    19,    18,    17,    16,    15,    14,    13, | ||||
|        12,    11,    10,     9,     8,     7,     6,     5,     4,     3, | ||||
|         2,     1,     0 | ||||
|         16384, 16116, 15849, 15582, 15316, 15050, 14785, 14521, 14257, 13995, | ||||
|         13734, 13476, 13218, 12963, 12708, 12457, 12206, 11956, 11706, 11460, | ||||
|         11215, 10975, 10735, 10500, 10265, 10034,  9803,  9579,  9355,  9136, | ||||
|          8917,  8703,  8489,  8275,  8061,  7853,  7645,  7444,  7244,  7051, | ||||
|          6858,  6671,  6484,  6305,  6127,  5956,  5785,  5622,  5459,  5298, | ||||
|          5137,  4983,  4830,  4684,  4539,  4401,  4263,  4131,  3999,  3874, | ||||
|          3750,  3632,  3515,  3401,  3287,  3173,  3059,  2949,  2840,  2737, | ||||
|          2635,  2539,  2444,  2354,  2264,  2181,  2098,  2020,  1943,  1872, | ||||
|          1801,  1731,  1661,  1596,  1532,  1472,  1412,  1357,  1303,  1251, | ||||
|          1200,  1153,  1106,  1063,  1020,   979,   938,   897,   856,   818, | ||||
|           780,   746,   712,   681,   650,   621,   592,   566,   540,   517, | ||||
|           494,   473,   452,   431,   410,   391,   373,   356,   340,   325, | ||||
|           310,   296,   282,   270,   258,   247,   236,   225,   214,   203, | ||||
|           192,   182,   172,   162,   153,   144,   136,   128,   121,   114, | ||||
|           108,   102,    97,    92,    87,    82,    77,    73,    69,    65, | ||||
|            62,    59,    56,    53,    50,    47,    45,    43,    41,    39, | ||||
|            37,    35,    33,    31,    29,    27,    26,    25,    24,    23, | ||||
|            22,    21,    20,    19,    18,    17,    16,    15,    14,    13, | ||||
|            12,    11,    10,     9,     8,     7,     6,     5,     4,     3, | ||||
|             2,     1,     0 | ||||
|     }, | ||||
|     { | ||||
|     16384, 16128, 15872, 15617, 15362, 15107, 14853, 14600, 14347, 14096, | ||||
|     13846, 13597, 13350, 13105, 12860, 12618, 12376, 12135, 11894, 11657, | ||||
|     11421, 11189, 10957, 10730, 10503, 10279, 10056,  9838,  9620,  9407, | ||||
|      9195,  8987,  8779,  8571,  8363,  8159,  7955,  7758,  7561,  7371, | ||||
|      7182,  6997,  6812,  6635,  6459,  6289,  6120,  5957,  5795,  5634, | ||||
|      5473,  5319,  5165,  5018,  4871,  4732,  4593,  4458,  4324,  4197, | ||||
|      4071,  3951,  3831,  3714,  3597,  3480,  3363,  3250,  3138,  3032, | ||||
|      2927,  2828,  2729,  2635,  2541,  2453,  2366,  2284,  2202,  2126, | ||||
|      2050,  1975,  1900,  1830,  1761,  1697,  1633,  1574,  1515,  1459, | ||||
|      1403,  1351,  1300,  1252,  1205,  1160,  1115,  1070,  1025,   982, | ||||
|       939,   899,   860,   824,   789,   756,   723,   693,   663,   636, | ||||
|       609,   584,   559,   535,   511,   489,   467,   447,   427,   409, | ||||
|       391,   374,   358,   343,   328,   313,   300,   287,   274,   261, | ||||
|       248,   235,   223,   211,   200,   189,   179,   169,   160,   151, | ||||
|       143,   135,   128,   121,   115,   109,   103,    97,    92,    87, | ||||
|        82,    77,    73,    69,    65,    61,    58,    55,    52,    49, | ||||
|        46,    43,    40,    37,    35,    33,    31,    29,    27,    25, | ||||
|        23,    21,    20,    19,    18,    17,    16,    15,    14,    13, | ||||
|        12,    11,    10,     9,     8,     7,     6,     5,     4,     3, | ||||
|         2,     1,     0 | ||||
|         16384, 16128, 15872, 15617, 15362, 15107, 14853, 14600, 14347, 14096, | ||||
|         13846, 13597, 13350, 13105, 12860, 12618, 12376, 12135, 11894, 11657, | ||||
|         11421, 11189, 10957, 10730, 10503, 10279, 10056,  9838,  9620,  9407, | ||||
|          9195,  8987,  8779,  8571,  8363,  8159,  7955,  7758,  7561,  7371, | ||||
|          7182,  6997,  6812,  6635,  6459,  6289,  6120,  5957,  5795,  5634, | ||||
|          5473,  5319,  5165,  5018,  4871,  4732,  4593,  4458,  4324,  4197, | ||||
|          4071,  3951,  3831,  3714,  3597,  3480,  3363,  3250,  3138,  3032, | ||||
|          2927,  2828,  2729,  2635,  2541,  2453,  2366,  2284,  2202,  2126, | ||||
|          2050,  1975,  1900,  1830,  1761,  1697,  1633,  1574,  1515,  1459, | ||||
|          1403,  1351,  1300,  1252,  1205,  1160,  1115,  1070,  1025,   982, | ||||
|           939,   899,   860,   824,   789,   756,   723,   693,   663,   636, | ||||
|           609,   584,   559,   535,   511,   489,   467,   447,   427,   409, | ||||
|           391,   374,   358,   343,   328,   313,   300,   287,   274,   261, | ||||
|           248,   235,   223,   211,   200,   189,   179,   169,   160,   151, | ||||
|           143,   135,   128,   121,   115,   109,   103,    97,    92,    87, | ||||
|            82,    77,    73,    69,    65,    61,    58,    55,    52,    49, | ||||
|            46,    43,    40,    37,    35,    33,    31,    29,    27,    25, | ||||
|            23,    21,    20,    19,    18,    17,    16,    15,    14,    13, | ||||
|            12,    11,    10,     9,     8,     7,     6,     5,     4,     3, | ||||
|             2,     1,     0 | ||||
|     }, | ||||
|     { | ||||
|     16384, 16139, 15894, 15649, 15405, 15162, 14919, 14677, 14435, 14195, | ||||
|     13955, 13717, 13479, 13243, 13008, 12775, 12542, 12310, 12079, 11851, | ||||
|     11623, 11399, 11176, 10956, 10737, 10521, 10305, 10094,  9883,  9677, | ||||
|      9471,  9268,  9065,  8862,  8659,  8459,  8260,  8067,  7874,  7688, | ||||
|      7502,  7321,  7140,  6965,  6790,  6621,  6452,  6290,  6128,  5968, | ||||
|      5808,  5655,  5503,  5356,  5209,  5069,  4929,  4794,  4660,  4532, | ||||
|      4404,  4282,  4160,  4041,  3922,  3803,  3684,  3568,  3452,  3343, | ||||
|      3234,  3131,  3029,  2931,  2833,  2741,  2649,  2563,  2477,  2396, | ||||
|      2316,  2236,  2157,  2083,  2009,  1940,  1871,  1807,  1743,  1683, | ||||
|      1623,  1567,  1511,  1459,  1407,  1357,  1307,  1257,  1207,  1159, | ||||
|      1111,  1067,  1023,   983,   943,   905,   868,   834,   800,   769, | ||||
|       738,   709,   681,   653,   625,   600,   575,   552,   529,   508, | ||||
|       487,   466,   447,   428,   410,   392,   376,   360,   344,   328, | ||||
|       313,   298,   283,   268,   255,   242,   230,   218,   207,   196, | ||||
|       186,   176,   167,   158,   150,   142,   135,   128,   121,   114, | ||||
|       108,   102,    97,    92,    87,    82,    78,    74,    70,    66, | ||||
|        62,    58,    54,    50,    47,    44,    41,    38,    35,    32, | ||||
|        30,    28,    26,    24,    22,    20,    18,    16,    14,    13, | ||||
|        12,    11,    10,     9,     8,     7,     6,     5,     4,     3, | ||||
|         2,     1,     0 | ||||
|         16384, 16139, 15894, 15649, 15405, 15162, 14919, 14677, 14435, 14195, | ||||
|         13955, 13717, 13479, 13243, 13008, 12775, 12542, 12310, 12079, 11851, | ||||
|         11623, 11399, 11176, 10956, 10737, 10521, 10305, 10094,  9883,  9677, | ||||
|          9471,  9268,  9065,  8862,  8659,  8459,  8260,  8067,  7874,  7688, | ||||
|          7502,  7321,  7140,  6965,  6790,  6621,  6452,  6290,  6128,  5968, | ||||
|          5808,  5655,  5503,  5356,  5209,  5069,  4929,  4794,  4660,  4532, | ||||
|          4404,  4282,  4160,  4041,  3922,  3803,  3684,  3568,  3452,  3343, | ||||
|          3234,  3131,  3029,  2931,  2833,  2741,  2649,  2563,  2477,  2396, | ||||
|          2316,  2236,  2157,  2083,  2009,  1940,  1871,  1807,  1743,  1683, | ||||
|          1623,  1567,  1511,  1459,  1407,  1357,  1307,  1257,  1207,  1159, | ||||
|          1111,  1067,  1023,   983,   943,   905,   868,   834,   800,   769, | ||||
|           738,   709,   681,   653,   625,   600,   575,   552,   529,   508, | ||||
|           487,   466,   447,   428,   410,   392,   376,   360,   344,   328, | ||||
|           313,   298,   283,   268,   255,   242,   230,   218,   207,   196, | ||||
|           186,   176,   167,   158,   150,   142,   135,   128,   121,   114, | ||||
|           108,   102,    97,    92,    87,    82,    78,    74,    70,    66, | ||||
|            62,    58,    54,    50,    47,    44,    41,    38,    35,    32, | ||||
|            30,    28,    26,    24,    22,    20,    18,    16,    14,    13, | ||||
|            12,    11,    10,     9,     8,     7,     6,     5,     4,     3, | ||||
|             2,     1,     0 | ||||
|     }, | ||||
|     { | ||||
|     16384, 16149, 15915, 15681, 15447, 15214, 14981, 14749, 14517, 14286, | ||||
|     14055, 13827, 13599, 13373, 13147, 12923, 12699, 12476, 12253, 12034, | ||||
|     11815, 11599, 11383, 11171, 10959, 10750, 10541, 10337, 10133,  9933, | ||||
|      9733,  9536,  9339,  9142,  8945,  8751,  8557,  8369,  8181,  7998, | ||||
|      7816,  7638,  7460,  7288,  7116,  6950,  6785,  6625,  6465,  6306, | ||||
|      6147,  5995,  5843,  5697,  5551,  5411,  5271,  5135,  5000,  4871, | ||||
|      4742,  4618,  4495,  4374,  4253,  4132,  4011,  3893,  3775,  3663, | ||||
|      3552,  3446,  3340,  3239,  3138,  3043,  2948,  2858,  2768,  2684, | ||||
|      2600,  2516,  2433,  2355,  2278,  2205,  2133,  2065,  1997,  1932, | ||||
|      1867,  1807,  1747,  1690,  1634,  1580,  1526,  1472,  1418,  1366, | ||||
|      1314,  1266,  1218,  1174,  1130,  1088,  1047,  1009,   971,   936, | ||||
|       901,   868,   836,   804,   772,   743,   714,   685,   658,   631, | ||||
|       606,   582,   559,   536,   515,   494,   475,   456,   437,   418, | ||||
|       399,   380,   362,   344,   328,   312,   297,   283,   270,   257, | ||||
|       245,   233,   222,   211,   201,   191,   181,   172,   163,   155, | ||||
|       147,   139,   132,   125,   119,   113,   107,   101,    96,    91, | ||||
|        86,    81,    76,    71,    66,    62,    58,    54,    50,    46, | ||||
|        43,    40,    37,    34,    31,    28,    26,    24,    22,    20, | ||||
|        18,    16,    14,    12,    10,     8,     6,     5,     4,     3, | ||||
|         2,     1,     0 | ||||
|         16384, 16149, 15915, 15681, 15447, 15214, 14981, 14749, 14517, 14286, | ||||
|         14055, 13827, 13599, 13373, 13147, 12923, 12699, 12476, 12253, 12034, | ||||
|         11815, 11599, 11383, 11171, 10959, 10750, 10541, 10337, 10133,  9933, | ||||
|          9733,  9536,  9339,  9142,  8945,  8751,  8557,  8369,  8181,  7998, | ||||
|          7816,  7638,  7460,  7288,  7116,  6950,  6785,  6625,  6465,  6306, | ||||
|          6147,  5995,  5843,  5697,  5551,  5411,  5271,  5135,  5000,  4871, | ||||
|          4742,  4618,  4495,  4374,  4253,  4132,  4011,  3893,  3775,  3663, | ||||
|          3552,  3446,  3340,  3239,  3138,  3043,  2948,  2858,  2768,  2684, | ||||
|          2600,  2516,  2433,  2355,  2278,  2205,  2133,  2065,  1997,  1932, | ||||
|          1867,  1807,  1747,  1690,  1634,  1580,  1526,  1472,  1418,  1366, | ||||
|          1314,  1266,  1218,  1174,  1130,  1088,  1047,  1009,   971,   936, | ||||
|           901,   868,   836,   804,   772,   743,   714,   685,   658,   631, | ||||
|           606,   582,   559,   536,   515,   494,   475,   456,   437,   418, | ||||
|           399,   380,   362,   344,   328,   312,   297,   283,   270,   257, | ||||
|           245,   233,   222,   211,   201,   191,   181,   172,   163,   155, | ||||
|           147,   139,   132,   125,   119,   113,   107,   101,    96,    91, | ||||
|            86,    81,    76,    71,    66,    62,    58,    54,    50,    46, | ||||
|            43,    40,    37,    34,    31,    28,    26,    24,    22,    20, | ||||
|            18,    16,    14,    12,    10,     8,     6,     5,     4,     3, | ||||
|             2,     1,     0 | ||||
|     }, | ||||
|     { | ||||
|     16384, 16159, 15934, 15709, 15485, 15261, 15038, 14816, 14594, 14373, | ||||
|     14152, 13933, 13714, 13497, 13280, 13065, 12850, 12636, 12422, 12211, | ||||
|     12000, 11791, 11583, 11378, 11173, 10971, 10769, 10571, 10373, 10179, | ||||
|      9985,  9793,  9601,  9409,  9217,  9029,  8842,  8658,  8475,  8297, | ||||
|      8120,  7946,  7773,  7604,  7435,  7271,  7108,  6950,  6792,  6634, | ||||
|      6477,  6326,  6175,  6029,  5883,  5742,  5602,  5466,  5330,  5199, | ||||
|      5068,  4943,  4818,  4696,  4574,  4452,  4330,  4211,  4093,  3979, | ||||
|      3866,  3759,  3652,  3549,  3446,  3348,  3250,  3157,  3065,  2977, | ||||
|      2889,  2802,  2716,  2634,  2553,  2476,  2399,  2326,  2254,  2185, | ||||
|      2117,  2052,  1987,  1926,  1866,  1808,  1750,  1692,  1634,  1578, | ||||
|      1522,  1470,  1418,  1369,  1321,  1275,  1229,  1187,  1145,  1105, | ||||
|      1066,  1027,   991,   955,   919,   883,   850,   817,   786,   756, | ||||
|       728,   700,   674,   648,   624,   600,   578,   556,   534,   512, | ||||
|       490,   468,   447,   426,   407,   388,   371,   354,   338,   322, | ||||
|       307,   293,   280,   267,   255,   243,   231,   219,   209,   199, | ||||
|       189,   179,   170,   161,   153,   145,   138,   131,   124,   117, | ||||
|       111,   105,    99,    93,    87,    81,    76,    71,    66,    61, | ||||
|        57,    53,    49,    45,    42,    39,    36,    33,    30,    27, | ||||
|        24,    21,    19,    17,    15,    13,    11,     9,     7,     5, | ||||
|         3,     1,     0 | ||||
|         16384, 16159, 15934, 15709, 15485, 15261, 15038, 14816, 14594, 14373, | ||||
|         14152, 13933, 13714, 13497, 13280, 13065, 12850, 12636, 12422, 12211, | ||||
|         12000, 11791, 11583, 11378, 11173, 10971, 10769, 10571, 10373, 10179, | ||||
|          9985,  9793,  9601,  9409,  9217,  9029,  8842,  8658,  8475,  8297, | ||||
|          8120,  7946,  7773,  7604,  7435,  7271,  7108,  6950,  6792,  6634, | ||||
|          6477,  6326,  6175,  6029,  5883,  5742,  5602,  5466,  5330,  5199, | ||||
|          5068,  4943,  4818,  4696,  4574,  4452,  4330,  4211,  4093,  3979, | ||||
|          3866,  3759,  3652,  3549,  3446,  3348,  3250,  3157,  3065,  2977, | ||||
|          2889,  2802,  2716,  2634,  2553,  2476,  2399,  2326,  2254,  2185, | ||||
|          2117,  2052,  1987,  1926,  1866,  1808,  1750,  1692,  1634,  1578, | ||||
|          1522,  1470,  1418,  1369,  1321,  1275,  1229,  1187,  1145,  1105, | ||||
|          1066,  1027,   991,   955,   919,   883,   850,   817,   786,   756, | ||||
|           728,   700,   674,   648,   624,   600,   578,   556,   534,   512, | ||||
|           490,   468,   447,   426,   407,   388,   371,   354,   338,   322, | ||||
|           307,   293,   280,   267,   255,   243,   231,   219,   209,   199, | ||||
|           189,   179,   170,   161,   153,   145,   138,   131,   124,   117, | ||||
|           111,   105,    99,    93,    87,    81,    76,    71,    66,    61, | ||||
|            57,    53,    49,    45,    42,    39,    36,    33,    30,    27, | ||||
|            24,    21,    19,    17,    15,    13,    11,     9,     7,     5, | ||||
|             3,     1,     0 | ||||
|     }, | ||||
|     { | ||||
|     16384, 16169, 15954, 15739, 15524, 15310, 15096, 14883, 14670, 14458, | ||||
|     14246, 14035, 13824, 13614, 13405, 13198, 12991, 12785, 12579, 12376, | ||||
|     12173, 11972, 11772, 11574, 11377, 11182, 10987, 10795, 10603, 10414, | ||||
|     10226, 10040,  9854,  9668,  9482,  9299,  9116,  8937,  8759,  8585, | ||||
|      8411,  8241,  8071,  7906,  7741,  7580,  7419,  7263,  7107,  6952, | ||||
|      6797,  6647,  6497,  6353,  6209,  6070,  5931,  5796,  5661,  5531, | ||||
|      5401,  5275,  5150,  5027,  4904,  4781,  4658,  4538,  4419,  4304, | ||||
|      4190,  4081,  3972,  3867,  3762,  3662,  3562,  3467,  3372,  3281, | ||||
|      3191,  3101,  3012,  2928,  2844,  2764,  2684,  2608,  2533,  2460, | ||||
|      2387,  2318,  2250,  2185,  2121,  2059,  1997,  1935,  1873,  1813, | ||||
|      1754,  1698,  1642,  1588,  1535,  1483,  1433,  1384,  1338,  1292, | ||||
|      1249,  1206,  1165,  1125,  1085,  1045,  1008,   971,   937,   903, | ||||
|       871,   840,   810,   780,   752,   724,   698,   672,   647,   622, | ||||
|       597,   572,   548,   524,   502,   480,   460,   440,   421,   403, | ||||
|       386,   369,   353,   337,   323,   309,   295,   281,   268,   255, | ||||
|       243,   231,   220,   209,   199,   189,   180,   171,   163,   155, | ||||
|       147,   139,   131,   123,   116,   109,   102,    95,    89,    83, | ||||
|        77,    72,    67,    62,    57,    52,    48,    44,    40,    36, | ||||
|        32,    28,    25,    22,    19,    16,    13,    10,     8,     6, | ||||
|         4,     2,     0 | ||||
|         16384, 16169, 15954, 15739, 15524, 15310, 15096, 14883, 14670, 14458, | ||||
|         14246, 14035, 13824, 13614, 13405, 13198, 12991, 12785, 12579, 12376, | ||||
|         12173, 11972, 11772, 11574, 11377, 11182, 10987, 10795, 10603, 10414, | ||||
|         10226, 10040,  9854,  9668,  9482,  9299,  9116,  8937,  8759,  8585, | ||||
|          8411,  8241,  8071,  7906,  7741,  7580,  7419,  7263,  7107,  6952, | ||||
|          6797,  6647,  6497,  6353,  6209,  6070,  5931,  5796,  5661,  5531, | ||||
|          5401,  5275,  5150,  5027,  4904,  4781,  4658,  4538,  4419,  4304, | ||||
|          4190,  4081,  3972,  3867,  3762,  3662,  3562,  3467,  3372,  3281, | ||||
|          3191,  3101,  3012,  2928,  2844,  2764,  2684,  2608,  2533,  2460, | ||||
|          2387,  2318,  2250,  2185,  2121,  2059,  1997,  1935,  1873,  1813, | ||||
|          1754,  1698,  1642,  1588,  1535,  1483,  1433,  1384,  1338,  1292, | ||||
|          1249,  1206,  1165,  1125,  1085,  1045,  1008,   971,   937,   903, | ||||
|           871,   840,   810,   780,   752,   724,   698,   672,   647,   622, | ||||
|           597,   572,   548,   524,   502,   480,   460,   440,   421,   403, | ||||
|           386,   369,   353,   337,   323,   309,   295,   281,   268,   255, | ||||
|           243,   231,   220,   209,   199,   189,   180,   171,   163,   155, | ||||
|           147,   139,   131,   123,   116,   109,   102,    95,    89,    83, | ||||
|            77,    72,    67,    62,    57,    52,    48,    44,    40,    36, | ||||
|            32,    28,    25,    22,    19,    16,    13,    10,     8,     6, | ||||
|             4,     2,     0 | ||||
|     }, | ||||
|     { | ||||
|     16384, 16177, 15970, 15764, 15558, 15353, 15148, 14944, 14740, 14537, | ||||
|     14334, 14132, 13930, 13729, 13529, 13330, 13131, 12933, 12735, 12539, | ||||
|     12343, 12150, 11957, 11766, 11576, 11388, 11200, 11015, 10830, 10647, | ||||
|     10465, 10285, 10105,  9925,  9745,  9568,  9391,  9218,  9045,  8876, | ||||
|      8707,  8541,  8375,  8213,  8051,  7894,  7737,  7583,  7429,  7277, | ||||
|      7125,  6977,  6830,  6687,  6544,  6406,  6268,  6133,  5998,  5868, | ||||
|      5738,  5612,  5487,  5364,  5241,  5118,  4995,  4875,  4755,  4640, | ||||
|      4525,  4414,  4304,  4198,  4092,  3990,  3888,  3790,  3693,  3600, | ||||
|      3507,  3415,  3323,  3235,  3147,  3064,  2981,  2902,  2823,  2746, | ||||
|      2670,  2594,  2522,  2450,  2382,  2314,  2248,  2182,  2116,  2050, | ||||
|      1987,  1924,  1864,  1804,  1748,  1692,  1638,  1585,  1534,  1484, | ||||
|      1437,  1390,  1346,  1302,  1258,  1215,  1174,  1133,  1095,  1057, | ||||
|      1021,   986,   952,   918,   887,   856,   827,   798,   770,   742, | ||||
|       714,   686,   659,   632,   607,   582,   559,   536,   514,   492, | ||||
|       472,   452,   433,   415,   398,   381,   364,   348,   333,   318, | ||||
|       304,   290,   277,   264,   252,   240,   229,   218,   208,   198, | ||||
|       188,   178,   168,   158,   149,   140,   132,   124,   116,   108, | ||||
|       101,    94,    87,    81,    75,    69,    64,    59,    54,    49, | ||||
|        44,    39,    35,    31,    27,    23,    19,    15,    12,     9, | ||||
|         6,     3,     0 | ||||
|         16384, 16177, 15970, 15764, 15558, 15353, 15148, 14944, 14740, 14537, | ||||
|         14334, 14132, 13930, 13729, 13529, 13330, 13131, 12933, 12735, 12539, | ||||
|         12343, 12150, 11957, 11766, 11576, 11388, 11200, 11015, 10830, 10647, | ||||
|         10465, 10285, 10105,  9925,  9745,  9568,  9391,  9218,  9045,  8876, | ||||
|          8707,  8541,  8375,  8213,  8051,  7894,  7737,  7583,  7429,  7277, | ||||
|          7125,  6977,  6830,  6687,  6544,  6406,  6268,  6133,  5998,  5868, | ||||
|          5738,  5612,  5487,  5364,  5241,  5118,  4995,  4875,  4755,  4640, | ||||
|          4525,  4414,  4304,  4198,  4092,  3990,  3888,  3790,  3693,  3600, | ||||
|          3507,  3415,  3323,  3235,  3147,  3064,  2981,  2902,  2823,  2746, | ||||
|          2670,  2594,  2522,  2450,  2382,  2314,  2248,  2182,  2116,  2050, | ||||
|          1987,  1924,  1864,  1804,  1748,  1692,  1638,  1585,  1534,  1484, | ||||
|          1437,  1390,  1346,  1302,  1258,  1215,  1174,  1133,  1095,  1057, | ||||
|          1021,   986,   952,   918,   887,   856,   827,   798,   770,   742, | ||||
|           714,   686,   659,   632,   607,   582,   559,   536,   514,   492, | ||||
|           472,   452,   433,   415,   398,   381,   364,   348,   333,   318, | ||||
|           304,   290,   277,   264,   252,   240,   229,   218,   208,   198, | ||||
|           188,   178,   168,   158,   149,   140,   132,   124,   116,   108, | ||||
|           101,    94,    87,    81,    75,    69,    64,    59,    54,    49, | ||||
|            44,    39,    35,    31,    27,    23,    19,    15,    12,     9, | ||||
|             6,     3,     0 | ||||
|     } | ||||
| }; | ||||
|  | ||||
|  | ||||
| static const uint16_t cf_tables_3[5][257] = { | ||||
|     { | ||||
|     16384, 16187, 15990, 15793, 15597, 15401, 15205, 15009, 14813, 14618, | ||||
|     14423, 14230, 14037, 13845, 13653, 13463, 13273, 13083, 12894, 12706, | ||||
|     12518, 12332, 12146, 11962, 11778, 11597, 11416, 11237, 11059, 10882, | ||||
|     10706, 10532, 10358, 10184, 10010,  9838,  9666,  9497,  9328,  9163, | ||||
|      8999,  8837,  8675,  8517,  8359,  8205,  8051,  7901,  7751,  7602, | ||||
|      7453,  7308,  7163,  7022,  6882,  6745,  6609,  6476,  6343,  6214, | ||||
|      6085,  5960,  5835,  5712,  5589,  5466,  5343,  5223,  5103,  4987, | ||||
|      4872,  4761,  4650,  4542,  4435,  4332,  4229,  4130,  4031,  3936, | ||||
|      3841,  3747,  3653,  3563,  3473,  3387,  3302,  3220,  3138,  3059, | ||||
|      2980,  2905,  2830,  2759,  2688,  2619,  2550,  2481,  2412,  2345, | ||||
|      2278,  2215,  2152,  2092,  2032,  1974,  1917,  1863,  1809,  1758, | ||||
|      1707,  1659,  1611,  1564,  1517,  1473,  1429,  1387,  1346,  1307, | ||||
|      1268,  1230,  1193,  1158,  1123,  1090,  1058,  1026,   994,   962, | ||||
|       930,   899,   869,   841,   813,   786,   760,   735,   710,   687, | ||||
|       664,   643,   622,   602,   582,   562,   543,   525,   507,   490, | ||||
|       473,   457,   442,   427,   412,   398,   385,   373,   361,   349, | ||||
|       337,   325,   313,   301,   290,   279,   269,   259,   249,   240, | ||||
|       231,   222,   214,   206,   199,   192,   185,   178,   171,   165, | ||||
|       159,   153,   148,   143,   138,   133,   128,   123,   119,   115, | ||||
|       111,   107,   103,    99,    95,    91,    87,    83,    80,    77, | ||||
|        74,    71,    68,    65,    63,    61,    59,    57,    55,    53, | ||||
|        51,    49,    47,    45,    43,    41,    40,    39,    38,    37, | ||||
|        36,    35,    34,    33,    32,    31,    30,    29,    28,    27, | ||||
|        26,    25,    24,    23,    22,    21,    20,    19,    18,    17, | ||||
|        16,    15,    14,    13,    12,    11,    10,     9,     8,     7, | ||||
|         6,     5,     4,     3,     2,     1,     0 | ||||
|         16384, 16187, 15990, 15793, 15597, 15401, 15205, 15009, 14813, 14618, | ||||
|         14423, 14230, 14037, 13845, 13653, 13463, 13273, 13083, 12894, 12706, | ||||
|         12518, 12332, 12146, 11962, 11778, 11597, 11416, 11237, 11059, 10882, | ||||
|         10706, 10532, 10358, 10184, 10010,  9838,  9666,  9497,  9328,  9163, | ||||
|          8999,  8837,  8675,  8517,  8359,  8205,  8051,  7901,  7751,  7602, | ||||
|          7453,  7308,  7163,  7022,  6882,  6745,  6609,  6476,  6343,  6214, | ||||
|          6085,  5960,  5835,  5712,  5589,  5466,  5343,  5223,  5103,  4987, | ||||
|          4872,  4761,  4650,  4542,  4435,  4332,  4229,  4130,  4031,  3936, | ||||
|          3841,  3747,  3653,  3563,  3473,  3387,  3302,  3220,  3138,  3059, | ||||
|          2980,  2905,  2830,  2759,  2688,  2619,  2550,  2481,  2412,  2345, | ||||
|          2278,  2215,  2152,  2092,  2032,  1974,  1917,  1863,  1809,  1758, | ||||
|          1707,  1659,  1611,  1564,  1517,  1473,  1429,  1387,  1346,  1307, | ||||
|          1268,  1230,  1193,  1158,  1123,  1090,  1058,  1026,   994,   962, | ||||
|           930,   899,   869,   841,   813,   786,   760,   735,   710,   687, | ||||
|           664,   643,   622,   602,   582,   562,   543,   525,   507,   490, | ||||
|           473,   457,   442,   427,   412,   398,   385,   373,   361,   349, | ||||
|           337,   325,   313,   301,   290,   279,   269,   259,   249,   240, | ||||
|           231,   222,   214,   206,   199,   192,   185,   178,   171,   165, | ||||
|           159,   153,   148,   143,   138,   133,   128,   123,   119,   115, | ||||
|           111,   107,   103,    99,    95,    91,    87,    83,    80,    77, | ||||
|            74,    71,    68,    65,    63,    61,    59,    57,    55,    53, | ||||
|            51,    49,    47,    45,    43,    41,    40,    39,    38,    37, | ||||
|            36,    35,    34,    33,    32,    31,    30,    29,    28,    27, | ||||
|            26,    25,    24,    23,    22,    21,    20,    19,    18,    17, | ||||
|            16,    15,    14,    13,    12,    11,    10,     9,     8,     7, | ||||
|             6,     5,     4,     3,     2,     1,     0 | ||||
|     }, | ||||
|     { | ||||
|     16384, 16195, 16006, 15817, 15629, 15441, 15253, 15065, 14878, 14692, | ||||
|     14506, 14321, 14136, 13952, 13768, 13585, 13402, 13219, 13037, 12857, | ||||
|     12677, 12499, 12321, 12144, 11967, 11792, 11617, 11444, 11271, 11100, | ||||
|     10930, 10762, 10594, 10426, 10258, 10091,  9925,  9761,  9598,  9438, | ||||
|      9278,  9120,  8963,  8809,  8655,  8504,  8354,  8207,  8060,  7914, | ||||
|      7769,  7627,  7485,  7347,  7209,  7074,  6939,  6807,  6676,  6548, | ||||
|      6420,  6296,  6172,  6050,  5928,  5806,  5684,  5564,  5444,  5328, | ||||
|      5212,  5100,  4988,  4879,  4771,  4667,  4563,  4462,  4362,  4265, | ||||
|      4169,  4073,  3978,  3886,  3795,  3707,  3619,  3535,  3451,  3369, | ||||
|      3288,  3210,  3133,  3059,  2985,  2913,  2841,  2769,  2697,  2627, | ||||
|      2557,  2490,  2424,  2360,  2297,  2237,  2177,  2119,  2062,  2007, | ||||
|      1953,  1901,  1849,  1798,  1748,  1700,  1652,  1607,  1562,  1519, | ||||
|      1476,  1435,  1394,  1355,  1317,  1281,  1245,  1210,  1175,  1140, | ||||
|      1105,  1071,  1037,  1005,   973,   943,   913,   885,   857,   830, | ||||
|       804,   779,   754,   731,   708,   685,   663,   642,   621,   601, | ||||
|       581,   563,   545,   528,   511,   495,   479,   463,   448,   433, | ||||
|       419,   405,   391,   377,   364,   351,   338,   326,   314,   302, | ||||
|       291,   280,   270,   260,   251,   242,   234,   226,   218,   210, | ||||
|       202,   195,   188,   181,   174,   168,   162,   156,   150,   144, | ||||
|       139,   134,   129,   124,   119,   114,   109,   104,   100,    96, | ||||
|        92,    88,    84,    80,    77,    74,    71,    68,    65,    62, | ||||
|        59,    56,    54,    52,    50,    48,    46,    44,    42,    40, | ||||
|        38,    36,    34,    33,    32,    31,    30,    29,    28,    27, | ||||
|        26,    25,    24,    23,    22,    21,    20,    19,    18,    17, | ||||
|        16,    15,    14,    13,    12,    11,    10,     9,     8,     7, | ||||
|         6,     5,     4,     3,     2,     1,     0 | ||||
|         16384, 16195, 16006, 15817, 15629, 15441, 15253, 15065, 14878, 14692, | ||||
|         14506, 14321, 14136, 13952, 13768, 13585, 13402, 13219, 13037, 12857, | ||||
|         12677, 12499, 12321, 12144, 11967, 11792, 11617, 11444, 11271, 11100, | ||||
|         10930, 10762, 10594, 10426, 10258, 10091,  9925,  9761,  9598,  9438, | ||||
|          9278,  9120,  8963,  8809,  8655,  8504,  8354,  8207,  8060,  7914, | ||||
|          7769,  7627,  7485,  7347,  7209,  7074,  6939,  6807,  6676,  6548, | ||||
|          6420,  6296,  6172,  6050,  5928,  5806,  5684,  5564,  5444,  5328, | ||||
|          5212,  5100,  4988,  4879,  4771,  4667,  4563,  4462,  4362,  4265, | ||||
|          4169,  4073,  3978,  3886,  3795,  3707,  3619,  3535,  3451,  3369, | ||||
|          3288,  3210,  3133,  3059,  2985,  2913,  2841,  2769,  2697,  2627, | ||||
|          2557,  2490,  2424,  2360,  2297,  2237,  2177,  2119,  2062,  2007, | ||||
|          1953,  1901,  1849,  1798,  1748,  1700,  1652,  1607,  1562,  1519, | ||||
|          1476,  1435,  1394,  1355,  1317,  1281,  1245,  1210,  1175,  1140, | ||||
|          1105,  1071,  1037,  1005,   973,   943,   913,   885,   857,   830, | ||||
|           804,   779,   754,   731,   708,   685,   663,   642,   621,   601, | ||||
|           581,   563,   545,   528,   511,   495,   479,   463,   448,   433, | ||||
|           419,   405,   391,   377,   364,   351,   338,   326,   314,   302, | ||||
|           291,   280,   270,   260,   251,   242,   234,   226,   218,   210, | ||||
|           202,   195,   188,   181,   174,   168,   162,   156,   150,   144, | ||||
|           139,   134,   129,   124,   119,   114,   109,   104,   100,    96, | ||||
|            92,    88,    84,    80,    77,    74,    71,    68,    65,    62, | ||||
|            59,    56,    54,    52,    50,    48,    46,    44,    42,    40, | ||||
|            38,    36,    34,    33,    32,    31,    30,    29,    28,    27, | ||||
|            26,    25,    24,    23,    22,    21,    20,    19,    18,    17, | ||||
|            16,    15,    14,    13,    12,    11,    10,     9,     8,     7, | ||||
|             6,     5,     4,     3,     2,     1,     0 | ||||
|     }, | ||||
|     { | ||||
|     16384, 16203, 16022, 15842, 15662, 15482, 15302, 15122, 14942, 14763, | ||||
|     14584, 14406, 14228, 14051, 13874, 13698, 13522, 13347, 13172, 12998, | ||||
|     12824, 12652, 12480, 12310, 12140, 11971, 11803, 11637, 11471, 11307, | ||||
|     11143, 10980, 10817, 10654, 10491, 10330, 10169, 10011,  9853,  9697, | ||||
|      9542,  9389,  9236,  9086,  8936,  8789,  8642,  8498,  8355,  8212, | ||||
|      8070,  7931,  7792,  7656,  7520,  7388,  7256,  7126,  6996,  6870, | ||||
|      6744,  6621,  6498,  6377,  6256,  6135,  6014,  5895,  5776,  5660, | ||||
|      5545,  5433,  5321,  5212,  5104,  4999,  4895,  4793,  4692,  4594, | ||||
|      4496,  4400,  4304,  4211,  4118,  4028,  3939,  3853,  3767,  3684, | ||||
|      3601,  3521,  3441,  3364,  3287,  3212,  3137,  3062,  2987,  2915, | ||||
|      2843,  2773,  2704,  2638,  2572,  2508,  2445,  2384,  2324,  2266, | ||||
|      2208,  2153,  2098,  2044,  1990,  1939,  1888,  1839,  1791,  1745, | ||||
|      1699,  1655,  1611,  1569,  1527,  1487,  1448,  1409,  1370,  1331, | ||||
|      1292,  1255,  1218,  1183,  1148,  1115,  1082,  1051,  1020,   990, | ||||
|       960,   932,   904,   878,   852,   826,   801,   777,   753,   731, | ||||
|       709,   687,   666,   645,   625,   605,   586,   567,   550,   533, | ||||
|       516,   499,   482,   465,   449,   433,   418,   403,   389,   375, | ||||
|       362,   349,   337,   325,   314,   303,   293,   283,   273,   263, | ||||
|       254,   245,   236,   227,   219,   211,   204,   197,   190,   183, | ||||
|       177,   171,   165,   159,   153,   147,   141,   135,   130,   125, | ||||
|       120,   115,   110,   105,   101,    97,    93,    89,    85,    81, | ||||
|        77,    74,    71,    68,    65,    62,    59,    56,    53,    51, | ||||
|        49,    47,    45,    43,    41,    39,    37,    35,    33,    31, | ||||
|        29,    27,    25,    23,    22,    21,    20,    19,    18,    17, | ||||
|        16,    15,    14,    13,    12,    11,    10,     9,     8,     7, | ||||
|         6,     5,     4,     3,     2,     1,     0 | ||||
|         16384, 16203, 16022, 15842, 15662, 15482, 15302, 15122, 14942, 14763, | ||||
|         14584, 14406, 14228, 14051, 13874, 13698, 13522, 13347, 13172, 12998, | ||||
|         12824, 12652, 12480, 12310, 12140, 11971, 11803, 11637, 11471, 11307, | ||||
|         11143, 10980, 10817, 10654, 10491, 10330, 10169, 10011,  9853,  9697, | ||||
|          9542,  9389,  9236,  9086,  8936,  8789,  8642,  8498,  8355,  8212, | ||||
|          8070,  7931,  7792,  7656,  7520,  7388,  7256,  7126,  6996,  6870, | ||||
|          6744,  6621,  6498,  6377,  6256,  6135,  6014,  5895,  5776,  5660, | ||||
|          5545,  5433,  5321,  5212,  5104,  4999,  4895,  4793,  4692,  4594, | ||||
|          4496,  4400,  4304,  4211,  4118,  4028,  3939,  3853,  3767,  3684, | ||||
|          3601,  3521,  3441,  3364,  3287,  3212,  3137,  3062,  2987,  2915, | ||||
|          2843,  2773,  2704,  2638,  2572,  2508,  2445,  2384,  2324,  2266, | ||||
|          2208,  2153,  2098,  2044,  1990,  1939,  1888,  1839,  1791,  1745, | ||||
|          1699,  1655,  1611,  1569,  1527,  1487,  1448,  1409,  1370,  1331, | ||||
|          1292,  1255,  1218,  1183,  1148,  1115,  1082,  1051,  1020,   990, | ||||
|           960,   932,   904,   878,   852,   826,   801,   777,   753,   731, | ||||
|           709,   687,   666,   645,   625,   605,   586,   567,   550,   533, | ||||
|           516,   499,   482,   465,   449,   433,   418,   403,   389,   375, | ||||
|           362,   349,   337,   325,   314,   303,   293,   283,   273,   263, | ||||
|           254,   245,   236,   227,   219,   211,   204,   197,   190,   183, | ||||
|           177,   171,   165,   159,   153,   147,   141,   135,   130,   125, | ||||
|           120,   115,   110,   105,   101,    97,    93,    89,    85,    81, | ||||
|            77,    74,    71,    68,    65,    62,    59,    56,    53,    51, | ||||
|            49,    47,    45,    43,    41,    39,    37,    35,    33,    31, | ||||
|            29,    27,    25,    23,    22,    21,    20,    19,    18,    17, | ||||
|            16,    15,    14,    13,    12,    11,    10,     9,     8,     7, | ||||
|             6,     5,     4,     3,     2,     1,     0 | ||||
|     }, | ||||
|     { | ||||
|     16384, 16210, 16036, 15863, 15690, 15517, 15344, 15172, 15000, 14828, | ||||
|     14656, 14485, 14314, 14145, 13976, 13808, 13640, 13472, 13304, 13137, | ||||
|     12970, 12804, 12639, 12475, 12312, 12149, 11987, 11827, 11667, 11508, | ||||
|     11349, 11192, 11035, 10878, 10721, 10565, 10410, 10257, 10104,  9953, | ||||
|      9802,  9654,  9506,  9359,  9213,  9070,  8927,  8787,  8647,  8508, | ||||
|      8369,  8233,  8097,  7964,  7831,  7700,  7570,  7442,  7315,  7190, | ||||
|      7065,  6943,  6821,  6701,  6581,  6461,  6341,  6223,  6105,  5990, | ||||
|      5876,  5764,  5653,  5545,  5437,  5331,  5226,  5124,  5022,  4924, | ||||
|      4826,  4729,  4632,  4538,  4444,  4353,  4262,  4174,  4087,  4002, | ||||
|      3917,  3835,  3753,  3674,  3595,  3518,  3441,  3364,  3287,  3212, | ||||
|      3138,  3066,  2995,  2926,  2858,  2792,  2726,  2662,  2599,  2538, | ||||
|      2478,  2420,  2362,  2305,  2249,  2195,  2141,  2089,  2037,  1988, | ||||
|      1939,  1891,  1844,  1799,  1754,  1711,  1668,  1626,  1584,  1542, | ||||
|      1500,  1459,  1418,  1380,  1342,  1305,  1269,  1234,  1199,  1166, | ||||
|      1133,  1102,  1071,  1041,  1012,   983,   954,   926,   899,   872, | ||||
|       847,   822,   798,   774,   751,   728,   707,   686,   666,   646, | ||||
|       627,   608,   589,   570,   552,   534,   517,   500,   484,   468, | ||||
|       453,   438,   424,   410,   397,   384,   372,   360,   348,   336, | ||||
|       325,   314,   303,   293,   283,   273,   264,   255,   246,   237, | ||||
|       229,   221,   213,   205,   197,   189,   181,   174,   167,   160, | ||||
|       154,   148,   142,   136,   131,   126,   121,   116,   111,   106, | ||||
|       101,    97,    93,    89,    85,    81,    77,    73,    70,    67, | ||||
|        64,    61,    58,    55,    52,    49,    46,    43,    40,    37, | ||||
|        35,    33,    31,    29,    27,    25,    23,    21,    19,    17, | ||||
|        16,    15,    14,    13,    12,    11,    10,     9,     8,     7, | ||||
|         6,     5,     4,     3,     2,     1,     0 | ||||
|         16384, 16210, 16036, 15863, 15690, 15517, 15344, 15172, 15000, 14828, | ||||
|         14656, 14485, 14314, 14145, 13976, 13808, 13640, 13472, 13304, 13137, | ||||
|         12970, 12804, 12639, 12475, 12312, 12149, 11987, 11827, 11667, 11508, | ||||
|         11349, 11192, 11035, 10878, 10721, 10565, 10410, 10257, 10104,  9953, | ||||
|          9802,  9654,  9506,  9359,  9213,  9070,  8927,  8787,  8647,  8508, | ||||
|          8369,  8233,  8097,  7964,  7831,  7700,  7570,  7442,  7315,  7190, | ||||
|          7065,  6943,  6821,  6701,  6581,  6461,  6341,  6223,  6105,  5990, | ||||
|          5876,  5764,  5653,  5545,  5437,  5331,  5226,  5124,  5022,  4924, | ||||
|          4826,  4729,  4632,  4538,  4444,  4353,  4262,  4174,  4087,  4002, | ||||
|          3917,  3835,  3753,  3674,  3595,  3518,  3441,  3364,  3287,  3212, | ||||
|          3138,  3066,  2995,  2926,  2858,  2792,  2726,  2662,  2599,  2538, | ||||
|          2478,  2420,  2362,  2305,  2249,  2195,  2141,  2089,  2037,  1988, | ||||
|          1939,  1891,  1844,  1799,  1754,  1711,  1668,  1626,  1584,  1542, | ||||
|          1500,  1459,  1418,  1380,  1342,  1305,  1269,  1234,  1199,  1166, | ||||
|          1133,  1102,  1071,  1041,  1012,   983,   954,   926,   899,   872, | ||||
|           847,   822,   798,   774,   751,   728,   707,   686,   666,   646, | ||||
|           627,   608,   589,   570,   552,   534,   517,   500,   484,   468, | ||||
|           453,   438,   424,   410,   397,   384,   372,   360,   348,   336, | ||||
|           325,   314,   303,   293,   283,   273,   264,   255,   246,   237, | ||||
|           229,   221,   213,   205,   197,   189,   181,   174,   167,   160, | ||||
|           154,   148,   142,   136,   131,   126,   121,   116,   111,   106, | ||||
|           101,    97,    93,    89,    85,    81,    77,    73,    70,    67, | ||||
|            64,    61,    58,    55,    52,    49,    46,    43,    40,    37, | ||||
|            35,    33,    31,    29,    27,    25,    23,    21,    19,    17, | ||||
|            16,    15,    14,    13,    12,    11,    10,     9,     8,     7, | ||||
|             6,     5,     4,     3,     2,     1,     0 | ||||
|     }, | ||||
|     { | ||||
|     16384, 16218, 16052, 15886, 15720, 15554, 15389, 15224, 15059, 14895, | ||||
|     14731, 14567, 14403, 14240, 14077, 13915, 13753, 13591, 13429, 13269, | ||||
|     13109, 12950, 12791, 12633, 12476, 12320, 12164, 12009, 11854, 11701, | ||||
|     11548, 11396, 11244, 11092, 10940, 10790, 10640, 10492, 10344, 10198, | ||||
|     10052,  9908,  9764,  9622,  9481,  9342,  9203,  9066,  8929,  8793, | ||||
|      8657,  8524,  8391,  8261,  8131,  8003,  7875,  7749,  7624,  7502, | ||||
|      7380,  7260,  7140,  7022,  6904,  6786,  6668,  6551,  6435,  6322, | ||||
|      6209,  6099,  5989,  5881,  5773,  5668,  5563,  5461,  5359,  5260, | ||||
|      5161,  5063,  4965,  4871,  4777,  4686,  4595,  4506,  4417,  4331, | ||||
|      4245,  4162,  4079,  3999,  3919,  3841,  3763,  3685,  3607,  3530, | ||||
|      3454,  3380,  3307,  3236,  3166,  3097,  3029,  2963,  2897,  2834, | ||||
|      2771,  2710,  2650,  2591,  2532,  2475,  2418,  2363,  2309,  2257, | ||||
|      2205,  2155,  2105,  2057,  2009,  1963,  1918,  1873,  1828,  1783, | ||||
|      1738,  1694,  1650,  1607,  1565,  1524,  1484,  1445,  1407,  1369, | ||||
|      1333,  1297,  1263,  1229,  1197,  1165,  1134,  1103,  1073,  1043, | ||||
|      1015,   987,   960,   933,   907,   882,   858,   834,   811,   788, | ||||
|       766,   744,   722,   700,   679,   658,   638,   618,   599,   581, | ||||
|       563,   545,   528,   511,   495,   480,   465,   451,   437,   423, | ||||
|       410,   397,   384,   372,   360,   348,   337,   326,   315,   305, | ||||
|       295,   285,   275,   265,   255,   245,   236,   227,   219,   211, | ||||
|       203,   195,   188,   181,   174,   167,   161,   155,   149,   143, | ||||
|       137,   131,   126,   121,   116,   111,   106,   101,    97,    93, | ||||
|        89,    85,    81,    77,    73,    69,    65,    61,    58,    55, | ||||
|        52,    49,    46,    43,    40,    37,    34,    32,    30,    28, | ||||
|        26,    24,    22,    20,    18,    16,    14,    12,    10,     8, | ||||
|         6,     5,     4,     3,     2,     1,     0 | ||||
|         16384, 16218, 16052, 15886, 15720, 15554, 15389, 15224, 15059, 14895, | ||||
|         14731, 14567, 14403, 14240, 14077, 13915, 13753, 13591, 13429, 13269, | ||||
|         13109, 12950, 12791, 12633, 12476, 12320, 12164, 12009, 11854, 11701, | ||||
|         11548, 11396, 11244, 11092, 10940, 10790, 10640, 10492, 10344, 10198, | ||||
|         10052,  9908,  9764,  9622,  9481,  9342,  9203,  9066,  8929,  8793, | ||||
|          8657,  8524,  8391,  8261,  8131,  8003,  7875,  7749,  7624,  7502, | ||||
|          7380,  7260,  7140,  7022,  6904,  6786,  6668,  6551,  6435,  6322, | ||||
|          6209,  6099,  5989,  5881,  5773,  5668,  5563,  5461,  5359,  5260, | ||||
|          5161,  5063,  4965,  4871,  4777,  4686,  4595,  4506,  4417,  4331, | ||||
|          4245,  4162,  4079,  3999,  3919,  3841,  3763,  3685,  3607,  3530, | ||||
|          3454,  3380,  3307,  3236,  3166,  3097,  3029,  2963,  2897,  2834, | ||||
|          2771,  2710,  2650,  2591,  2532,  2475,  2418,  2363,  2309,  2257, | ||||
|          2205,  2155,  2105,  2057,  2009,  1963,  1918,  1873,  1828,  1783, | ||||
|          1738,  1694,  1650,  1607,  1565,  1524,  1484,  1445,  1407,  1369, | ||||
|          1333,  1297,  1263,  1229,  1197,  1165,  1134,  1103,  1073,  1043, | ||||
|          1015,   987,   960,   933,   907,   882,   858,   834,   811,   788, | ||||
|           766,   744,   722,   700,   679,   658,   638,   618,   599,   581, | ||||
|           563,   545,   528,   511,   495,   480,   465,   451,   437,   423, | ||||
|           410,   397,   384,   372,   360,   348,   337,   326,   315,   305, | ||||
|           295,   285,   275,   265,   255,   245,   236,   227,   219,   211, | ||||
|           203,   195,   188,   181,   174,   167,   161,   155,   149,   143, | ||||
|           137,   131,   126,   121,   116,   111,   106,   101,    97,    93, | ||||
|            89,    85,    81,    77,    73,    69,    65,    61,    58,    55, | ||||
|            52,    49,    46,    43,    40,    37,    34,    32,    30,    28, | ||||
|            26,    24,    22,    20,    18,    16,    14,    12,    10,     8, | ||||
|             6,     5,     4,     3,     2,     1,     0 | ||||
|     } | ||||
| }; | ||||
|  | ||||
|  | ||||
| static const uint16_t * const cf_table[16] = { | ||||
| static const uint16_t *const cf_table[16] = { | ||||
|     cf_tables_1[0], cf_tables_1[1], cf_tables_1[2], cf_tables_2[0], | ||||
|     cf_tables_2[1], cf_tables_2[2], cf_tables_2[3], cf_tables_2[4], | ||||
|     cf_tables_2[5], cf_tables_2[6], cf_tables_2[7], cf_tables_3[0], | ||||
| @@ -424,10 +421,8 @@ static const uint16_t * const cf_table[16] = { | ||||
| }; | ||||
|  | ||||
|  | ||||
| /** Initialize a given lookup table using a given delta | ||||
|  */ | ||||
| static void bgmc_lut_fillp(uint8_t *lut, int *lut_status, | ||||
|                            int delta) | ||||
| /** Initialize a given lookup table using a given delta */ | ||||
| static void bgmc_lut_fillp(uint8_t *lut, int *lut_status, int delta) | ||||
| { | ||||
|     unsigned int sx, i; | ||||
|  | ||||
| @@ -446,10 +441,8 @@ static void bgmc_lut_fillp(uint8_t *lut, int *lut_status, | ||||
| } | ||||
|  | ||||
|  | ||||
| /** Retune the index of a suitable lookup table for a given delta | ||||
|  */ | ||||
| static uint8_t* bgmc_lut_getp(uint8_t *lut, int *lut_status, | ||||
|                               int delta) | ||||
| /** Retune the index of a suitable lookup table for a given delta */ | ||||
| static uint8_t *bgmc_lut_getp(uint8_t *lut, int *lut_status, int delta) | ||||
| { | ||||
|     unsigned int i = av_clip(delta, 0, LUT_BUFF - 1); | ||||
|  | ||||
| @@ -462,11 +455,10 @@ static uint8_t* bgmc_lut_getp(uint8_t *lut, int *lut_status, | ||||
| } | ||||
|  | ||||
|  | ||||
| /** Initialize the lookup table arrays | ||||
|  */ | ||||
| /** Initialize the lookup table arrays */ | ||||
| int ff_bgmc_init(AVCodecContext *avctx, uint8_t **cf_lut, int **cf_lut_status) | ||||
| { | ||||
|     *cf_lut        = av_malloc(sizeof(*cf_lut       ) * LUT_BUFF * 16 * LUT_SIZE); | ||||
|     *cf_lut        = av_malloc(sizeof(*cf_lut)        * LUT_BUFF * 16 * LUT_SIZE); | ||||
|     *cf_lut_status = av_malloc(sizeof(*cf_lut_status) * LUT_BUFF); | ||||
|  | ||||
|     if (!cf_lut || !cf_lut_status) { | ||||
| @@ -474,8 +466,7 @@ int ff_bgmc_init(AVCodecContext *avctx, uint8_t **cf_lut, int **cf_lut_status) | ||||
|         av_log(avctx, AV_LOG_ERROR, "Allocating buffer memory failed.\n"); | ||||
|         return AVERROR(ENOMEM); | ||||
|     } else { | ||||
|         // initialize lut_status buffer to a value never used to compare | ||||
|         // against | ||||
|         // initialize lut_status buffer to a value never used to compare against | ||||
|         memset(*cf_lut_status, -1, sizeof(*cf_lut_status) * LUT_BUFF); | ||||
|     } | ||||
|  | ||||
| @@ -483,8 +474,7 @@ int ff_bgmc_init(AVCodecContext *avctx, uint8_t **cf_lut, int **cf_lut_status) | ||||
| } | ||||
|  | ||||
|  | ||||
| /** Release the lookup table arrays | ||||
|  */ | ||||
| /** Release the lookup table arrays */ | ||||
| void ff_bgmc_end(uint8_t **cf_lut, int **cf_lut_status) | ||||
| { | ||||
|     av_freep(cf_lut); | ||||
| @@ -492,10 +482,9 @@ void ff_bgmc_end(uint8_t **cf_lut, int **cf_lut_status) | ||||
| } | ||||
|  | ||||
|  | ||||
| /** Initialize decoding and reads the first value | ||||
|  */ | ||||
| void ff_bgmc_decode_init(GetBitContext *gb, | ||||
|                          unsigned int *h, unsigned int *l, unsigned int *v) | ||||
| /** Initialize decoding and reads the first value */ | ||||
| void ff_bgmc_decode_init(GetBitContext *gb, unsigned int *h, unsigned int *l, | ||||
|                          unsigned int *v) | ||||
| { | ||||
|     *h = TOP_VALUE; | ||||
|     *l = 0; | ||||
| @@ -503,16 +492,14 @@ void ff_bgmc_decode_init(GetBitContext *gb, | ||||
| } | ||||
|  | ||||
|  | ||||
| /** Finish decoding | ||||
|  */ | ||||
| /** Finish decoding */ | ||||
| void ff_bgmc_decode_end(GetBitContext *gb) | ||||
| { | ||||
|     skip_bits_long(gb, -(VALUE_BITS - 2)); | ||||
| } | ||||
|  | ||||
|  | ||||
| /** Read and decode a block Gilbert-Moore coded symbol | ||||
|  */ | ||||
| /** Read and decode a block Gilbert-Moore coded symbol */ | ||||
| void ff_bgmc_decode(GetBitContext *gb, unsigned int num, int32_t *dst, | ||||
|                     int delta, unsigned int sx, | ||||
|                     unsigned int *h, unsigned int *l, unsigned int *v, | ||||
| @@ -522,9 +509,9 @@ void ff_bgmc_decode(GetBitContext *gb, unsigned int num, int32_t *dst, | ||||
|     uint8_t *lut = bgmc_lut_getp(cf_lut, cf_lut_status, delta); | ||||
|  | ||||
|     // read current state | ||||
|     unsigned int high   = *h; | ||||
|     unsigned int low    = *l; | ||||
|     unsigned int value  = *v; | ||||
|     unsigned int high  = *h; | ||||
|     unsigned int low   = *l; | ||||
|     unsigned int value = *v; | ||||
|  | ||||
|     lut += sx * LUT_SIZE; | ||||
|  | ||||
| @@ -539,12 +526,12 @@ void ff_bgmc_decode(GetBitContext *gb, unsigned int num, int32_t *dst, | ||||
|  | ||||
|         symbol = (symbol >> delta) - 1; | ||||
|  | ||||
|         high = low + ((range * cf_table[sx][(symbol    ) << delta] - (1 << FREQ_BITS)) >> FREQ_BITS); | ||||
|         low  = low + ((range * cf_table[sx][(symbol + 1) << delta]                   ) >> FREQ_BITS); | ||||
|         high = low + ((range * cf_table[sx][(symbol)     << delta] - (1 << FREQ_BITS)) >> FREQ_BITS); | ||||
|         low  = low + ((range * cf_table[sx][(symbol + 1) << delta])                    >> FREQ_BITS); | ||||
|  | ||||
|         while (1) { | ||||
|             if (high >= HALF) { | ||||
|                 if        (low >= HALF) { | ||||
|                 if (low >= HALF) { | ||||
|                     value -= HALF; | ||||
|                     low   -= HALF; | ||||
|                     high  -= HALF; | ||||
| @@ -552,12 +539,13 @@ void ff_bgmc_decode(GetBitContext *gb, unsigned int num, int32_t *dst, | ||||
|                     value -= FIRST_QTR; | ||||
|                     low   -= FIRST_QTR; | ||||
|                     high  -= FIRST_QTR; | ||||
|                 } else break; | ||||
|                 } else | ||||
|                     break; | ||||
|             } | ||||
|  | ||||
|             low   *= 2; | ||||
|             high   = 2 * high  + 1; | ||||
|             value  = 2 * value + get_bits1(gb); | ||||
|             low  *= 2; | ||||
|             high  = 2 * high + 1; | ||||
|             value = 2 * value + get_bits1(gb); | ||||
|         } | ||||
|  | ||||
|         *dst++ = symbol; | ||||
|   | ||||
| @@ -57,6 +57,18 @@ AVOutputFormat ff_adx_muxer = { | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| #if CONFIG_CAVSVIDEO_MUXER | ||||
| AVOutputFormat ff_cavsvideo_muxer = { | ||||
|     .name              = "cavsvideo", | ||||
|     .long_name         = NULL_IF_CONFIG_SMALL("raw Chinese AVS video"), | ||||
|     .extensions        = "cavs", | ||||
|     .audio_codec       = CODEC_ID_NONE, | ||||
|     .video_codec       = CODEC_ID_CAVS, | ||||
|     .write_packet      = ff_raw_write_packet, | ||||
|     .flags             = AVFMT_NOTIMESTAMPS, | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| #if CONFIG_DIRAC_MUXER | ||||
| AVOutputFormat ff_dirac_muxer = { | ||||
|     .name              = "dirac", | ||||
| @@ -158,18 +170,6 @@ AVOutputFormat ff_h264_muxer = { | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| #if CONFIG_CAVSVIDEO_MUXER | ||||
| AVOutputFormat ff_cavsvideo_muxer = { | ||||
|     .name              = "cavsvideo", | ||||
|     .long_name         = NULL_IF_CONFIG_SMALL("raw Chinese AVS video"), | ||||
|     .extensions        = "cavs", | ||||
|     .audio_codec       = CODEC_ID_NONE, | ||||
|     .video_codec       = CODEC_ID_CAVS, | ||||
|     .write_packet      = ff_raw_write_packet, | ||||
|     .flags             = AVFMT_NOTIMESTAMPS, | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| #if CONFIG_M4V_MUXER | ||||
| AVOutputFormat ff_m4v_muxer = { | ||||
|     .name              = "m4v", | ||||
| @@ -207,30 +207,6 @@ AVOutputFormat ff_mlp_muxer = { | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| #if CONFIG_SRT_MUXER | ||||
| AVOutputFormat ff_srt_muxer = { | ||||
|     .name           = "srt", | ||||
|     .long_name      = NULL_IF_CONFIG_SMALL("SubRip subtitle format"), | ||||
|     .mime_type      = "application/x-subrip", | ||||
|     .extensions     = "srt", | ||||
|     .write_packet   = ff_raw_write_packet, | ||||
|     .flags          = AVFMT_NOTIMESTAMPS, | ||||
|     .subtitle_codec = CODEC_ID_SRT, | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| #if CONFIG_TRUEHD_MUXER | ||||
| AVOutputFormat ff_truehd_muxer = { | ||||
|     .name              = "truehd", | ||||
|     .long_name         = NULL_IF_CONFIG_SMALL("raw TrueHD"), | ||||
|     .extensions        = "thd", | ||||
|     .audio_codec       = CODEC_ID_TRUEHD, | ||||
|     .video_codec       = CODEC_ID_NONE, | ||||
|     .write_packet      = ff_raw_write_packet, | ||||
|     .flags             = AVFMT_NOTIMESTAMPS, | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| #if CONFIG_MPEG1VIDEO_MUXER | ||||
| AVOutputFormat ff_mpeg1video_muxer = { | ||||
|     .name              = "mpeg1video", | ||||
| @@ -267,3 +243,27 @@ AVOutputFormat ff_rawvideo_muxer = { | ||||
|     .flags             = AVFMT_NOTIMESTAMPS, | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| #if CONFIG_SRT_MUXER | ||||
| AVOutputFormat ff_srt_muxer = { | ||||
|     .name              = "srt", | ||||
|     .long_name         = NULL_IF_CONFIG_SMALL("SubRip subtitle format"), | ||||
|     .mime_type         = "application/x-subrip", | ||||
|     .extensions        = "srt", | ||||
|     .write_packet      = ff_raw_write_packet, | ||||
|     .flags             = AVFMT_NOTIMESTAMPS, | ||||
|     .subtitle_codec    = CODEC_ID_SRT, | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| #if CONFIG_TRUEHD_MUXER | ||||
| AVOutputFormat ff_truehd_muxer = { | ||||
|     .name              = "truehd", | ||||
|     .long_name         = NULL_IF_CONFIG_SMALL("raw TrueHD"), | ||||
|     .extensions        = "thd", | ||||
|     .audio_codec       = CODEC_ID_TRUEHD, | ||||
|     .video_codec       = CODEC_ID_NONE, | ||||
|     .write_packet      = ff_raw_write_packet, | ||||
|     .flags             = AVFMT_NOTIMESTAMPS, | ||||
| }; | ||||
| #endif | ||||
|   | ||||
		Reference in New Issue
	
	Block a user