前几天将打印等级改为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源码改了些地方,于是重新下了源码,又是这样一改竟然可以了。难不成我原先下的代码有问题???