[x264-devel] Levels

bond b-o-n-d at gmx.net
Sat Jan 5 23:09:51 CET 2008


I second that. Creating incompliant streams knowingly should be a nogo and 
might harm x264's reputation. In the long run the specs will win, even if 
now there might be still hardware problems

In the end, people should change streams/levels ex post when they need it, 
with the tools being already available for that


----- Original Message ----- 
From: "Måns Rullgård" <mans at mansr.com>
To: "Mailing list for x264 developers" <x264-devel at videolan.org>
Sent: Saturday, January 05, 2008 10:01 PM
Subject: Re: [x264-devel] Levels


"Alex Giladi" <alex.giladi at gmail.com> writes:

> On Jan 5, 2008 10:16 AM, Loren Merritt <lorenm at u.washington.edu> wrote:
>> Ideally, encoders would signal the lowest level that they can be sure the
>> stream complies with. Decoders would document their officially supported
>> profiles and levels, but try to play any stream anyway.
>>
>> In practice, lots of hardware decoders refuse to play any stream whose
>> signaled level exceeds the player's nominal level, without even looking 
>> at
>> the stream's contents. If you encode something in x264 without specifying
>> a level, x264 can't know in advance what level it complies with, and so
>> defaults to 5.1.
>> Thus, any file that was encoded by people not thinking about hardware
>> decoders won't play on many hardware decoders, while a simple change of
>> metadata causes them to work.
>> So I propose a change: x264 will default to the lowest level that 
>> complies
>> with the video's resolution, framerate, and DPB, while ignoring VBV
>> constraints unless VBV ratecontrol is enabled, and ignoring all of the
>> minor constraints. This will sometimes underestimate the bitrate and thus
>> generate a stream that doesn't comply with its own signaled level, but it
>> will also increase the chance that any random file will play on any 
>> random
>> hardware player.
>> What do you all think, is working better in the real world sufficient
>> reason to intentionally generate possibly noncompliant streams?
>>
>> I'd like to say that the worst that can happen is some player will try to
>> play a stream it really can't. But I'm afraid I'm underestimating the
>> stupidity of hardware manufacterers. I don't know how they'll manage to
>> break it; maybe some player will infer max bitrate from level, and read
>> the file from disk only at that bitrate even if the disk is capable of
>> faster and the stream requires it?
>>
>>
>> The alternative is to keep track of peak bitrate and other constraints, 
>> so
>> the encoder can know after encoding a movie what level it actually
>> complied with. But that would require changing the SPS after encoding the
>> whole movie, which is incompatible with the API of every encoding
>> application I've ever heard of, so I don't think I'll implement it.
>
> I think that producing incompliant streams by default is not a good idea.

I agree.  We should never knowingly (or with high likelihood) create
non-compliant streams.

How are bitrate restrictions handled now when a profile/level is
explicitly specified?

-- 
Måns Rullgård
mans at mansr.com
_______________________________________________
x264-devel mailing list
x264-devel at videolan.org
http://mailman.videolan.org/listinfo/x264-devel


-- 
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.5.516 / Virus Database: 269.17.13/1208 - Release Date: 3.1.2008 
15:52





More information about the x264-devel mailing list