AnsweredAssumed Answered

[i.mx6d]CPU load is 160% when play 1080P video with gstreamer tee element

Question asked by andy yang on Jun 3, 2016
Latest reply on Jun 6, 2016 by andy yang

Hi everyone


I have a question about Gstreamer tee element when playing 10@80P video.

when i play 1080P video with gstreamer tee element,CPU load is 160%.

Detail of my project requirement and software design as below:


[Project requirement]

Playback 1080P video and output videostream to two different display(DISP1:UI + Video,DISP2:Video)


[software design]

1.Design videoplayer based on playbin of gstreamer

2.Add tee element to the playbin in order to output videostream to two imxv4l2sink


[tee element reference code]

m_videoSink2 = gst_element_factory_make("imxv4l2sink", NULL);

g_object_set(G_OBJECT(m_videoSink2), "device", "/dev/video18", NULL);




//creat tee element

tee = gst_element_factory_make ("tee",NULL);

g_object_set(G_OBJECT(tee), "allow-not-linked", true, NULL);

queues[0] =gst_element_factory_make("queue",NULL);

queues[1] =gst_element_factory_make("queue",NULL);


qsrc_pad = gst_element_get_static_pad(queues[0],"src");

gst_bin_add_many(GST_BIN(m_videoOutputBin),m_videoIdentity, tee,queues[0],m_videoSink1,queues[1],m_videoSink2,NULL);




for (i = 0; i < NUM_SUBSTREAMS; ++i) {

tee_srcpads[i] = gst_element_get_request_pad (tee, "src_%u");

qsinkpads[i]= gst_element_get_static_pad (queues[i], "sink");

gst_pad_link (tee_srcpads[i],qsinkpads[i]);


gst_element_link(m_videoIdentity, tee);


[Test Result]

1.Play 1080P video to one display,CPU Load:8%(Compute based on IPU/VPU)

1.Play 1080P video to two display with above software design,CPU Load:160%(Compute based on IPU/VPU and CPU??)


So i think the reason of cpu overload is about tee element,maybe tee element copy the videostream data to two imxv4l2sink based on CPU.


Could anyone give me some advice about how to solve  this issue?

Appreciate any help in advance.

Thank you