comparison flacdec.c @ 9244:cbf65173eed3 libavcodec

flacdec: allow sample rate to change mid-stream, but log a warning message when it does
author jbr
date Sun, 22 Mar 2009 22:38:06 +0000
parents 4f827ca90571
children f8973e93809a
comparison
equal deleted inserted replaced
9243:c09443000c4b 9244:cbf65173eed3
561 s->max_blocksize); 561 s->max_blocksize);
562 return -1; 562 return -1;
563 } 563 }
564 564
565 /* sample rate */ 565 /* sample rate */
566 if (sr_code == 0) { 566 if (sr_code < 12) {
567 samplerate= s->samplerate;
568 } else if (sr_code < 12) {
569 samplerate = ff_flac_sample_rate_table[sr_code]; 567 samplerate = ff_flac_sample_rate_table[sr_code];
570 } else if (sr_code == 12) { 568 } else if (sr_code == 12) {
571 samplerate = get_bits(gb, 8) * 1000; 569 samplerate = get_bits(gb, 8) * 1000;
572 } else if (sr_code == 13) { 570 } else if (sr_code == 13) {
573 samplerate = get_bits(gb, 16); 571 samplerate = get_bits(gb, 16);
576 } else { 574 } else {
577 av_log(s->avctx, AV_LOG_ERROR, "illegal sample rate code %d\n", 575 av_log(s->avctx, AV_LOG_ERROR, "illegal sample rate code %d\n",
578 sr_code); 576 sr_code);
579 return -1; 577 return -1;
580 } 578 }
579 if (samplerate == 0) {
580 samplerate = s->samplerate;
581 } else if (samplerate != s->samplerate) {
582 av_log(s->avctx, AV_LOG_WARNING, "sample rate changed from %d to %d\n",
583 s->samplerate, samplerate);
584 }
581 585
582 /* header CRC-8 check */ 586 /* header CRC-8 check */
583 skip_bits(gb, 8); 587 skip_bits(gb, 8);
584 if (av_crc(av_crc_get_table(AV_CRC_8_ATM), 0, gb->buffer, 588 if (av_crc(av_crc_get_table(AV_CRC_8_ATM), 0, gb->buffer,
585 get_bits_count(gb)/8)) { 589 get_bits_count(gb)/8)) {
586 av_log(s->avctx, AV_LOG_ERROR, "header crc mismatch\n"); 590 av_log(s->avctx, AV_LOG_ERROR, "header crc mismatch\n");
587 return -1; 591 return -1;
588 } 592 }
589 593
590 s->blocksize = blocksize; 594 s->blocksize = blocksize;
591 s->samplerate = samplerate; 595 s->samplerate = s->avctx->sample_rate = samplerate;
592 s->bps = bps; 596 s->bps = bps;
593 s->ch_mode = ch_mode; 597 s->ch_mode = ch_mode;
594 598
595 // dump_headers(s->avctx, (FLACStreaminfo *)s); 599 // dump_headers(s->avctx, (FLACStreaminfo *)s);
596 600