iMX6Q SabreLite low fps video decoding

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

iMX6Q SabreLite low fps video decoding

Jump to solution
1,937 Views
Scoccia
Contributor II

I installed the ubuntu demo image downloaded from Freescale on my iMX6Q SabreLite board and try to play the demo trailer "BigBuckBunny" at 720p with encoding h264.

The problem is that the frame rate is very poor (about 20 fps). Audio is AAC.

The command that I use is:

"gplay big_buck_bunny_720p_h264.mov"

I also tried a custom linux build done with ltib and got the same result.

Also using normal grestreamer pipeline, playbin2 ecc the result is always the same...

have you any idea to improve the video performance? Or what I'm doing wrong?

I attach also the gplay log:

@linaro-ubuntu-desktop:/home/linaro/Desktop# gplay big_buck_bunny_720p_h264.mov

playbin2 is employed!

fsl_player_init(): Successfully initialize!

fsl_player_set_media_location(): filename=big_buck_bunny_720p_h264.mov

[Stopped  ][Vol=01][00:00:00/00:00:00][fps:0]Aiur: 3.0.7

Core: MPEG4PARSER_06.06.03  build on Jun 18 2013 14:52:11

  mime: video/quicktime; audio/x-m4a; application/x-3gp

  file: /usr/lib/imx-mm/parser/lib_mp4_parser_arm11_elinux.so.3.1

Content Info:

        URI:

              file:///home/linaro/Desktop/big_buck_bunny_720p_h264.mov

        Idx File:

              /root/.aiur/.home.linaro.Desktop.big_buck_bunny_720p_h264.mov.aidx

        Seekable  : Yes

        Size(byte): 416751190

Movie Info:

        Seekable  : Yes

        Live      : No

        Duration  : 0:09:56.461696000

        ReadMode  : File

        Track     : 3

Track 00 [video_000000] Enabled

        Duration: 0:09:56.458304000

        Language: und

        Mime:

              video/x-h264, parsed=(boolean)true, width=(int)1280, height=(int)720, framerate=

              (fraction)24/1, codec_data=(buffer)00000001274d401fa9180a00b7600d4040406db0ad7bd

              f010000000128de09c8

[INFO]  Product Info: i.MX6Q/D/S

vpudec versions :smileyhappy:

        plugin: 3.0.7

        wrapper: 1.0.35(VPUWRAPPER_ARM_LINUX Build on Jul 30 2013 23:00:47)

        vpulib: 5.4.16

        firmware: 2.3.10.40778

Track 01 [subtitle]: Disabled

        Codec: 0, SubCodec: 0

Track 02 [audio_000000] Enabled

        Duration: 0:09:56.480000000

        Language: und

        Mime:

              audio/mpeg, mpegversion=(int)4, channels=(int)6, rate=(int)48000, bitrate=(int)4

              48000, framed=(boolean)true, stream-format=(string)raw, codec_data=(buffer)11b0

MFW_GST_V4LSINK_PLUGIN 3.0.7 build on Jul 30 2013 23:35:32.

FOUND GST_MESSAGE_TAG!

          codec: AAC

  language code: und

        bitrate: 448000

FOUND GST_MESSAGE_TAG!

container format: MOV/MP4/3GP

FOUND GST_MESSAGE_TAG!

          codec: H.264/AVC

  language code: und

Cannot connect to server socket err = No such file or directory

Cannot connect to server socket

jack server is not running or cannot be started

Beep: 3.0.7

Core: AAC decoder Wrapper  build on Mar 15 2013 09:56:21

  mime: audio/mpeg, mpegversion=(int){2,4}

  file: /usr/lib/imx-mm/audio-codec/wrap/lib_aacd_wrap_arm12_elinux.so.3

CODEC: BLN_MAD-MMCODECS_AACD_ARM_03.07.00  build on Jul 17 2012 17:47:46.

[INFO]  bitstreamMode 1, chromaInterleave 1, mapType 0, tiled2LinearEnable 0

>>V4L_SINK: Actually buffer status:

        hardware buffer : 13

        software buffer : 0

get GST_MESSAGE_ELEMENT prepare-xwindow-id;

full screen size:1920x1080

[V4L Update Display]: left=0, top=0, width=1920, height=1080

fsl_player_play()

FSL_PLAYER_01.00_LINUX build on Jul 30 2013 23:38:32

        [h]display the operation Help

        [p]Play

        [s]Stop

        [e]Seek

        [a]Pause when playing, play when paused

        [v]Volume

        [m]Switch to mute or not

        [>]Play next file

        [<]Play previous file

        [r]Switch to repeated mode or not

        [f]Set full screen or not

        [z]resize the width and height

        [t]Rotate

        [c]Setting play rate

        [i]Display the metadata

        [x]eXit

get GST_MESSAGE_ELEMENT playbin2-stream-changed, uri=(string)file:///home/linaro/Desktop/big_buck_bunny_720p_h264.mov;

[Playing  ][Vol=01][00:00:19/00:09:56][fps:18]

As you can see the fps is 18... very low...

Searchin in the community i don't find nothing similar to this issue, so I suppose that I'm doing something wrong or missing something...

