On Fri, Mar 20, 2009 at 12:15 PM, Duncan Webb <dun...@freevo.org> wrote:
> Art S R wrote:
>> After much befuddlement and frustration, I've finally resolved this
>> problem.  I went back to earlier versions of mplayer.py in svn until I
>> found the latest version that would work displaying live TV (10609)
>> and did a diff with the version I was using from Freevo 1.8.3 to see
>> if I could figure out what's causing the recent versions to not work.
>> After much more tracing, I located the problem here:
>>
>> 240        #command = self.sort_filter(command)
>> 241
>> 242        command += ['%(url)s' % args]
>> 243
>> 244        _debug_(' '.join(command[1:]))
>> 245
>> 246        self.mode = mode
>>
>> Although the debug statement in line 244 was showing the correct
>> mplayer command in my log:
>>
>> /usr/bin/mplayer -slave -vo xv,sdl,x11, -ao oss:/dev/dsp -autosync 100
>> -nolirc -nojoystick -autoq 100 -screenw 800 -screenh 600 -fs -nocache
>> tv:// -tv 
>> driver=v4l2:freq=55.250:device=/dev/video0:input=0:norm=NTSC:width=640:height=480:outfmt=yuy2
>
> Well good work to track down this problem, thanks for this.
>
> All ' '.join(command[1:] does is to convert the command list to a string
> for printing.
>
> You can change the _debug_ statement to:
> _debug_('%r' % (command,))
> and this will be printed exactly and represented as a list.
>
> What is possible is that the arguments are not correct in the list; may
> be one has a space in it when it shouldn't have. Would you please make
> this change and post the resulting command, thanks?
>
> The difference between a list and a string when passed to subprocess is
> that lists are executed directly and strings are executed through a
> sub-shell. With lists there is no need to quote arguments as each
> argument is in a list item. With strings arguments with spaces need to
> be quoted. Lists will start marginally faster and use a bit less memory
> as there is no extra shell being spawned.
>
> Duncan
>

Well, this is interesting.  The syntax of the mplayer command is
identical whether it's a string or a list:

Running (list) '/usr/bin/mplayer -slave -vo xv,sdl,x11, -ao
oss:/dev/dsp -autosync 100 -nolirc -nojoystick -autoq 100 -screenw 800
-screenh 600 -fs -nocache tv:// -tv
driver=v4l2:freq=55.250:device=/dev/video0:input=0:norm=NTSC:width=640:height=480:outfmt=yuy2
' with pid 19221 priority -20

Running (str) '/usr/bin/mplayer -slave -vo xv,sdl,x11, -ao
oss:/dev/dsp -autosync 100 -nolirc -nojoystick -autoq 100 -screenw 800
-screenh 600 -fs -nocache tv:// -tv
driver=v4l2:freq=55.250:device=/dev/video0:input=0:norm=NTSC:width=640:height=480:outfmt=yuy2'
in shell with pid 21625 priority 0

However, running as a list does not work using either the original
"_debug_(' '.join(command[1:]))" or the revised "_debug_('%r' %
(command,))" statement.  On the other hand, when the string is passed
to a shell, the TV program comes in loud and clear.

Art S R

------------------------------------------------------------------------------
Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
easily build your RIAs with Flex Builder, the Eclipse(TM)based development
software that enables intelligent coding and step-through debugging.
Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
_______________________________________________
Freevo-users mailing list
Freevo-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freevo-users

Reply via email to