[2/3] avcodec: Define side data type for fallback track

Message ID 1446823758-19467-1-git-send-email-stebbins@jetheaddev.com
State New
Headers show

Commit Message

John Stebbins Nov. 6, 2015, 3:29 p.m.
This side data type is meant to be added to AVStream side data.
A fallback track indicates an alternate track to use when the
current track can not be decoded for some reason.  e.g. no
decoder available for codec.
---
 doc/APIchanges       | 4 ++++
 libavcodec/avcodec.h | 8 ++++++++
 libavcodec/version.h | 2 +-
 3 files changed, 13 insertions(+), 1 deletion(-)

Add APIchanges

Comments

wm4 Nov. 6, 2015, 4:17 p.m. | #1
On Fri, 6 Nov 2015 07:29:18 -0800
John Stebbins <stebbins@jetheaddev.com> wrote:

> This side data type is meant to be added to AVStream side data.
> A fallback track indicates an alternate track to use when the
> current track can not be decoded for some reason.  e.g. no
> decoder available for codec.
> ---
>  doc/APIchanges       | 4 ++++
>  libavcodec/avcodec.h | 8 ++++++++
>  libavcodec/version.h | 2 +-
>  3 files changed, 13 insertions(+), 1 deletion(-)
> 
> Add APIchanges
> 
> diff --git a/doc/APIchanges b/doc/APIchanges
> index d301bd5..60afb48 100644
> --- a/doc/APIchanges
> +++ b/doc/APIchanges
> @@ -12,6 +12,10 @@ libavutil:     2015-08-28
>  
>  
>  API changes, most recent first:
> +2015-11-xx - xxxxxxx - lavc 57.9.0 - avcodec.h
> +  Add AV_PKT_DATA_FALLBACK_TRACK for making fallback associations between
> +  streams.
> +
>  2015-xx-xx - xxxxxxx - lavc 57.6.0 - avcodec.h
>  
>  2015-xx-xx - lavc 57.7.0 - avcodec.h
> diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
> index e368d6b..ba4b088 100644
> --- a/libavcodec/avcodec.h
> +++ b/libavcodec/avcodec.h
> @@ -1129,6 +1129,14 @@ enum AVPacketSideDataType {
>       * and FF_LAMBDA_MAX (bad).
>       */
>      AV_PKT_DATA_QUALITY_FACTOR,
> +
> +    /**
> +     * This side data contains an integer value representing the stream index
> +     * of a "fallback" track.  A fallback track indicates an alternate
> +     * track to use when the current track can not be decoded for some reason.
> +     * e.g. no decoder available for codec.
> +     */
> +    AV_PKT_DATA_FALLBACK_TRACK,

"integer value" is far too imprecise. Does it mean you have to read
data with *(int*)ptr?

>  };
>  
>  typedef struct AVPacketSideData {
> diff --git a/libavcodec/version.h b/libavcodec/version.h
> index bd75525..5776670 100644
> --- a/libavcodec/version.h
> +++ b/libavcodec/version.h
> @@ -29,7 +29,7 @@
>  #include "libavutil/version.h"
>  
>  #define LIBAVCODEC_VERSION_MAJOR 57
> -#define LIBAVCODEC_VERSION_MINOR  8
> +#define LIBAVCODEC_VERSION_MINOR  9
>  #define LIBAVCODEC_VERSION_MICRO  0
>  
>  #define LIBAVCODEC_VERSION_INT  AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
John Stebbins Nov. 6, 2015, 7:24 p.m. | #2
On Fri, 2015-11-06 at 17:17 +0100, wm4 wrote:
> On Fri, 6 Nov 2015 07:29:18 -0800
> John Stebbins <stebbins@jetheaddev.com> wrote:
> 
> > This side data type is meant to be added to AVStream side data.
> > A fallback track indicates an alternate track to use when the
> > current track can not be decoded for some reason.  e.g. no
> > decoder available for codec.
> > ---
> >  doc/APIchanges       | 4 ++++
> >  libavcodec/avcodec.h | 8 ++++++++
> >  libavcodec/version.h | 2 +-
> >  3 files changed, 13 insertions(+), 1 deletion(-)
> > 
> > Add APIchanges
> > 
> > diff --git a/doc/APIchanges b/doc/APIchanges
> > index d301bd5..60afb48 100644
> > --- a/doc/APIchanges
> > +++ b/doc/APIchanges
> > @@ -12,6 +12,10 @@ libavutil:     2015-08-28
> >  
> >  
> >  API changes, most recent first:
> > +2015-11-xx - xxxxxxx - lavc 57.9.0 - avcodec.h
> > +  Add AV_PKT_DATA_FALLBACK_TRACK for making fallback associations
> > between
> > +  streams.
> > +
> >  2015-xx-xx - xxxxxxx - lavc 57.6.0 - avcodec.h
> >  
> >  2015-xx-xx - lavc 57.7.0 - avcodec.h
> > diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
> > index e368d6b..ba4b088 100644
> > --- a/libavcodec/avcodec.h
> > +++ b/libavcodec/avcodec.h
> > @@ -1129,6 +1129,14 @@ enum AVPacketSideDataType {
> >       * and FF_LAMBDA_MAX (bad).
> >       */
> >      AV_PKT_DATA_QUALITY_FACTOR,
> > +
> > +    /**
> > +     * This side data contains an integer value representing the
> > stream index
> > +     * of a "fallback" track.  A fallback track indicates an
> > alternate
> > +     * track to use when the current track can not be decoded for
> > some reason.
> > +     * e.g. no decoder available for codec.
> > +     */
> > +    AV_PKT_DATA_FALLBACK_TRACK,
> 
> "integer value" is far too imprecise. Does it mean you have to read
> data with *(int*)ptr?
> 

Yes, I was just following the lead of the other integer side data types
above.  They are commented the same way.  Do you have a suggestion for
something better?
wm4 Nov. 7, 2015, 1:11 a.m. | #3
On Fri, 6 Nov 2015 11:24:08 -0800
John Stebbins <stebbins@jetheaddev.com> wrote:

> On Fri, 2015-11-06 at 17:17 +0100, wm4 wrote:
> > On Fri, 6 Nov 2015 07:29:18 -0800
> > John Stebbins <stebbins@jetheaddev.com> wrote:
> >   
> > > This side data type is meant to be added to AVStream side data.
> > > A fallback track indicates an alternate track to use when the
> > > current track can not be decoded for some reason.  e.g. no
> > > decoder available for codec.
> > > ---
> > >  doc/APIchanges       | 4 ++++
> > >  libavcodec/avcodec.h | 8 ++++++++
> > >  libavcodec/version.h | 2 +-
> > >  3 files changed, 13 insertions(+), 1 deletion(-)
> > > 
> > > Add APIchanges
> > > 
> > > diff --git a/doc/APIchanges b/doc/APIchanges
> > > index d301bd5..60afb48 100644
> > > --- a/doc/APIchanges
> > > +++ b/doc/APIchanges
> > > @@ -12,6 +12,10 @@ libavutil:     2015-08-28
> > >  
> > >  
> > >  API changes, most recent first:
> > > +2015-11-xx - xxxxxxx - lavc 57.9.0 - avcodec.h
> > > +  Add AV_PKT_DATA_FALLBACK_TRACK for making fallback associations
> > > between
> > > +  streams.
> > > +
> > >  2015-xx-xx - xxxxxxx - lavc 57.6.0 - avcodec.h
> > >  
> > >  2015-xx-xx - lavc 57.7.0 - avcodec.h
> > > diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
> > > index e368d6b..ba4b088 100644
> > > --- a/libavcodec/avcodec.h
> > > +++ b/libavcodec/avcodec.h
> > > @@ -1129,6 +1129,14 @@ enum AVPacketSideDataType {
> > >       * and FF_LAMBDA_MAX (bad).
> > >       */
> > >      AV_PKT_DATA_QUALITY_FACTOR,
> > > +
> > > +    /**
> > > +     * This side data contains an integer value representing the
> > > stream index
> > > +     * of a "fallback" track.  A fallback track indicates an
> > > alternate
> > > +     * track to use when the current track can not be decoded for
> > > some reason.
> > > +     * e.g. no decoder available for codec.
> > > +     */
> > > +    AV_PKT_DATA_FALLBACK_TRACK,  
> > 
> > "integer value" is far too imprecise. Does it mean you have to read
> > data with *(int*)ptr?
> >   
> 
> Yes, I was just following the lead of the other integer side data types
> above.  They are commented the same way.  Do you have a suggestion for
> something better?

Didn't look at the others, but maybe it'd be a good idea to document
this for new side data.

I think a single line like "The data is accessed as int*" would
suffice. That's relatively clear and tells the API user that it's not
accessed with e.g. AV_RL32 or whatever else would be possible.
Hendrik Leppkes Nov. 7, 2015, 8:28 a.m. | #4
On Sat, Nov 7, 2015 at 2:11 AM, wm4 <nfxjfg@googlemail.com> wrote:
> On Fri, 6 Nov 2015 11:24:08 -0800
> John Stebbins <stebbins@jetheaddev.com> wrote:
>
>> On Fri, 2015-11-06 at 17:17 +0100, wm4 wrote:
>> > On Fri, 6 Nov 2015 07:29:18 -0800
>> > John Stebbins <stebbins@jetheaddev.com> wrote:
>> >
>> > > This side data type is meant to be added to AVStream side data.
>> > > A fallback track indicates an alternate track to use when the
>> > > current track can not be decoded for some reason.  e.g. no
>> > > decoder available for codec.
>> > > ---
>> > >  doc/APIchanges       | 4 ++++
>> > >  libavcodec/avcodec.h | 8 ++++++++
>> > >  libavcodec/version.h | 2 +-
>> > >  3 files changed, 13 insertions(+), 1 deletion(-)
>> > >
>> > > Add APIchanges
>> > >
>> > > diff --git a/doc/APIchanges b/doc/APIchanges
>> > > index d301bd5..60afb48 100644
>> > > --- a/doc/APIchanges
>> > > +++ b/doc/APIchanges
>> > > @@ -12,6 +12,10 @@ libavutil:     2015-08-28
>> > >
>> > >
>> > >  API changes, most recent first:
>> > > +2015-11-xx - xxxxxxx - lavc 57.9.0 - avcodec.h
>> > > +  Add AV_PKT_DATA_FALLBACK_TRACK for making fallback associations
>> > > between
>> > > +  streams.
>> > > +
>> > >  2015-xx-xx - xxxxxxx - lavc 57.6.0 - avcodec.h
>> > >
>> > >  2015-xx-xx - lavc 57.7.0 - avcodec.h
>> > > diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
>> > > index e368d6b..ba4b088 100644
>> > > --- a/libavcodec/avcodec.h
>> > > +++ b/libavcodec/avcodec.h
>> > > @@ -1129,6 +1129,14 @@ enum AVPacketSideDataType {
>> > >       * and FF_LAMBDA_MAX (bad).
>> > >       */
>> > >      AV_PKT_DATA_QUALITY_FACTOR,
>> > > +
>> > > +    /**
>> > > +     * This side data contains an integer value representing the
>> > > stream index
>> > > +     * of a "fallback" track.  A fallback track indicates an
>> > > alternate
>> > > +     * track to use when the current track can not be decoded for
>> > > some reason.
>> > > +     * e.g. no decoder available for codec.
>> > > +     */
>> > > +    AV_PKT_DATA_FALLBACK_TRACK,
>> >
>> > "integer value" is far too imprecise. Does it mean you have to read
>> > data with *(int*)ptr?
>> >
>>
>> Yes, I was just following the lead of the other integer side data types
>> above.  They are commented the same way.  Do you have a suggestion for
>> something better?
>
> Didn't look at the others, but maybe it'd be a good idea to document
> this for new side data.
>
> I think a single line like "The data is accessed as int*" would
> suffice. That's relatively clear and tells the API user that it's not
> accessed with e.g. AV_RL32 or whatever else would be possible.

Maybe a clearly defined fixed size read would be favorable over a type
which might change size one day?

- Hendrik
John Stebbins Nov. 7, 2015, 2:59 p.m. | #5
On 11/07/2015 12:28 AM, Hendrik Leppkes wrote:
> On Sat, Nov 7, 2015 at 2:11 AM, wm4 <nfxjfg@googlemail.com> wrote:
>> On Fri, 6 Nov 2015 11:24:08 -0800
>> John Stebbins <stebbins@jetheaddev.com> wrote:
>>
>>> On Fri, 2015-11-06 at 17:17 +0100, wm4 wrote:
>>>> On Fri, 6 Nov 2015 07:29:18 -0800
>>>> John Stebbins <stebbins@jetheaddev.com> wrote:
>>>>
>>>>> This side data type is meant to be added to AVStream side data.
>>>>> A fallback track indicates an alternate track to use when the
>>>>> current track can not be decoded for some reason.  e.g. no
>>>>> decoder available for codec.
>>>>> ---
>>>>>  doc/APIchanges       | 4 ++++
>>>>>  libavcodec/avcodec.h | 8 ++++++++
>>>>>  libavcodec/version.h | 2 +-
>>>>>  3 files changed, 13 insertions(+), 1 deletion(-)
>>>>>
>>>>> Add APIchanges
>>>>>
>>>>> diff --git a/doc/APIchanges b/doc/APIchanges
>>>>> index d301bd5..60afb48 100644
>>>>> --- a/doc/APIchanges
>>>>> +++ b/doc/APIchanges
>>>>> @@ -12,6 +12,10 @@ libavutil:     2015-08-28
>>>>>
>>>>>
>>>>>  API changes, most recent first:
>>>>> +2015-11-xx - xxxxxxx - lavc 57.9.0 - avcodec.h
>>>>> +  Add AV_PKT_DATA_FALLBACK_TRACK for making fallback associations
>>>>> between
>>>>> +  streams.
>>>>> +
>>>>>  2015-xx-xx - xxxxxxx - lavc 57.6.0 - avcodec.h
>>>>>
>>>>>  2015-xx-xx - lavc 57.7.0 - avcodec.h
>>>>> diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
>>>>> index e368d6b..ba4b088 100644
>>>>> --- a/libavcodec/avcodec.h
>>>>> +++ b/libavcodec/avcodec.h
>>>>> @@ -1129,6 +1129,14 @@ enum AVPacketSideDataType {
>>>>>       * and FF_LAMBDA_MAX (bad).
>>>>>       */
>>>>>      AV_PKT_DATA_QUALITY_FACTOR,
>>>>> +
>>>>> +    /**
>>>>> +     * This side data contains an integer value representing the
>>>>> stream index
>>>>> +     * of a "fallback" track.  A fallback track indicates an
>>>>> alternate
>>>>> +     * track to use when the current track can not be decoded for
>>>>> some reason.
>>>>> +     * e.g. no decoder available for codec.
>>>>> +     */
>>>>> +    AV_PKT_DATA_FALLBACK_TRACK,
>>>> "integer value" is far too imprecise. Does it mean you have to read
>>>> data with *(int*)ptr?
>>>>
>>> Yes, I was just following the lead of the other integer side data types
>>> above.  They are commented the same way.  Do you have a suggestion for
>>> something better?
>> Didn't look at the others, but maybe it'd be a good idea to document
>> this for new side data.
>>
>> I think a single line like "The data is accessed as int*" would
>> suffice. That's relatively clear and tells the API user that it's not
>> accessed with e.g. AV_RL32 or whatever else would be possible.
> Maybe a clearly defined fixed size read would be favorable over a type
> which might change size one day?
>
>

hmm, int is used as the type of many function parameters in libav*.  I don't see how this is any different.  The actual
size doesn't matter here as long as it is the same between the compiler that generates the library and the compiler that
generates the app that links to the library.
Luca Barbato Nov. 7, 2015, 3:08 p.m. | #6
On 07/11/15 15:59, John Stebbins wrote:
> hmm, int is used as the type of many function parameters in libav*.  I don't see how this is any different.  The actual
> size doesn't matter here as long as it is the same between the compiler that generates the library and the compiler that
> generates the app that links to the library.

I'd make a documentation patch to mention that _all_ the side data
documented as pointer to integers are same-endian integer.

I'd push the set as is for now.

lu
Anton Khirnov Nov. 7, 2015, 4:19 p.m. | #7
Quoting Hendrik Leppkes (2015-11-07 09:28:37)
> On Sat, Nov 7, 2015 at 2:11 AM, wm4 <nfxjfg@googlemail.com> wrote:
> > On Fri, 6 Nov 2015 11:24:08 -0800
> > John Stebbins <stebbins@jetheaddev.com> wrote:
> >
> >> On Fri, 2015-11-06 at 17:17 +0100, wm4 wrote:
> >> > On Fri, 6 Nov 2015 07:29:18 -0800
> >> > John Stebbins <stebbins@jetheaddev.com> wrote:
> >> >
> >> > > This side data type is meant to be added to AVStream side data.
> >> > > A fallback track indicates an alternate track to use when the
> >> > > current track can not be decoded for some reason.  e.g. no
> >> > > decoder available for codec.
> >> > > ---
> >> > >  doc/APIchanges       | 4 ++++
> >> > >  libavcodec/avcodec.h | 8 ++++++++
> >> > >  libavcodec/version.h | 2 +-
> >> > >  3 files changed, 13 insertions(+), 1 deletion(-)
> >> > >
> >> > > Add APIchanges
> >> > >
> >> > > diff --git a/doc/APIchanges b/doc/APIchanges
> >> > > index d301bd5..60afb48 100644
> >> > > --- a/doc/APIchanges
> >> > > +++ b/doc/APIchanges
> >> > > @@ -12,6 +12,10 @@ libavutil:     2015-08-28
> >> > >
> >> > >
> >> > >  API changes, most recent first:
> >> > > +2015-11-xx - xxxxxxx - lavc 57.9.0 - avcodec.h
> >> > > +  Add AV_PKT_DATA_FALLBACK_TRACK for making fallback associations
> >> > > between
> >> > > +  streams.
> >> > > +
> >> > >  2015-xx-xx - xxxxxxx - lavc 57.6.0 - avcodec.h
> >> > >
> >> > >  2015-xx-xx - lavc 57.7.0 - avcodec.h
> >> > > diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
> >> > > index e368d6b..ba4b088 100644
> >> > > --- a/libavcodec/avcodec.h
> >> > > +++ b/libavcodec/avcodec.h
> >> > > @@ -1129,6 +1129,14 @@ enum AVPacketSideDataType {
> >> > >       * and FF_LAMBDA_MAX (bad).
> >> > >       */
> >> > >      AV_PKT_DATA_QUALITY_FACTOR,
> >> > > +
> >> > > +    /**
> >> > > +     * This side data contains an integer value representing the
> >> > > stream index
> >> > > +     * of a "fallback" track.  A fallback track indicates an
> >> > > alternate
> >> > > +     * track to use when the current track can not be decoded for
> >> > > some reason.
> >> > > +     * e.g. no decoder available for codec.
> >> > > +     */
> >> > > +    AV_PKT_DATA_FALLBACK_TRACK,
> >> >
> >> > "integer value" is far too imprecise. Does it mean you have to read
> >> > data with *(int*)ptr?
> >> >
> >>
> >> Yes, I was just following the lead of the other integer side data types
> >> above.  They are commented the same way.  Do you have a suggestion for
> >> something better?
> >
> > Didn't look at the others, but maybe it'd be a good idea to document
> > this for new side data.
> >
> > I think a single line like "The data is accessed as int*" would
> > suffice. That's relatively clear and tells the API user that it's not
> > accessed with e.g. AV_RL32 or whatever else would be possible.
> 
> Maybe a clearly defined fixed size read would be favorable over a type
> which might change size one day?

This side data only makes sense as a libav internal thing, not to be
written into files, so the fact that the size is not fixed should not
matter.
John Stebbins Nov. 13, 2015, 3:33 p.m. | #8
On Sat, 2015-11-07 at 17:19 +0100, Anton Khirnov wrote:
> Quoting Hendrik Leppkes (2015-11-07 09:28:37)
> > On Sat, Nov 7, 2015 at 2:11 AM, wm4 <nfxjfg@googlemail.com> wrote:
> > > On Fri, 6 Nov 2015 11:24:08 -0800
> > > John Stebbins <stebbins@jetheaddev.com> wrote:
> > > 
> > > > On Fri, 2015-11-06 at 17:17 +0100, wm4 wrote:
> > > > > On Fri, 6 Nov 2015 07:29:18 -0800
> > > > > John Stebbins <stebbins@jetheaddev.com> wrote:
> > > > > 
> > > > > > This side data type is meant to be added to AVStream side
> > > > > > data.
> > > > > > A fallback track indicates an alternate track to use when
> > > > > > the
> > > > > > current track can not be decoded for some reason.  e.g. no
> > > > > > decoder available for codec.
> > > > > > ---
> > > > > >  doc/APIchanges       | 4 ++++
> > > > > >  libavcodec/avcodec.h | 8 ++++++++
> > > > > >  libavcodec/version.h | 2 +-
> > > > > >  3 files changed, 13 insertions(+), 1 deletion(-)
> > > > > > 
> > > > > > Add APIchanges
> > > > > > 
> > > > > > diff --git a/doc/APIchanges b/doc/APIchanges
> > > > > > index d301bd5..60afb48 100644
> > > > > > --- a/doc/APIchanges
> > > > > > +++ b/doc/APIchanges
> > > > > > @@ -12,6 +12,10 @@ libavutil:     2015-08-28
> > > > > > 
> > > > > > 
> > > > > >  API changes, most recent first:
> > > > > > +2015-11-xx - xxxxxxx - lavc 57.9.0 - avcodec.h
> > > > > > +  Add AV_PKT_DATA_FALLBACK_TRACK for making fallback
> > > > > > associations
> > > > > > between
> > > > > > +  streams.
> > > > > > +
> > > > > >  2015-xx-xx - xxxxxxx - lavc 57.6.0 - avcodec.h
> > > > > > 
> > > > > >  2015-xx-xx - lavc 57.7.0 - avcodec.h
> > > > > > diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
> > > > > > index e368d6b..ba4b088 100644
> > > > > > --- a/libavcodec/avcodec.h
> > > > > > +++ b/libavcodec/avcodec.h
> > > > > > @@ -1129,6 +1129,14 @@ enum AVPacketSideDataType {
> > > > > >       * and FF_LAMBDA_MAX (bad).
> > > > > >       */
> > > > > >      AV_PKT_DATA_QUALITY_FACTOR,
> > > > > > +
> > > > > > +    /**
> > > > > > +     * This side data contains an integer value
> > > > > > representing the
> > > > > > stream index
> > > > > > +     * of a "fallback" track.  A fallback track indicates
> > > > > > an
> > > > > > alternate
> > > > > > +     * track to use when the current track can not be
> > > > > > decoded for
> > > > > > some reason.
> > > > > > +     * e.g. no decoder available for codec.
> > > > > > +     */
> > > > > > +    AV_PKT_DATA_FALLBACK_TRACK,
> > > > > 
> > > > > "integer value" is far too imprecise. Does it mean you have to
> > > > > read
> > > > > data with *(int*)ptr?
> > > > > 
> > > > 
> > > > Yes, I was just following the lead of the other integer side
> > > > data types
> > > > above.  They are commented the same way.  Do you have a
> > > > suggestion for
> > > > something better?
> > > 
> > > Didn't look at the others, but maybe it'd be a good idea to
> > > document
> > > this for new side data.
> > > 
> > > I think a single line like "The data is accessed as int*" would
> > > suffice. That's relatively clear and tells the API user that it's
> > > not
> > > accessed with e.g. AV_RL32 or whatever else would be possible.
> > 
> > Maybe a clearly defined fixed size read would be favorable over a
> > type
> > which might change size one day?
> 
> This side data only makes sense as a libav internal thing, not to be
> written into files, so the fact that the size is not fixed should not
> matter.
> 

Ping.  Unless I missed something, there were no unresolved objections to
the current patch set.
Luca Barbato Nov. 13, 2015, 4:33 p.m. | #9
On 13/11/15 16:33, John Stebbins wrote:
> Ping.  Unless I missed something, there were no unresolved objections to
> the current patch set.

I'll push it tomorrow if nobody else has more comments.

Ok by me and Anton.

Patch

diff --git a/doc/APIchanges b/doc/APIchanges
index d301bd5..60afb48 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -12,6 +12,10 @@  libavutil:     2015-08-28
 
 
 API changes, most recent first:
+2015-11-xx - xxxxxxx - lavc 57.9.0 - avcodec.h
+  Add AV_PKT_DATA_FALLBACK_TRACK for making fallback associations between
+  streams.
+
 2015-xx-xx - xxxxxxx - lavc 57.6.0 - avcodec.h
 
 2015-xx-xx - lavc 57.7.0 - avcodec.h
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index e368d6b..ba4b088 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -1129,6 +1129,14 @@  enum AVPacketSideDataType {
      * and FF_LAMBDA_MAX (bad).
      */
     AV_PKT_DATA_QUALITY_FACTOR,
+
+    /**
+     * This side data contains an integer value representing the stream index
+     * of a "fallback" track.  A fallback track indicates an alternate
+     * track to use when the current track can not be decoded for some reason.
+     * e.g. no decoder available for codec.
+     */
+    AV_PKT_DATA_FALLBACK_TRACK,
 };
 
 typedef struct AVPacketSideData {
diff --git a/libavcodec/version.h b/libavcodec/version.h
index bd75525..5776670 100644
--- a/libavcodec/version.h
+++ b/libavcodec/version.h
@@ -29,7 +29,7 @@ 
 #include "libavutil/version.h"
 
 #define LIBAVCODEC_VERSION_MAJOR 57
-#define LIBAVCODEC_VERSION_MINOR  8
+#define LIBAVCODEC_VERSION_MINOR  9
 #define LIBAVCODEC_VERSION_MICRO  0
 
 #define LIBAVCODEC_VERSION_INT  AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \