opencore中如何开启OpenMax组件的PVLOGGER

前几天将打印等级改为5,出现了期盼的打印信息,但是仔细一看发现缺少底层OpenMax组件中的打印信息,接下来的几天一直在搞,可是始终没有结果。

但是————今天,打印信息出来了!!!哈哈哈,在此分享下方法,希望给像我这样的新手些帮助,节约时间,少做无用功。

首先看一下文件pv_omxdefs.h(androidsrc/external/opencore/codecs_v2/omx/omx_common/include).有以下内容:


//Enable/disable this switch to build the workspace with or without proxy
// 1 - Enable,  0 - disable
// 1 - Multithreaded, 0 - AO
#define PROXY_INTERFACE 1

#define PROFILING_ON 0

#if PROFILING_ON

#if PROXY_INTERFACE
#undef PROXY_INTERFACE
#endif

#endif


#if (PROXY_INTERFACE) && (PVLOGGER_INST_LEVEL>0)
// Logging in pv omx components that run in separate threads can only be done by sending a log into
// a separate file. The file is created and logging works unless built for release mode
// By default - logging for multi-threaded components is ON in dbg build
// TO DISABLE LOGGING IN OMX COMPONENTS - SET THE #define below to 0
#define PV_OMX_LOGGER_OUTPUT 0
#endif
起初看到上面的注释,认为PV_OMX_LOGGER_OUTPUT 是omx组件中打印信息的开关,就将这个值设定为1,重新编译,打开emulator,打开播放器,能看到文件列表,到这很正常,但是点击文件却不能播放,提示不能播放文件,logcat看一下有以下信息:

