AcStreamVideoOut.Mod 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. module AcStreamVideoOut; (** AUTHOR ""; PURPOSE ""; *)
  2. import
  3. Channels;
  4. const
  5. CmdSetEnabled = 0;
  6. CmdSetHorizActiveSize = 1;
  7. CmdSetHorizFrontPorch = 2;
  8. CmdSetHorizSyncWidth = 3;
  9. CmdSetHorizBackPorch = 4;
  10. CmdSetHorizSyncPolarity = 5;
  11. CmdSetVertActiveSize = 6;
  12. CmdSetVertFrontPorch = 7;
  13. CmdSetVertSyncWidth = 8;
  14. CmdSetVertBackPorch = 9;
  15. CmdSetVertSyncPolarity = 10;
  16. type
  17. Controller* = record
  18. cfg-: port out; (** configuration port *)
  19. enabled-: boolean; (** TRUE if the PWM output is enabled *)
  20. pixelClock-: real; (** pixel clock in Hz *)
  21. horizActiveSize-: longint;
  22. horizFrontPorch-: longint;
  23. horizSyncWidth-: longint;
  24. horizBackPorch-: longint;
  25. horizSyncPolarity-: boolean;
  26. vertActiveSize-: longint;
  27. vertFrontPorch-: longint;
  28. vertSyncWidth-: longint;
  29. vertBackPorch-: longint;
  30. vertSyncPolarity-: boolean;
  31. end;
  32. procedure InitController*(var ctl: Controller; cfg: port out; pixelClock: real);
  33. begin
  34. ctl.cfg := cfg;
  35. ctl.pixelClock := pixelClock;
  36. Enable(ctl,false);
  37. (*
  38. (* setup default video output settings *)
  39. SetHorizActiveSize(ctl,1024);z
  40. SetHorizFrontPorch(ctl,24);
  41. SetHorizSyncWidth(ctl,136);
  42. SetHorizBackPorch(ctl,160);
  43. SetHorizSyncPolarity(ctl,true);
  44. SetVertActiveSize(ctl,768);
  45. SetVertFrontPorch(ctl,3);
  46. SetVertSyncWidth(ctl,6);
  47. SetVertBackPorch(ctl,29);
  48. SetVertSyncPolarity(ctl,true);
  49. *)
  50. end InitController;
  51. (**
  52. Enable/disable video output
  53. *)
  54. procedure Enable*(var ctl: Controller; enable: boolean);
  55. begin
  56. if enable then
  57. ctl.cfg << CmdSetEnabled + lsh(1,4);
  58. else
  59. ctl.cfg << CmdSetEnabled;
  60. end;
  61. ctl.enabled := enable;
  62. end Enable;
  63. procedure SetHorizActiveSize*(var ctl: Controller; n: longint);
  64. begin
  65. ctl.cfg << CmdSetHorizActiveSize + lsh(n-1,4);
  66. ctl.horizActiveSize := n;
  67. end SetHorizActiveSize;
  68. procedure SetHorizFrontPorch*(var ctl: Controller; n: longint);
  69. begin
  70. ctl.cfg << CmdSetHorizFrontPorch + lsh(n-1,4);
  71. ctl.horizFrontPorch := n;
  72. end SetHorizFrontPorch;
  73. procedure SetHorizSyncWidth*(var ctl: Controller; n: longint);
  74. begin
  75. ctl.cfg << CmdSetHorizSyncWidth + lsh(n-1,4);
  76. ctl.horizSyncWidth := n;
  77. end SetHorizSyncWidth;
  78. procedure SetHorizBackPorch*(var ctl: Controller; n: longint);
  79. begin
  80. ctl.cfg << CmdSetHorizBackPorch + lsh(n-1,4);
  81. ctl.horizBackPorch := n;
  82. end SetHorizBackPorch;
  83. procedure SetHorizSyncPolarity*(var ctl: Controller; polarity: boolean);
  84. var n: longint;
  85. begin
  86. if polarity then n := 1; else n := 0; end;
  87. ctl.cfg << CmdSetHorizSyncPolarity + lsh(n,4);
  88. ctl.horizSyncPolarity := polarity;
  89. end SetHorizSyncPolarity;
  90. procedure SetVertActiveSize*(var ctl: Controller; n: longint);
  91. begin
  92. ctl.cfg << CmdSetVertActiveSize + lsh(n-1,4);
  93. ctl.vertActiveSize := n;
  94. end SetVertActiveSize;
  95. procedure SetVertFrontPorch*(var ctl: Controller; n: longint);
  96. begin
  97. ctl.cfg << CmdSetVertFrontPorch + lsh(n-1,4);
  98. ctl.vertFrontPorch := n;
  99. end SetVertFrontPorch;
  100. procedure SetVertSyncWidth*(var ctl: Controller; n: longint);
  101. begin
  102. ctl.cfg << CmdSetVertSyncWidth + lsh(n-1,4);
  103. ctl.vertSyncWidth := n;
  104. end SetVertSyncWidth;
  105. procedure SetVertBackPorch*(var ctl: Controller; n: longint);
  106. begin
  107. ctl.cfg << CmdSetVertBackPorch + lsh(n-1,4);
  108. ctl.vertBackPorch := n;
  109. end SetVertBackPorch;
  110. procedure SetVertSyncPolarity*(var ctl: Controller; polarity: boolean);
  111. var n: longint;
  112. begin
  113. if polarity then n := 1; else n := 0; end;
  114. ctl.cfg << CmdSetVertSyncPolarity + lsh(n,4);
  115. ctl.vertSyncPolarity := polarity;
  116. end SetVertSyncPolarity;
  117. end AcStreamVideoOut.