MBOOL JpegCodec:: freeYuvMem(IImageBuffer **pBuf) { IImageBufferAllocator* allocator = IImageBufferAllocator::getInstance(); allocator->free(*pBuf); *pBuf = NULL; return MTRUE; }
MBOOL CapPass2:: freeMemory(sp<IImageBuffer>& targetBuf) { MBOOL ret = MFALSE; if( targetBuf.get() != NULL ) { IImageBufferAllocator* allocator = IImageBufferAllocator::getInstance(); if( !targetBuf->unlockBuf( LOG_TAG ) ) { MY_LOGE("unlock Buffer failed\n"); goto lbExit; } allocator->free(targetBuf.get()); targetBuf = NULL; } ret = MTRUE; lbExit: return ret; }
void Test_ImageBufferAllocator() { CAM_LOGD("++++++++++++++++ Test_ImageBufferAllocator ++++++++++++++++"); // // size_t bufStridesInBytes[3] = {2000, 1920, 960}; size_t bufBoundaryInBytes[3] = {0, 0, 0}; IImageBufferAllocator::ImgParam imgParam( eImgFmt_YV12, MSize(1920, 1080), bufStridesInBytes, bufBoundaryInBytes, 3 ); // MUINT32 size = 2048; IImageBufferAllocator::ImgParam imgParam_blob(size, 0); // MUINT32 buffer_size = 1280*720; IImageBufferAllocator::ImgParam imgParam_jpeg( MSize(1280, 720), buffer_size, 0 ); // //// raw pointer { // IImageBufferAllocator *allocator = IImageBufferAllocator::getInstance(); // //// blob IImageBuffer* pImgBuf_blob = allocator->alloc("Test_Allocator_raw_blob", imgParam_blob); OBJ_CHECK(pImgBuf_blob); test_imgbuf_blob(pImgBuf_blob->getMagicName(), pImgBuf_blob, size); allocator->free(pImgBuf_blob); // //// yuv 3p IImageBuffer* pImgBuf = allocator->alloc("Test_Allocator_raw_yuv3p", imgParam); OBJ_CHECK(pImgBuf); test_imgbuf_yuv420_3p(pImgBuf->getMagicName(), pImgBuf, imgParam); allocator->free(pImgBuf); // //// jpeg 1p IImageBuffer* pImgBuf_jpeg = allocator->alloc("Test_Allocator_raw_jpeg1p", imgParam_jpeg); OBJ_CHECK(pImgBuf_jpeg); test_imgbuf_jpeg_1p(pImgBuf_jpeg->getMagicName(), pImgBuf_jpeg, imgParam_jpeg); // MY_CHECK(buffer_size==pImgBuf_jpeg->getBitstreamSize(), "%d", pImgBuf_jpeg->getBitstreamSize()); MY_CHECK(!pImgBuf_jpeg->setBitstreamSize(7200000), "can not setBitstreamSize()"); MY_CHECK(buffer_size==pImgBuf_jpeg->getBitstreamSize(), "%d", pImgBuf_jpeg->getBitstreamSize()); MY_CHECK(pImgBuf_jpeg->setBitstreamSize(720000), "can setBitstreamSize()"); MY_CHECK(720000==pImgBuf_jpeg->getBitstreamSize(), "%d", pImgBuf_jpeg->getBitstreamSize()); allocator->free(pImgBuf_jpeg); // } // //// strong pointer { // IImageBufferAllocator *allocator = IImageBufferAllocator::getInstance(); // //// blob sp<IImageBuffer> spImgBuf_blob = allocator->alloc("Test_Allocator_sp_blob", imgParam_blob); OBJ_CHECK(spImgBuf_blob); allocator->free(spImgBuf_blob.get()); test_imgbuf_blob(spImgBuf_blob->getMagicName(), spImgBuf_blob.get(), size); // //// yuv 3p sp<IImageBuffer> spImgBuf = allocator->alloc("Test_Allocator_sp_yuv3p", imgParam); OBJ_CHECK(spImgBuf); allocator->free(spImgBuf.get()); test_imgbuf_yuv420_3p(spImgBuf->getMagicName(), spImgBuf.get(), imgParam); // } // CAM_LOGD("---------------- Test_ImageBufferAllocator ----------------"); }