Decoding 2 channels of 1080p videos the same time on i.MX6 SDB

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

Decoding 2 channels of 1080p videos the same time on i.MX6 SDB

Jump to solution
3,332 Views
vincentchou
Contributor IV

Hi!  We would like to set up a demonstration based on i.MX6 SDB.  In addition to the HDMI output, we would like to output a second channel of 1080p video to a different video output channel.  In addition, the Linux OS needs to decode two 1080p for two different video output channels with the VPU in i.MX6.  Has anyone had any idea upon how to do it?  Your suggestion is greatly appreciated!

Vincent

1 Solution
1,330 Views
daiane_angolini
NXP Employee
NXP Employee

Vincent Chou wrote:

Sorry to cause your confusion.  I assume there is a possibility to switch frame buffer in order to switch HD1080p video without delay.

No problem. I think you can switch framebuffer, but I have never tested and I don´t think it will work "on the fly" and "out of box". I mean I´m not sure if you will be able to swicth framebuffer during the playback and I think you will need to make some changes in the source code.

  In fact, we even think it may be possible to shrink the original 1080p video into a window with a smaller size when the second 1080p video is played on the main window.  This is a scenario for a digital signage and we plan to propose such a digital signage box based on i.MX6 to my customer.  The first technical requirement is seamless switching HD video.

Do you mean, like a PiP?

Anyway, I shall try to send one HD video to HDMI output and the other HD video to a virtual display and then try to switch the frame buffer for these two streams.  By the way, do you know any command I could use to send an HD stream to a virtual display from gst-launch?

I would use fake sink

View solution in original post

0 Kudos
12 Replies
1,330 Views
johnturnur
Contributor III

Hi,

I want to do two 1080p  video playback and display it on two different screen. I want to do it on Android.

What modification i have to do in fsl imx-android-13.4.1.

Is there any alternative soltion without gStreamer?

Thanks,

John

0 Kudos
1,330 Views
daiane_angolini
NXP Employee
NXP Employee

Do you want 2 displays or 4 displays?

One of then must be HDMI, what would be the second?

0 Kudos
1,330 Views
vincentchou
Contributor IV

We would like to use HDMI as the first channel and LVDS output as the second channel.  Is that possible?

Vincent

0 Kudos
1,330 Views
daiane_angolini
NXP Employee
NXP Employee

Yes, it is possible.

Do you need to change your kernel command line, in order to enable dual display (please, take a look in release notes)

And you will need to configure your gstreamer command line in order to let it know where to display.

Please, take a look on

GStreamer iMX6 Dual-Display

Message was edited by: Daiane Angolini And please, let me know the result.

0 Kudos
1,330 Views
vincentchou
Contributor IV

I did an experiment to play two 1080p mp4 on the same HDMI output with reduced size.  For some videos, it works, for other, it does not.  I figure there is a computation power issue.  Is it possible for us to use gst-launch command option to change the decoding frame rate?  I guess this will save some computation power on decoding. 

0 Kudos
1,330 Views
daiane_angolini
NXP Employee
NXP Employee

sure, at least you can use videorate. But, if you decode the 1080p with a different resolution, you still need to resize.

What are your real goal?

Are your imx6 solo, duo or quad?

0 Kudos
1,330 Views
vincentchou
Contributor IV

I am evaluating the possibility to use imx6 as the cpu for a digital signage box.  The end product needs to switch two HD1080p video seamlessly.  In that case, I need to have the capability to decode two HD1080p stream with two frame buffer.  The next I need to test is to switch the output of HDMI from one frame buffer to the second one without any time delay. 

However, I suspect my logic to test on the iMX6SDB is wrong.  Do you have any suggestion?  My customer's criteria is to see no time lag on the HDMI output when switching video files. 

0 Kudos
1,330 Views
daiane_angolini
NXP Employee
NXP Employee

Well, I get confused because you said you want 2 1080p output at once, and you was testing 2 1080p/2 output at once.

I´m not sure you have a board with 2 HDMI connector. I believe it would be the perfect environment to your test. But you can test 2 1080p output at once using one HDMI and any other output (please, let me know what would be your available outputs).

imx6q can decode 2 1080p at once, and I think you can determinate 2 different framerates. But, I haven´t tested the frame buffer swapping, so I´m not sure home many time it will take. And I would say you to test it, and determinate what would be a reasonable time. Then enter a SR asking for improving this time.

It´s a non tested "feature", so I would say it may be improved depending on the usecase.

But, first things first, we need to see 2 movies being played at the same time, with different frame rates.

So, please, share:

1- what output you will work with

2- what is the kernel command line for those output

3- what is the movie codec. Is it audio+video or video only

4- what is the gstreamer command line for each video

0 Kudos
1,330 Views
vincentchou
Contributor IV

Sorry to cause your confusion.  I assume there is a possibility to switch frame buffer in order to switch HD1080p video without delay.  In fact, we even think it may be possible to shrink the original 1080p video into a window with a smaller size when the second 1080p video is played on the main window.  This is a scenario for a digital signage and we plan to propose such a digital signage box based on i.MX6 to my customer.  The first technical requirement is seamless switching HD video.

Anyway, I shall try to send one HD video to HDMI output and the other HD video to a virtual display and then try to switch the frame buffer for these two streams.  By the way, do you know any command I could use to send an HD stream to a virtual display from gst-launch?

0 Kudos
1,331 Views
daiane_angolini
NXP Employee
NXP Employee

Vincent Chou wrote:

Sorry to cause your confusion.  I assume there is a possibility to switch frame buffer in order to switch HD1080p video without delay.

No problem. I think you can switch framebuffer, but I have never tested and I don´t think it will work "on the fly" and "out of box". I mean I´m not sure if you will be able to swicth framebuffer during the playback and I think you will need to make some changes in the source code.

  In fact, we even think it may be possible to shrink the original 1080p video into a window with a smaller size when the second 1080p video is played on the main window.  This is a scenario for a digital signage and we plan to propose such a digital signage box based on i.MX6 to my customer.  The first technical requirement is seamless switching HD video.

Do you mean, like a PiP?

Anyway, I shall try to send one HD video to HDMI output and the other HD video to a virtual display and then try to switch the frame buffer for these two streams.  By the way, do you know any command I could use to send an HD stream to a virtual display from gst-launch?

I would use fake sink

0 Kudos
1,330 Views
EricNelson
Senior Contributor II

I just ran across this post. I wish there was a subscribe to "all things i.MX6" feature on i.MX Community,

because we did this a while back:

     http://boundarydevices.com/playing-multiple-hd-videos-on-i-mx6/

That post shows three video windows on a single display using mfw_isink and multiple processes.

You can also use the "tee" element and output to multiple displays using mfw_v4lsink

and specifying the "device". This example will display the video portion on two displays,

though I'm not sure how to route the audio in this example.

     gst-launch filesrc location=kungfu.flv \

          ! 'video/quicktime' \

          ! aiurdemux name=demux demux. \

          ! queue max-size-buffers=0 max-size-time=0 \

          ! vpudec ! tee name=both \

               ! queue ! mfw_v4lsink device=/dev/video17 both. \

               ! queue ! mfw_v4lsink device=/dev/video19

1,330 Views
vincentchou
Contributor IV

Thanks!  When we get the board back from the customer, we shall try your suggestion!  Thanks a lo!

Vincent

0 Kudos