X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=ffmpeg%2Flibavcodec%2Flibmp3lame.c;h=e33919be89c59afb3facc6c29ad5de17d5607597;hb=refs%2Ftags%2Fdebian%2F2.5.0_trusty1.1;hp=1ac79a2ed9dc3a9c714c7706da3f38780f6175f4;hpb=2ba45a602cbfa7b771effba9b11bb4245c21bc00;p=deb_ffmpeg.git diff --git a/ffmpeg/libavcodec/libmp3lame.c b/ffmpeg/libavcodec/libmp3lame.c index 1ac79a2..e33919b 100644 --- a/ffmpeg/libavcodec/libmp3lame.c +++ b/ffmpeg/libavcodec/libmp3lame.c @@ -52,7 +52,7 @@ typedef struct LAMEContext { int abr; float *samples_flt[2]; AudioFrameQueue afq; - AVFloatDSPContext fdsp; + AVFloatDSPContext *fdsp; } LAMEContext; @@ -79,6 +79,7 @@ static av_cold int mp3lame_encode_close(AVCodecContext *avctx) av_freep(&s->samples_flt[0]); av_freep(&s->samples_flt[1]); av_freep(&s->buffer); + av_freep(&s->fdsp); ff_af_queue_close(&s->afq); @@ -106,9 +107,7 @@ static av_cold int mp3lame_encode_init(AVCodecContext *avctx) lame_set_out_samplerate(s->gfp, avctx->sample_rate); /* algorithmic quality */ - if (avctx->compression_level == FF_COMPRESSION_DEFAULT) - lame_set_quality(s->gfp, 5); - else + if (avctx->compression_level != FF_COMPRESSION_DEFAULT) lame_set_quality(s->gfp, avctx->compression_level); /* rate control */ @@ -138,7 +137,7 @@ static av_cold int mp3lame_encode_init(AVCodecContext *avctx) } /* get encoder delay */ - avctx->delay = lame_get_encoder_delay(s->gfp) + 528 + 1; + avctx->initial_padding = lame_get_encoder_delay(s->gfp) + 528 + 1; ff_af_queue_init(avctx, &s->afq); avctx->frame_size = lame_get_framesize(s->gfp); @@ -160,7 +159,12 @@ static av_cold int mp3lame_encode_init(AVCodecContext *avctx) if (ret < 0) goto error; - avpriv_float_dsp_init(&s->fdsp, avctx->flags & CODEC_FLAG_BITEXACT); + s->fdsp = avpriv_float_dsp_alloc(avctx->flags & CODEC_FLAG_BITEXACT); + if (!s->fdsp) { + ret = AVERROR(ENOMEM); + goto error; + } + return 0; error: @@ -199,7 +203,7 @@ static int mp3lame_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, return AVERROR(EINVAL); } for (ch = 0; ch < avctx->channels; ch++) { - s->fdsp.vector_fmul_scalar(s->samples_flt[ch], + s->fdsp->vector_fmul_scalar(s->samples_flt[ch], (const float *)frame->data[ch], 32768.0f, FFALIGN(frame->nb_samples, 8));