Включение аппаратного кодировщика в Jelly bean 4.1.1 rowboat DM3730

Прошу прощения за немного более длинное описание проблемы.

У меня есть специальная плата с процессором DM3730, и я собираю лодку для Android из

 http://code.google.com/p/rowboat/wiki/JellybeanOnBeagleboard_WithSGX

ЦЕЛЬ: ВКЛЮЧЕНИЕ АППАРАТНОГО ДЕКОДЕРА.

2.1) Для этого мне нужен интерфейс OMAX-IL. Отсюда посмотрел исходный код, скачанный с TI. Но я не нахожу каталог omap3/ в разделе hardware/ti/, который представляет реализацию OMX.

2.2) Следовательно, скачанный из AOSP Jelly Bean Code By:

git clone https://android.googlesource.com/platform/hardware/ti/omap3  -b jb-release

2.3) Согласно https://source.android.com/devices/media.html.

   * I could build  libstagefrighthw.so, libOMX_Core.so, OMX.TI.Video.Decoder.so   [ ofcourse with commenting some error lines..]

2.4) Изменен media_codec.xml, чтобы сохранить следующую запись:

 <MediaCodec name="OMX.TI.Video.Decoder" type="video/avc"/>

2.5) Создал DSP в соответствии с [ Примечание: я взял последнюю ] IE: DVSDK

 http://code.google.com/p/rowboat/wiki/DSP#Instruction_Difference_for_Build_and_Run_Froyo+DSP

 Instead of 
              http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/dvsdk/DVSDK_4_00/4_01_00_09/index_FDS.html

 took new version of dvsdk from below link;

              http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/dvsdk/DVSDK_4_00/latest/index_FDS.html

Сначала подумайте, хотели бы подтвердить, правильный ли это подход? или какие другие основы, о которых мне нужно знать?

Где я попал?

 1)  DSP Layer generates two device files /dev/dsplink and /dev/cmem.   
     whereas the dspbridge in omap3/ tries to communicate with /dev/DspBridge.

     Hence i created symbolic link to /dev/DspBridge to /dev/dsplink. 

 2)   Found the below Flow right from the framework.

               1)    OMXMaster Loads libstagefrighthw.so, and get the Plugin Instance.
               2)    Plugin Instance loads libOMX_Core.so.
               3)    Now the Component libOMX.TI.Video.Decode is detected,

 3)  I tried two things:

      3.1) Getting into gallery: I got into the below issue while accessing album.

