SageTV is a cross-platform networked DVR and media management system
Switch branches/tags
Nothing to show
Clone or download
Latest commit 210683a Dec 1, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
build Update deb dependencies Dec 1, 2018
buildwin Added SageTV and Studio manual Word doc files and updated Studio manu… Dec 8, 2015
gradle/wrapper minor update gradle properties Dec 31, 2015
i18n Added a more roles. Jan 14, 2017
images Added better V9 images Jan 13, 2016
install/config Updated DVB-S frequencies for New Zealand Aug 20, 2017
installer Release for version 9.1.10 [ci release] Oct 15, 2018
java Block NULL people/characters in addSeriesInfo. Nov 2, 2018
native Release for version 9.1.10 [ci release] Oct 15, 2018
stvs Fix STV issues Aug 14, 2017
test Refactored to removed Sage.EMBEDDED Jun 25, 2017
third_party update libhdhomerun to 20170930 Mar 8, 2018
.editorconfig Unit Test Changes Sep 6, 2016
.gitignore Released v9.0.14 Mar 18, 2017
.travis.yml added deploy script for auto-deployment to Bintray Jun 17, 2017
AUTHORS Fix STV issues Aug 14, 2017 Added support for building MiniClient jar in Linux/Window/Mac Aug 16, 2015 Release for version 9.1.10 [ci release] Oct 13, 2018
CONTRIBUTING initial commit Jun 18, 2015
CONTRIBUTORS Fixed getoriginalairingdate sort that was violating its general contr… Oct 29, 2018
HOWTO-BuildWindowsNativeCode.txt 1. Migrate build environment from vs2005 to vs2015 Oct 13, 2015
LICENSE initial commit Jun 18, 2015
README noted that native\Build is created dynamically Oct 13, 2015 Added a README for the new Plugin Repositories Jan 10, 2016 Enable SageTV to load plugins from a SageTVPluginsDev.d directory in … Sep 2, 2016
build.gradle Cleaned up some more comments. Apr 24, 2017
gradlew Added gradle to support cross platform building the Sage.jar (eventually Aug 13, 2015
gradlew.bat Added gradle to support cross platform building the Sage.jar (eventually Aug 13, 2015
plugin-uploader.gradle Added scripts to package and deploy the legacy SageTV UIs so they can… Jan 7, 2017


This file outlines the overall directory layout for the SageTV codebase,
 what all the various components in it and what you need to build it on
 different platforms.

Directory Layout

build - build files/scripts for Linux
buildwin - misc. files for Windows & Linux installs, and build scripts for
	 non-MS dev built files on Windows
i18n - internationalization files
images - graphics that are included in the Sage.jar file
install - default config files for installs
java - java source code
native - C/C++ source code, top-level MSDEV projects for Windows native code
native/ax - Windows DirectShow filter C++ source code
native/Build/ - Windows binaries; created dynamically by building Native code
native/common - shared common source/header files
native/crosslibs - cross platform native code
native/dll - Windows DLL C++ source code
native/elf - native executable linux source code
native/exe - Windows executable C++ source code
native/include - includes files (both platforms)
native/so - Linux native library C/C++ code
stvs - STV XML, resource and image files
third_party - Third party source code is located here. 

Various components in SageTV rely on code that is in the third_party directory
and utilize it directly in some cases. Some other third party components stand
on their own and are just part of the overall distribution.

For building on Linux you should set JDK_HOME to be the directory where the JDK
is installed (it should have an include and an include/linux folder at that path).

Extra Linux packages required to build (not exhaustive): lib1394raw-dev,
libavc1394-dev, libiec61883-dev, libfreetype6-dev, yasm

jhead is NOT included in the open source distribution due to it being under the
ambiguous Public Domain license. It can be acquired separately and is needed for
fixing the EXIF JPEG header after rotating pictures.

You can use the build/ script on Linux to build the entire platform and
have it packaged into tarballs and debian installers.

The Windows components need to be built with Visual Studio 2005, mingw/msys and javac.
There is no script for doing this included.

Release Notes for V9

1. Java compliance level is now 1.5
2. Read/write locking support in the database (previously, it only had generic rw locks... now there are explicit locks for read and write on each table)
3. If on a menu w/out full screen video, but video is playing, switch to the full screen video menu when the screen saver timeout expires
4. Lucene support for search (search API calls are now executed on the server and utilize the Lucene index for performance)
5. Loads of various bug fixes and performance enhancements :)
6. New Airing API calls: GetParentalLimitsExceeded, GetPlayableAiring
7. New Channel API calls: GetChannelLogoURL
8. New Configuration API calls: SetCurrentlyAiringProgramsStartLive, GetCurrentlyAiringProgramsStartLive
9. New Database API calls(NTE methods support numeric text input, such as using 228 would match ‘cat’ or ‘bat’, more details in the code): SearchForPeopleNTE, SearchForTitlesNTE, SearchSelectedFieldsNTE, GetMediaMask, HasMediaMask, SearchForChannel
10. Various filtering, sorting and grouping methods in the Database API are now optimized and don’t go back through the API interpreter for filter/sort/group method execution
11. Following Database API calls now support extra args to pass to filter/sort/group methods: FilterByBoolMethod, FilterByMethod, GroupByMethod
12. New Favorite API calls: GetFavoritePresentationName, GetFavoritePresentationPrefix, GetFavoritesForAiring
13. New Global API calls: SageCommand (with payload), IsTransitioningToMenus, IsTransitioningFromMenus, GetUIComponentPositionXf, GetUIComponentPositionYf, GetUIComponentWidthf, GetUIComponentHeightf, IsClientDisconnected, GetClientServerConnectionProgress, GetEPGUpdateState, SwitchEmbeddedModeTo/AreScreenshotsSupported/SaveScreenshotToFile (these 3 are only useful on embedded)
14. New MediaPlayer API calls: GetRecentChannels, ClearRecentChannels
15. New SeriesInfo API calls: GetSeriesImage(bool), GetSeriesImageURL, GetSeriesImageCount, GetSeriesImageAtIndex, GetSeriesImageURLAtIndex, HasSeriesActorImage, GetSeriesActorImage, GetSeriesActorImageURL
16. New Show API calls: IsMovie, HasMovieImage, GetMovieImage, GetMovieImageURL, GetMovieImageCount, GetMovieImageAtIndex, GetMovieImageURLAtIndex, HasPersonImage, GetPersonImage, GetPersonImageURL, GetPersonDateOfBirth, GetPersonDateOfDeath, GetPersonBirthplace, GetPersonID, GetPersonForID, GetMovieStarRating
17. New Utility API calls: GetMetaImageAspectRatio, GetMetaImageBytes, GetLocalFileAsString, ConvertNteChars, StringIndexOfNTE, StringStartsWithNTE, DumpServerThreadStates
18. Person is a new database object (rather than just being Stringer objects as they were previously)
19. Series/person/character image information now exists in the database (follows TMS naming conventions)
20. Thread monitoring and regular logging of CPU usage of various threads
21. Significant performance improvements to overall database system
22. Licensing/key checking code removed
23. “Spoiler Protection” when watching live TV, it will not default to a channel which could possibly ‘spoil’ something else you care about. It also tries to avoid selecting anything that needs parental control by default.
24. Codebase from EMBEDDED (HD300) merged with main SageTV codebase (NOTE: This will no longer run on the HD300 because it’s not Java 1.5 source rather than Java 1.4)
25. Added new hooks: RecordRequestLiveMultiConflict, WatchRequestLiveMultiConflict (these allow processing all conflicts for watch/record requests at once rather than one at a time; if these hooks are not in the STV then the non-Multi hooks that have always existed will be called instead)
26. TVTV support removed
27. Added property “hdmi_always_select_best” which defaults to false, but if set true will auto select the best HDMI resolution for extender clients
28. Added property “studio/alert_on_syntax_error” which defaults to false, but if true will popup an alert in the Studio if a syntax error is entered (i.e. an expression the parser cannot properly compile)
29. Support for rendering of CEA-708 closed captions (i.e. Digital TV closed captions)
30. Added downloader for Weather Underground data (API license key required to use)
31. CVS integration for SageTV Studio (although not that useful since this is hosted on GIT now; but it’s done in an abstract way so GIT support could be added)
32. Added RemotePusherClient support. This allows for a separate process that handles the streaming (push & pull mode) for SageTV rather than running this through the Java classes.
33. On Windows, the global environment variable SAGETVUSERKEY should be set to be your license key if you’re using the EXE built from the open source codebase. This will then allow you to communicate with the SageTV EPG server.