DM8168,用的是dvrrdk4.01,数据从网络摄像头进来。分辨率是1600*1200,不知道8168支不支持这种不是很常规的分辨率的配置,如果支持的话该怎么配置呢?请各位帮帮忙,多谢!
Chris Meng:
Chu Hi,
网络摄像头进来,就是通过网络输入DM8168。DM8168解码是支持1600×1200的分辨率,需要修改最大支持的输入高度大于1200.
hl chu:
回复 Chris Meng:
Chris Hi,
感谢您的回复,请问应该在哪里改呢,还有2048*1536的分辨率。
Chris Meng:
回复 hl chu:
你好,
本地解码的例子应该是可以支持大于1920×1080的码流的。请问你是否有尝试过?
hl chu:
回复 Chris Meng:
Chris Hi,
感谢您的回复,我试了本地的解码例子,分辨率是1600*1200,播放不了。接收数据的线程里有组合I帧的部分:
// If I frame is recieved in multiple packets we need to accumulate them into one buffer – First packet if(pObj->gIPNC_info->readVidBuf[pObj->gIPNC_info->rVBTail] == 0x67 && pObj->gIPNC_info->readSizeV < 200) { printf("\nGot a frame in multiple packets-Start\n"); tmpSize += pObj->gIPNC_info->readSizeV; pObj->gIPNC_info->rVBTail = pObj->gIPNC_info->readSizeV; if(pObj->codecType == VCODEC_TYPE_H264) { pObj->gIPNC_info->readVidBuf[pObj->gIPNC_info->rVBTail+0] = 0x00; pObj->gIPNC_info->readVidBuf[pObj->gIPNC_info->rVBTail+1] = 0x00; pObj->gIPNC_info->readVidBuf[pObj->gIPNC_info->rVBTail+2] = 0x00; pObj->gIPNC_info->readVidBuf[pObj->gIPNC_info->rVBTail+3] = 0x01; pObj->gIPNC_info->rVBTail += 4; tmpSize += 4; pObj->gIPNC_info->readVidBuf += pObj->gIPNC_info->rVBTail; } continue; } // If I frame is recieved in multiple packets we need to accumulate them into one buffer – Middle packet if(tmpSize > 0 && pObj->gIPNC_info->readVidBuf[0] == 0x68) { printf("\nGot a frame in multiple packets-middle\n"); tmpSize += pObj->gIPNC_info->readSizeV; pObj->gIPNC_info->rVBTail = pObj->gIPNC_info->readSizeV; if(pObj->codecType == VCODEC_TYPE_H264) { pObj->gIPNC_info->readVidBuf[pObj->gIPNC_info->rVBTail+0] = 0x00; pObj->gIPNC_info->readVidBuf[pObj->gIPNC_info->rVBTail+1] = 0x00; pObj->gIPNC_info->readVidBuf[pObj->gIPNC_info->rVBTail+2] = 0x00; pObj->gIPNC_info->readVidBuf[pObj->gIPNC_info->rVBTail+3] = 0x01; pObj->gIPNC_info->rVBTail += 4; tmpSize += 4; pObj->gIPNC_info->readVidBuf += pObj->gIPNC_info->rVBTail; } continue; } // If I frame is recieved in multiple packets we need to accumulate them into one buffer – Last packet if(tmpSize > 0 && pObj->gIPNC_info->readVidBuf[pObj->gIPNC_info->rVBTail] == 0x65) { printf("\nGot a frame in multiple packets-End\n"); pObj->gIPNC_info->readSizeV += tmpSize; tmpSize = 0; //Reset this for next frame that comes in multiple packets }
一直打印Got a frame in multiple packets-Start和Got a frame in multiple packets-middle,没有Got a frame in multiple packets-End,I帧接收不完整,请问这会是什么原因导致的?
hl chu:
回复 hl chu:
如果数据源是1600*1200,是不是要在分辨率相关的地方增加匹配当前分辨率的部分,例如用到VSYS_STD_1080P_60,DC_MODE_1080P_60,FVID2_STD_1080P_60的地方。
Chris Meng:
回复 hl chu:
Chu Hi,
抱歉,我测试的是dec+display的demo,你的错误是在接收网络码流部分。
hl chu:
回复 Chris Meng:
Chris Hi,
感谢您的回复,如果用1920*1080的摄像头,能接收到packets-End,换1600*1200或者1024*1024的不行。接收网络码流的代码是RDK的,我只改了初始化时的长宽,为什么接收会有问题呢?
Chris Meng:
回复 hl chu:
Chu Hi,
网络接收侧的代码我不是很熟悉,建议你加些打印,调试一下。
hl chu:
回复 Chris Meng:
Chris Hi,
感谢您的回复,能不能让您熟悉这一块的同事也帮忙测试一下,我们的四路视频分辨率都不一样:
1920*1080,1024*1024,1600*1200,2048*1536,多谢!
hl chu:
回复 hl chu:
从1600*1200的摄像头都到的数据是:
前面一堆5577那种数据,这种数据不对吧,收不到I帧
TI中文支持网


