太不容易了
跌跌撞撞的,总算是在F1C200S上跑起来了H.264 硬解码。
## 参考链接
本文基本上都是参考论坛中下面的帖子整理的,请按顺序阅读。
https://whycan.com/t_4219.html
这个页面分享了 cedarx 的驱动。
https://github.com/aodzip/cedar/
https://whycan.com/t_5398.html
https://whycan.com/t_5824.html
https://whycan.com/t_6139.html
感谢以上作者的贡献。
下面我来分享一下我自己基于 buildroot-tiny200 来实现的硬解码过程中遇到的坑,以及我提供的解决方案。
整体的流程是:
1、修改内核支持 cedarx驱动;(修改成功之后F1C200S系统中会存在 /dev/ion 和 /dev/cedar_dev 设备文件)
2、buildroot中适配gstreamer;
3、openmax中进行解码格式转换修改,将MB32转为YV12;
4、gst-omx注册;
5、gstreamer测试验证。
## 关于 OMX_COLOR_FormatYVU420Planar 未定义的问题
这里我按照 https://whycan.com/t_6139.html 这个帖子,修改了gst-omx的版本到1.16.0 ,但是还不能解决问题。
最终通过在 `./output/host/arm-buildroot-linux-gnueabi/sysroot/usr/include/OMX_IVCommon.h` 添加 `OMX_COLOR_FormatYVU420Planar` 解决问题。
//./output/host/arm-buildroot-linux-gnueabi/sysroot/usr/include/OMX_IVCommon.h
OMX_COLOR_Format18BitBGR666,
OMX_COLOR_Format24BitARGB6666,
OMX_COLOR_Format24BitABGR6666,
OMX_COLOR_FormatYVU420SemiPlanar, // 添加
OMX_COLOR_FormatYVU420Planar, // 添加
OMX_COLOR_FormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
OMX_COLOR_FormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
OMX_COLOR_FormatMax = 0x7FFFFFFF
} OMX_COLOR_FORMATTYPE;
## buildroot-tiny200 中找不到配置项gst1-plugins-bayer2rgb-neon
我按照 https://whycan.com/t_5398.html 这个帖子修改 buildroot 中的配置,始终无法找到 `gst1-plugins-bayer2rgb-neon` 配置项,我准备忽略这个,把所有的步骤操作完成之后尝试验证,后来验证失败了,然后接着退回来研究`gst1-plugins-bayer2rgb-neon`,发现`gst1-plugins-bayer2rgb-neon` 这个在 buildroot-tiny200 的 package 下是存在的,但是要配置 gst1-plugins-bayer2rgb-neon ,需要先开启 `BR2_ARM_CPU_HAS_NEON`,然后我在 F1C200S的配置下找不到`BR2_ARM_CPU_HAS_NEON` 。
后来干脆强制修改 .config文件,手动强制在 buildroot-tiny200 中的 .config 中添加:
BR2_PACKAGE_BAYER2RGB_NEON=y
BR2_PACKAGE_GST1_PLUGINS_BAYER2RGB_NEON=y
这波骚操作直接让 buildroot 编译 `bayer2rgb-neon` 和`gst1-plugins-bayer2rgb-neon`。(这样操作不正规,但是我还是没有找到能够正常配置 gst1-plugins-bayer2rgb-neon 的方法,如果各位有相关移植适配经历,欢迎分享)
我预感到好像能成了。
## 执行 gst-launch-1.0 报错
文件系统制作好之后,重新写入SD卡中,然后记得修改`/etc/xdg/gstomx.conf`,按照 https://whycan.com/t_5398.html 中的方法进行修改,否则的话,运行会报错误:
gst-launch-1.0 filesrc location=BadApple.mp4 ! qtdemux ! h264parse ! omxh264dec ! autovideoconvert ! fbdevsink
Setting pipeline to PAUSED ...
OMX-Cannot open OpenMAX registry file /root/.omxregister
OMX-A Component loader constructor fails. Exiting
ERROR: Pipeline doesn't want to pause.
ERROR: from element /GstPipeline:pipeline0/GstOMXH264Dec-omxh264dec:omxh264dec-omxh264dec0: Could not initialize supporting library.
Additional debug info:
../gst-libs/gst/video/gstvideodecoder.c(2517): gst_video_decoder_change_state (): /GstPipeline:pipeline0/GstOMXH264Dec-omxh264dec:omxh264dec-omxh264dec0:
Failed to open decoder
Setting pipeline to NULL ...
Freeing pipeline ...
## 运行成功
下面附上运行成功的 log,用作参考。
gst-launch-1.0 filesrc location=badapple_256x256.mp4 ! qtdemux ! h264parse ! omxh264dec ! autovideoconvert ! fbdevsink
```
```
Setting pipeline to PAUSED ...
debug : cedarc <AwOmxComponentInit:26>:OMXCORE: aw_omx_component_init 131988
debug : omx_vdec <__AwOmxVdecInit:1059>:++++++++++++++++++++++omx begin++++++++++++++++++
debug : omx_vdec <__AwOmxVdecInit:1060>:name = OMX.allwinner.video.decoder.avc
debug : omx_vdec_aw <OmxDecoderCreate:946>:kay: ** 0.
debug : cedarc <CdcMessageQueueCreate:47>:nMessageSize = 20
debug : cedarc <AwOmxComponentSetCallbacks:310>:OMXCORE: aw_omx_component_set_callbacks 131988, b669b504 , 96888
debug : omx_vdec <__AwOmxVdecSetCallbacks:1812>:===== vdec set callbacks
Pipeline is PREROLLING ...
debug : omx_vdec <AwOmxVdecPortSetDefinitioin:192>:port:<<<<<<<<in,nBufferCountActual = 2, mBufferCntActual = 2
debug : omx_vdec <AwOmxVdecPortSetDefinitioin:192>:port:<<<<<<<<in,nBufferCountActual = 2, mBufferCntActual = 2
error : omx_vdec <AwOmxVdecPortGetFormat:288>:erro: pParamData->nIndex > m_sPortFormatType.nIndex
debug : omx_vdec <controlSetState:359>:current state:OMX_StateLoaded, target state:OMX_StateIdle
debug : omx_vdec <doStateWaitforResources2Idle:563>:bEnabled[1],[1],bPopulated[0],[0]
debug : omx_vdec <__AwOmxVdecAllocateBuffer:1693>:kay: __AwOmxVdecAllocateBuffer
debug : omx_vdec <__AwOmxVdecAllocateBuffer:1713>:kay: __AwOmxVdecAllocateBuffer 2
debug : omx_vdec_aw <__liAllocatePortBuffer:873>:kay: *** 0.
debug : omx_vdec_aw <__liAllocatePortBuffer:885>:kay: malloc
debug : omx_vdec_aw <__liAllocatePortBuffer:887>:kay: malloc2
debug : omx_vdec <__AwOmxVdecAllocateBuffer:1715>:kay: __AwOmxVdecAllocateBuffer 3
debug : omx_vdec <AwOmxVdecPortPopBuffer:393>:*******port pop buffer:<<<<<<<<in
debug : omx_vdec <__AwOmxVdecAllocateBuffer:1693>:kay: __AwOmxVdecAllocateBuffer
debug : omx_vdec <__AwOmxVdecAllocateBuffer:1713>:kay: __AwOmxVdecAllocateBuffer 2
debug : omx_vdec_aw <__liAllocatePortBuffer:873>:kay: *** 0.
debug : omx_vdec_aw <__liAllocatePortBuffer:885>:kay: malloc
debug : omx_vdec_aw <__liAllocatePortBuffer:887>:kay: malloc2
debug : omx_vdec <__AwOmxVdecAllocateBuffer:1715>:kay: __AwOmxVdecAllocateBuffer 3
debug : omx_vdec <AwOmxVdecPortPopBuffer:393>:*******port pop buffer:<<<<<<<<in
debug : omx_vdec <__AwOmxVdecAllocateBuffer:1693>:kay: __AwOmxVdecAllocateBuffer
debug : omx_vdec <__AwOmxVdecAllocateBuffer:1713>:kay: __AwOmxVdecAllocateBuffer 2
debug : omx_vdec_aw <__liAllocatePortBuffer:873>:kay: *** 0.
debug : omx_vdec_aw <__liAllocatePortBuffer:885>:kay: malloc
debug : omx_vdec_aw <__liAllocatePortBuffer:887>:kay: malloc2
debug : omx_vdec <__AwOmxVdecAllocateBuffer:1715>:kay: __AwOmxVdecAllocateBuffer 3
debug : omx_vdec <AwOmxVdecPortPopBuffer:393>:*******port pop buffer:>>>>>>>out
debug : omx_vdec <__AwOmxVdecAllocateBuffer:1693>:kay: __AwOmxVdecAllocateBuffer
debug : omx_vdec <__AwOmxVdecAllocateBuffer:1713>:kay: __AwOmxVdecAllocateBuffer 2
debug : omx_vdec_aw <__liAllocatePortBuffer:873>:kay: *** 0.
debug : omx_vdec_aw <__liAllocatePortBuffer:885>:kay: malloc
debug : omx_vdec_aw <__liAllocatePortBuffer:887>:kay: malloc2
debug : omx_vdec <__AwOmxVdecAllocateBuffer:1715>:kay: __AwOmxVdecAllocateBuffer 3
debug : omx_vdec <AwOmxVdecPortPopBuffer:393>:*******port pop buffer:>>>>>>>out
debug : omx_vdec <__AwOmxVdecAllocateBuffer:1693>:kay: __AwOmxVdecAllocateBuffer
debug : omx_vdec <__AwOmxVdecAllocateBuffer:1713>:kay: __AwOmxVdecAllocateBuffer 2
debug : omx_vdec_aw <__liAllocatePortBuffer:873>:kay: *** 0.
debug : omx_vdec_aw <__liAllocatePortBuffer:885>:kay: malloc
debug : omx_vdec_aw <__liAllocatePortBuffer:887>:kay: malloc2
debug : omx_vdec <__AwOmxVdecAllocateBuffer:1715>:kay: __AwOmxVdecAllocateBuffer 3
debug : omx_vdec <AwOmxVdecPortPopBuffer:393>:*******port pop buffer:>>>>>>>out
debug : omx_vdec <__AwOmxVdecAllocateBuffer:1693>:kay: __AwOmxVdecAllocateBuffer
debug : omx_vdec <__AwOmxVdecAllocateBuffer:1713>:kay: __AwOmxVdecAllocateBuffer 2
debug : omx_vdec_aw <__liAllocatePortBuffer:873>:kay: *** 0.
debug : omx_vdec_aw <__liAllocatePortBuffer:885>:kay: malloc
debug : omx_vdec_aw <__liAllocatePortBuffer:887>:kay: malloc2
debug : omx_vdec <__AwOmxVdecAllocateBuffer:1715>:kay: __AwOmxVdecAllocateBuffer 3
debug : omx_vdec <AwOmxVdecPortPopBuffer:393>:*******port pop buffer:>>>>>>>out
debug : omx_vdec <doStateWaitforResources2Idle:563>:bEnabled[1],[1],bPopulated[1],[1]
debug : omx_vdec <controlSetState:380>:Transit current state:OMX_StateLoaded --> target state:OMX_StateIdle --OK!
debug : omx_vdec <controlSetState:359>:current state:OMX_StateIdle, target state:OMX_StateExecuting
debug : omx_vdec <controlSetState:380>:Transit current state:OMX_StateIdle --> target state:OMX_StateExecuting --OK!
debug : omx_vdec_aw <liDealWithInitData:154>:fatal error! pInBufHdr is NULL, check code!
debug : omx_vdec_aw <liDealWithInitData:173>:++++++++++++++++pCtx->mCodecSpecificDataLen[0]
debug : omx_vdec_aw <__liPrepare:462>:decoder prepare
warning: cedarc <AddVDPlugin:1538>: 1117 get local path: /usr/lib/
warning: cedarc <AddVDPlugin:1548>: 1117 load so: /usr/lib/libawmpeg4normal.so
debug : cedarc <AddVDPluginSingle:1501>: vdecoder open lib: /usr/lib/libawmpeg4normal.so
warning: cedarc <VDecoderRegister:127>: register codec: '10a:mpeg4Normal' success.
warning: cedarc <VDecoderRegister:127>: register codec: '10c:mpeg4Normal' success.
warning: cedarc <VDecoderRegister:127>: register codec: '108:mpeg4Normal' success.
warning: cedarc <VDecoderRegister:127>: register codec: '109:mpeg4Normal' success.
warning: cedarc <AddVDPlugin:1548>: 1117 load so: /usr/lib/libawmpeg4vp6.so
debug : cedarc <AddVDPluginSingle:1501>: vdecoder open lib: /usr/lib/libawmpeg4vp6.so
warning: cedarc <VDecoderRegister:127>: register codec: '111:Mpeg4Vp6' success.
warning: cedarc <AddVDPlugin:1548>: 1117 load so: /usr/lib/libawvp8.so
debug : cedarc <AddVDPluginSingle:1501>: vdecoder open lib: /usr/lib/libawvp8.so
warning: cedarc <VDecoderRegister:127>: register codec: '112:vp8' success.
warning: cedarc <AddVDPlugin:1548>: 1117 load so: /usr/lib/libawmpeg2.so
debug : cedarc <AddVDPluginSingle:1501>: vdecoder open lib: /usr/lib/libawmpeg2.so
warning: cedarc <VDecoderRegister:127>: register codec: '102:mpeg2' success.
warning: cedarc <VDecoderRegister:127>: register codec: '103:mpeg2' success.
warning: cedarc <AddVDPlugin:1548>: 1117 load so: /usr/lib/libawmpeg4base.so
warning: cedarc <AddVDPluginSingle:1498>: Invalid plugin, CedarPluginVDInit not found.
warning: cedarc <AddVDPlugin:1548>: 1117 load so: /usr/lib/libawh264.so
debug : cedarc <AddVDPluginSingle:1501>: vdecoder open lib: /usr/lib/libawh264.so
warning: cedarc <VDecoderRegister:127>: register codec: '115:h264' success.
warning: cedarc <AddVDPlugin:1548>: 1117 load so: /usr/lib/libawwmv3.so
debug : cedarc <AddVDPluginSingle:1501>: vdecoder open lib: /usr/lib/libawwmv3.so
warning: cedarc <VDecoderRegister:127>: register codec: '110:vc1' success.
warning: cedarc <AddVDPlugin:1548>: 1117 load so: /usr/lib/libawavs.so
debug : cedarc <AddVDPluginSingle:1501>: vdecoder open lib: /usr/lib/libawavs.so
warning: cedarc <VDecoderRegister:127>: register codec: '117:avs' success.
warning: cedarc <AddVDPlugin:1548>: 1117 load so: /usr/lib/libawmjpegplus.so
debug : cedarc <AddVDPluginSingle:1501>: vdecoder open lib: /usr/lib/libawmjpegplus.so
warning: cedarc <VDecoderRegister:127>: register codec: '101:mjpegplus' success.
warning: cedarc <AddVDPlugin:1548>: 1117 load so: /usr/lib/libawmpeg4h263.so
debug : cedarc <AddVDPluginSingle:1501>: vdecoder open lib: /usr/lib/libawmpeg4h263.so
warning: cedarc <VDecoderRegister:127>: register codec: '104:mpeg4H263' success.
warning: cedarc <VDecoderRegister:127>: register codec: '10b:mpeg4H263' success.
warning: cedarc <VDecoderRegister:127>: register codec: '10d:mpeg4H263' success.
warning: cedarc <AddVDPlugin:1548>: 1117 load so: /usr/lib/libawvp9Hw.so
debug : cedarc <AddVDPluginSingle:1501>: vdecoder open lib: /usr/lib/libawvp9Hw.so
warning: cedarc <VDecoderRegister:127>: register codec: '113:Vp9Hw' success.
warning: cedarc <AddVDPlugin:1548>: 1117 load so: /usr/lib/libawmjpeg.so
debug : cedarc <AddVDPluginSingle:1501>: vdecoder open lib: /usr/lib/libawmjpeg.so
warning: cedarc <VDecoderRegister:127>: register codec: '101:mjpeg' success.
warning: cedarc <AddVDPlugin:1548>: 1117 load so: /usr/lib/libawh265.so
debug : cedarc <AddVDPluginSingle:1501>: vdecoder open lib: /usr/lib/libawh265.so
warning: cedarc <VDecoderRegister:127>: register codec: '116:h265' success.
warning: cedarc <AddVDPlugin:1548>: 1117 load so: /usr/lib/libawmpeg4dx.so
debug : cedarc <AddVDPluginSingle:1501>: vdecoder open lib: /usr/lib/libawmpeg4dx.so
warning: cedarc <VDecoderRegister:127>: register codec: '105:mpeg4dx' success.
warning: cedarc <VDecoderRegister:127>: register codec: '106:mpeg4dx' success.
warning: cedarc <VDecoderRegister:127>: register codec: '107:mpeg4dx' success.
warning: cedarc <VDecoderRegister:127>: register codec: '10e:mpeg4dx' success.
warning: cedarc <VDecoderRegister:127>: register codec: '10f:mpeg4dx' success.
debug : cedarc <LogVersionInfo:40>:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Cedar Codec <<<<<<<<<<<<<<<<<<<<<<<<<<<<
tag : CedarC-v1.1.9
branch: master
commit: 1951abe1456450ea48bfd446e801861a1354e93c
date : Wed May 30 18:59:36 2018 +0800
author: jenkins8080
patch :
----------------------------------------------------------------------
debug : cedarc <CreateVideoDecoder:215>:CreateVideoDecoder ****
debug : ionAlloc <__GetIonMemOpsS:985>:*** get __GetIonMemOpsS ***
debug : ionAlloc <ion_alloc_open:134>:begin ion_alloc_open
debug : cedarc <VeSetSpeed:1559>: *** set ve freq to 300 Mhz ***
debug : cedarc <VeInitialize:1198>: ve init ok
debug : ionAlloc <ion_alloc_open:175>:** phy offset = 40000000
debug : cedarc <VeRelease:1253>: ve release ok
debug : cedarc <InitializeVideoDecoder:344>:*** pVconfig->nVeFreq = 0
debug : ionAlloc <__GetIonMemOpsS:985>:*** get __GetIonMemOpsS ***
debug : ionAlloc <ion_alloc_open:134>:begin ion_alloc_open
warning: cedarc <InitializeVideoDecoder:428>:warning: the nDeInterlaceHoldingFrameBufferNum is 0
warning: cedarc <InitializeVideoDecoder:434>:warning: the nDisplayHoldingFrameBufferNum is 0
debug : cedarc <DecideStreamBufferSize:1943>:nBufferSize=2097152
debug : cedarc <VeSetSpeed:1559>: *** set ve freq to 300 Mhz ***
debug : cedarc <VeInitialize:1198>: ve init ok
debug : cedarc <VideoEngineCreate:388>: *** pEngine->nIcVeVersion = 1663, decIpVersion = 0
debug : cedarc <CreateSpecificDecoder:1209>: Create decoder '115:h264'
debug : cedarc <VideoEngineCreate:481>: **************eCtlAfcbMode = 0
debug : cedarc <GetSbmInterface:1705>:*********GetSbmInterface, nType=4
debug : cedarc <GetSbmInterfaceFrame:1663>:******* sbm-type: Frame*******
debug : cedarc <SbmFrameInit:178>:************pSbm->sbmInterface.bUseNewVeMemoryProgram=0
debug : cedarc <CdcMessageQueueCreate:47>:nMessageSize = 20
debug : omx_vdec <onMessageReceived:778>:********start***********
debug : omx_thread <createThread:123>:+++++ self->mThread: 2997859424
debug : omx_thread <OmxThread_Run:151>:thread submit start to run!
debug : omx_thread <createThread:123>:+++++ self->mThread: 2989466720
debug : omx_thread <OmxThread_Run:151>:thread decode start to run!
debug : omx_thread <createThread:123>:+++++ self->mThread: 2981074016
debug : omx_thread <OmxThread_Run:151>:thread drain start to run!
debug : cedarc <AvcSbmFrameCheckBitStreamType:320>:result: bStreamWithStartCode[1], with[1], whitout[0]
debug : cedarc <H264DecVuiParameters:300>: nFrameRate=30
debug : cedarc <H264DecodePictureScanType:2688>: here3:hCtx->bProgressice=1
debug : fbm.c <FbmCreateBuffer:133>:FbmCreate, total fbm number: 8, decoder needed: 5, nWidth=256, nHeight=256 nAlignStride = 16
debug : fbm.c <FbmCreateBuffer:226>:** call allocate pic buf, i = 0, maxNum = 8
debug : fbm.c <FbmCreateBuffer:226>:** call allocate pic buf, i = 1, maxNum = 8
debug : fbm.c <FbmCreateBuffer:226>:** call allocate pic buf, i = 2, maxNum = 8
debug : fbm.c <FbmCreateBuffer:226>:** call allocate pic buf, i = 3, maxNum = 8
debug : fbm.c <FbmCreateBuffer:226>:** call allocate pic buf, i = 4, maxNum = 8
debug : fbm.c <FbmCreateBuffer:226>:** call allocate pic buf, i = 5, maxNum = 8
debug : fbm.c <FbmCreateBuffer:226>:** call allocate pic buf, i = 6, maxNum = 8
debug : fbm.c <FbmCreateBuffer:226>:** call allocate pic buf, i = 7, maxNum = 8
debug : fbm.c <FbmCreateBuffer:379>:*** finish fbmCreateBuffer
debug : omx_vdec_aw <liCheckResolutionChange:212>:gqy********l:0, t:0, w:256, h:256
warning: omx_vdec_aw <liCheckResolutionChange:249>: port setting changed -- old info : widht = 176, height = 144, mVideoRect: 0, 0, 256, 256
warning: omx_vdec_aw <liCheckResolutionChange:254>: port setting changed -- new info : widht = 256, height = 256, mVideoRect: 0, 0, 256, 256
debug : omx_vdec <decoderCallbackProcess:844>:*******AW_OMX_CB_PORT_CHANGE
debug : omx_thread <OmxThread_suspend:220>:++++++++++suspend, drain
debug : omx_thread <loopEntryWrapper:38>:post stop run sem drain
debug : omx_thread <OmxThread_suspend:223>:++++++++wait stop-run sem done: drain
debug : omx_vdec <controlStopPort:431>:gqy****stop port****, portIdx:1
debug : omx_vdec <AwOmxVdecPortFreeBuffer:455>:port:>>>>>>>out, pBufferHdr:0x10fcb8
debug : omx_vdec <AwOmxVdecPortFreeBuffer:455>:port:>>>>>>>out, pBufferHdr:0x10fd08
debug : omx_vdec <AwOmxVdecPortFreeBuffer:455>:port:>>>>>>>out, pBufferHdr:0x10fd58
debug : omx_vdec <AwOmxVdecPortFreeBuffer:455>:port:>>>>>>>out, pBufferHdr:0x10fda8
debug : omx_vdec <controlRestartPort:500>: restart port command. portIdx:1,m_state:OMX_StateExecuting
debug : omx_vdec <__AwOmxVdecUseBuffer:1661>:PortIndex[1], nSizeBytes[98304], pBuffer[0xb4912050]
debug : omx_vdec <__AwOmxVdecUseBuffer:1682>:pPortDef[1]->bEnabled=0, m_state=OMX_StateExecuting, can allocate_buffer.
debug : omx_vdec <AwOmxVdecPortPopBuffer:393>:*******port pop buffer:>>>>>>>out
debug : omx_vdec <__AwOmxVdecUseBuffer:1661>:PortIndex[1], nSizeBytes[98304], pBuffer[0xb492d0e0]
debug : omx_vdec <__AwOmxVdecUseBuffer:1682>:pPortDef[1]->bEnabled=0, m_state=OMX_StateExecuting, can allocate_buffer.
debug : omx_vdec <AwOmxVdecPortPopBuffer:393>:*******port pop buffer:>>>>>>>out
debug : omx_vdec <__AwOmxVdecUseBuffer:1661>:PortIndex[1], nSizeBytes[98304], pBuffer[0xb4945140]
debug : omx_vdec <__AwOmxVdecUseBuffer:1682>:pPortDef[1]->bEnabled=0, m_state=OMX_StateExecuting, can allocate_buffer.
debug : omx_vdec <AwOmxVdecPortPopBuffer:393>:*******port pop buffer:>>>>>>>out
debug : omx_vdec <__AwOmxVdecUseBuffer:1661>:PortIndex[1], nSizeBytes[98304], pBuffer[0xb495d1a0]
debug : omx_vdec <__AwOmxVdecUseBuffer:1682>:pPortDef[1]->bEnabled=0, m_state=OMX_StateExecuting, can allocate_buffer.
debug : omx_vdec <AwOmxVdecPortPopBuffer:393>:*******port pop buffer:>>>>>>>out
debug : omx_thread <OmxThread_resume:246>:++++++++++resume, drain
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
# 运行成功的话,日志会打印到这里停住 屏幕上会正常播放视频
^Chandling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 0:00:12.071339251
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
debug : omx_thread <OmxThread_suspend:220>:++++++++++suspend, drain
debug : omx_thread <loopEntryWrapper:38>:post stop run sem drain
debug : omx_thread <OmxThread_suspend:223>:++++++++wait stop-run sem done: drain
debug : omx_thread <OmxThread_suspend:220>:++++++++++suspend, decode
debug : omx_thread <loopEntryWrapper:38>:post stop run sem decode
debug : omx_thread <OmxThread_suspend:223>:++++++++wait stop-run sem done: decode
debug : omx_thread <OmxThread_suspend:220>:++++++++++suspend, submit
debug : omx_thread <loopEntryWrapper:38>:post stop run sem submit
debug : omx_thread <OmxThread_suspend:223>:++++++++wait stop-run sem done: submit
debug : omx_vdec <controlFlush:404>: flush command, portIdx:0
debug : omx_thread <OmxThread_resume:246>:++++++++++resume, submit
debug : omx_thread <OmxThread_resume:246>:++++++++++resume, decode
debug : omx_thread <OmxThread_resume:246>:++++++++++resume, drain
debug : omx_thread <OmxThread_suspend:220>:++++++++++suspend, drain
debug : omx_thread <loopEntryWrapper:38>:post stop run sem drain
debug : omx_thread <OmxThread_suspend:223>:++++++++wait stop-run sem done: drain
debug : omx_thread <OmxThread_suspend:220>:++++++++++suspend, decode
debug : omx_thread <loopEntryWrapper:38>:post stop run sem decode
debug : omx_thread <OmxThread_suspend:223>:++++++++wait stop-run sem done: decode
debug : omx_thread <OmxThread_suspend:220>:++++++++++suspend, submit
debug : omx_thread <loopEntryWrapper:38>:post stop run sem submit
debug : omx_thread <OmxThread_suspend:223>:++++++++wait stop-run sem done: submit
debug : omx_vdec <controlFlush:404>: flush command, portIdx:1
debug : omx_vdec_aw <__liFlush:772>:decoder flush
debug : cedarc <SbmFrameReset:588>:** wait for reset sem
debug : cedarc <ProcessThread:1591>:*** post reset sem
debug : cedarc <SbmFrameReset:590>:** wait for reset sem ok
debug : cedarc <SbmFrameReset:595>:SbmFrameReset finish
debug : omx_thread <OmxThread_resume:246>:++++++++++resume, submit
debug : omx_thread <OmxThread_resume:246>:++++++++++resume, decode
debug : omx_thread <OmxThread_resume:246>:++++++++++resume, drain
debug : omx_vdec <controlSetState:359>:current state:OMX_StateExecuting, target state:OMX_StateIdle
debug : omx_thread <OmxThread_suspend:220>:++++++++++suspend, drain
debug : omx_thread <loopEntryWrapper:38>:post stop run sem drain
debug : omx_thread <OmxThread_suspend:223>:++++++++wait stop-run sem done: drain
debug : omx_thread <OmxThread_suspend:220>:++++++++++suspend, decode
debug : omx_thread <loopEntryWrapper:38>:post stop run sem decode
debug : omx_thread <OmxThread_suspend:223>:++++++++wait stop-run sem done: decode
debug : omx_thread <OmxThread_suspend:220>:++++++++++suspend, submit
debug : omx_thread <loopEntryWrapper:38>:post stop run sem submit
debug : omx_thread <OmxThread_suspend:223>:++++++++wait stop-run sem done: submit
debug : omx_vdec_aw <__liClose:794>:decoder close
debug : cedarc <ProcessThread:1656>: exit sbm thread
debug : cedarc <VeRelease:1253>: ve release ok
debug : omx_vdec <doStateWaitforResources2Idle:563>:bEnabled[1],[1],bPopulated[1],[1]
debug : omx_vdec <controlSetState:380>:Transit current state:OMX_StateExecuting --> target state:OMX_StateIdle --OK!
Setting pipeline to NULL ...
debug : omx_vdec <controlSetState:359>:current state:OMX_StateIdle, target state:OMX_StateLoaded
debug : omx_vdec <AwOmxVdecPortFreeBuffer:455>:port:<<<<<<<<in, pBufferHdr:0x11d058
debug : omx_vdec <AwOmxVdecPortFreeBuffer:455>:port:<<<<<<<<in, pBufferHdr:0x11d0a8
debug : omx_vdec <AwOmxVdecPortFreeBuffer:455>:port:>>>>>>>out, pBufferHdr:0x10fcb8
debug : omx_vdec <AwOmxVdecPortFreeBuffer:455>:port:>>>>>>>out, pBufferHdr:0x10fd08
debug : omx_vdec <AwOmxVdecPortFreeBuffer:455>:port:>>>>>>>out, pBufferHdr:0x10fd58
debug : omx_vdec <AwOmxVdecPortFreeBuffer:455>:port:>>>>>>>out, pBufferHdr:0x10fda8
debug : omx_vdec <controlSetState:380>:Transit current state:OMX_StateIdle --> target state:OMX_StateLoaded --OK!
debug : cedarc <AwOmxComponentDeinit:47>:OMXCORE: aw_omx_component_deinit 131988
debug : omx_vdec <__AwOmxVdecComponentDeinit:1829>:Omx Vdec Component Deinit begin
debug : omx_vdec <onMessageReceived:786>:********quit************
debug : omx_sem <OmxTryPostSem:119>:post sem:flushSem
debug : omx_thread <loopEntryWrapper:72>:exit thread drain truely!!!
debug : omx_thread <loopEntryWrapper:72>:exit thread decode truely!!!
debug : omx_thread <loopEntryWrapper:72>:exit thread submit truely!!!
debug : omx_vdec <__AwOmxVdecComponentDeinit:1835>:threads exit!
debug : cedarc <checkLibUnload:188>: Unloading the dynamic library for OMX.allwinner.video.decoder.avc
Freeing pipeline ...
离线
发一个验证测试视频:
离线
还有一个gif:
离线
赞,感谢分享过程。可以搞搞miracast投屏
离线
用nuc977就没有这种麻烦,资料丰富,二手芯片也能白菜价!什么?既然有硬件h264?不是只有硬解jpeg吗?不会还有ISP吧?
最近编辑记录 夜黑风高雪花飞舞3 (2025-03-15 18:35:21)
离线