Re: [FFmpeg-devel] avfilter_graph Question
Dana 14. 10. 2015. 17:36 osoba "Grady Player" < grady.pla...@verizondigitalmedia.com> napisala je: > > Currently using: > > commit af5917698bd44f136fd0ff00a9e5f8b5f92f2d58 > Author: Michael Niedermayer> 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@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] avfilter_graph Question
Yes, sorry this was omitted - after I am done I call: av_frame_free(); it seems to be something that is internally referenced by the graph... On Oct 14, 2015, at 10:50 AM, Paul B Maholwrote: > Dana 14. 10. 2015. 17:36 osoba "Grady Player" < > grady.pla...@verizondigitalmedia.com> napisala je: >> >> Currently using: >> >> commit af5917698bd44f136fd0ff00a9e5f8b5f92f2d58 >> Author: Michael Niedermayer >> 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@ffmpeg.org >> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel > ___ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] avfilter_graph Question
On Wed, Oct 14, 2015 at 4:13 PM, Grady Playerwrote: > 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 > wrote: > >> Yes, sorry this was omitted - after I am done I call: >> >> av_frame_free(); >> >> it seems to be something that is internally referenced by the graph... >> >> >> On Oct 14, 2015, at 10:50 AM, Paul B Mahol wrote: >> >>> Dana 14. 10. 2015. 17:36 osoba "Grady Player" < >>> grady.pla...@verizondigitalmedia.com> napisala je: Currently using: commit af5917698bd44f136fd0ff00a9e5f8b5f92f2d58 Author: Michael Niedermayer 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@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel >>> ___ >>> ffmpeg-devel mailing list >>> ffmpeg-devel@ffmpeg.org >>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel >> > > ___ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] avfilter_graph Question
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.. -Grady On Oct 14, 2015, at 11:50 AM, Grady Playerwrote: > Yes, sorry this was omitted - after I am done I call: > > av_frame_free(); > > it seems to be something that is internally referenced by the graph... > > > On Oct 14, 2015, at 10:50 AM, Paul B Mahol wrote: > >> Dana 14. 10. 2015. 17:36 osoba "Grady Player" < >> grady.pla...@verizondigitalmedia.com> napisala je: >>> >>> Currently using: >>> >>> commit af5917698bd44f136fd0ff00a9e5f8b5f92f2d58 >>> Author: Michael Niedermayer >>> 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@ffmpeg.org >>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel >> ___ >> ffmpeg-devel mailing list >> ffmpeg-devel@ffmpeg.org >> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel > ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] avfilter_graph Question
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 Ajjanagaddewrote: > On Wed, Oct 14, 2015 at 4:13 PM, Grady Player > 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 >> wrote: >> >>> Yes, sorry this was omitted - after I am done I call: >>> >>> av_frame_free(); >>> >>> it seems to be something that is internally referenced by the graph... >>> >>> >>> On Oct 14, 2015, at 10:50 AM, Paul B Mahol wrote: >>> Dana 14. 10. 2015. 17:36 osoba "Grady Player" < grady.pla...@verizondigitalmedia.com> napisala je: > > Currently using: > > commit af5917698bd44f136fd0ff00a9e5f8b5f92f2d58 > Author: Michael Niedermayer > 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@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel >>> >> >> ___ >> ffmpeg-devel mailing list >> ffmpeg-devel@ffmpeg.org >> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel > ___ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] avfilter_graph Question
On Wed, Oct 14, 2015 at 4:48 PM, Grady Playerwrote: > 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) Must have been the av_warn_unused_result I added recently - no need to worry about that: it is really for user's benefit so that they check the return codes correctly (GCC should emit a -Wunused-result error when the return code is not used/checked). I will look into the docs soon: there is some difference, "add a frame" and "add frame data" are IMO clearly different things. Any concrete rewordings based on your experience are welcome. > > 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 wrote: > >> On Wed, Oct 14, 2015 at 4:13 PM, Grady Player >> 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 >>> wrote: >>> Yes, sorry this was omitted - after I am done I call: av_frame_free(); it seems to be something that is internally referenced by the graph... On Oct 14, 2015, at 10:50 AM, Paul B Mahol wrote: > Dana 14. 10. 2015. 17:36 osoba "Grady Player" < > grady.pla...@verizondigitalmedia.com> napisala je: >> >> Currently using: >> >> commit af5917698bd44f136fd0ff00a9e5f8b5f92f2d58 >> Author: Michael Niedermayer >> 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@ffmpeg.org >> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel > ___ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel >>> >>> ___ >>> ffmpeg-devel mailing list >>> ffmpeg-devel@ffmpeg.org >>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel >> ___ >> ffmpeg-devel mailing list >> ffmpeg-devel@ffmpeg.org >> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > ___ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel