Re: [PATCH 2/2] media: coda: Add more H264 levels for CODA960

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Le vendredi 17 juillet 2020 à 09:48 +0200, Philipp Zabel a écrit :
> Hi Ezequiel, Nicolas,
> 
> On Fri, 2020-07-17 at 00:49 -0300, Ezequiel Garcia wrote:
> > From: Nicolas Dufresne <nicolas.dufresne@xxxxxxxxxxxxx>
> > 
> > This add H264 level 4.1, 4.2 and 5.0 to the list of supported formats.
> > While the hardware does not fully support these levels, it do support
> > most of them.
> 
> Could you clarify this? As far as I understand the hardware supports
> maximum frame size requirement for up to level 4.2 (8704 macroblocks),
> but not 5.0, and at least the implementation on i.MX6 does not support
> the max encoding speed requirements for levels 4.1 and higher.
> 
> I don't think the firmware ever produces any output with a level higher
> than 4.0 either, so what is the purpose of pretending otherwise?

Nothing is very explicit in the user manual, they speak in term of
resolution and framerate. They claim 1080p 30fps for encoding, and
1080p 60fps for decoding. For the encoder, there is an auto selection
for the level, and the documentation is maxed to 4.0, and so I would
agree that 4.0 is the max encoding level. Wikipedia also list "1,920×1,
080@30.1 (4)" so 1080p30 with 4 frame references as being an example of
4.0 maximum. So V2 of this patchset should make sure that for the
encoder this stays there.

On the decoding side, what I found is that there is an error bit
indicator called LEVELID (bit 19) that indicates that SPS level_idc
wasn't accepted. The error is described as "Supported up to 51.". So
basically there is some extra contraints that least to 4.2 as you
describe, and above 5.1 is an hard failure. That imho creates a grey-
zone. If we think of DASH/HLS, the information usually comes with
Resolution/Framerate/Codec/Profile/Level, and in this context, you can
enable 5.1 safely assuming the Resolition/Framerate/Profile are already
verified. But if you only wanted to use the level, then you could
prefer the driver to expose a max of 4.2.

So do you have an opinion on the way forward ? Personally I like the
idea of giving the list of level_idc that won't cause the parser to
reject it, and leave it to the user to validate the
Resolution/Framerate seperatly, we have the V4L2 API for that. Let me
know, as we'll use that for V2.

> 
> regards
> Philipp
> 

Attachment: signature.asc
Description: This is a digitally signed message part


[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux