New option: no transcode for mpg/dvd streams
authorAlex Lätsch <lexx911@users.schwerkraft.elitedvb.net>
Sun, 1 Jun 2008 15:08:50 +0000 (15:08 +0000)
committerAlex Lätsch <lexx911@users.schwerkraft.elitedvb.net>
Sun, 1 Jun 2008 15:08:50 +0000 (15:08 +0000)
vlcplayer/src/VlcConfig.py
vlcplayer/src/VlcPlayer.py
vlcplayer/src/__init__.py

index 6e31b6d..688dd70 100755 (executable)
@@ -51,7 +51,7 @@ class VLCSettings(Screen, ConfigListScreen):
                cfglist.append(getConfigListEntry(_("Video Bitrate"), config.plugins.vlcplayer.vb))
                cfglist.append(getConfigListEntry(_("Video Width"), config.plugins.vlcplayer.width))
                cfglist.append(getConfigListEntry(_("Video Height"), config.plugins.vlcplayer.height))
-               #cfglist.append(getConfigListEntry(_("Frames per Second"), config.plugins.vlcplayer.fps))
+               cfglist.append(getConfigListEntry(_("No transcode for mpg/dvd/iso"), config.plugins.vlcplayer.notranscode))
                cfglist.append(getConfigListEntry(_("Correct aspect ratio to"), config.plugins.vlcplayer.aspect))
                cfglist.append(getConfigListEntry(_("Subtitle overlay"), config.plugins.vlcplayer.soverlay))
                cfglist.append(getConfigListEntry(_("Audio Codec"), config.plugins.vlcplayer.acodec))
index d1ec801..6c0c431 100755 (executable)
@@ -21,6 +21,7 @@ from enigma import iPlayableService
 from enigma import eTimer
 from Components.ActionMap import ActionMap
 from VlcControlHttp import VlcControlHttp
+import re
 
 DEFAULT_VIDEO_PID = 0x44
 DEFAULT_AUDIO_PID = 0x45
@@ -238,28 +239,33 @@ class VlcPlayer(Screen, InfoBarNotifications, InfoBarAudioSelection):
                        self.filename = "dvdsimple://" + path
                else:
                        self.filename = path
-               transcode = "vcodec=%s,vb=%d,venc=ffmpeg{strict-rc=1},width=%s,height=%s,fps=%s,scale=1,acodec=%s,ab=%d,channels=%d,samplerate=%s" % (
-                       config.plugins.vlcplayer.vcodec.value, 
-                       config.plugins.vlcplayer.vb.value, 
-                       config.plugins.vlcplayer.width.value, 
-                       config.plugins.vlcplayer.height.value, 
-                       config.plugins.vlcplayer.fps.value, 
-                       config.plugins.vlcplayer.acodec.value, 
-                       config.plugins.vlcplayer.ab.value, 
-                       config.plugins.vlcplayer.channels.value,
-                       config.plugins.vlcplayer.samplerate.value
-               )
-               if config.plugins.vlcplayer.aspect.value != "none":
-                       transcode += ",canvas-width=%s,canvas-height=%s,canvas-aspect=%s" % (
+
+               do_direct = isDvdUrl(self.filename) or re.match("(?i).*\.(mpg|mpeg|ts)$", self.filename)
+               if do_direct and config.plugins.vlcplayer.notranscode.value:
+                       self.output = "#"
+               else:
+                       transcode = "vcodec=%s,vb=%d,venc=ffmpeg{strict-rc=1},width=%s,height=%s,fps=%s,scale=1,acodec=%s,ab=%d,channels=%d,samplerate=%s" % (
+                               config.plugins.vlcplayer.vcodec.value, 
+                               config.plugins.vlcplayer.vb.value, 
                                config.plugins.vlcplayer.width.value, 
                                config.plugins.vlcplayer.height.value, 
-                               config.plugins.vlcplayer.aspect.value
-                       ) 
-               if config.plugins.vlcplayer.soverlay.value:
-                       transcode += ",soverlay"
+                               config.plugins.vlcplayer.fps.value, 
+                               config.plugins.vlcplayer.acodec.value, 
+                               config.plugins.vlcplayer.ab.value, 
+                               config.plugins.vlcplayer.channels.value,
+                               config.plugins.vlcplayer.samplerate.value
+                       )
+                       if config.plugins.vlcplayer.aspect.value != "none":
+                               transcode += ",canvas-width=%s,canvas-height=%s,canvas-aspect=%s" % (
+                                       config.plugins.vlcplayer.width.value, 
+                                       config.plugins.vlcplayer.height.value, 
+                                       config.plugins.vlcplayer.aspect.value
+                               ) 
+                       if config.plugins.vlcplayer.soverlay.value:
+                               transcode += ",soverlay"
+                       self.output = "#transcode{%s}:" % transcode
                mux="ts{pid-video=%d,pid-audio=%d}" % (DEFAULT_VIDEO_PID, DEFAULT_AUDIO_PID)
-               self.output = "#transcode{%s}:std{access=http,mux=%s,dst=/%s.ts}" % (transcode, mux, streamName)
-               self.output = self.output + " :sout-all" 
+               self.output = self.output + "std{access=http,mux=%s,dst=/%s.ts} :sout-all" % (mux, streamName)
                self.play()
 
        def play(self):
index 083e6b5..8038323 100755 (executable)
@@ -22,6 +22,7 @@ config.plugins.vlcplayer.fps = ConfigInteger(25, (1, 99))
 config.plugins.vlcplayer.aspect = ConfigSelection(["none", "16:9", "4:3"], "none")
 config.plugins.vlcplayer.soverlay = ConfigYesNo()
 config.plugins.vlcplayer.checkdvd = ConfigYesNo(True)
+config.plugins.vlcplayer.notranscode = ConfigYesNo(False) 
 
 config.plugins.vlcplayer.servercount = ConfigInteger(0)
 config.plugins.vlcplayer.servers = ConfigSubList()
@@ -32,9 +33,6 @@ def addVlcServerConfig():
        config.plugins.vlcplayer.servers[i].host = ConfigText("", False)
        config.plugins.vlcplayer.servers[i].httpport = ConfigInteger(8080, (0,65535))
        config.plugins.vlcplayer.servers[i].basedir = ConfigText("/", False)
-       #config.plugins.vlcplayer.servers[i].method = ConfigSelection({"http": "HTTP Interface", "telnet": "Telnet/VLM"})
-       #config.plugins.vlcplayer.servers[i].adminport = ConfigInteger(4212, (0,65535))
-       #config.plugins.vlcplayer.servers[i].adminpwd = ConfigText("admin", False)
        config.plugins.vlcplayer.servercount.value = i+1
        return i