const std::vector<video_format_desc> format_descs = boost::assign::list_of
(video_format_desc(video_format::pal, 720, 576, 1024, 576, field_mode::upper, 25, 1, L"PAL", boost::assign::list_of<int>(3840) ))
(video_format_desc(video_format::ntsc, 720, 486, 720, 540, field_mode::lower, 30000, 1001, L"NTSC", boost::assign::list_of<int>(3204)(3202)(3204)(3202)(3204)))
- (video_format_desc(video_format::x576p2500, 720, 576, 720, 576, field_mode::progressive, 25, 1, L"576p2500", boost::assign::list_of<int>(3840) ))
+ (video_format_desc(video_format::x576p2500, 720, 576, 1024, 576, field_mode::progressive, 25, 1, L"576p2500", boost::assign::list_of<int>(3840) ))
(video_format_desc(video_format::x720p2398, 1280, 720, 1280, 720, field_mode::progressive, 24000, 1001, L"720p2398", boost::assign::list_of<int>(4004) ))
(video_format_desc(video_format::x720p2400, 1280, 720, 1280, 720, field_mode::progressive, 24, 1, L"720p2400", boost::assign::list_of<int>(4000) ))
(video_format_desc(video_format::x720p2500, 1280, 720, 1280, 720, field_mode::progressive, 25, 1, L"720p2500", boost::assign::list_of<int>(3840) ))
bool ChannelGridCommand::DoExecute()
{
- CASPAR_THROW_EXCEPTION(not_implemented());
-
- //int index = 1;
- //auto self = channels().back();
- //
- //std::vector<std::wstring> params;
- //params.push_back(L"SCREEN");
- //params.push_back(L"NAME");
- //params.push_back(L"Channel Grid Window");
- //auto screen = create_consumer(params);
-
- //self->output().add(screen);
-
- //BOOST_FOREACH(auto channel, channels())
- //{
- // if(channel != self)
- // {
- // auto producer = reroute::create_producer(self->frame_factory(), *channel);
- // self->stage().load(index, producer, false);
- // self->stage().play(index);
- // index++;
- // }
- //}
-
- //int n = channels().size()-1;
- //double delta = 1.0/static_cast<double>(n);
- //for(int x = 0; x < n; ++x)
- //{
- // for(int y = 0; y < n; ++y)
- // {
- // int index = x+y*n+1;
- // auto transform = [=](frame_transform transform) -> frame_transform
- // {
- // transform.image_transform.fill_translation[0] = x*delta;
- // transform.image_transform.fill_translation[1] = y*delta;
- // transform.image_transform.fill_scale[0] = delta;
- // transform.image_transform.fill_scale[1] = delta;
- // transform.image_transform.clip_translation[0] = x*delta;
- // transform.image_transform.clip_translation[1] = y*delta;
- // transform.image_transform.clip_scale[0] = delta;
- // transform.image_transform.clip_scale[1] = delta;
- // return transform;
- // };
- // self->stage().apply_transform(index, transform);
- // }
- //}
-
- //return true;
+ int index = 1;
+ auto self = channels().back().channel;
+
+ std::vector<std::wstring> params;
+ params.push_back(L"SCREEN");
+ params.push_back(L"0");
+ params.push_back(L"NAME");
+ params.push_back(L"Channel Grid Window");
+ auto screen = create_consumer(params);
+
+ self->output().add(screen);
+
+ BOOST_FOREACH(auto channel, channels())
+ {
+ if(channel.channel != self)
+ {
+ auto producer = reroute::create_producer(*channel.channel);
+ self->stage().load(index, producer, false);
+ self->stage().play(index);
+ index++;
+ }
+ }
+
+ int n = channels().size()-1;
+ double delta = 1.0/static_cast<double>(n);
+ for(int x = 0; x < n; ++x)
+ {
+ for(int y = 0; y < n; ++y)
+ {
+ int index = x+y*n+1;
+ auto transform = [=](frame_transform transform) -> frame_transform
+ {
+ transform.image_transform.fill_translation[0] = x*delta;
+ transform.image_transform.fill_translation[1] = y*delta;
+ transform.image_transform.fill_scale[0] = delta;
+ transform.image_transform.fill_scale[1] = delta;
+ transform.image_transform.clip_translation[0] = x*delta;
+ transform.image_transform.clip_translation[1] = y*delta;
+ transform.image_transform.clip_scale[0] = delta;
+ transform.image_transform.clip_scale[1] = delta;
+ return transform;
+ };
+ self->stage().apply_transform(index, transform);
+ }
+ }
+
+ return true;
}
bool CallCommand::DoExecute()