Require Multiple H264 decodes and encodes in an embedded device

I am looking for a tablet based SoC that can do the following simultaneously in an embedded device

  1. 4 1080p30 H264 decodes
  2. 2 1080p30 H264 encodes
  3. 1 720p30 H264 encode
  4. composition of 4 decoded video streams in GPU as video textures, render to 2 separate offscreen surfaces and encode of these offscreen surfaces (which is where the above H264 encodes in “item 2” are used)

I have gone through the data sheet of Tegra K1, gone through forum posts but not clear whether it can support all of the above. I do see that NVidia’s encodes and decodes scale well for multiple encodes and decodes.

IF not Tegra K1, can Tegra X1 do these? When can we expect Tegra X1 to be available for development?

Doing all those simultaneously might be a bit too much. I can encode 2x 1080p and decode and render 4x 720p simultaneously. But encoding 2x 1080p and decoding 4x 1080p lead to choppy video playback. I tested that with my python based multiwindow test app and gst-launch, so there might be room for optimisations.

And it will of course save some bandwidth compared to above, if you don’t need to render anything to the screen, but I still doubt you can do all that.

Thanks for the reply, that’s exactly what I am looking for. I want to understand where the bottleneck is, before trying to squeeze more than what you got. Was the CPU maxed out with 4 720p decodes? Because you used gstreamer, I am assuming your test used the NVENC hardware. so one possibility is the bottleneck is hardware based encode/decode. I read that you can also use CUDA based encode/decode parallel to NVENC. The downside of CUDA based encode/decode is, cpu is also used, so if your CPU is already maxed out, that won’t work. Another bottleneck may be memory bandwidth, which is also difficult to work around.

Yes, HW is used both for encoding and for decoding (and for rendering).

The two 1080p encodes seem to take about 65-75% of CPU each. The 4x720p takes about 50% of CPU. Those are just according to the “top”.

Can you please provide me similar data for Tegra X1. Below are my specific questions.

  1. Along with 2x1080p 30 H.264 encode, how many 720p30 or 1080p30 H.264 decoding possible simultaneously?
  2. Along with 2x1080p 30 H.265 encode, how many 720p30 or 1080p30 H.265 decoding possible simultaneously?
  3. Can H.264/H.265 encode/decode be used simultaneously in any combination?
  4. Is MPEG-2 decoding possible simultaneously with H.264/H.265 encoding?

Few additional questions:
5. Is MPEG-2 encode supported on Tegra X1?
6. Is JPEG2000 encode/decode supported on Tegra X1?
7. Does H.264/H.265 encoder/decoder on Tegra X1 supports interlaced content?

Hello, skk219:

  1. /2.
    TX1 can support h264/h265 decoding @ 2160p60fps | 1080p240fps, or encoding @ 2160p30fps | 1080p120fps.
    So from codec point, in theory, along with 2x1080p30fps encoding, another 1080p120fps decoding is possible. (NOTE: that’s only from codec point. From system point, more aspects must be considered, like memory bandwidth, CPU loading, etc., and it can hardly reach this performance.)

3./4. Let me check internally and give you feedback.

  1. No MPEG-2 encoder. Only MPEG-2 decode @ 2160p60fps
  2. No JPEG2000 support. (some 3rd party software can support this, like openjpeg.)
  3. H264 decoding supports interlaced content.

br
ChenJian

Hello,
Here are the update for 3/4.
3. Can H.264/H.265 encode/decode be used simultaneously in any combination?
yes.
4. 4. Is MPEG-2 decoding possible simultaneously with H.264/H.265 encoding?
yes.

br
Chenjian

Chenjian,

Thanks for your responses to my queries.

Regards,
Swapan