D/TIOMX_CORE( 1068): Found component OMX.TI.Video.Decoder with refCount 0
I/TI_Video_Decoder( 1068): TI Video Decoder
I/OMXCodec( 1068): [OMX.TI.Video.Decoder] AVC profile = 100 (High), level = 31
I/OMXCodec( 1068): [OMX.TI.Video.Decoder] video dimensions are 1280 x 720
D/TI_Video_Decoder( 1068): VIDDEC_SendCommand: Received request from omx client to change state to 2
D/TI_Video_Decoder( 1068): Handle request for state transition: 1 => OMX_StateIdle
D/TI_Video_Decoder( 1068): VIDDEC_InitDSP_H264Dec():7191 LCML_InitMMCodec Failed!...80001009
D/TI_Video_Decoder( 1068): VIDDEC_HandleCommand():2584 LCML Error 1
E/OMXCodec( 1068): [OMX.TI.Video.Decoder] ERROR(0x80001009, 2)
W/StagefrightMetadataRetriever( 1068): OMXCodec::start returned error -2147483648 (0x80000000)
D/dalvikvm( 1672): GC_FOR_ALLOC freed 52K, 4% free 6911K/7175K, paused 16ms, total 19ms
E/libEGL  ( 1672): called unimplemented OpenGL ES API
E/libEGL  ( 1672): called unimplemented OpenGL ES API
I/ARMAssembler( 1672): generated scanline__00000177:03010104_00008001_00000000 [105 ipp] (129 ins) at [0x5e32c7e8:0x5e32c9ec] in 183106 ns
E/libEGL  ( 1672): called unimplemented OpenGL ES API
E/WVMExtractor( 1068): Failed to open libwvm.so
E/MetadataRetrieverClient( 1068): failed to extract an album art
E/MediaMetadataRetrieverJNI( 1672): getEmbeddedPicture: Call to getEmbeddedPicture failed.
D/TIOMX_CORE( 1068): Found component OMX.TI.Video.Decoder with refCount 1
E/TIOMX_CORE( 1068): Max instances of component OMX.TI.Video.Decoder already created.
D/TIOMX_CORE( 1068): Found component OMX.TI.Video.Decoder with refCount 1
E/TIOMX_CORE( 1068): Max instances of component OMX.TI.Video.Decoder already created.
E/MetadataRetrieverClient( 1068): failed to capture a video frame
E/MediaMetadataRetrieverJNI( 1672): getFrameAtTime: videoFrame is a NULL pointer
W/ImageCacheRequest( 1672): decode orig failed /local/video/item/41,MICROTHUMB
D/TI_Video_Decoder( 1068): VIDDEC_GetState():2334 VIDDEC_GetState timed out
D/TIOMX_CORE( 1068): Found matching pHandle(0x41d805e0) at index 1 with refCount 1
D/TIOMX_CORE( 1068): Found component OMX.TI.Video.Decoder with refCount 0
I/TI_Video_Decoder( 1068): TI Video Decoder
I/OMXCodec( 1068): [OMX.TI.Video.Decoder] AVC profile = 100 (High), level = 31
I/OMXCodec( 1068): [OMX.TI.Video.Decoder] video dimensions are 1280 x 720
F/MPEG4Extractor( 1068): frameworks/av/media/libstagefright/MPEG4Extractor.cpp:1936 CHECK(!mStarted) failed.
F/libc    ( 1068): Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1), thread 1068 (mediaserver)
I/DEBUG   ( 1064): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG   ( 1064): Build fingerprint: 'Android/omap3evm/omap3evm:4.1.2/JZO54K/eng.ramprakash.20140407.195934:userdebug/test-keys'
I/DEBUG   ( 1064): pid: 1068, tid: 1068, name: mediaserver  >>> /system/bin/mediaserver <<<
I/DEBUG   ( 1064): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadbaad
I/DEBUG   ( 1064):     r0 00000027  r1 deadbaad  r2 000000a2  r3 00000000
I/DEBUG   ( 1064):     r4 00000000  r5 be89f504  r6 41d8eb30  r7 00000000
I/DEBUG   ( 1064):     r8 41d8eb30  r9 00000002  sl ffffffff  fp ffffffff
I/DEBUG   ( 1064):     ip fffd2bec  sp be89f500  lr 400ee9e9  pc 400eb086  cpsr 60000030
I/DEBUG   ( 1064):     d0  2f616964656d2f66  d1  6567617473626961
I/DEBUG   ( 1064):     d2  4d2f746867697269  d3  727478453447456c

Неудача в

D/TI_Video_Decoder( 1068): VIDDEC_InitDSP_H264Dec():7191 LCML_InitMMCodec Failed!...80001009

3.2 Запуск видео высокой четкости с помощью медиаплеера. Ниже приведен логкэт.

