SapXferNode.h 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. #ifndef _SAPXFERNODE_H_
  2. #define _SAPXFERNODE_H_
  3. // SapXferNode.h : header file
  4. //
  5. #include "SapClassBasicDef.h"
  6. //
  7. // SapXferParams class declaration
  8. //
  9. class SAPCLASSBASIC_CLASS SapXferParams
  10. {
  11. public:
  12. // Transfer frame types
  13. typedef int FrameType;
  14. enum _FrameType
  15. {
  16. FrameInterlaced = CORXFER_VAL_FRAME_INTERLACED,
  17. FrameProgressive = CORXFER_VAL_FRAME_NON_INTERLACED
  18. };
  19. // Transfer field order
  20. typedef int FieldOrder;
  21. enum _FieldOrder
  22. {
  23. FieldOrderOddEven = CORXFER_VAL_FIELD_ORDER_ODD_EVEN,
  24. FieldOrderEvenOdd = CORXFER_VAL_FIELD_ORDER_EVEN_ODD,
  25. FieldOrderNext = CORXFER_VAL_FIELD_ORDER_NEXT_FIELD
  26. };
  27. public:
  28. // Constructor/destructor
  29. SapXferParams();
  30. ~SapXferParams();
  31. // Access to implementation
  32. FrameType GetFrameType() const { return m_Frame; }
  33. FieldOrder GetFieldOrder() const { return m_FieldOrder; }
  34. int GetWidth() const { return m_Width; }
  35. int GetHeight() const { return m_Height; }
  36. SapFormat GetFormat() const { return m_Format; }
  37. int GetPixelDepth() const { return m_PixelDepth; }
  38. int GetPixelShift() const { return m_PixelShift; }
  39. void GetParameters(FrameType *frame, FieldOrder *fieldOrder, int *width, int *height, SapFormat *format, int *pixelDepth, int *pixelShift) const;
  40. void SetFrameType(FrameType frameType) { m_Frame = frameType; }
  41. void SetFieldOrder(FieldOrder fieldOrder) { m_FieldOrder = fieldOrder; }
  42. void SetWidth(int width) { m_Width = width; }
  43. void SetHeight(int height) { m_Height = height; }
  44. void SetFormat(SapFormat format) { m_Format = format; SetPixelDepth(CorManGetPixelDepthMax(m_Format)); }
  45. void SetPixelDepth(int pixelDepth) { m_PixelDepth = pixelDepth; SetPixelShift(CorManGetPixelDepthMax(m_Format) - pixelDepth); }
  46. void SetPixelShift(int pixelShift) { m_PixelShift = pixelShift; }
  47. void SetParameters(FrameType frame, FieldOrder fieldOrder, int width, int height, SapFormat format, int pixelDepth, int pixelShift);
  48. // Utility
  49. operator CORXFER_DESC();
  50. // Obsolete methods
  51. FrameType GetFrame() const { return GetFrameType(); }
  52. void Get(FrameType *frame, FieldOrder *fieldOrder, int *width, int *height, SapFormat *format, int *pixelDepth, int *pixelShift) const;
  53. void SetFrame(FrameType frame) { SetFrameType(frame); }
  54. void Set(FrameType frame, FieldOrder fieldOrder, int width, int height, SapFormat format, int pixelDepth, int pixelShift);
  55. protected:
  56. FrameType m_Frame;
  57. FieldOrder m_FieldOrder;
  58. int m_Width;
  59. int m_Height;
  60. SapFormat m_Format;
  61. int m_PixelDepth;
  62. int m_PixelShift;
  63. };
  64. //
  65. // SapXferNode class declaration
  66. //
  67. class SAPCLASSBASIC_CLASS SapXferNode : public SapManager
  68. {
  69. public:
  70. // Possible types for derived classes
  71. enum XferNodeType
  72. {
  73. NodeTypeUnknown,
  74. NodeTypeAcqDevice,
  75. NodeTypeAcquisition,
  76. NodeTypeBuffer,
  77. NodeTypeCab,
  78. NodeTypeObsolete1,
  79. NodeTypePixPro,
  80. NodeTypeRTPro,
  81. NodeTypeBufferMulti
  82. };
  83. // Various constants
  84. enum MiscValues
  85. {
  86. MaxXferParams = 32
  87. };
  88. public:
  89. // Constructor/Destructor
  90. SapXferNode(SapLocation location)
  91. { m_Location = location; m_pSrcNode = NULL; m_SrcPort = 0; m_hServer = m_handle = CORHANDLE_NULL; }
  92. SapXferNode(SapLocation location, SapXferNode *pSrcNode)
  93. { m_Location = location; m_pSrcNode = pSrcNode; m_SrcPort = 0; m_hServer = m_handle = CORHANDLE_NULL; }
  94. SapXferNode(SapLocation location, SapXferParams xferParams)
  95. { m_Location = location; m_pSrcNode = NULL; m_SrcPort = 0; m_XferParams[0] = xferParams; m_hServer = m_handle = CORHANDLE_NULL; }
  96. //should copy all xferParams
  97. SapXferNode(const SapXferNode& node)
  98. { m_Location = node.m_Location; m_pSrcNode = node.m_pSrcNode; m_SrcPort = node.m_SrcPort;m_XferParams[0] = node.m_XferParams[0]; m_hServer = m_handle = CORHANDLE_NULL; }
  99. virtual ~SapXferNode() {}
  100. SapXferNode& operator= (const SapXferNode& node)
  101. {
  102. m_Location = node.m_Location; m_pSrcNode = node.m_pSrcNode; m_SrcPort = node.m_SrcPort; m_XferParams[0] = node.m_XferParams[0]; m_bInitOK = FALSE; m_hServer = m_handle = CORHANDLE_NULL;
  103. return *this;
  104. }
  105. // Creation/destruction
  106. virtual BOOL Create() = 0;
  107. virtual BOOL Destroy() = 0;
  108. public:
  109. // Access to implementation
  110. SapLocation GetLocation() const { return m_Location; }
  111. SapXferNode *GetSrcNode() const { return m_pSrcNode; }
  112. int GetSrcPort() const { return m_SrcPort; }
  113. CORSERVER GetServer() const { return m_hServer; }
  114. virtual SapXferParams GetXferParams(int portIndex = 0) const { return m_XferParams[CORXFER_PORT_INDEX_MASK(portIndex)]; }
  115. virtual SapXferParams GetInputXferParams(int portIndex = 0) const { return GetXferParams(CORXFER_PORT_INDEX_MASK(portIndex)); }
  116. virtual SapXferParams GetOutputXferParams(int portIndex = 0) const { return GetXferParams(CORXFER_PORT_INDEX_MASK(portIndex)); }
  117. BOOL SetLocation(SapLocation loc) { if( m_bInitOK) return FALSE; m_Location = loc; return TRUE;}
  118. virtual BOOL SetSrcNode(SapXferNode *pSrcNode, int srcPort = 0) { if( m_bInitOK) return FALSE; m_pSrcNode = pSrcNode; m_SrcPort = srcPort; return TRUE;}
  119. virtual BOOL SetXferParams(SapXferParams xferParams, int portIndex = 0) { if( m_bInitOK) return FALSE; m_XferParams[portIndex] = xferParams; return TRUE;}
  120. virtual BOOL SetInputXferParams(SapXferParams params, int portIndex = 0) { return SetXferParams(params, CORXFER_PORT_INDEX_MASK(portIndex)); }
  121. virtual BOOL SetOutputXferParams(SapXferParams params, int portIndex = 0) { return SetXferParams(params, CORXFER_PORT_INDEX_MASK(portIndex)); }
  122. virtual CORHANDLE GetHandle() const { return m_handle; }
  123. virtual void GetXferParamsFromSrcNode()
  124. { if (m_pSrcNode) SetInputXferParams(m_pSrcNode->GetOutputXferParams( m_SrcPort)); }
  125. // All classes derived from SapXferNode need to implement this
  126. virtual XferNodeType GetXferNodeType() = 0;
  127. // Obsolete method
  128. virtual BOOL IsBuffer() { return GetXferNodeType() == NodeTypeBuffer; }
  129. public:
  130. // Cycling specific methods
  131. virtual CORHANDLE GetHandle(int index) const { return index == 0 ? m_handle : CORHANDLE_NULL; }
  132. virtual CORHANDLE operator[] (int index) const { return GetHandle(index); }
  133. virtual int GetCount() const { return 1; }
  134. virtual int GetIndex() const { return 0; }
  135. virtual BOOL SetIndex(int index) { return TRUE; }
  136. virtual void ResetIndex() {}
  137. virtual void Next() {}
  138. virtual CORHANDLE GetTrash() const { return CORHANDLE_NULL; }
  139. // Obsolete methods
  140. virtual BOOL Empty() { return TRUE; }
  141. virtual BOOL Empty(int index) { return TRUE; }
  142. virtual BOOL EmptyAll() { return TRUE; }
  143. protected:
  144. // Parameters
  145. SapLocation m_Location;
  146. SapXferNode *m_pSrcNode;
  147. int m_SrcPort;
  148. SapXferParams m_XferParams[MaxXferParams];
  149. CORSERVER m_hServer;
  150. CORHANDLE m_handle;
  151. };
  152. #endif // _SAPXFERNODE_H_