飞凌全志T113-i开发板视频编码测试

news2024/11/23 19:35:59

前言

本文测试OK113i-S开发板-视频编解码的功能

OK113i-S开发板是支持视频的编解码的,下面是官方介绍的编解码功能

T113-i 是一种为多媒体解码平台设计的高级应用处理器。T113-i 集成了64位玄铁C906 RISC-V CPU,
双核 Cortex - A7 CPU 和 HiFi4 DSP,提供高效的计算能力。
 主要特性
支持 H.265、H.264、MPEG-1/2/4、JPEG 等全格式解码。独立的编码器可以用 JPEG 或 MJPEG 来进行编
码。
 T113-i 集成了 H.265/H.264 4K 解码和 SmartColor2.0 后处理,提供完美的视频娱乐体验。

下面我们来测试一下音视频的编码解码功能。

编解码代码

在系统的代码中,下面是程序的位置

----------------
视频
/sdk/platform/framework/auto/cmd_demo/decoderTest 
/sdk/platform/framework/auto/sdk_demo/decoderTest
/sdk/platform/framework/auto/sdk_demo/encoderTest
/sdk/platform/framework/auto/sdk_demo/fltest_streamPlayer

------------------
音频
/sdk/platform/framework/auto/cmd_demo/audplayer
/sdk/platform/framework/auto/qt_demo/fltest_qt_musicplayer
/sdk/platform/framework/auto/sdk_demo/audioencTest
/sdk/platform/framework/auto/sdk_demo/audplayerTest

编译音视频库

系统的音视频库主要是cedarx 和libcedarc;这个在buuildroot中需要选定。如下图

Target Packages
  Allwinner platform private package select
  Libcedcrc
  Cedarx

微信截图_20231220140841.png

微信截图_20231221103631.png

错误

=================
>>> cedarx  Installing to target
cp -rf /home/forlinx/113/OK113i-linux-sdk/out/t113_i/ok113i/longan/buildroot/build/cedarx/config/_cedarx.conf 
/home/forlinx/113/OK113i-linux-sdk/out/t113_i/ok113i/longan/buildroot/target/etc/cedarx.conf
cp: cannot stat '/home/forlinx/113/OK113i-linux-sdk/out/t113_i/ok113i/longan/buildroot/build/cedarx/config/_cedarx.conf': No such file or directory
make[1]: *** [package/pkg-generic.mk:335: /home/forlinx/113/OK113i-linux-sdk/out/t113_i/ok113i/longan/buildroot/build/cedarx/.stamp_target_installed] Error 1

解决办法

cp -rf /home/forlinx/113/OK113i-linux-sdk/out/t113_i/ok113i/longan/buildroot/build/cedarx/conf/default_cedarx.conf  
/home/forlinx/113/OK113i-linux-sdk/out/t113_i/ok113i/longan/buildroot/build/cedarx/config/_cedarx.conf

./build.sh
./build.sh pack

=============================================
视频解码264

fltest_decoderTest 解码/tmp.h264 为yuv 格式。

root@ok113i:/forlinx/media# ls
1.jpg                1280x720_video3.yuv    tmp.h264
1024x600.rgba        2.jpg                  tmp.h265
1280x720_video0.yuv  2560x1440_dcvideo.yuv  videotestsrc_1280x720.nv21
1280x720_video1.yuv  30s.wav
1280x720_video2.yuv  test.mp3

root@ok113i:/forlinx/media# fltest_decoderTest
INFO   : cedarc <log_set_level:43>: Set log level to 3 from /vendor/etc/cedarc.conf
[2023-12-20 17:35:24] ERROR  : awplayer <ReadPluginEntry:194>: read plugin entry adecoder-15 fail!
[2023-12-20 17:35:24] ERROR  : awplayer <ReadPluginEntry:194>: read plugin entry vdecoder-9 fail!
INFO   : cedarc <CedarPluginVDInit:79>: register h264 decoder success!
INFO   : cedarc <CedarPluginVDInit:84>: register mjpeg decoder success!
[ 1097.603725] VE: VE real_freq=576000000
[ 1097.603725]
INFO   : cedarc <CedarPluginVDInit:86>: register mpeg2 decoder success!
[2023-12-20 17:35:24] WARNING: awplayer <DlOpenPlugin:112>: Invalid plugin,function CedarPluginVDInit not found.
INFO   : cedarc <CedarPluginVDInit:92>: register mpeg4dx decoder success!
INFO   : cedarc <CedarPluginVDInit:79>: register mpeg4H263 decoder success!
INFO   : cedarc <CedarPluginVDInit:90>: register mpeg4Normal decoder success!
INFO   : cedarc <CedarPluginVDInit:74>: register vc1 decoder success!
INFO   : cedarc <CedarPluginVDInit:85>: register h265 decoder success!
[2023-12-20 17:35:24] ERROR  : awplayer <ReadPluginEntry:194>: read plugin entry plugin-0 fail!
decoderTest version:V2.0.20220506
decoderTest intputFile:/forlinx/media/tmp.h264
[D]singleDecoderH264Test                 ================================
[D]singleDecoderH264Test                 ====     CedarC  Decoder    ====
[D]singleDecoderH264Test                 ====  singleDecoderTest cbk ====
[D]singleDecoderH264Test                 ================================
[E][decoderTest.cpp]singleDecoderH264Test line:271 open intputFile:/forlinx/media/tmp.h264
[E][decoderTest.cpp]singleDecoderH264Test line:294 open outputFile:/tmp/800x480nv21_sgl.yuv
new AWVideoDecoderImpl() version:V2.0.20220506
sdk_memory version:V2.0.20220506
DEBUG  : ionAlloc <__GetIonMemOpsS:833>: *** get __GetIonMemOpsS ***
INFO   : cedarc <VeInitialize:1307>: *** ic_version = 0x1301000010210,
DEBUG  : cedarc <VeInitialize:1347>: *** nPhyOffset = 0x0
DEBUG  : ionAlloc <ion_alloc_open2:177>: pid: 1559, g_context = 0x28b3b8

DEBUG  : ionAlloc <ion_alloc_open2:204>: ion alloc open ok
DEBUG  : cedarc <CdcIniParserInit:41>: load conf file /etc/cedarc.conf ok!

INFO   : cedarc <log_set_level:43>: Set log level to 5 from /vendor/etc/cedarc.conf
ERROR  : cedarc <DebugCheckConfig:316>: now cedarc log level:5
WARNING: cedarc <InitializeVideoDecoder:619>: warning: the nDeInterlaceHoldingFrameBufferNum is 0
[D]singleDecoderH264Test decode process[0/821226]
======================= ret:-6  
[D]singleDecoderH264Test decode process[815936/821226]
offset>(size-4)
[D]decoderDataReady decode write[384000/192000]
======================= ret:3
output file is saved:/tmp/

=============================================
视频解码h265

demoVdecoder 这个文件失败

==================================

ok113i:/forlinx/media# demoVdecoder -i /forlinx/media/tmp.h265 -o dec265.yuv
INFO   : cedarc <log_set_level:43>: Set log level to 3 from /vendor/etc/cedarc.conf
[2023-12-20 19:28:03] ERROR  : awplayer <ReadPluginEntry:194>: read plugin entry adecoder-15 fail!
[2023-12-20 19:28:03] ERROR  : awplayer <ReadPluginEntry:194>: read plugin entry vdecoder-9 fail!
INFO   : cedarc <CedarPluginVDInit:79>: register h264 decoder success!
INFO   : cedarc <CedarPluginVDInit:84>: register mjpeg decoder success!
INFO   : cedarc <CedarPluginVDInit:86>: register mpeg2 decoder success!
[2023-12-20 19:28:03] WARNING: awplayer <DlOpenPlugin:112>: Invalid plugin,function CedarPluginVDInit not found.
INFO   : cedarc <CedarPluginVDInit:92>: register mpeg4dx decoder success!
INFO   : cedarc <CedarPluginVDInit:79>: register mpeg4H263 decoder success!
INFO   : cedarc <CedarPluginVDInit:90>: register mpeg4Normal decoder success!
INFO   : cedarc <CedarPluginVDInit:74>: register vc1 decoder success!
INFO   : cedarc <CedarPluginVDInit:85>: register h265 decoder success!
[2023-12-20 19:28:03] ERROR  : awplayer <ReadPluginEntry:194>: read plugin entry plugin-0 fail!
[2023-12-20 19:28:03] DEBUG  : awplayer <AwStreamInit:99>: aw stream init...
[2023-12-20 19:28:03] DEBUG  : awplayer <DemoHelpInfo:1074>:  ==== CedarX linux decoder demo help start =====
[2023-12-20 19:28:03] DEBUG  : awplayer <DemoHelpInfo:1075>:  -h or --help to show the demo usage
[2023-12-20 19:28:03] DEBUG  : awplayer <DemoHelpInfo:1076>:  demo created by zouwenhuan, allwinnertech/AL3
[2023-12-20 19:28:03] DEBUG  : awplayer <DemoHelpInfo:1077>:  email: zouwenhuan@allwinnertech.com
[2023-12-20 19:28:03] DEBUG  : awplayer <DemoHelpInfo:1078>:  ===== CedarX linux decoder demo help end ======
[2023-12-20 19:28:03] DEBUG  : awplayer <main:1254>: nDecoderNum = 1
[2023-12-20 19:28:03] DEBUG  : awplayer <ChannelThread:1093>: ChannelThread 11, 0
[2023-12-20 19:28:03] DEBUG  : awplayer <ParseArgument:193>:  get input file: file:///forlinx/media/tmp.h265
[2023-12-20 19:28:03] DEBUG  : awplayer <ParseArgument:210>:  get save pic path: dec265.yuv
DEBUG  : ionAlloc <__GetIonMemOpsS:833>: *** get __GetIonMemOpsS ***
INFO   : cedarc <VeInitialize:1307>: *** ic_version = 0x1301000010210,
DEBUG  : cedarc <VeInitialize:1347>: *** nPhyOffset = 0x0
DEBUG  : ionAlloc <ion_alloc_open2:177>: pid: 1773, g_context = 0xb5d02528

