DigitalWatch is a free open source project for watching and recording DVB-T digital
television.

More ...

I started this project because I was unhappy with all the
other applcations that were available at the time. They all lacked in
their ability to customize many aspects of the tv watching experience,
so i created the DigitalWatch 0.x series which was designed around the
WinDTV SDK and ended up having BDA support tacked on the side in the 0.7x versions.
It became obvious that the design I'd used to create the original version of
DigitalWatch did not suit BDA, so I undertook a total redesign of the DigitalWatch
archtecture which has resulted in DigitalWatch 2.x

DigitalWatch is mostly oriented towards watching rather than recording
although most versions do have recording capabilities. If you are intereted
in scheduling your recordings then I recommend using
DVB Web Scheduler.

DigitalWatch is not aimed at the extreme novice user. Maybe it will be
in the future, but for now i'm not going out of my way to make it easy
for anyone who doesn't like to tinker. That said, if you have any
questions then ask on the
DVB Owners Forum
and someone will probabaly help you out.

Features

DigitalWatch 2.x has been totally redeveloped from the DigitalWatch 0.x series with
an entirely different architecture. As a result, not all of the features available
in 0.x versions have been implemented in 2.x versions. It's planned to add most of them
as time permits but time doesn't permit very much for me these days. Fortunately bear
and DigiWatchSaver have been able to chip in and start adding support for recording
and timeshifting.

What does it do?

Nice and simple interface, just the video window, and all information comes up as an On Screen Display. No pesky right click menu.

OSD items are configurable (font, colour, location on screen, size)

Operational from the keyboard to make using a remote easy.

Configurable key assignments.

Single key channel selection. Channels are organised by network rather than having a great long list of duplicate channels.

Fast channel changing.

Choose which video and audio decoders get used for each media type.

Volume control that doesn't tamper with the windows mixer.

Always On Top option

Disable Screensaver

Zoom (For watching 4:3 material without the black border)

Supports HD and AC3. Of course this depends on which video and audio decoders you choose and what their settings are.

New to 2.x versions

Supports any BDA compatible DVB-T digital tv tuner.

Supports multiple tuners (Not simultaneously. Yet)

Tuners are automatically detected. No configuration required unless you want to disable one

Much nicer OSD (only works for the Overlay Mixer at the moment. VMR9 is to come)

Detailed logging to diagnose problems

Channel scanning.

Coming soon

These are currently in the trunk source but are still undergoing bug fixes.

Added support for region frequency settings in the OSD, just add the frequency.xml file to a location in the regions dir for it to be accessable. You will need to delete the regionList.xml for DW to rebuild the list. Default freq are now in the default folder location.

Changed the timeshift resume to be relative to local time, this is optional from the settings.xml.

Added DTS Audio & Subtitle media support.

Fixed a problem in the BDACardCollection::FindCaptureDevice() code that caused a problem with virtual drivers from TwinHan.

Fixed a object release issue in the TSFileStreamList class that was holding the TSFileSource active on close.

Added DSNetwork input support for the OSD.

Added OSD Global settings support for the Signal quality tests, also the default value is now disabled.

Changed the ITSFileSource AC3 Preference setting to disabled.

Changed the Timeshift file format to default to TS Mux.

Add signal strength/quality back into the DigitalWatch OSD (used the "S" key).

Added in some audio muting when changing channels.

Made some changes to fix the multiple audio stream problem when timeshifting. @anthony, if you could try this, thanks.

Fixed a bug that was causing crashes when accessing the message log writer. I think.

Added in a option setting to the OSD menu global settings to enable ordering of the services by channel numbers. Default setting is enabled.

Changed the SetChannel(ONID) method to SetChannel(TSID) for the changes earlier.

Changed the OSD network/channel display to now parse the transport Stream ID rather than the Original Network ID, this is so uk users can navigate the services since they have the same ONID values for the same frequency.

Added a buffer log message limit vale to the settings.xml, you can now specify how many messages are buffered before a file write is made, default value is 100. Setiing the value to 0 will cause the log to write to file imediate.

Added a low priority buffer thread class to the Log Writer, it will now buffer any log messages and write them with it's own low priority thread.

