Skip to content

Commit

Permalink
Merge branch 'main' of https://github.com/Apra-Labs/ApraPipes into Mp…
Browse files Browse the repository at this point in the history
…4WriterVideoPlaybackFix
  • Loading branch information
mohammedzakikochargi committed Jul 14, 2023
2 parents 1d57d4d + c9b51d3 commit ced2df1
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 1 deletion.
14 changes: 13 additions & 1 deletion base/include/DMAAllocator.h
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ class DMAAllocator : public HostAllocator
}
}

static void setMetadata(framemetadata_sp &metadata, int width, int height, ImageMetadata::ImageType imageType)
static void setMetadata(framemetadata_sp &metadata, int width, int height, ImageMetadata::ImageType imageType,size_t pitchValues[4] = nullptr, size_t offsetValues[4] = nullptr)
{
auto eglDisplay = ApraEGLDisplay::getEGLDisplay();
auto colorFormat = getColorFormat(imageType);
Expand Down Expand Up @@ -144,6 +144,10 @@ class DMAAllocator : public HostAllocator
auto inputRawMetadata = FrameMetadataFactory::downcast<RawImageMetadata>(metadata);
RawImageMetadata rawMetadata(width, height, imageType, type, fdParams.pitch[0], CV_8U, FrameMetadata::MemType::DMABUF, false);
inputRawMetadata->setData(rawMetadata);
if(pitchValues != nullptr)
{
pitchValues[0] = fdParams.pitch[0];
}
}
break;
case FrameMetadata::FrameType::RAW_IMAGE_PLANAR:
Expand All @@ -153,6 +157,14 @@ class DMAAllocator : public HostAllocator
for (auto i = 0; i < fdParams.num_planes; i++)
{
step[i] = fdParams.pitch[i];
if(pitchValues != nullptr)
{
pitchValues[i] = fdParams.pitch[i];
}
if(offsetValues != nullptr)
{
offsetValues[i] = fdParams.offset[i];
}
}
RawImagePlanarMetadata rawMetadata(width, height, imageType, step, CV_8U, FrameMetadata::MemType::DMABUF);
inputRawMetadata->setData(rawMetadata);
Expand Down
51 changes: 51 additions & 0 deletions base/test/frame_factory_test_dma.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
#include "RawImageMetadata.h"
#include "RawImagePlanarMetadata.h"
#include "DMAFDWrapper.h"
#include "DMAAllocator.h"
#include "Logger.h"

#include <fstream>

Expand Down Expand Up @@ -186,4 +188,53 @@ BOOST_AUTO_TEST_CASE(save_rgba)
}
}

BOOST_AUTO_TEST_CASE(setMetadata_rawimage)
{
LoggerProps logprops;
logprops.logLevel = boost::log::trivial::severity_level::info;
Logger::initLogger(logprops);

uint32_t width = 1280;
uint32_t height = 720;
size_t size = width * height * 4;
size_t pitch[4] = {0,0,0,0};
auto metadata = framemetadata_sp(new RawImageMetadata(width, height, ImageMetadata::ImageType::RGBA, CV_8UC4, size_t(0), CV_8U, FrameMetadata::MemType::DMABUF, true));
DMAAllocator::setMetadata(metadata,1280,720,ImageMetadata::ImageType::RGBA,pitch);
size_t mPitch[1] = { pitch[0] };
LOG_INFO << "mPitch: " << mPitch[0];
}

BOOST_AUTO_TEST_CASE(setMetadata_rawplanarimage)
{
LoggerProps logprops;
logprops.logLevel = boost::log::trivial::severity_level::info;
Logger::initLogger(logprops);

uint32_t width = 1280;
uint32_t height = 720;
size_t size = width * height * 4;
size_t pitch[4] = {0,0,0,0};
size_t offset[4] = {0,0,0,0};
auto metadata = framemetadata_sp(new RawImagePlanarMetadata(width, height, ImageMetadata::ImageType::YUV420, size_t(0), CV_8U, FrameMetadata::MemType::DMABUF));
DMAAllocator::setMetadata(metadata,1280,720,ImageMetadata::ImageType::YUV420,pitch,offset);
size_t mPitch[4];
size_t mOffset[4];
for (int i = 0; i < 4; i++)
{
mOffset[i] = offset[i];
mPitch[i] = pitch[i];
}
LOG_INFO << "mPitch values: ";
for (int i = 0; i < 4; i++)
{
LOG_INFO << mPitch[i] << " ";
}

LOG_INFO << "mOffset values: ";
for (int i = 0; i < 4; i++)
{
LOG_INFO << mOffset[i] << " ";
}
}

BOOST_AUTO_TEST_SUITE_END()

0 comments on commit ced2df1

Please sign in to comment.