Re: [Freevo-devel] Recording TV

2003-03-06 Thread Aubin Paul
On Wed, Mar 05, 2003 at 07:55:05PM -0500, Brian J. Murrell wrote:
 I have lots of experience at this part.  I hope I can help, at least
 with suggestions if not code.  The latter will depend on my time.

That works for me :)

 I must admit that I am still not using Freevo, but maybe that can
 change soon.  How are you using the UI to choose recorded television
 program to watch?  Are you just using the Movies menu?  How do you
 know that you are watching program episodes in the order they were
 shown without any kind of date display or date sort on that menu?

I have a folder under Watch Movies called 'Recording' and it
contains the files that are recorded. The files are tagged by date and
time, and then by show name and title. Like this:

03-02 9:00pm - The Simpsons - Treehouse of Horror XI
03-03 9:30pm - The Daily Show with John Stewart

 This really needs to be addressed, as well as the real-estate issue in
 general.  I have ony used the default skin, but I find that it
 wastes too much screen space to eye candy and does not give enough
 space to the business at hand... choosing media to play.  It would be
 nice if there were a no-nonesense, low-eye-candy-lots of well-used
 real-estate skin.  Oh, with a scrollable media chooser.  Next/Prev
 page just sucks.

I'm not sure what space is wasted. On my screen I have an info bar on
the top, a vertical menu on the right 2/3 of the screen and room for
cover images on the left. In my hacked MP3 player, the cover image
shows the album title, year and total track length under the cover.

 I have that written already, albeit in `C', for efficiency.  If I get
 time (not hopeful) I might try re-writing it in Python just to test
 out my python skills.  :-)

Shouldn't be too bad; Python isn't usually slower than C in my
experience, at least not in this type of application.

 And what happens if that adding causes conflicts?  That is what my
 scheduler deals with.

What /will/ happen is that scheduled shows (since they're processed in
advance) will be highlighted in red in the TV guide, and if you want
to record at that time, it'll cancel the scheduled record. The only
thing I need to do to get that to work is to add that info to the
record file.

 You need scoring for programs to help resolve conflicts in a way that
 you get what you want recorded and some heuristics to try and do the
 right thing.  For instance, it has been my experience that programs
 that have episode titles normally, do not have them when the episode
 is a repeat.  You want to decrease a programs score in that instance.

Hmm... that might work, though in fairness, I'm not recording that
much yet so conflicts haven't happened yet. The current model doesn't
handle conflicts at all, but it's not impossible to do 1:1 conflicts.
I'm not sure how to handle multiple conflicts without a logic like
scoring.

 You also want to track what you have recorded, again for optimal
 conflict resolution.  For instance, you do not want to record an
 episode of a program you have already seen at the expense of another
 show who's episode you have not seen.

Scoring would probably help that; I would imagine that the Season
Pass list would have scores, I'm not sure how to add them to the main
recording menu without making it overly complex. I suppose we could
set a default of, say, one below high priority.

 Conflict resolution _can_ be processor intensive.  If you have a lot
 of programs in your wanted list, you will wind up with a large
 matrix of conflicts that you have to resolve by brute force.  My
 experience (with my recording schedule) is that this is not an issue.
 It was in one of my early implementations but I found an optimization
 that reduced searches by many orders of magnitude.

That I'd be interested in; because it sounds like the only way I would do
it is to sort an array of shows by priority and pick the highest one. 

 I will want one for lavrec, but that should be quite easy.  Your
 encoder plugin model is like the record script from my OpenPVR
 project.

Should be easy enough; just write a small python script and set a
variable.

 Not watching live TV rules!  'Specially so when you take a couple of
 minutes before watching to remove all commercials.  Then you sit and
 watch a whole program without having to touch the remote.

I haven't done that, but mostly, hitting the 60 second fast forward
handles most of the commercials. I don't know if I could watch shows
and manually set commercial breaks, though, hypothetically, there is
no reason it would be difficult, since we intercept the remote before
it's passed to mplayer, and we could just split based on those breaks.

 It all revolves around a scheduling daemon.  The daemon accepts inputs
 of several varieties.  It will of course take a list of programs by
 name, but also by recurring date/time (I usually refer to this as
 timeslot programming and avoid it at all costs because it's
 unreliable) or simply by a one-time date/time specification.


Re: [Freevo-devel] Recording TV

2003-03-06 Thread Gustavo Sverzut Barbieri
 --- Brian J. Murrell
[EMAIL PROTECTED] escreveu: 
 On Tue, Mar 04, 2003 at 01:12:33AM -0500, Aubin Paul wrote:
 This really needs to be addressed, as well as the real-estate issue
 in
 general.  I have ony used the default skin, but I find that it
 wastes too much screen space to eye candy and does not give enough
 space to the business at hand... choosing media to play.  It would be
 nice if there were a no-nonesense, low-eye-candy-lots of well-used
 real-estate skin.  Oh, with a scrollable media chooser.  Next/Prev
 page just sucks.


Press d (DISPLAY) when in movies menu. You'll have a preliminary
Extended Menu. In near future, that will be the default and you will
have more menu states: text-listing, icon-listing + view + info,
icon-listing. And text-listing should not use the submenu (Prev/Next)
anymore.
 

 But I digress...
 
  3. The last thing I'd like to see is a auto-scheduler based on
 program
  names.
 
 I have that written already, albeit in `C', for efficiency.  If I get
 time (not hopeful) I might try re-writing it in Python just to test
 out my python skills.  :-)
 
  What would happen ideally is that when the epg_xmltv.py is
  processing the guide (something I do at 3am) it looks for certain
  programme names in a file, and adds them to the record list.
 
 And what happens if that adding causes conflicts?  That is what my
 scheduler deals with.
 
  A programme list file or Season Pass would look something like a
  file with line by line shows, when epg_xmltv.py runs, it would
 compare
  this list to the processed guide, and auto-schedule the favourites.
 
 
 You need scoring for programs to help resolve conflicts in a way that
 you get what you want recorded and some heuristics to try and do the
 right thing.  For instance, it has been my experience that programs
 that have episode titles normally, do not have them when the episode
 is a repeat.  You want to decrease a programs score in that instance.
 
  We'd add a line to the Record parameters menu called Record all
 (Show
  name) and then add that to a list, and use the pickled guide to
 add
  the days worth of stuff.
 
 You also want to track what you have recorded, again for optimal
 conflict resolution.  For instance, you do not want to record an
 episode of a program you have already seen at the expense of another
 show who's episode you have not seen.


Sure.

 
  This should be dead simple to add and if you process your guide in
 the
  middle of the night, almost invisible to the user.
 
 Conflict resolution _can_ be processor intensive.  If you have a lot
 of programs in your wanted list, you will wind up with a large
 matrix of conflicts that you have to resolve by brute force.  My
 experience (with my recording schedule) is that this is not an issue.
 It was in one of my early implementations but I found an optimization
 that reduced searches by many orders of magnitude.


Great.

 
  I've started the plugin stuff for the different encoders, I have
 mp1e
  working now, but I want to make sure we have one for mencoder
 before I
  commit anything. 
 
 I will want one for lavrec, but that should be quite easy.  Your
 encoder plugin model is like the record script from my OpenPVR
 project.
 
  Last of all, let me just recommend the recording stuff to anyone
 who
  hasn't tried it. I don't think I've watched live television in a
 week!
 
 Not watching live TV rules!  'Specially so when you take a couple of
 minutes before watching to remove all commercials.  Then you sit and
 watch a whole program without having to touch the remote.
 
 I have been thinking about recording architure design a bit.
 
 I used to think at and at jobs were sufficient to manage recording
 but
 I have since changed my mind.
 
 This is my idea of a recording framework:
 
 It all revolves around a scheduling daemon.  The daemon accepts
 inputs
 of several varieties.  It will of course take a list of programs by
 name, but also by recurring date/time (I usually refer to this as
 timeslot programming and avoid it at all costs because it's
 unreliable) or simply by a one-time date/time specification.
 
 The daemon re-evaluates the recording schedule after every input
 change and always has a chronological list of what's going to be
 recorded for as far out as it has information.  If you have 2 weeks
 of
 XMLTV data, your scheduler will know what it's going to record for
 the
 next 2 weeks.
 
 Of course, what is going to record could change at any time due to
 new
 input (manual or XMLTV fed).  Indeed, I would give it a whole new 2
 week XMLTV schedule every day, to keep up with the programming
 changes
 that happen on North American television networks on a daily basis.
 
 But even entering a one-time programming request (with score) could
 change the schedule as a conflict resolution is performed after every
 input.
 
 The scheduling daemon is responsible for farming out recording jobs
 to
 one or more recording daemons on one or more (local and/or remote)
 

[Freevo-devel] Re: skin and gui interaction

2003-03-06 Thread Dirk Meyer
Gustavo Sverzut Barbieri wrote:
 You can make this one work making the overlap area transparent on one
 layer. Or in this case, have the view and listing to be the same
 object.

I've done that by having one background, one alpha and one content
layer. Making view and listing one object isn't an option, if you
start combining objects you can't re-use them. Right now I use the
same view area code for the menu and for the mp3 player.

 As I said, we can make OPAQUE=true and have some transparent parts in
 the window IF we are sure that everything that's under our window will
 not change (or will not affect our window)

Since aubin_round1 changes the background, we couldn't use any
transparent objects -- not an option.

 The same? View and Listing change, for the view area the background
 changes based on the size of the image.

 Huh? Are you talking that it changes when I change from Images-Movies
 or it changes from inside the movie, when you select another item?

aubin_round1 has different backgrounds for movie, audio, image and
games. It's also possible that the user wants a folder specific
background. 

 No I haven't. I'm in my parents house and I have no Linux here :(
 Friday I'm home, so I'll test. Also, are you and Rob writing about your
 changes/innovations? As I'm out for few days I lost sync with your
 things :)

I'm documenting my skin and the xml files will follow. 

  About the OPAQUE, I think all the windows could be opaque for now.
 
 That's too easy, it's not the case with the current skins.


 Yes it is. We will only use OPAQUE=false when we have transparent
 popups or something like that. Actually when we want to have a popup
 shown AND the background changing. IMHO this will be used only with
 Applets and if we want these applets over the menu or something.

You're free to try. I have five areas in my skin (screen, title,
listing, view and info). Each area class inherits from a parent class
in area.py and only does content specific stuff. These higher classes
don't even use osd.drawXXX and call a function in area. By changing
area.py you can change all areas.

But I doubt that your area.py will be faster than mine. I made some
ugly enhancements to speed up things.

 Making them all a monolitic GUIObject is ugly, maybe various
 GUIObjects put together with a Container is the best solution) and
 draw things like you do now, I see no problem too. 

I don't thing it's ugly. I see no reason why they all should be one
GUIObject. And I don't really draw each area after another. I only
save want they want to draw. After that, I check whats new and draw
them at the same time. It's fast and I don't see one single reason why
I should change it. Think about it that way: each area (== separate
object) is a part of the whole screen (menuw == GUIObject). Calling it
GUIObject and Container makes no difference.

 The point is we need a WM to handle focus and windows redrawing.

Do you want to set a focus from listing to view area? The screen,
info, view and title area don't need a focus, the whole menu needs
one. That is done by making the menuw a GUIObject.

Dischi

-- 
The good thing about standards is that there are so many to choose from.
-- Andrew S. Tanenbaum



---
This SF.net email is sponsored by: Etnus, makers of TotalView, The debugger 
for complex code. Debugging C/C++ programs can leave you feeling lost and 
disoriented. TotalView can help you find your way. Available on major UNIX 
and Linux platforms. Try it free. www.etnus.com
___
Freevo-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freevo-devel


[Freevo-cvslog] freevo/src/gui GUIObject.py,1.8,1.9

2003-03-06 Thread dischi
Update of /cvsroot/freevo/freevo/src/gui
In directory sc8-pr-cvs1:/tmp/cvs-serv15254

Modified Files:
GUIObject.py 
Log Message:
Remove the GUI object from the parent when the parent changes


Index: GUIObject.py
===
RCS file: /cvsroot/freevo/freevo/src/gui/GUIObject.py,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** GUIObject.py5 Mar 2003 03:53:34 -   1.8
--- GUIObject.py6 Mar 2003 19:13:14 -   1.9
***
*** 8,11 
--- 8,14 
  #---
  # $Log$
+ # Revision 1.9  2003/03/06 19:13:14  dischi
+ # Remove the GUI object from the parent when the parent changes
+ #
  # Revision 1.8  2003/03/05 03:53:34  rshortt
  # More work hooking skin properties into the GUI objects, and also making
***
*** 387,390 
--- 390,396 
  Set the parent of this widget
  
+ if self.parent != parent and self.parent and self in self.parent.children:
+ self.parent.children.remove(self)
+ 
  self.parent = parent
  




---
This SF.net email is sponsored by: Etnus, makers of TotalView, The debugger 
for complex code. Debugging C/C++ programs can leave you feeling lost and 
disoriented. TotalView can help you find your way. Available on major UNIX 
and Linux platforms. Try it free. www.etnus.com
___
Freevo-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog


[Freevo-cvslog] freevo freevo_config.py,1.137,1.138

2003-03-06 Thread dischi
Update of /cvsroot/freevo/freevo
In directory sc8-pr-cvs1:/tmp/cvs-serv22234

Modified Files:
freevo_config.py 
Log Message:
Added MPLAYER_ARGS_AUDIOCD

Index: freevo_config.py
===
RCS file: /cvsroot/freevo/freevo/freevo_config.py,v
retrieving revision 1.137
retrieving revision 1.138
diff -C2 -d -r1.137 -r1.138
*** freevo_config.py4 Mar 2003 05:43:39 -   1.137
--- freevo_config.py6 Mar 2003 21:39:32 -   1.138
***
*** 60,68 
  # is different, there will be only a warning
  
! FREEVO_CONF_VERSION = 1.0
  LOCAL_CONF_VERSION  = 2.0
  
  # Description of changes in each new version
