Frame.cpp
Go to the documentation of this file.
1 /*=============================================================================
2  Copyright (C) 2012 Allied Vision Technologies. All Rights Reserved.
3 
4  Redistribution of this file, in original or modified form, without
5  prior written consent of Allied Vision Technologies is prohibited.
6 
7 -------------------------------------------------------------------------------
8 
9  File: Frame.cpp
10 
11  Description: Implementation of class AVT::VmbAPI::Frame.
12 
13 -------------------------------------------------------------------------------
14 
15  THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
16  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
17  NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18  DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
19  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
22  AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
23  TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 
26 =============================================================================*/
27 
28 #include "VimbaCPP/Include/Frame.h"
29 
36 namespace AVT {
37 namespace VmbAPI {
38 
40 {
41  // No default ctor
42 }
43 
45 {
46  // No copy ctor
47 }
48 
50 {
51  // No assignment operator
52  return *this;
53 }
54 
55 Frame::Frame( VmbInt64_t nBufferSize )
56  : m_pImpl( new Impl() )
57 {
59  m_pImpl->m_bAlreadyQueued = false;
60  m_pImpl->m_bIsUserBuffer = false;
62  m_pImpl->Init();
63  m_pImpl->m_pBuffer = new VmbUchar_t[ (VmbUint32_t)nBufferSize ];
64  m_pImpl->m_frame.bufferSize = (VmbUint32_t)nBufferSize;
66 }
67 
68 Frame::Frame( VmbUchar_t *pBuffer, VmbInt64_t nBufferSize )
69  : m_pImpl( new Impl() )
70 {
72  m_pImpl->m_bAlreadyQueued = false;
73  m_pImpl->m_bIsUserBuffer = true;
74  m_pImpl->m_pBuffer = NULL;
76  m_pImpl->Init();
77  if ( NULL != pBuffer )
78  {
79  m_pImpl->m_pBuffer = pBuffer;
80  m_pImpl->m_frame.bufferSize = (VmbUint32_t)nBufferSize;
82  }
83  else
84  {
85  // Do some logging
86  LOG_FREE_TEXT( "No valid buffer passed when constructing frame." )
87  }
88 }
89 
91 {
93  m_frame.buffer = NULL;
94  m_frame.bufferSize = 0;
95  for ( int i=0; i<4; ++i)
96  {
97  m_frame.context[i] = NULL;
98  }
99  m_frame.frameID = 0;
100  m_frame.height = 0;
101  m_frame.imageSize = 0;
102  m_frame.offsetX = 0;
103  m_frame.offsetY = 0;
104  m_frame.pixelFormat = 0;
107  m_frame.timestamp = 0;
108  m_frame.width = 0;
109 }
110 
112 {
114  if ( false == m_pImpl->m_bIsUserBuffer
115  && NULL != m_pImpl->m_pBuffer )
116  {
117  delete [] m_pImpl->m_pBuffer;
118  }
119 
120  delete m_pImpl;
121 }
122 
123 VmbErrorType Frame::RegisterObserver( const IFrameObserverPtr &rObserver )
124 {
125  if ( SP_ISNULL( rObserver ))
126  {
127  return VmbErrorBadParameter;
128  }
129 
130  // Begin exclusive write lock observer
131  MutexGuard local_lock( m_pImpl->m_pObserverMutex );
132  m_pImpl->m_pObserver = rObserver;
133  return VmbErrorSuccess;
134 }
135 
137 {
139 
140  // Begin exclusive write lock observer
141  MutexGuard local_lock( m_pImpl->m_pObserverMutex );
142  if ( SP_ISNULL( m_pImpl->m_pObserver ))
143  {
144  res = VmbErrorNotFound;
145  }
146  else
147  {
149  }
150  return res;
151 }
152 
153 bool Frame::GetObserver( IFrameObserverPtr &rObserver ) const
154 {
155  MutexGuard local_lock( m_pImpl->m_pObserverMutex );
156  if ( SP_ISNULL( m_pImpl->m_pObserver ))
157  {
158  return false;
159  }
160  rObserver = m_pImpl->m_pObserver;
161  return true;
162 }
163 
164 VmbErrorType Frame::GetAncillaryData( AncillaryDataPtr &rAncillaryData )
165 {
166  if ( m_pImpl->m_frame.ancillarySize == 0 )
167  {
168  return VmbErrorNotFound;
169  }
170 
171  SP_SET( rAncillaryData, new AncillaryData( &m_pImpl->m_frame ));
172 
173  return VmbErrorSuccess;
174 }
175 
176 VmbErrorType Frame::GetAncillaryData( ConstAncillaryDataPtr &rAncillaryData ) const
177 {
178  if ( m_pImpl->m_frame.ancillarySize == 0 )
179  {
180  return VmbErrorNotFound;
181  }
182 
183  SP_SET( rAncillaryData, new AncillaryData( &m_pImpl->m_frame ));
184 
185  return VmbErrorSuccess;
186 }
187 
189 {
190  rpBuffer = m_pImpl->m_pBuffer;
191 
192  return VmbErrorSuccess;
193 }
194 
195 VmbErrorType Frame::GetBuffer( const VmbUchar_t* &rpBuffer ) const
196 {
197  rpBuffer = m_pImpl->m_pBuffer;
198 
199  return VmbErrorSuccess;
200 }
201 
203 {
204  // HINT: On Allied Vision cameras image data always is at the beginning of the buffer
205  rpBuffer = m_pImpl->m_pBuffer;
206 
207  return VmbErrorSuccess;
208 }
209 
210 VmbErrorType Frame::GetImage( const VmbUchar_t* &rpBuffer ) const
211 {
212  // HINT: On Allied Vision cameras image data always is at the beginning of the buffer
213  rpBuffer = m_pImpl->m_pBuffer;
214 
215  return VmbErrorSuccess;
216 }
217 
219 {
221 
222  return VmbErrorSuccess;
223 }
224 
226 {
227  rnImageSize = m_pImpl->m_frame.imageSize;
228 
229  return VmbErrorSuccess;
230 }
231 
233 {
234  rnAncillarySize = m_pImpl->m_frame.ancillarySize;
235 
236  return VmbErrorSuccess;
237 }
238 
240 {
241  rnBufferSize =m_pImpl-> m_frame.bufferSize;
242 
243  return VmbErrorSuccess;
244 }
245 
247 {
249 
250  return VmbErrorSuccess;
251 }
252 
254 {
255  rnWidth = m_pImpl->m_frame.width;
256 
257  return VmbErrorSuccess;
258 }
259 
261 {
262  rnHeight = m_pImpl->m_frame.height;
263 
264  return VmbErrorSuccess;
265 }
266 
268 {
269  rnOffsetX = m_pImpl->m_frame.offsetX;
270 
271  return VmbErrorSuccess;
272 }
273 
275 {
276  rnOffsetY = m_pImpl->m_frame.offsetY;
277 
278  return VmbErrorSuccess;
279 }
280 
282 {
283  rnFrameID = m_pImpl->m_frame.frameID;
284 
285  return VmbErrorSuccess;
286 }
287 
289 {
290  rnTimestamp = m_pImpl->m_frame.timestamp;
291 
292  return VmbErrorSuccess;
293 }
294 
295 }} // namespace AVT::VmbAPI
SharedPointerDefines.h
VmbFrame_t::timestamp
VmbUint64_t timestamp
Definition: VimbaC.h:291
AVT::VmbAPI::Frame::GetWidth
IMEXPORT VmbErrorType GetWidth(VmbUint32_t &width) const
Definition: Frame.cpp:253
VmbFrameFlagsNone
@ VmbFrameFlagsNone
Definition: VimbaC.h:257
AVT::VmbAPI::Frame::GetPixelFormat
IMEXPORT VmbErrorType GetPixelFormat(VmbPixelFormatType &pixelFormat) const
Definition: Frame.cpp:246
AVT::VmbAPI::Frame::Impl::Init
void Init()
Definition: Frame.cpp:90
AVT::VmbAPI::Mutex
Definition: Mutex.h:42
AVT
Definition: AncillaryData.h:35
VmbFrame_t::offsetX
VmbUint32_t offsetX
Definition: VimbaC.h:287
AVT::VmbAPI::Frame
Definition: Frame.h:43
VmbFrame_t::width
VmbUint32_t width
Definition: VimbaC.h:285
VmbErrorType
VmbErrorType
Definition: VmbCommonTypes.h:106
VmbFrame_t::imageSize
VmbUint32_t imageSize
Definition: VimbaC.h:280
VmbFrame_t::context
void * context[4]
Definition: VimbaC.h:274
AVT::VmbAPI::Frame::Impl::m_frame
VmbFrame_t m_frame
Definition: FrameImpl.h:41
AVT::VmbAPI::Frame::m_pImpl
Impl * m_pImpl
Definition: Frame.h:326
AVT::VmbAPI::Frame::GetHeight
IMEXPORT VmbErrorType GetHeight(VmbUint32_t &height) const
Definition: Frame.cpp:260
VmbFrame_t::bufferSize
VmbUint32_t bufferSize
Definition: VimbaC.h:272
VmbPixelFormatType
VmbPixelFormatType
Definition: VmbCommonTypes.h:173
VimbaSystem.h
AVT::VmbAPI::Frame::Frame
Frame()
Definition: Frame.cpp:39
LOG_FREE_TEXT
#define LOG_FREE_TEXT(txt)
Definition: LoggerDefines.h:56
AVT::VmbAPI::Frame::GetReceiveStatus
IMEXPORT VmbErrorType GetReceiveStatus(VmbFrameStatusType &status) const
Definition: Frame.cpp:218
VmbFrame_t::buffer
void * buffer
Definition: VimbaC.h:271
VmbUint64_t
unsigned long long VmbUint64_t
Definition: VmbCommonTypes.h:77
AVT::VmbAPI::Frame::operator=
Frame & operator=(const Frame &)
Definition: Frame.cpp:49
AVT::VmbAPI::Frame::Impl::m_pBuffer
VmbUchar_t * m_pBuffer
Definition: FrameImpl.h:38
VmbFrame_t::frameID
VmbUint64_t frameID
Definition: VimbaC.h:290
VmbFrame_t::pixelFormat
VmbPixelFormat_t pixelFormat
Definition: VimbaC.h:283
ConditionHelper.h
VmbFrame_t::receiveFlags
VmbFrameFlags_t receiveFlags
Definition: VimbaC.h:278
AVT::VmbAPI::Frame::Impl
Definition: FrameImpl.h:36
AVT::VmbAPI::Frame::Impl::m_bIsUserBuffer
bool m_bIsUserBuffer
Definition: FrameImpl.h:39
VmbFrameStatusInvalid
@ VmbFrameStatusInvalid
Definition: VimbaC.h:248
AVT::VmbAPI::Frame::Impl::m_bAlreadyAnnounced
bool m_bAlreadyAnnounced
Definition: FrameImpl.h:46
LoggerDefines.h
AVT::VmbAPI::Frame::GetBufferSize
IMEXPORT VmbErrorType GetBufferSize(VmbUint32_t &bufferSize) const
Definition: Frame.cpp:239
AVT::VmbAPI::Frame::Impl::m_pObserver
IFrameObserverPtr m_pObserver
Definition: FrameImpl.h:43
SP_ISNULL
#define SP_ISNULL(sp)
Definition: SharedPointerDefines.h:48
AVT::VmbAPI::Frame::RegisterObserver
IMEXPORT VmbErrorType RegisterObserver(const IFrameObserverPtr &pObserver)
Definition: Frame.cpp:123
VmbUint32_t
unsigned int VmbUint32_t
Definition: VmbCommonTypes.h:73
VmbErrorSuccess
@ VmbErrorSuccess
Definition: VmbCommonTypes.h:108
Frame.h
VmbFrameStatusType
VmbFrameStatusType
Definition: VimbaC.h:243
AVT::VmbAPI::Frame::~Frame
IMEXPORT ~Frame()
Definition: Frame.cpp:111
VmbFrame_t::receiveStatus
VmbFrameStatus_t receiveStatus
Definition: VimbaC.h:277
VmbInt64_t
long long VmbInt64_t
Definition: VmbCommonTypes.h:75
AVT::VmbAPI::Frame::GetAncillaryData
IMEXPORT VmbErrorType GetAncillaryData(AncillaryDataPtr &pAncillaryData)
Definition: Frame.cpp:164
FrameImpl.h
SP_SET
#define SP_SET(sp, rawPtr)
Definition: SharedPointerDefines.h:45
AVT::VmbAPI::Frame::GetTimestamp
IMEXPORT VmbErrorType GetTimestamp(VmbUint64_t &timestamp) const
Definition: Frame.cpp:288
AVT::VmbAPI::Frame::GetBuffer
IMEXPORT VmbErrorType GetBuffer(VmbUchar_t *&pBuffer)
Definition: Frame.cpp:188
AVT::VmbAPI::Frame::GetImage
IMEXPORT VmbErrorType GetImage(VmbUchar_t *&pBuffer)
Definition: Frame.cpp:202
VmbFrame_t::height
VmbUint32_t height
Definition: VimbaC.h:286
AVT::VmbAPI::Frame::GetOffsetX
IMEXPORT VmbErrorType GetOffsetX(VmbUint32_t &offsetX) const
Definition: Frame.cpp:267
AVT::VmbAPI::Frame::GetAncillarySize
IMEXPORT VmbErrorType GetAncillarySize(VmbUint32_t &ancillarySize) const
Definition: Frame.cpp:232
VmbFrame_t::ancillarySize
VmbUint32_t ancillarySize
Definition: VimbaC.h:281
AVT::VmbAPI::Frame::GetOffsetY
IMEXPORT VmbErrorType GetOffsetY(VmbUint32_t &offsetY) const
Definition: Frame.cpp:274
VmbFrame_t::offsetY
VmbUint32_t offsetY
Definition: VimbaC.h:288
SP_RESET
#define SP_RESET(sp)
Definition: SharedPointerDefines.h:46
AVT::VmbAPI::Frame::UnregisterObserver
IMEXPORT VmbErrorType UnregisterObserver()
Definition: Frame.cpp:136
VmbUchar_t
unsigned char VmbUchar_t
Definition: VmbCommonTypes.h:101
MutexGuard.h
VmbErrorBadParameter
@ VmbErrorBadParameter
Definition: VmbCommonTypes.h:115
AVT::VmbAPI::MutexGuard
Definition: MutexGuard.h:40
VmbErrorNotFound
@ VmbErrorNotFound
Definition: VmbCommonTypes.h:111
AVT::VmbAPI::Frame::Impl::m_bAlreadyQueued
bool m_bAlreadyQueued
Definition: FrameImpl.h:47
AVT::VmbAPI::Frame::GetFrameID
IMEXPORT VmbErrorType GetFrameID(VmbUint64_t &frameID) const
Definition: Frame.cpp:281
AVT::VmbAPI::Frame::Impl::m_pObserverMutex
MutexPtr m_pObserverMutex
Definition: FrameImpl.h:44
AVT::VmbAPI::Frame::GetObserver
bool GetObserver(IFrameObserverPtr &observer) const
Definition: Frame.cpp:153
AVT::VmbAPI::Frame::GetImageSize
IMEXPORT VmbErrorType GetImageSize(VmbUint32_t &imageSize) const
Definition: Frame.cpp:225
AVT::VmbAPI::AncillaryData
Definition: AncillaryData.h:38


avt_vimba_camera
Author(s): Allied Vision Technologies, Miquel Massot
autogenerated on Sat Jun 3 2023 02:14:12