D/TIOMX_CORE( 1723): Found component OMX.TI.Video.Decoder with refCount 0
I/TI_Video_Decoder( 1723): TI Video Decoder 
D/TI_Video_Decoder( 1723): OMX_ComponentInit():377 INIT_STRUCT Major 0x1 Minor 0x0 nRevision 0x0 nStep 0x0
D/TI_Video_Decoder( 1723): VIDDEC_Load_Defaults():832 INIT_STRUCT Major 0x1 Minor 0x0 nRevision 0x0 nStep 0x0
D/TI_Video_Decoder( 1723): VIDDEC_Load_Defaults():836 INIT_STRUCT Major 0x1 Minor 0x0 nRevision 0x0 nStep 0x0
D/TI_Video_Decoder( 1723): VIDDEC_Load_Defaults():839 INIT_STRUCT Major 0x1 Minor 0x0 nRevision 0x0 nStep 0x0
D/TI_Video_Decoder( 1723): VIDDEC_Load_Defaults():842 INIT_STRUCT Major 0x1 Minor 0x0 nRevision 0x0 nStep 0x0
D/TI_Video_Decoder( 1723): VIDDEC_Load_Defaults():851 INIT_STRUCT Major 0x1 Minor 0x0 nRevision 0x0 nStep 0x0
D/TI_Video_Decoder( 1723): VIDDEC_Load_Defaults():880 INIT_STRUCT Major 0x1 Minor 0x0 nRevision 0x0 nStep 0x0
D/TI_Video_Decoder( 1723): VIDDEC_Load_Defaults():918 INIT_STRUCT Major 0x1 Minor 0x0 nRevision 0x0 nStep 0x0
D/TI_Video_Decoder( 1723): VIDDEC_Load_Defaults():928 INIT_STRUCT Major 0x1 Minor 0x0 nRevision 0x0 nStep 0x0
D/TI_Video_Decoder( 1723): VIDDEC_Load_Defaults():937 INIT_STRUCT Major 0x1 Minor 0x0 nRevision 0x0 nStep 0x0
D/TI_Video_Decoder( 1723): VIDDEC_Load_Defaults():945 INIT_STRUCT Major 0x1 Minor 0x0 nRevision 0x0 nStep 0x0
D/TI_Video_Decoder( 1723): VIDDEC_Load_Defaults():950 INIT_STRUCT Major 0x1 Minor 0x0 nRevision 0x0 nStep 0x0
D/TI_Video_Decoder( 1723): VIDDEC_Load_Defaults():957 INIT_STRUCT Major 0x1 Minor 0x0 nRevision 0x0 nStep 0x0
D/TI_Video_Decoder( 1723): VIDDEC_Load_Defaults():963 INIT_STRUCT Major 0x1 Minor 0x0 nRevision 0x0 nStep 0x0
D/TI_Video_Decoder( 1723): VIDDEC_Load_Defaults():963 INIT_STRUCT Major 0x1 Minor 0x0 nRevision 0x0 nStep 0x0
D/TI_Video_Decoder( 1723): VIDDEC_Load_Defaults():963 INIT_STRUCT Major 0x1 Minor 0x0 nRevision 0x0 nStep 0x0
D/TI_Video_Decoder( 1723): VIDDEC_Load_Defaults():963 INIT_STRUCT Major 0x1 Minor 0x0 nRevision 0x0 nStep 0x0
D/TI_Video_Decoder( 1723): VIDDEC_Load_Defaults():963 INIT_STRUCT Major 0x1 Minor 0x0 nRevision 0x0 nStep 0x0
D/TI_Video_Decoder( 1723): VIDDEC_Load_Defaults():963 INIT_STRUCT Major 0x1 Minor 0x0 nRevision 0x0 nStep 0x0
D/TI_Video_Decoder( 1723): VIDDEC_Load_Defaults():981 INIT_STRUCT Major 0x1 Minor 0x0 nRevision 0x0 nStep 0x0
D/TI_Video_Decoder( 1723): VIDDEC_Load_Defaults():999 INIT_STRUCT Major 0x1 Minor 0x0 nRevision 0x0 nStep 0x0
D/TI_Video_Decoder( 1723): VIDDEC_Load_Defaults():1007 INIT_STRUCT Major 0x1 Minor 0x0 nRevision 0x0 nStep 0x0
D/TI_Video_Decoder( 1723): VIDDEC_Load_Defaults():1046 INIT_STRUCT Major 0x1 Minor 0x0 nRevision 0x0 nStep 0x0
D/TI_Video_Decoder( 1723): VIDDEC_Load_Defaults():1083 INIT_STRUCT Major 0x1 Minor 0x0 nRevision 0x0 nStep 0x0
D/TI_Video_Decoder( 1723): VIDDEC_Load_Defaults():1136 INIT_STRUCT Major 0x1 Minor 0x0 nRevision 0x0 nStep 0x0
D/TI_Video_Decoder( 1723): VIDDEC_Start_ComponentThread():1423 +++ENTERING
D/TI_Video_Decoder( 1723): VIDDEC_Start_ComponentThread():1486 ---EXITING(0x0)
I/OMXCodec( 1723): [OMX.TI.Video.Decoder] AVC profile = 100 (High), level = 31
D/TI_Video_Decoder( 1723): VIDDEC_GetParameter():964 eCompressionFormat = OMX_VIDEO_CodingH263
D/TI_Video_Decoder( 1723): VIDDEC_GetParameter():970 eCompressionFormat = OMX_VIDEO_CodingAVC
D/TI_Video_Decoder( 1723): VIDDEC_SetParameter():1257 eCompressionFormat = OMX_VIDEO_CodingAVC
D/TI_Video_Decoder( 1723): VIDDEC_SetParameter():1346 Set i/p size: 1280x544
D/TI_Video_Decoder( 1723): VIDDEC_SetParameter():1356 Set OUT/p size: 1280x544
D/TI_Video_Decoder( 1723): VIDDEC_SetParameter():1346 Set i/p size: 1280x544
I/OMXCodec( 1723): [OMX.TI.Video.Decoder] video dimensions are 1280 x 544
E/OMXNodeInstance( 1723): OMX_GetExtensionIndex failed
D/TI_Video_Decoder( 1723): VIDDEC_Stop_ComponentThread():1514 +++ENTERING
D/TI_Video_Decoder( 1723): VIDDEC_Stop_ComponentThread():1681 ---EXITING(0x0)
D/TIOMX_CORE( 1723): Found matching pHandle(0x40b14d00) at index 0 with refCount 1
E/MediaPlayer( 1696): error (1, -2147483648)
E/MediaPlayer( 1696): Error (1,-2147483648)
D/VideoView( 1696): Error: 1,-2147483648

