Browse Source

rename a few of the classes to better match what they are...

support doing the entire title as a resource on the container now
that didllite stuff supports the pass through...  just chain the
chapter iters together for this..

[git-p4: depot-paths = "//depot/": change = 872]
v0.3
John-Mark Gurney 18 years ago
parent
commit
a11d16a225
1 changed files with 15 additions and 12 deletions
  1. +15
    -12
      dvd.py

+ 15
- 12
dvd.py View File

@@ -7,6 +7,7 @@ __version__ = '$Change$'

default_audio_lang = 'en'

import itertools
import os
import sets

@@ -38,7 +39,7 @@ def gennameindexes(pref, item):

return ret, d

class DVDChapterTransfer(pb.Viewable):
class IterTransfer(pb.Viewable):
def __init__(self, iterable, request):
self.iter = iter(iterable)
self.request = request
@@ -81,28 +82,24 @@ class DVDChapterTransfer(pb.Viewable):

synchronized = ['resumeProducing', 'stopProducing']

threadable.synchronize(DVDChapterTransfer)
threadable.synchronize(IterTransfer)

class DVDChapterResource(resource.Resource):
class IterGenResource(resource.Resource):
isLeaf = True

def __init__(self, chapter):
def __init__(self, itergen):
resource.Resource.__init__(self)

self.chapter = chapter

def getFileSize(self):
return self.chapter.size
self.itergen = itergen

def render(self, request):
request.setHeader('content-type', 'video/mpeg')

#request.setHeader('content-length', str(self.getFileSize()))
if request.method == 'HEAD':
return ''

# return data
DVDChapterTransfer(self.chapter, request)
IterTransfer(self.itergen(), request)
# and make sure the connection doesn't get closed
return server.NOT_DONE_YET

@@ -113,8 +110,8 @@ class DVDChapter(VideoItem):
del kwargs['dvdtitle'], kwargs['chapter']

audio = self.dvdtitle.selectaudio(default_audio_lang)
kwargs['content'] = DVDChapterResource(
audiofilter(self.chapter, 0x80 + audio.pos))
kwargs['content'] = IterGenResource(lambda i = self.chapter,
p = audio.pos: audiofilter(i, 0x80 + p))
VideoItem.__init__(self, *args, **kwargs)

self.url = '%s/%s' % (self.cd.urlbase, self.id)
@@ -130,8 +127,14 @@ class DVDTitle(StorageFolder):
self.dvddisc = kwargs['dvddisc']
del kwargs['dvdtitle'], kwargs['dvddisc']

audio = self.dvdtitle.selectaudio(default_audio_lang)
kwargs['content'] = IterGenResource(lambda dt = self.dvdtitle,
p = audio.pos: audiofilter(itertools.chain(*dt), 0x80 + p))
StorageFolder.__init__(self, *args, **kwargs)

self.url = '%s/%s' % (self.cd.urlbase, self.id)
self.res = Resource(self.url, 'http-get:*:video/mpeg:*')

# mapping from path to objectID
self.pathObjmap = {}



Loading…
Cancel
Save