! FREEVO_CONF_CHANGES = [] # None yet
  LOCAL_CONF_CHANGES = [
  (1.1,
--- 60,71 
  # is different, there will be only a warning
  
! FREEVO_CONF_VERSION = 1.1
  LOCAL_CONF_VERSION  = 2.0
  
  # Description of changes in each new version
! FREEVO_CONF_CHANGES = [
! (1.1,
!  '''Added MPLAYER_ARGS_AUDIOCD for aido cd playback settings.'''),]
! 
  LOCAL_CONF_CHANGES = [
  (1.1,
***
*** 458,461 
--- 461,465 
  MPLAYER_ARGS_TVVIEW  = '-nocache'
  MPLAYER_ARGS_DVDNAV  = '-dvdnav'
+ MPLAYER_ARGS_AUDIOCD = '-cache 500 -cdda speed=1'
  MPLAYER_USE_WID  = 1
  




---
This SF.net email is sponsored by: Etnus, makers of TotalView, The debugger 
for complex code. Debugging C/C++ programs can leave you feeling lost and 
disoriented. TotalView can help you find your way. Available on major UNIX 
and Linux platforms. Try it free. www.etnus.com
___
Freevo-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog


[Freevo-cvslog] freevo freevo_config.py,1.138,1.139

2003-03-06 Thread dischi
Update of /cvsroot/freevo/freevo
In directory sc8-pr-cvs1:/tmp/cvs-serv23325

Modified Files:
freevo_config.py 
Log Message:
Arg

Index: freevo_config.py
===
RCS file: /cvsroot/freevo/freevo/freevo_config.py,v
retrieving revision 1.138
retrieving revision 1.139
diff -C2 -d -r1.138 -r1.139
*** freevo_config.py6 Mar 2003 21:39:32 -   1.138
--- freevo_config.py6 Mar 2003 21:42:07 -   1.139
***
*** 60,70 
  # is different, there will be only a warning
  
! FREEVO_CONF_VERSION = 1.1
! LOCAL_CONF_VERSION  = 2.0
  
  # Description of changes in each new version
! FREEVO_CONF_CHANGES = [
! (1.1,
!  '''Added MPLAYER_ARGS_AUDIOCD for aido cd playback settings.'''),]
  
  LOCAL_CONF_CHANGES = [
--- 60,68 
  # is different, there will be only a warning
  
! FREEVO_CONF_VERSION = 1.0
! LOCAL_CONF_VERSION  = 2.1
  
  # Description of changes in each new version
! FREEVO_CONF_CHANGES = [] # None so far
  
  LOCAL_CONF_CHANGES = [
***
*** 79,83 
   '''Remote control config has changed from Freevo Python files to the
   standard Lirc program config files, see freevo_config.py for
!  more info.''')]
  
  
--- 77,83 
   '''Remote control config has changed from Freevo Python files to the
   standard Lirc program config files, see freevo_config.py for
!  more info.'''),
! (2.1,
!  '''Added MPLAYER_ARGS_AUDIOCD for aido cd playback settings.''')]
  
  




---
This SF.net email is sponsored by: Etnus, makers of TotalView, The debugger 
for complex code. Debugging C/C++ programs can leave you feeling lost and 
disoriented. TotalView can help you find your way. Available on major UNIX 
and Linux platforms. Try it free. www.etnus.com
___
Freevo-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog


Re: [Freevo-devel] How to use PopupBox gui item?

2003-03-06 Thread Rob Shortt
Brian J. Murrell wrote:
Problem is that I can't seem to use InputBox where I used to use
PopupBox to display that folder was password protected.  I get an
error:
Traceback (most recent call last):
  File src/main.py, line 604, in ?
main_func()
  File src/main.py, line 826, in main_func
  File src/menu.py, line 492, in eventhandler
action( menuw=self )
  File src/mediamenu.py, line 441, in cwd
skin.InputBox('Password Protected Folder')
AttributeError: Skin instance has no attribute 'InputBox'
So some hunting around suggests to me that when using the main1
skin, Popup box is defined skin_main1.py, not in the src/gui menu.
That is the old PopupBox, which isn't an actual object but simply get 
drawn to the screen.

So how do I take advantage of src/gui stuff?  My guess is that I need
to use a skin designed to use it.  Am I correct?  How do I go about
doing that?  Which skin(s) use the stuff in src/gui?
Untill recently you could use the objects in src/gui regardless of what 
skin you had.  Dischi is working on a new skin which provides some 
information about the skin configuration to the src/gui objects.  These 
objects now make a call to the skin to configure the look  feel, 
therefore they will only work with the new skin.  The sin in progress is 
skins/dischi1/skin_dischi1.py.

For examples of some of the gui code I have a modified audioitem.py 
which demontrates an object when play() is called.  To see this go into 
WIP/RobShortt and make uitest.  This will copy over your existing 
audioitem.py.  Then just go 'play' an mp3 to get a popup.  You may edit 
the audioitem.py and comment/uncomment lines in the play function to see 
some of the new objects in action.

-Rob



---
This SF.net email is sponsored by: Etnus, makers of TotalView, The debugger 
for complex code. Debugging C/C++ programs can leave you feeling lost and 
disoriented. TotalView can help you find your way. Available on major UNIX 
and Linux platforms. Try it free. www.etnus.com
___
Freevo-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freevo-devel


Re: [Freevo-devel] How to use PopupBox gui item?

2003-03-06 Thread Rob Shortt
Brian J. Murrell wrote:
I have a few moments to resume some freevo hacking.  First thing I
want to do, now that I see that there is an InputBox GUI item, is
implemenent the password protected folder idea I have.
Also please ignore any problems with the object's graphics not drawing 
or updating cleanly as I am working on fixing that part. :)  Also I 
don't think InputBox gets all of the skin properties that it should care 
about yet, a WIP.

-Rob



---
This SF.net email is sponsored by: Etnus, makers of TotalView, The debugger 
for complex code. Debugging C/C++ programs can leave you feeling lost and 
disoriented. TotalView can help you find your way. Available on major UNIX 
and Linux platforms. Try it free. www.etnus.com
___
Freevo-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freevo-devel


[Freevo-cvslog] freevo/src/gui LetterBox.py,1.2,1.3

2003-03-06 Thread rshortt
Update of /cvsroot/freevo/freevo/src/gui
In directory sc8-pr-cvs1:/tmp/cvs-serv20059

Modified Files:
LetterBox.py 
Log Message:
Just a quick fix to take care of redrawing when changing the letter and still
seeing the previous letter though the alpha.  I will have to come up with
a better solution (probably using a bg_surface or something) when I hook
this object up to the skin properties because if the non-selected bg_color
has a transparency it will still be broken.


Index: LetterBox.py
===
RCS file: /cvsroot/freevo/freevo/src/gui/LetterBox.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** LetterBox.py5 Mar 2003 03:53:34 -   1.2
--- LetterBox.py7 Mar 2003 00:19:58 -   1.3
***
*** 10,13 
--- 10,20 
  # ---
  # $Log$
+ # Revision 1.3  2003/03/07 00:19:58  rshortt
+ # Just a quick fix to take care of redrawing when changing the letter and still
+ # seeing the previous letter though the alpha.  I will have to come up with
+ # a better solution (probably using a bg_surface or something) when I hook
+ # this object up to the skin properties because if the non-selected bg_color
+ # has a transparency it will still be broken.
+ #
  # Revision 1.2  2003/03/05 03:53:34  rshortt
  # More work hooking skin properties into the GUI objects, and also making
***
*** 192,205 
  raise TypeError, 'Not all needed variables set.'
  
  if self.selected:
  c = self.selected_color.get_color_sdl()
  a = self.selected_color.get_alpha()
! else:
! c = self.bg_color.get_color_sdl()
! a = self.bg_color.get_alpha()
  
- box = pygame.Surface(self.get_size(), 0, 32)
- box.fill(c)
- box.set_alpha(a)
  
  self.osd.screen.blit(box, self.get_position())
--- 199,216 
  raise TypeError, 'Not all needed variables set.'
  
+ box = pygame.Surface(self.get_size(), 0, 32)
+ c = self.bg_color.get_color_sdl()
+ a = self.bg_color.get_alpha()
+ box.fill(c)
+ box.set_alpha(a)
+ 
  if self.selected:
+ sel_box = pygame.Surface(self.get_size(), 0, 32)
  c = self.selected_color.get_color_sdl()
  a = self.selected_color.get_alpha()
! sel_box.fill(c)
! sel_box.set_alpha(a)
! box.blit(sel_box, (0,0))
  
  
  self.osd.screen.blit(box, self.get_position())




---
This SF.net email is sponsored by: Etnus, makers of TotalView, The debugger 
for complex code. Debugging C/C++ programs can leave you feeling lost and 
disoriented. TotalView can help you find your way. Available on major UNIX 
and Linux platforms. Try it free. www.etnus.com
___
Freevo-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog