[FFmpeg-devel] [PATCH] doc/APIchanges: document the lavu/lavf field moves

James Almer jamrial at gmail.com
Thu Jun 30 21:43:21 CEST 2016


On 6/30/2016 4:30 PM, Michael Niedermayer wrote:
> On Thu, Jun 30, 2016 at 04:21:03PM -0300, James Almer wrote:
>> On 6/30/2016 1:53 PM, James Almer wrote:
>>> On 6/30/2016 1:15 PM, Michael Niedermayer wrote:
>>>> The text is copied from the lavfi case. Not sure this matches
>>>> exactly private / public ABI wise, better text welcome!
>>>>
>>>> Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
>>>> ---
>>>>  doc/APIchanges |   16 ++++++++++++++++
>>>>  1 file changed, 16 insertions(+)
>>>>
>>>> diff --git a/doc/APIchanges b/doc/APIchanges
>>>> index 47106c2..fd649d6 100644
>>>> --- a/doc/APIchanges
>>>> +++ b/doc/APIchanges
>>>> @@ -15,6 +15,22 @@ libavutil:     2015-08-28
>>>>  
>>>>  API changes, most recent first:
>>>>  
>>>> +2016-06-30 - c1c7e0ab - lavf 57.41.100 - avformat.h
>>>> +  Fix accidental ABI breakage in AVFrame.
>>>> +  ABI was broken in 6f69f7a8, lavf 57.32.100 and released as ffmpeg 3.1.
>>>
>>> AVStream, and again, there was *no* breakage in 3,1. A public field
>>> was added above private fields.
>>> The breakage is what we're now introducing in 3.1.1 to keep people
>>> misusing the API happy.
>>>
>>> if we add a line here, it should mention how we're in breaking the
>>> 3.1 ABI to make 3.1.1 compatible at runtime with API-violating
>>> applications built against 3.0
>>
> 
>> How about something like
>>
>> diff --git a/doc/APIchanges b/doc/APIchanges
>> index 47106c2..c80606a 100644
>> --- a/doc/APIchanges
>> +++ b/doc/APIchanges
>> @@ -15,6 +15,30 @@ libavutil:     2015-08-28
>>
>>  API changes, most recent first:
>>
>> +2016-06-30 - c1c7e0ab - lavf 57.41.100 - avformat.h
>> +  Moved codecpar field from AVFilterContext to the end of the struct.
>> +  This is an intentional ABI breakage as it's been informed to us that
>> +  several downstream projects wrongly accessed fields marked as private
>> +  which were below the newly added public field.
> 
> i think this is a confusing to someone who hasnt followed the
> discussions, it sounds a bit like "we break ABI to break apps"
> when the goal is to match (private) ABI toward the widly used 3.0
> as many applications used it and would otherwise break

Saying we're "Fixing an accidental ABI breakage in AVStream/AVFrame" is
dishonest and it makes us look bad implying we screwed up when what we're
doing is working around downstream projects screwing up, and for the sake
of distros.

In any case I'm not going to block this so if nobody comes up with a less
confusing description then just push yours (after you fix the mixed up
library versions for lavu and the struct name for lavf) when you're ready
to release.

Thanks for working on this.


More information about the ffmpeg-devel mailing list