if (lua_isnumber(L, 2)) {
block->alternatives.emplace_back(new EffectBlueprint(LIVE_INPUT_YCBCR));
block->alternatives.emplace_back(new EffectBlueprint(LIVE_INPUT_YCBCR_WITH_DEINTERLACE));
+#ifdef HAVE_SRT
+ if (global_flags.srt_port >= 0) {
+ block->alternatives.emplace_back(new EffectBlueprint(LIVE_INPUT_YCBCR_PLANAR));
+ }
+#endif
#ifdef HAVE_CEF
} else if (luaL_testudata(L, 2, "HTMLInput")) {
block->alternatives.emplace_back(new EffectBlueprint(LIVE_INPUT_BGRA));
InputStateInfo info(input_state);
for (Block *block : blocks) {
if (block->is_input && block->signal_type_to_connect == Block::CONNECT_SIGNAL) {
- EffectType chosen_type = current_type(block);
- assert(chosen_type == LIVE_INPUT_YCBCR || chosen_type == LIVE_INPUT_YCBCR_WITH_DEINTERLACE);
int card_index = theme->map_signal_to_card(block->signal_to_connect);
if (info.last_interlaced[card_index]) {
+ assert(info.last_pixel_format[card_index] == bmusb::PixelFormat_8BitYCbCr ||
+ info.last_pixel_format[card_index] == bmusb::PixelFormat_10BitYCbCr);
block->currently_chosen_alternative = find_index_of(block, LIVE_INPUT_YCBCR_WITH_DEINTERLACE);
+ } else if (info.last_pixel_format[card_index] == bmusb::PixelFormat_8BitYCbCrPlanar) {
+ block->currently_chosen_alternative = find_index_of(block, LIVE_INPUT_YCBCR_PLANAR);
+ } else if (info.last_pixel_format[card_index] == bmusb::PixelFormat_8BitBGRA) {
+ block->currently_chosen_alternative = find_index_of(block, LIVE_INPUT_BGRA);
} else {
block->currently_chosen_alternative = find_index_of(block, LIVE_INPUT_YCBCR);
}
+ if (block->currently_chosen_alternative == -1) {
+ fprintf(stderr, "ERROR: Input connected to a video card pixel format that it was not ready for.\n");
+ abort();
+ }
}
}