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 } |