~ubuntu-branches/ubuntu/raring/libav/raring-security

« back to all changes in this revision

Viewing changes to libavcodec/smacker.c

  • Committer: Package Import Robot
  • Author(s): Reinhard Tartler
  • Date: 2011-09-28 09:18:34 UTC
  • mfrom: (1.3.7 sid)
  • Revision ID: package-import@ubuntu.com-20110928091834-w415mnuh06h4zpvc
Tags: 4:0.7.1-7ubuntu2
Revert "Convert package to include multiarch support."

Show diffs side-by-side

added added

removed removed

Lines of Context:
134
134
            return -1;
135
135
        }
136
136
        b1 = get_bits_count(gb);
137
 
        i1 = get_vlc2(gb, ctx->v1->table, SMKTREE_BITS, 3);
 
137
        i1 = ctx->v1->table ? get_vlc2(gb, ctx->v1->table, SMKTREE_BITS, 3) : 0;
138
138
        b1 = get_bits_count(gb) - b1;
139
139
        b2 = get_bits_count(gb);
140
 
        i2 = get_vlc2(gb, ctx->v2->table, SMKTREE_BITS, 3);
 
140
        i2 = ctx->v2->table ? get_vlc2(gb, ctx->v2->table, SMKTREE_BITS, 3) : 0;
141
141
        b2 = get_bits_count(gb) - b2;
 
142
        if (i1 < 0 || i2 < 0)
 
143
            return -1;
142
144
        val = ctx->recode1[i1] | (ctx->recode2[i2] << 8);
143
145
        if(val == ctx->escapes[0]) {
144
146
            ctx->last[0] = hc->current;
290
292
        smk->mmap_tbl[0] = 0;
291
293
        smk->mmap_last[0] = smk->mmap_last[1] = smk->mmap_last[2] = 1;
292
294
    } else {
293
 
        smacker_decode_header_tree(smk, &gb, &smk->mmap_tbl, smk->mmap_last, mmap_size);
 
295
        if (smacker_decode_header_tree(smk, &gb, &smk->mmap_tbl, smk->mmap_last, mmap_size))
 
296
            return -1;
294
297
    }
295
298
    if(!get_bits1(&gb)) {
296
299
        av_log(smk->avctx, AV_LOG_INFO, "Skipping MCLR tree\n");
298
301
        smk->mclr_tbl[0] = 0;
299
302
        smk->mclr_last[0] = smk->mclr_last[1] = smk->mclr_last[2] = 1;
300
303
    } else {
301
 
        smacker_decode_header_tree(smk, &gb, &smk->mclr_tbl, smk->mclr_last, mclr_size);
 
304
        if (smacker_decode_header_tree(smk, &gb, &smk->mclr_tbl, smk->mclr_last, mclr_size))
 
305
            return -1;
302
306
    }
303
307
    if(!get_bits1(&gb)) {
304
308
        av_log(smk->avctx, AV_LOG_INFO, "Skipping FULL tree\n");
306
310
        smk->full_tbl[0] = 0;
307
311
        smk->full_last[0] = smk->full_last[1] = smk->full_last[2] = 1;
308
312
    } else {
309
 
        smacker_decode_header_tree(smk, &gb, &smk->full_tbl, smk->full_last, full_size);
 
313
        if (smacker_decode_header_tree(smk, &gb, &smk->full_tbl, smk->full_last, full_size))
 
314
            return -1;
310
315
    }
311
316
    if(!get_bits1(&gb)) {
312
317
        av_log(smk->avctx, AV_LOG_INFO, "Skipping TYPE tree\n");
314
319
        smk->type_tbl[0] = 0;
315
320
        smk->type_last[0] = smk->type_last[1] = smk->type_last[2] = 1;
316
321
    } else {
317
 
        smacker_decode_header_tree(smk, &gb, &smk->type_tbl, smk->type_last, type_size);
 
322
        if (smacker_decode_header_tree(smk, &gb, &smk->type_tbl, smk->type_last, type_size))
 
323
            return -1;
318
324
    }
319
325
 
320
326
    return 0;
522
528
        return -1;
523
529
    }
524
530
 
525
 
    decode_header_trees(c);
526
 
 
 
531
    if (decode_header_trees(c))
 
532
        return -1;
527
533
 
528
534
    return 0;
529
535
}
618
624
    if(bits) { //decode 16-bit data
619
625
        for(i = stereo; i >= 0; i--)
620
626
            pred[i] = av_bswap16(get_bits(&gb, 16));
621
 
        for(i = 0; i < stereo; i++)
 
627
        for(i = 0; i <= stereo; i++)
622
628
            *samples++ = pred[i];
623
 
        for(i = 0; i < unp_size / 2; i++) {
 
629
        for(; i < unp_size / 2; i++) {
624
630
            if(i & stereo) {
625
631
                if(vlc[2].table)
626
632
                    res = get_vlc2(&gb, vlc[2].table, SMKTREE_BITS, 3);
652
658
    } else { //8-bit data
653
659
        for(i = stereo; i >= 0; i--)
654
660
            pred[i] = get_bits(&gb, 8);
655
 
        for(i = 0; i < stereo; i++)
 
661
        for(i = 0; i <= stereo; i++)
656
662
            *samples8++ = pred[i];
657
 
        for(i = 0; i < unp_size; i++) {
 
663
        for(; i < unp_size; i++) {
658
664
            if(i & stereo){
659
665
                if(vlc[1].table)
660
666
                    res = get_vlc2(&gb, vlc[1].table, SMKTREE_BITS, 3);