[FFmpeg-devel] New patch for mpegts.c
Reimar Döffinger
Reimar.Doeffinger at gmx.de
Wed Oct 24 20:33:10 CEST 2012
On 24 Oct 2012, at 07:25, JULIAN GARDNER <joolzg at btinternet.com> wrote:
> ----- Original Message -----
>> From: Michael Niedermayer <michaelni at gmx.at>
>> To: FFmpeg development discussions and patches <ffmpeg-devel at ffmpeg.org>
>> Cc:
>> Sent: Wednesday, 24 October 2012, 5:26
>> Subject: Re: [FFmpeg-devel] New patch for mpegts.c
>>
>> On Wed, Oct 17, 2012 at 05:51:28PM +0100, JULIAN GARDNER wrote:
>>>
>>>
>>>
>>>
>>>
>>> ----- Original Message -----
>>>> From: Michael Niedermayer <michaelni at gmx.at>
>>>> To: FFmpeg development discussions and patches
>> <ffmpeg-devel at ffmpeg.org>
>>>> Cc:
>>>> Sent: Wednesday, 17 October 2012, 17:36
>>>> Subject: Re: [FFmpeg-devel] New patch for mpegts.c
>>>>
>>>> On Wed, Oct 17, 2012 at 08:46:07AM +0100, JULIAN GARDNER wrote:
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> ----- Original Message -----
>>>>> > From: Michael Niedermayer <michaelni at gmx.at>
>>>>> > To: FFmpeg development discussions and patches
>>>> <ffmpeg-devel at ffmpeg.org>
>>>>> > Cc:
>>>>> > Sent: Wednesday, 17 October 2012, 1:41
>>>>> > Subject: Re: [FFmpeg-devel] New patch for mpegts.c
>>>>> >
>>>>> > Hi
>>>>> >
>>>>> > On Tue, Oct 16, 2012 at 08:34:27PM +0100, JULIAN GARDNER
>> wrote:
>>>>> >>
>>>>> >> >________________________________
>>>>> >> > From: Michael Niedermayer <michaelni at gmx.at>
>>>>> >> >To: FFmpeg development discussions and patches
>>>>> > <ffmpeg-devel at ffmpeg.org>
>>>>> >> >Sent: Tuesday, 16 October 2012, 17:16
>>>>> >> >Subject: Re: [FFmpeg-devel] New patch for mpegts.c
>>>>> >> >
>>>>> >> >On Tue, Oct 16, 2012 at 02:33:01PM +0100, JULIAN
>> GARDNER
>>>> wrote:
>> [...]
>>>>> > If its about spec compliance, please quote the spec that
>> requires
>>>>> > this behavior.
>>>>> >
>>>>> ETS 300468 5.1.1 d
>>>>
>> http://www.etsi.org/deliver/etsi_en/300400_300499/300468/01.11.01_60/en_300468v011101p.pdf
>>>>
>>>> doesnt say one should discard things with equal version numbers
>>>>
>>>
>>> "When the characteristics of the TS described in the SI given in the
>> present document change (e.g. new events start, different composition of
>> elementary streams for a given service), then new SI data shall be sent
>> containing the updated information. A new version of the SI data is signalled by
>> sending a sub_table with the same identifiers as the previous sub_table
>> containing the relevant data, but with the next value of version_number."
>>>
>>> "document change" " the next value of version_number",
>> so to me this means that if the data is THE SAME then the version number will be
>> the same, and i guess that the guys who wrote the spec did this so you DONT have
>> to process the SAME data over and over again, what it was added for was hardware
>> filtering, which if you have spent 15+ years writing code for sat receivers etc
>> you will know this. Why would you want to process possibly millions of sections
>> which contain the SAME data, to just produce the same tables?.
>>>
>>> Now if you keep on banging on about the .00000001% of people who
>> concatenate 2 ts streams and do not follow the spec and either make sure the SI
>> data is the same, which means the version number the same, or make the version
>> number follow by becoming the next version then we are at an impasse, because i
>> think your wrong on this, but as your in charge i will await your decision.
>>>
>>> And what are we discard, we are just not processing THE SAME DATA over and
>> over again.
>> [...]
>>>>> Again we either process xxxx thousand sections or we do as the
>> spec says
>>>> and process only new/updated?
>>>>
>>>> The spec doesnt say that, it says:
>>>> d) version_number:
>>>> - When the characteristics of the TS described in the SI given
>> in the
>>>> present document change (e.g. new
>>>> events start, different composition of elementary streams for
>> a given
>>>> service), then new SI data shall be
>>>> sent containing the updated information. A new version of the
>> SI data
>>>> is signalled by sending a sub_table
>>>> with the same identifiers as the previous sub_table
>> containing the
>>>> relevant data, but with the next value
>>>> of version_number.
>>>> - For the SI tables specified in the present document, the
>> version_number
>>>> applies to all sections of a
>>>> sub_table.
>>>>
>>>> That speaks about "when X then ... shall be sent ...",
>> sending happens
>>>> on the muxer side, not the demuxer. The text quoted says nothing about
>>>> what a demuxer should or should not do with what it receives. It
>>>> simply describes what a demuxer can expect from a valid DVB stream.
>>>> A concatenated stream as you already explained is not a valid DVB
>>>> stream ...
>>>
>>> So your now saying that the spec is only for the muxer, can you show me the
>> spec for the demuxer then that is different, again i come back to the "New
>> version .... but with the next value of version number". This spec if for
>> DVB compatible systems, both muxers and demuxers.
>>>
>>> So have you tested what happens when you play a concatenated stream on a
>> DVB compliant receiver, you will get the same as with my modifications. As you
>> always seem to tell people, fix the problem 1st. The only problem i can see is
>> that you want the decoder NOT to follow the spec, but instead work for the NON
>> COMPATIBLE streams, when instead the concatenate should be fixed to produce
>> correct TS streams.
>>>
>>> I will leave it now and let you decide, as this circle will just keep going
>> round and round. If it will be included in any future ffmpeg release then great
>> if not then i will just keep it in my local tree.
>>
>> Patches must provide an overall improvment to be accepted.
>> Noone has shown a meassureable improvment for it yet and
>> the patch breaks seeking and breaks concatenated streams
>> If you want to keep it in its current form in your local tree then
>> i think you make a mistake.
>>
>> Instead IMHO you should rethink what improvment the patch provides
>> and then objectively test if it really does. If it does, then fix
>> the issues and repost the patch so it gets included in ffmpeg and
>> all users benefit.
>> OTOH if it doesnt provide a real user vissible improvment, lets just
>> lay it rest and work on something that does.
>>
>
> Ok given up trying to convince you that you are wrong.
For what it's worth I can't see where it would be wrong.
By what I understand of it I can see only one way this can be used to definitely improve the code: actually check if the data that should be the same actually is, and if not use a heuristic to decide which to use.
This would not change anything for concatenated streams if done correctly, while being more resilient to bitstream errors.
Concerning the interpretation of the spec: I see it only making assurances, which means that e.g. as an optimization a demuxer can skip some processing with risking issues. That does however not say anything about what a demuxer should do when those assurances are actually violated.
More information about the ffmpeg-devel
mailing list