邪恶漫画之妻子的秘密:Android Opencore OpenMAX学习(1)

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 11:49:05

Android Opencore OpenMAX学习(1)

文章分类:移动开发

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