|
|
|
@ -3201,10 +3201,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; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
for (i = 0; i < mov->nb_streams; i++) { |
|
|
|
|