the doxygen, docs dont really point to any difference… (the prototype for
av_buffersrc_add_frame doesn’t match my header, not sure if that is a version
issue)
int av_buffersrc_write_frame ( AVFilterContext * s, const
AVFrame * frame )
Add a frame to the buffer source.
int av_buffersrc_add_frame (AVFilterContext *buffer_src, const AVFrame
*frame, int flags)
Add frame data to buffer_src.
On Oct 14, 2015, at 2:15 PM, Ganesh Ajjanagadde <[email protected]> wrote:
> On Wed, Oct 14, 2015 at 4:13 PM, Grady Player
> <[email protected]> wrote:
>> Figured it out, sharing (if anyone were to care)…
>>
>> I was using
>> av_buffersrc_add_frame
>> rather than:
>> av_buffersrc_write_frame
>>
>> which informs the buffer to retain an internal reference to the original
>> picture/frame..
>
> Was the documentation confusing? Any suggestions for improving the docs?
>
>>
>> -Grady
>>
>>
>> On Oct 14, 2015, at 11:50 AM, Grady Player
>> <[email protected]> wrote:
>>
>>> Yes, sorry this was omitted - after I am done I call:
>>>
>>> av_frame_free(&oframe);
>>>
>>> it seems to be something that is internally referenced by the graph...
>>>
>>>
>>> On Oct 14, 2015, at 10:50 AM, Paul B Mahol <[email protected]> wrote:
>>>
>>>> Dana 14. 10. 2015. 17:36 osoba "Grady Player" <
>>>> [email protected]> napisala je:
>>>>>
>>>>> Currently using:
>>>>>
>>>>> commit af5917698bd44f136fd0ff00a9e5f8b5f92f2d58
>>>>> Author: Michael Niedermayer <[email protected]>
>>>>> Date: Sun May 17 01:34:35 2015 +0200
>>>>>
>>>>> I am trying to set up a small filter graph in order to use the YADIF
>>>> implementation in libavfilter...
>>>>>
>>>>> I have set up an avfilter_graph with 3 filters…
>>>>>
>>>>> avfilter_register_all();
>>>>> avfGraph = avfilter_graph_alloc();
>>>>>
>>>>> AVFilter * bufferFilter, * yadifFilter, * bufferSink;
>>>>>
>>>>> bufferFilter = avfilter_get_by_name("buffer");
>>>>> yadifFilter = avfilter_get_by_name("yadif");
>>>>> bufferSink = avfilter_get_by_name("buffersink”);
>>>>>
>>>>> /* dynamic configuration here */
>>>>>
>>>>> avfilter_graph_create_filter(/*done for each filter */);
>>>>>
>>>>> if (err >= 0) err = avfilter_link(buffer_ctx, 0, yadif_ctx, 0);
>>>>> if (err >= 0) err = avfilter_link(yadif_ctx, 0, sink_ctx, 0);
>>>>>
>>>>> if (err>=0) err = avfilter_graph_config(avfGraph, NULL);
>>>>>
>>>>>
>>>>> Then I feed frames into the graph with:
>>>>>
>>>>> err = av_buffersrc_add_frame(buffer_ctx, avf);
>>>>>
>>>>> and pull frames out of the graph with:
>>>>>
>>>>> AVFrame * oframe = av_frame_alloc();
>>>>> err = av_buffersink_get_frame(sink_ctx, oframe);
>>>>>
>>>>>
>>>>> this all seems to work pretty well, except it is holding on to a lot of
>>>> memory that is released in avfilter_graph_free()
>>>>>
>>>>> I suspect it is something dumb, but is there something I need to be doing
>>>> to release internal references to some resource?
>>>>>
>>>>>
>>>>>
>>>>
>>>> Do you free frame you no longer need?
>>>> _______________________________________________
>>>>> ffmpeg-devel mailing list
>>>>> [email protected]
>>>>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>>> _______________________________________________
>>>> ffmpeg-devel mailing list
>>>> [email protected]
>>>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>>
>>
>> _______________________________________________
>> ffmpeg-devel mailing list
>> [email protected]
>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> _______________________________________________
> ffmpeg-devel mailing list
> [email protected]
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
_______________________________________________
ffmpeg-devel mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel