- list<shared_ptr<Image> > images;
-
-
- if (av_buffersrc_write_frame (_buffer_src_context, frame) < 0) {
- throw DecodeError (N_("could not push buffer into filter chain."));
- }
-
- while (av_buffersink_read (_buffer_sink_context, 0)) {
- AVFilterBufferRef* filter_buffer;
- if (av_buffersink_get_buffer_ref (_buffer_sink_context, &filter_buffer, 0) < 0) {
- filter_buffer = 0;
+ 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 {
+ int r = av_buffersrc_write_frame (_buffer_src_context, frame);
+ if (r < 0) {
+ throw DecodeError (String::compose (N_("could not push buffer into filter chain (%1)."), r));