DM365 resize的实现

DM365的encode 视频数据在编码之前可进行 resize,可将videoStd 为VideoStd_D1_PAL,ColorSpace为ColorSpace_UYVY的

视频图片resize成为videoStd 为VideoStd_VGA,ColorSpace为ColorSpace_YUV420PSEMI的图片。

测试了一下,当前DM365的resize有:

    /*ColorSpace_UYVY  VideoStd_D1_PAL  -------->  ColorSpace_UYVY  VideoStd_VGA (YES)*/
    /*ColorSpace_UYVY  VideoStd_D1_PAL  -------->  ColorSpace_YUV420PSEMI  VideoStd_VGA (YES)*/
    /*ColorSpace_YUV420PSEMI  VideoStd_D1_PAL  --------->  ColorSpace_YUV420PSEMI  VideoStd_VGA (NO)*/
    /*ColorSpace_YUV422PSEMI  VideoStd_D1_PAL  --------->  ColorSpace_YUV420PSEMI  VideoStd_VGA (NO)*/


注意在启动时将模式改为signal shot mod模式,即启动模式改为1,而不是0.

代码实现如下:


  //+++++++++++++++++++++++++++++++++++++++++//

  static Buffer_Handle GfxBufCreate( VideoStd_Type videoStd, ColorSpace_Type colorSpace, int useRound );


  //+++++++++++++++++++++++++++++++++++++++++//

  Resize_Handle           hResize;

  Resize_Attrs             resizeAttrs = Resize_Attrs_DEFAULT;

     VideoStd_Type           srcVideoStd   = VideoStd_D1_PAL;
     VideoStd_Type           destVideoStd   = VideoStd_VGA;

     ColorSpace_Type         colorInSpace = ColorSpace_UYVY;
     ColorSpace_Type         colorOutSpace = ColorSpace_YUV420PSEMI;

  Buffer_Handle            hOutResizeBuf, hInResizeBuf;

  Int32                   ret;


  ......


  /*create resize handle*/
     hResize = Resize_create(&resizeAttrs);


     /*config resize in buffer and out buffer*/
     if ( NULL == ( hInResizeBuf = GfxBufCreate( srcVideoStd, colorSpace, 1 ) ) )
     {  
         ERR("create resize in buffer failed!\n");
          cleanup(THREAD_FAILURE);
     }
    
     if ( NULL == ( hOutResizeBuf = GfxBufCreate( destVideoStd, colorSpace, 1 ) ) )
     {
         ERR("create resize in buffer failed!\n");
          cleanup(THREAD_FAILURE);
     }

     ret = Resize_config ( hResize, hInResizeBuf, hOutResizeBuf );
     if ( 0 != ret )
     {
        ERR("resize config failed ! \n");
          cleanup(THREAD_FAILURE);
   }


  //+++++++++++++++++++++++++++++++++++++++++//


  static Buffer_Handle GfxBufCreate( VideoStd_Type videoStd, ColorSpace_Type colorSpace, int useRound )
  {
      int bufSize = 0;
      BufferGfx_Attrs bufGfxAttr = BufferGfx_Attrs_DEFAULT;

      /*create resize in buffer*/
      bufSize = BufferGfx_calcSize ( videoStd, colorSpace );
      BufferGfx_calcDimensions ( videoStd, colorSpace, &bufGfxAttr.dim );
      bufGfxAttr.colorSpace = colorSpace;

      if ( useRound )
      {
          bufGfxAttr.dim.lineLength = Dmai_roundUp ( BufferGfx_calcLineLength( bufGfxAttr.dim.width, colorSpace ), ROUNDUPSIZE );
      }
    
      return Buffer_create ( bufSize, BufferGfx_getBufferAttrs ( &bufGfxAttr ) );
  }


  //+++++++++++++++++++++++++++++++++++++++++//


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值