int CoreCallback::InsertMultiChannel(const MM::Device* caller, const unsigned char* buf, unsigned numChannels, unsigned width, unsigned height, unsigned byteDepth, Metadata* pMd) { try { MM::ImageProcessor* ip = GetImageProcessor(caller); if( NULL != ip) { ip->Process( const_cast<unsigned char*>(buf), width, height, byteDepth); } if (core_->cbuf_->InsertMultiChannel(buf, numChannels, width, height, byteDepth, pMd)) return DEVICE_OK; else return DEVICE_BUFFER_OVERFLOW; } catch (CMMError& /*e*/) { return DEVICE_INCOMPATIBLE_IMAGE; } }
int CoreCallback::InsertImage(const MM::Device* caller, const ImgBuffer & imgBuf) { Metadata md = imgBuf.GetMetadata(); unsigned char* p = const_cast<unsigned char*>(imgBuf.GetPixels()); MM::ImageProcessor* ip = GetImageProcessor(caller); if( NULL != ip) { ip->Process(p, imgBuf.Width(), imgBuf.Height(), imgBuf.Depth()); } return InsertImage(caller, imgBuf.GetPixels(), imgBuf.Width(), imgBuf.Height(), imgBuf.Depth(), &md); }
int CoreCallback::InsertImage(const MM::Device* caller, const unsigned char* buf, unsigned width, unsigned height, unsigned byteDepth, const Metadata* pMd, bool doProcess) { try { Metadata md = AddCameraMetadata(caller, pMd); if(doProcess) { MM::ImageProcessor* ip = GetImageProcessor(caller); if( NULL != ip) { ip->Process(const_cast<unsigned char*>(buf), width, height, byteDepth); } } if (core_->cbuf_->InsertImage(buf, width, height, byteDepth, &md)) return DEVICE_OK; else return DEVICE_BUFFER_OVERFLOW; } catch (CMMError& /*e*/) { return DEVICE_INCOMPATIBLE_IMAGE; } }