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 19 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' default_audio_lang = 'en'


import itertools
import os import os
import sets import sets


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


return ret, d return ret, d


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


synchronized = ['resumeProducing', 'stopProducing'] synchronized = ['resumeProducing', 'stopProducing']


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


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


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


self.chapter = chapter

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


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


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


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


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


audio = self.dvdtitle.selectaudio(default_audio_lang) 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) VideoItem.__init__(self, *args, **kwargs)


self.url = '%s/%s' % (self.cd.urlbase, self.id) self.url = '%s/%s' % (self.cd.urlbase, self.id)
@@ -130,8 +127,14 @@ class DVDTitle(StorageFolder):
self.dvddisc = kwargs['dvddisc'] self.dvddisc = kwargs['dvddisc']
del kwargs['dvdtitle'], 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) 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 # mapping from path to objectID
self.pathObjmap = {} self.pathObjmap = {}




Loading…
Cancel
Save