[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