[matroska] r783 - in trunk/RbMatroska: . ebml matroska

[email protected]
Newsgroups gmane.comp.multimedia.matroska.cvs
Message-ID <[email protected]>
Author: mosu
Date: 2004-09-12 13:09:20 +0400 (Sun, 12 Sep 2004)
New Revision: 783

Modified:
   trunk/RbMatroska/ebml.rb
   trunk/RbMatroska/ebml/file.rb
   trunk/RbMatroska/ebml/master.rb
   trunk/RbMatroska/matroska/utils.rb
Log:
The EbmlIds for Void and CRC32 had the wrong size. Got rid of the instance variable "id" for each element. Use the class method "global_id" instead.

Modified: trunk/RbMatroska/ebml/file.rb
===================================================================
--- trunk/RbMatroska/ebml/file.rb	2004-09-11 18:13:43 UTC (rev 782)
+++ trunk/RbMatroska/ebml/file.rb	2004-09-12 09:09:20 UTC (rev 783)
@@ -93,7 +93,7 @@
       return nil if (id.class == NilClass)
       size = read_size
       return nil if (size.class == NilClass)
-      return find_class_for_id(id).new(id, pos, size[0], size[1])
+      return find_class_for_id(id).new(pos, size[0], size[1])
     end
 
     def map_ids(namespace = nil)

Modified: trunk/RbMatroska/ebml/master.rb
===================================================================
--- trunk/RbMatroska/ebml/master.rb	2004-09-11 18:13:43 UTC (rev 782)
+++ trunk/RbMatroska/ebml/master.rb	2004-09-12 09:09:20 UTC (rev 783)
@@ -18,8 +18,8 @@
   class Master < Element
     attr_reader :children
 
-    def initialize(id, pos, data_size, size_length)
-      super(id, pos, data_size, size_length)
+    def initialize(pos, data_size, size_length)
+      super(pos, data_size, size_length)
       @children = Array.new
     end
 
@@ -44,7 +44,7 @@
 
     def each(filter = Id.none)
       @children.each do |c|
-        yield(c) if ((filter == Id.none) or (filter == c.id))
+        yield(c) if ((filter == Id.none) or (filter == c.class.global_id))
       end
     end
 
@@ -55,7 +55,7 @@
       else
         id = filter
       end
-      @children.each { |c| return c if (c.id == id) }
+      @children.each { |c| return c if (c.class.global_id == id) }
       return nil
     end
 

Modified: trunk/RbMatroska/ebml.rb
===================================================================
--- trunk/RbMatroska/ebml.rb	2004-09-11 18:13:43 UTC (rev 782)
+++ trunk/RbMatroska/ebml.rb	2004-09-12 09:09:20 UTC (rev 783)
@@ -70,18 +70,14 @@
   end                           # class Id
 
   class Element
-    attr_reader :id
     attr_reader :pos
     attr_reader :data_size
-    attr_reader :element_size
     attr_reader :size_length
 
-    def initialize(id, pos, data_size, size_length)
-      @id = id
+    def initialize(pos, data_size, size_length)
       @pos = pos
       @data_size = data_size
       @size_length = size_length
-      @element_size = @id.size + @size_length + @data_size
     end
 
     def Element.global_id
@@ -89,11 +85,20 @@
     end
 
     def head_size
-      return @id.size + @size_length
+      return self.class.global_id.size + @size_length
     end
 
+    def element_size
+      return self.class.global_id.size + @data_size +
+        (@size_length == -1 ? Ebml.coded_size(@data_size) : @size_length)
+    end
+
+    def force_size_length(size_length)
+      @size_length = size_length
+    end
+
     def skip(ef)
-      ef.io.seek(@pos + @element_size, IO::SEEK_SET)
+      ef.io.seek(@pos + element_size, IO::SEEK_SET)
     end
 
     def read(ef)
@@ -103,8 +108,8 @@
     end
 
     def to_s
-      return sprintf("[%s @ 0x%08x size 0x%08x]", id.to_s, @pos,
-                      @element_size)
+      return sprintf("[%s @ 0x%08x size 0x%08x]", self.class.global_id.to_s,
+                      @pos, element_size)
     end
   end
 
@@ -177,14 +182,14 @@
 
   class CRC32 < Binary
     def CRC32.global_id
-      @@id ||= Id.new(0xbf, 2)
+      @@id ||= Id.new(0xbf, 1)
       return @@id
     end                         # class CRC32
   end
 
   class Void < Binary
     def Void.global_id
-      @@id ||= Id.new(0xec, 2)
+      @@id ||= Id.new(0xec, 1)
       return @@id
     end
   end                           # class Void

Modified: trunk/RbMatroska/matroska/utils.rb
===================================================================
--- trunk/RbMatroska/matroska/utils.rb	2004-09-11 18:13:43 UTC (rev 782)
+++ trunk/RbMatroska/matroska/utils.rb	2004-09-12 09:09:20 UTC (rev 783)
@@ -60,8 +60,9 @@
 
           segelement = f.read_element_head
           while ((segelement != nil) and
-                  (fully or (segelement.id != Matroska::Cluster.global_id)))
-            add_element(segelement.id, segelement.pos)
+                  (fully or (segelement.class.global_id !=
+                              Matroska::Cluster.global_id)))
+            add_element(segelement.class.global_id, segelement.pos)
             segelement.skip(f)
             segelement = f.read_element_head
           end                   # while (segelement...
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.