Firefly开源社区

标题: 哪个用过硬解,我想问一下,upv_api.h这个里面的函数在哪个地方实现的 [打印本页]

作者: jhkwei    时间: 2015-12-8 15:32
标题: 哪个用过硬解,我想问一下,upv_api.h这个里面的函数在哪个地方实现的
哪个用过硬解,我想问一下,upv_api.h这个里面的函数在哪个地方实现的,我找了好久没有找到。
就是下面以的
  1. typedef struct VpuCodecContext {
  2.     void* vpuApiObj;

  3.     CODEC_TYPE codecType;
  4.     OMX_RK_VIDEO_CODINGTYPE videoCoding;

  5.     RK_U32 width;
  6.     RK_U32 height;
  7.     RK_U8 *extradata;
  8.     RK_S32 extradata_size;

  9.     RK_U8  enableparsing;



  10.     RK_S32 no_thread;
  11.     EXtraCfg_t extra_cfg;

  12.     void* private_data;

  13.     /*
  14.      ** 1: error state(not working)  0: working
  15.     */
  16.     RK_S32 decoder_err;


  17.     /**
  18.      * Allocate and initialize an VpuCodecContext.
  19.      *
  20.      * @param ctx The context of vpu api, allocated in this function.
  21.      * @param extraData The extra data of codec, some codecs need / can
  22.      *        use extradata like Huffman tables, also live VC1 codec can
  23.      *        use extradata to initialize itself.
  24.      * @param extra_size The size of extra data.
  25.      *
  26.      * @return 0 for init success, others for failure.
  27.      * note: check whether ctx has been allocated success after you do init.
  28.      */
  29.     RK_S32 (*init)(struct VpuCodecContext *ctx, RK_U8 *extraData, RK_U32 extra_size);

  30.     /**
  31.      * @return 0 for decode success, others for failure.
  32.      */
  33.     RK_S32 (*decode)(struct VpuCodecContext *ctx, VideoPacket_t *pkt, DecoderOut_t *aDecOut);

  34.     /**
  35.      * @return 0 for encode success, others for failure.
  36.      */
  37.     RK_S32 (*encode)(struct VpuCodecContext *ctx, EncInputStream_t *aEncInStrm, EncoderOut_t *aEncOut);

  38.     /**
  39.      * flush codec while do fast forward playing.
  40.      *
  41.      * @return 0 for flush success, others for failure.
  42.      */
  43.     RK_S32 (*flush)(struct VpuCodecContext *ctx);
  44.     RK_S32 (*control)(struct VpuCodecContext *ctx, VPU_API_CMD cmdType, void* param);
  45.     /**
  46.      *seperate the decode function to two function
  47.      *
  48.     */
  49.     RK_S32 (*decode_sendstream)(struct VpuCodecContext *ctx, VideoPacket_t *pkt);
  50.     RK_S32 (*decode_getframe)(struct VpuCodecContext *ctx, DecoderOut_t *aDecOut);

  51.     RK_S32 (*encoder_sendframe)(struct VpuCodecContext *ctx,  EncInputStream_t *aEncInStrm);
  52.     RK_S32 (*encoder_getstream)(struct VpuCodecContext *ctx, EncoderOut_t *aEncOut);
  53. }VpuCodecContext_t;

  54. /* allocated vpu codec context */
  55. #ifdef __cplusplus
  56. extern "C"
  57. {
  58. #endif
  59. RK_S32 vpu_open_context(struct VpuCodecContext **ctx);
  60. #ifdef __cplusplus
  61. }
  62. #endif

  63. #ifdef __cplusplus
  64. extern "C"
  65. {
  66. #endif
  67. RK_S32 vpu_close_context(struct VpuCodecContext **ctx);
  68. #ifdef __cplusplus
  69. }
  70. #endif

  71. typedef RK_S32 (*VpuOpenContextFactoryFun)(struct VpuCodecContext **ctx);
  72. typedef RK_S32 (*VpuCloseContextFactoryFun)(struct VpuCodecContext **ctx);
复制代码

作者: scue    时间: 2016-4-19 11:22
libvpu.so,应该没有开放源码。
作者: scue    时间: 2016-4-19 11:25
本帖最后由 scue 于 2016-4-19 11:34 编辑

可以查看一下这里: vendor/rockchip/common/vpu/lib/arm/librk_vpuapi.so

[mw_shl_code=c,false]    /**
     *seperate the decode function to two function
     *
    */
    RK_S32 (*decode_sendstream)(struct VpuCodecContext *ctx, VideoPacket_t *pkt);
    RK_S32 (*decode_getframe)(struct VpuCodecContext *ctx, DecoderOut_t *aDecOut);[/mw_shl_code]


arm-linux-androideabi-nm -D lib/arm/librk_vpuapi.so  | grep decode_
00015cd4 T _ZN6VpuApi17decode_sendstreamEP15VpuCodecContextP11VideoPacket
00016310 T _ZN6VpuApi18decode_getoutframeEP15VpuCodecContextP10DecoderOut






作者: sun_echo    时间: 2016-7-14 13:43
scue 发表于 2016-4-19 11:25
可以查看一下这里: vendor/rockchip/common/vpu/lib/arm/librk_vpuapi.so

[mw_shl_code=c,false]    /* ...

hello;
在ubuntu系统下也可以实现h264的硬解么?硬解1080p的h264时cpu使用率有多少?有没有成熟的方案?




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1