E/PV      (   31): PVLOG:TID(0xde50):Time=1106:PVMFOMXAudioDecNode::Initializing OMX component OMX.PV.mp3dec and decoder for role audio_decoder.mp3
I/DEBUG   (   28): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG   (   28): Build fingerprint: 'generic/generic/generic/:2.1-update1/ECLAIR/eng.root.20100513.172429:eng/test-keys'
I/DEBUG   (   28): pid: 31, tid: 238  >>> /system/bin/mediaserver <<<
I/DEBUG   (   28): signal 11 (SIGSEGV), fault addr deadbaad
I/DEBUG   (   28):  r0 00000000  r1 afe131cd  r2 00000027  r3 00000000
I/DEBUG   (   28):  r4 00000000  r5 deadbaad  r6 00002eec  r7 000000bd
I/DEBUG   (   28):  r8 00008000  r9 8070ae0d  10 40607000  fp 000c45c8
I/DEBUG   (   28):  ip ffffffff  sp 4060ed18  lr afe14189  pc afe10af8  cpsr 40000030
I/DEBUG   (   28):          #00  pc 00010af8  /system/lib/libc.so
I/DEBUG   (   28):          #01  pc 000232e0  /system/lib/libopencore_common.so
I/DEBUG   (   28):
I/DEBUG   (   28): code around pc:
I/DEBUG   (   28): afe10ae8 4e17d003 51a02001 4d164798 24002227
I/DEBUG   (   28): afe10af8 f7fb702a 2106efc2 e876f7fd 05592380
I/DEBUG   (   28): afe10b08 6091aa01 1c116054 94012006 ec64f7fc
I/DEBUG   (   28):
I/DEBUG   (   28): code around lr:
I/DEBUG   (   28): afe14178 220ce008 2b005eab 1c28d003 47889901
I/DEBUG   (   28): afe14188 35544306 d5f43f01 2c006824 b003d1ee
I/DEBUG   (   28): afe14198 bdf01c30 00024d18 000000b8 1c0fb5f0
I/DEBUG   (   28):
I/DEBUG   (   28): stack:
I/DEBUG   (   28):     4060ecd8  00000000 
I/DEBUG   (   28):     4060ecdc  a60cc4c1  /system/lib/libopencore_common.so
I/DEBUG   (   28):     4060ece0  afe38fa4  /system/lib/libc.so
I/DEBUG   (   28):     4060ece4  afe3bee4 
I/DEBUG   (   28):     4060ece8  00000000 
I/DEBUG   (   28):     4060ecec  afe14189  /system/lib/libc.so
I/DEBUG   (   28):     4060ecf0  a60cc253  /system/lib/libopencore_common.so
I/DEBUG   (   28):     4060ecf4  afe131cd  /system/lib/libc.so
I/DEBUG   (   28):     4060ecf8  000c5ff8  [heap]
I/DEBUG   (   28):     4060ecfc  afe38e88  /system/lib/libc.so
I/DEBUG   (   28):     4060ed00  00000000 
I/DEBUG   (   28):     4060ed04  00002eec 
I/DEBUG   (   28):     4060ed08  000000bd 
I/DEBUG   (   28):     4060ed0c  afe1346b  /system/lib/libc.so
I/DEBUG   (   28):     4060ed10  df002777 
I/DEBUG   (   28):     4060ed14  e3a070ad 
I/DEBUG   (   28): #00 4060ed18  a60cc253  /system/lib/libopencore_common.so
I/DEBUG   (   28):     4060ed1c  8071af14  /system/lib/libomx_sharedlibrary.so
I/DEBUG   (   28):     4060ed20  000000bd 
I/DEBUG   (   28):     4060ed24  a60266f7  /system/lib/libopencore_common.so
I/DEBUG   (   28):     4060ed28  000cefa0  [heap]
I/DEBUG   (   28):     4060ed2c  fffffbdf 
I/DEBUG   (   28):     4060ed30  a61039c8  /system/lib/libopencore_common.so
I/DEBUG   (   28):     4060ed34  a60cc253  /system/lib/libopencore_common.so
I/DEBUG   (   28):     4060ed38  8071af14  /system/lib/libomx_sharedlibrary.so
I/DEBUG   (   28):     4060ed3c  a60232e3  /system/lib/libopencore_common.so
I/DEBUG   (   28): #01 4060ed40  a61039c8  /system/lib/libopencore_common.so
I/DEBUG   (   28):     4060ed44  a60232e3  /system/lib/libopencore_common.so
I/DEBUG   (   28):     4060ed48  000000bd 
I/DEBUG   (   28):     4060ed4c  000cc190  [heap]
I/DEBUG   (   28):     4060ed50  000cc1f8  [heap]
I/DEBUG   (   28):     4060ed54  8071af08  /system/lib/libomx_sharedlibrary.so
I/DEBUG   (   28):     4060ed58  80725890  /system/lib/libomx_sharedlibrary.so
I/DEBUG   (   28):     4060ed5c  000cc120  [heap]
I/DEBUG   (   28):     4060ed60  80725890  /system/lib/libomx_sharedlibrary.so
I/DEBUG   (   28):     4060ed64  0001e84c  [heap]
I/DEBUG   (   28):     4060ed68  0001e830  [heap]
I/DEBUG   (   28):     4060ed6c  80709ea3  /system/lib/libomx_sharedlibrary.so
I/DEBUG   (   28):     4060ed70  00008000  /system/bin/mediaserver
I/DEBUG   (   28):     4060ed74  00000001 
I/DEBUG   (   28):     4060ed78  4060ed94 
I/DEBUG   (   28):     4060ed7c  4060eda4 
I/DEBUG   (   28):     4060ed80  4060edb8 
I/DEBUG   (   28):     4060ed84  8071aa97  /system/lib/libomx_sharedlibrary.so
W/MediaPlayer(  221): MediaPlayer server died!
E/MediaPlayer(  221): error (100, 0)
I/ServiceManager(   26): service 'media.audio_flinger' died
I/ServiceManager(   26): service 'media.player' died
I/ServiceManager(   26): service 'media.camera' died
I/ServiceManager(   26): service 'media.audio_policy' died
W/Service (  221): setForeground: ignoring old API call on org.iii.romulus.meridian.MusicPlaybackService
W/AudioSystem(   53): AudioFlinger server died!
W/AudioSystem(   53): AudioPolicyService server died!

*****

都“死掉了”!为什么呢?我也不清楚,希望高手看到能给些提示。(为什么会出现I/DEBUG?)

这时又回来将

#define PROFILING_ON 0设置为1,改为:

#define PROXY_INTERFACE 0

#define PROFILING_ON 1

再看logcat,打印信息就如愿出来。如下(播放的是MP3文件):

E/PV      (   31): PVLOG:TID(0xdf20):Time=1126:PVMFOMXAudioDecNode::DoPrepare(): Changing Component state Loaded -> Idle
E/PV      (   31): PVLOG:TID(0xdf20):Time=1127:OmxComponentBase : SendCommand IN
E/PV      (   31): PVLOG:TID(0xdf20):Time=1128:OpenmaxMp3AO : ComponentInit IN
E/PV      (   31): PVLOG:TID(0xdf20):Time=1129:OpenmaxMp3AO : ComponentInit OUT
E/PV      (   31): PVLOG:TID(0xdf20):Time=1130:PVSCHED:                                                      AO OMXComponent Request complete

这样就可以使用opencore自己的PVLOGGER_LOGMSG添加打印信息了,

其实在之前我就这么改过,但是omx组件的打印信息也没有出来,也没有出现不能播放的情况。为这件事将Android源码改了些地方,于是重新下了源码,又是这样一改竟然可以了。难不成我原先下的代码有问题???

你可能感兴趣的:(opencore中如何开启OpenMax组件的PVLOGGER)