Ejemplo n.º 1
0
    def test_ulonglong(self):
        self.failUnlessEqual(cdata.ulonglong_le(self.ZERO(8)), 0)
        self.failUnlessEqual(cdata.ulonglong_le(self.LEONE(8)), 1)
        self.failUnlessEqual(cdata.longlong_le(self.BEONE(8)), 2 ** 64 >> 8)
        self.failUnlessEqual(cdata.ulonglong_le(self.NEGONE(8)), 2 ** 64 - 1)
        self.assertTrue(cdata.ulonglong_le is cdata.uint64_le)

        self.failUnlessEqual(cdata.ulonglong_be(self.ZERO(8)), 0)
        self.failUnlessEqual(cdata.ulonglong_be(self.LEONE(8)), 2 ** 64 >> 8)
        self.failUnlessEqual(cdata.longlong_be(self.BEONE(8)), 1)
        self.failUnlessEqual(cdata.ulonglong_be(self.NEGONE(8)), 2 ** 64 - 1)
        self.assertTrue(cdata.ulonglong_be is cdata.uint64_be)
Ejemplo n.º 2
0
    def test_ulonglong(self):
        self.failUnlessEqual(cdata.ulonglong_le(self.ZERO(8)), 0)
        self.failUnlessEqual(cdata.ulonglong_le(self.LEONE(8)), 1)
        self.failUnlessEqual(cdata.longlong_le(self.BEONE(8)), 2**64 >> 8)
        self.failUnlessEqual(cdata.ulonglong_le(self.NEGONE(8)), 2**64 - 1)
        self.assertTrue(cdata.ulonglong_le is cdata.uint64_le)

        self.failUnlessEqual(cdata.ulonglong_be(self.ZERO(8)), 0)
        self.failUnlessEqual(cdata.ulonglong_be(self.LEONE(8)), 2**64 >> 8)
        self.failUnlessEqual(cdata.longlong_be(self.BEONE(8)), 1)
        self.failUnlessEqual(cdata.ulonglong_be(self.NEGONE(8)), 2**64 - 1)
        self.assertTrue(cdata.ulonglong_be is cdata.uint64_be)
Ejemplo n.º 3
0
 def __read_offsets(self, filename):
     fileobj = open(filename, 'rb')
     atoms = Atoms(fileobj)
     moov = atoms[b'moov']
     samples = []
     for atom in moov.findall(b'stco', True):
         fileobj.seek(atom.offset + 12)
         data = fileobj.read(atom.length - 12)
         fmt = ">%dI" % cdata.uint_be(data[:4])
         offsets = struct.unpack(fmt, data[4:])
         for offset in offsets:
             fileobj.seek(offset)
             samples.append(fileobj.read(8))
     for atom in moov.findall(b'co64', True):
         fileobj.seek(atom.offset + 12)
         data = fileobj.read(atom.length - 12)
         fmt = ">%dQ" % cdata.uint_be(data[:4])
         offsets = struct.unpack(fmt, data[4:])
         for offset in offsets:
             fileobj.seek(offset)
             samples.append(fileobj.read(8))
     try:
         for atom in atoms[b"moof"].findall(b'tfhd', True):
             data = fileobj.read(atom.length - 9)
             flags = cdata.uint_be(b"\x00" + data[:3])
             if flags & 1:
                 offset = cdata.ulonglong_be(data[7:15])
                 fileobj.seek(offset)
                 samples.append(fileobj.read(8))
     except KeyError:
         pass
     fileobj.close()
     return samples
Ejemplo n.º 4
0
 def __read_offsets(self, filename):
     fileobj = open(filename, 'rb')
     atoms = Atoms(fileobj)
     moov = atoms['moov']
     samples = []
     for atom in moov.findall('stco', True):
         fileobj.seek(atom.offset + 12)
         data = fileobj.read(atom.length - 12)
         fmt = ">%dI" % cdata.uint_be(data[:4])
         offsets = struct.unpack(fmt, data[4:])
         for offset in offsets:
             fileobj.seek(offset)
             samples.append(fileobj.read(8))
     for atom in moov.findall('co64', True):
         fileobj.seek(atom.offset + 12)
         data = fileobj.read(atom.length - 12)
         fmt = ">%dQ" % cdata.uint_be(data[:4])
         offsets = struct.unpack(fmt, data[4:])
         for offset in offsets:
             fileobj.seek(offset)
             samples.append(fileobj.read(8))
     try:
         for atom in atoms["moof"].findall('tfhd', True):
             data = fileobj.read(atom.length - 9)
             flags = cdata.uint_be("\x00" + data[:3])
             if flags & 1:
                 offset = cdata.ulonglong_be(data[7:15])
                 fileobj.seek(offset)
                 samples.append(fileobj.read(8))
     except KeyError:
         pass
     fileobj.close()
     return samples
Ejemplo n.º 5
0
 def __update_tfhd(self, fileobj, atom, delta, offset):
     if atom.offset > offset:
         atom.offset += delta
     fileobj.seek(atom.offset + 9)
     data = fileobj.read(atom.length - 9)
     flags = cdata.uint_be(b"\x00" + data[:3])
     if flags & 1:
         o = cdata.ulonglong_be(data[7:15])
         if o > offset:
             o += delta
         fileobj.seek(atom.offset + 16)
         fileobj.write(cdata.to_ulonglong_be(o))
Ejemplo n.º 6
0
Archivo: mp4.py Proyecto: mattbun/sift
 def __update_tfhd(self, fileobj, atom, delta, offset):
     if atom.offset > offset:
         atom.offset += delta
     fileobj.seek(atom.offset + 9)
     data = fileobj.read(atom.length - 9)
     flags = cdata.uint_be(b"\x00" + data[:3])
     if flags & 1:
         o = cdata.ulonglong_be(data[7:15])
         if o > offset:
             o += delta
         fileobj.seek(atom.offset + 16)
         fileobj.write(cdata.to_ulonglong_be(o))
Ejemplo n.º 7
0
Archivo: mp4.py Proyecto: mattbun/sift
 def __update_parents(self, fileobj, path, delta):
     """Update all parent atoms with the new size."""
     for atom in path:
         fileobj.seek(atom.offset)
         size = cdata.uint_be(fileobj.read(4))
         if size == 1: # 64bit
             # skip name (4B) and read size (8B)
             size = cdata.ulonglong_be(fileobj.read(12)[4:])
             fileobj.seek(atom.offset + 8)
             fileobj.write(cdata.to_ulonglong_be(size + delta))
         else: # 32bit
             fileobj.seek(atom.offset)
             fileobj.write(cdata.to_uint_be(size + delta))