DEBUG  : ionAlloc <ion_alloc_open2:204>: ion alloc open ok
[2023-12-20 19:28:03] DEBUG  : awplayer <CdxParserPrepare:778>: source uri 'file:///forlinx/media/tmp.h265'
[2023-12-20 19:28:03] DEBUG  : awplayer <__FileStreamConnect:407>: (5/0/1133141) path:'file:///forlinx/media/tmp.h265'
[2023-12-20 19:28:03] ERROR  : CdxFlacParser <__FlacParserProbe:1133>: Flac probe failed.
[2023-12-20 19:28:03] WARNING: awplayer <Mp3Probe:854>: Wav parser : no dice, no valid sequence of frames found.
[2023-12-20 19:28:03] WARNING: awplayer <Mp3Probe:854>: Wav parser : no dice, no valid sequence of frames found.frames found.
[2023-12-20 19:28:03] WARNING: awplayer <Mp3Probe:854>: Wav parser : no dice, no valid sequence offrames found.
[2023-12-20 19:28:03] WARNING: awplayer <Mp3Probe:854>: Wav parser : no dice, no valid sequence of frames found.
[2023-12-20 19:28:03] DEBUG  : awplayer <__WvParserProbe:575>: __WvParserProbe:
[2023-12-20 19:28:03] DEBUG  : awplayer <__WvParserProbe:575>: __WvParserProbe:
[2023-12-20 19:28:03] DEBUG  : awplayer <__WvParserProbe:575>: __WvParserProbe:
[2023-12-20 19:28:03] DEBUG  : awplayer <__WvParserProbe:575>: __WvParserProbe:
[2023-12-20 19:28:03] ERROR  : awplayer <__G729ParserProbe:290>: g729 SYNC_WORD probe failed.
[2023-12-20 19:28:03] ERROR  : awplayer <__Id3v2ParserProbe:330>: Probe ID3_header loss sync...
[2023-12-20 19:28:03] WARNING: awplayer <CdxParserCreate:711>: Sorry, I don't know what it is!
[2023-12-20 19:28:03] WARNING: awplayer <CdxParserOpen:756>: should not be here.
[2023-12-20 19:28:03] ERROR  : awplayer <CdxParserPrepare:789>: open parser fail, uri(file:///forlinx/media/tmp.h265)
[2023-12-20 19:28:03] ERROR  : awplayer <initDecoder:278>:  decoder open parser error nRet = -1, Decoder->parser: (nil)
[2023-12-20 19:28:03] ERROR  : awplayer <ChannelThread:1156>:  decoder demom initDecoder error

=============================================

我们修改decoderTest这个程序,使它能解码h265的格式,其中下面代码红色是我修改的。

source ~/113/OK113i-linux-sdk/.buildconfig
~/113/OK113i-linux-sdk/platform/framework/auto/sdk_demo/decoderTest$ make

==============================================

//decoderTest 265
int main(int argc, char** argv)
{
    printf("decoderTest265 version:%s\n", MODULE_VERSION);
    /******** begin set the default encode param ********/
    memset(&decodeParam, 0, sizeof(decodeParam));
    memset(&testParam, 0, sizeof(testParam));

    decodeParam.srcW = 800;
    decodeParam.srcH = 480;
    decodeParam.dstW = 800;
    decodeParam.dstH = 480;
    decodeParam.rotation = Angle_0;
    decodeParam.scaleRatio = ScaleNone;
    decodeParam.codecType = CODEC_H265;
    decodeParam.pixelFormat = PIXEL_NV21;

    testParam.testTimes = 1;
    testParam.testWay = 0;
    strcpy((char*)testParam.intputFile,        "/tmp/tmp.h265");
strcpy((char*)testParam.outputFile,        "/tmp/dec265_out.yuv");

================================================================

Makefile的修改

all: $(Target) 
$(Target) : decoderTest.cpp 
	$(CPP) decoderTest.cpp -o $(Target)  $(LIBS) $(LDFLAGS) -lpthread $(CXXFLAGS)
	$(CPP) decoderTest265.cpp -o $(Target)265  $(LIBS) $(LDFLAGS) -lpthread $(CXXFLAGS)
	@echo "generate $(Target) success!!!"
	@cp -f $(Target)    $(INSTATLL_PATH)
	@cp -f $(Target)265 $(INSTATLL_PATH)
	@echo -e '\e[1;33m cp -f $(Target) $(INSTATLL_PATH) \e[0m'

=============================================
测试解码效果

play.png

./decoderTest265
INFO   : cedarc <log_set_level:43>: Set log level to 3 from /vendor/etc/cedarc.conf
[2023-12-21 01:51:19] ERROR  : awplayer <ReadPluginEntry:194>: read plugin entry adecoder-15 fail!
[2023-12-21 01:51:19] ERROR  : awplayer <ReadPluginEntry:194>: read plugin entry vdecoder-9 fail!
INFO   : cedarc <CedarPluginVDInit:79>: register h264 decoder success!
INFO   : cedarc <CedarPluginVDInit:84>: register mjpeg decoder success!
[ 3213.535493] VE: VE real_freq=576000000
[ 3213.535493]
INFO   : cedarc <CedarPluginVDInit:86>: register mpeg2 decoder success!
[2023-12-21 01:51:19] WARNING: awplayer <DlOpenPlugin:112>: Invalid plugin,function CedarPluginVDInit not found.
INFO   : cedarc <CedarPluginVDInit:92>: register mpeg4dx decoder success!
INFO   : cedarc <CedarPluginVDInit:79>: register mpeg4H263 decoder success!
INFO   : cedarc <CedarPluginVDInit:90>: register mpeg4Normal decoder success!
INFO   : cedarc <CedarPluginVDInit:74>: register vc1 decoder success!
INFO   : cedarc <CedarPluginVDInit:85>: register h265 decoder success!
[2023-12-21 01:51:19] ERROR  : awplayer <ReadPluginEntry:194>: read plugin entry plugin-0 fail!
decoderTest265 version:V2.0.20220506
intputFile  :/tmp/tmp.h265
outputFile  :/tmp/d5_out.yuv
[D]singleDecoderTest             ================================
[D]singleDecoderTest             ====     CedarC  Decoder    ====
[D]singleDecoderTest             ====  singleDecoderTest cbk ====
[D]singleDecoderTest             ================================
new AWVideoDecoderImpl() version:V2.0.20220506
sdk_memory version:V2.0.20220506
DEBUG  : ionAlloc <__GetIonMemOpsS:833>: *** get __GetIonMemOpsS ***
INFO   : cedarc <VeInitialize:1307>: *** ic_version = 0x1301000010210,
DEBUG  : cedarc <VeInitialize:1347>: *** nPhyOffset = 0x0
DEBUG  : ionAlloc <ion_alloc_open2:177>: pid: 1597, g_context = 0x198c480

DEBUG  : ionAlloc <ion_alloc_open2:204>: ion alloc open ok
DEBUG  : cedarc <CdcIniParserInit:41>: load conf file /etc/cedarc.conf ok!

INFO   : cedarc <log_set_level:43>: Set log level to 5 from /vendor/etc/cedarc.conf
ERROR  : cedarc <DebugCheckConfig:316>: now cedarc log level:5
WARNING: cedarc <InitializeVideoDecoder:619>: warning: the nDeInterlaceHoldingFrameBufferNum is 0
[D]singleDecoderTest decode process[0/1133141]
[W][decoderTest265.cpp]singleDecoderTest line:514 decode failed,error code:-6
[D]singleDecoderTest decode process[28/1133141]
[W][decoderTest265.cpp]singleDecoderTest line:514 decode failed,error code:-6
[D]singleDecoderTest decode process[86/1133141]

[D]singleDecoderTest decode process[1127265/1133141]
offset>(size-4)
WARNING: cedarc <HevcDecoderAddPtsToList:933>:  h265 pts list is full
[D]decoderDataReady decode write[384000/192000]
[D]printfArgs    -i:/tmp/tmp.h265
[D]printfArgs    -s:[800x480]
[D]printfArgs    -f:278
[D]printfArgs    -p:5
[D]printfArgs    -o:/tmp/d5_out.yuv
output file is saved:/tmp/d5_out.yuv
~ AWVideoDecoderImpl()
Test 1 times.

=============================================
视频编码

root@ok113i:/forlinx/media# encoderTest
encoderTest version:V2.0.2022050[ 5100.284684] VE: VE real_freq=576000000
[ 5100.284684]
6
intputFile /tmp/800_480.yuv
outputFile /tmp/enc720_30p.265
outputFile  CODEC_H265
[D]singleEncoderTest             ================================
[D]singleEncoderTest             ====     CedarC  Encoder    ====
[D]singleEncoderTest             ====    singleDecoderTest    ====
[D]singleEncoderTest             ================================
[D]printfArgs    -s:800x480
[D]printfArgs    -n:1
[D]printfArgs    -f:3
[D]printfArgs    -p:1
[D]printfArgs    -r:30
[D]printfArgs    -d:800x480
sdk_memory version:V2.0.20220506
INFO   : cedarc <VeInitialize:1307>: *** ic_version = 0x1301000010210,
[D]encodeFile malloc pIonMem->vir=0xb6a63000!
new AWVideoEncoderImpl() version:V2.0.20220506
sdk_memory version:V2.0.20220506
INFO   : cedarc <VeInitialize:1307>: *** ic_version = 0x1301000010210,
ERROR  : cedarc <H265EncOpen:6246>: error: the driver do not support the ic 1667
[E][AWVidoeEncoder.cpp]init line:389 VideoEncCreate error, return[E][encoderTest.cpp]encodeFile line:412 init:ffffffff
~ AWVideoEncoderImpl()
ERROR  : cedarc <ReleaseAllocInputBuffer:456>: ReleaseAllocInputBuffer, pEncoder is NULL
[D]printfArgs    -s:800x480
[D]printfArgs    -n:1
[D]printfArgs    -f:3
[D]printfArgs    -p:1
[D]printfArgs    -r:30
[D]printfArgs    -d:800x480
output file is saved:/tmp/enc720_30p.265
Test 1 times.

编码失败,文件为0

=============================================
音频编码

root@ok113i:/forlinx/media# cp 30s.wav /tmp/test.wav
root@ok113i:/forlinx/media# audioenc_test
INFO   : cedarc <log_set_level:43>: Set log level to 3 from /vendor/etc/cedarc.conf
[2023-12-20 18:48:57] ERROR  : awplayer <ReadPluginEntry:194>: read plugin entry adecoder-15 fail!
[2023-12-20 18:48:57] ERROR  : awplayer <ReadPluginEntry:194>: read plugin entry vdecoder-9 fail!
INFO   : cedarc <CedarPluginVDInit:79>: register h264 decoder success!
INFO   : cedarc <CedarPluginVDInit:84>: register mjpeg decoder success!
INFO   : cedarc <CedarPluginVDInit:86>: register mpeg2 decoder success!
[2023-12-20 18:48:57] WARNING: awplayer <DlOpenPlugin:112>: Invalid plugin,function CedarPluginVDInit not found.
INFO   : cedarc <CedarPluginVDInit:92>: register mpeg4dx decoder success!
INFO   : cedarc <CedarPluginVDInit:79>: register mpeg4H263 decoder success!
INFO   : cedarc <CedarPluginVDInit:90>: register mpeg4Normal decoder success!
INFO   : cedarc <CedarPluginVDInit:74>: register vc1 decoder success!
INFO   : cedarc <CedarPluginVDInit:85>: register h265 decoder success!
[2023-12-20 18:48:57] ERROR  : awplayer <ReadPluginEntry:194>: read plugin entry plugin-0 fail!
[2023-12-20 18:48:57] DEBUG  : awplayer <AwStreamInit:99>: aw stream init...
[2023-12-20 18:48:57] DEBUG  : awplayer <AwMuxerInit:53>: aw muxer init ..
[2023-12-20 18:48:57] DEBUG  : awplayer <AwMuxerInit:62>: aw muxer size:4
audioenc test version:V2.0.20220506
12-20 18:48:57.953  AudioEnc(W) : AudioEncInit success
fopen /tmp/test.wav OK
fopen /tmp/test.mp3 ok
12-20 18:48:57.955  AudioEnc(E) : audio encode ERR_AUDIO_ENC_PCMUNDERFLOW
12-20 18:48:58.001  AudioEnc(E) : audio encode ERR_AUDIO_ENC_PCMUNDERFLOW
12-20 18:49:05.031  AudioEnc(E) : audio encode ERR_AUDIO_ENC_PCMUNDERFLOW
12-20 18:49:05.077  AudioEnc(E) : audio encode ERR_AUDIO_ENC_PCMUNDERFLOW
12-20 18:49:05.123  AudioEnc(E) : audio encode ERR_AUDIO_ENC_PCMUNDERFLOW
12-20 18:49:05.169  AudioEnc(E) : audio encode ERR_AUDIO_ENC_PCMUNDERFLOW
file end exit.
audioenc test run finish

=============================================
音频解码

下图是
fltest_qt_musicplayer

微信图片_20231220112009.jpg

root@ok113i:/forlinx/media# fltest_audioplayer   /forlinx/media/test.mp3
[2023-12-20 19:02:26] WARNING: awplayer <log_set_level:30>: Set log level to 3
[2023-12-20 19:02:26] ERROR  : awplayer <ReadPluginEntry:194>: read plugin entry adecoder-15 fail!
[2023-12-20 19:02:26] ERROR  : awplayer <ReadPluginEntry:194>: read plugin entry vdecoder-9 fail!
INFO   : cedarc <CedarPluginVDInit:79>: register h264 decoder success!
INFO   : cedarc <CedarPluginVDInit:84>: register mjpeg decoder success!
INFO   : cedarc <CedarPluginVDInit:86>: register mpeg2 decoder success!
[2023-12-20 19:02:26] WARNING: awplayer <DlOpenPlugin:112>: Invalid plugin,function CedarPluginVDInit not found.
INFO   : cedarc <CedarPluginVDInit:92>: register mpeg4dx decoder success!
INFO   : cedarc <CedarPluginVDInit:79>: register mpeg4H263 decoder success!
INFO   : cedarc <CedarPluginVDInit:90>: register mpeg4Normal decoder success!
INFO   : cedarc <CedarPluginVDInit:74>: register vc1 decoder success!
INFO   : cedarc <CedarPluginVDInit:85>: register h265 decoder success!
[2023-12-20 19:02:26] ERROR  : awplayer <ReadPluginEntry:194>: read plugin entry plugin-0 fail!
[2023-12-20 19:02:26] DEBUG  : awplayer <AwStreamInit:99>: aw stream init...
[2023-12-20 19:02:26] DEBUG  : awplayer <AwMuxerInit:53>: aw muxer init ..
[2023-12-20 19:02:26] DEBUG  : awplayer <AwMuxerInit:62>: aw muxer size:4
set url:/forlinx/media/test.mp3
[2023-12-20 19:02:26] DEBUG  : awplayer <XPlayerCreate:216>: XPlayerCreate.
[2023-12-20 19:02:26] DEBUG  : awplayer <LogVersionInfo:34>:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> CedarX <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
tag   : cedarx
branch: stable_v2.8_common
commit: 967535b8ff6a073cb4f38e85a4ae5fa6008014d8
date  : Mon, 15 May 2017 01:30:22 +0000 (09:30 +0800)
author:
----------------------------------------------------------------------

xfang tinyalsa SoundDeviceCreate
[2023-12-20 19:02:26] DEBUG  : awplayer <LayerCreate_DE:1540>: libsdk_player version:V2.0.20220516, LayerCreate

(getInstance 93) version:V2.0.20220506
init chwd sucess !
(HwDisplay 279)
(hwd_init 1258)
[2023-12-20 19:02:26] DEBUG  : awplayer <LayerCreate_DE:1593>: screen:w 1024, screen:h 600 disp
sdk_memory version:V2.0.20220506
DEBUG  : ionAlloc <__GetIonMemOpsS:833>: *** get __GetIonMemOpsS ***
INFO   : cedarc <VeInitialize:1307>: *** ic_version = 0x1301000010210,
DEBUG  : cedarc <VeInitialize:1347>: *** nPhyOffset = 0x0
DEBUG  : ionAlloc <ion_alloc_open2:177>: pid: 1608, g_context = 0x274370

DEBUG  : ionAlloc <ion_alloc_open2:204>: ion alloc open ok
[2023-12-20 19:02:26] DEBUG  : awplayer <XPlayerSetVideoSurfaceTexture:597>: setVideoSurfaceTexture, surface = 0x26fc60
[2023-12-20 19:02:26] DEBUG  : awplayer <XPlayerThread:1977>: process message XPLAYER_COMMAND_SET_SURFACE.
[2023-12-20 19:02:26] DEBUG  : awplayer <SubtitleCreate:88>: ==== pCallback: 0xb67e3574, pUser: 0x26b280
[2023-12-20 19:02:26] DEBUG  : awplayer <XPlayerThread:2038>: ==== process message XPLAYER_COMMAND_SET_SUBCTRL.
[2023-12-20 19:02:26] DEBUG  : awplayer <XPlayerSetDeinterlace:718>: set deinterlace
[2023-12-20 19:02:26] DEBUG  : awplayer <XPlayerThread:2053>: ==== process message XPLAYER_COMMAND_SET_SUBCTRL.
[2023-12-20 19:02:26] DEBUG  : awplayer <XPlayerSetDataSourceUrl:462>: setDataSource(url), url='/forlinx/media/test.mp3'
[2023-12-20 19:02:26] INFO   : awplayer <XPlayerThread:1814>: process message XPLAYER_COMMAND_SET_SOURCE.
[2023-12-20 19:02:26] DEBUG  : awplayer <XPlayerPrepare:767>: prepare
[2023-12-20 19:02:26] DEBUG  : awplayer <XPlayerThread:2067>: process message XPLAYER_COMMAND_PREPARE. mPriData->mStatus: 1
[2023-12-20 19:02:26] DEBUG  : demuxComponent <DemuxThread:1792>: process message DEMUX_COMMAND_PREPARE.
[2023-12-20 19:02:26] DEBUG  : awplayer <CdxParserPrepare:778>: source uri 'file:///forlinx/media/test.mp3'
[2023-12-20 19:02:26] DEBUG  : awplayer <__FileStreamConnect:407>: (6/0/4818092) path:'file:///forlinx/media/test.mp3'
[2023-12-20 19:02:26] DEBUG  : awplayer <CdxParserCreate:668>: parser node is id3v2.
[2023-12-20 19:02:26] DEBUG  : awplayer <CdxParserCreate:717>: Good, it's 'id3v2'
[2023-12-20 19:02:26] DEBUG  : awplayer <CdxParserCreate:717>: Good, it's 'mp3'
[2023-12-20 19:02:26] WARNING: awplayer <CdxMp3ParserControl:1267>: not implement...(18)
[2023-12-20 19:02:26] DEBUG  : awplayer <PrintMediaInfo:468>: *********PrintMediaInfo begin*********
[2023-12-20 19:02:26] DEBUG  : awplayer <PrintMediaInfo:482>: fileSize = 4818092, bSeekable = 1, duration = 300016, audioNum = 1, videoNum = 0, subtitleNum = 0
[2023-12-20 19:02:26] DEBUG  : awplayer <PrintMediaInfo:520>: ***Audio[0]*** eCodecFormat = 0x3, eSubCodecFormat = 0x0, nChannelNum = 2, nBitsPerSample = 0, nSampleRate = 44100
[2023-12-20 19:02:26] DEBUG  : awplayer <PrintMediaInfo:536>: *********P[ 2124.461204] [SNDCODEC][sunxi_card_hw_params][651]:stream_flag: 0
rintMediaInfo end*********
[2023-12-20 19:02:26] DEBUG  : demuxComponent <PrintMediaInfo:468>: *********PrintMediaInfo begin*********
[2023-12-20 19:02:26] DEBUG  : demuxComponent <PrintMediaInfo:482>: fileSize = 4818092, bSeekable = 1, duration = 300016, audioNum = 1, videoNum = 0, subtitleNum = 0
[2023-12-20 19:02:26] DEBUG  : demuxComponent <PrintMediaInfo:520>: ***Audio[0]*** eCodecFormat = 0x3, eSubCodecFormat = 0x0, nChannelNum = 2, nBitsPerSample = 0, nSampleRate = 44100
[2023-12-20 19:02:26] DEBUG  : demuxComponent <PrintMediaInfo:536>: *********PrintMediaInfo end*********
[2023-12-20 19:02:26] DEBUG  : awplayer <AudioRenderCompSetAudioSink:195>: audio render component setting AudioSink
[2023-12-20 19:02:26] DEBUG  : awplayer <XPlayerPrepareAsync:747>: prepareAsync
[2023-12-20 19:02:26] DEBUG  : awplayer <XPlayerThread:2067>: process message XPLAYER_COMMAND_PREPARE. mPriData->mStatus: 4
12-20 19:02:26.531  (W) AUTPlayer info: prepare ok.

[2023-12-20 19:02:26] DEBUG  : awplayer <XPlayerStart:797>: start
[2023-12-20 19:02:26] DEBUG  : awplayer <XPlayerThread:2275>: process message XPLAYER_COMMAND_START.
[2023-12-20 19:02:26] DEBUG  : awplayer <[ 2124.569726] [SNDCODEC][sunxi_card_hw_params][651]:stream_flag: 0
PlayerStart:740>: player start
[2023-12-20 19:02:26] DEBUG  : awplayer <BaseCompPostAndWait:61>: audio decoder receive cmd: start
(Allwinner Audio Middle Layer),line(971) : Create Decoder!!=====
[2023-12-20 19:02:26] DEBUG  : awplayer <handleStart:1086>: Create libadecoder success...
(Allwinner Audio Middle Layer),line(603) : AudioDec_Installaudiolib ok
(Allwinner Audio Middle Layer),line(606) : audio decoder init start ...
(AllwinnerAlibs),line(50) :
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Audio <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
tag   : audiocodec-v1.2
branch: new
commit: 3ba65962c01cbf1280ddda19d843009b6ef8ce85
date  : Tue Jan 8 16:25:27 2019 +0800
----------------------------------------------------------------------

(AllwinnerAlibs),line(700) : ----Loading so success!
(AllwinnerAlibs),line(902) : *************pAudioStreamInfo start******************
(AllwinnerAlibs),line(903) : eCodecFormat         :id(3), name(mpeg layer-III)
(AllwinnerAlibs),line(904) : eSubCodecFormat      :0
(AllwinnerAlibs),line(905) : nChannelNum          :2
(AllwinnerAlibs),line(906) : nBitsPerSample       :16
(AllwinnerAlibs),line(907) : nSampleRate          :44100
(AllwinnerAlibs),line(908) : nAvgBitrate          :128000
(AllwinnerAlibs),line(909) : nMaxBitRate          :128000
(AllwinnerAlibs),line(910) : nFileSize            :0
(AllwinnerAlibs),line(911) : eAudioBitstreamSource:0
(AllwinnerAlibs),line(912) : eDataEncodeType      :0
(AllwinnerAlibs),line(913) : nCodecSpecificDataLen:0
(AllwinnerAlibs),line(914) : pCodecSpecificData   :(nil)
(AllwinnerAlibs),line(915) : nFlags               :0
(AllwinnerAlibs),line(916) : nBlockAlign          :0
(AllwinnerAlibs),line(917) : *************pAudioStreamInfo end  ******************
(Allwinner Audio Libs),line(27) : init successs...
(Allwinner Audio Middle Layer),line(614) : AUDIO DECODE INIT OK...0
[2023-12-20 19:02:26] DEBUG  : awplayer <BaseCompPostAndWait:61>: audio render receive cmd: start
[2023-12-20 19:02:26] INFO   : awplayer <handleStart:295>: audio render process start message.
[2023-12-20 19:02:26] DEBUG  : awplayer <initSoundDevice:478>: init sound device.
[2023-12-20 19:02:26] DEBUG  : awplayer <initSoundDevice:486>: set sound devide param, sample rate = 44100, channel num = 2.
[2023-12-20 19:02:26] DEBUG  : demuxComponent <DemuxThread:2053>: process message DEMUX_COMMAND_START.
[2023-12-20 19:02:26] WARNING: awplayer <callbackProcess:3656>: message 0x40a not handled.
======================================
|Space  key | start or pause    |
|Left   key | seek backend      |
|Right  key | seek forward      |
|Up     key | audio volume larger       |
|Down   key | audio volume small        |
======================================
[2023-12-20 19:02:26] DEBUG  : awplayer <startSoundDevice:684>: start sound device.
[2023-12-20 19:02:26] DEBUG  : awplayer <startSoundDevice:686>: audio device start end

[2023-12-20 19:02:26] DEBUG  : awplayer <CallbackProcess:2959>: first audio pts = 0
[2023-12-20 19:02:26] WARNING: awplayer <checkSampleRate:644>: sample rate change from 44100 to 44100.
[2023-12-20 19:02:26] WARNING: awplayer <checkSampleRate:646>: channel num change from 2 to 2.
[2023-12-20 19:02:26] WARNING: awplayer <checkSampleRate:648>: bitPerSample num change from 16 to 16.
[2023-12-20 19:02:26] WARNING: awplayer <checkSampleRate:650>: if need direct out put flag change from 0 to 1.
[2023-12-20 19:02:26] WARNING: awplayer <checkSampleRate:652>: data type change from 1 to 1.
[2023-12-20 19:02:26] WARNING: awplayer <checkSampleRate:671>: start sound devide again because samplaRate or channelNum change
[2023-12-20 19:02:26] INFO   : demuxComponent <DemuxThread:3226>: waiting for audio stream buffer.
[2023-12-20 19:02:26] INFO   : demuxComponent <DemuxThread:3226>: waiting for audio stream buffer.
[2023-12-20 19:02:27] INFO   : demuxComponent <DemuxThread:3226>: waiting for audio stream buffer.
[2023-12-20 19:02:27] INFO   : demuxComponent <DemuxThread:3226>: waiting for audio stream buffer.

=============================================
测试结果

视频 h264的文件能解,h265也可以解了;编码h264不正常。
音频 编码解码都可以正常运行。Sdk和测试app都可以运行,但是具体的编码格式没有详细测试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1361298.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java反射篇----第三篇

系列文章目录 文章目录 系列文章目录前言一、反射使用步骤(获取 Class 对象、调用对象方法)二、获取 Class 对象有几种方法三、利用反射动态创建对象实例前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章…

所有单片机使用的汇编语言是统一的吗?

所有单片机使用的汇编语言是统一的吗&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&…

跑通大模型领域的 hello world

跑通书生浦语大模型的 3 个趣味 demo&#xff08;InternLM-Chat-7B 智能对话、Lagent工具调用解简单数学题、浦语灵笔多模态图文创作和理解&#xff09;视频和文档。 1、两个框架 InternLM 是⼀个开源的轻量级训练框架&#xff0c;旨在⽀持⼤模型训练⽽⽆需⼤量的依赖。 Lage…

TSINGSEE青犀智能分析网关V4在智慧园区车辆违停检测场景中的应用

一、背景与需求 园区作为企业办公、生产制造的重要场所&#xff0c;主要道路车辆违停等违规行为会对园区的安全造成隐患&#xff0c;并且在上下班高峰期内&#xff0c;由于发现不及时&#xff0c;车辆违停行为会造成出入口拥堵现象&#xff0c;这也成为园区管理的棘手问题。为了…

提升软件质量与效率:UI自动化测试的重要性

在软件开发领域&#xff0c;UI自动化测试工具被广泛应用&#xff0c;其意义不仅仅体现在节省时间和资源上&#xff0c;更关系到软件质量的提升、团队效率的增加&#xff0c;以及用户体验的改善。本文将探讨使用UI自动化测试工具的重要性&#xff0c;以及它在软件开发生命周期中…

JVM知识总结(简单且高效)

1. JVM内存与本地内存 JVM内存&#xff1a;受虚拟机内存大小的参数控制&#xff0c;当大小超过参数设置的大小时会报OOM。本地内存&#xff1a;本地内存不受虚拟机内存参数的限制&#xff0c;只受物理内存容量的限制&#xff1b;虽然不受参数的限制&#xff0c;如果所占内存超过…

C语言学习NO.13-字符函数(三)-strncpy,strncat,strncmp长度受限制的字符串函数

长度受限制的字符串函数介绍 一、strncpy函数的使用 &#xff08;一&#xff09;strncpy使用 #include <stdio.h> #include <string.h>int main() {char arr1[20] "asdfgdfv";char arr2[7] "zxcvbn";strncpy(arr1, arr2, 4);printf("…

Origin无法使用主题管理器相关功能或报错:Err, Save Theme dialog error!

问题描述 在使用origin绘图时&#xff0c;往往需要进行大批量绘制同样类型的图。如果每个图都不断地去修改相关设置&#xff0c;无疑是浪费了许多宝贵的时间。为了提高绘图效率&#xff0c;了解到了主题管理器&#xff0c;可在“工具–主题管理器”找到。 然而&#xff0c;当我…

计算机毕业设计-----SSM宠物商城带后台管理系统

项目介绍 该项目为前后台项目&#xff0c;分为普通用户与管理员两种角色&#xff0c;前台普通用户登录&#xff0c;后台管理员登录&#xff1b; 用户角色包含以下功能&#xff1a; 加入购物车,发表留言,提交订单,查看订单信息,会员注册,登录页面等功能。 管理员角色包含以下…

静态网页设计——极乐迪斯科(HTML+CSS+JavaScript)

前言 声明&#xff1a;该文章只是做技术分享&#xff0c;若侵权请联系我删除。&#xff01;&#xff01; 感谢大佬的视频&#xff1a; https://www.bilibili.com/video/BV11k4y1X7mH/?vd_source5f425e0074a7f92921f53ab87712357b 使用技术&#xff1a;HTMLCSSJS&#xff08;…

C++补充内容--EasyX-UI界面

esay x 其他 地图打印(利用二维数组) 双缓冲 当我们绘制一张图 然后另一张图盖住前一张图的某个部分的时候 由于while的存在 会导致 两张图不停的闪烁 所以加入双缓冲可以解决这个问题 开启双缓冲 之后等待Flush或者End 才会进行图片的绘制 不然不会进行图片的绘制,这样就可…

Python学习之路——文件部分【文件的读取】

目录 先解释一下引文的答案 一、open()打开函数 二、mode常用的三种基础访问模式 三、读-操作相关方法 &#xff08;一&#xff09;read方法 &#xff08;二&#xff09;readlines方法 &#xff08;三&#xff09;with open 语法 &#xff08;四&#xff09;操作汇总 …

腾讯云2核2G3M服务器够用吗?腾讯云2核2G3M云服务器性能评测

阿里云轻量应用服务器2核2G3M带宽优惠价格62元一年&#xff0c;100%CPU性能&#xff0c;3M带宽下载速度384KB/秒&#xff0c;40GB SSD系统盘&#xff0c;月流量200GB&#xff0c;折合每天6.6GB流量&#xff0c;超出月流量包的流量按照0.8元每GB的价格支付流量费&#xff0c;地域…

【c++】vector模拟

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大二&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;能手撕vector模拟 > 毒鸡汤&#xff1a;在等待…

PCL提示无法读取强度信息(Failed to find match for field ‘intensity‘.)简单解决方法

问题&#xff1a; 使用CC或者其他软件将las或者其他格式点云转成PCD格式后&#xff0c;然后使用PCL的库进行读取&#xff0c;有时会碰到Failed to find match for field intensity.提示&#xff0c;解决方法如下&#xff1b; 处理方法&#xff1a; 一个比较简单的方法如下&…

对比开源大语言模型的自然语言生成SQL能力

背景 NL-to-SQL&#xff08;自然语言到结构化查询语言&#xff09;任务是自然语言处理&#xff08;NLP&#xff09;领域的一个难题。 它涉及将自然语言问题转换为 SQL 查询&#xff0c;然后可以针对关系数据库执行该查询来回答问题。 该任务是 NLP 中的一个专门子领域&#xf…

C++补充内容--语法篇

这里写目录标题 语法其他语法函数的存储类函数参数默认值格式默认参数位置重载函数的默认参数 指针名与正常指针的自增自减以及解引用与的优先级问题指针的赋值、加减数字、加减指针二维数组中的一些指针辨析输出调用字符指针时 会将该指针以及之后的元素全部输出二维数组未完全…

【力扣题解】P530-二叉搜索树的最小绝对差-Java题解

&#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【力扣题解】 文章目录 【力扣题解】P530-二叉搜索树的最小绝对差-Java题解&#x1f30f;题目描述&#x1f4a1;题解&…

【性能测试入门】详解客户端性能测试和服务器端性能测试!

一&#xff1a;客户端性能测试和服务器端性能测试 客户端性能测试和服务器端性能测试是两个不同但相关的概念: 客户端性能测试: - 测试应用程序客户端(如Web浏览器、移动应用等)的性能,例如加载时间,响应时间等。 - 测试在不同系统配置(CPU、内存、网络等)下客户端的运行性…

在Gitee上维护Erpnext源

在Gitee上维护Erpnext源 官方的frappe和erpnext地址: GitHub - frappe/frappe: Low code web framework for real world applications, in Python and Javascript GitHub - frappe/erpnext: Free and Open Source Enterprise Resource Planning (ERP) 1, 仓库地址输入frappe的官…