further implementation of new CUESHEET metadata block

This commit is contained in:
Josh Coalson
2002-11-15 05:41:48 +00:00
parent 16cf47e351
commit e48693818d
5 changed files with 357 additions and 17 deletions

View File

@@ -659,7 +659,9 @@ FLAC_API FLAC__StreamEncoderState FLAC__stream_encoder_init(FLAC__StreamEncoder
metadata_has_seektable = false;
metadata_has_vorbis_comment = false;
for(i = 0; i < encoder->protected_->num_metadata_blocks; i++) {
if(encoder->protected_->metadata[i]->type == FLAC__METADATA_TYPE_STREAMINFO)
if(encoder->protected_->metadata[i]->type >= FLAC__METADATA_TYPE_UNDEFINED)
return encoder->protected_->state = FLAC__STREAM_ENCODER_INVALID_METADATA;
else if(encoder->protected_->metadata[i]->type == FLAC__METADATA_TYPE_STREAMINFO)
return encoder->protected_->state = FLAC__STREAM_ENCODER_INVALID_METADATA;
else if(encoder->protected_->metadata[i]->type == FLAC__METADATA_TYPE_SEEKTABLE) {
if(metadata_has_seektable) /* only one is allowed */
@@ -673,6 +675,10 @@ FLAC_API FLAC__StreamEncoderState FLAC__stream_encoder_init(FLAC__StreamEncoder
return encoder->protected_->state = FLAC__STREAM_ENCODER_INVALID_METADATA;
metadata_has_vorbis_comment = true;
}
else if(encoder->protected_->metadata[i]->type == FLAC__METADATA_TYPE_CUESHEET) {
if(!FLAC__format_cuesheet_is_legal(&encoder->protected_->metadata[i]->data.cue_sheet, /*check_cd_da_subset=*/false, /*violation=*/0))
return encoder->protected_->state = FLAC__STREAM_ENCODER_INVALID_METADATA;
}
}
encoder->private_->input_capacity = 0;