Fixed a few bugs to get the application to play h264 ts files, also fixed a problem with playing mpg files.

Added support for h264 media type, can't tell if it works as have no access to a broadcast.

Added a Decoder Test function to the decoder selection method, to use you need to enable decoder test setting in the settings menu.

Added a emboss image to the settings menu to mask out decoders that do not match the media type selected.

Added a Cycle Cards option in the settings menu so the cards will not cycle.

Slight change to the minimise/restore function to remove some error messages from the log.

Added the LastChannel function to the Watch TV Timeshift modes.

Solved a few stream selection locking problems by turning on and off of some updating threads.

Added a extended network name option to the settings menu so that the network name can be identified by adding the TSID value.

Fixed a few bugs regarding the ViewRecordFile function.

Started rationalise the code into the filtergraph tools class.

Extended the close display function on QuiteOnMinimise to the "Watch TV" mode so you can open several instances of DW and select the instance you want to watch by maximising.

Added a Remember Last Service setting, as well as saving the last service used in the settings.xml file.

Added a function to view a recording file while in timeshift mode, key shift "W", just "W" returns to the timeshift file.

Added a extra command to the SetSource function, can now timeshift the channel your watching by pressing pause.

Fixed the Fast timeshift change method, was not updating the demux pids after the demux was connected.

Added in some other changes.

Added some changes to allow the video decoder/overlay mixer render method to still work if the mixer is in use, will now default to windowless mode. Note: In the decoder.xml file you now need to Add the input filter prior to adding the overlay mixer.

Added some code to fix the picture if the Timeshift format is not set.

Changed the file Writing flags back to normal file buffering, double buffering is now active in both the TSFileSink and DWDump filters.

Added a CloseBuffersOnMinimise setting, This just means that when you minimise the application via the mouse you can option to close any unused sink graphs or not.

Added a LoadRecordFile function to the timeshift shift "W" key so yo can now view the recorded file.- Implemented a decoder settings menu. You can now choose which decoder to use from the Settings Menu.

Fixed a bug where it was not setting the correct service ID to the sink graphs.

Fixed a bug where you could not add a network from "TV Watch" Mode.

Fixed a bug in where it was crashing on a channel change when it was stopping the player.

Implemented a Device settings menu. You can now enable & disable cards, as well as rotate there order.

Added a small change to pause the graph before we change channel then start the graph again to fix the problem of upsetting WS captures.

Added device settings to the settings menu.

Added a fix to work around the dntvlive mini driver problem that causes the tuner to change in other instances.

Changed the graph rebuild method when changing channels in Timeshifting mode, it will now create a new sink graph if another card is free and then the player will change over to it before closing the previous sink graph. This improves the visual channel change to give a 1sec display change.

Implemented a "QuietWhenMinimised" option in Global settings, it lets you close the player when timeshifting if the application is minimised. It will restart when the application is restored and will seek to the present time.

Implemented a "MultiCard" option in Global settings, it lets you create multiple sink graphs in timeshifting mode dependant on the number of cards you have active and will let you change channel between each graph, and seeking to the present time. It will release the most last used sink graph if changing to a new channel if all the cards are already in use by the application unless it is recording.

Changed the timeout of the Tuner Scanning code from 1sec to 5sec, this seems to reduce the cpu usage as it seemed to be taking longer than 1sec to parse and would seem to double up on the threads.

Added some code to now set the ITSFileSource settings to make sure the correct settings are engaged when in use by the application.

Added settings for Time Shift Buffer size, these settings should not be changed unless you have an idea of what your doing.

Now have the BufferMunites setting working, default is 0 or not auto, if its value is say 5 then the TS buffer will try and change its size to give you at least 5 min of time, this may vary as the buffer goes up and down in size.

Had another look at the Reference Clock setting of which demux to use and changed the order of the sink building. If DSNetsink then it will be reference, if then capture sink then it becomes reference, then if Timeshift sink then it is reference.

Added some code to set the Reference clock after each demux is added in the BDSDVBTimeshift class, i.e. it will now set the TimeShift sink demux as the clock reference rather than defaulting to the last demux added. This may have caused problems if the reference clock was not defaulting and was null when the timeshift sink graph starts.

