| @@ -35,8 +35,35 @@ | |||
| #include "ivi_common.h" | |||
| #include "ivi_dsp.h" | |||
| extern const IVIHuffDesc ff_ivi_mb_huff_desc[8]; ///< static macroblock huffman tables | |||
| extern const IVIHuffDesc ff_ivi_blk_huff_desc[8]; ///< static block huffman tables | |||
| /** | |||
| * These are 2x8 predefined Huffman codebooks for coding macroblock/block | |||
| * signals. They are specified using "huffman descriptors" in order to | |||
| * avoid huge static tables. The decoding tables will be generated at | |||
| * startup from these descriptors. | |||
| */ | |||
| /** static macroblock huffman tables */ | |||
| static const IVIHuffDesc ivi_mb_huff_desc[8] = { | |||
| {8, {0, 4, 5, 4, 4, 4, 6, 6}}, | |||
| {12, {0, 2, 2, 3, 3, 3, 3, 5, 3, 2, 2, 2}}, | |||
| {12, {0, 2, 3, 4, 3, 3, 3, 3, 4, 3, 2, 2}}, | |||
| {12, {0, 3, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2}}, | |||
| {13, {0, 4, 4, 3, 3, 3, 3, 2, 3, 3, 2, 1, 1}}, | |||
| {9, {0, 4, 4, 4, 4, 3, 3, 3, 2}}, | |||
| {10, {0, 4, 4, 4, 4, 3, 3, 2, 2, 2}}, | |||
| {12, {0, 4, 4, 4, 3, 3, 2, 3, 2, 2, 2, 2}} | |||
| }; | |||
| /** static block huffman tables */ | |||
| static const IVIHuffDesc ivi_blk_huff_desc[8] = { | |||
| {10, {1, 2, 3, 4, 4, 7, 5, 5, 4, 1}}, | |||
| {11, {2, 3, 4, 4, 4, 7, 5, 4, 3, 3, 2}}, | |||
| {12, {2, 4, 5, 5, 5, 5, 6, 4, 4, 3, 1, 1}}, | |||
| {13, {3, 3, 4, 4, 5, 6, 6, 4, 4, 3, 2, 1, 1}}, | |||
| {11, {3, 4, 4, 5, 5, 5, 6, 5, 4, 2, 2}}, | |||
| {13, {3, 4, 5, 5, 5, 5, 6, 4, 3, 3, 2, 1, 1}}, | |||
| {13, {3, 4, 5, 5, 5, 6, 5, 4, 3, 3, 2, 1, 1}}, | |||
| {9, {3, 4, 4, 5, 5, 5, 6, 5, 5}} | |||
| }; | |||
| static VLC ivi_mb_vlc_tabs [8]; ///< static macroblock Huffman tables | |||
| static VLC ivi_blk_vlc_tabs[8]; ///< static block Huffman tables | |||
| @@ -135,11 +162,11 @@ av_cold void ff_ivi_init_static_vlc(void) | |||
| for (i = 0; i < 8; i++) { | |||
| ivi_mb_vlc_tabs[i].table = table_data + i * 2 * 8192; | |||
| ivi_mb_vlc_tabs[i].table_allocated = 8192; | |||
| ivi_create_huff_from_desc(&ff_ivi_mb_huff_desc[i], | |||
| ivi_create_huff_from_desc(&ivi_mb_huff_desc[i], | |||
| &ivi_mb_vlc_tabs[i], 1); | |||
| ivi_blk_vlc_tabs[i].table = table_data + (i * 2 + 1) * 8192; | |||
| ivi_blk_vlc_tabs[i].table_allocated = 8192; | |||
| ivi_create_huff_from_desc(&ff_ivi_blk_huff_desc[i], | |||
| ivi_create_huff_from_desc(&ivi_blk_huff_desc[i], | |||
| &ivi_blk_vlc_tabs[i], 1); | |||
| } | |||
| initialized_vlcs = 1; | |||
| @@ -1039,35 +1066,6 @@ av_cold int ff_ivi_decode_close(AVCodecContext *avctx) | |||
| } | |||
| /** | |||
| * These are 2x8 predefined Huffman codebooks for coding macroblock/block | |||
| * signals. They are specified using "huffman descriptors" in order to | |||
| * avoid huge static tables. The decoding tables will be generated at | |||
| * startup from these descriptors. | |||
| */ | |||
| const IVIHuffDesc ff_ivi_mb_huff_desc[8] = { | |||
| {8, {0, 4, 5, 4, 4, 4, 6, 6}}, | |||
| {12, {0, 2, 2, 3, 3, 3, 3, 5, 3, 2, 2, 2}}, | |||
| {12, {0, 2, 3, 4, 3, 3, 3, 3, 4, 3, 2, 2}}, | |||
| {12, {0, 3, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2}}, | |||
| {13, {0, 4, 4, 3, 3, 3, 3, 2, 3, 3, 2, 1, 1}}, | |||
| {9, {0, 4, 4, 4, 4, 3, 3, 3, 2}}, | |||
| {10, {0, 4, 4, 4, 4, 3, 3, 2, 2, 2}}, | |||
| {12, {0, 4, 4, 4, 3, 3, 2, 3, 2, 2, 2, 2}} | |||
| }; | |||
| const IVIHuffDesc ff_ivi_blk_huff_desc[8] = { | |||
| {10, {1, 2, 3, 4, 4, 7, 5, 5, 4, 1}}, | |||
| {11, {2, 3, 4, 4, 4, 7, 5, 4, 3, 3, 2}}, | |||
| {12, {2, 4, 5, 5, 5, 5, 6, 4, 4, 3, 1, 1}}, | |||
| {13, {3, 3, 4, 4, 5, 6, 6, 4, 4, 3, 2, 1, 1}}, | |||
| {11, {3, 4, 4, 5, 5, 5, 6, 5, 4, 2, 2}}, | |||
| {13, {3, 4, 5, 5, 5, 5, 6, 4, 3, 3, 2, 1, 1}}, | |||
| {13, {3, 4, 5, 5, 5, 6, 5, 4, 3, 3, 2, 1, 1}}, | |||
| {9, {3, 4, 4, 5, 5, 5, 6, 5, 5}} | |||
| }; | |||
| /** | |||
| * Scan patterns shared between indeo4 and indeo5 | |||
| */ | |||