4412支持MFC硬编码

手里项目需要通过网络实时传输图像信息,但是由于图像分辨率太高,所以在传输的时候,每一帧图像的传输都需要很长时间,再到客户端解析。拖泥带水的感觉真的非常不好。而使用的ARM芯片本身是能够支持H.264格式硬编码的,所以尝试一下,看看能不能解决点问题。

源代码是这个兄弟的:点击打开链接,但是因为Linux内核版本不同,导致使用的Android系统的版本也不一样,所以下载下来的东西并不能直接使用,需要把SsbSipMfcApi.h SsbSipMfcEncApi.c mfc_interface.h和mfc_error.h,重新替换成所使用的Linux内核版本对应的,Android系统版本的相应的文件。文件目录再Android源码根目录/device/samsung/multimedia/codecs/video/exynos4/mfc/enc下。然后需要稍微修改一下SsbSipMfcEncApi.c文件。如下

  #include <stdio.h>
  #include <stdlib.h>
  #include <unistd.h>
  #include <string.h>
  #include <fcntl.h>
   
  #include <sys/types.h>
  #include <sys/stat.h>
  #include <sys/ioctl.h>
  #include <sys/mman.h>
  #include <math.h>
   
  #include "mfc_interface.h"
  #include "SsbSipMfcApi.h"
 #if 0
  #include <utils/Log.h>
 /* #define LOG_NDEBUG 0 */
  #undef  LOG_TAG
  #define LOG_TAG "MFC_ENC_APP"
#endif
   
  #define _MFCLIB_MAGIC_NUMBER    0x92241001 

  void LOGE(char *m, ...)
  {
      printf(m);
  }
   
  void LOGV(char *m, ...)
  {
      printf(m);
  }
   
  void LOGI(char *m, ...)
  {
      printf(m);
  }
  void *SsbSipMfcEncOpen(void)         
  {                                    
      int hMFCOpen;                    
      _MFCLIB *pCTX = NULL;            
      unsigned int mapped_addr;        
      int mapped_size;                 
      struct mfc_common_args CommonArg;
                                       
      //LOGI("[%s] MFC Library Ver %d.%02d",__func__, MFC_LIB_VER_MAJOR, MFC_LIB_VER_MINOR);

原因很简单,LOGV这些东西在现有的环境下是没有的。你可以直接把所有的都删掉,也就是不要调试信息。或者像上面一样自己造一个。虽然能够实现编码,但是我并没有真正的了解h264这种编码方式,后续需要继续学习。编码前51Mb的东西,编码后只有761Kb。真的太强大了。

还有需要会点Linux内核的配置,在我使用的3.0.15版的Linux内核上,MFC的操作方式支持两种,一种是古老的MFC作为单独的设备节点来使用,另外一种时集成到V4L2架构中的。当前实现的是使用古老方式MFC作为单独的设备节点来使用。V4L2现在对我来说有点复杂,里面的参数太多了。

使用MPlayer播放yuv格式和264格式文件的方法

mplayer -demuxer rawvideo -rawvideo w=176:h=144 test.yuv

mplayer -fps 30 test.264


参考:

基于V4L2 MFC 视频编解码

嵌入式专题: S5PV210 - MFC硬件解码

还有很多..........

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值