[NUT-devel] [NUT] (ods15): r118 - in /trunk: libnut/demuxer.c libnut/muxer.c libnut/priv.h nututils/nutmerge.c

syncmail at mplayerhq.hu syncmail at mplayerhq.hu
Fri Mar 31 22:36:52 CEST 2006


Author: ods15
Date: Fri Mar 31 22:36:52 2006
New Revision: 118

Log:
sync to spec for flags cleanup

Modified:
    trunk/libnut/demuxer.c
    trunk/libnut/muxer.c
    trunk/libnut/priv.h
    trunk/nututils/nutmerge.c

Modified: trunk/libnut/demuxer.c
==============================================================================
--- trunk/libnut/demuxer.c (original)
+++ trunk/libnut/demuxer.c Fri Mar 31 22:36:52 2006
@@ -268,7 +268,7 @@
 				continue;
 			}
 			nut->ft[i].flags = flag;
-			nut->ft[i].stream_plus1 = stream;
+			nut->ft[i].stream = stream;
 			nut->ft[i].mul = mul;
 			nut->ft[i].lsb = size + j;
 			nut->ft[i].pts_delta = timestamp;
@@ -519,12 +519,19 @@
 	flags = nut->ft[tmp].flags;
 	ERROR(flags & FLAG_INVALID, -ERR_NOT_FRAME_NOT_N);
 
-	if (!nut->ft[tmp].stream_plus1) GET_V(nut->i, pd->stream);
-	else pd->stream = nut->ft[tmp].stream_plus1 - 1;
+	if (flags & FLAG_CODED) {
+		int coded_flags;
+		GET_V(nut->i, coded_flags);
+		flags ^= coded_flags;
+	}
+	pd->flags = flags & NUT_API_FLAGS;
+
+	if (flags & FLAG_STREAM_ID) GET_V(nut->i, pd->stream);
+	else pd->stream = nut->ft[tmp].stream;
 
 	ERROR(pd->stream >= nut->stream_count, -ERR_NOT_FRAME_NOT_N);
 
-	if (!nut->ft[tmp].pts_delta) {
+	if (flags & FLAG_CODED_PTS) {
 		uint64_t coded_pts;
 		GET_V(nut->i, coded_pts);
 		if (coded_pts >= (1 << nut->sc[pd->stream].msb_pts_shift))
@@ -539,20 +546,15 @@
 		pd->pts = nut->sc[pd->stream].last_pts + nut->ft[tmp].pts_delta;
 	}
 
-	if (flags & FLAG_CODED) {
-		int coded_flags;
-		GET_V(nut->i, coded_flags);
-		flags ^= coded_flags;
-	}
-	pd->flags = flags & NUT_API_FLAGS;
-
 	if (flags & FLAG_SIZE_MSB) {
 		int size_msb;
 		GET_V(nut->i, size_msb);
 		pd->len = size_msb * nut->ft[tmp].mul + nut->ft[tmp].lsb;
 	} else pd->len = nut->ft[tmp].lsb;
 
-	for (i = 0; i < nut->ft[tmp].reserved; i++) { int scrap; GET_V(nut->i, scrap); }
+	i = nut->ft[tmp].reserved;
+	if (flags & FLAG_RESERVED) GET_V(nut->i, i);
+	while (i--) { int scrap; GET_V(nut->i, scrap); }
 
 	if (flags & FLAG_CHECKSUM) {
 		CHECK(skip_buffer(nut->i, 4)); // header_checksum

Modified: trunk/libnut/muxer.c
==============================================================================
--- trunk/libnut/muxer.c (original)
+++ trunk/libnut/muxer.c Fri Mar 31 22:36:52 2006
@@ -152,15 +152,15 @@
 		timestamp = nut->ft[i].pts_delta;
 		if (nut->ft[i].mul != mul) fields = 2;
 		mul = nut->ft[i].mul;
-		if (nut->ft[i].stream_plus1 != stream) fields = 3;
-		stream = nut->ft[i].stream_plus1;
+		if (nut->ft[i].stream != stream) fields = 3;
+		stream = nut->ft[i].stream;
 		if (nut->ft[i].lsb != 0) fields = 4;
 		size = nut->ft[i].lsb;
 
 		for (count = 0; i < 256; count++, i++) {
 			if (i == 'N') { count--; continue; }
 			if (nut->ft[i].flags != flag) break;
-			if (nut->ft[i].stream_plus1 != stream) break;
+			if (nut->ft[i].stream != stream) break;
 			if (nut->ft[i].mul != mul) break;
 			if (nut->ft[i].lsb != size + count) break;
 			if (nut->ft[i].pts_delta != timestamp) break;
@@ -404,22 +404,24 @@
 		int len = 1; // frame code
 		int flags = nut->ft[i].flags;
 		if (flags & FLAG_INVALID) continue;
-		if (nut->ft[i].stream_plus1 && nut->ft[i].stream_plus1 - 1 != fd->stream) continue;
-		if (nut->ft[i].pts_delta && nut->ft[i].pts_delta != pts_delta) continue;
 		if (flags & FLAG_CODED) {
 			flags = fd->flags & NUT_API_FLAGS;
+			if (nut->ft[i].stream != fd->stream) flags |= FLAG_STREAM_ID;
+			if (nut->ft[i].pts_delta != pts_delta) flags |= FLAG_CODED_PTS;
 			if (nut->ft[i].lsb != fd->len) flags |= FLAG_SIZE_MSB;
 			if (checksum) flags |= FLAG_CHECKSUM;
 			flags |= FLAG_CODED;
 		}
+		if ((flags ^ fd->flags) & NUT_API_FLAGS) continue;
+		if (!(flags & FLAG_STREAM_ID) && nut->ft[i].stream != fd->stream) continue;
+		if (!(flags & FLAG_CODED_PTS) && nut->ft[i].pts_delta != pts_delta) continue;
 		if (flags & FLAG_SIZE_MSB) { if ((fd->len - nut->ft[i].lsb) % nut->ft[i].mul) continue; }
 		else { if (nut->ft[i].lsb != fd->len) continue; }
-		if ((flags ^ fd->flags) & NUT_API_FLAGS) continue;
-		if (checksum && !(flags & FLAG_CHECKSUM)) continue;
-
-		len += nut->ft[i].stream_plus1  ? 0 : v_len(fd->stream);
-		len += nut->ft[i].pts_delta     ? 0 : v_len(coded_pts);
+		if (!(flags & FLAG_CHECKSUM) && checksum) continue;
+
 		len += !(flags & FLAG_CODED)    ? 0 : v_len(flags ^ nut->ft[i].flags);
+		len += !(flags & FLAG_STREAM_ID)? 0 : v_len(fd->stream);
+		len += !(flags & FLAG_CODED_PTS)? 0 : v_len(coded_pts);
 		len += !(flags & FLAG_SIZE_MSB) ? 0 : v_len((fd->len - nut->ft[i].lsb) / nut->ft[i].mul);
 		len += !(flags & FLAG_CHECKSUM) ? 0 : 4;
 		if (!size || len < size) { ftnum = i; coded_flags = flags; size = len; }
@@ -427,9 +429,9 @@
 	assert(ftnum != -1);
 	if (tmp) {
 		put_bytes(tmp, 1, ftnum); // frame_code
-		if (!nut->ft[ftnum].stream_plus1) put_v(tmp, fd->stream);
-		if (!nut->ft[ftnum].pts_delta)    put_v(tmp, coded_pts);
 		if (coded_flags & FLAG_CODED)     put_v(tmp, coded_flags ^ nut->ft[ftnum].flags);
+		if (coded_flags & FLAG_STREAM_ID) put_v(tmp, fd->stream);
+		if (coded_flags & FLAG_CODED_PTS) put_v(tmp, coded_pts);
 		if (coded_flags & FLAG_SIZE_MSB)  put_v(tmp, (fd->len - nut->ft[ftnum].lsb) / nut->ft[ftnum].mul);
 		if (coded_flags & FLAG_CHECKSUM)  put_bytes(tmp, 4, crc32(tmp->buf, bctello(tmp)));
 	}
@@ -517,7 +519,7 @@
 				continue;
 			}
 			nut->ft[i].flags = flag;
-			nut->ft[i].stream_plus1 = stream;
+			nut->ft[i].stream = stream;
 			nut->ft[i].mul = mul;
 			nut->ft[i].lsb = size + j;
 			nut->ft[i].pts_delta = timestamp;

Modified: trunk/libnut/priv.h
==============================================================================
--- trunk/libnut/priv.h (original)
+++ trunk/libnut/priv.h Fri Mar 31 22:36:52 2006
@@ -19,8 +19,11 @@
 
 #define NUT_API_FLAGS    3
 
+#define FLAG_CODED_PTS   8
+#define FLAG_STREAM_ID  16
 #define FLAG_SIZE_MSB   32
 #define FLAG_CHECKSUM   64
+#define FLAG_RESERVED  128
 #define FLAG_CODED    4096
 #define FLAG_INVALID  8192
 
@@ -73,7 +76,7 @@
 	uint16_t lsb;
 	int16_t pts_delta;
 	uint8_t reserved;
-	uint8_t stream_plus1;
+	uint8_t stream;
 } frame_table_t;
 
 typedef struct {

Modified: trunk/nututils/nutmerge.c
==============================================================================
--- trunk/nututils/nutmerge.c (original)
+++ trunk/nututils/nutmerge.c Fri Mar 31 22:36:52 2006
@@ -31,25 +31,25 @@
 	//{ 4128,      3,   0,   1,      0,    0,     0 },
 	//{ flag, fields, pts, mul, stream, size, count }
 	  { 8192,      0,   0,   1,      0,    0,     0 }, // invalid 0x00
-	  {   32,      0,   0,   1,      0,    0,     0 }, // safety net non key frame
-	  {   33,      0,   0,   1,      0,    0,     0 }, // safety net key frame
+	  {   56,      0,   0,   1,      0,    0,     0 }, // safety net non key frame
+	  {   56,      0,   0,   1,      0,    0,     0 }, // safety net key frame
 	  { 4128,      0,   0,   1,      0,    0,     0 }, // one more safety net
-	  {    3,      0,   0,   1,      0,    0,     0 }, // EOR frame
-	  {    1,      4,   1, 337,      2,  336,     0 }, // used 82427 times
-	  {    1,      4,   1, 385,      2,  384,     0 }, // used 56044 times
-	  {    0,      4,   2,   7,      1,    6,     0 }, // used 20993 times
-	  {    0,      4,   1,   7,      1,    6,     0 }, // used 10398 times
-	  {    1,      4,   1, 481,      2,  480,     0 }, // used 3527 times
-	  {    1,      4,   1, 289,      2,  288,     0 }, // used 2042 times
-	  {    1,      4,   1, 577,      2,  576,     0 }, // used 1480 times
-	  {    1,      4,   1, 673,      2,  672,     0 }, // used 862 times
-	  {    1,      4,   1, 769,      2,  768,     0 }, // used 433 times
-	  {    1,      4,   1, 961,      2,  960,     0 }, // used 191 times
-	  {   32,      3,   2, 101,      1,    0,     0 }, // "1.2.0" => 14187
-	  {   32,      3,  -1,  40,      1,    0,     0 }, // "1.-1.0" => 5707
-	  {   32,      3,   1,  81,      1,    0,     0 }, // "1.1.0" => 11159
-	  {   33,      3,   1,  11,      1,    0,     0 }, // "1.1.1" => 1409
-	  {   97,      3,   0,   6,      1,    0,     0 }, // checksum for video
+	  {   27,      0,   0,   1,      0,    0,     0 }, // EOR frame
+	  {    1,      4,   1, 337,      1,  336,     0 }, // used 82427 times
+	  {    1,      4,   1, 385,      1,  384,     0 }, // used 56044 times
+	  {    0,      4,   2,   7,      0,    6,     0 }, // used 20993 times
+	  {    0,      4,   1,   7,      0,    6,     0 }, // used 10398 times
+	  {    1,      4,   1, 481,      1,  480,     0 }, // used 3527 times
+	  {    1,      4,   1, 289,      1,  288,     0 }, // used 2042 times
+	  {    1,      4,   1, 577,      1,  576,     0 }, // used 1480 times
+	  {    1,      4,   1, 673,      1,  672,     0 }, // used 862 times
+	  {    1,      4,   1, 769,      1,  768,     0 }, // used 433 times
+	  {    1,      4,   1, 961,      1,  960,     0 }, // used 191 times
+	  {   32,      3,   2, 101,      0,    0,     0 }, // "1.2.0" => 14187
+	  {   32,      3,  -1,  40,      0,    0,     0 }, // "1.-1.0" => 5707
+	  {   32,      3,   1,  81,      0,    0,     0 }, // "1.1.0" => 11159
+	  {   33,      3,   1,  11,      0,    0,     0 }, // "1.1.1" => 1409
+	  {  105,      3,   0,   6,      0,    0,     0 }, // checksum for video
 	  { 8192,      2,   0,   1,      0,    0,     0 }, // invalid 0xFF
 	  {   -1,      0,   0,   0,      0,    0,     0 }, // end
 };




More information about the NUT-devel mailing list