mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
add AV_DISPOSITION_FORCED flag and use it in matroska demuxer
Originally committed as revision 24003 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
c01694c889
commit
7a617a8634
@ -396,6 +396,10 @@ typedef struct AVIndexEntry {
|
|||||||
#define AV_DISPOSITION_COMMENT 0x0008
|
#define AV_DISPOSITION_COMMENT 0x0008
|
||||||
#define AV_DISPOSITION_LYRICS 0x0010
|
#define AV_DISPOSITION_LYRICS 0x0010
|
||||||
#define AV_DISPOSITION_KARAOKE 0x0020
|
#define AV_DISPOSITION_KARAOKE 0x0020
|
||||||
|
/** Track should be used during playback by default.
|
||||||
|
Useful for subtitle track that should be displayed
|
||||||
|
even when user did not explicitly ask for subtitles. */
|
||||||
|
#define AV_DISPOSITION_FORCED 0x0040
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stream structure.
|
* Stream structure.
|
||||||
|
@ -139,6 +139,7 @@ typedef struct {
|
|||||||
double time_scale;
|
double time_scale;
|
||||||
uint64_t default_duration;
|
uint64_t default_duration;
|
||||||
uint64_t flag_default;
|
uint64_t flag_default;
|
||||||
|
uint64_t flag_forced;
|
||||||
MatroskaTrackVideo video;
|
MatroskaTrackVideo video;
|
||||||
MatroskaTrackAudio audio;
|
MatroskaTrackAudio audio;
|
||||||
EbmlList encodings;
|
EbmlList encodings;
|
||||||
@ -336,11 +337,11 @@ static EbmlSyntax matroska_track[] = {
|
|||||||
{ MATROSKA_ID_TRACKDEFAULTDURATION, EBML_UINT, 0, offsetof(MatroskaTrack,default_duration) },
|
{ MATROSKA_ID_TRACKDEFAULTDURATION, EBML_UINT, 0, offsetof(MatroskaTrack,default_duration) },
|
||||||
{ MATROSKA_ID_TRACKTIMECODESCALE, EBML_FLOAT,0, offsetof(MatroskaTrack,time_scale), {.f=1.0} },
|
{ MATROSKA_ID_TRACKTIMECODESCALE, EBML_FLOAT,0, offsetof(MatroskaTrack,time_scale), {.f=1.0} },
|
||||||
{ MATROSKA_ID_TRACKFLAGDEFAULT, EBML_UINT, 0, offsetof(MatroskaTrack,flag_default), {.u=1} },
|
{ MATROSKA_ID_TRACKFLAGDEFAULT, EBML_UINT, 0, offsetof(MatroskaTrack,flag_default), {.u=1} },
|
||||||
|
{ MATROSKA_ID_TRACKFLAGFORCED, EBML_UINT, 0, offsetof(MatroskaTrack,flag_forced), {.u=0} },
|
||||||
{ MATROSKA_ID_TRACKVIDEO, EBML_NEST, 0, offsetof(MatroskaTrack,video), {.n=matroska_track_video} },
|
{ MATROSKA_ID_TRACKVIDEO, EBML_NEST, 0, offsetof(MatroskaTrack,video), {.n=matroska_track_video} },
|
||||||
{ MATROSKA_ID_TRACKAUDIO, EBML_NEST, 0, offsetof(MatroskaTrack,audio), {.n=matroska_track_audio} },
|
{ MATROSKA_ID_TRACKAUDIO, EBML_NEST, 0, offsetof(MatroskaTrack,audio), {.n=matroska_track_audio} },
|
||||||
{ MATROSKA_ID_TRACKCONTENTENCODINGS,EBML_NEST, 0, 0, {.n=matroska_track_encodings} },
|
{ MATROSKA_ID_TRACKCONTENTENCODINGS,EBML_NEST, 0, 0, {.n=matroska_track_encodings} },
|
||||||
{ MATROSKA_ID_TRACKFLAGENABLED, EBML_NONE },
|
{ MATROSKA_ID_TRACKFLAGENABLED, EBML_NONE },
|
||||||
{ MATROSKA_ID_TRACKFLAGFORCED, EBML_NONE },
|
|
||||||
{ MATROSKA_ID_TRACKFLAGLACING, EBML_NONE },
|
{ MATROSKA_ID_TRACKFLAGLACING, EBML_NONE },
|
||||||
{ MATROSKA_ID_CODECNAME, EBML_NONE },
|
{ MATROSKA_ID_CODECNAME, EBML_NONE },
|
||||||
{ MATROSKA_ID_CODECDECODEALL, EBML_NONE },
|
{ MATROSKA_ID_CODECDECODEALL, EBML_NONE },
|
||||||
@ -1391,6 +1392,8 @@ static int matroska_read_header(AVFormatContext *s, AVFormatParameters *ap)
|
|||||||
|
|
||||||
if (track->flag_default)
|
if (track->flag_default)
|
||||||
st->disposition |= AV_DISPOSITION_DEFAULT;
|
st->disposition |= AV_DISPOSITION_DEFAULT;
|
||||||
|
if (track->flag_forced)
|
||||||
|
st->disposition |= AV_DISPOSITION_FORCED;
|
||||||
|
|
||||||
if (track->default_duration)
|
if (track->default_duration)
|
||||||
av_reduce(&st->codec->time_base.num, &st->codec->time_base.den,
|
av_reduce(&st->codec->time_base.num, &st->codec->time_base.den,
|
||||||
|
Loading…
Reference in New Issue
Block a user