00001 /*============================================================================= 00002 Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved. 00003 00004 Redistribution of this file, in original or modified form, without 00005 prior written consent of Allied Vision Technologies is prohibited. 00006 00007 ------------------------------------------------------------------------------- 00008 00009 File: AncillaryData.h 00010 00011 Description: Definition of class AVT::VmbAPI::AncillaryData. 00012 00013 ------------------------------------------------------------------------------- 00014 00015 THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED 00016 WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE, 00017 NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 00018 DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 00019 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 00020 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 00021 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 00022 AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 00023 TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 00024 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00025 00026 =============================================================================*/ 00027 00028 #ifndef AVT_VMBAPI_ANCILLARYDATA_H 00029 #define AVT_VMBAPI_ANCILLARYDATA_H 00030 00031 #include <VimbaC/Include/VmbCommonTypes.h> 00032 #include <VimbaCPP/Include/VimbaCPPCommon.h> 00033 #include <VimbaCPP/Include/FeatureContainer.h> 00034 00035 namespace AVT { 00036 namespace VmbAPI { 00037 00038 class AncillaryData : public FeatureContainer 00039 { 00040 public: 00041 AncillaryData( VmbFrame_t *pFrame ); 00042 ~AncillaryData(); 00043 00044 // 00045 // Method: Open() 00046 // 00047 // Purpose: Opens the ancillary data to allow access to the elements of the ancillary data via feature access. 00048 // 00049 // Returns: 00050 // 00051 // - VmbErrorSuccess: If no error 00052 // - VmbErrorApiNotStarted: VmbStartup() was not called before the current command 00053 // 00054 // Details: This function can only succeed if the given frame has been filled by the API. 00055 // 00056 IMEXPORT VmbErrorType Open(); 00057 00058 // 00059 // Method: Close() 00060 // 00061 // Purpose: Closes the ancillary data inside a frame. 00062 // 00063 // Returns: 00064 // 00065 // - VmbErrorSuccess: If no error 00066 // - VmbErrorApiNotStarted: VmbStartup() was not called before the current command 00067 // - VmbErrorBadHandle: The given handle is not valid 00068 // 00069 // Details: After reading the ancillary data and before re-queuing the frame, ancillary data 00070 // must be closed. 00071 // 00072 IMEXPORT VmbError_t Close(); 00073 00074 // 00075 // Method: GetBuffer() 00076 // 00077 // Purpose: Returns the underlying buffer 00078 // 00079 // Returns: 00080 // 00081 // - VmbErrorSuccess: If no error 00082 // 00083 // Parameters: [out] VmbUchar_t *pBuffer A pointer to the buffer 00084 // 00085 IMEXPORT VmbErrorType GetBuffer( VmbUchar_t* &pBuffer ); 00086 00087 // 00088 // Method: GetBuffer() 00089 // 00090 // Purpose: Returns the underlying buffer 00091 // 00092 // Returns: 00093 // 00094 // - VmbErrorSuccess: If no error 00095 // 00096 // Parameters: [out] const VmbUchar_t *pBuffer A pointer to the buffer 00097 // 00098 IMEXPORT VmbErrorType GetBuffer( const VmbUchar_t* &pBuffer ) const; 00099 00100 // 00101 // Method: GetBuffer() 00102 // 00103 // Purpose: Returns the size of the underlying buffer 00104 // 00105 // Returns: 00106 // 00107 // - VmbErrorSuccess: If no error 00108 // 00109 // Parameters: [out] VmbUint32_t &nSize The size of the buffer 00110 // 00111 IMEXPORT VmbErrorType GetSize( VmbUint32_t &nSize ) const; 00112 00113 private: 00114 struct Impl; 00115 Impl *m_pImpl; 00116 00117 // No default ctor 00118 AncillaryData(); 00119 // No copy ctor 00120 AncillaryData( const AncillaryData& ); 00121 // No assignment operator 00122 AncillaryData& operator=( const AncillaryData& ); 00123 }; 00124 00125 }} // namespace AVT::VmbAPI 00126 00127 #endif