From ec0dc7e2e029a53023e8ed9eb79c870131773c7b Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos Date: Tue, 27 Dec 2011 18:26:31 +0100 Subject: [PATCH] Make Interplay palette opaque and increase its dynamics. --- libavformat/ipmovie.c | 8 +- tests/ref/fate/interplay-mve-8bit | 220 +++++++++++++++--------------- 2 files changed, 116 insertions(+), 112 deletions(-) diff --git a/libavformat/ipmovie.c b/libavformat/ipmovie.c index 24dc24bec83..bb42a12e62a 100644 --- a/libavformat/ipmovie.c +++ b/libavformat/ipmovie.c @@ -456,7 +456,8 @@ static int process_ipmovie_chunk(IPMVEContext *s, AVIOContext *pb, r = scratch[j++] * 4; g = scratch[j++] * 4; b = scratch[j++] * 4; - s->palette[i] = (r << 16) | (g << 8) | (b); + s->palette[i] = (0xFFU << 24) | (r << 16) | (g << 8) | (b); + s->palette[i] |= s->palette[i] >> 6 & 0x30303; } s->has_palette = 1; break; @@ -524,7 +525,7 @@ static int ipmovie_read_header(AVFormatContext *s, AVPacket pkt; AVStream *st; unsigned char chunk_preamble[CHUNK_PREAMBLE_SIZE]; - int chunk_type; + int chunk_type, i; uint8_t signature_buffer[sizeof(signature)]; avio_read(pb, signature_buffer, sizeof(signature_buffer)); @@ -542,6 +543,9 @@ static int ipmovie_read_header(AVFormatContext *s, /* on the first read, this will position the stream at the first chunk */ ipmovie->next_chunk_offset = avio_tell(pb) + 4; + for (i = 0; i < 256; i++) + ipmovie->palette[i] = 0xFFU << 24; + /* process the first chunk which should be CHUNK_INIT_VIDEO */ if (process_ipmovie_chunk(ipmovie, pb, &pkt) != CHUNK_INIT_VIDEO) return AVERROR_INVALIDDATA; diff --git a/tests/ref/fate/interplay-mve-8bit b/tests/ref/fate/interplay-mve-8bit index 13959c3cf23..03a52c09cbd 100644 --- a/tests/ref/fate/interplay-mve-8bit +++ b/tests/ref/fate/interplay-mve-8bit @@ -1,223 +1,223 @@ -0, 0, 414720, 0xa5cd50ca +0, 0, 414720, 0x2580d574 1, 0, 5848, 0xea04292b 1, 5967, 5888, 0x0e59e942 -0, 6006, 414720, 0x3facd321 +0, 6006, 414720, 0x97f55cd3 1, 11976, 5888, 0x56d480f6 -0, 12011, 414720, 0x849e6d4b +0, 12011, 414720, 0x9408fb63 1, 17984, 5888, 0xcb560b22 -0, 18017, 414720, 0xe649363f +0, 18017, 414720, 0x7e53c155 1, 23992, 5888, 0xca26865b -0, 24022, 414720, 0x5bbd7b14 +0, 24022, 414720, 0xd8570262 1, 30000, 5888, 0xa434392f -0, 30028, 414720, 0xe246ab51 +0, 30028, 414720, 0x9dc72ed5 1, 36008, 5888, 0xa0615fe4 -0, 36033, 414720, 0x5721b22e +0, 36033, 414720, 0xf7d33211 1, 42016, 5888, 0x85b241cd -0, 42039, 414720, 0xe391e107 +0, 42039, 414720, 0x95935e3b 1, 48024, 5888, 0x2c417a43 -0, 48044, 414720, 0x04d851ff +0, 48044, 414720, 0x62b1cdc5 1, 54033, 5888, 0x2d5ed665 -0, 54050, 414720, 0x8d80d580 +0, 54050, 414720, 0x971f500a 1, 60041, 5888, 0x37267a2d -0, 60055, 414720, 0x5a24b0bc +0, 60055, 414720, 0x05f82b6c 1, 66049, 5888, 0x1f803c67 -0, 66061, 414720, 0x06cd6960 +0, 66061, 414720, 0x7713e3cb 1, 72057, 5888, 0xfb7940ef -0, 72066, 414720, 0xf5ca48b4 +0, 72066, 414720, 0x3170c2f0 1, 78065, 5888, 0x1a5371e8 -0, 78072, 414720, 0x24700f94 +0, 78072, 414720, 0x8d818956 1, 84073, 5888, 0x37e29b21 -0, 84077, 414720, 0xb0bfe451 +0, 84077, 414720, 0x16775d71 1, 90082, 5848, 0x70065769 -0, 90083, 414720, 0x00e9f3d1 +0, 90083, 414720, 0x63016ce1 1, 96049, 5888, 0xaf624f3d -0, 96088, 414720, 0x0efbffd1 +0, 96088, 414720, 0x2f94792c 1, 102057, 5888, 0x8f5e5b57 -0, 102094, 414720, 0x2ecdfc8d +0, 102094, 414720, 0x37f67725 1, 108065, 5888, 0x93545968 -0, 108099, 414720, 0x94b531fc +0, 108099, 414720, 0xeb95adb1 1, 114073, 5888, 0x915f268f -0, 114105, 414720, 0x2c2579f8 +0, 114105, 414720, 0xbf32f6df 1, 120082, 5888, 0x9cd48ac4 -0, 120110, 414720, 0x6c7ecfb8 +0, 120110, 414720, 0x242f4d09 1, 126090, 5888, 0x812c8e13 -0, 126116, 414720, 0x08982527 +0, 126116, 414720, 0x28a2a3b9 1, 132098, 5888, 0xe794a2a7 -0, 132121, 414720, 0x5c0161b3 +0, 132121, 414720, 0x895de0a6 1, 138106, 5888, 0x4a056e4b -0, 138127, 414720, 0x453ce413 +0, 138127, 414720, 0xd3b46447 1, 144114, 5888, 0xa3589992 -0, 144132, 414720, 0x634e36b2 +0, 144132, 414720, 0x3bbfb7d1 1, 150122, 5888, 0x19ea7ec5 -0, 150138, 414720, 0x401a683a +0, 150138, 414720, 0x0a5ee9ad 1, 156131, 5888, 0x422d5097 -0, 156144, 414720, 0x3c5f442e +0, 156144, 414720, 0xaabac502 1, 162139, 5888, 0xc9fd963f -0, 162149, 414720, 0x075ef787 +0, 162149, 414720, 0x0951779d 1, 168147, 5888, 0xc556a5ea -0, 168155, 414720, 0x8501a04f +0, 168155, 414720, 0x150e2073 1, 174155, 5888, 0x51557e0f -0, 174160, 414720, 0x3620093b +0, 174160, 414720, 0xb86d87ae 1, 180163, 5848, 0x4903ad21 -0, 180166, 414720, 0xa42d9480 +0, 180166, 414720, 0x135411da 1, 186131, 5888, 0xb1c85e85 -0, 186171, 414720, 0x09b150b4 +0, 186171, 414720, 0x9c8fcda5 1, 192139, 5888, 0x68963d65 -0, 192177, 414720, 0xcad407f0 +0, 192177, 414720, 0xb7ba838e 1, 198147, 5888, 0x62a3124e -0, 198182, 414720, 0x69e5eecd +0, 198182, 414720, 0x7ef869e1 1, 204155, 5888, 0x4ff1878f -0, 204188, 414720, 0xb92ad2d9 +0, 204188, 414720, 0xf9764d47 1, 210163, 5888, 0x8b09ac18 -0, 210193, 414720, 0xc78eaf29 +0, 210193, 414720, 0xe6c72872 1, 216171, 5888, 0x67d85338 -0, 216199, 414720, 0x47c3fa91 +0, 216199, 414720, 0xb95b73b8 1, 222180, 5888, 0x82eca0a6 -0, 222204, 414720, 0x8847b7b8 +0, 222204, 414720, 0xa19e3221 1, 228188, 5888, 0x81a17eb8 -0, 228210, 414720, 0x864cab2f +0, 228210, 414720, 0xc0be27cd 1, 234196, 5888, 0x7108478c -0, 234215, 414720, 0x78d653e2 +0, 234215, 414720, 0xe97cd1a9 1, 240204, 5888, 0xbfc18b09 -0, 240221, 414720, 0xda15cbd2 +0, 240221, 414720, 0xb6524a34 1, 246212, 5888, 0xad93711f -0, 246226, 414720, 0xdf9ce28a +0, 246226, 414720, 0x61a1607b 1, 252220, 5888, 0xf8d25e39 -0, 252232, 414720, 0xe88c49ca +0, 252232, 414720, 0x1dd9c606 1, 258229, 5888, 0x41edd04e -0, 258237, 414720, 0xd6bcbc07 +0, 258237, 414720, 0xe2e736fa 1, 264237, 5888, 0xa6557ee2 -0, 264243, 414720, 0xf0b4a7bf +0, 264243, 414720, 0x25b922d9 1, 270245, 5848, 0xc14d5456 -0, 270248, 414720, 0x74f9bfbf +0, 270248, 414720, 0xbc023b36 1, 276212, 5888, 0x20a7821f -0, 276254, 414720, 0x904ce103 +0, 276254, 414720, 0x39bb5cdf 1, 282220, 5888, 0x9f1a8f9d -0, 282259, 414720, 0xca877e4a +0, 282259, 414720, 0xf83bfc4f 1, 288229, 5888, 0x2f3c6cc8 -0, 288265, 414720, 0x588effd6 +0, 288265, 414720, 0x3eae7f36 1, 294237, 5888, 0x757c894a -0, 294270, 414720, 0x6dff8b71 +0, 294270, 414720, 0x8cf80c32 1, 300245, 5888, 0x483e98bb -0, 300276, 414720, 0xbeaae788 +0, 300276, 414720, 0xbc576c03 1, 306253, 5888, 0x84289c75 -0, 306282, 414720, 0x1a4d1242 +0, 306282, 414720, 0x28b79ab1 1, 312261, 5888, 0xf79d5a91 -0, 312287, 414720, 0x4ae98ea0 +0, 312287, 414720, 0x15da1138 1, 318269, 5888, 0x395b5228 -0, 318293, 414720, 0x41ed6d22 +0, 318293, 414720, 0x345ff676 1, 324278, 5888, 0x9c937a14 -0, 324298, 414720, 0x486e70aa +0, 324298, 414720, 0x0108f909 1, 330286, 5888, 0x40c169cf -0, 330304, 414720, 0xfddc103e +0, 330304, 414720, 0x57459616 1, 336294, 5888, 0x3e7f99b0 -0, 336309, 414720, 0x8620f03e +0, 336309, 414720, 0x2f497782 1, 342302, 5888, 0xd4de993e -0, 342315, 414720, 0x0e4ec273 +0, 342315, 414720, 0xb72b4f79 1, 348310, 5888, 0xae856b09 -0, 348320, 414720, 0xb2298b3e +0, 348320, 414720, 0x2bfd1967 1, 354318, 5888, 0xa2369c95 -0, 354326, 414720, 0xb4f50176 +0, 354326, 414720, 0x974a99cd 1, 360327, 5848, 0x992d516b -0, 360331, 414720, 0xb9c7a495 +0, 360331, 414720, 0x5f5f4129 1, 366294, 5888, 0xcd785ba9 -0, 366337, 414720, 0xed270702 +0, 366337, 414720, 0x51ad9df4 1, 372302, 5888, 0x55ea3bce -0, 372342, 414720, 0x98b72586 +0, 372342, 414720, 0xd6e5c16c 1, 378310, 5888, 0xf06d4bbf -0, 378348, 414720, 0xd8977cb1 +0, 378348, 414720, 0xd8751bda 1, 384318, 5888, 0x2a9d4c1a -0, 384353, 414720, 0xff3d3851 +0, 384353, 414720, 0x216ed6f3 1, 390327, 5888, 0xd5e348a3 -0, 390359, 414720, 0x7e4f0424 +0, 390359, 414720, 0x63a0a67d 1, 396335, 5888, 0x6431a24c -0, 396364, 414720, 0xa9e75006 +0, 396364, 414720, 0xe4f4eb0f 1, 402343, 5888, 0x41f9908c -0, 402370, 414720, 0x8f98cba9 +0, 402370, 414720, 0xa1665ef8 1, 408351, 5888, 0x0ed99656 -0, 408375, 414720, 0x25ecd620 +0, 408375, 414720, 0xc3116dfd 1, 414359, 5888, 0x635a6392 -0, 414381, 414720, 0x78cf5c58 +0, 414381, 414720, 0x3213fd70 1, 420367, 5888, 0x690c750c -0, 420386, 414720, 0x3fb4b81a +0, 420386, 414720, 0x2af76048 1, 426376, 5888, 0xf9d97b23 -0, 426392, 414720, 0xd7b655fa +0, 426392, 414720, 0x3570085d 1, 432384, 5888, 0x75e1606b -0, 432397, 414720, 0xd9158db3 +0, 432397, 414720, 0x2a7c3c39 1, 438392, 5888, 0x1bcb43b0 -0, 438403, 414720, 0x2e651852 +0, 438403, 414720, 0xd8a6ba7e 1, 444400, 5888, 0x48c295cb -0, 444408, 414720, 0x9f9adb64 +0, 444408, 414720, 0x48107b4d 1, 450408, 5848, 0xe47f7b5d -0, 450414, 414720, 0xe9d16e81 +0, 450414, 414720, 0x653a0936 1, 456376, 5888, 0x20be7f3e -0, 456420, 414720, 0xbe73daf5 +0, 456420, 414720, 0xf68c77ab 1, 462384, 5888, 0x8c2428c4 -0, 462425, 414720, 0x3d164329 +0, 462425, 414720, 0xa5ecde84 1, 468392, 5888, 0x851379af -0, 468431, 414720, 0x1d5a9bc8 +0, 468431, 414720, 0xaec33ca1 1, 474400, 5888, 0x5916647d -0, 474436, 414720, 0x8e8debbe +0, 474436, 414720, 0x26e68740 1, 480408, 5888, 0xef9c6281 -0, 480442, 414720, 0x4e7a2bf0 +0, 480442, 414720, 0xac09bfa5 1, 486416, 5888, 0x49660d32 -0, 486447, 414720, 0x4a13804d +0, 486447, 414720, 0xed5111b2 1, 492424, 5888, 0x62cf36a1 -0, 492453, 414720, 0x5dd188d8 +0, 492453, 414720, 0x38041c98 1, 498433, 5888, 0x56dff39c -0, 498458, 414720, 0xbe7f4963 +0, 498458, 414720, 0x76fbde1d 1, 504441, 5888, 0x4e6b5b02 -0, 504464, 414720, 0xcff3b767 +0, 504464, 414720, 0x3ae64b7d 1, 510449, 5888, 0xb8697067 -0, 510469, 414720, 0xbbd3afa0 +0, 510469, 414720, 0xb05f4da2 1, 516457, 5888, 0xcb4e2706 -0, 516475, 414720, 0xaf9dec62 +0, 516475, 414720, 0x65769088 1, 522465, 5888, 0x6eaa9669 -0, 522480, 414720, 0xc74816a1 +0, 522480, 414720, 0xbc45ba59 1, 528473, 5888, 0xfd9d7dba -0, 528486, 414720, 0x51488bfc +0, 528486, 414720, 0x8c893436 1, 534482, 5888, 0xfe137923 -0, 534491, 414720, 0x68c10a2c +0, 534491, 414720, 0x1d5ebe7f 1, 540490, 5848, 0x1931296f -0, 540497, 414720, 0x10179c4e +0, 540497, 414720, 0xa9cd5a53 1, 546457, 5888, 0xa09a7c03 -0, 546502, 414720, 0x18d559b7 +0, 546502, 414720, 0xc69e1fb0 1, 552465, 5888, 0xded9802d -0, 552508, 414720, 0x8257aa55 +0, 552508, 414720, 0xb28a77ec 1, 558473, 5888, 0x9f6723b7 -0, 558513, 414720, 0x9ea24501 +0, 558513, 414720, 0x834f1219 1, 564482, 5888, 0x3ad02476 -0, 564519, 414720, 0x238605cc +0, 564519, 414720, 0xba34c848 1, 570490, 5888, 0xa1647e32 -0, 570524, 414720, 0xb552deaa +0, 570524, 414720, 0x80e590c1 1, 576498, 5888, 0x728672da -0, 576530, 414720, 0x07c3348d +0, 576530, 414720, 0x7146dc31 1, 582506, 5888, 0x9c098090 -0, 582535, 414720, 0x82f4f9b0 +0, 582535, 414720, 0x05929a5f 1, 588514, 5888, 0x32a65ea3 -0, 588541, 414720, 0xf5d76bc5 +0, 588541, 414720, 0x721708c5 1, 594522, 5888, 0xdde141d5 -0, 594546, 414720, 0x34b3a1e6 +0, 594546, 414720, 0x4aa83cbe 1, 600531, 5888, 0x816c5fb4 -0, 600552, 414720, 0xda25e11b +0, 600552, 414720, 0x221d799f 1, 606539, 5888, 0x75e17581 -0, 606558, 414720, 0x2b19936b +0, 606558, 414720, 0xe9e72bec 1, 612547, 5888, 0x59035469 -0, 612563, 414720, 0xe91f9f73 +0, 612563, 414720, 0xb6a3385d 1, 618555, 5888, 0x20d340cd -0, 618569, 414720, 0x48d09aab +0, 618569, 414720, 0x795a3362 1, 624563, 5888, 0xa89a8790 -0, 624574, 414720, 0xac42bf83 +0, 624574, 414720, 0x770b58d9 1, 630571, 5848, 0x12b74c34 -0, 630580, 414720, 0x2d8ca14e +0, 630580, 414720, 0xb5563ce4 1, 636539, 5888, 0xcd3b3bef -0, 636585, 414720, 0xe65462fd +0, 636585, 414720, 0x0c1a00cc 1, 642547, 5888, 0xe5c44bf3 -0, 642591, 414720, 0xe5bfc929 +0, 642591, 414720, 0xcbd467fd 1, 648555, 5888, 0xb82c4fa4 -0, 648596, 414720, 0x66784c58 +0, 648596, 414720, 0x3bccec29 1, 654563, 5888, 0x05b2443a -0, 654602, 414720, 0x70dbeca8 +0, 654602, 414720, 0x92d78db7 1, 660571, 5888, 0x78028172 1, 666580, 5888, 0xdfcac19a 1, 672588, 5888, 0x0761a0b9 -- 2.39.5