X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Flibvo-aacenc.c;h=280ba27ef9e48e794794102758d482c0ccecbe89;hb=04d382252456c6a03ddbabbf1abcd274f761e6cd;hp=65c2745695e33c0b3415c0b2b559e0d49ac7fd45;hpb=d89e738a0c63b30a60ca1688158d54b204824161;p=ffmpeg diff --git a/libavcodec/libvo-aacenc.c b/libavcodec/libvo-aacenc.c index 65c2745695e..280ba27ef9e 100644 --- a/libavcodec/libvo-aacenc.c +++ b/libavcodec/libvo-aacenc.c @@ -59,25 +59,27 @@ static av_cold int aac_encode_init(AVCodecContext *avctx) if (s->codec_api.SetParam(s->handle, VO_PID_AAC_ENCPARAM, ¶ms) != VO_ERR_NONE) { av_log(avctx, AV_LOG_ERROR, "Unable to set encoding parameters\n"); - return AVERROR_UNKNOWN; + return AVERROR(EINVAL); } - avctx->extradata_size = 2; - avctx->extradata = av_mallocz(avctx->extradata_size + - FF_INPUT_BUFFER_PADDING_SIZE); - if (!avctx->extradata) - return AVERROR(ENOMEM); - for (index = 0; index < 16; index++) - if (avctx->sample_rate == ff_mpeg4audio_sample_rates[index]) + if (avctx->sample_rate == avpriv_mpeg4audio_sample_rates[index]) break; if (index == 16) { av_log(avctx, AV_LOG_ERROR, "Unsupported sample rate %d\n", avctx->sample_rate); - return AVERROR_NOTSUPP; + return AVERROR(ENOSYS); + } + if (avctx->flags & CODEC_FLAG_GLOBAL_HEADER) { + avctx->extradata_size = 2; + avctx->extradata = av_mallocz(avctx->extradata_size + + FF_INPUT_BUFFER_PADDING_SIZE); + if (!avctx->extradata) + return AVERROR(ENOMEM); + + avctx->extradata[0] = 0x02 << 3 | index >> 1; + avctx->extradata[1] = (index & 0x01) << 7 | avctx->channels << 3; } - avctx->extradata[0] = 0x02 << 3 | index >> 1; - avctx->extradata[1] = (index & 0x01) << 7 | avctx->channels << 3; return 0; } @@ -108,21 +110,19 @@ static int aac_encode_frame(AVCodecContext *avctx, if (s->codec_api.GetOutputData(s->handle, &output, &output_info) != VO_ERR_NONE) { av_log(avctx, AV_LOG_ERROR, "Unable to encode frame\n"); - return AVERROR_UNKNOWN; + return AVERROR(EINVAL); } return output.Length; } AVCodec ff_libvo_aacenc_encoder = { - "libvo_aacenc", - CODEC_TYPE_AUDIO, - CODEC_ID_AAC, - sizeof(AACContext), - aac_encode_init, - aac_encode_frame, - aac_encode_close, - NULL, - .sample_fmts = (enum SampleFormat[]){SAMPLE_FMT_S16,SAMPLE_FMT_NONE}, - .long_name = NULL_IF_CONFIG_SMALL("libvo-aacenc AAC"), + .name = "libvo_aacenc", + .type = AVMEDIA_TYPE_AUDIO, + .id = CODEC_ID_AAC, + .priv_data_size = sizeof(AACContext), + .init = aac_encode_init, + .encode = aac_encode_frame, + .close = aac_encode_close, + .sample_fmts = (const enum AVSampleFormat[]){AV_SAMPLE_FMT_S16,AV_SAMPLE_FMT_NONE}, + .long_name = NULL_IF_CONFIG_SMALL("Android VisualOn AAC"), }; -