Author: dmeyer
Date: Sat Nov 5 12:56:59 2005
New Revision: 890
Modified:
trunk/metadata/src/video/movinfo.py
Log:
read reference atoms
Modified: trunk/metadata/src/video/movinfo.py
==============================================================================
--- trunk/metadata/src/video/movinfo.py (original)
+++ trunk/metadata/src/video/movinfo.py Sat Nov 5 12:56:59 2005
@@ -59,7 +59,8 @@
def __init__(self,file):
mediainfo.AVInfo.__init__(self)
self.context = 'video'
-
+ self.references = []
+
self.mime = 'video/quicktime'
self.type = 'Quicktime Video'
h = file.read(8)
@@ -88,6 +89,9 @@
except:
pass
+ if self.references:
+ self.keys.append('references')
+
def _readatom(self, file):
s = file.read(8)
@@ -293,6 +297,36 @@
file.seek(pos, 0)
+ elif atomtype == 'rmra':
+ # reference list
+ while self._readatom(file):
+ pass
+
+ elif atomtype == 'rmda':
+ # reference
+ atomdata = file.read(atomsize-8)
+ pos = 0
+ url = ''
+ quality = 0
+ datarate = 0
+ while pos < atomsize-8:
+ (datasize, datatype) = unpack('>I4s', atomdata[pos:pos+8])
+ if datatype == 'rdrf':
+ rflags, rtype, rlen = unpack('>I4sI',
atomdata[pos+8:pos+20])
+ if rtype == 'url ':
+ url = atomdata[pos+20:pos+20+rlen]
+ if url.find('\0') > 0:
+ url = url[:url.find('\0')]
+ elif datatype == 'rmqu':
+ quality = unpack('>I', atomdata[pos+8:pos+12])[0]
+
+ elif datatype == 'rmdr':
+ datarate = unpack('>I', atomdata[pos+12:pos+16])[0]
+
+ pos += datasize
+ if url:
+ self.references.append((url, quality, datarate))
+
else:
if not atomtype in ('wide', 'free'):
log.info('unhandled base atom %s' % atomtype)
-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server. Download
it for free - -and be entered to win a 42" plasma tv or your very own
Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog