use dynamic buffer
This commit is contained in:
parent
e302f04f0a
commit
aa3b632092
@ -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
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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));
|
||||
|
||||
Loading…
Reference in New Issue
Block a user