Originally committed as revision 19294 to svn://svn.ffmpeg.org/ffmpeg/trunktags/v0.6
| @@ -320,7 +320,7 @@ static int decode_ga_specific_config(AACContext * ac, GetBitContext * gb, int ch | |||||
| int extension_flag, ret; | int extension_flag, ret; | ||||
| if(get_bits1(gb)) { // frameLengthFlag | if(get_bits1(gb)) { // frameLengthFlag | ||||
| ff_log_missing_feature(ac->avccontext, "960/120 MDCT window is", 1); | |||||
| av_log_missing_feature(ac->avccontext, "960/120 MDCT window is", 1); | |||||
| return -1; | return -1; | ||||
| } | } | ||||
| @@ -588,7 +588,7 @@ static int decode_ics_info(AACContext * ac, IndividualChannelStream * ics, GetBi | |||||
| memset(ics, 0, sizeof(IndividualChannelStream)); | memset(ics, 0, sizeof(IndividualChannelStream)); | ||||
| return -1; | return -1; | ||||
| } else { | } else { | ||||
| ff_log_missing_feature(ac->avccontext, "Predictor bit set but LTP is", 1); | |||||
| av_log_missing_feature(ac->avccontext, "Predictor bit set but LTP is", 1); | |||||
| memset(ics, 0, sizeof(IndividualChannelStream)); | memset(ics, 0, sizeof(IndividualChannelStream)); | ||||
| return -1; | return -1; | ||||
| } | } | ||||
| @@ -1040,7 +1040,7 @@ static int decode_ics(AACContext * ac, SingleChannelElement * sce, GetBitContext | |||||
| if ((tns->present = get_bits1(gb)) && decode_tns(ac, tns, gb, ics)) | if ((tns->present = get_bits1(gb)) && decode_tns(ac, tns, gb, ics)) | ||||
| return -1; | return -1; | ||||
| if (get_bits1(gb)) { | if (get_bits1(gb)) { | ||||
| ff_log_missing_feature(ac->avccontext, "SSR", 1); | |||||
| av_log_missing_feature(ac->avccontext, "SSR", 1); | |||||
| return -1; | return -1; | ||||
| } | } | ||||
| } | } | ||||
| @@ -1245,7 +1245,7 @@ static int decode_cce(AACContext * ac, GetBitContext * gb, ChannelElement * che) | |||||
| */ | */ | ||||
| static int decode_sbr_extension(AACContext * ac, GetBitContext * gb, int crc, int cnt) { | static int decode_sbr_extension(AACContext * ac, GetBitContext * gb, int crc, int cnt) { | ||||
| // TODO : sbr_extension implementation | // TODO : sbr_extension implementation | ||||
| ff_log_missing_feature(ac->avccontext, "SBR", 0); | |||||
| av_log_missing_feature(ac->avccontext, "SBR", 0); | |||||
| skip_bits_long(gb, 8*cnt - 4); // -4 due to reading extension type | skip_bits_long(gb, 8*cnt - 4); // -4 due to reading extension type | ||||
| return cnt; | return cnt; | ||||
| } | } | ||||
| @@ -1588,7 +1588,7 @@ static int parse_adts_frame_header(AACContext * ac, GetBitContext * gb) { | |||||
| if (!hdr_info.crc_absent) | if (!hdr_info.crc_absent) | ||||
| skip_bits(gb, 16); | skip_bits(gb, 16); | ||||
| } else { | } else { | ||||
| ff_log_missing_feature(ac->avccontext, "More than one AAC RDB per ADTS frame is", 0); | |||||
| av_log_missing_feature(ac->avccontext, "More than one AAC RDB per ADTS frame is", 0); | |||||
| return -1; | return -1; | ||||
| } | } | ||||
| } | } | ||||
| @@ -61,7 +61,7 @@ static int aac_adtstoasc_filter(AVBitStreamFilterContext *bsfc, | |||||
| } | } | ||||
| if (!hdr.crc_absent && hdr.num_aac_frames > 1) { | if (!hdr.crc_absent && hdr.num_aac_frames > 1) { | ||||
| ff_log_missing_feature(avctx, "Multiple RDBs per frame with CRC is", 0); | |||||
| av_log_missing_feature(avctx, "Multiple RDBs per frame with CRC is", 0); | |||||
| return -1; | return -1; | ||||
| } | } | ||||
| @@ -74,7 +74,7 @@ static int aac_adtstoasc_filter(AVBitStreamFilterContext *bsfc, | |||||
| if (!hdr.chan_config) { | if (!hdr.chan_config) { | ||||
| init_get_bits(&gb, buf, buf_size); | init_get_bits(&gb, buf, buf_size); | ||||
| if (get_bits(&gb, 3) != 5) { | if (get_bits(&gb, 3) != 5) { | ||||
| ff_log_missing_feature(avctx, "PCE based channel configuration, where the PCE is not the first syntax element is", 0); | |||||
| av_log_missing_feature(avctx, "PCE based channel configuration, where the PCE is not the first syntax element is", 0); | |||||
| return -1; | return -1; | ||||
| } | } | ||||
| init_put_bits(&pb, pce_data, MAX_PCE_SIZE); | init_put_bits(&pb, pce_data, MAX_PCE_SIZE); | ||||
| @@ -820,7 +820,7 @@ static int decode_audio_block(AC3DecodeContext *s, int blk) | |||||
| /* spectral extension strategy */ | /* spectral extension strategy */ | ||||
| if (s->eac3 && (!blk || get_bits1(gbc))) { | if (s->eac3 && (!blk || get_bits1(gbc))) { | ||||
| if (get_bits1(gbc)) { | if (get_bits1(gbc)) { | ||||
| ff_log_missing_feature(s->avctx, "Spectral extension", 1); | |||||
| av_log_missing_feature(s->avctx, "Spectral extension", 1); | |||||
| return -1; | return -1; | ||||
| } | } | ||||
| /* TODO: parse spectral extension strategy info */ | /* TODO: parse spectral extension strategy info */ | ||||
| @@ -845,7 +845,7 @@ static int decode_audio_block(AC3DecodeContext *s, int blk) | |||||
| /* check for enhanced coupling */ | /* check for enhanced coupling */ | ||||
| if (s->eac3 && get_bits1(gbc)) { | if (s->eac3 && get_bits1(gbc)) { | ||||
| /* TODO: parse enhanced coupling strategy info */ | /* TODO: parse enhanced coupling strategy info */ | ||||
| ff_log_missing_feature(s->avctx, "Enhanced coupling", 1); | |||||
| av_log_missing_feature(s->avctx, "Enhanced coupling", 1); | |||||
| return -1; | return -1; | ||||
| } | } | ||||
| @@ -214,7 +214,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) { | ||||
| ff_log_missing_feature(s->avctx, "Dependent substream decoding", 1); | |||||
| av_log_missing_feature(s->avctx, "Dependent substream decoding", 1); | |||||
| 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"); | ||||
| @@ -226,7 +226,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. */ | ||||
| ff_log_missing_feature(s->avctx, "Additional substreams", 1); | |||||
| av_log_missing_feature(s->avctx, "Additional substreams", 1); | |||||
| return AAC_AC3_PARSE_ERROR_FRAME_TYPE; | return AAC_AC3_PARSE_ERROR_FRAME_TYPE; | ||||
| } | } | ||||
| @@ -235,7 +235,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. */ | ||||
| ff_log_missing_feature(s->avctx, "Reduced sampling rates", 1); | |||||
| av_log_missing_feature(s->avctx, "Reduced sampling rates", 1); | |||||
| return -1; | return -1; | ||||
| } | } | ||||
| skip_bits(gbc, 5); // skip bitstream id | skip_bits(gbc, 5); // skip bitstream id | ||||
| @@ -492,7 +492,7 @@ int ff_eac3_parse_header(AC3DecodeContext *s) | |||||
| /* spectral extension attenuation data */ | /* spectral extension attenuation data */ | ||||
| if (parse_spx_atten_data) { | if (parse_spx_atten_data) { | ||||
| ff_log_missing_feature(s->avctx, "Spectral extension attenuation", 1); | |||||
| av_log_missing_feature(s->avctx, "Spectral extension attenuation", 1); | |||||
| for (ch = 1; ch <= s->fbw_channels; ch++) { | for (ch = 1; ch <= s->fbw_channels; ch++) { | ||||
| if (get_bits1(gbc)) { // channel has spx attenuation | if (get_bits1(gbc)) { // channel has spx attenuation | ||||
| skip_bits(gbc, 5); // skip spx attenuation code | skip_bits(gbc, 5); // skip spx attenuation code | ||||
| @@ -508,7 +508,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); | ||||
| ff_log_missing_feature(s->avctx, "Block start info", 1); | |||||
| av_log_missing_feature(s->avctx, "Block start info", 1); | |||||
| } | } | ||||
| /* syntax state initialization */ | /* syntax state initialization */ | ||||
| @@ -448,7 +448,7 @@ static inline int decode_subframe(FLACContext *s, int channel) | |||||
| s->curr_bps -= wasted; | s->curr_bps -= wasted; | ||||
| } | } | ||||
| if (s->curr_bps > 32) { | if (s->curr_bps > 32) { | ||||
| ff_log_missing_feature(s->avctx, "decorrelated bit depth > 32", 0); | |||||
| av_log_missing_feature(s->avctx, "decorrelated bit depth > 32", 0); | |||||
| return -1; | return -1; | ||||
| } | } | ||||
| @@ -37,7 +37,7 @@ | |||||
| * message which tells the user how to report samples to the development | * message which tells the user how to report samples to the development | ||||
| * mailing list. | * mailing list. | ||||
| */ | */ | ||||
| void ff_log_missing_feature(void *avc, const char *feature, int want_sample); | |||||
| void av_log_missing_feature(void *avc, const char *feature, int want_sample); | |||||
| /** | /** | ||||
| * Logs a generic warning message asking for a sample. | * Logs a generic warning message asking for a sample. | ||||
| @@ -45,7 +45,7 @@ void ff_log_missing_feature(void *avc, const char *feature, int want_sample); | |||||
| * a pointer to an AVClass struct | * a pointer to an AVClass struct | ||||
| * @param[in] msg string containing an optional message, or NULL if no message | * @param[in] msg string containing an optional message, or NULL if no message | ||||
| */ | */ | ||||
| void ff_log_ask_for_sample(void *avc, const char *msg); | |||||
| void av_log_ask_for_sample(void *avc, const char *msg); | |||||
| /** | /** | ||||
| * Determines whether pix_fmt is a hardware accelerated format. | * Determines whether pix_fmt is a hardware accelerated format. | ||||
| @@ -432,7 +432,7 @@ static float compute_gain_ctrl(const float *v_ref, const float *v_in, const int | |||||
| if(scalefactor) | if(scalefactor) | ||||
| scalefactor = sqrt(ff_dot_productf(v_ref, v_ref, len) / scalefactor); | scalefactor = sqrt(ff_dot_productf(v_ref, v_ref, len) / scalefactor); | ||||
| else | else | ||||
| ff_log_missing_feature(NULL, "Zero energy for gain control", 1); | |||||
| av_log_missing_feature(NULL, "Zero energy for gain control", 1); | |||||
| return scalefactor; | return scalefactor; | ||||
| } | } | ||||
| @@ -716,7 +716,7 @@ static qcelp_packet_rate determine_bitrate(AVCodecContext *avctx, const int buf_ | |||||
| if(bitrate == SILENCE) | if(bitrate == SILENCE) | ||||
| { | { | ||||
| //FIXME: Remove experimental warning when tested with samples. | //FIXME: Remove experimental warning when tested with samples. | ||||
| ff_log_ask_for_sample(avctx, "'Blank frame handling is experimental."); | |||||
| av_log_ask_for_sample(avctx, "'Blank frame handling is experimental."); | |||||
| } | } | ||||
| return bitrate; | return bitrate; | ||||
| } | } | ||||
| @@ -1191,19 +1191,19 @@ int av_parse_video_frame_rate(AVRational *frame_rate, const char *arg) | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| void ff_log_missing_feature(void *avc, const char *feature, int want_sample) | |||||
| void av_log_missing_feature(void *avc, const char *feature, int want_sample) | |||||
| { | { | ||||
| av_log(avc, AV_LOG_WARNING, "%s not implemented. Update your FFmpeg " | av_log(avc, AV_LOG_WARNING, "%s not implemented. Update your FFmpeg " | ||||
| "version to the newest one from SVN. If the problem still " | "version to the newest one from SVN. If the problem still " | ||||
| "occurs, it means that your file has a feature which has not " | "occurs, it means that your file has a feature which has not " | ||||
| "been implemented.", feature); | "been implemented.", feature); | ||||
| if(want_sample) | if(want_sample) | ||||
| ff_log_ask_for_sample(avc, NULL); | |||||
| av_log_ask_for_sample(avc, NULL); | |||||
| else | else | ||||
| av_log(avc, AV_LOG_WARNING, "\n"); | av_log(avc, AV_LOG_WARNING, "\n"); | ||||
| } | } | ||||
| void ff_log_ask_for_sample(void *avc, const char *msg) | |||||
| void av_log_ask_for_sample(void *avc, const char *msg) | |||||
| { | { | ||||
| if (msg) | if (msg) | ||||
| av_log(avc, AV_LOG_WARNING, "%s ", msg); | av_log(avc, AV_LOG_WARNING, "%s ", msg); | ||||