Я пробовал с #dspexec -v

Взглянув на код libdspbridge, он открывает файл устройства /dev/dsplink и выполняет эмумерацию устройства [я не уверен, что он делает], но эмуляция не удалась из-за отправки ioctl на устройство.

http://androidxref.com/4.1.1/xref/hardware/ti/omap3/dspbridge/libbridge/dsptrap.c

DSPTRAP_Trap возвращает dwResult как -1.

Пожалуйста, укажите, где моя проблема?

ОБНОВЛЕНИЕ:

Находка:

1) dsp-bridge, dsp-link, оба драйвера разные, и DSP, который создан для dsp-link, и я пытаюсь использовать dsp-bridge.


person Whoami    schedule 09.04.2014    source источник
comment
Я не пробовал доски TI в последние несколько лет. Ошибка, о которой сообщается на уровне OMX, то есть 0x80001009, относится к аппаратной ошибке, как видно из androidxref.com/4.4.2_r2/xref/frameworks/native/include/media/ . Пожалуйста, попробуйте проверить, есть ли утилита для проверки работоспособности основных аппаратных драйверов.   -  person Ganesh    schedule 09.04.2014


Ответы (1)


Конечно, ошибка вызвана тем, что вы связали /dev/dsplink с /dev/DspBridge. Драйвер Dsplink в этом случае не подходит. Вам потребуется собрать DspBridge из промежуточной области вашего ядра, добавить перехватчики для загрузки драйвера в init.rc с правильным файлом baseimage.dof и повторить попытку.

person Dennis Estenson    schedule 05.09.2014