diff options
author | anonymous <> | 2005-01-24 23:01:18 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2005-01-24 23:01:18 +0000 |
commit | e5540b3fd30367ce3cc33b2f34a04b660dbc4b38 (patch) | |
tree | d5eba8a6df2a7df76bc0ef532cdded4bedd5c3ed /libavcodec/vc9data.h | |
parent | b299f0d907c1974a8d1f8d4c2580bdd83daf4960 (diff) | |
download | ffmpeg-e5540b3fd30367ce3cc33b2f34a04b660dbc4b38.tar.gz |
Fixes:
- i/p/b_decode_mbs functions now checks the proper values (from
bitplane). I didn't find it very clear, but it seems "raw" = "to read at
the MB layer". I used a structure, but we could spare that indirection and
add a flag in the VC9Context for each array.
- Properly decode (or so I think) the CBPCY (as it is predicted)
- many more things
patch by anonymous
Originally committed as revision 3882 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/vc9data.h')
-rw-r--r-- | libavcodec/vc9data.h | 70 |
1 files changed, 64 insertions, 6 deletions
diff --git a/libavcodec/vc9data.h b/libavcodec/vc9data.h index cfa06a2f14..4e21b4fbda 100644 --- a/libavcodec/vc9data.h +++ b/libavcodec/vc9data.h @@ -240,7 +240,7 @@ static const uint8_t vc9_cbpcy_p_bits[4][64] = { } }; -/* MacroBlock Transform Type +/* MacroBlock Transform Type: 7.1.3.11, p89 * 8x8:B * 8x4:B:btm 8x4:B:top 8x4:B:both, * 4x8:B:right 4x8:B:left 4x8:B:both @@ -272,7 +272,7 @@ static const uint16_t vc9_ttmb_codes[3][16] = { 0x0000, 0x000E, 0x0005, 0x0002, 0x0003, 0x0003, 0x000F, 0x0002, - 0x0081, 0x0011, 0x0009, + 0x0081, 0x0021, 0x0009, 0x0101, 0x0041, 0x0011, 0x0100 } @@ -302,8 +302,8 @@ static const uint8_t vc9_ttmb_bits[3][16] = { 3, 4, 5, 3, 3, 4, 4, 2, - 9, 7, 6, - 10, 9, 7, + 10, 8, 6, + 11, 9, 7, 11 } }; @@ -392,7 +392,7 @@ static const uint8_t vc9_mv_diff_bits[4][73] = { } }; -/* DC luma differentials low+hi-mo, p217 */ +/* DC differentials low+hi-mo, p217 */ //same as msmpeg4 table0/1_dc_lum static const uint32_t vc9_luma_dc_codes[2][120] = { { @@ -442,6 +442,7 @@ static const uint8_t vc9_luma_dc_bits[2][120] = { 24, 24, 24, 24, 24, 24, 24, 24 /* lowmo, 120 values */ }, { + 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, @@ -453,6 +454,63 @@ static const uint8_t vc9_luma_dc_bits[2][120] = { } }; -/* DC chroma differentials low+hi-mo */ +static const uint32_t vc9_chroma_dc_codes[2][120] = { + { + 0, 1, 5, 9, 13, 17, 29, 31, + 33, 49, 56, 51, 57, 61, 97, 121, + 128, 200, 202, 240, 129, 192, 201, 263, + 262, 406, 387, 483, 482, 522, 523, 1545, + 1042, 1043, 1547, 1041, 1546, 1631, 1040, 1629, + 1630, 3256, 3088, 3257, 6179, 12357, 24713, 49424, + 3163208, 3163209, 3163210, 3163211, 3163212, 3163213, 3163214, 3163215, + 3163216, 3163217, 3163218, 3163219, 3163220, 3163221, 3163222, 3163223, + 3163224, 3163225, 3163226, 3163227, 3163228, 3163229, 3163230, 3163231, + 3163232, 3163233, 3163234, 3163235, 3163236, 3163237, 3163238, 3163239, + 3163240, 3163241, 3163242, 3163243, 3163244, 3163245, 3163248, 3163231, + 3163248, 3163249, 3163250, 3163251, 3163252, 3163253, 3163254, 3163255, + 3163256, 3163257, 3163258, 3163259, 3163260, 3163261, 3163262, 3163263, + 6326400, 6326401, 6326402, 6326403, 6326404, 6326405, 6326406, 6326407, + 6326408, 6326409, 6326410, 6326411, 6326412, 6326413, 6326414, 6326415 + }, + { + 0, 1, 4, 7, 11, 13, 21, 40, + 48, 50, 82, 98, 102, 166, 198, 207, + 335, 398, 412, 669, 826, 1336, 1596, 1598, + 1599, 1654, 2675, 3194, 3311, 5349, 6621, 10696, + 10697, 25565, 13240, 13241, 51126, 25560, 25567, 51123, + 51124, 51125, 25566, 51127, 51128, 51129, 102245, 204488, + 13087304,13087305,13087306,13087307,13087308,13087309,13087310,13087311, + 13087312,13087313,13087314,13087315,13087316,13087317,13087318,13087319, + 13087320,13087321,13087322,13087323,13087324,13087325,13087326,13087327, + 13087328,13087329,13087330,13087331,13087332,13087333,13087334,13087335, + 13087336,13087337,13087338,13087339,13087340,13087341,13087342,13087343, + 13087344,13087345,13087346,13087347,13087348,13087349,13087350,13087351, + 13087352,13087353,13087354,13087355,13087356,13087357,13087358,13087359, + 26174592,26174593,26174594,26174595,26174596,26174597,26174598,26174599, + 26174600,26174601,26174602,26174603,26174604,26174605,26174606,26174607 + } +}; +static const uint8_t vc9_chroma_dc_bits[2][120] = { + { + 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, + 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 11, + 11, 11, 11, 11, 12, 12, 12, 13, 14, 15, 16, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23 /* lowmo, 120 values */ + }, + { + 2, 2, 3, 3, 4, 4, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, + 9, 9, 9, 10, 10, 11, 11, 11, 11, 11, 12, 12, 12, 13, 13, 14, + 14, 15, 14, 14, 16, 15, 15, 16, 16, 16, 15, 16, 16, 16, 17, 18, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25 /* himo, 120 values */ + }, +}; + +/* Scantables/ZZ scan are at 11.9 (p262) and 8.1.1.12 (p10) */ #endif /* VC9DATA_H */ |