Thank you for reply.
frame.c:
int av_frame_ref(AVFrame *dst, const AVFrame *src)
{
...
/* duplicate the frame data if it's not refcounted */
if (!src->buf[0]) {
ret = av_frame_get_buffer(dst, 32);
if (ret < 0)
return ret;
ret = av_frame_copy(dst, src);
if (ret < 0)
av_frame_unref(dst);
return ret;
}
...
}
After avcodec_decode_video2 my frame is not refcounted, so call of av_frame_ref
gives me copy of frame.
I just want to my frame is refcounted. How to make this?
--- Исходное сообщение ---
От кого: "wm4" <[email protected]>
Дата: 24 июля 2014, 22:21:16
> On Thu, 24 Jul 2014 09:23:46 +0300
> [email protected] wrote:
>
> > Sorry for formating, it was first message.
> >
> > Hi
> >
> > I want to realise AVFrames handling with queue.
> > My code is
> >
> > int decode(AVCodecContext *codec_ctx, AVPacket *packet)
> > {
> > AVFrame *frame = av_frame_alloc();
> > if (!frame)
> > return -1;
> >
> > int got_frame;
> > int ret = avcodec_decode_video2(codec_ctx, frame, &got_frame, packet);
> > if (ret >= 0 && got_frame) {
> > /* Allocate buffer references */
> > for (int i = 0; i < 3; i++) {
> > uint8_t *data = frame->data[i];
> > int size = frame->linesize[i] * frame->height;
> > frame->buf[i] = av_buffer_create(data, size, av_buffer_default_free, NULL,
> > 0);
> > }
> >
> > enqueue(frame);
> > return 0;
> > }
> >
> > av_frame_free(
_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user