]> git.sesse.net Git - casparcg/blob - dependencies64/bluefish/include/BlueVelvetC.h
Move the Required header files from Bluefish/interop dir. back to the dependencies64...
[casparcg] / dependencies64 / bluefish / include / BlueVelvetC.h
1 //
2 //  Copyright (c) 2014 Bluefish444. All rights reserved.
3 //
4
5 #ifndef HG_BLUEVELVET_C
6 #define HG_BLUEVELVET_C
7
8
9 #if defined (_WIN32)
10         #include "BlueDriver_p.h"
11         #include "BlueHancUtils.h"
12     #ifdef BLUEVELVETC_EXPORTS
13         #define BLUEVELVETC_API __declspec(dllexport)
14     #else
15         #define BLUEVELVETC_API __declspec(dllimport)
16     #endif
17 #elif defined (__APPLE__)
18     #define DLLEXPORT __attribute__ ((visibility("default")))
19     #define DLLLOCAL __attribute__ ((visibility("hidden")))
20     #define BLUEVELVETC_API DLLEXPORT
21
22         #include <dispatch/dispatch.h>
23     #include "BlueDriver_p.h"
24         #include "BlueVelvetCDefines.h"
25 #elif defined (__linux__)
26         #define BLUEVELVETC_API
27
28     #include <BlueDriver_p.h>
29         #include "BlueVelvetCDefines.h"
30 #endif
31
32
33 //----------------------------------------------------------------------------
34 typedef void* BLUEVELVETC_HANDLE;
35
36 typedef int BErr;
37
38 #define BLUE_OK(a)                              (!a)            // Test for succcess of a method returning BErr
39 #define BLUE_FAIL(a)                    (a)                     // Test for failure of a method returning BErr
40 //----------------------------------------------------------------------------
41
42
43 #if defined (_WIN32) || defined (__linux__)
44 extern "C" {
45 #endif 
46
47     BLUEVELVETC_API const char* bfcGetVersion();
48         BLUEVELVETC_API const wchar_t* bfcGetVersionW();
49         BLUEVELVETC_API BLUEVELVETC_HANDLE bfcFactory();
50         BLUEVELVETC_API void bfcDestroy(BLUEVELVETC_HANDLE pHandle);
51         BLUEVELVETC_API BErr bfcEnumerate(BLUEVELVETC_HANDLE pHandle, int& iDevices);
52
53 // Get the card type of the Card indicated by iDeviceID, if iDeviceID is 0, then get the cardtype for that card that this pHandle is attached to.
54         BLUEVELVETC_API BErr bfcQueryCardType(BLUEVELVETC_HANDLE pHandle, int& iCardType, int iDeviceID = 0);
55         BLUEVELVETC_API BErr bfcAttach(BLUEVELVETC_HANDLE pHandle, int iDeviceId);
56         BLUEVELVETC_API BErr bfcDetach(BLUEVELVETC_HANDLE pHandle);
57   
58         BLUEVELVETC_API BErr bfcQueryCardProperty32(BLUEVELVETC_HANDLE pHandle, const int iProperty, unsigned int& nValue);
59     BLUEVELVETC_API BErr bfcSetCardProperty32(BLUEVELVETC_HANDLE pHandle, const int iProperty, const unsigned int nValue);
60         BLUEVELVETC_API BErr bfcQueryCardProperty64(BLUEVELVETC_HANDLE pHandle, const int iProperty, unsigned long long& ullValue);
61     BLUEVELVETC_API BErr bfcSetCardProperty64(BLUEVELVETC_HANDLE pHandle, const int iProperty, const unsigned long long ullValue);
62
63         BLUEVELVETC_API BErr bfcGetCardSerialNumber(BLUEVELVETC_HANDLE pHandle, char* pSerialNumber, unsigned int nStringSize); //nStringSize must be at least 20
64         BLUEVELVETC_API BErr bfcGetCardFwVersion(BLUEVELVETC_HANDLE pHandle, unsigned int& nValue);
65
66         //Interrupt related functions
67 #if defined(_WIN32)
68         BLUEVELVETC_API BErr bfcWaitVideoSyncAsync(BLUEVELVETC_HANDLE pHandle, OVERLAPPED* pOverlap, blue_video_sync_struct* pSyncData);
69 #endif
70         BLUEVELVETC_API BErr bfcWaitVideoInputSync(BLUEVELVETC_HANDLE pHandle, unsigned long ulUpdateType, unsigned long& ulFieldCount);
71         BLUEVELVETC_API BErr bfcWaitVideoOutputSync(BLUEVELVETC_HANDLE pHandle, unsigned long ulUpdateType, unsigned long& ulFieldCount);
72         BLUEVELVETC_API BErr bfcGetVideoOutputCurrentFieldCount(BLUEVELVETC_HANDLE pHandle, unsigned long& ulFieldCount);
73     BLUEVELVETC_API BErr bfcGetVideoInputCurrentFieldCount(BLUEVELVETC_HANDLE pHandle, unsigned long& ulFieldCount);
74
75         //FIFO functions
76         BLUEVELVETC_API BErr bfcVideoCaptureStart(BLUEVELVETC_HANDLE pHandle);
77         BLUEVELVETC_API BErr bfcVideoCaptureStop(BLUEVELVETC_HANDLE pHandle);
78         BLUEVELVETC_API BErr bfcVideoPlaybackStart(BLUEVELVETC_HANDLE pHandle, int iStep, int iLoop);
79         BLUEVELVETC_API BErr bfcVideoPlaybackStop(BLUEVELVETC_HANDLE pHandle, int iWait, int iFlush);
80         BLUEVELVETC_API BErr bfcVideoPlaybackAllocate(BLUEVELVETC_HANDLE pHandle, void** pAddress, unsigned long& ulBufferID, unsigned long& ulUnderrun);
81         BLUEVELVETC_API BErr bfcVideoPlaybackPresent(BLUEVELVETC_HANDLE pHandle, unsigned long& ulUniqueID, unsigned long ulBufferID, unsigned long ulCount, int iKeep, int iOdd=0);
82         BLUEVELVETC_API BErr bfcVideoPlaybackRelease(BLUEVELVETC_HANDLE pHandle, unsigned long ulBufferID);
83         
84 #if defined (_WIN32)
85         BLUEVELVETC_API BErr bfcGetCaptureVideoFrameInfoEx(BLUEVELVETC_HANDLE pHandle, OVERLAPPED* pOverlap, struct blue_videoframe_info_ex& VideoFrameInfo, int iCompostLater, unsigned int* nCaptureFifoSize);
86 #elif defined (__APPLE__)
87         BLUEVELVETC_API BErr bfcGetCaptureVideoFrameInfoEx(BLUEVELVETC_HANDLE pHandle, struct blue_videoframe_info_ex& VideoFrameInfo, int iCompostLater, unsigned int* nCaptureFifoSize);
88 #elif defined(__linux__)
89         BLUEVELVETC_API BErr bfcGetCaptureVideoFrameInfoEx(BLUEVELVETC_HANDLE pHandle, struct blue_videoframe_info_ex& VideoFrameInfo);
90 #endif
91
92         //FRAMESTORE functions
93         BLUEVELVETC_API BErr bfcRenderBufferCapture(BLUEVELVETC_HANDLE pHandle, unsigned long ulBufferID);
94         BLUEVELVETC_API BErr bfcRenderBufferUpdate(BLUEVELVETC_HANDLE pHandle, unsigned long ulBufferID);
95         BLUEVELVETC_API BErr bfcGetRenderBufferCount(BLUEVELVETC_HANDLE pHandle, unsigned long& ulCount);
96
97         //AUDIO Helper functions (BlueHancUtils)
98         BLUEVELVETC_API BErr bfcEncodeHancFrameEx(BLUEVELVETC_HANDLE pHandle, unsigned int nCardType, struct hanc_stream_info_struct* pHancEncodeInfo, void* pAudioBuffer, unsigned int nAudioChannels, unsigned int nAudioSamples, unsigned int nSampleType, unsigned int nAudioFlags);
99         BLUEVELVETC_API BErr bfcDecodeHancFrameEx(BLUEVELVETC_HANDLE pHandle, unsigned int nCardType, unsigned int* pHancBuffer, struct hanc_decode_struct* pHancDecodeInfo);
100
101         //DMA functions
102 #if defined(_WIN32)
103     BLUEVELVETC_API BErr bfcSystemBufferReadAsync(BLUEVELVETC_HANDLE pHandle, unsigned char* pPixels, unsigned long ulSize, OVERLAPPED* pOverlap, unsigned long ulBufferID, unsigned long ulOffset=0);
104     BLUEVELVETC_API BErr bfcSystemBufferWriteAsync(BLUEVELVETC_HANDLE pHandle, unsigned char* pPixels, unsigned long ulSize, OVERLAPPED* pOverlap, unsigned long ulBufferID, unsigned long ulOffset=0);
105 #elif defined(__APPLE__) || defined (__linux__)
106     BLUEVELVETC_API BErr bfcSystemBufferRead(BLUEVELVETC_HANDLE pHandle, unsigned char* pPixels, unsigned long ulSize, unsigned long ulBufferID, unsigned long ulOffset=0);
107     BLUEVELVETC_API BErr bfcSystemBufferWrite(BLUEVELVETC_HANDLE pHandle, unsigned char* pPixels, unsigned long ulSize, unsigned long ulBufferID, unsigned long ulOffset=0);
108 #endif
109
110 #if defined(__APPLE__)
111         BLUEVELVETC_API BErr bfcSystemBufferReadAsync(BLUEVELVETC_HANDLE pHandle, unsigned char* pPixels, unsigned long ulSize, dispatch_semaphore_t* sem, unsigned long ulBufferID, unsigned long ulOffset=0);
112     BLUEVELVETC_API BErr bfcSystemBufferWriteAsync(BLUEVELVETC_HANDLE pHandle, unsigned char* pPixels, unsigned long ulSize, dispatch_semaphore_t* sem, unsigned long ulBufferID, unsigned long ulOffset=0);
113 #endif
114         
115         // RS422 Serial Port Functions
116         BLUEVELVETC_API BErr bfcSerialPortWaitForInputData(BLUEVELVETC_HANDLE pHandle, unsigned int nPortFlags, unsigned int& nBufferLength);
117         BLUEVELVETC_API BErr bfcSerialPortRead(BLUEVELVETC_HANDLE pHandle, unsigned int nPortFlags, unsigned char* pBuffer, unsigned int nReadLength);
118         BLUEVELVETC_API BErr bfcSerialPortWrite(BLUEVELVETC_HANDLE pHandle, unsigned int nPortFlags, unsigned char* pBuffer, unsigned int nWriteLength);
119
120 #if defined (_WIN32)
121         //Miscellaneous functions
122         BLUEVELVETC_API BErr bfcGetReferenceClockPhaseSettings(BLUEVELVETC_HANDLE pHandle, unsigned int& nHPhase, unsigned int& nVPhase, unsigned int& nHPhaseMax, unsigned int& nVPhaseMax);
123         BLUEVELVETC_API BErr bfcLoadOutputLUT1D(BLUEVELVETC_HANDLE pHandle, struct blue_1d_lookup_table_struct* pLutData);
124         BLUEVELVETC_API BErr bfcControlVideoScaler(BLUEVELVETC_HANDLE pHandle,  unsigned int nScalerId,
125                                                                                                                                                         bool bOnlyReadValue,
126                                                                                                                                                         float* pSrcVideoHeight,
127                                                                                                                                                         float* pSrcVideoWidth,
128                                                                                                                                                         float* pSrcVideoYPos,
129                                                                                                                                                         float* pSrcVideoXPos,
130                                                                                                                                                         float* pDestVideoHeight,
131                                                                                                                                                         float* pDestVideoWidth,
132                                                                                                                                                         float* pDestVideoYPos,
133                                                                                                                                                         float* pDestVideoXPos);
134 #endif
135
136     // Video mode and Format information functions
137         BLUEVELVETC_API BErr bfcGetBytesForGroupPixels(EMemoryFormat nMemoryFormat, unsigned int nVideoWidth, unsigned int& nVideoPitchBytes);
138         BLUEVELVETC_API BErr bfcGetPixelsPerLine(EVideoMode nVideoMode, unsigned int& nPixelsPerLine);
139     BLUEVELVETC_API BErr bfcGetLinesPerFrame(EVideoMode nVideoMode, EUpdateMethod nUpdateMethod, unsigned int& nLinesPerFrame);
140     BLUEVELVETC_API BErr bfcGetBytesPerLine(EVideoMode nVideoMode, EMemoryFormat nMemoryFormat, unsigned int& nBytesPerLine);
141     BLUEVELVETC_API BErr bfcGetBytesPerFrame(EVideoMode nVideoMode, EMemoryFormat nMemoryFormat, EUpdateMethod nUpdateMethod, unsigned int& nBytesPerFrame);
142     BLUEVELVETC_API BErr bfcGetGoldenValue(EVideoMode nVideoMode, EMemoryFormat nMemoryFormat, EUpdateMethod nUpdateMethod, unsigned int& nGoldenFrameSize);
143     BLUEVELVETC_API BErr bfcGetVBILines(EVideoMode nVideoMode, EUpdateMethod nUpdateMethod, unsigned int& nVBILinesPerFrame);
144     
145     BLUEVELVETC_API BErr bfcGetVANCGoldenValue(unsigned int nCardType, EVideoMode nVideoMode, EMemoryFormat nMemoryFormat, EDMADataType nDataFormat, unsigned int& nVANCGoldenValue);
146     BLUEVELVETC_API BErr bfcGetVANCLineBytes(unsigned int nCardType, EVideoMode nVideoMode, EMemoryFormat nMemoryFormat, unsigned int& nVANCLineBytes);
147     BLUEVELVETC_API BErr bfcGetVANCLineCount(unsigned int nCardType, EVideoMode nVideoMode, EDMADataType nDataFormat, unsigned int& nVANCLineCount);
148     
149
150 #if defined (_WIN32)    
151         //AMD SDI-Link support
152         BLUEVELVETC_API BErr bfcDmaWaitMarker(BLUEVELVETC_HANDLE pHandle,       OVERLAPPED* pOverlap,
153                                                                                                                                         unsigned int nVideoChannel,
154                                                                                                                                         unsigned int nBufferId,
155                                                                                                                                         unsigned int nMarker);
156         BLUEVELVETC_API BErr bfcDmaReadToBusAddressWithMarker(  BLUEVELVETC_HANDLE pHandle,
157                                                                                                                         unsigned int nVideoChannel,
158                                                                                                                         unsigned long long n64DataAddress,
159                                                                                                                         unsigned int nSize,
160                                                                                                                         OVERLAPPED* pOverlap,
161                                                                                                                         unsigned int BufferID,
162                                                                                                                         unsigned long Offset,
163                                                                                                                         unsigned long long n64MarkerAddress,
164                                                                                                                         unsigned int nMarker);
165         BLUEVELVETC_API BErr bfcDmaReadToBusAddress(    BLUEVELVETC_HANDLE pHandle,
166                                                                                                 unsigned int nVideoChannel,
167                                                                                                 unsigned long long n64DataAddress,
168                                                                                                 unsigned int nSize,
169                                                                                                 OVERLAPPED* pOverlap,
170                                                                                                 unsigned int BufferID,
171                                                                                                 unsigned long Offset);
172         BLUEVELVETC_API BErr bfcDmaWriteMarker( BLUEVELVETC_HANDLE pHandle,
173                                                                                         unsigned long long n64MarkerAddress,
174                                                                                         unsigned int nMarker);
175
176         //misc
177         BLUEVELVETC_API BErr bfcGetWindowsDriverHandle(BLUEVELVETC_HANDLE pHandle, HANDLE* pDriverHandle);
178         BLUEVELVETC_API BErr bfcSetDynamicMemoryFormatChange(BLUEVELVETC_HANDLE pHandle, OVERLAPPED* pOverlap, unsigned int nUniqueId, EMemoryFormat nMemoryFormat);
179 #endif
180
181
182 #if defined (_WIN32) || defined (__linux__)
183 } //extern "C"
184 #endif
185
186 #endif //HG_BLUEVELVET_C