- display_mode_ = auto_mode_ ? get_display_mode(video_frame->get_type(), in_fps_, format_desc_.mode, format_desc_.fps) : display_mode::simple;\r
- CASPAR_LOG(info) << L"display_mode: " << display_mode::print(display_mode_);\r
- } \r
+ if(auto_transcode_)\r
+ {\r
+ auto in_mode = get_mode(*video_frame);\r
+ display_mode_ = get_display_mode(in_mode, in_fps_, format_desc_.field_mode, format_desc_.fps);\r
+ \r
+ if(display_mode_ == display_mode::simple && in_mode != core::field_mode::progressive && format_desc_.field_mode != core::field_mode::progressive && video_frame->height != static_cast<int>(format_desc_.height))\r
+ display_mode_ = display_mode::deinterlace_bob_reinterlace; // The frame will most likely be scaled, we need to deinterlace->reinterlace \r
+ \r
+ if(display_mode_ == display_mode::deinterlace)\r
+ filter_ = filter(L"YADIF=0:-1");\r
+ else if(display_mode_ == display_mode::deinterlace_bob || display_mode_ == display_mode::deinterlace_bob_reinterlace)\r
+ filter_ = filter(L"YADIF=1:-1");\r
+ }\r
+ else\r
+ display_mode_ = display_mode::simple;\r
+\r
+ if(display_mode_ == display_mode::invalid)\r
+ {\r
+ CASPAR_LOG(warning) << L"[frame_muxer] Failed to detect display-mode.";\r
+ display_mode_ = display_mode::simple;\r
+ }\r
+\r
+ CASPAR_LOG(info) << "[frame_muxer] " << display_mode::print(display_mode_);\r
+ }\r
+\r
+ \r
+ if(hints & core::frame_producer::ALPHA_HINT)\r
+ video_frame->format = make_alpha_format(video_frame->format);\r
+ \r
+ auto format = video_frame->format;\r
+ if(video_frame->format == CASPAR_PIX_FMT_LUMA) // CASPAR_PIX_FMT_LUMA is not valid for filter, change it to GRAY8\r
+ video_frame->format = PIX_FMT_GRAY8;\r