X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fbluefish%2Fconsumer%2Fbluefish_consumer.cpp;h=4f5c9baf77dbdd97a1f54f187fe87b807e9cfe60;hb=2f7c45b322562aac6436ed2a7fccbe0246190e62;hp=04636b21630561998bfeaf5b3b92341426ebec38;hpb=6016fd682b267d2886babd51b1faa9cdd1812d54;p=casparcg diff --git a/modules/bluefish/consumer/bluefish_consumer.cpp b/modules/bluefish/consumer/bluefish_consumer.cpp index 04636b216..4f5c9baf7 100644 --- a/modules/bluefish/consumer/bluefish_consumer.cpp +++ b/modules/bluefish/consumer/bluefish_consumer.cpp @@ -34,6 +34,7 @@ #include #include +#include #include @@ -207,7 +208,7 @@ public: void schedule_next_video(const safe_ptr& frame) { - static std::vector silence(MAX_HANC_BUFFER_SIZE, 0); + static std::vector silence(MAX_HANC_BUFFER_SIZE, 0); executor_.begin_invoke([=] { @@ -241,13 +242,10 @@ public: if(embedded_audio_) { - auto frame_audio_data = frame->audio_data().empty() ? silence.data() : const_cast(frame->audio_data().begin()); - - std::vector frame_audio_data16(audio_samples); - for(size_t n = 0; n < frame_audio_data16.size(); ++n) - frame_audio_data16[n] = (frame_audio_data[n] >> 16) & 0xffff; + auto frame_audio = core::audio_32_to_16(frame->audio_data()); + auto frame_audio_data = frame_audio.size() != audio_samples ? silence.data() : frame_audio.data(); - encode_hanc(reinterpret_cast(reserved_frames_.front()->hanc_data()), frame_audio_data16.data(), audio_samples, audio_nchannels); + encode_hanc(reinterpret_cast(reserved_frames_.front()->hanc_data()), frame_audio_data, audio_samples, audio_nchannels); blue_->system_buffer_write_async(const_cast(reserved_frames_.front()->image_data()), reserved_frames_.front()->image_size(),