videohubctrl can be used to control Blackmagic Design Videohub SDI router device over the network.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

display.c 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. /*
  2. * === Display functions ===
  3. *
  4. * Blackmagic Design Videohub control application
  5. * Copyright (C) 2014 Unix Solutions Ltd.
  6. * Written by Georgi Chorbadzhiyski
  7. *
  8. * Released under MIT license.
  9. * See LICENSE-MIT.txt for license terms.
  10. *
  11. */
  12. #include <stdio.h>
  13. #include "data.h"
  14. #include "display.h"
  15. static void printf_line(int len) {
  16. int i;
  17. printf(" ");
  18. for (i = 0; i < len; i++)
  19. printf("-");
  20. printf("\n");
  21. }
  22. void print_device_info(struct videohub_data *d) {
  23. int len = 59;
  24. printf("Device info\n");
  25. printf_line(len);
  26. printf(" | %-26s | %-26s |\n", "Device address", d->dev_host);
  27. printf(" | %-26s | %-26s |\n", "Device port", d->dev_port);
  28. printf(" | %-26s | %-26s |\n", "Model name", d->device.model_name);
  29. printf(" | %-26s | %-26s |\n", "Unique ID", d->device.unique_id);
  30. printf(" | %-26s | %-26s |\n", "Protocol", d->device.protocol_ver);
  31. printf(" | %-26s | %-26u |\n", "Video inputs", d->device.num_video_inputs);
  32. printf(" | %-26s | %-26u |\n", "Video outputs", d->device.num_video_outputs);
  33. if (d->device.num_serial_ports)
  34. printf(" | %-26s | %-26u |\n", "Serial ports", d->device.num_serial_ports);
  35. if (d->device.num_video_processing_units)
  36. printf(" | %-26s | %-26u |\n", "Video processing units", d->device.num_video_processing_units);
  37. if (d->device.num_video_monitoring_outputs)
  38. printf(" | %-26s | %-26u |\n", "Video monitoring outputs", d->device.num_video_monitoring_outputs);
  39. printf_line(len);
  40. printf("\n");
  41. }
  42. void print_device_video_inputs(struct videohub_data *d) {
  43. unsigned int i, len = 33;
  44. if (!d->device.num_video_inputs)
  45. return;
  46. printf("Video inputs\n");
  47. printf_line(len);
  48. printf(" | ## | %-24s |\n", "Video input name");
  49. printf_line(len);
  50. for(i = 0; i < d->device.num_video_inputs; i++) {
  51. printf(" | %2d | %-24s |\n",
  52. i + 1,
  53. d->inputs[i].name
  54. );
  55. }
  56. printf_line(len);
  57. printf("\n");
  58. }
  59. void print_device_video_outputs(struct videohub_data *d) {
  60. unsigned int i, len = 64;
  61. if (!d->device.num_video_outputs)
  62. return;
  63. printf("Video outputs\n");
  64. printf_line(len);
  65. printf(" | ## | x | %-24s | %-24s |\n", "Video output name", "Connected video input");
  66. printf_line(len);
  67. for(i = 0; i < d->device.num_video_outputs; i++) {
  68. printf(" | %2d | %c | %-24s | %-24s |\n",
  69. i + 1,
  70. d->outputs[i].locked ? (d->outputs[i].locked_other ? 'L' : 'O') : ' ',
  71. d->outputs[i].name,
  72. d->inputs[d->outputs[i].routed_to].name
  73. );
  74. }
  75. printf_line(len);
  76. printf("\n");
  77. }
  78. void print_device_backup(struct videohub_data *d) {
  79. unsigned int i;
  80. printf("videohubctrl \\\n");
  81. for(i = 0; i < d->device.num_video_inputs; i++)
  82. printf(" --vi-name %2d \"%s\" \\\n", i + 1, d->inputs[i].name);
  83. for(i = 0; i < d->device.num_video_outputs; i++)
  84. printf(" --vo-name %2d \"%s\" \\\n", i + 1, d->outputs[i].name);
  85. for(i = 0; i < d->device.num_video_outputs; i++)
  86. printf(" --vo-route %2d %2d \\\n", i + 1, d->outputs[i].routed_to + 1);
  87. for(i = 0; i < d->device.num_video_outputs; i++) {
  88. if (d->outputs[i].locked) {
  89. printf(" --vo-unlock %2d --vo-lock %2d%s\n", i + 1, i + 1,
  90. i + 1 < d->device.num_video_outputs ? " \\" : "");
  91. } else {
  92. printf(" --vo-unlock %2d%s\n", i + 1,
  93. i + 1 < d->device.num_video_outputs ? " \\" : "");
  94. }
  95. }
  96. printf("\n");
  97. }