On Wed, 26 Apr 2017 17:16:05 +0700 Muhammad Faiz <mfc...@gmail.com> wrote:
> This should fix Ticket6349 > > Since 383057f8e744efeaaa3648a59bc577b25b055835, framequeue may > generate unaligned frame data. > > Signed-off-by: Muhammad Faiz <mfc...@gmail.com> > --- > libavcodec/libmp3lame.c | 13 +++++++++---- > 1 file changed, 9 insertions(+), 4 deletions(-) > > diff --git a/libavcodec/libmp3lame.c b/libavcodec/libmp3lame.c > index 5e26743..cd505bb 100644 > --- a/libavcodec/libmp3lame.c > +++ b/libavcodec/libmp3lame.c > @@ -203,15 +203,20 @@ static int mp3lame_encode_frame(AVCodecContext *avctx, > AVPacket *avpkt, > ENCODE_BUFFER(lame_encode_buffer_int, int32_t, frame->data); > break; > case AV_SAMPLE_FMT_FLTP: > - if (frame->linesize[0] < 4 * FFALIGN(frame->nb_samples, 8)) { > - av_log(avctx, AV_LOG_ERROR, "inadequate AVFrame plane > padding\n"); > - return AVERROR(EINVAL); > - } > for (ch = 0; ch < avctx->channels; ch++) { > + if (frame->linesize[0] < 4 * FFALIGN(frame->nb_samples, 8) > || 0x1F & (intptr_t)(frame->data[ch])) { > + float *src = (float *) frame->data[ch]; > + float *dst = s->samples_flt[ch]; > + int k; > + > + for (k = 0; k < frame->nb_samples; k++) > + dst[k] = src[k] * 32768.0f; > + } else { > s->fdsp->vector_fmul_scalar(s->samples_flt[ch], > (const float *)frame->data[ch], > 32768.0f, > FFALIGN(frame->nb_samples, 8)); > + } > } > ENCODE_BUFFER(lame_encode_buffer_float, float, s->samples_flt); > break; Looks like the right solution is fixing framequeue. I don't think encoders generally allow lax alignment, and this might not be the only case. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel