qtrle.c: Fix for ticket #226.
In 1bpp mode, interpret skip&0x80 as "start a new line" instead of "go to next line", this is almost the same except for the first line which was always skipped before and caused to try to write an extra line at the end of the frame (ticket #226). Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
0be95fe183
commit
1af91978db
@ -72,6 +72,15 @@ static void qtrle_decode_1bpp(QtrleContext *s, int stream_ptr, int row_ptr, int
|
|||||||
unsigned char *rgb = s->frame.data[0];
|
unsigned char *rgb = s->frame.data[0];
|
||||||
int pixel_limit = s->frame.linesize[0] * s->avctx->height;
|
int pixel_limit = s->frame.linesize[0] * s->avctx->height;
|
||||||
int skip;
|
int skip;
|
||||||
|
/* skip & 0x80 appears to mean 'start a new line', which can be interpreted
|
||||||
|
* as 'go to next line' during the decoding of a frame but is 'go to first
|
||||||
|
* line' at the beginning. Since we always interpret it as 'go to next line'
|
||||||
|
* in the decoding loop (which makes code simpler/faster), the first line
|
||||||
|
* would not be counted, so we count one more.
|
||||||
|
* See: https://ffmpeg.org/trac/ffmpeg/ticket/226
|
||||||
|
* In the following decoding loop, row_ptr will be the position of the
|
||||||
|
* _next_ row. */
|
||||||
|
lines_to_change++;
|
||||||
|
|
||||||
while (lines_to_change) {
|
while (lines_to_change) {
|
||||||
CHECK_STREAM_PTR(2);
|
CHECK_STREAM_PTR(2);
|
||||||
@ -81,8 +90,8 @@ static void qtrle_decode_1bpp(QtrleContext *s, int stream_ptr, int row_ptr, int
|
|||||||
break;
|
break;
|
||||||
if(skip & 0x80) {
|
if(skip & 0x80) {
|
||||||
lines_to_change--;
|
lines_to_change--;
|
||||||
row_ptr += row_inc;
|
|
||||||
pixel_ptr = row_ptr + 2 * (skip & 0x7f);
|
pixel_ptr = row_ptr + 2 * (skip & 0x7f);
|
||||||
|
row_ptr += row_inc;
|
||||||
} else
|
} else
|
||||||
pixel_ptr += 2 * skip;
|
pixel_ptr += 2 * skip;
|
||||||
CHECK_PIXEL_PTR(0); /* make sure pixel_ptr is positive */
|
CHECK_PIXEL_PTR(0); /* make sure pixel_ptr is positive */
|
||||||
|
@ -1,107 +1,107 @@
|
|||||||
0, 0, 9600, 0xc1632102
|
0, 0, 9600, 0xc5921aa2
|
||||||
1, 0, 2040, 0x0a157db4
|
1, 0, 2040, 0x0a157db4
|
||||||
1, 4163, 2040, 0x00c63e08
|
1, 4163, 2040, 0x00c63e08
|
||||||
0, 7500, 9600, 0x0f6c0521
|
0, 7500, 9600, 0x9032fc52
|
||||||
1, 8327, 2040, 0xacf2a25b
|
1, 8327, 2040, 0xacf2a25b
|
||||||
1, 12490, 2040, 0xd6189e85
|
1, 12490, 2040, 0xd6189e85
|
||||||
0, 15000, 9600, 0x04b90b5a
|
0, 15000, 9600, 0x7db0038e
|
||||||
1, 16653, 2040, 0x8276f843
|
1, 16653, 2040, 0x8276f843
|
||||||
1, 20816, 2040, 0xadebae73
|
1, 20816, 2040, 0xadebae73
|
||||||
0, 22500, 9600, 0x2ebd4500
|
0, 22500, 9600, 0x95b73c41
|
||||||
1, 24980, 2040, 0x5da76697
|
1, 24980, 2040, 0x5da76697
|
||||||
1, 29143, 2040, 0x469d0ea7
|
1, 29143, 2040, 0x469d0ea7
|
||||||
0, 30000, 9600, 0x726f46f4
|
0, 30000, 9600, 0x531e4189
|
||||||
1, 33306, 2040, 0x0d7412e1
|
1, 33306, 2040, 0x0d7412e1
|
||||||
1, 37469, 2040, 0x2f2cc63f
|
1, 37469, 2040, 0x2f2cc63f
|
||||||
0, 37500, 9600, 0x37f6968e
|
0, 37500, 9600, 0xb73390ec
|
||||||
1, 41633, 2040, 0x10106eb7
|
1, 41633, 2040, 0x10106eb7
|
||||||
0, 45000, 9600, 0x7305872e
|
0, 45000, 9600, 0x958e8221
|
||||||
1, 45796, 2040, 0x300124c7
|
1, 45796, 2040, 0x300124c7
|
||||||
1, 49959, 2040, 0xa329f8e8
|
1, 49959, 2040, 0xa329f8e8
|
||||||
0, 52500, 9600, 0x222eff5e
|
0, 52500, 9600, 0xd393f8a6
|
||||||
1, 54122, 2040, 0xcea35ca5
|
1, 54122, 2040, 0xcea35ca5
|
||||||
1, 58286, 2040, 0x55105aef
|
1, 58286, 2040, 0x55105aef
|
||||||
0, 60000, 9600, 0x9317e227
|
0, 60000, 9600, 0xa085da1c
|
||||||
1, 62449, 2040, 0x08980ce1
|
1, 62449, 2040, 0x08980ce1
|
||||||
1, 66612, 2040, 0x367faf24
|
1, 66612, 2040, 0x367faf24
|
||||||
0, 67500, 9600, 0x421eee9d
|
0, 67500, 9600, 0x57ace74f
|
||||||
1, 70776, 2040, 0x75bfef06
|
1, 70776, 2040, 0x75bfef06
|
||||||
1, 74939, 2040, 0x34f1daf4
|
1, 74939, 2040, 0x34f1daf4
|
||||||
0, 75000, 9600, 0xcbcfaaff
|
0, 75000, 9600, 0x5d11a308
|
||||||
1, 79102, 2040, 0x97050317
|
1, 79102, 2040, 0x97050317
|
||||||
0, 82500, 9600, 0xe7d43be2
|
0, 82500, 9600, 0x13e133b7
|
||||||
1, 83265, 2040, 0xd297c536
|
1, 83265, 2040, 0xd297c536
|
||||||
1, 87429, 2040, 0xa8abad5a
|
1, 87429, 2040, 0xa8abad5a
|
||||||
0, 90000, 9600, 0x0b71e28c
|
0, 90000, 9600, 0x494edb86
|
||||||
1, 91592, 2040, 0x445ce8e0
|
1, 91592, 2040, 0x445ce8e0
|
||||||
1, 95755, 2040, 0xa3f4d940
|
1, 95755, 2040, 0xa3f4d940
|
||||||
0, 97500, 9600, 0xd6a050ca
|
0, 97500, 9600, 0x43a448ea
|
||||||
1, 99918, 2040, 0x0ebb7b26
|
1, 99918, 2040, 0x0ebb7b26
|
||||||
1, 104082, 2040, 0x4372f6f6
|
1, 104082, 2040, 0x4372f6f6
|
||||||
0, 105000, 9600, 0x0ac6dbf5
|
0, 105000, 9600, 0x3562d35b
|
||||||
1, 108245, 2040, 0xd4365079
|
1, 108245, 2040, 0xd4365079
|
||||||
1, 112408, 2040, 0x56f902f7
|
1, 112408, 2040, 0x56f902f7
|
||||||
0, 112500, 9600, 0x5c036038
|
0, 112500, 9600, 0x0bc655d2
|
||||||
1, 116571, 2040, 0x4153938a
|
1, 116571, 2040, 0x4153938a
|
||||||
0, 120000, 9600, 0x6e417ed6
|
0, 120000, 9600, 0xbece73a1
|
||||||
1, 120735, 2040, 0x14996d86
|
1, 120735, 2040, 0x14996d86
|
||||||
1, 124898, 2040, 0x3f99c318
|
1, 124898, 2040, 0x3f99c318
|
||||||
0, 127500, 9600, 0x8bd0dc22
|
0, 127500, 9600, 0x82e7cfa1
|
||||||
1, 129061, 2040, 0x939978a5
|
1, 129061, 2040, 0x939978a5
|
||||||
1, 133224, 2040, 0x7086bd44
|
1, 133224, 2040, 0x7086bd44
|
||||||
0, 135000, 9600, 0xdf3b0877
|
0, 135000, 9600, 0xda29fd8f
|
||||||
1, 137388, 276, 0x25b89d22
|
1, 137388, 276, 0x25b89d22
|
||||||
1, 137951, 2040, 0xf3edb106
|
1, 137951, 2040, 0xf3edb106
|
||||||
1, 142114, 2040, 0x0ca61430
|
1, 142114, 2040, 0x0ca61430
|
||||||
0, 142500, 9600, 0xae6e7823
|
0, 142500, 9600, 0x70fb700b
|
||||||
1, 146278, 2040, 0x7229c458
|
1, 146278, 2040, 0x7229c458
|
||||||
0, 150000, 9600, 0x8ff0ac32
|
0, 150000, 9600, 0xaf57a6b0
|
||||||
1, 150441, 2040, 0xc37edd31
|
1, 150441, 2040, 0xc37edd31
|
||||||
1, 154604, 2040, 0xa3da98b4
|
1, 154604, 2040, 0xa3da98b4
|
||||||
0, 157500, 9600, 0xa2d9e2ce
|
0, 157500, 9600, 0x0a5ed9b9
|
||||||
1, 158767, 2040, 0x69704803
|
1, 158767, 2040, 0x69704803
|
||||||
1, 162931, 2040, 0xa79bf334
|
1, 162931, 2040, 0xa79bf334
|
||||||
0, 165000, 9600, 0x5fd92b65
|
0, 165000, 9600, 0xf7c62c38
|
||||||
1, 167094, 2040, 0x59d8d4c4
|
1, 167094, 2040, 0x59d8d4c4
|
||||||
1, 171257, 2040, 0xf9ff0271
|
1, 171257, 2040, 0xf9ff0271
|
||||||
0, 172500, 9600, 0x81c1c824
|
0, 172500, 9600, 0x0aa2ccfd
|
||||||
1, 175420, 2040, 0xc4ced9d6
|
1, 175420, 2040, 0xc4ced9d6
|
||||||
1, 179584, 2040, 0x859f1912
|
1, 179584, 2040, 0x859f1912
|
||||||
0, 180000, 9600, 0xb8a2ace4
|
0, 180000, 9600, 0xc9adabae
|
||||||
1, 183747, 2040, 0xe7955aa6
|
1, 183747, 2040, 0xe7955aa6
|
||||||
0, 187500, 9600, 0x65b70404
|
0, 187500, 9600, 0x67ff0aba
|
||||||
1, 187910, 2040, 0x374624fd
|
1, 187910, 2040, 0x374624fd
|
||||||
1, 192073, 2040, 0x52121097
|
1, 192073, 2040, 0x52121097
|
||||||
0, 195000, 9600, 0xc5349eb2
|
0, 195000, 9600, 0xea79a465
|
||||||
1, 196237, 2040, 0x660fe645
|
1, 196237, 2040, 0x660fe645
|
||||||
1, 200400, 2040, 0xf624176a
|
1, 200400, 2040, 0xf624176a
|
||||||
0, 202500, 9600, 0xf60cc2b8
|
0, 202500, 9600, 0x8928c626
|
||||||
1, 204563, 2040, 0x1f2246dd
|
1, 204563, 2040, 0x1f2246dd
|
||||||
1, 208727, 2040, 0x940e0a32
|
1, 208727, 2040, 0x940e0a32
|
||||||
0, 210000, 9600, 0x31474595
|
0, 210000, 9600, 0x8dab4111
|
||||||
1, 212890, 2040, 0x9c6d338c
|
1, 212890, 2040, 0x9c6d338c
|
||||||
1, 217053, 2040, 0xfce0d30a
|
1, 217053, 2040, 0xfce0d30a
|
||||||
0, 217500, 9600, 0xf602635b
|
0, 217500, 9600, 0x81ef63f9
|
||||||
1, 221216, 2040, 0xd0ec9aa5
|
1, 221216, 2040, 0xd0ec9aa5
|
||||||
0, 225000, 9600, 0x873cbd87
|
0, 225000, 9600, 0xf977bc5e
|
||||||
1, 225380, 2040, 0x58012141
|
1, 225380, 2040, 0x58012141
|
||||||
1, 229543, 2040, 0xde67fc43
|
1, 229543, 2040, 0xde67fc43
|
||||||
0, 232500, 9600, 0xb9793ffe
|
0, 232500, 9600, 0x9e6a3f4a
|
||||||
1, 233706, 2040, 0x6baa0450
|
1, 233706, 2040, 0x6baa0450
|
||||||
1, 237869, 2040, 0xf4f80252
|
1, 237869, 2040, 0xf4f80252
|
||||||
0, 240000, 9600, 0x42eb2831
|
0, 240000, 9600, 0x77c92865
|
||||||
1, 242033, 2040, 0x0cd47ee3
|
1, 242033, 2040, 0x0cd47ee3
|
||||||
1, 246196, 2040, 0x129cbaa7
|
1, 246196, 2040, 0x129cbaa7
|
||||||
0, 247500, 9600, 0x44cc1dab
|
0, 247500, 9600, 0x3915170d
|
||||||
1, 250359, 2040, 0x5ef5c0a1
|
1, 250359, 2040, 0x5ef5c0a1
|
||||||
1, 254522, 2040, 0xf660baa7
|
1, 254522, 2040, 0xf660baa7
|
||||||
0, 255000, 9600, 0xbdcbbb87
|
0, 255000, 9600, 0xbe19b995
|
||||||
1, 258686, 2040, 0xe48bc0a1
|
1, 258686, 2040, 0xe48bc0a1
|
||||||
0, 262500, 9600, 0x29c22df7
|
0, 262500, 9600, 0x3e8a3077
|
||||||
1, 262849, 2040, 0xdfeabaa7
|
1, 262849, 2040, 0xdfeabaa7
|
||||||
1, 267012, 2040, 0xed04c0a1
|
1, 267012, 2040, 0xed04c0a1
|
||||||
0, 270000, 9600, 0xde502ef5
|
0, 270000, 9600, 0x1331342e
|
||||||
1, 271176, 2040, 0xd771baa7
|
1, 271176, 2040, 0xd771baa7
|
||||||
1, 275339, 300, 0x521f24e9
|
1, 275339, 300, 0x521f24e9
|
||||||
1, 275951, 1476, 0x9b9394b1
|
1, 275951, 1476, 0x9b9394b1
|
||||||
0, 277500, 9600, 0xaf311aeb
|
0, 277500, 9600, 0x4d692175
|
||||||
|
Loading…
x
Reference in New Issue
Block a user