]> git.sesse.net Git - casparcg/commitdiff
2.1.0: -ffmpeg_producer: Another SEEK update.
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Tue, 20 Mar 2012 00:36:00 +0000 (00:36 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Tue, 20 Mar 2012 00:36:00 +0000 (00:36 +0000)
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches/2.1.0@2692 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d

modules/ffmpeg/producer/ffmpeg_producer.cpp

index b557423ca36131b3cdaa6484b6e6420c0a17ab79..3e11dc80f3b49802b51844789d0eca02cc306f58 100644 (file)
@@ -175,8 +175,6 @@ public:
                graph_->set_value("frame-time", frame_timer.elapsed()*format_desc_.fps*0.5);\r
                event_subject_  << monitor::event("profiler/time") % frame_timer.elapsed() % (1.0/format_desc_.fps);                    \r
                                                                \r
-               graph_->set_text(print());\r
-\r
                event_subject_  << monitor::event("file/time")                  % monitor::duration(file_frame_number()/fps_) \r
                                                                                                                                % monitor::duration(file_nb_frames()/fps_)\r
                                                << monitor::event("file/frame")                 % static_cast<int32_t>(file_frame_number())\r
@@ -348,21 +346,19 @@ public:
                muxer_.clear();\r
                \r
                // TODO: Fix HACK.\r
-\r
-               // BEGIN HACK: There is no way to flush yadif. Need to poll 2 frames.\r
-               if(target > 0)\r
-                       target -= 1;    \r
-               // END HACK\r
-\r
+               \r
                target = std::min(target, file_nb_frames());\r
 \r
                input_.seek(target);\r
                muxer_.clear();\r
                \r
                // BEGIN HACK: There is no way to flush yadif. Need to poll 2 frames.\r
-               decode_next_frame();\r
-               if(!muxer_.empty())\r
-                       muxer_.pop();\r
+               for(int n = 0; n < 25 && file_frame_number() != target+1; ++n)\r
+               {\r
+                       decode_next_frame();\r
+                       if(!muxer_.empty())\r
+                               muxer_.pop();\r
+               }\r
                // END HACK\r
 \r
                decode_next_frame();\r
@@ -399,6 +395,7 @@ public:
                        muxer_.push(video);\r
                        muxer_.push(audio);\r
                }\r
+               graph_->set_text(print());\r
        }\r
 };\r
 \r