This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

using Gstreamer with Neon mode on Ti8134 platform




Hi, all :

Recently, I use Gstreamer to stream video/audio, and record it simultaneously.
In my case, I need to decode video by OpenMax(omx_h264dec), decode audio by "FAAD", and encode audio by "FAAC" or ffmpeg(ffenc_aac).

the platform config information is :
    Ti8134
    Arm clk : 720MHz
    DDR clk : 400MHz
    L3 clk : 200MHz
the stream video/audio codec information is :
    video : H264, Resolution:1280x720, framerate=60
    audio : rate:48000, channels:2, width:16

I observe that the performance is about 60fps only if I decode video/audio.
but when I add the "FAAC" to encode aac, the video decode only 10~20fps.

So, I tried to improve the codec performance in Gstreamer codec.
I survey the Neon mode and expect it will optimize the FFT in audio aac codec.
I build gstreamer libs with neon parameter :

"-O2 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -ftree-vectorize -ftree-vectorizer-verbose=2 -ffast-math -mfloat-abi=softfp"

The building log is

    5543.7026.putty_do_or_not_neon.log

The log shows some optimization, but I can't observe any performance improvement about audio encode.

My question is :
(1) Does the neon mode really works on "FAAC" and "ffenc_aac"? How do I make sure that?
(2) Any more improvement we can do?

  • What is this platform  Ti8134? What processor are you using?

  • This forum supports the AM335X, AM35X and AM37X processors. Moving this to the DM814X forum.

  • Hi,

    The ffmpeg plug-in for GStreamer (gst-ffmpeg) has enabled NEON optimization by default. You can disable NEON optimization (check "--disable-neon" in gst-ffmpeg/gst-libs/ext/libav/configure) to see the difference.

    http://processors.wiki.ti.com/index.php/ARM_Multimedia_Users_Guide#Neon_support_on_opensource_community

    Best Regards,

    Luke Lin

  • Luke Lin said:

    The ffmpeg plug-in for GStreamer (gst-ffmpeg) has enabled NEON optimization by default. You can disable NEON optimization (check "--disable-neon" in gst-ffmpeg/gst-libs/ext/libav/configure) to see the difference.

    Hi, thanks for the information, I will test and observe the difference of CPU performance.

    And, I want to simpfy the problem of the audio encode performance for Ti8134.
    I get 2 informations :
    (1) There's no DSP(C674x) on Ti8134 evm. The audio encode is software encode and excuted on A8 processor.
    (2) The "FAAC" performance on Ti814x is about 35% from Ti's engineer, although he didn't show me his test condition(samplerate, bitrate...etc).
    ref this post : http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/716/p/297717/1038836.aspx#1038836

    So, my question is does Ti8134 can reach thus spec?
    video decode(h264, 1080P, 60fps) + audio encode(sample rate=48000, bitrate=128000, channels=2)

    No matter reach or not, I hope Ti can provide some benchmark testing report to let we reference.

    Thank you very much.

  • DM8134 and DM8148 have the same ARM core (Cortex A8). DM8134 can reach the same performance as long as DM8134's ARM clock is not less than DM8148.

    Best Regads,

    Luke Lin

  • Hi, thanks for your reply.

    Yes, I think DM8134 should perforam as DM8148.
    So, I want to make sure that DM1848 can reach the codec performance.
    I search on Ti wiki but get no result about codec performance.
    Would you provide any other codec performance information we can reference?

    thanks for your help.

  •  

    Hi,

    Unfortunately we don't have such information.

    Another thing you need to know. DM8148 has two DDR controllers while DM8134 has only one. So DM8134 may only have half DDR bandwidth as much as DM8148 has. If your application needs to access DDR frequently, DM8148 may have better performance than DM8134 even they have the same ARM frequency.

    Best Regards,

    Luke Lin

  • Hi, Luke

    I test the NEON mode for FAAC and FFMPEG, but I can't observe apparently difference of CPU usage.

    My way is
    (1) build gstreamer using "vfp" parameters:

    "-O2 -march=armv7-a -mtune=cortex-a8 -mfpu=vfp -mfloat-abi=softfp"

    (2) I see the build_log shows the NEON mode is disable in "gst-ffmpeg":

    "NEON enabled no"

    (3) Then, I replace the Gstreamer libs(.so) about FFMPEG/FAAC in "/usr/lib" and "/usr/lib/gstreamer0.10" on dm8134 platform.

    Do I miss something?