use dynamic buffer

This commit is contained in:
icetd 2025-02-12 17:46:11 +08:00
parent e302f04f0a
commit aa3b632092
3 changed files with 7 additions and 4 deletions

View File

@ -43,7 +43,7 @@ bitrate = 1440
## function
- support YUY2 or MJPEG format usb camera.
- support hardware h264 encode.
- wupport NV12 NV16 NV21 NV61 format mipi csi camera. (test max support 2560x1440)
- wupport NV12 NV16 NV21 NV61 format mipi csi camera. (test max support 4224x3136)
## Benefits of improvement
- RkCamRtspServer cpu usage

View File

@ -98,7 +98,7 @@ int RkEncoder::init()
* 40 / 41 / 42 - 1080p@30fps / 1080p@30fps / 1080p@60fps
* 50 / 51 / 52 - 4K@30fps
*/
mpp_enc_cfg_set_s32(cfg, "h264:level", 40);
mpp_enc_cfg_set_s32(cfg, "h264:level", 52);
mpp_enc_cfg_set_s32(cfg, "h264:cabac_en", 1);
mpp_enc_cfg_set_s32(cfg, "h264:cabac_idc", 0);
mpp_enc_cfg_set_s32(cfg, "h264:trans8x8", 1);

View File

@ -96,15 +96,17 @@ void TransCoder::init()
void TransCoder::run()
{
uint8_t *buffer;
timeval tv;
for (;;) {
tv.tv_sec = 1;
tv.tv_usec = 0;
int startCode = 0;
int ret = capture->isReadable(&tv);
buffer =(uint8_t*) malloc(capture->getBufferSize());
if (ret == 1) {
uint8_t buffer[capture->getBufferSize()];
int resize = capture->read((char *)buffer, sizeof(buffer));
int resize = capture->read((char *)buffer, capture->getBufferSize());
frameSize = 0;
if (config.format == "MJPEG") {
ret = decompress->tjpeg2yuv(buffer, resize, &yuv_buf, &yuv_size);
@ -126,6 +128,7 @@ void TransCoder::run()
if (onEncodedDataCallback && frameSize > 0) {
onEncodedDataCallback(std::vector<uint8_t>(encodeData + startCode, encodeData + frameSize));
free(buffer);
}
} else if (ret == -1) {
LOG(ERROR, "stop %s", strerror(errno));