From 34420e565fdeb9b862d59835c212f44ebdda8d5b Mon Sep 17 00:00:00 2001 From: ronag Date: Fri, 2 Sep 2011 18:05:13 +0000 Subject: [PATCH] 2.0. bluefish_consumer: 24 bit audio. git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches/2.0.0.2@1325 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d --- core/mixer/audio/audio_util.h | 12 ++++++++++++ modules/bluefish/consumer/bluefish_consumer.cpp | 6 +++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/core/mixer/audio/audio_util.h b/core/mixer/audio/audio_util.h index 4f45efa42..0cbebc3d1 100644 --- a/core/mixer/audio/audio_util.h +++ b/core/mixer/audio/audio_util.h @@ -19,4 +19,16 @@ static std::vector audio_32_to_16(const boost::iterator_range return audio16; } +static std::vector audio_32_to_24(const boost::iterator_range& input) +{ + std::vector audio24(input.size()*3+16); + auto audio32_ptr = reinterpret_cast(input.begin()); + auto audio24_ptr = reinterpret_cast(audio24.data()); + auto size = input.size(); + for(int n = 0; n < size; ++n) + *reinterpret_cast(audio24_ptr + n*3) = *(audio32_ptr + n) >> 8; + audio24.resize(input.size()); + return audio24; +} + }} \ No newline at end of file diff --git a/modules/bluefish/consumer/bluefish_consumer.cpp b/modules/bluefish/consumer/bluefish_consumer.cpp index 4f5c9baf7..c52a0b50f 100644 --- a/modules/bluefish/consumer/bluefish_consumer.cpp +++ b/modules/bluefish/consumer/bluefish_consumer.cpp @@ -208,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([=] { @@ -242,7 +242,7 @@ public: if(embedded_audio_) { - auto frame_audio = core::audio_32_to_16(frame->audio_data()); + auto frame_audio = core::audio_32_to_24(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_data, audio_samples, audio_nchannels); @@ -289,7 +289,7 @@ public: void encode_hanc(BLUE_UINT32* hanc_data, void* audio_data, size_t audio_samples, size_t audio_nchannels) { - const auto sample_type = AUDIO_CHANNEL_16BIT | AUDIO_CHANNEL_LITTLEENDIAN; + const auto sample_type = AUDIO_CHANNEL_24BIT | AUDIO_CHANNEL_LITTLEENDIAN; const auto emb_audio_flag = blue_emb_audio_enable | blue_emb_audio_group1_enable; hanc_stream_info_struct hanc_stream_info; -- 2.39.2