]> 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, 29 Jul 2011 11:45:51 +0000 (11:45 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Fri, 29 Jul 2011 11:45:51 +0000 (11:45 +0000)
core/producer/frame_muxer.cpp
modules/ffmpeg/producer/audio/audio_decoder.cpp
modules/ffmpeg/producer/ffmpeg_producer.cpp
modules/ffmpeg/producer/video/video_decoder.cpp

index 9b8520c163173c23b2b365273e71e60e0d024270..f6adc149c1af1edb010c02249df32538d1936e4b 100644 (file)
@@ -147,7 +147,7 @@ struct frame_muxer::implementation
                                CASPAR_LOG(info) << L"frame_muxer: Truncating " << truncate << L" audio samples.";\r
                        }\r
 \r
-                       CASPAR_LOG(debug) << L"audio-chunk-count: " << audio_sample_count_;\r
+                       CASPAR_LOG(debug) << L"audio-chunk-count: " << audio_sample_count_/format_desc_.audio_samples_per_frame;\r
                        audio_sample_count_ = 0;\r
                        return;\r
                }\r
index 0441f023321ae39fdeb9cb38f053640615872322..94329b7a30ab9ecc72dfaafca8c1e270caba1b0e 100644 (file)
@@ -104,13 +104,16 @@ public:
                if(!codec_context_)\r
                        result.push_back(std::make_shared<std::vector<int16_t>>(format_desc_.audio_samples_per_frame, 0));\r
                else if(!packets_.empty())\r
-               {                       \r
-                       if(packets_.front())            \r
+               {               \r
+                       auto packet = std::move(packets_.front());\r
+                       packets_.pop();\r
+\r
+                       if(packet)              \r
                        {\r
                                AVPacket pkt;\r
                                av_init_packet(&pkt);\r
-                               pkt.data = packets_.front()->data;\r
-                               pkt.size = packets_.front()->size;\r
+                               pkt.data = packet->data;\r
+                               pkt.size = packet->size;\r
 \r
                                for(int n = 0; n < 64 && pkt.size > 0; ++n)\r
                                        result.push_back(decode(pkt));\r
@@ -120,8 +123,6 @@ public:
                                avcodec_flush_buffers(codec_context_.get());\r
                                result.push_back(nullptr);\r
                        }\r
-\r
-                       packets_.pop();\r
                }\r
 \r
                return result;\r
index 3dd074ccbf3defa32cc62b09c16211911bb93920..21618aa991a9b90d464566a00bec99dc7f1dc92b 100644 (file)
@@ -134,8 +134,6 @@ public:
 \r
        void decode_frame()\r
        {\r
-               bool flush = false;\r
-\r
                for(int n = 0; n < 32 && ((muxer_.video_frames() < 2 && !video_decoder_.ready()) ||     (muxer_.audio_chunks() < 2 && !audio_decoder_.ready())); ++n) \r
                {\r
                        std::shared_ptr<AVPacket> pkt;\r
@@ -143,8 +141,6 @@ public:
                        {\r
                                video_decoder_.push(pkt);\r
                                audio_decoder_.push(pkt);\r
-\r
-                               flush = !pkt;\r
                        }\r
                }\r
 \r
index e55de932ef875d338ebc70afea2086884e496bb2..6b87f4a1368887e0e50cb6f5bd39f07e5757c99f 100644 (file)
@@ -183,7 +183,11 @@ public:
                }\r
 \r
                if(frame_finished != 0) \r
+               {\r
                        av_frames.push_back(make_safe(decoded_frame));\r
+                       if(decoded_frame->repeat_pict != 0)\r
+                               CASPAR_LOG(warning) << "video_decoder: repeat_pict not implemented.";\r
+               }\r
 \r
                return frame_finished != 0;\r
        }\r