Originally committed as revision 18270 to svn://svn.ffmpeg.org/ffmpeg/trunk
Unified · Split
| @@ -389,35 +389,35 @@ static int ipvideo_decode_block_opcode_0x9(IpvideoContext *s) · 388 unmodified lines | |||
| 389 | if (P[0] <= P[1]) { | 389 | if (P[0] <= P[1]) { |
| 390 | if (P[2] <= P[3]) { | 390 | if (P[2] <= P[3]) { |
| 391 | 391 | ||
| 392 | /* 1 of 4 colors for each pixel, need 16 more bytes */ | 392 | /* 1 of 4 colors for each pixel, need 16 more bytes */ |
| 393 | CHECK_STREAM_PTR(16); | 393 | CHECK_STREAM_PTR(16); |
| 394 | 394 | ||
| 395 | for (y = 0; y < 8; y++) { | 395 | for (y = 0; y < 8; y++) { |
| 396 | /* get the next set of 8 2-bit flags */ | 396 | /* get the next set of 8 2-bit flags */ |
| 397 | int flags = bytestream_get_le16(&s->stream_ptr); | 397 | int flags = bytestream_get_le16(&s->stream_ptr); |
| 398 | for (x = 0; x < 8; x++, flags >>= 2) { | 398 | for (x = 0; x < 8; x++, flags >>= 2) { |
| 399 | *s->pixel_ptr++ = P[flags & 0x03]; | 399 | *s->pixel_ptr++ = P[flags & 0x03]; |
| 400 | } | ||
| 401 | s->pixel_ptr += s->line_inc; | ||
| 400 | } | 402 | } |
| 401 | s->pixel_ptr += s->line_inc; | ||
| 402 | } | ||
| 403 | 403 | ||
| 404 | } else { | 404 | } else { |
| 405 | uint32_t flags; | 405 | uint32_t flags; |
| 406 | 406 | ||
| 407 | /* 1 of 4 colors for each 2x2 block, need 4 more bytes */ | 407 | /* 1 of 4 colors for each 2x2 block, need 4 more bytes */ |
| 408 | CHECK_STREAM_PTR(4); | 408 | CHECK_STREAM_PTR(4); |
| 409 | 409 | ||
| 410 | flags = bytestream_get_le32(&s->stream_ptr); | 410 | flags = bytestream_get_le32(&s->stream_ptr); |
| 411 | 411 | ||
| 412 | for (y = 0; y < 8; y += 2) { | 412 | for (y = 0; y < 8; y += 2) { |
| 413 | for (x = 0; x < 8; x += 2, flags >>= 2) { | 413 | for (x = 0; x < 8; x += 2, flags >>= 2) { |
| 414 | s->pixel_ptr[x ] = | 414 | s->pixel_ptr[x ] = |
| 415 | s->pixel_ptr[x + 1 ] = | 415 | s->pixel_ptr[x + 1 ] = |
| 416 | s->pixel_ptr[x + s->stride] = | 416 | s->pixel_ptr[x + s->stride] = |
| 417 | s->pixel_ptr[x + 1 + s->stride] = P[flags & 0x03]; | 417 | s->pixel_ptr[x + 1 + s->stride] = P[flags & 0x03]; |
| 418 | } | ||
| 419 | s->pixel_ptr += s->stride * 2; | ||
| 418 | } | 420 | } |
| 419 | s->pixel_ptr += s->stride * 2; | ||
| 420 | } | ||
| 421 | 421 | ||
| 422 | } | 422 | } |
| 423 | } else { | 423 | } else { |
| @@ -428,21 +428,21 @@ static int ipvideo_decode_block_opcode_0x9(IpvideoContext *s) · 4 unmodified lines | |||
| 428 | 428 | ||
| 429 | flags = bytestream_get_le64(&s->stream_ptr); | 429 | flags = bytestream_get_le64(&s->stream_ptr); |
| 430 | if (P[2] <= P[3]) { | 430 | if (P[2] <= P[3]) { |
| 431 | for (y = 0; y < 8; y++) { | 431 | for (y = 0; y < 8; y++) { |
| 432 | for (x = 0; x < 8; x += 2, flags >>= 2) { | 432 | for (x = 0; x < 8; x += 2, flags >>= 2) { |
| 433 | s->pixel_ptr[x ] = | 433 | s->pixel_ptr[x ] = |
| 434 | s->pixel_ptr[x + 1] = P[flags & 0x03]; | 434 | s->pixel_ptr[x + 1] = P[flags & 0x03]; |
| 435 | } | ||
| 436 | s->pixel_ptr += s->stride; | ||
| 435 | } | 437 | } |
| 436 | s->pixel_ptr += s->stride; | ||
| 437 | } | ||
| 438 | } else { | 438 | } else { |
| 439 | for (y = 0; y < 8; y += 2) { | 439 | for (y = 0; y < 8; y += 2) { |
| 440 | for (x = 0; x < 8; x++, flags >>= 2) { | 440 | for (x = 0; x < 8; x++, flags >>= 2) { |
| 441 | s->pixel_ptr[x ] = | 441 | s->pixel_ptr[x ] = |
| 442 | s->pixel_ptr[x + s->stride] = P[flags & 0x03]; | 442 | s->pixel_ptr[x + s->stride] = P[flags & 0x03]; |
| 443 | } | ||
| 444 | s->pixel_ptr += s->stride * 2; | ||
| 443 | } | 445 | } |
| 444 | s->pixel_ptr += s->stride * 2; | ||
| 445 | } | ||
| 446 | } | 446 | } |
| 447 | } | 447 | } |
| 448 | 448 | ||