bring in what was FLAC__seek_table_is_valid()
authorJosh Coalson <jcoalson@users.sourceforce.net>
Wed, 5 Jun 2002 05:56:41 +0000 (05:56 +0000)
committerJosh Coalson <jcoalson@users.sourceforce.net>
Wed, 5 Jun 2002 05:56:41 +0000 (05:56 +0000)
include/FLAC++/metadata.h
include/FLAC/metadata.h
src/libFLAC++/metadata.cc
src/libFLAC/metadata_object.c

index 32c6ebb..7e0cbbd 100644 (file)
@@ -151,6 +151,8 @@ namespace FLAC {
                        void set_point(unsigned index, const ::FLAC__StreamMetaData_SeekPoint &point);
                        bool insert_point(unsigned index, const ::FLAC__StreamMetaData_SeekPoint &point);
                        bool delete_point(unsigned index);
+
+                       bool is_legal() const;
                };
 
                class VorbisComment : public Prototype {
index 9c1e029..021a4c9 100644 (file)
@@ -551,6 +551,7 @@ FLAC__bool FLAC__metadata_object_vorbiscomment_resize_comments(FLAC__StreamMetaD
 FLAC__bool FLAC__metadata_object_vorbiscomment_set_comment(FLAC__StreamMetaData *object, unsigned comment_num, FLAC__StreamMetaData_VorbisComment_Entry entry, FLAC__bool copy);
 FLAC__bool FLAC__metadata_object_vorbiscomment_insert_comment(FLAC__StreamMetaData *object, unsigned comment_num, FLAC__StreamMetaData_VorbisComment_Entry entry, FLAC__bool copy);
 FLAC__bool FLAC__metadata_object_vorbiscomment_delete_comment(FLAC__StreamMetaData *object, unsigned comment_num);
+FLAC__bool FLAC__metadata_object_seektable_is_legal(const FLAC__StreamMetaData *object);
 
 #ifdef __cplusplus
 }
index b36eb6a..8dc3f09 100644 (file)
@@ -374,6 +374,12 @@ namespace FLAC {
                        return (bool)::FLAC__metadata_object_seektable_delete_point(object_, index);
                }
 
+               bool SeekTable::is_legal() const
+               {
+                       FLAC__ASSERT(is_valid());
+                       return (bool)::FLAC__metadata_object_seektable_is_legal(object_);
+               }
+
 
                //
                // VorbisComment::Entry
index 50410fd..aa379fa 100644 (file)
@@ -456,6 +456,33 @@ FLAC__bool FLAC__metadata_object_seektable_delete_point(FLAC__StreamMetaData *ob
        return FLAC__metadata_object_seektable_resize_points(object, object->data.seek_table.num_points-1);
 }
 
+FLAC__bool FLAC__metadata_object_seektable_is_legal(const FLAC__StreamMetaData *object)
+{
+       unsigned i;
+       FLAC__uint64 last_sample_number = 0;
+       FLAC__bool got_last = false;
+
+       FLAC__ASSERT(0 != object);
+       FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_SEEKTABLE);
+
+       {
+               const FLAC__StreamMetaData_SeekTable *seek_table = &object->data.seek_table;
+
+               for(i = 0; i < seek_table->num_points; i++) {
+                       if(seek_table->points[i].sample_number != FLAC__STREAM_METADATA_SEEKPOINT_PLACEHOLDER) {
+                               if(got_last) {
+                                       if(seek_table->points[i].sample_number <= last_sample_number)
+                                               return false;
+                               }
+                               last_sample_number = seek_table->points[i].sample_number;
+                               got_last = true;
+                       }
+               }
+       }
+
+       return true;
+}
+
 FLAC__bool FLAC__metadata_object_vorbiscomment_set_vendor_string(FLAC__StreamMetaData *object, FLAC__StreamMetaData_VorbisComment_Entry entry, FLAC__bool copy)
 {
        return vorbiscomment_set_entry_(object, &object->data.vorbis_comment.vendor_string, &entry, copy);