+/* Sample dependency atom */
+static int mov_write_sdtp_tag(AVIOContext *pb, MOVTrack *track)
+{
+ int i;
+ uint8_t leading, dependent, reference, redundancy;
+ int64_t pos = avio_tell(pb);
+ avio_wb32(pb, 0); // size
+ ffio_wfourcc(pb, "sdtp");
+ avio_wb32(pb, 0); // version & flags
+ for (i = 0; i < track->entry; i++) {
+ dependent = MOV_SAMPLE_DEPENDENCY_YES;
+ leading = reference = redundancy = MOV_SAMPLE_DEPENDENCY_UNKNOWN;
+ if (track->cluster[i].flags & MOV_DISPOSABLE_SAMPLE) {
+ reference = MOV_SAMPLE_DEPENDENCY_NO;
+ }
+ if (track->cluster[i].flags & MOV_SYNC_SAMPLE) {
+ dependent = MOV_SAMPLE_DEPENDENCY_NO;
+ }
+ avio_w8(pb, (leading << 6) | (dependent << 4) |
+ (reference << 2) | redundancy);
+ }
+ return update_size(pb, pos);
+}
+