mirror of https://git.ffmpeg.org/ffmpeg.git
movenc: add fallback audio track tref support
This feature allows making associations between audio tracks that apple players recognize. E.g. when an ac3 track has a tref that points to an aac track, devices that don't support ac3 will automatically fall back to the aac track. Apple used to *guess* these associations, but new products (AppleTV 4) no longer guess and this association can only be made explicitly now using the "fall" tref. Signed-off-by: Anton Khirnov <anton@khirnov.net>
This commit is contained in:
parent
79ae1e630b
commit
ca489564ae
|
@ -2285,10 +2285,21 @@ static int mov_write_moov_tag(AVIOContext *pb, MOVMuxContext *mov,
|
|||
mov->tracks[i].tref_id = mov->tracks[mov->chapter_track].track_id;
|
||||
}
|
||||
for (i = 0; i < mov->nb_streams; i++) {
|
||||
if (mov->tracks[i].tag == MKTAG('r','t','p',' ')) {
|
||||
mov->tracks[i].tref_tag = MKTAG('h','i','n','t');
|
||||
mov->tracks[i].tref_id =
|
||||
mov->tracks[mov->tracks[i].src_track].track_id;
|
||||
MOVTrack *track = &mov->tracks[i];
|
||||
if (track->tag == MKTAG('r','t','p',' ')) {
|
||||
track->tref_tag = MKTAG('h','i','n','t');
|
||||
track->tref_id = mov->tracks[track->src_track].track_id;
|
||||
} else if (track->enc->codec_type == AVMEDIA_TYPE_AUDIO) {
|
||||
int * fallback, size;
|
||||
fallback = (int*)av_stream_get_side_data(track->st,
|
||||
AV_PKT_DATA_FALLBACK_TRACK,
|
||||
&size);
|
||||
if (fallback != NULL && size == sizeof(int)) {
|
||||
if (*fallback >= 0 && *fallback < mov->nb_streams) {
|
||||
track->tref_tag = MKTAG('f','a','l','l');
|
||||
track->tref_id = mov->tracks[*fallback].track_id;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue