On 01/17/2013 11:28 AM, Ronald S. Bultje wrote:
> Hi,
> 
> On Thu, Jan 17, 2013 at 2:15 AM, Reinhard Tartler <siret...@gmail.com> wrote:
>> On Thu, Jan 17, 2013 at 11:11 AM, Martin Storsjö <mar...@martin.st> wrote:
>>> On Thu, 17 Jan 2013, Reinhard Tartler wrote:
>>>
>>>> On Wed, Jan 16, 2013 at 7:08 PM, Ronald S. Bultje <rsbul...@gmail.com>
>>>> wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>> On Jan 16, 2013 10:01 AM, "Justin Ruggles" <justin.rugg...@gmail.com>
>>>>> wrote:
>>>>>>
>>>>>>
>>>>>> On 01/16/2013 12:46 PM, Ronald S. Bultje wrote:
>>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> On Jan 16, 2013 9:43 AM, "Luca Barbato" <lu_z...@gentoo.org
>>>>>>> <mailto:lu_z...@gentoo.org>> wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>> On 16/01/13 11:46, Luca Barbato wrote:
>>>>>>>>>
>>>>>>>>> From: "Ronald S. Bultje" <rsbul...@gmail.com
>>>>>>>
>>>>>>> <mailto:rsbul...@gmail.com>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Signed-off-by: Luca Barbato <lu_z...@gentoo.org
>>>>>>>
>>>>>>> <mailto:lu_z...@gentoo.org>>
>>>>>>>>>
>>>>>>>>> ---
>>>>>>>>>
>>>>>>>>> Rebased and compile-tested on arm and powerpc.
>>>>>>>>>
>>>>>>>>
>>>>>>>> Will be pushed in a while if nobody is against it.
>>>>>>>
>>>>>>>
>>>>>>> I had a question for Justin: the prefix is avpriv_, so is order in
>>>>>>> context part of abi? What about size?
>>>>>>
>>>>>>
>>>>>> I'm not completely sure. The header is not installed so it's not public,
>>>>>> so the only question I think is with mixing non-matching library
>>>>>> versions.
>>>>>
>>>>>
>>>>
>>>> avpriv matches av* and thus is part of the exported symbols.
>>>> Therefore, adding such a symbol warrants bumping minor (not major).
>>>> please do that before pushing.
>>>>
>>>> mixing non-matching library version becomes interesting when you bump
>>>> major. However, since all those symbols get proper symbol versions
>>>> attached nowadays, this is no problem either.
>>>
>>>
>>> It's not all that simple - the point here is that they're adding new fields
>>> in a private struct (which is used in the implicit private ABI between lavu
>>> and the others in this case) inbetween existing members. This means that an
>>> old lavc that tries to use members from the floatdsp context in a newer lavu
>>> will end up getting the wrong members.
>>
>> In that case, that's not private ABI. In fact, that term seems very
>> wrong, either it something is part for the exposed interface or it is
>> not. The difference here is that we do not expect applications and
>> applications outside of libav to inteface them. Which may be fine, but
>> hardly an excuse to sloppy on binary compatibility. If it breaks ABI,
>> and there is no way around it, we need to bump major.
>>
>>> If the members are added at the end, there shouldn't be too much of an issue
>>> though.
>>
>> If that works, then that's clearly preferable to bumping major!
> 
> It changes size of the struct, thus embedding the struct in another
> struct (in another lib) will break when mixing library versions. To
> fix this, I believe we need a avpriv_alloc_floatdsp_context() function
> (or something else that is able to calculate the size of
> avfloatdspcontext at runtime, within libavutil).

That's pretty much what I was thinking as well. We could even change the
init function to take AVFloatDSPContext ** and either allocate/init or
just re-init if already allocated.

-Justin
_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to