Since no one was working on the change log for 0.18 I started working on it and am changing the pages that display what is currently being developed and what is the current release. The current release(starting with 0.18) is at Current Version while the development is going to New Version. This should be easier to track and will allow an easier transition between version releases.

Below are the features and bug fixes which were added for the 0.17 release of MythTV. The release was cut in the wee hours of 11-Feb-2005. This page is the one to which Isaac linked from Mythtv.org, so it will continue to have the information from the 0.17 release for a while.

What this page usually is, when a release hasn't just happened, is a running log of commits to CVS: if you see something on this page that you can't live without, setting up to grab and compile CVS releases is the way to get it. If you don't know much about CVS, but would like to learn, the entire text of Open Source Development with CVS is available (under the GPL) here.

[ Please understand: if you compile and use CVS, you're venturing into the waters of Alpha Test; be prepared to behave accordingly. ]

It is requested that anyone adding items to this page please include the date they went into CVS, whenever possible, to make figuring out what features you have easier.

New Features

New Feature (libsoundtouch)

A new library has been integrated which allows the playback speed to be increased or decreased without causing a pitch shift. This allows folks short on time to increase the playback speed to something like 1.5x and finish a show quicker, without feeling like they're listening to the chipmunks.

Menu options have been added to the OSD menu to allow easy access to this feature.

New Feature(Fire Wire Capture)Myth now supports capture of MPEG-TS streams via Fire Wire from Fire Wire-enabled cable boxes. It has been tested on set-top models DCT-6200 and SA 3250 thus far. libraw1394 version 1.1.0+ (www.linux1394.org) and libiec61883 svn revision 49+ (svn://svn.linux1394.org/libiec61883) are required to use this feature. Only external channel changing is supported at this point, but most everything (livetv/recording/ff/etc) else should be working.

New Feature(Job Queues)Created a Job Queue for processing things like Commercial Flagging, etc.. The Commercial flagger and transcoder are now scheduled and run via the Job Queue. There are also config settings for up to 4 "User Jobs" which can be setup to run after a recording finishes. These can be any script or program the user wants to run such as an nuvexport, the 'archive' script mentioned below, or any other job the user wants to run.

Jobs are queued by inserting a recording into the jobqueue table. Each backend runs a Job Queue thread looking for jobs to process. A job can be setup to run on any available server by leaving the jobqueue.hostname column empty or the job can be forced to run on a specific backend by putting that backend hostname in the hostname column. There is also a mythjobqueue executable program which can be run on a system to allow that server to run Job Queue jobs without having to run a full-fledged copy of mythbackend just to get Job Queue functionality.

User Jobs are configurable via the Myth setup program (not mythfrontend's setup). The Job scripts are global settings so they can be changed from any backend. The Myth backend setup program also allows the user to specify which jobs can run on that particular backend, so one backend could be setup to run only commercial flagging, and User Job #2, while another backend could be setup to only run User Jobs #1 and #2. This same configuration needs to be made for any system running mythjobqueue.

In addition to the status field in the jobqueue table, there is also a "comment" field which jobs can update. The commercial flagger updates this field with the current completion percentage.

Jobs for a recording are processed sequentially in the order they were inserted into the table. Currently the commercial flagging job is inserted first when a recording finishes, then the 4 user jobs if applicable. If you want to run script A before script B, then script A must be in a lower User Job # than script B.

A sample archive script is included in the contrib directory as myth_archive_job.pl

For user jobs, the following substitutions apply on the user job command-line:

%FILE% - filename of recording
%DIR% - Myth Recording directory where file is located
%HOSTNAME% - hostname of backed where recording was made

Starttime and Endtime are in YYYYMMDDHHMMSS format. All text fields are substituted unquoted, so if you need to quote something you have to do it yourself in the command.

Added a Job Queue screen to the status page in mythfrontend. Jobs are shown on the status screen if they are either: uncompleted, JOB_ERRORED status, or recently finished (within the past 2 hours). Jobs with an error status will show up in RED. The titles and start time/date are shown. When scrolling through the list, details of the job will be displayed in the help area at the top of the status screen.

The old "Commercial Skip Host" dedicated commercial flagging host setting has been eliminated in favor of new method of specifying which jobs can run on which backends. This allows a user to have one or more commercial flagging hosts so the old setting isn't needed anymore. Users who were using the Dedicated Commercial Flagging Host setting will need to setup the new Job Queue "Allow Jobs" for hosts in order to turn on/off commercial flagging on specific backends.

Changed "Commercial Skip C P U" setting to "Job Queue C P U" since it now applies to jobs in the queue if they support checking this value to regulate their cpu. User jobs will be run at nice(19) on "Low", nice(10) on "Medium", and full throttle on "High". The way Commercial Flagging uses this value is unchanged. This setting is now on the backend setup screen also since it is configurable per-backend.

Added Advanced search. This is a user interface to the k Power Search capability added by gigem for arbitrary FROM and WHERE clause SQL to be embedded within a k Power Search record rule.

The Advanced search page allows a limited set of six parameters that can be combined to create a search rule. For the purposes of storage in the keyword table for recall, views, and to provide a title for search rules, the field values are packed into a colon separated string:

`title:subtitle:description:category_type:category:station`

`MLB:Giants::::` San Francisco baseball games
`:New York:::Sports event:` Games involving any team from NY
`:::movie:Action:HBO` Action flix on Home Box Office

These strings are created and edited in a popup form on the proglist pl Power Search page. The strings are expanded to the SQL clauses for proglist searches and for the SQL embedded in the k Power Search rules. The Power Search rules should be roughly as fast as the other search rules. In fact, the `"MLB:Giants::::"` rule may run faster, and give more focused results (no ESPN Classics) than a Keyword search for "San Francisco Giants".

Note that the interface only allows entering values for these six fields and each non-empty field becomes an AND clause appended to WHERE. However, k Power Search (search type 1) rules allow any valid SQL which the user may hand edit into the 'record' table (good luck =). The 'subtitle' field may contain extensions to FROM. Other tables (must begin with a comma) or JOINs for tables that would be needed for the WHERE clauses would go here. The 'description' field is appended to the WHERE clause. Parenthesis, AND, OR, NOT, etc. can be used to build any arbitrary search rule.

New Feature (Custom Record)

This page allows the user to create specialized recording rules by directly editing the SQL embedded in k Power Search record rules.

New Feature (Previously Recorded Page)

Added a "Previously Recorded" page to view and delete items in the 'oldrecorded' table. This page offers several sorting methods available by pressing the view keys (HOME and END by default). Individual episodes can be deleted from the list or all episodes for a title
can be removed with the press of a button.

Changes

Major Enhancement (Commercial Flagging)

Added the ability to invert the cutlist in the editor. The INVERTMAP action is currently bound to the "I" key since most people will already have that mapped but of course the key can be changed via MythWeb.

Code should now detect actual Blank frames rather than Black frames as was previously done. The method of detecting blank frames changed to detect the difference between min/max brightness rather than just checking for frames with a max brightness below a certain level. This seems to eliminate a lot of false positives and do better detection on dark shows and shows with black frames interspersed throughout the show. Tested with some problem episodes of shows such as CSI, Law & Order, Alien, and LAX. Works well on all of these except when CBS and/or the local affiliate decide to put their station logo on the blank frames before/after commercials. For that, when logo information is detected, it is accounted for, and the frames are detected as being blank even with the logo present. This is especially useful in the new "All" detection method mentioned below.

Tightened up some of the commercial length checks for the blank frame detection method.

Bumped up border size for area that is ignored during commercial detection from a 10 pixel border to 20.

Added new "All" detection method. This detection method uses information from blank-frame, scene change, and logo detection and can easily be modified to take advantage of other detection information. It works in a fundamentally different way than the normal blank-frame and scene change methods. The code groups the frames into blocks separated by blank frames and rates each block based upon several factors such as the rate of scene change, what percentage of frames in the block have a logo present, how long/short the block is, etc.. Indications that a block is part of a commercial (such as very high rates of scene changes) lower the block's score, while indications that a block is part of the show (such as having a logo present on most frames) raise the block's score. In the end the blocks are looked at as a group and various bits of logic applied to make the final determination where commercials start and end. On most of the shows tested, this method seems to be doing a much better job than just blank-frame or blank-frame plus scene-change.

Simply put, the new "All" method detects almost every commercial. It has been successfully tested on (previously) problem shows like CSI, West Wing, Enterprise, etc.

The sample pixel spacing for the various detection methods now varies based upon the total number of pixels in the frame. Rather than being fixed at every-other-pixel, the code will now use a larger spacing for larger frames. This should help speedup flagging for people using higher frame sizes whether by choice or because of precompressed video as in HDTV, etc..

Made it so mythcommflag can run on machines that don't have access to the backend's recording directory via nfs. It will now open the proper filename/url through the ringbuffer so it will be streamed from the backend if the file is not available locally (or via NFS). This also uses ProgramInfo::GetPlaybackURL().

Add code to check for 5 and 10 second commercials to try to catch some of those spots for things like local news and Sci Fi blurbs.

Important Change(New Episode Only Recording)

"--mark_repeats" is now the default behavior for mythfilldatabase. A "--nomark_repeats" flag has been added to turn off the marking of repeats.

When marking repeats, mythfilldatabase will now unmark repeats that fall within our new episode window for shows flagged as repeats by the grabber. Note that this depends on the original airdate being present within the data.

Changed new episodes only recording from a dup method to a dup in. This allows you to match duplicates however you wish. If a recording is NOT a repeat the scheduler will look in both current and old recordings for it.

Important Change (Themes)

Important note: Themes are designed to be readable from 12 feet on a 30 inch screen with a 100 dpi display. In order to make sure the fonts are readable and things fit like they should you need to ensure that you're running at 100 dpi. Running "xdpyinfo | grep inch" will let you know what your current dpi settings are. If they're not at 100 dpi you'll need to tweak the Display Size setting for your display.

"Blue" has undergone a MAJOR facelift.

"Titivillus" has had lots of tweaks.

Allow the select bar for managedtreelists to have a location and a padding value so that we can use something other than a colored background that's the same size as the text. The location attribute specifies an x,y offset for the bar.The padding attribute specifies how much bigger than the font height the bar should be sized to. The value is in pixels and gets modified based on the vmult

<underline> and <italics> are now valid attributes for theme fonts.

Added a "stylehint" attribute for fonts, this allows them designers to tweak the font matching algorithm to find an appropriate default family if a selected font family is not available. Set the documentation for QFont::StyleHint for details.

Added the "Iulius" theme. This is a lightweight, practical, functional theme created by Nathan Ziarek. The wide space for menu titles, high contrast text and the simple wire frames offers a good alternative to the more graphic intensive themes and may be more appealing to the Sgt. Joe Friday, Frank Lloyd Wright, or even Adrian Monk mind sets.

Added the ability to set a font to use for items in the listarea on the status screen. Currently only use is to highlight aborted and errored jobs in Job Queue.

Allow fonts to be declared inside the theme file... Fonts declared inside the theme file go into a "global font map" and can be referenced from inside the various -ui files. When checking for which font to use, the local font map specific to the window will be checked first, then the global map. This allows theme designers to override the global font definition on a per window basis if desired. These changes make it much easier for theme designers to create a consistent look and feel across the windows, make large scale font changes as well as cut down on the clutter in the xml files.

A new container has been added to the guide windows for the jump to channel feature. If this container is not present the date container will be used instead. The syntax for this container is as follows.

Implemented font inheritence. When declaring a font in your xml files you can now specify an attribute called "base" and include the name of the font your new font is based on. This, when combined with the global font map allows for sweeping font adjustments to the entire theme at once.

When using a base font, you only need to provide data for the elements you wish to override.
Example font definitions:

Added reverse sorting on the "manage recording priorities" screen. When sorting by title, hitting '1' again will reverse the current sort. Hitting '1' again will return to normal. Same is true for '2' and sort by priority. The forward/reverse sort setting is also saved to the database so Myth remembers what direction you last sorted. If you change from a Title -> Priority sort or vice versa, the reverse sort setting is reset automatically and the initial sort order is forward.

An option to select a black background (versus a transparent background) for closed captioning has been added.

A "Previously Recorded" page to view and delete items in the 'oldrecorded' table has been added

A new key binding has been added to the playback box. Map a key to "UPCOMING" to see the upcoming episodes for a show you have recorded.

Added a scrolling highlight bar to the status screen listarea. Themes that use something other than the default status-ui xml will need to be updated.

In search by Time, the view keys now change the time by one hour. The New Titles "Movies" page now includes all titles new to the listings regardless of the year of release. The recording options page upcoming list item for search types now lists the showings that match the record rule. This change also prevents a possible regression where proglist could crash if given an invalid title string from m_pginfo.

Exclude repeats in the All view of the conflict page.

Include the record type char on the Set Priorities page.

Display card number and input after changing cards or inputs.

Allow gui width/height settings by 1 pixel, instead of always by 8.

When sorting by priority on the Set Priorities page, sort by record type when the priority is equal. This better reflects the true hierarchy. While we're at it, added Sort by Type to show record rules of the same type clustered together.

Strip the base video dir and base artwork dir from the filename and coverfile name when displaying them in the video manager

Support for controlling Myth via a joystick has been added. This must be enabled at compile time. A sample config file is included.

Display the number of shows to record for each rule on the Set Priorities page. Use the recording color for each rule that has one or more shows scheduled to record.

Added ability to tag recordings on the Watch Recordings screen. Tagged recordings as a group can be played, deleted, or have their recording group changed. Recordings are tagged using the MENU (for groups) and INFO (for individual shows) or the '/' (Favorites) key. The '?' will clear the tagged list. Once a playlist is being built, the MENU key provides Playlist options including regular "Play" to play items in order, "Shuffle Play" for playing items in random order, and options for Deleting or changing Recording Groups on the entire list.

Show the source number per channel on the Channel Priorities page.

Title sorting for Watch/Delete Recordings, Set Priorities, and Previously Recorded pages. In English, titles should be sorted alphabetically excluding the prefix words The, A and An. These and the Program Finder are the only pages currently which display sorted lists of titles.

Sleep timer entries for the OSD menu, patch from Tommy Watson.

The EPG now allows direct channel jumping in the program guide by entering a channel number. By default, it is off. You can turn it on in the TV -> Guide Settings. The way this works is if you enter a digit, it will set a timer for 2.5 seconds and enter jump to channel mode where as you enter digits, it will find the closest matching channel and show that on the program guide. Within the 2.5 seconds, if you press the button bound to END, it will cancel channel jump mode and revert to the highlighted channel before entering this mode. If you let the timer expire, it will stay on the selected channel

Fixed a couple issues with some osd items not being properly resized when needed.

Increased max horizontal resolution to 1440.

On the Watch Recording screen, the TOGGLERECORD button, usually mapped to the 'R' key, will toggle the title view on the left between showing titles and showing Recording groups. This is different from the existing feature which allows you to filter the title list by recording group. Instead, the recording groups are the groupings on the left and each recording in the group is shown on the right.

On the Watch Recording screen, the INFO menu has been reorganized. Less commonly used items have been organized under submenus including Scheduling Options, Storage Options, and Job Options.

Added "Play from Beginning" option to recordings that have bookmarks to optionally ignore the bookmark when playing.

Added "Preserve this episode" option to recordings that use max episode expiration. Preserving an episode causes it to be ignored when expiring episodes from that recording schedule using max episodes expiration. This is different than auto-expiration which is done when disk space is low.

If there is no mysql.txt file in the default locations, the frontend will pop up a new graphical editor for the default language and the database/backend settings, and these settings will be saved in the user's .mythtv/mysql.txt file.

The setup program has GUI buttons for the "Would you like to clear the..." questions - no more console interaction required.

MythTV Core (Guide Data)

XMLTV mythfilldatabase now checks almost all fields when deciding if a program needs updating or not

XMLTV mythfilldatabase will populate seriesid with a hashed value if we don't get a seriesid (to be able to build a programid)

XMLTV mythfilldatabase will populate syndicatedepisodenumber with the info from episode-num

XMLTV mythfilldatabase will use the new Swedish grabber (tv_grab_se_swedb) instead of the old one

Mythfilldatabase now has a better method for re-filling partial days. There should be at least four times as many programs between 6pm and midnight as channels. If not, refill to be safe.

Support for tv_grab_se and tv_grab_no added.

--dd-file option added to mythfilldatabse for importing data direct info from a file instead of pulling from the DD site.

Added tv_grab_pt support from Olivio Moura.

Added generation of programids based on episode-num (xmltv_ns) from xmltv

MythTV Core (Hardware Support)

Added support for the new unichrome driver's "XvMC" support for the VIA CLE266.

Removed old via hwslice code that wasn't being maintained. Only way to do hardware decode on the epia-m boards is through the unichrome driver support now.

Mac support has moved along very well. Mac users can now compile and run Myth "out of the box".

Altivec optimizations for colorspace conversion and linearblend by Jeremiah and Nigel Pearson

Support for ATSC in North America, and also Unencrypted QAM Digital Cable (with Air2PC card only)

DiSEqC 1.3 (USALS) Motor Support math corrected

Partial DVB EPG Import from over the Air (Works for UK DVB-T, and in North America. Other networks may not function yet. Consider this code Beta).

Functioning ATSC EPG Import over the Air

Improved database to allow for recording of more than 1 channel on the same multiplex down the road.

Constantly monitors service tables and keeps channel database up to date over previous manual channel setting.

Fix for some channel tuning hangs with DVB/ATSC.

Allow recorded stream to be saved in TS as well as PS mode.

Auto-PID selection when channel is tuned, instead of fixed PIDs.

DVB/ATSC AC3 works.

MythTV Core (Performance and Stability)

The realtime priority for the decoder thread has been disabled as seems to break things (ie,lockup the machine) for some folks.

Reworked the program deletion code in Main Server to serialize the file deletion and recordedmarkup deletion in one thread instead of spawning off a thread for each and having them compete for cpu time if the file is stored on the same machine as the database server. This seems to speed up responsiveness on the frontend during file deletes quite a bit.

Scheduler optimization. Revise the check for too many episodes so that it doesn't cause Scheduled Recording objects to be created. While these are quick in terms of human interaction on the recording options page, they are slow relative to the scheduler. Only a portion of the scheduler run time was spent on queries and conflict resolution. The majority was spent creating and deleting Scheduled Recording objects. This may improve scheduler run times by a factor of 2X to 10X depending or several factors. YMMV.

Make Ivtv::GetFrame() always return after finishing a frame. This should help slower systems from getting stuck in there for extended periods when they are barely keeping up with the decoder.

Removed the Record Changed polling in the scheduler now that mythweb supports scheduler notification using RESCHEDULE_RECORDINGS. If you use MythWeb, you need to upgrade it too.

Changed the scheduler to not sleep unconditionally in most cases. It will still sleep unconditionally when it is deferring rescheduling because a recording is about to start.

Changed the hardcoded nice() value in mythcommflag and the jobqueue code that calls mythcommflag from 19 to 17 to give a little bit of room for other lower-priority processes when running niced. Also changed mythtranscode nice value in the jobqueue to 17 for the same reason.

Added the ability to use libmpeg2 for decoding MPEG2 content. This can result in lower CPU usage for playback of MPEG2 files. This must be enabled in the playback settings.

Create a mutex for MainServer::do DeleteThread. This will help cut down on the impact to the database because of multiple deletes against recordedmarkup at the same time. Same goes for multiple deletes on the filesystem.

Avoid needless video reinits on channel change. May help with xvmc on epia-m boxes.

Added an option "CPU friendly preview of recordings". Due to scaling overhead, previews use more CPU compared to normal playback. This option, will limit previews to 12 FPS. Should make it possible to use previews on setups that are already close to the limit during normal playback.

MythTV Core (Misc Changes)

An option to allow re-record of auto-expired shows has been added.

Added a "Deletes Follow Links" setting in the backend setup screen that tells Myth to follow symlinks when deleting recordings and related files. Default is OFF. When ON, the symlink and actual file will be deleted. When OFF, only the symlink will get deleted which is the way Myth has worked in the past.

Reworked the fast-forward/rewind feature to support smoother motion and more accurate timing.

mysql.txt no longer installed -- the new mythcontext.cpp generates this file if it is not around,

ffmpeg resync performed. Includes some x86-64 asm support (rerun configure).

The default setting for 'Extra audio buffering' is now on. This is one of the Myth settings that can only help. Having it on can't cause problems, but having it off can.

Patch from Martin Barnasconi to enable embedding of VBI info in ivtv recordings.

Searching based on the star rating of a show is now supported. In the search box, simply enter a pattern like *, **, *** or ****. You can also enter things like **1/2 or **- or **.5 to mean 2 and a half stars. Patterns such as "** analyze" to show all shows with 2+ stars that contain "analyze" in their title or subtitle. Adding the star-search pattern anywhere in the search string basically limits your results to programs that have that many (or more) stars.

Recording schedules can be made inactive to be removed from scheduling but retain their configuration information. This can be done from the scheduling options screen or by pressing PLAYBACK or PAUSE on the Set Priorities screen. Inactive schedules are shown using the inactive font for the theme.

DPMS support. If display power management is enabled, it is now disabled at the same time as the screensaver. This means DPMS can be used to blank the screen if menus are shown for too long, but it won't kick in while watching your shows, etc. Useful for CRT projectors and plasma screens that don't like static images.

MythMusic now uses the same audio output routines as MythTV core. This allows for consistent volume and the like.

Internal structural changes to Metadata storage/retrieval to enable more advanced tag support for ID3/Vorbis Comment etc. by Colin Guthrie

Compilation artist support by Colin Guthrie to store, extract and work with compilation CDs without filling up the 'Artist' list with one track albums (enh/bug 19). Note that Metadata writing for Compilation Artist is only supported in Myth's native audio file formats (Ogg/FLAC/MP3) and FLAC is largely untested.

Metadata Editor by Paul (press "info" when playing to edit current track's metadata).

New 'smart playlists' feature from Paul. This allows you to create playlists that are dynamically updated every time you select one by running a simple SQL query on the musicmetadata table. It allow you to, for example, create a playlist that contains all the tracks by a particular artist, all your favourite tracks, all the tracks from a genre etc. You can also create an order by clause which allows you to order the tracks how you like and limit the number of tracks in a playlist. Playlists can be grouped together by category. You could for example create categories called 'By Artist', 'By Genre' etc. that way you don't get one big list of playlists but several playlist grouped together by a category.

Nuvexport

Fixed noise_reduction default values in some ffmpeg modules

Added 4:3 aspect to ffmpeg svcd

nuvinfo defaults ALL nuv files to 4:3 aspect ratio.

Added multi-cpu support for ffmpeg

Added a "skip audio" flag to the first pass of multipass -- it may help reduce memory usage for some people

Take advantage of multiple cpu's in transcode.pm

Misc

An init script for Suse / LSB has been added to the contrib files.

Add myth.rebulddatabase.pl contrib script command-line option '--ext' to pass an arbitrary extension to the script to use. This allows importation of AVI or other media files to the Watch Recordings database. Metadata information is prompted for, the file is renamed to the standard naming convention, and optionally, mythcommflag --rebuild can be run against the file to build the markup table for seeking.

Bug Fixes

MythTV Core (UI and usability)

Fix for bug 209 (video disappearing in EPG).

Fixed the bug in edit mode which would cause the 'cut' indicator to sometimes not be displayed initially if the current frame position was inside a new cut area when the commercial skip list was loaded into the cutlist.

The text shadow drawing within the list area of the recording options screen has been fixed.

OSD drawing has been fixed for SECAM, and other non-NTSC/non-(plain)PAL modes when using the PVR350 for output.

The "Don't let it record I want to watch tv." menu option is now functional again. This closes bug #78

The Myth window location is now reset after watching fullscreen TV/recordings.

A lock up when editing video on the PVR350 output has been fixed.

MythTV Core (Live-TV and Playback)

Modified Threaded File Writer::Disk Loop to not use the min/max buffering system until at least TFW_MIN_WRITE_SIZE bytes have been written to the file. This reduces the number of retries required when opening the file and hence the delay when switching over.

The lowest possible frequency allowed for a channel has been lowered to 45mhz.

PAL-M is now correctly supported by Myth.

DVB files are now correctly handled by the PVR350 output.

Bad signal / tuning failures are now handled more gracefully.

Deinterlace filters are now reinitialized on video format change. This eliminates a source of problems for HDTV users.

More failure cases when attempting to start/view a recording or Live TV are handled. This helps eliminate some of the apparent lockups which are actually endless loops.

Opening a local ringbuffer is now a bit more fault tolerant. When ever we open a ring buffer now we do a quick check to see if the file handle can be read from. If it can't we usleep a bit and try again, up to 5 times (currently). This should have zero impact on folks who were not having problems transitioning from watching livetv to watching a recording. For those that are having problems, this should take care of it, though you will have a noticeable delay when transitioning before the system gets a good file handle.

Fixed the query channel code to properly send the repeat, airdate and starts up to the frontend for use in the OSD.

Fixed Remote Encoder::Get Current Channel to check for a channel value 0 zero not just an empty string when deciding if it needs to grab the info from the server. This corrects an issue where the EPG can start from the beginning of the channels instead of what channel you are viewing.

Automatic audio track selection has been improved: Now it only adds an audio stream to the list if it finds the codec for it in avlib. Also changed Scan Streams so if it finds an unidentified stream it keeps scanning the rest of the streams. Added a check in Get Frame that calls Select Audio Track() if the currently selected audio track is outside the bounds of our audio stream list.

Vsync hangs have been reduced/eliminated: When people have faulty X server drivers, like some did with via, the video display thread crashes while choosing a vsync method. Nothing is displayed on screen but some audio is played. "waiting for free video buffers timed out" is printed to stderr and the kernel log has the crash details. This also helps with nvidia kernel modules.

Fixed bug 191. "Commercial Skip Auto-Rewind" The Auto Commercial Skip code was not honoring the commercial skip rewind amount setting. For people who don't want auto-skip rewinding a little after a skip, make sure that you have the "Commercial Skip Auto-Rewind Amount" setting set to 0 in mythfrontend's setup.

Removed some race conditions that could happen when changing speeds or skipping around.

A crash when using cx88 cards for recording has been fixed.

MythTV Core (Scheduling)

The scheduler now correctly reports the real reason (e.g. "previous recording") for new episodes that fall within the safety window instead of calling them all repeats.

Fix for the NULL seriesid bug which could prevent new recordings from being added to the recorded table under certain conditions.

Fixed upcoming episodes lists for search rules. When a search rule does not refer to a specific showing on the Set Priorities page, the UPCOMING button or options page item will show the list of shows that match the rule. Pressing UPCOMING on a title from that list will show the upcoming list for that title.

Fixed bug #80 where category field in record table would be blanked out when editing the recording schedule in the new editor.

Added missing "Custom record" menu entry to the classic menu theme

Fixed "bug" #76, "start early & end late settings arbitrarily limited." Shouldn't be a big deal to have these have high limits since there is the ability to step by 10 when configuring the setting. Bumped up to 480 minutes +/- max on each setting.

Max episode expiration now correctly expires episodes by program ID, not by title. Two recording schedules for the same title now will honor their individual max episode settings. Previously if there was, for example, a schedule to record Law and Order on NBC with no expiration and another to record Law and Order on TNT (syndication) with 3 max episodes, NBC episodes could get expired by the TNT schedule settings.

MythTV Core (OSX)

A workaround for the focus and theming background image problem has been implemented.

MythTV Core (DVB)

Disable CI debugging. (less log clutter)

Remove hard coded override for Conax CAM in CI slot 1

MythTV Core (Misc)

The "type" icons (commflagged, auto expire, etc) for the Titillus theme have been put back into CVS. If you have an older copy of the theme you can copy the type subdirectory from the old theme to the current one until .17 is released.

Fix fd leak on backend for remote frontends.

A crash in the commercial detection caused by invalid entires in the database has been fixed.

The LCD support has been improved so that users who have LCD support compiled in but do not have an LCD will not take a performance hit.

Use Qt's x11 lib dir, instead of blindly specifying /usr/X11R6/lib. Should fix problems for people with mixed 64/32 bit environments.

In Myth Remote Line Edit, replace "\n" with "" when converting to Rich Text format. This prevents multiple lines from unwrapping when using the numeric input method in the text box for Custom Record.

Various UTF-8 and translation fixes from Hirobumi Shimada.

tv_grab_uk_rt no longer loops unnecessarily (Mythfilldatabase run times are now sensible)

Many asserts have been removed. Previously these would cause either the frontend or the backend to terminate, with little useful debugging information available.