|
|
@ -300,7 +300,7 @@ int ff_eac3_parse_header(AC3DecodeContext *s) |
|
|
|
application can select from. each independent stream can also contain |
|
|
|
application can select from. each independent stream can also contain |
|
|
|
dependent streams which are used to add or replace channels. */ |
|
|
|
dependent streams which are used to add or replace channels. */ |
|
|
|
if (s->frame_type == EAC3_FRAME_TYPE_DEPENDENT) { |
|
|
|
if (s->frame_type == EAC3_FRAME_TYPE_DEPENDENT) { |
|
|
|
av_log_missing_feature(s->avctx, "Dependent substream decoding", 1); |
|
|
|
avpriv_request_sample(s->avctx, "Dependent substream decoding"); |
|
|
|
return AAC_AC3_PARSE_ERROR_FRAME_TYPE; |
|
|
|
return AAC_AC3_PARSE_ERROR_FRAME_TYPE; |
|
|
|
} else if (s->frame_type == EAC3_FRAME_TYPE_RESERVED) { |
|
|
|
} else if (s->frame_type == EAC3_FRAME_TYPE_RESERVED) { |
|
|
|
av_log(s->avctx, AV_LOG_ERROR, "Reserved frame type\n"); |
|
|
|
av_log(s->avctx, AV_LOG_ERROR, "Reserved frame type\n"); |
|
|
@ -312,7 +312,7 @@ int ff_eac3_parse_header(AC3DecodeContext *s) |
|
|
|
associated to an independent stream have matching substream id's. */ |
|
|
|
associated to an independent stream have matching substream id's. */ |
|
|
|
if (s->substreamid) { |
|
|
|
if (s->substreamid) { |
|
|
|
/* only decode substream with id=0. skip any additional substreams. */ |
|
|
|
/* only decode substream with id=0. skip any additional substreams. */ |
|
|
|
av_log_missing_feature(s->avctx, "Additional substreams", 1); |
|
|
|
avpriv_request_sample(s->avctx, "Additional substreams"); |
|
|
|
return AAC_AC3_PARSE_ERROR_FRAME_TYPE; |
|
|
|
return AAC_AC3_PARSE_ERROR_FRAME_TYPE; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -321,7 +321,7 @@ int ff_eac3_parse_header(AC3DecodeContext *s) |
|
|
|
rates in bit allocation. The best assumption would be that it is |
|
|
|
rates in bit allocation. The best assumption would be that it is |
|
|
|
handled like AC-3 DolbyNet, but we cannot be sure until we have a |
|
|
|
handled like AC-3 DolbyNet, but we cannot be sure until we have a |
|
|
|
sample which utilizes this feature. */ |
|
|
|
sample which utilizes this feature. */ |
|
|
|
av_log_missing_feature(s->avctx, "Reduced sampling rate", 1); |
|
|
|
avpriv_request_sample(s->avctx, "Reduced sampling rate"); |
|
|
|
return AVERROR_PATCHWELCOME; |
|
|
|
return AVERROR_PATCHWELCOME; |
|
|
|
} |
|
|
|
} |
|
|
|
skip_bits(gbc, 5); // skip bitstream id
|
|
|
|
skip_bits(gbc, 5); // skip bitstream id
|
|
|
@ -593,7 +593,7 @@ int ff_eac3_parse_header(AC3DecodeContext *s) |
|
|
|
It is likely the offset of each block within the frame. */ |
|
|
|
It is likely the offset of each block within the frame. */ |
|
|
|
int block_start_bits = (s->num_blocks-1) * (4 + av_log2(s->frame_size-2)); |
|
|
|
int block_start_bits = (s->num_blocks-1) * (4 + av_log2(s->frame_size-2)); |
|
|
|
skip_bits_long(gbc, block_start_bits); |
|
|
|
skip_bits_long(gbc, block_start_bits); |
|
|
|
av_log_missing_feature(s->avctx, "Block start info", 1); |
|
|
|
avpriv_request_sample(s->avctx, "Block start info"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* syntax state initialization */ |
|
|
|
/* syntax state initialization */ |
|
|
|