On 30 May 2014 21:40, wm4 <[email protected]> wrote:

> Then you're probably doing something wrong. It's easily possible that
> this "wrong" thing was right (or just didn't cause problems) before the
> recent API changes.

oh, I'm sure I am... The question is what :)

I'll keep looking



> Are you using av_frame_free()? AVFrames are reference counted in the
> most recent release, so freeing the data isn't as simple as it was.
> av_frame_free() should take care of this properly.

with FFmpeg 1.2 I actually didn't allocate the AVFrame.

I had simply:
    AVFrame frame;
    avcodec_get_frame_defaults(&frame);

and use avcodec_decode_audio4 with a pointer to frame.

avcodec_get_frame_defaults being obsolete now, I have changed this to:
    AVFrame *frame;
    if (!(frame = av_frame_alloc()))
    {
        return AVERROR(ENOMEM);
    }

    ret = avcodec_decode_audio4(ctx, frame, &got_frame, pkt);
    ...

    av_frame_free(&frame);

but regardless of the method, the data pointed to within AVFrame is
never deallocated by either av_frame_free or avcodec_free_frame

Stepping into the code, it seems that the decoder is managing the
data, allocating it with get_buffer() and release it later...

so that makes sense.


> I get a mostly black screen with some artifacts when playing your video
> with vdpau decoding on an older nvidia card with binary drivers.

ah yes you're right... it's another video that gives me green blocks.

Maybe I should raise a bug then...

but seeing I couldn't reproduce it with mplayer, and as the new API
doesn't cause the issue, I thought the issue was on our side only,..

What are you using to play?
_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user

Reply via email to