]> 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>
Fri, 14 Jan 2011 00:15:43 +0000 (00:15 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Fri, 14 Jan 2011 00:15:43 +0000 (00:15 +0000)
core/producer/ffmpeg/input.cpp

index 61f4c981c829b57eadcc2c4b1ed42bf74d8aef8c..d0ea022df87f1ffce74046c6be92fe2202007ba7 100644 (file)
@@ -143,14 +143,16 @@ public:
                        AVPacket tmp_packet;\r
                        safe_ptr<AVPacket> read_packet(&tmp_packet, av_free_packet);    \r
 \r
-                       if (av_read_frame(format_context_.get(), read_packet.get()) >= 0) // NOTE: read_packet is only valid until next call of av_safe_ptr<read_frame> or av_close_input_file\r
+                       if (av_read_frame(format_context_.get(), read_packet.get()) >= 0 && frame_count_ != 0) // NOTE: read_packet is only valid until next call of av_safe_ptr<read_frame> or av_close_input_file\r
                        {\r
                                auto packet = std::make_shared<aligned_buffer>(read_packet->data, read_packet->data + read_packet->size);\r
                                if(read_packet->stream_index == video_s_index_)                                                 \r
                                {\r
                                        buffer_size_ += packet->size();\r
                                        video_packet_buffer_.try_push(std::move(packet));       \r
-                                       frame_count_ = frame_count_ != 0 ? frame_count_ - 1 : 0;\r
+\r
+                                       if(frame_count_ > 0)\r
+                                               --frame_count_;\r
                                }\r
                                else if(read_packet->stream_index == audio_s_index_)    \r
                                {\r
@@ -166,6 +168,8 @@ public:
        bool reset_frame()\r
        {\r
                bool result = av_seek_frame(format_context_.get(), -1, start_frame_*AV_TIME_BASE, AVSEEK_FLAG_BACKWARD | AVSEEK_FLAG_ANY) >= 0;\r
+               if(!result)\r
+                       CASPAR_LOG(warning) << "Failed to seek frame.";\r
                frame_count_ = end_frame_;\r
                return result;\r
        }\r