]> git.sesse.net Git - casparcg/blobdiff - dependencies64/bluefish/include/BlueVelvetCUtils.h
Move the Required header files from Bluefish/interop dir. back to the dependencies64...
[casparcg] / dependencies64 / bluefish / include / BlueVelvetCUtils.h
diff --git a/dependencies64/bluefish/include/BlueVelvetCUtils.h b/dependencies64/bluefish/include/BlueVelvetCUtils.h
new file mode 100644 (file)
index 0000000..69c8b5b
--- /dev/null
@@ -0,0 +1,158 @@
+//
+//  BlueVelvetCUtils.h
+//  BlueVelvetC
+//
+//  Created by James on 21/05/2014.
+//  Copyright (c) 2014 Bluefish444. All rights reserved.
+//
+// A file that contains useful Util functions that can ssist in general development.
+// indente to be included as-is into BlueVelvetC projects and not part of a library.
+
+#ifndef BlueVelvetC_BlueVelvetCUtils_h
+#define BlueVelvetC_BlueVelvetCUtils_h
+
+#include "BlueVelvetC.h"
+
+
+#if defined (_WIN32)
+extern "C" {
+#endif
+
+// Memory Allocation and Free'ing of page Aligned memory
+       BLUEVELVETC_API void*                   bfAlloc(unsigned int nMemorySize);
+       BLUEVELVETC_API void                    bfFree(unsigned int nMemSize, void* pMemory);
+
+// Get strings that give information about the card or card state
+       BLUEVELVETC_API const char*             bfcUtilsGetStringForCardType(const int iCardType);
+       BLUEVELVETC_API const wchar_t*  bfcUtilsGetWStringForCardType(const int iCardType);
+
+       BLUEVELVETC_API const char*             bfcUtilsGetStringForBlueProductId(const unsigned int nProductId);
+       BLUEVELVETC_API const wchar_t*  bfcUtilsGetWStringForBlueProductId(const unsigned int nProductId);
+
+       BLUEVELVETC_API const char*             bfcUtilsGetStringForVideoMode(const unsigned int nVideoMode);
+       BLUEVELVETC_API const wchar_t*  bfcUtilsGetWStringForVideoMode(const unsigned int nVideoMode);
+
+       BLUEVELVETC_API const char*             bfcUtilsGetStringForMemoryFormat(const unsigned int nMemoryFormat);
+       BLUEVELVETC_API const wchar_t*  bfcUtilsGetWStringForMemoryFormat(const unsigned int nMemoryFormat);                    
+
+// Get/Set MR2 Video mode info
+       BLUEVELVETC_API int                             bfcUtilsGetScalerVideoMode(const BLUEVELVETC_HANDLE pHandle, const unsigned int nScalerMR2Node, unsigned int& nVideoMode);
+       BLUEVELVETC_API int                             bfcUtilsSetScalerVideoMode(const BLUEVELVETC_HANDLE pHandle, const unsigned int nScalerMR2Node, unsigned int nVideoMode);
+
+// Change MR2 Routing                          using the EEpochRoutingElements enum values as src and dest
+       BLUEVELVETC_API int                             bfcUtilsGetMR2Routing(const BLUEVELVETC_HANDLE pHandle, unsigned int& nSrcNode, const unsigned int nDestNode, unsigned int& nLinkType);
+       BLUEVELVETC_API int                             bfcUtilsSetMR2Routing(const BLUEVELVETC_HANDLE pHandle, const unsigned int nSrcNode, const unsigned int nDestNode, const unsigned int nLinkType);
+
+// Get/Set Audio routing.
+       BLUEVELVETC_API int                             bfcUtilsGetAudioOutputRouting(const BLUEVELVETC_HANDLE pHandle, const unsigned int nAudioConnectorType, unsigned int& nAudioSourceChannelId, unsigned int nAudioConnectorId);
+       BLUEVELVETC_API int                             bfcUtilsSetAudioOutputRouting(const BLUEVELVETC_HANDLE pHandle, const unsigned int nAudioConnectorType, unsigned int nAudioSourceChannelId, unsigned int nAudioConnectorId);
+
+// General Video format helper funcs
+       BLUEVELVETC_API bool                    bfcUtilsIsVideoModeProgressive(const unsigned int nVideoMode);
+       BLUEVELVETC_API bool                    bfcUtilsIsVideoMode1001Framerate(const unsigned int nVideoMode);
+       BLUEVELVETC_API int                             bfcUtilsGetFpsForVideoMode(const unsigned int nVideoMode);                                      // returns closest interger FPS, use bfcUtilsIsVideoMode1001Framerate(), to determine if div 1001 is needed.
+
+// Get the Bluefish _EVideoMode for the given width, height and fps
+       BLUEVELVETC_API int                             bfcUtilsGetVideoModeForFrameInfo(const BLUE_UINT32 nWidth, const BLUE_UINT32 nHeight, const BLUE_UINT32 nRate, const BLUE_UINT32 bIs1001, const BLUE_UINT32 bIsProgressive, BLUE_UINT32& nVideoMode);
+       BLUEVELVETC_API int                             bfcUtilsGetFrameInfoForVideoMode(const BLUE_UINT32 nVideoMode, BLUE_UINT32&  nWidth, BLUE_UINT32& nHeight, BLUE_UINT32& nRate, BLUE_UINT32& bIs1001, BLUE_UINT32& bIsProgressive);
+       
+       
+// Get the number of Audio Packets for a given frame of video in a specific mode.
+       BLUEVELVETC_API int                             bfcUtilsGetAudioSamplesPerFrame(const BLUE_UINT32 nVideoMode, const BLUE_UINT32 nFrameNo);
+
+
+// HANC / VANC utils
+
+/**
+ @brief enumerator used by VANC manipulation function on HD cards to notify whether
+ VANC pakcet shoule be inserted/extracted from VANC Y buffers or VANC CbCr buffer.
+ This enumerator will only be used on  HD video modes as it is the only with
+ 2 type of ANC bufers ir Y and CbCr. On SD Modes the ANC data is inserted across
+ both Y anc CbCr values.
+ */
+       enum BlueVancPktTypeEnum
+       {
+               BlueVancPktYComp=0,             /**< ANC pkt should be inserted/extracted from the Y component buffer*/
+               BlueVancPktCbcrComp=1,  /**< ANC pkt should be inserted/extracted from the CbCr component buffer*/
+               BlueVancPktAllComp=2    /**< ANC pkt should be inserted/extracted from all components (SD video modes)*/
+       };
+
+/*!
+ @brief Use this function to initialise VANC buffer before inserting any packets into the buffer
+ @param CardType type of bluefish  card to which this vanc buffer was transferred to.
+ @param nVideoMode video mode under which this vanc buffer will be used.
+ @param pixels_per_line width in pixels of the vanc buffer that has to be initialised.
+ @param lines_per_frame height of the vanc buffer that has to be initialised.
+ @param pVancBuffer vanc buffer which has to be initialised.
+ @remarks.
+ */
+       BLUEVELVETC_API BLUE_UINT32 bfcUtilsInitVancBuffer(BLUE_UINT32 nCardType,
+                                                                                                       BLUE_UINT32 nVideoMode, 
+                                                                                                       BLUE_UINT32 nPixelsPerLine, 
+                                                                                                       BLUE_UINT32 nLinesPerFrame, 
+                                                                                                       BLUE_UINT32* pVancBuffer);
+
+/*!
+ @brief this function can be used to extract ANC packet from HD cards. Currently we can only extract packets in the VANC space.
+ @param CardType type of the card from which the vanc buffer was captured.
+ @param vanc_pkt_type This parameter denotes whether to search for the VANC packet in Y Space or Cb/Cr Space.
+ The values this parameter accepts are defined in the enumerator #BlueVancPktTypeEnum
+ @param src_vanc_buffer Vanc buffer which was captured from bluefish card
+ @param src_vanc_buffer_size size of the vanc buffer which should be parsed for the specified vanc packet
+ @param pixels_per_line specifies how many pixels are there in each line of VANC buffer
+ @param vanc_pkt_did specifies the DID of the Vanc packet which should be extracted from the buffer
+ @param vanc_pkt_sdid Returns the SDID of the extracted VANC packet
+ @param vanc_pkt_data_length returns the size of the extracted VANC packet. The size is specifed as number of UDW words
+ that was  contained in the packet
+ @param vanc_pkt_data_ptr pointer to UDW of the VANC packets . The 10 bit UDW words are packed in a 16 bit integer. The bottom 10 bit of the
+ 16 bit word contains the UDW data.
+ @param vanc_pkt_line_no line number  where the packet was found .
+ @remarks.
+ */
+       BLUEVELVETC_API BLUE_INT32 bfcUtilsVancPktExtract(BLUE_UINT32 nCardType,
+                                                                                                       BLUE_UINT32 nVancPktType,
+                                                                                                       BLUE_UINT32* pSrcVancBuffer,
+                                                                                                       BLUE_UINT32 nSrcVancBufferSize,
+                                                                                                       BLUE_UINT32 nPixelsPerLine,
+                                                                                                       BLUE_UINT32     nVancPktDid,
+                                                                                                       BLUE_UINT16* pVancPktSdid,
+                                                                                                       BLUE_UINT16* pVancPktDataLength,
+                                                                                                       BLUE_UINT16* pVancPktData,
+                                                                                                       BLUE_UINT16* pVancPktLineNo);
+
+/**
+ @brief use this function to insert ANC packets into the VANC space of the HD cards.
+ @param CardType type of the card from which the vanc buffer was captured.
+ @param vanc_pkt_type This parameter denotes whether to search for the VANC packet in Y Space or Cb/Cr Space.
+ The values this parameter accepts are defined in the enumerator #blue_vanc_pkt_type_enum
+ @param vanc_pkt_line_no line in th VANC buffer where the ANC packet should inserted.
+ @param vanc_pkt_buffer vanc ANC packet which should be inserted into the VANC buffer.
+ @param vanc_pkt_buffer_size size of the ANC packet including the checksum ,ADF , SDID, DID and Data Count
+ @param dest_vanc_buffer VANC buffer into which the ANC packet will be inserted into.
+ @param pixels_per_line specifies how many pixels are there in each line of VANC buffer
+ */
+       BLUEVELVETC_API BLUE_INT32 bfcUtilsVancPktInsert(BLUE_UINT32 nCardType,
+                                                                                                       BLUE_UINT32 nVancPktType,
+                                                                                                       BLUE_UINT32 nVancPktLineNumber,
+                                                                                                       BLUE_UINT32* pVancPktBuffer,
+                                                                                                       BLUE_UINT32 nVancPktBufferSize,
+                                                                                                       BLUE_UINT32* pDestVancBuffer,
+                                                                                                       BLUE_UINT32 nPixelsPerLine);
+
+/** @} */
+
+/**
+ @defgroup vanc_decode_encoder_helper ANC encoder/decoder
+ @{
+ */
+       BLUEVELVETC_API BLUE_UINT32 bfcUtilsDecodeEia708bPkt(BLUE_UINT32 nCardType, BLUE_UINT16* pVancPktData, BLUE_UINT16 usPktUdwCount, BLUE_UINT16 usEiaPktSubtype, BLUE_UINT8* pDecodedChStr);
+       
+#if defined (_WIN32)
+} //extern "C"
+#endif
+
+#endif // BlueVelvetC_BlueVelvetCUtils_h
\ No newline at end of file