v310 摄像头调试笔记---QQ视频对方发现颜色不对, 有红块, 并且本地预览闪烁的问题

问题1: QQ视频对方发现颜色不对, 有红块。

解决:  通过kernel打印CIOCTRL和CITRGFMT, 发现本机录像时用的是NV12格式,QQ视频时用的却是YUV420格式(yv12), 关于这两种格式网上有详细介绍。所以在HAL层修改如下即可解决:

void CameraHardwareSec::initDefaultParameters(int cameraId)
....

    parameterString = CameraParameters::PIXEL_FORMAT_YUV420P;
    parameterString.append(",");
    parameterString.append(CameraParameters::PIXEL_FORMAT_YUV420SP);
    p.set(CameraParameters::KEY_SUPPORTED_PREVIEW_FORMATS, parameterString.string());
   
    //p.setPreviewFormat(CameraParameters::PIXEL_FORMAT_YUV420P);
    p.setPreviewFormat(CameraParameters::PIXEL_FORMAT_YUV420SP);  //这个就是NV12格式

 

问题2: 本地预览闪烁的问题

QQ视频的数据是通过回调函数得到的, 如下:

previewThread()中的

    // Notify the client of a new frame.
    if ((mMsgEnabled & CAMERA_MSG_PREVIEW_FRAME) && mPreviewRunning)
        mDataCb(CAMERA_MSG_PREVIEW_FRAME, mPreviewHeap, index, NULL, mCallbackCookie);

实际运行时发现本机视频预览闪烁,

通过以下方式解决之:

删除原来的   

 // Notify the client of a new frame.
  /* if ((mMsgEnabled & CAMERA_MSG_PREVIEW_FRAME) && mPreviewRunning)
        mDataCb(CAMERA_MSG_PREVIEW_FRAME, mPreviewHeap, index, NULL, mCallbackCookie);
*/

 

添加如下的

#if (CAM_MODIFY_FOR_QQ_EN > 0)
   //qq视频取的数据来自下面
      if ((mMsgEnabled & CAMERA_MSG_PREVIEW_FRAME) && mPreviewRunning)
      {//复制一份预览的数据给qq视频
          camera_memory_t* cam_buff =
              mGetMemoryCb(-1, frame_size, 1, NULL);
          if (NULL != cam_buff && NULL != cam_buff->data) {
              memcpy(cam_buff->data, frame, frame_size);
              mDataCb(CAMERA_MSG_PREVIEW_FRAME, cam_buff, 0, NULL, mCallbackCookie);
              cam_buff->release(cam_buff);
          } else {
              LOGE("%s: Memory failure in CAMERA_MSG_PREVIEW_FRAME", __FUNCTION__);
          }
      }
#endif
实际上就是把预览的视频数据复制一份给QQ视频的回调函数。

 

    如果需要iBeacon基站开发, 请看这里  http://cc2540.taobao.com/    , 这里能提供基于cc2540cc2541的蓝牙4.0BLE开发的详细硬件和软件资料, QQ2045315160,  阿莫单片机论坛 www.amoMCU.com  提供技术支持。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值