- switch(display_mode_)
- {
- case display_mode::simple:
- case display_mode::deinterlace_bob:
- case display_mode::deinterlace:
- {
- frame_buffer_.push(core::draw_frame(std::move(frame1)));
- break;
- }
- case display_mode::interlace:
- case display_mode::deinterlace_bob_reinterlace:
- {
- auto frame2 = pop_video();
-
- frame_buffer_.push(core::draw_frame::interlace(
- core::draw_frame(std::move(frame1)),
- core::draw_frame(std::move(frame2)),
- format_desc_.field_mode));
- break;
- }
- case display_mode::duplicate:
- {
- //boost::range::push_back(frame1.audio_data(), pop_audio());
-
- auto second_audio_frame = core::mutable_frame(
- std::vector<array<std::uint8_t>>(),
- pop_audio(),
- frame1.stream_tag(),
- core::pixel_format_desc(),
- channel_layout_);
- auto first_frame = core::draw_frame(std::move(frame1));
- auto muted_first_frame = core::draw_frame(first_frame);
- muted_first_frame.transform().audio_transform.volume = 0;
- auto second_frame = core::draw_frame({ core::draw_frame(std::move(second_audio_frame)), muted_first_frame });
-
- // Same video but different audio.
- frame_buffer_.push(first_frame);
- frame_buffer_.push(second_frame);
- break;
- }
- case display_mode::half:
- {
- pop_video(); // Throw away
-
- frame_buffer_.push(core::draw_frame(std::move(frame1)));
- break;
- }
- default:
- CASPAR_THROW_EXCEPTION(invalid_operation());
- }