Mercurial > libavcodec.hg
comparison flac.c @ 6726:08bdfd7f3ab4 libavcodec
change function parameters for metadata_streaminfo()
| author | jbr |
|---|---|
| date | Fri, 02 May 2008 21:29:49 +0000 |
| parents | 273dd370ccbd |
| children | 706dd1afb389 |
comparison
equal
deleted
inserted
replaced
| 6725:dc6bc48b0e17 | 6726:08bdfd7f3ab4 |
|---|---|
| 92 int64_t val; | 92 int64_t val; |
| 93 GET_UTF8(val, get_bits(gb, 8), return -1;) | 93 GET_UTF8(val, get_bits(gb, 8), return -1;) |
| 94 return val; | 94 return val; |
| 95 } | 95 } |
| 96 | 96 |
| 97 static void metadata_streaminfo(FLACContext *s); | 97 static void metadata_streaminfo(AVCodecContext *avctx, FLACContext *s, const uint8_t *buffer); |
| 98 static void allocate_buffers(FLACContext *s); | 98 static void allocate_buffers(FLACContext *s); |
| 99 static int metadata_parse(FLACContext *s); | 99 static int metadata_parse(FLACContext *s); |
| 100 | 100 |
| 101 static av_cold int flac_decode_init(AVCodecContext * avctx) | 101 static av_cold int flac_decode_init(AVCodecContext * avctx) |
| 102 { | 102 { |
| 105 | 105 |
| 106 if (avctx->extradata_size > 4) { | 106 if (avctx->extradata_size > 4) { |
| 107 /* initialize based on the demuxer-supplied streamdata header */ | 107 /* initialize based on the demuxer-supplied streamdata header */ |
| 108 init_get_bits(&s->gb, avctx->extradata, avctx->extradata_size*8); | 108 init_get_bits(&s->gb, avctx->extradata, avctx->extradata_size*8); |
| 109 if (avctx->extradata_size == FLAC_STREAMINFO_SIZE) { | 109 if (avctx->extradata_size == FLAC_STREAMINFO_SIZE) { |
| 110 metadata_streaminfo(s); | 110 metadata_streaminfo(avctx, s, avctx->extradata); |
| 111 allocate_buffers(s); | 111 allocate_buffers(s); |
| 112 } else { | 112 } else { |
| 113 metadata_parse(s); | 113 metadata_parse(s); |
| 114 } | 114 } |
| 115 } | 115 } |
| 141 } | 141 } |
| 142 | 142 |
| 143 s->bitstream= av_fast_realloc(s->bitstream, &s->allocated_bitstream_size, s->max_framesize); | 143 s->bitstream= av_fast_realloc(s->bitstream, &s->allocated_bitstream_size, s->max_framesize); |
| 144 } | 144 } |
| 145 | 145 |
| 146 static void metadata_streaminfo(FLACContext *s) | 146 static void metadata_streaminfo(AVCodecContext *avctx, FLACContext *s, |
| 147 { | 147 const uint8_t *buffer) |
| 148 { | |
| 149 GetBitContext gb; | |
| 150 init_get_bits(&gb, buffer, FLAC_STREAMINFO_SIZE*8); | |
| 151 | |
| 148 /* mandatory streaminfo */ | 152 /* mandatory streaminfo */ |
| 149 s->min_blocksize = get_bits(&s->gb, 16); | 153 s->min_blocksize = get_bits(&gb, 16); |
| 150 s->max_blocksize = get_bits(&s->gb, 16); | 154 s->max_blocksize = get_bits(&gb, 16); |
| 151 | 155 |
| 152 skip_bits(&s->gb, 24); /* skip min frame size */ | 156 skip_bits(&gb, 24); /* skip min frame size */ |
| 153 s->max_framesize = get_bits_long(&s->gb, 24); | 157 s->max_framesize = get_bits_long(&gb, 24); |
| 154 | 158 |
| 155 s->samplerate = get_bits_long(&s->gb, 20); | 159 s->samplerate = get_bits_long(&gb, 20); |
| 156 s->channels = get_bits(&s->gb, 3) + 1; | 160 s->channels = get_bits(&gb, 3) + 1; |
| 157 s->bps = get_bits(&s->gb, 5) + 1; | 161 s->bps = get_bits(&gb, 5) + 1; |
| 158 | 162 |
| 159 s->avctx->channels = s->channels; | 163 avctx->channels = s->channels; |
| 160 s->avctx->sample_rate = s->samplerate; | 164 avctx->sample_rate = s->samplerate; |
| 161 | 165 |
| 162 skip_bits(&s->gb, 36); /* total num of samples */ | 166 skip_bits(&gb, 36); /* total num of samples */ |
| 163 | 167 |
| 164 skip_bits(&s->gb, 64); /* md5 sum */ | 168 skip_bits(&gb, 64); /* md5 sum */ |
| 165 skip_bits(&s->gb, 64); /* md5 sum */ | 169 skip_bits(&gb, 64); /* md5 sum */ |
| 166 | 170 |
| 167 dump_headers(s); | 171 dump_headers(s); |
| 168 } | 172 } |
| 169 | 173 |
| 170 /** | 174 /** |
| 191 " metadata block: flag = %d, type = %d, size = %d\n", | 195 " metadata block: flag = %d, type = %d, size = %d\n", |
| 192 metadata_last, metadata_type, metadata_size); | 196 metadata_last, metadata_type, metadata_size); |
| 193 if (metadata_size) { | 197 if (metadata_size) { |
| 194 switch (metadata_type) { | 198 switch (metadata_type) { |
| 195 case METADATA_TYPE_STREAMINFO: | 199 case METADATA_TYPE_STREAMINFO: |
| 196 metadata_streaminfo(s); | 200 metadata_streaminfo(s->avctx, s, s->gb.buffer+get_bits_count(&s->gb)/8); |
| 197 streaminfo_updated = 1; | 201 streaminfo_updated = 1; |
| 198 break; | |
| 199 | 202 |
| 200 default: | 203 default: |
| 201 for (i=0; i<metadata_size; i++) | 204 for (i=0; i<metadata_size; i++) |
| 202 skip_bits(&s->gb, 8); | 205 skip_bits(&s->gb, 8); |
| 203 } | 206 } |
