[FFmpeg-devel] Small modifcation to libavformat/dvbsubdec.c

JULIAN GARDNER joolzg at btinternet.com
Tue Sep 17 08:06:39 CEST 2013





----- Original Message -----
> From: Reimar Döffinger <Reimar.Doeffinger at gmx.de>
> To: FFmpeg development discussions and patches <ffmpeg-devel at ffmpeg.org>
> Cc: "ffmpeg-devel at ffmpeg.org" <ffmpeg-devel at ffmpeg.org>
> Sent: Tuesday, 17 September 2013, 7:26
> Subject: Re: [FFmpeg-devel] Small modifcation to libavformat/dvbsubdec.c
> 
> 
> 
> On 16.09.2013, at 23:58, Carl Eugen Hoyos <cehoyos at ag.or.at> wrote:
> 
>>  JULIAN GARDNER <joolzg <at> btinternet.com> writes:
>> 
>>>  Currently in my own personal tree are
>>> 
>>>  Complete
>>>  1. DVB Teletext language parsing
>>>  2. DVB Teletext SI generation for -c:s copy
>> 
>>  Please send patches, or even better, setup a git 
>>  clone and ask Michael to merge. I know that these 
>>  features are very welcome!
>> 
>>  I may (completely) misunderstand this thread but 
>>  I suspect patches that make decoders more strict 
>>  than absolutely required are generally not a 
>>  good idea, particularly if no sample is known 
>>  that profits from the change.
> 
> The patch doesn't make it more strict.
> A patch making it more strict would do something like adding
> if (!!(depth & 0x80) + !!(depth & 0x40) + !!(depth & 0x20) > 1)
>   return AVERROR_INVALID_DATA;
> 
> What it does instead is that it interprets an invalid value like 0xc0 as 0x80.
> The spec (at least the quoted part) does not say a thing about how corrupt data 
> should be handled as far as I can tell, and 3 of us (at least 2 with extensive 
> experience reading and implementing specifications) agree on that, so while 
> experience is good and something to respect the reasoning for the change makes 0 
> sense to us so far.
> The commit message really should explain why a value of 0xc0 should be treated 
> like 0x80 and not e.g. 0x40 or 0x00, just as examples.

Spec: Only 1 bit SHALL be set. IS THIS NOT CLEAR? You are making something out of the spec that does not exist, dont make up stuff, use the spec as it is written.

There is no mention of what happens if you do NOT FOLLOW THE SPEC, what has happened in the past, and i have helped fix a couple of dvb subtitle encoders that had this exact problem, is 

1. A receiver works
2. B, C D,E F,G,H, I ... X, Y, Z receivers DONT WORK and you get the wrong colours being displayed. due to the fact that the 8bit to 4bit conversion fails.

I cant see why you 2 are making such a song and dance of "corrupt data ...", as the streams are rle compressed corrupt data will make a massive mess of the output anyway. There is no error checking per se in DVB Subtitles, would have been nice to have a nice CRC but THERE ARE NONE and there is NO MENTION OF WHAT HAPPENS if the data is corrupt.

Its your call, but i really have given up now on ever getting anything into ffmpeg when its based on any DVB Specification.

Please read the spec again and read the line

"Only 1 bit SHALL be set"

It does not say

"Only 1 bit SHALL be set, but if 2 are this means ............"

joolz


More information about the ffmpeg-devel mailing list