1 OMX core methods
5 @: d& C: h2 [ 1)OMX_Init
2 l, z9 i) y3 P- A5 p 2)OMX_Deinit
3 ^! K6 R2 Q: o0 q 3)OMX_GetHandle: @$ e* F6 G0 i5 d! Z* Z
4)OMX_FreeHandle
0 X" L3 Y/ r3 D& n0 c 5)OMX_ComponentNameEnum/ V. ]" H8 u! G @ E. r3 G# t C
6)OMX_GetComponentsOfRole
2 D. I+ s1 }( A5 N! r7 l 7)OMX_GetRolesOfComponent
/ K; H) u) `7 n, ^" s4 z 8)OMX_SetupTunnel" m, e0 c( v0 i8 `
9)OMX_GetContentPipe
# Z/ ]2 q* z4 c/ f % n- A$ z9 D2 y% ^! \0 z7 X0 ]9 A
2 The configuration parser API
! g/ j( Q/ _0 d4 g 除了以上methods,强烈推荐OMX核心插件库包含此API4 j0 I. G, J$ `, _/ m/ x- l. ]
2.1函数原型
& A9 D8 |4 K6 G OMX_BOOL OMXConfigParser ( OMX_PTR aInputParameters,OMX_PTR aOutputParameters);
; [: }4 v0 P& B 2.2 传递参数5 _) e5 A9 t% w& D
aInputParameters 指向如下结构- r" C( Y c& K+ t- u; K
typedef struct, G! a. \+ {( C' W( \( e
{
3 C& V, Q) o3 t1 j A1 M! s$ m OMX_U8* inPtr; //codec 配置头部指针: A9 S `+ p) }
OMX_U32 inBytes; //codec 配置头部长度, O: R7 K; ^: |+ S3 O
OMX_STRING cComponentRole; //OMX codec类型 eg "video_decoder.mpeg4"3 f! T" {& x: H; z3 z) F6 b
OMX_STRING cComponentName; //OMX 组件名称
3 v- h, z: M+ |- q# H. i } OMXConfigParserInputs;9 s1 j |2 s& O9 ^- q' q
2.3 返回值; X/ ?4 W1 u8 f6 x
OMX_FALSE : 处理codec配置头部错误或不支持该格式
& {& T' z% \- R, @6 R6 N) w; M OMX_TURE : 正确处理codec配置头部
$ C0 W5 m3 h( u, H" V* f8 f& b 2.4 函数作用
! T; A* y O- i 填充aOutputParameters,有两种选择:audio coded or vedio codec
2 u/ h: J0 k% v" }* Y4 Z for audio
, h" q" g" o: X* [" U typedef struct
+ ]2 l) G! {; S9 ? {9 \0 G* s4 T/ K$ k: w
OMX_U16 Channels; //通道:单声道、立体声、5.1
( Z, J1 [+ d6 \ OMX_U16 BitsPerSample; //位宽(eg16)
" O( o8 M9 c8 Y4 c* B7 w, x9 ~& a4 l( R OMX_U32 SamplesPerSec; //采样率
! x5 U5 b% T! l; K" h } AudioOMXConfigParserOutputs;% w$ t, d( Z' b4 r: E! ^
typedef struct/ p5 j9 M+ Q) O5 Y
{
+ M4 c% S/ Z2 b0 \ OMX_U32 width; //检测到的视频剪辑宽度* k' A7 i6 v+ `$ B' s
OMX_U32 height; //检测到的视频剪辑高度5 X2 _' u7 a' H! j
OMX_U32 profile; //参数
0 Y- e) u+ Z0 y, L: f OMX_U32 level; //级别?
9 r$ [+ [/ {: w1 w( c ]6 c } VideoOMXConfigParserOutputs;
" _0 x P/ }8 O* o 3 动态加载OMX内核/ L7 ~) j8 ?; R9 p, @1 u
解释了\system\system\etc\pvplayer.cfg文件中最后一行的含义' q- a% k) W! T4 Y1 b$ U' f
(0xa054369c,0x22c5,0x412e,0x19,0x17,0x87,0x4c,0x1a,0x19,0xd4,0x5f),"libomx_sharedlibrary.so"
1 W# B8 _3 k4 d9 F7 u 作用:将OMX内核动态加载进OpenCORE框架 j8 C$ [; p- A8 {
位置:\system\system\etc\pvplayer.cfg9 J. i0 u4 d, e! A6 q
形式:(OMX Core API OsclUuid), “shared library name.so”
' b/ g- u- w+ ~& f6 H eg:(0xa054369c,0x22c5,0x412e,0x19,0x17,0x87,0x4c,0x1a,0x19,0xd4,0x5f),"libomx_core_vendorXYZ.so"
" h+ |% a2 U& N. C 注意:(0xa054369c,0x22c5,0x412e,0x19,0x17,0x87,0x4c,0x1a,0x19,0xd4,0x5f) 提供独立API ID,不可修改8 L1 b' [% ]. s
& `( {% M# r% ?' G! j' A1 B" V; C Rockie Cheng
; N! e J6 e# S& T 来自/external/opencore/doc/omx_core_integration_guide.pdf' U ^ d1 M3 O
联系客服