Download Latest Version tivoserver_0_4_4-a4.tgz (208.1 kB)
Email in envelope

Get an email when there's a new version of TivoServer

Home / OldFiles
Name Modified Size InfoDownloads / Week
Parent folder
tivoserver-0.4.3-a4-cygwin.rar 2006-05-12 1.7 MB
tivoserver-0.4.3-a2-setup.exe 2006-02-07 5.4 MB
tivoserver_0.4.2_cygwin.rar 2005-12-23 1.6 MB
tivoserver_0.4.1_cygwin.zip 2005-12-22 2.0 MB
README-0.4 2005-12-11 5.2 kB
tivoserver-0.4-linux.gz 2005-12-11 2.0 MB
tivoserver-0.4-macosx10.3.9.gz 2005-12-11 2.1 MB
tivoserver-0.4-macosx10.3.9.tgz 2005-12-11 2.1 MB
tivoserver_0.4_cygwin.rar 2005-12-11 1.6 MB
tivoserver-0.4.tgz 2005-12-10 3.6 MB
tivoserver.gz 2005-09-10 861.6 kB
Totals: 11 Items   23.1 MB 0
Tivo HMO Server
wsewell, BTUx9, johnsolo, and SteveT

http://tivoserver.sf.net/
http://www.seedwiki.com/wiki/tivoserver/

Quickstart (Almost)
=====

  In this release building ffmpeg and mplex is required, if there is enough of a need
  we will add an option to disable all the AVI playing functionality (and conditionally
  eliminate the need for building ffmpeg and mplex).  We have included the ffmpeg source
  as well as a patched mjpegtools (mplex) to simplify the build process.

  To build:

    cd mjpegtools
    ./configure
    make

    cd ../ffmpeg
    ./configure [ optional libraries ]
    make

    cd ..
    ./configure [ --with-extralibs="optional libraries used in ffmpeg" ]
    make


  If you have already built, or will build ffmpeg and mjpegtools
  separately, then there are configure options to specify where they are:

    ./configure --with-ffmpeg=PATH --with-mjpegtools=PATH [ --with-extralibs="optional libs for ffmpeg ]
    make


  To run:
    Usage: tivoserver [--help] [--group_by_directory] shows_directory [another_shows_directory...]


What It Does So Far
=====

It takes several directories of .tmf, .ty, or AVI files and makes them
available for watching on your Tivo.  All of the arguments, can be
specified as settings in the configuration file (~/.tivoserver/settings.cfg).
The first time you run tivoserver it will generate a settings.cfg file for you
with all of the default values filled in.  Please look there for more information
on the settings.

Here is the usage:

 Usage: tivoserver [--help] [--server_name name] [--group_by_directory] [--log_level level] shows_directory...


There are still some bugs with the video transfer.  Please be careful, 
and expect that your Tivo could reboot and/or crash while using
tivoserver.


"Other" Video Types
=====

"Other" video type transfers have been overhauled to use libavcodec and
libmplex directly rather than running them as external programs and
piping the output.  The "other" video type support uses the libavcodec
(ffmpeg) logic so any file type supported by your particular build of
libavcodec should work.  Actual file extension is ignored (ie tivoserver
tries all files agains libavcodec that aren't TY or TMF).


Caching and Modifying Show Details
=====

This version of tivoserver introduces the concept of a file cache.  To
eliminate the overhead of loading and checking large video files each time
tivoserver starts, tivoserver now caches file information for all video files.
When tivoserver looks through the video directories it checks to see if it
has a cache file for each of the video files.  If so, the cache files is
opened and read to load the video information.  If not tivoserver loads the
video as normal, and creates a cache file for it.

The cache files also allow for the modification of video details (such as
title or groupname) by simply changing the plain text entries in the
cache files.  The cache files are stored in the following location:

~/.tivoserver/cache                     ( on *NIX systems )
c:\Application Data\.tivoserver\cache   ( on Windows )

It may be tricky to find the proper cache file if multiple files in your
collection have the same filename.  Please be careful editing the cache
files as the parsing mechanism is not very robust.  If you encounter
problems with videos being missing or having incorrect data, first try
deleting the cache directory (it will be recreated the next time you run
tivoserver).


What Needs To Be Done
=====

 - Supporting transfer of shows from any Tivo down to the
   'tivoserver'.  This is where the NowShowingCollector actually
   becomes useful.  This shouldn't be too hard,
   having finished the last step.  Here we'll need BucketItem->
   NowShowingEntry converter if the BucketItem data is not
   suitable.


Technical Information
=====

 - The Streamable files have definitions for all the basic types used
   in the process (ie LONG, SHORT, BOOLEAN, OPTIONAL).  The idea for
   the classes was shamelessly stolen from drnull ( thanks :)  They
   are all derived from a base class called Streamable, and they all
   provide functions StreamIn/Out for reading/writing to/from streams
   represented by (STL) string or (my own custom) network objects.

 - Also in Streamable files, are definitions for the STRUCT subclass
   which is a base class for all of the 'STRUCTS'.  The STRUCTS
   themselves are all defined in the TvStructs.hh file.  Not wanting
   to write StreamIn/Out for all these classes, I invented a way to
   pass it's data members up to the parent class and have it stream
   them on its behalf.  Thus the AskMembers()/TellMembers() methods.

 - Enums.h has all the ENUM values used in all the STRUCTs. 

 - The VideoDecoder class is a base class for all decoders for video
   file types.  It encompasses all the logic required to load a file
   load the part headers and the part data.  Subclasses (ie specific
   decoders) _must_ implement the loadXML() and seekPart() virtual
   methods which define how to load the XML data containing the show
   info, and how to seek to the "next Part" respectively.  If no
   XML data is found or exists, the loadXML() methods should simply
   return false.
Source: README-0.4, updated 2005-12-11