1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-23 12:43:46 +02:00

smacker: fix a few off by 1 errors

stereo & 16bit is untested due to lack of samples

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2011-09-13 01:14:44 +02:00
parent 32c0c562e7
commit d67e74929c
2 changed files with 84 additions and 86 deletions

View File

@ -625,9 +625,9 @@ static int smka_decode_frame(AVCodecContext *avctx, void *data, int *data_size,
if(bits) { //decode 16-bit data if(bits) { //decode 16-bit data
for(i = stereo; i >= 0; i--) for(i = stereo; i >= 0; i--)
pred[i] = av_bswap16(get_bits(&gb, 16)); pred[i] = av_bswap16(get_bits(&gb, 16));
for(i = 0; i < stereo; i++) for(i = 0; i <= stereo; i++)
*samples++ = pred[i]; *samples++ = pred[i];
for(i = 0; i < unp_size / 2; i++) { for(; i < unp_size / 2; i++) {
if(i & stereo) { if(i & stereo) {
if(vlc[2].table) if(vlc[2].table)
res = get_vlc2(&gb, vlc[2].table, SMKTREE_BITS, 3); res = get_vlc2(&gb, vlc[2].table, SMKTREE_BITS, 3);
@ -659,11 +659,9 @@ static int smka_decode_frame(AVCodecContext *avctx, void *data, int *data_size,
} else { //8-bit data } else { //8-bit data
for(i = stereo; i >= 0; i--) for(i = stereo; i >= 0; i--)
pred[i] = get_bits(&gb, 8); pred[i] = get_bits(&gb, 8);
if (stereo + unp_size > *data_size) for(i = 0; i <= stereo; i++)
return -1;
for(i = 0; i < stereo; i++)
*samples8++ = pred[i]; *samples8++ = pred[i];
for(i = 0; i < unp_size; i++) { for(; i < unp_size; i++) {
if(i & stereo){ if(i & stereo){
if(vlc[1].table) if(vlc[1].table)
res = get_vlc2(&gb, vlc[1].table, SMKTREE_BITS, 3); res = get_vlc2(&gb, vlc[1].table, SMKTREE_BITS, 3);

View File

@ -1,5 +1,5 @@
0, 0, 192000, 0x8926d7fc 0, 0, 192000, 0x8926d7fc
1, 0, 47240, 0xad778a78 1, 0, 47240, 0x9974897c
0, 6390, 192000, 0x2506d384 0, 6390, 192000, 0x2506d384
0, 12780, 192000, 0x9a8dc93a 0, 12780, 192000, 0x9a8dc93a
0, 19170, 192000, 0x4badb7f2 0, 19170, 192000, 0x4badb7f2
@ -15,163 +15,163 @@
0, 83070, 192000, 0x1a3d7971 0, 83070, 192000, 0x1a3d7971
0, 89460, 192000, 0xa1a65bd5 0, 89460, 192000, 0xa1a65bd5
0, 95850, 192000, 0x344957b9 0, 95850, 192000, 0x344957b9
1, 96408, 3128, 0x4c1564ae 1, 96408, 3128, 0x7e4064b4
0, 102240, 192000, 0xe23b5f4e 0, 102240, 192000, 0xe23b5f4e
1, 102792, 3128, 0x34553309 1, 102792, 3128, 0x80883301
0, 108630, 192000, 0xb5c2710b 0, 108630, 192000, 0xb5c2710b
1, 109176, 3136, 0xb474d246 1, 109176, 3136, 0x2ad2d341
0, 115020, 192000, 0x7a25938f 0, 115020, 192000, 0x7a25938f
1, 115576, 3128, 0x87b868ea 1, 115576, 3128, 0xda8468e3
0, 121410, 192000, 0x0a84e4c9 0, 121410, 192000, 0x0a84e4c9
1, 121959, 3136, 0xf1516dc3 1, 121959, 3136, 0x9d6f6cdf
0, 127800, 192000, 0x94209b0d 0, 127800, 192000, 0x94209b0d
1, 128359, 3128, 0x867563cb 1, 128359, 3128, 0x1aaa64b5
0, 134190, 192000, 0xf940e51f 0, 134190, 192000, 0xf940e51f
1, 134743, 3128, 0x5200728c 1, 134743, 3128, 0x9182728b
0, 140580, 192000, 0xb9fdec42 0, 140580, 192000, 0xb9fdec42
1, 141127, 3136, 0xeda118a0 1, 141127, 3136, 0xfa8e17b3
0, 146970, 192000, 0x7b04a376 0, 146970, 192000, 0x7b04a376
1, 147527, 3128, 0x03e2c1d6 1, 147527, 3128, 0x0dc3c1cf
0, 153360, 192000, 0x5fe0026b 0, 153360, 192000, 0x5fe0026b
1, 153910, 3136, 0xc3e862b6 1, 153910, 3136, 0x0109639d
0, 159750, 192000, 0x775aca39 0, 159750, 192000, 0x775aca39
1, 160310, 3128, 0x937a13be 1, 160310, 3128, 0x6d8a12d9
0, 166140, 192000, 0xae14fb32 0, 166140, 192000, 0xae14fb32
1, 166694, 3128, 0x7b1b9577 1, 166694, 3128, 0x4b9a9597
0, 172530, 192000, 0x661106e5 0, 172530, 192000, 0x661106e5
1, 173078, 3136, 0x042c7113 1, 173078, 3136, 0x9112710e
0, 178920, 192000, 0xe8658dbf 0, 178920, 192000, 0xe8658dbf
1, 179478, 3128, 0xac48f451 1, 179478, 3128, 0x8cccf522
0, 185310, 192000, 0x5359f0f9 0, 185310, 192000, 0x5359f0f9
1, 185861, 3128, 0x018fbbe9 1, 185861, 3128, 0x6594bbf3
0, 191700, 192000, 0xc1ec80f4 0, 191700, 192000, 0xc1ec80f4
1, 192245, 3136, 0xc62aa7ce 1, 192245, 3136, 0xd878a7d5
0, 198090, 192000, 0xca53806b 0, 198090, 192000, 0xca53806b
1, 198645, 3128, 0x106e3924 1, 198645, 3128, 0xaa6e3905
0, 204480, 192000, 0xf0766b2e 0, 204480, 192000, 0xf0766b2e
1, 205029, 3136, 0xfeb82ecc 1, 205029, 3136, 0x2a062e04
0, 210870, 192000, 0x39962da8 0, 210870, 192000, 0x39962da8
1, 211429, 3128, 0x7e7c005b 1, 211429, 3128, 0x84e4006a
0, 217260, 192000, 0x4171c37f 0, 217260, 192000, 0x4171c37f
1, 217812, 3128, 0x949d3560 1, 217812, 3128, 0x85183633
0, 223650, 192000, 0x3abf3b46 0, 223650, 192000, 0x3abf3b46
1, 224196, 3136, 0x02bd4aff 1, 224196, 3136, 0xb62d4b02
0, 230040, 192000, 0xecc68313 0, 230040, 192000, 0xecc68313
1, 230596, 3128, 0x4aaf4715 1, 230596, 3128, 0xe209462a
0, 236430, 192000, 0xea339baf 0, 236430, 192000, 0xea339baf
1, 236980, 3136, 0x2958825f 1, 236980, 3136, 0x57c4824b
0, 242820, 192000, 0x616b8f16 0, 242820, 192000, 0x616b8f16
1, 243380, 3128, 0x99a5914d 1, 243380, 3128, 0x664a9163
0, 249210, 192000, 0xf77a8581 0, 249210, 192000, 0xf77a8581
1, 249763, 3128, 0xe67277a4 1, 249763, 3128, 0xb4287874
0, 255600, 192000, 0xb315678b 0, 255600, 192000, 0xb315678b
1, 256147, 3136, 0x11296973 1, 256147, 3136, 0xde626885
0, 261990, 192000, 0x0a4a5218 0, 261990, 192000, 0x0a4a5218
1, 262547, 3128, 0x5cc362f7 1, 262547, 3128, 0x919763c2
0, 268380, 192000, 0x98802be4 0, 268380, 192000, 0x98802be4
1, 268931, 3128, 0x0c5e6586 1, 268931, 3128, 0xa4f664e1
0, 274770, 192000, 0xa2f0fd94 0, 274770, 192000, 0xa2f0fd94
1, 275314, 3136, 0xe940b0f9 1, 275314, 3136, 0xa0bab0d4
0, 281160, 192000, 0x6671c84f 0, 281160, 192000, 0x6671c84f
1, 281714, 3128, 0x2c9292cc 1, 281714, 3128, 0xe938939c
0, 287550, 192000, 0x38327e31 0, 287550, 192000, 0x38327e31
1, 288098, 3136, 0xa807c096 1, 288098, 3136, 0x3679bfc7
0, 293940, 192000, 0xb85d3e08 0, 293940, 192000, 0xb85d3e08
1, 294498, 3128, 0x9d2254d8 1, 294498, 3128, 0xc96c55c3
0, 300330, 192000, 0xdc69eba9 0, 300330, 192000, 0xdc69eba9
1, 300882, 3128, 0xe68015b0 1, 300882, 3128, 0x119114d6
0, 306720, 192000, 0x8955a0b3 0, 306720, 192000, 0x8955a0b3
1, 307265, 3136, 0x65d58029 1, 307265, 3136, 0x42f3800f
0, 313110, 192000, 0x714a548b 0, 313110, 192000, 0x714a548b
1, 313665, 3128, 0xcffcc48c 1, 313665, 3128, 0x4250c4ad
0, 319500, 192000, 0xc0471de9 0, 319500, 192000, 0xc0471de9
1, 320049, 3136, 0x8c704944 1, 320049, 3136, 0x5cdd4925
0, 325890, 192000, 0x2e16e039 0, 325890, 192000, 0x2e16e039
1, 326449, 3128, 0x1459231d 1, 326449, 3128, 0xa4c12360
0, 332280, 192000, 0x9fa4b033 0, 332280, 192000, 0x9fa4b033
1, 332833, 3128, 0x7dde4839 1, 332833, 3128, 0x849f48de
0, 338670, 192000, 0x4a0f9402 0, 338670, 192000, 0x4a0f9402
1, 339216, 3136, 0xbb6890e2 1, 339216, 3136, 0x6acd8ff9
0, 345060, 192000, 0x1f3e6843 0, 345060, 192000, 0x1f3e6843
1, 345616, 3128, 0xcd9a8524 1, 345616, 3128, 0xb2758556
0, 351450, 192000, 0x31774850 0, 351450, 192000, 0x31774850
1, 352000, 3128, 0xa244fc31 1, 352000, 3128, 0x10f2fcb1
0, 357840, 192000, 0x9d5336a2 0, 357840, 192000, 0x9d5336a2
1, 358384, 3136, 0x504e2bd9 1, 358384, 3136, 0xf0f02b23
0, 364230, 192000, 0xf7de27a2 0, 364230, 192000, 0xf7de27a2
1, 364784, 3128, 0x655858d8 1, 364784, 3128, 0x64f759c6
0, 370620, 192000, 0x98c717ce 0, 370620, 192000, 0x98c717ce
1, 371167, 3136, 0x46027610 1, 371167, 3136, 0x7ec075e3
0, 377010, 192000, 0x615b10b8 0, 377010, 192000, 0x615b10b8
1, 377567, 3128, 0x4192d5e3 1, 377567, 3128, 0xf981d51e
0, 383400, 192000, 0xd5bc0e7e 0, 383400, 192000, 0xd5bc0e7e
1, 383951, 3128, 0x21d2e7fe 1, 383951, 3128, 0xc622e8b9
0, 389790, 192000, 0xd5bc0e7e 0, 389790, 192000, 0xd5bc0e7e
1, 390335, 3136, 0x7c93e329 1, 390335, 3136, 0xf632e2f8
0, 396180, 192000, 0xd5bc0e7e 0, 396180, 192000, 0xd5bc0e7e
1, 396735, 3128, 0xa67718c0 1, 396735, 3128, 0xda561864
0, 402570, 192000, 0xd5bc0e7e 0, 402570, 192000, 0xd5bc0e7e
1, 403118, 3136, 0x9bb6e8a3 1, 403118, 3136, 0x14d2e888
0, 408960, 192000, 0xd5bc0e7e 0, 408960, 192000, 0xd5bc0e7e
1, 409518, 3128, 0x0933b7a6 1, 409518, 3128, 0x015bb869
0, 415350, 192000, 0xd5bc0e7e 0, 415350, 192000, 0xd5bc0e7e
1, 415902, 3128, 0x07f1fb57 1, 415902, 3128, 0xedb1fb62
0, 421740, 192000, 0xd5bc0e7e 0, 421740, 192000, 0xd5bc0e7e
1, 422286, 3136, 0x8a050cfd 1, 422286, 3136, 0xe0560c41
0, 428130, 192000, 0xd5bc0e7e 0, 428130, 192000, 0xd5bc0e7e
1, 428686, 3128, 0xdb773c0b 1, 428686, 3128, 0x14773c9a
0, 434520, 192000, 0xd5bc0e7e 0, 434520, 192000, 0xd5bc0e7e
1, 435069, 3136, 0xd1281c53 1, 435069, 3136, 0x850f1c82
0, 440910, 192000, 0xd5bc0e7e 0, 440910, 192000, 0xd5bc0e7e
1, 441469, 3128, 0x9f395324 1, 441469, 3128, 0xb0bd5347
0, 447300, 192000, 0xd5bc0e7e 0, 447300, 192000, 0xd5bc0e7e
1, 447853, 3128, 0x5f13edec 1, 447853, 3128, 0x8f82edbf
0, 453690, 192000, 0xd5bc0e7e 0, 453690, 192000, 0xd5bc0e7e
1, 454237, 3136, 0x871cbecf 1, 454237, 3136, 0x493abee2
0, 460080, 192000, 0xd5bc0e7e 0, 460080, 192000, 0xd5bc0e7e
1, 460637, 3128, 0x799eff3e 1, 460637, 3128, 0xf5daff3f
0, 466470, 192000, 0xd5bc0e7e 0, 466470, 192000, 0xd5bc0e7e
1, 467020, 3128, 0x3f902762 1, 467020, 3128, 0x78ad2690
0, 472860, 192000, 0xd5bc0e7e 0, 472860, 192000, 0xd5bc0e7e
1, 473404, 3136, 0x29f8bb04 1, 473404, 3136, 0x490ebafc
0, 479250, 192000, 0xd5bc0e7e 0, 479250, 192000, 0xd5bc0e7e
1, 479804, 3128, 0xf3523ee9 1, 479804, 3128, 0x70333fd2
0, 485640, 192000, 0xd5bc0e7e 0, 485640, 192000, 0xd5bc0e7e
1, 486188, 3136, 0x4405c435 1, 486188, 3136, 0x8cb1c350
0, 492030, 192000, 0xd5bc0e7e 0, 492030, 192000, 0xd5bc0e7e
1, 492588, 3128, 0x892957cb 1, 492588, 3128, 0x8bd057cb
0, 498420, 192000, 0xd5bc0e7e 0, 498420, 192000, 0xd5bc0e7e
1, 498971, 3128, 0xdf483dbd 1, 498971, 3128, 0x161b3dbc
0, 504810, 192000, 0xd5bc0e7e 0, 504810, 192000, 0xd5bc0e7e
1, 505355, 3136, 0x5e8ab797 1, 505355, 3136, 0xb47fb88a
0, 511200, 192000, 0xd5bc0e7e 0, 511200, 192000, 0xd5bc0e7e
1, 511755, 3128, 0x92e13820 1, 511755, 3128, 0x474b381e
0, 517590, 192000, 0xd5bc0e7e 0, 517590, 192000, 0xd5bc0e7e
1, 518139, 3136, 0xfde719b6 1, 518139, 3136, 0x07c519bb
0, 523980, 192000, 0xd5bc0e7e 0, 523980, 192000, 0xd5bc0e7e
1, 524539, 3128, 0x442f17ae 1, 524539, 3128, 0x15b916c8
0, 530370, 192000, 0xd5bc0e7e 0, 530370, 192000, 0xd5bc0e7e
1, 530922, 3128, 0x011af61f 1, 530922, 3128, 0x0ed7f6fb
0, 536760, 192000, 0xd5bc0e7e 0, 536760, 192000, 0xd5bc0e7e
1, 537306, 3136, 0x4e3e3a6d 1, 537306, 3136, 0x54d6397b
0, 543150, 192000, 0xd5bc0e7e 0, 543150, 192000, 0xd5bc0e7e
1, 543706, 3128, 0xc11242b9 1, 543706, 3128, 0x437242bb
0, 549540, 192000, 0xd5bc0e7e 0, 549540, 192000, 0xd5bc0e7e
1, 550090, 3128, 0x01415b59 1, 550090, 3128, 0x38f05c4d
0, 555930, 192000, 0xd5bc0e7e 0, 555930, 192000, 0xd5bc0e7e
1, 556473, 3136, 0x302e0e55 1, 556473, 3136, 0x5d000e59
0, 562320, 192000, 0xd5bc0e7e 0, 562320, 192000, 0xd5bc0e7e
1, 562873, 3128, 0x20522d04 1, 562873, 3128, 0xdeab2d04
0, 568710, 192000, 0xd5bc0e7e 0, 568710, 192000, 0xd5bc0e7e
1, 569257, 3136, 0x316a697d 1, 569257, 3136, 0x77de6880
0, 575100, 192000, 0xd5bc0e7e 0, 575100, 192000, 0xd5bc0e7e
1, 575657, 3128, 0x6d75ee27 1, 575657, 3128, 0xbc87ef25
0, 581490, 192000, 0xd5bc0e7e 0, 581490, 192000, 0xd5bc0e7e
1, 582041, 3128, 0xcb008ae8 1, 582041, 3128, 0xc1638ade
0, 587880, 192000, 0xd5bc0e7e 0, 587880, 192000, 0xd5bc0e7e
1, 588424, 3136, 0xd2664b51 1, 588424, 3136, 0xcfb64a5f
0, 594270, 192000, 0xd5bc0e7e 0, 594270, 192000, 0xd5bc0e7e
1, 594824, 3128, 0xdfcab728 1, 594824, 3128, 0x90b1b826
0, 600660, 192000, 0xd5bc0e7e 0, 600660, 192000, 0xd5bc0e7e
1, 601208, 3136, 0x00000000 1, 601208, 3136, 0x00000000
0, 607050, 192000, 0xd5bc0e7e 0, 607050, 192000, 0xd5bc0e7e