shithub: mcfs

Download patch

ref: d5b4ab2f6f4446795242254fbb4e0a33966c9bf8
parent: 771e72df354b0a5f6dcbce6c2a59c8d8239a2ec5
author: Sigrid Haflínudóttir <ftrvxmtrx@gmail.com>
date: Mon Mar 16 21:20:32 EDT 2020

stts and fix printed names for stsd

--- a/iso.c
+++ b/iso.c
@@ -73,9 +73,15 @@
 		struct {
 			u32int handlertype;
 			u32int entrycount;
+			/* FIXME entries? */
 		}stsd;
 
 		struct {
+			u32int entrycount;
+			/* FIXME entries */
+		}stts;
+
+		struct {
 			u64int creattime;
 			u64int modtime;
 			u32int trackid;
@@ -137,7 +143,7 @@
 #define isfullbox(b) ( \
 	b->type == BoxMvhd || b->type == BoxTrex || b->type == BoxMdhd || b->type == BoxHdlr || \
 	b->type == BoxMfhd || b->type == BoxTfhd || b->type == BoxTfdt || b->type == BoxTrun || \
-	b->type == BoxStsd || b->type == BoxTkhd \
+	b->type == BoxStsd || b->type == BoxStts || b->type == BoxTkhd \
 )
 
 #define eBread(sz, e) if(Bread(f, d, sz) != sz){ werrstr(e); goto err; }
@@ -255,8 +261,10 @@
 				print("\t\t%.*s.timeoffset\t%zd\n", dind, ind, b->trun.samples[u].timeoffset);
 		}
 	}else if(b->type == BoxStsd){
-		print("\t%.*shandlertype\t%08x\n", dind, ind, b->stsd.handlertype);
-		print("\t%.*sentrycount\t%ud\n", dind, ind, b->stsd.entrycount);
+		print("\t%.*shandler_type\t%08x\n", dind, ind, b->stsd.handlertype);
+		print("\t%.*sentry_count\t%ud\n", dind, ind, b->stsd.entrycount);
+	}else if(b->type == BoxStts){
+		print("\t%.*sentry_count\t%ud\n", dind, ind, b->stts.entrycount);
 	}else if(b->type == BoxTkhd){
 		print("\t%.*screation_time\t%zd\n", dind, ind, b->tkhd.creattime);
 		print("\t%.*smodification_timetime\t%zd\n", dind, ind, b->tkhd.modtime);
@@ -432,6 +440,11 @@
 		b->stsd.handlertype = bu32(d);
 		eBread(4, "entry_count");
 		b->stsd.entrycount = bu32(d);
+		/* FIXME not reading actual entries here */
+		printbox(b);
+	}else if(b->type == BoxStts){
+		eBread(4, "entry_count");
+		b->stts.entrycount = bu32(d);
 		/* FIXME not reading actual entries here */
 		printbox(b);
 	}else if(b->type == BoxTkhd){