add mipi camera

This commit is contained in:
icetd 2025-02-12 05:49:14 +08:00
parent 9979af232a
commit c9ddc198fd
5 changed files with 37 additions and 5 deletions

View File

@ -6,6 +6,7 @@
#include <GroupsockHelper.hh>
#include <liveMedia.hh>
#include <string>
#include <memory>
#include "CamFramedSource.h"
#include "CamUnicastServerMediaSubsession.h"

View File

@ -15,6 +15,7 @@ typedef struct
int height;
int hor_stride;
int ver_stride;
int header_size;
int frame_size;
int fps;
int fix_qp;

View File

@ -4,6 +4,7 @@
#include "INIReader.h"
#include "log.h"
TransCoder::TransCoder()
{
init();
@ -18,6 +19,7 @@ void TransCoder::init()
std::list<uint32_t> formatList;
v4l2IoType ioTypeIn = IOTYPE_MMAP;
MppFrameFormat mpp_fmt;
v4l2_buf_type buf_type;
INIReader configs("./configs/config.ini");
if (configs.ParseError() < 0) {
@ -34,12 +36,35 @@ void TransCoder::init()
if (config.format == "YUY2") {
formatList.push_back(V4L2_PIX_FMT_YUYV);
mpp_fmt = MPP_FMT_YUV422_YUYV;
buf_type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
} else if (config.format == "MJPEG") {
formatList.push_back(V4L2_PIX_FMT_MJPEG);
mpp_fmt = MPP_FMT_YUV422P;
buf_type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
} else if (config.format == "NV12") {
formatList.push_back(V4L2_PIX_FMT_NV12);
mpp_fmt = MPP_FMT_YUV420SP;
buf_type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
} else if (config.format == "NV21") {
formatList.push_back(V4L2_PIX_FMT_NV21);
mpp_fmt = MPP_FMT_YUV420SP_VU;
buf_type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
} else if (config.format == "NV61") {
formatList.push_back(V4L2_PIX_FMT_NV16);
mpp_fmt = MPP_FMT_YUV422SP;
buf_type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
} else if (config.format == "NV16") {
formatList.push_back(V4L2_PIX_FMT_NV61);
mpp_fmt = MPP_FMT_YUV422SP_VU;
buf_type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
} else if (config.format == "UYVY") {
formatList.push_back(V4L2_PIX_FMT_UYVY);
mpp_fmt = MPP_FMT_YUV422_UYVY;
buf_type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
}
}
V4L2DeviceParameters param(config.device_name.c_str(),
formatList,
config.width,
@ -48,7 +73,9 @@ void TransCoder::init()
ioTypeIn,
DEBUG);
capture = V4l2Capture::create(param);
capture = V4l2Capture::create(param, buf_type);
encodeData = (uint8_t *)malloc(capture->getBufferSize());
decompress = new DeCompress();
@ -85,9 +112,12 @@ void TransCoder::run()
frameSize = rk_encoder->encode(yuv_buf, yuv_size, encodeData);
free(yuv_buf);
}
} else if (config.format == "YUY2") {
} else if (config.format != "MJPEG") {
frameSize = rk_encoder->encode(buffer, resize, encodeData);
} else {
break;
}
LOG(INFO, "encodeData size %d", frameSize);
if (rk_encoder->startCode3(encodeData))
startCode = 3;

@ -1 +1 @@
Subproject commit 86989e1caa9ce7cf895fe1ef3316a9dab41a9485
Subproject commit 33afc7753a1ddccc986871e7dc6403c1919e5ba8