您尚未登录。

楼主 # 2025-03-10 18:35:17

piaoxuebingfeng
会员
注册时间: 2023-03-01
已发帖子: 12
积分: 62

F1C200S 开启硬件解码流程记录

太不容易了

跌跌撞撞的,总算是在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 ...

离线

楼主 #1 2025-03-10 22:50:02

piaoxuebingfeng
会员
注册时间: 2023-03-01
已发帖子: 12
积分: 62

Re: F1C200S 开启硬件解码流程记录

发一个验证测试视频:

离线

楼主 #2 2025-03-10 22:50:21

piaoxuebingfeng
会员
注册时间: 2023-03-01
已发帖子: 12
积分: 62

Re: F1C200S 开启硬件解码流程记录

还有一个gif:

f1c200sh264test.gif

离线

#3 2025-03-12 09:49:45

微凉VeiLiang
会员
所在地: 深圳
注册时间: 2018-10-28
已发帖子: 634
积分: 529
个人网站

Re: F1C200S 开启硬件解码流程记录

赞,感谢分享过程。可以搞搞miracast投屏

离线

#4 2025-03-15 18:31:47

夜黑风高雪花飞舞3
会员
注册时间: 2025-03-15
已发帖子: 8
积分: 3

Re: F1C200S 开启硬件解码流程记录

用nuc977就没有这种麻烦,资料丰富,二手芯片也能白菜价!什么?既然有硬件h264?不是只有硬解jpeg吗?不会还有ISP吧?

最近编辑记录 夜黑风高雪花飞舞3 (2025-03-15 18:35:21)

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn