]> 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>
Mon, 3 Jan 2011 14:35:04 +0000 (14:35 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Mon, 3 Jan 2011 14:35:04 +0000 (14:35 +0000)
core/core.vcxproj
core/processor/draw_frame.cpp
core/producer/flash/flash_producer.cpp
shell/shell.vcxproj
shell/shell.vcxproj.filters

index dc303fc699091cfcecabf0039535abf8274c0d18..801a97000f1a2383886320b506f4163016dcbf96 100644 (file)
@@ -20,7 +20,7 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <WholeProgramOptimization>true</WholeProgramOptimization>\r
+    <WholeProgramOptimization>false</WholeProgramOptimization>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
index d1aa708558d85d10db4ccedf8fc2f75e9e0394e5..ddc53532f32999dfaba161c14fbb60331d4ff035 100644 (file)
@@ -92,7 +92,7 @@ void draw_frame::alpha(double value){impl_->image_transform_.alpha = value;}
 \r
 safe_ptr<draw_frame> draw_frame::interlace(const safe_ptr<draw_frame>& frame1, const safe_ptr<draw_frame>& frame2, video_mode::type mode)\r
 {                      \r
-       if(frame1 == frame2)\r
+       if(frame1 == frame2 || mode == video_mode::progressive)\r
                return frame1;\r
 \r
        auto my_frame1 = make_safe<draw_frame>(frame1);\r
index 03d788170dfdc85fbcd6abe0cfeee90fe4ac9eda..07c2848fb66a89356c85366941444268a15d5c43 100644 (file)
@@ -46,7 +46,7 @@ extern __declspec(selectany) CAtlModule* _pAtlModule = &_AtlModule;
 class flash_renderer\r
 {\r
 public:\r
-       flash_renderer() : last_frame_(draw_frame::empty()), current_frame_(draw_frame::empty()), bmp_data_(nullptr), ax_(nullptr) {}\r
+       flash_renderer() : tail_(draw_frame::empty()), head_(draw_frame::empty()), bmp_data_(nullptr), ax_(nullptr) {}\r
 \r
        ~flash_renderer()\r
        {               \r
@@ -138,22 +138,24 @@ public:
                \r
                        auto frame = frame_processor_->create_frame();\r
                        std::copy_n(bmp_data_, format_desc_.size, frame->image_data().begin());\r
-                       current_frame_ = frame;\r
+                       head_ = frame;\r
                }                               \r
-               frame_buffer_.try_push(current_frame_);\r
+               if(!frame_buffer_.try_push(head_))\r
+                       CASPAR_LOG(trace) << print() << " overflow";\r
        }\r
                \r
-       safe_ptr<draw_frame> get_frame(video_mode::type mode)\r
+       safe_ptr<draw_frame> get_frame()\r
        {               \r
-               frame_buffer_.try_pop(last_frame_);\r
-               auto frame1 = last_frame_;\r
-               auto frame2 = frame1;\r
-               if(mode != video_mode::progressive && frame_buffer_.size() > frame_buffer_.capacity()/2) // Regulate between interlaced and progressive\r
+               if(!frame_buffer_.try_pop(tail_))\r
+                       CASPAR_LOG(trace) << print() << " underflow";\r
+\r
+               auto frame = tail_;\r
+               if(frame_buffer_.size() > frame_buffer_.capacity()/2) // Regulate between interlaced and progressive\r
                {\r
-                       frame_buffer_.try_pop(last_frame_);\r
-                       frame2 = last_frame_;\r
+                       frame_buffer_.try_pop(tail_);\r
+                       frame = draw_frame::interlace(frame, tail_, format_desc_.mode);\r
                }\r
-               return draw_frame::interlace(frame1, frame2, mode);\r
+               return frame;\r
        }\r
        \r
        void stop()\r
@@ -177,8 +179,8 @@ private:
 \r
        CComObject<FlashAxContainer>* ax_;\r
        tbb::concurrent_bounded_queue<safe_ptr<draw_frame>> frame_buffer_;      \r
-       safe_ptr<draw_frame> last_frame_;\r
-       safe_ptr<draw_frame> current_frame_;\r
+       safe_ptr<draw_frame> tail_;\r
+       safe_ptr<draw_frame> head_;\r
 \r
        tbb::concurrent_queue<std::wstring> params_;\r
 };\r
@@ -237,7 +239,7 @@ struct flash_producer::implementation
 \r
        virtual safe_ptr<draw_frame> receive()\r
        {\r
-               return renderer_->get_frame(frame_processor_->get_video_format_desc().mode);\r
+               return renderer_->get_frame();\r
        }\r
        \r
        boost::thread thread_;\r
index 61643c975d44f2ffa7e90ef48d1473a2e6c3c2c5..c75650d2368b2bcef4671db6c951b71e53312e3f 100644 (file)
@@ -29,6 +29,7 @@
       <SubType>Designer</SubType>\r
     </None>\r
     <None Include="My Amplifier Results\r003hs\r003hs.ampl" />\r
+    <None Include="My Amplifier Results\r004hs\r004hs.ampl" />\r
     <None Include="My Amplifier Results\r006hs\r006hs.ampl" />\r
     <None Include="My Amplifier Results\r007cc\r007cc.ampl" />\r
     <None Include="My Amplifier Results\r008lw\r008lw.ampl" />\r
index 9e6f179f58772e1620634cf3fd4b0d2beb479137..f042f0d77453d4c33bbd7f0fd6525bff44b7d8ce 100644 (file)
@@ -23,6 +23,9 @@
     <None Include="My Amplifier Results\r003hs\r003hs.ampl">\r
       <Filter>My Amplifier Results</Filter>\r
     </None>\r
+    <None Include="My Amplifier Results\r004hs\r004hs.ampl">\r
+      <Filter>My Amplifier Results</Filter>\r
+    </None>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <Filter Include="My Amplifier Results">\r