[FFmpeg-devel] [PATCH] Exposing forced flag for DVD and PGS subtitles
Erik Miranda
erikmiranda at gmail.com
Mon Apr 23 21:58:24 CEST 2012
On 18/04/2012 2:25 AM, Erik Miranda wrote:
> On 17/04/2012 8:18 PM, Erik Miranda wrote:
>> On 17/04/2012 7:15 PM, Michael Niedermayer wrote:
>>> On Tue, Apr 17, 2012 at 06:52:00PM -0400, Erik Miranda wrote:
>>>> On 17/04/2012 10:50 AM, Michael Niedermayer wrote:
>>>>> On Mon, Apr 16, 2012 at 09:44:48PM +0200, Reimar Döffinger wrote:
>>>>>> On 16 Apr 2012, at 12:45, Joakim Plate<elupus at ecce.se> wrote:
>>>>>>> Erik Miranda<erikmiranda<at> gmail.com> writes:
>>>>>>>> This patch adds a "forced" member to the AVSubtitleRect
>>>>>>>> structure and
>>>>>>>> implements setting this flag in the DVD and PGS subtitle
>>>>>>>> decoders, since
>>>>>>>> these are the formats I'm aware of that include such a
>>>>>>>> function. Since
>>>>>>>> this patch changes AVSubtitleRect, it leads to a public API
>>>>>>>> change. As
>>>>>>>> far as I can tell, this is the best method to allow access to this
>>>>>>>> information. Please advise me if otherwise, or if further
>>>>>>>> changes are
>>>>>>>> required as part of changing AVSubtitleRect. I think the
>>>>>>>> libavcodec
>>>>>>>> version would need a bump, correct?
>>>>>>> There is already a content dispostion type for forced. That is
>>>>>>> stream
>>>>>>> global thou. So one option would be to duplicate forced subs into a
>>>>>>> secondary subtitle stream.
>>>>>> What would be the point? What would someone do with that
>>>>>> information except drop all non-forced ones?
>>>>>> I guess it might be relevant if you want to preserve the info
>>>>>> when reencoding.
>>>>>> It should be possible to avoid the API/ABI breakage by adding an
>>>>>> extra array to AVSubtitle instead of putting it into the
>>>>>> AVSubtitleRect.
>>>>>> Though we might consider changing the whole API so extending the
>>>>>> rect is possible without changing the API in the future.
>>>>> Is there really a ABI/API issue with adding fields to
>>>>> AVSubtitleRect ?
>>>>> rect is a array of pointers
>>>>>
>>>>> assuming theres no inherent problem with adding fields to
>>>>> AVSubtitleRect
>>>>> to be able to maintain compatibility with forks of ffmpeg (which we
>>>>> try to currently)
>>>>> a bit of extra red tape is needed see fef411ef for how it was done
>>>>> for
>>>>> AVFrame
>>>>> Also just grep for avcodec_get_frame_class() to see code using this
>>>>>
>>>>> Code inside the lib declaring the AVSubtitleRect struct of course can
>>>>> do direct accesses
>>>>> its just applications which want to use shared libs that should avoid
>>>>> direct access
>>>>> This way shared libs can be exchanged between various forks in a
>>>>> binary
>>>>> compatibile way.
>>>>>
>>>>> [...]
>>>> Just for clarification, I took a look at fef411ef, and I presume the
>>>> idea is to AVOption enable AVSubtitleRect. When I read the
>>>> documentation on AVOption, normally the struct would begin with a
>>>> "class" field, but this would break compatibility which is why I
>>>> understand the class field was not added when doing the same for
>>>> AVFrame in fef411ef, and instead a "get_frame_class" function was
>>>> added instead, correct?
>>> yes
>>>
>>>
>>>> Also, since this would be (from my
>>>> understanding) a "fake" object, would I need to make any changes to
>>>> follow the procedure of av_opt_set_defaults() and av_opt_free()?
>>> do you need these 2 ?
>>>
>>> [...]
>> No, I don't. I was mearly double-checking that it would be okay to
>> write the code without using these two since we are deveating from
>> the conventions specified in the AVOption documentation.
> This patch adds an AVClass for the AVSubtitleRect structure, and
> should be applied in addition to my previous patch. I wasn't quite
> sure what fields should be added to the AVClass, since fef411ef added
> only a small subset of the fields in AVFrame. So I exposed the new
> forced field, and the positional/dimensional fields (since those
> seemed to be ones exposed in AVFrame). I had thought of adding all
> fields, but I'm not quite sure how to add the AVPicture field, or even
> if that is possible with the current implementation of AVOption. So,
> let me know if you have any comments in this matter.
Are there any further comments on this pair of patches? As this is the
first time I am submitting a patch, if the change looks okay, what is
the process for getting the patches included? Do I push the changes
myself, or does one of the core developers take care of the merging?
More information about the ffmpeg-devel
mailing list