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.

real time performance

Guru 20755 points

Hello,

In H.264 datasheet appears:

>"Can I encode with bit rate or any other parameter (example resolution) more than specified in level 4.2? 
>Yes. Video encoder will return a non-fatal level incompliance error, but still it continues encoding.
>It is not guaranteed to achieve real time performance for bit rates higher than specified."

What does it mean when it is said that "It is not guaranteed to achieve real time" ? 
Is it that whenever there is  in-compliance error that the encoder "tries" anyway to encode ?

Thank you very much,

Ran

  • Ran,

    This means that if you set level 5.0 and ask encoder to encode at 1080P@120fps(which is allowed by the level limit), the encoder will try to encode it at the max framerate it can encode. Sure it cannot reach 120 fps on say DM814x or OMAP4 but it will continue to encode at what ever max frame rate it can achieve.

    regards

    Yashwant

  • Yashwant,

    Thank you very much for the information. I also see the performance table in datasheet which helps to understand the limitation.
    If there is a table which list the limitation and describe what happens when fps,resolution is out of boundaries, then it will give a complete understanding of codec  limitations and behavior when trying to encode with parameters which are out of boundaries.

    For example, If required resolution is too hight for the profile/level, is it that the codec will try to encode, (without guarantee of real time performance)? Is there a table in datasheet that list the boundaries and limitations ? When resolution is too big, will the encoder return incomplicance error, and continue to encode ?

    I'm Using DM8168,

    Thanks,

    Ran

  • Hi ran,

    As Deepak replied in your another post, the encoder will encode with whatever parameter it is supplied (of course it has to be within limit of the supported value of encoder).

    -- It check for those parameters to be within the limit being supplied, if yes, it encodes without any error. If the level limit is violated on the higher side(e.g. using level 2.2 bur encoding 1080P), then encoder still goes ahead and encodes but gives a NON-FATAL error. It also encodes the user provided limit i.e. for the example given, it will set level as 2.2 and encode a 1080P resolution.

    -- If profile is voilated on higher side, i.e. you are encoding B frame with Baseline or using CABAC with baseline, the encoder will throw FATAL error and will not continue.

    We dont have any formal documentation listing these.

    regards

    Yashwant

  • Hi Yashwant,

    Is same logic also applies to TI's MPEG-4 encoder ?

    Thank you,

    Ran

  • Hi Ran,

    Yes, the same logic applies to TI's MPEG-4 Encoder also.

    Regards,

    Mohammed Harris

  • Hi ,

    >If the level limit is violated on the higher side(e.g. using level 2.2 bur encoding 1080P), then encoder still goes ahead and encodes but gives a NON-FATAL error.

    > If profile is voilated on higher side, i.e. you are encoding B frame with Baseline or using CABAC with baseline, the encoder will throw FATAL error and will not continue

    1. What happens if the level/profile is violated on the lower side ?

    2. Is the same logic also relevant for decoder codecs ?

    3. what is actually done with level in codecs, is it used only for checking parameters limit, or is it used for any algorithm in codec ?

    Regards,

    Ran

  • Hi Ran,

    1. There is no such thing as level violation on the lower side. Level specifies only the upper limit.

         Profile denotes a set of algorithmic tools that could be used in the encoded stream. If you specify a coding tool that is not supported by the profile, encoder will throw    FATAL error and will not continue.

    2. Yes, the same logic is applicable for decoders. Decoders use the profile and level values that are encoded in the bitstream.

    If the level limit is violated in the stream, the decoder might not be able to decode due to lack of memory, etc. In that case, it might throw another error in the process of decoding.

    3. Level is not used for any algorithm in codec.

    Regards,

    Mohammed Harris

  • Hello Mohammed,

    >3. Level is not used for any algorithm in codec.

    Is level used just for checking parameters ?

    Thank you very much,

    Ran

  • Hi Ran,

    Yes, level is just used for checking parameters.

    Regards,

    Mohammed Harris