add SEEKTABLE support

This commit is contained in:
Josh Coalson
2001-04-05 21:31:59 +00:00
parent be9843cf09
commit 5114dbd52f

View File

@@ -34,8 +34,10 @@ static const char *sync_string_ = "fLaC"; /* DUPLICATE:FLAC__STREAM_SYNC_STRING
static const char *metadata_type_string_[] = { /* DUPLICATE:FLAC__MetaDataTypeString */
"STREAMINFO",
"PADDING",
"APPLICATION"
"APPLICATION",
"SEEKTABLE"
};
static const unsigned SEEKPOINT_LEN_ = 18; /* DUPLICATE:FLAC__STREAM_METADATA_SEEKPOINT_LEN */
static int usage(const char *message, ...);
static bool list(FILE *f, bool verbose);
@@ -189,6 +191,10 @@ bool list(FILE *f, bool verbose)
memcpy(buf, metadata.data.application.id, 4);
metadata.data.application.data = buf+4;
break;
case FLAC__METADATA_TYPE_SEEKTABLE:
metadata.data.seek_table.num_points = metadata.length / SEEKPOINT_LEN_;
b = buf+4; /* we leave the points in buf for printing later */
break;
default:
printf("SKIPPING block of unknown type\n\n");
continue;
@@ -226,6 +232,12 @@ bool list(FILE *f, bool verbose)
hexdump(metadata.data.application.data, metadata.length);
}
break;
case FLAC__METADATA_TYPE_SEEKTABLE:
printf("seek points: %u\n", metadata.data.seek_table.num_points);
for(i = 0; i < metadata.data.seek_table.num_points; i++, b += SEEKPOINT_LEN_) {
printf("\tpoint %d: sample_number=%llu, stream_offset=%llu, block_offset=%u\n", i, unpack_uint64(b, 8), unpack_uint64(b+8, 8), unpack_uint32(b+16, 2));
}
break;
default:
assert(0);
}