On ven, apr 25, 2014 at 07:48:12 +0200, Luca Barbato wrote:
> On 25/04/14 19:31, Alessandro Ghedini wrote:
> > +static av_cold int init(AVFilterContext *ctx)
> > +{
> > + Bs2bContext *bs2b = ctx->priv;
> > +
> > + if (!(bs2b->bs2bp = bs2b_open()))
> > + return -1;
>
> AVERROR_UNKNOWN or maybe AVERROR(ENOMEM) ?
ENOMEM sounds good.
> > +static int filter_frame(AVFilterLink *inlink, AVFrame *buf)
> > +{
> > + int ret;
> > + AVFrame *out_buf;
> > +
> > + Bs2bContext *bs2b = inlink->dst->priv;
> > + AVFilterLink *outlink = inlink->dst->outputs[0];
> > +
> > + if (av_frame_is_writable(buf)) {
> > + out_buf = buf;
> > + } else {
> > + out_buf = ff_get_audio_buffer(inlink, buf->nb_samples);
> > + if (!out_buf)
> > + return AVERROR(ENOMEM);
> > + ret = av_frame_copy_props(out_buf, buf);
> > + if (ret < 0) {
> > + av_frame_free(&out_buf);
> > + av_frame_free(&buf);
>
> Not sure about this free, if you could fix it and the other small issues
> below would be great.
FWIW I copied that code from af_volume.c, so that may need fixing too.
Also, I just noticed that af_volume also has:
if (buf != out_buf)
av_frame_free(&buf);
just before returning (without errors). Should I add that here too? Maybe it'd
be enough to move that last free() after the if (ret < 0).
Cheers
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel