]> git.sesse.net Git - casparcg/blobdiff - modules/bluefish/consumer/bluefish_consumer.cpp
- Refactored so that consumers get the input channel_layout at initialization, instea...
[casparcg] / modules / bluefish / consumer / bluefish_consumer.cpp
index b6ed886de681473606074cc4ff90b6fa35de6f63..aa354394429b853cc3412091ed601dc05fecc6c9 100644 (file)
@@ -263,39 +263,17 @@ public:
                if(embedded_audio_)\r
                {\r
                        auto src_view = frame->multichannel_view();\r
+                       auto frame_audio = core::audio_32_to_24(\r
+                                       core::get_rearranged_and_mixed(\r
+                                                       src_view,\r
+                                                       channel_layout_,\r
+                                                       channel_layout_.num_channels));\r
+                       encode_hanc(\r
+                                       reinterpret_cast<BLUE_UINT32*>(reserved_frames_.front()->hanc_data()),\r
+                                       frame_audio.data(),\r
+                                       src_view.num_samples(),\r
+                                       channel_layout_.num_channels);\r
 \r
-                       if (core::needs_rearranging(src_view, channel_layout_, channel_layout_.num_channels))\r
-                       {\r
-                               std::vector<int32_t> resulting_audio_data;\r
-                               resulting_audio_data.resize(src_view.num_samples() * channel_layout_.num_channels, 0);\r
-\r
-                               auto dest_view = core::make_multichannel_view<int32_t>(\r
-                                               resulting_audio_data.begin(), \r
-                                               resulting_audio_data.end(),\r
-                                               channel_layout_);\r
-\r
-                               core::rearrange_or_rearrange_and_mix(\r
-                                               src_view,\r
-                                               dest_view,\r
-                                               core::default_mix_config_repository());\r
-\r
-                               auto frame_audio = core::audio_32_to_24(resulting_audio_data);\r
-                               encode_hanc(\r
-                                               reinterpret_cast<BLUE_UINT32*>(reserved_frames_.front()->hanc_data()),\r
-                                               frame_audio.data(),\r
-                                               src_view.num_samples(),\r
-                                               channel_layout_.num_channels);\r
-                       }\r
-                       else\r
-                       {\r
-                               auto frame_audio = core::audio_32_to_24(frame->audio_data());\r
-                               encode_hanc(\r
-                                               reinterpret_cast<BLUE_UINT32*>(reserved_frames_.front()->hanc_data()),\r
-                                               frame_audio.data(),\r
-                                               src_view.num_samples(),\r
-                                               channel_layout_.num_channels);\r
-                       }\r
-                                                               \r
                        blue_->system_buffer_write_async(const_cast<uint8_t*>(reserved_frames_.front()->image_data()), \r
                                                                                        reserved_frames_.front()->image_size(), \r
                                                                                        nullptr, \r
@@ -403,7 +381,10 @@ public:
 \r
        // frame_consumer\r
        \r
-       virtual void initialize(const core::video_format_desc& format_desc, int channel_index) override\r
+       virtual void initialize(\r
+                       const core::video_format_desc& format_desc,\r
+                       const core::channel_layout& audio_channel_layout,\r
+                       int channel_index) override\r
        {\r
                consumer_.reset(new bluefish_consumer(\r
                                format_desc,\r