Thanks for you help!

0 Kudos
1 Solution
1,019 Views
Scoccia
Contributor II

Issue found on file at path:

arch/arm/mach-mx6/clock.c

In the version of kernel 3.0.35 used on last ltib released 3.0.35_4.1.0


in the function: "mx6_clocks_init"

the following function are called

after mxc_timer_init(&gpt_clk[0], timer_base, MXC_INT_GPT);
clk_tree_init();

and finally at line 5521:
call the clk_set_rate(&ipg_perclk, 22000000);


when system starts lpj and BogoMIPS estimated are wrong.

Instead on kernel 3.0.35_1.1.0

the function call sequence is:

clk_set_rate(&ipg_perclk, 22000000);

mxc_timer_init(&gpt_clk[0], timer_base, MXC_INT_GPT);
and then
clk_tree_init();

Using this sequence on kernel 3.0.35_4.1.0 my board is now working well, and lpj and BogoMIPS are correctly calculated.


I hope that this note can be useful, because I suppose that the issue is related not only for Sabrelite board.


Best regards.

View solution in original post

0 Kudos
6 Replies
1,018 Views
peixiuhui
Contributor I

Hi, I have a question, the FPS is 0, can you have any Suggestions?

0 Kudos
1,019 Views
VladanJovanovic
NXP Employee
NXP Employee

Not sure what is on the demo image that comes with SABRE Lite board and if VPU libraries are instealled.

What is the output of "gst-inspect | grep mfw" ?

When building with LTIB, you need to add codecs separately. Did you download codec release package and followed instructions (there's separate documentation package) for enabling it under LTIB?

0 Kudos
1,019 Views
Scoccia
Contributor II

Looking at the log that I posted you can see:

[INFO]  Product Info: i.MX6Q/D/S

vpudec versions

        plugin: 3.0.7

        wrapper: 1.0.35(VPUWRAPPER_ARM_LINUX Build on Jul 30 2013 23:00:47)

        vpulib: 5.4.16

        firmware: 2.3.10.40778

so seems that the vpu decoder plugin is correctly called, and the version of multimedia codec is 3.0.7

Using gst-inspect direct on the board i get:

root@linaro-ubuntu-desktop:~# gst-inspect | grep mfw

amrdec.imx:  mfw_amrdecoder: amr audio decoder

h264.imx:  mfw_h264decoder: h264 video decoder

ipucsc.imx:  mfw_ipucsc: IPU-based video converter

audiopeq.imx:  mfw_audio_pp: audio post equalizer

mpeg2dec.imx:  mfw_mpeg2decoder: mpeg2 video decoder

isink.imx:  mfw_isink: IPU-based video sink

mpeg4dec.imx:  mfw_mpeg4aspdecoder: mpeg4 video decoder

v4lsink.imx:  mfw_v4lsink: v4l2 video sink

v4lsrc.imx:  mfw_v4lsrc: v4l2 based camera src

mp3enc.imx:  mfw_mp3encoder: mp3 audio encoder

root@linaro-ubuntu-desktop:~# gst-inspect | grep vpu

vpu.imx:  vpuenc: VPU-based video encoder

vpu.imx:  vpudec: VPU-based video decoder

So seems that the plugins are ok

0 Kudos
1,019 Views
VladanJovanovic
NXP Employee
NXP Employee

And under LTIB?

Problem with Ubuntu images is that they run a lot of things at startup (checking for updates, scanning file system, etc.) and when it's run from a (relatively slow) SD card, performance is usually not good.

I'd recommend to verify that LTIB is properly set up for video and test performance under it. Other option would be to go for Yocto and build fsl-image-gui and test it. Building for SABRE Lite is supported and there shouldn't be any problems with video of that resolution on i.MX 6.

0 Kudos
1,019 Views
Scoccia
Contributor II

whit ltib I got the same results, for fps and plugins.

I always use ltib for our imx processors.

Where I can start to download a demo image based on yocto for sabre lite?

So if with yocto is all ok, I can compare different release to understand where can be the issue.

Thanks again

0 Kudos
1,020 Views
Scoccia
Contributor II

Issue found on file at path:

arch/arm/mach-mx6/clock.c

In the version of kernel 3.0.35 used on last ltib released 3.0.35_4.1.0


in the function: "mx6_clocks_init"

the following function are called

after mxc_timer_init(&gpt_clk[0], timer_base, MXC_INT_GPT);
clk_tree_init();

and finally at line 5521:
call the clk_set_rate(&ipg_perclk, 22000000);


when system starts lpj and BogoMIPS estimated are wrong.

Instead on kernel 3.0.35_1.1.0

the function call sequence is:

clk_set_rate(&ipg_perclk, 22000000);

mxc_timer_init(&gpt_clk[0], timer_base, MXC_INT_GPT);
and then
clk_tree_init();

Using this sequence on kernel 3.0.35_4.1.0 my board is now working well, and lpj and BogoMIPS are correctly calculated.


I hope that this note can be useful, because I suppose that the issue is related not only for Sabrelite board.


Best regards.

0 Kudos