[FFmpeg-devel] avfilter_graph Question
Grady Player
grady.player at verizondigitalmedia.com
Wed Oct 14 22:48:27 CEST 2015
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 <gajjanag at mit.edu> wrote:
> On Wed, Oct 14, 2015 at 4:13 PM, Grady Player
> <grady.player at verizondigitalmedia.com> 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 <grady.player at verizondigitalmedia.com> 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 <onemda at gmail.com> wrote:
>>>
>>>> Dana 14. 10. 2015. 17:36 osoba "Grady Player" <
>>>> grady.player at verizondigitalmedia.com> napisala je:
>>>>>
>>>>> Currently using:
>>>>>
>>>>> commit af5917698bd44f136fd0ff00a9e5f8b5f92f2d58
>>>>> Author: Michael Niedermayer <michaelni at gmx.at>
>>>>> 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
>>>>> ffmpeg-devel at ffmpeg.org
>>>>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>>> _______________________________________________
>>>> ffmpeg-devel mailing list
>>>> ffmpeg-devel at ffmpeg.org
>>>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>>
>>
>> _______________________________________________
>> ffmpeg-devel mailing list
>> ffmpeg-devel at ffmpeg.org
>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
More information about the ffmpeg-devel
mailing list