Mercurial > libavcodec.hg
comparison eac3dec.c @ 8281:f93efc084e41 libavcodec
Make av_log_missing_feature an internal function, and change its name
to ff_log_missing_feature.
| author | stefano |
|---|---|
| date | Mon, 08 Dec 2008 21:21:38 +0000 |
| parents | 55aba5d428f3 |
| children | a5402e89a80c |
comparison
equal
deleted
inserted
replaced
| 8280:63aba08af550 | 8281:f93efc084e41 |
|---|---|
| 19 * License along with FFmpeg; if not, write to the Free Software | 19 * License along with FFmpeg; if not, write to the Free Software |
| 20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | 20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
| 21 */ | 21 */ |
| 22 | 22 |
| 23 #include "avcodec.h" | 23 #include "avcodec.h" |
| 24 #include "internal.h" | |
| 24 #include "ac3.h" | 25 #include "ac3.h" |
| 25 #include "ac3_parser.h" | 26 #include "ac3_parser.h" |
| 26 #include "ac3dec.h" | 27 #include "ac3dec.h" |
| 27 #include "ac3dec_data.h" | 28 #include "ac3dec_data.h" |
| 28 | 29 |
| 180 | 181 |
| 181 /* An E-AC-3 stream can have multiple independent streams which the | 182 /* An E-AC-3 stream can have multiple independent streams which the |
| 182 application can select from. each independent stream can also contain | 183 application can select from. each independent stream can also contain |
| 183 dependent streams which are used to add or replace channels. */ | 184 dependent streams which are used to add or replace channels. */ |
| 184 if (s->frame_type == EAC3_FRAME_TYPE_DEPENDENT) { | 185 if (s->frame_type == EAC3_FRAME_TYPE_DEPENDENT) { |
| 185 av_log_missing_feature(s->avctx, "Dependent substream decoding", 1); | 186 ff_log_missing_feature(s->avctx, "Dependent substream decoding", 1); |
| 186 return AC3_PARSE_ERROR_FRAME_TYPE; | 187 return AC3_PARSE_ERROR_FRAME_TYPE; |
| 187 } else if (s->frame_type == EAC3_FRAME_TYPE_RESERVED) { | 188 } else if (s->frame_type == EAC3_FRAME_TYPE_RESERVED) { |
| 188 av_log(s->avctx, AV_LOG_ERROR, "Reserved frame type\n"); | 189 av_log(s->avctx, AV_LOG_ERROR, "Reserved frame type\n"); |
| 189 return AC3_PARSE_ERROR_FRAME_TYPE; | 190 return AC3_PARSE_ERROR_FRAME_TYPE; |
| 190 } | 191 } |
| 192 /* The substream id indicates which substream this frame belongs to. each | 193 /* The substream id indicates which substream this frame belongs to. each |
| 193 independent stream has its own substream id, and the dependent streams | 194 independent stream has its own substream id, and the dependent streams |
| 194 associated to an independent stream have matching substream id's. */ | 195 associated to an independent stream have matching substream id's. */ |
| 195 if (s->substreamid) { | 196 if (s->substreamid) { |
| 196 /* only decode substream with id=0. skip any additional substreams. */ | 197 /* only decode substream with id=0. skip any additional substreams. */ |
| 197 av_log_missing_feature(s->avctx, "Additional substreams", 1); | 198 ff_log_missing_feature(s->avctx, "Additional substreams", 1); |
| 198 return AC3_PARSE_ERROR_FRAME_TYPE; | 199 return AC3_PARSE_ERROR_FRAME_TYPE; |
| 199 } | 200 } |
| 200 | 201 |
| 201 if (s->bit_alloc_params.sr_code == EAC3_SR_CODE_REDUCED) { | 202 if (s->bit_alloc_params.sr_code == EAC3_SR_CODE_REDUCED) { |
| 202 /* The E-AC-3 specification does not tell how to handle reduced sample | 203 /* The E-AC-3 specification does not tell how to handle reduced sample |
| 203 rates in bit allocation. The best assumption would be that it is | 204 rates in bit allocation. The best assumption would be that it is |
| 204 handled like AC-3 DolbyNet, but we cannot be sure until we have a | 205 handled like AC-3 DolbyNet, but we cannot be sure until we have a |
| 205 sample which utilizes this feature. */ | 206 sample which utilizes this feature. */ |
| 206 av_log_missing_feature(s->avctx, "Reduced sampling rates", 1); | 207 ff_log_missing_feature(s->avctx, "Reduced sampling rates", 1); |
| 207 return -1; | 208 return -1; |
| 208 } | 209 } |
| 209 skip_bits(gbc, 5); // skip bitstream id | 210 skip_bits(gbc, 5); // skip bitstream id |
| 210 | 211 |
| 211 /* volume control params */ | 212 /* volume control params */ |
| 458 } | 459 } |
| 459 } | 460 } |
| 460 | 461 |
| 461 /* spectral extension attenuation data */ | 462 /* spectral extension attenuation data */ |
| 462 if (parse_spx_atten_data) { | 463 if (parse_spx_atten_data) { |
| 463 av_log_missing_feature(s->avctx, "Spectral extension attenuation", 1); | 464 ff_log_missing_feature(s->avctx, "Spectral extension attenuation", 1); |
| 464 for (ch = 1; ch <= s->fbw_channels; ch++) { | 465 for (ch = 1; ch <= s->fbw_channels; ch++) { |
| 465 if (get_bits1(gbc)) { // channel has spx attenuation | 466 if (get_bits1(gbc)) { // channel has spx attenuation |
| 466 skip_bits(gbc, 5); // skip spx attenuation code | 467 skip_bits(gbc, 5); // skip spx attenuation code |
| 467 } | 468 } |
| 468 } | 469 } |
| 474 nblkstrtbits = (numblks - 1) * (4 + ceiling(log2(words_per_frame))) | 475 nblkstrtbits = (numblks - 1) * (4 + ceiling(log2(words_per_frame))) |
| 475 The spec does not say what this data is or what it's used for. | 476 The spec does not say what this data is or what it's used for. |
| 476 It is likely the offset of each block within the frame. */ | 477 It is likely the offset of each block within the frame. */ |
| 477 int block_start_bits = (s->num_blocks-1) * (4 + av_log2(s->frame_size-2)); | 478 int block_start_bits = (s->num_blocks-1) * (4 + av_log2(s->frame_size-2)); |
| 478 skip_bits_long(gbc, block_start_bits); | 479 skip_bits_long(gbc, block_start_bits); |
| 479 av_log_missing_feature(s->avctx, "Block start info", 1); | 480 ff_log_missing_feature(s->avctx, "Block start info", 1); |
| 480 } | 481 } |
| 481 | 482 |
| 482 /* syntax state initialization */ | 483 /* syntax state initialization */ |
| 483 for (ch = 1; ch <= s->fbw_channels; ch++) { | 484 for (ch = 1; ch <= s->fbw_channels; ch++) { |
| 484 s->first_cpl_coords[ch] = 1; | 485 s->first_cpl_coords[ch] = 1; |