Added some code to prevent re starting of the timeshift mode if the same channel is selected.

Changed the Stream detection method on calls to the StreamInfo::GetFindServiceNameCur() now includes channel number in the test.

Added new Media Formats to make the demux pins the same as the TSFileSource media types. Also changed the sink demux types as well.

Removed the file build delay, loading of the TSFileSource is now instant, although the settings for file build method can be still valid if the values are not zero.

Added in AddDemuxpins method on the TSFileSource class method prior to connection.

TSFileSource:Added in some low priority setings to the DurationUpdate, and property page threads.

Made some changes to get the video controls to work in the timeshift failed mode.

TSFileSource: Changed the FillBuffer wait for file building method from a 50ms delay to a 2 second long retry at 50ms intervals. This is to get around file corruption caused by some drivers.

Removed DWSource::Start() code references, were all redundant.

Removed the extra DWGraph class in the Timeshift class, now sink graph has its own filtergraph. Seems to have speed up channel changing a little bit.

Removed a few other redundant code bits.

Started documentation of the new code.

Found a call to the source Start() function that was missed, this was causing a restart of the source when selected from the main menu.

Removed m_pActiveSource->Start() from the if block. Then made sure that anything that happed in Start() in the sources that was required by Load() also happened in Load() in the sources.

Added in an else statment to stop the source classes loading twice when the application is run with a command line.

Some slight changes to the method of selecting the program while in timeshifting mode.

Changed the command line text for the timeshift source from "TSTV://" to just "TS://"

Changed the names of the filter GUIDs to CLSID.

Added code to allow selection of the correct program service when using Full TSMux Timeshifting mode.

Changed the TimeShifting setting format to exclude the capture sink settings. Now you need to add on to the timeshift format value to include the capture sink class. eg Capture format settings do not affect timeshifting format. To enable recording in the Timeshift mode you now need to have the upper 4 bits set to the capture type you want. i.e. for timeshifting using TSMux format & capturing using MPGMux format you need to set the value to "0x42" where lower 4 bits are the timeshift type and the upper 4 bits are the capture format.

Added in rpalmer68 Keys.xml files.

Added in filter CLSID values to be changable from within the settings.xml file.

Removed the Streams.xml file save function, now all remains in memory.

Added in a lower process priority in the mpeg2parser ThreadProc function.

Note: This version updates the channels.xml file so if you want to keep your old one make sure you make a copy of it.
For this version i'd like people to start without a channels file at all to test out the scanning.
Changes:

Implemented Channel Scanning. This required heaps of other changes.

Renamed "Program" in DVBTChannels to "Service".

Added a command queue thread to TVControl to allow UpdateChannel events to be handled.
This also allows the OSD to be drawn while changing channels.

Reworked BDADVBTSource to be able to tune to frequencies without channels entries so that scanning can be done for that frequency.

Removed all state information (such as current network) from DVBTChannels. It's the wrong place for it.

Added menu options for adding and ordering networks.

Added FrequencyList to show a list of frequencies (for Australia) when adding networks.

Currently it's set up to use the GPL MPEG-1/2 video decoder and the
DNTV Live! Audio decoder. If you don't have these installed then you'll
need to either install them, or
Use an existing, or add a new, decoder entry in the Decoders.xml file
and edit the MediaTypes.xml file to use that different decoder.
I think you should be able to figure out once you see the files.
Only the Overlay Mixer video renderer works properly at the moment.

Enter, Esc, and the arrow keys are your friends. See the Keys.xml files
(there's one in the BDA_DVB-T folder too) to know what other keys are
available. Most of the things i've implemented use the same key as
previous DW's, like 0-9 for network selection,
[ and ] for 100% and 133% zoom etc...

The FPS reading at the bottom is the rate which the directdraw overlay
is drawing. It has nothing to do with the fps of the video stream.

I added 10 example items to the main menu just to show off the fancy
scrolling menu

If it's not working look in the DigitalWatch.log file

If you have more than 1 tuner, then each time you change channels the
next card will be used. If you have trouble with a particular card then
you can disable it in BDA_DVB-T\Cards.xml