-/** Take an AVFrame and process it using our configured filters, returning a
- * set of Images. Caller handles memory management of the input frame.
- */
-list<pair<shared_ptr<Image>, int64_t> >
-FilterGraph::process (AVFrame* frame)
-{
- list<pair<shared_ptr<Image>, int64_t> > images;
-
- if (_copy) {
- images.push_back (make_pair (shared_ptr<Image> (new Image (frame)), av_frame_get_best_effort_timestamp (frame)));
- } else {
- if (av_buffersrc_write_frame (_buffer_src_context, frame) < 0) {
- throw DecodeError (N_("could not push buffer into filter chain."));
- }
-
- while (true) {
- if (av_buffersink_get_frame (_buffer_sink_context, _frame) < 0) {
- break;
- }
-
- images.push_back (make_pair (shared_ptr<Image> (new Image (_frame)), av_frame_get_best_effort_timestamp (_frame)));
- av_frame_unref (_frame);
- }