]> git.sesse.net Git - casparcg/commitdiff
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches...
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Thu, 24 Nov 2011 22:25:36 +0000 (22:25 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Thu, 24 Nov 2011 22:25:36 +0000 (22:25 +0000)
modules/ffmpeg/producer/input/input.cpp

index 42a285b55bb5b61a5f68d349ceb2211bfe38f646..1d75bf8ba1bf23ffdd6965966aa2ca699fccd604 100644 (file)
@@ -195,17 +195,7 @@ private:
 \r
                        if(loop_)\r
                        {\r
-                               int flags = AVSEEK_FLAG_BACKWARD;\r
-\r
-                               int vid_stream_index = av_find_best_stream(format_context_.get(), AVMEDIA_TYPE_VIDEO, -1, -1, 0, 0);\r
-                               if(vid_stream_index >= 0)\r
-                               {\r
-                                       auto codec_id = format_context_->streams[vid_stream_index]->codec->codec_id;\r
-                                       if(codec_id == CODEC_ID_VP6A || codec_id == CODEC_ID_VP6F || codec_id == CODEC_ID_VP6)\r
-                                               flags |= AVSEEK_FLAG_BYTE;\r
-                               }\r
-\r
-                               seek_frame(start_, flags);\r
+                               seek_frame(start_);\r
                                graph_->add_tag("seek");                \r
                                CASPAR_LOG(debug) << print() << " Looping.";                    \r
                        }       \r
@@ -251,24 +241,24 @@ private:
                return is_running_ && (buffer_size_ > MAX_BUFFER_SIZE || buffer_.size() > MAX_BUFFER_COUNT) && buffer_.size() > MIN_BUFFER_COUNT;\r
        }\r
 \r
-       void seek_frame(int64_t frame, int flags = 0)\r
+       void seek_frame(int64_t frame)\r
        {                       \r
                CASPAR_LOG(debug) << print() << " Seeking: " << frame;\r
 \r
-               flags |= AVSEEK_FLAG_FRAME;\r
-               //if(flags == AVSEEK_FLAG_BACKWARD)\r
-               //{\r
-               //      // Fix VP6 seeking\r
-               //      int vid_stream_index = av_find_best_stream(format_context_.get(), AVMEDIA_TYPE_VIDEO, -1, -1, 0, 0);\r
-               //      if(vid_stream_index >= 0)\r
-               //      {\r
-               //              auto codec_id = format_context_->streams[vid_stream_index]->codec->codec_id;\r
-               //              if(codec_id == CODEC_ID_VP6A || codec_id == CODEC_ID_VP6F || codec_id == CODEC_ID_VP6)\r
-               //                      flags |= AVSEEK_FLAG_BYTE;\r
-               //      }\r
-               //}\r
+               int flags = AVSEEK_FLAG_FRAME;\r
+               if(frame == 0)\r
+               {\r
+                       // Fix VP6 seeking\r
+                       int vid_stream_index = av_find_best_stream(format_context_.get(), AVMEDIA_TYPE_VIDEO, -1, -1, 0, 0);\r
+                       if(vid_stream_index >= 0)\r
+                       {\r
+                               auto codec_id = format_context_->streams[vid_stream_index]->codec->codec_id;\r
+                               if(codec_id == CODEC_ID_VP6A || codec_id == CODEC_ID_VP6F || codec_id == CODEC_ID_VP6)\r
+                                       flags = AVSEEK_FLAG_BYTE;\r
+                       }\r
+               }\r
                \r
-               THROW_ON_ERROR2(avformat_seek_file(format_context_.get(), default_stream_index_, std::max<int64_t>(0, frame-50), frame, frame+50, flags), print());             \r
+               THROW_ON_ERROR2(avformat_seek_file(format_context_.get(), default_stream_index_, std::numeric_limits<int64_t>::min(), frame, std::numeric_limits<int64_t>::max(), flags), print());             \r
 \r
                buffer_.push(flush_packet());\r
        }               \r