DDsrv - A Network DEVice Proxy for DVBDream

ALPHA RELEASE - YES IT HAS BUGS -- ALPHA RELEASE - YES IT HAS BUGS

Although intended to proxy ANY device for DVBDream, this alpha release will 
doubtless fall short of expectations.  I'm releasing this alpha simply to gauge reaction and 
see if any other devices actually work.  So far I have only tested with the 'BDA Native' 
device (BDA.DEV), as attempting to test any other device causes DVBDream to either 
do nothing or crash on my system.  Don't expect a rapid release schedule, but I will try to 
fix simple (yet crippling) bugs quickly.  (The source code needs serious cleanup before 
adding anything new and significant.)

I recommend testing both client and server on the DVB host (the machine with DVB 
hardware) before attempting to deploy.

Be aware that there are two (2) INI files which are placed in two (2) different locations - 
one for the host applet, and one for the client DEVice.  Yes, the data can be consolidated 
into one file, but bear in mind that the client and host will each search for their respective 
INI's in different folders.


Installation:
HOST - Place DDsrv.EXE and its INI into DVBDream's main program folder. (same 
folder as DVBDream.exe)

CLIENT - Place DDsrv.DEV and its INI into DVBDream's DEVICES folder. (same 
folder as all the other .DEV files)


Configuration:
HOST - Run DDsrv.EXE, click the 'Select' button, choose your DEVice.
CLIENT - Use Notepad to edit the hosts IP address or name in DDsrv.INI (in the 
DEVICES folder). 


Execution:
1)	Make sure DDsrv.EXE is running on the DVB host machine (and your device is 
	selected).
2)	Run DVBDream on the client machine. (Hit CTRL+D and select the DDsrv 
	device if not selected already, click OK, then restart DVBDream.)
3)	Enjoy TV!  . or document a crash :)


Ports Used: 30000 (TCP, client->host), 30001 (UDP, host->client)


Notes & Known Bugs:
I have had little luck attempting to 'Start' the DDsrv device in DVBDream's device 
selection window.  Instead select the device, click OK, and restart DVBDream.

The host (server) applet MUST be running before starting DVBDream on the client!!

Server and client may fall out-of-sync to the point where BOTH the server (host) applet 
AND the client DVBDream may need to be restarted.  (Quit client AND server. 
Remember, re-start the server applet first.)

I've tried to add some 'common sense' to the host-side applet in the event of lost 
messages and client crashes, but its barely adequate.

I've not yet had success using DVBDream's LAN streaming together with DDsrv.

If you use a hostname instead of an IP address be aware that gethostbyname() will 
probably cause the client application to immediately crash if NetBIOS lookup fails and 
DNS is not available.  Try using the IP address instead.

Busy networks may cause issues with UDP packet reception.  I do not attempt to re-
sequence out-of-order packets at the moment.  Maybe I'll add a TCP option in the future.

I assume 64kb UDP packets are OK (Some stacks are limited to 16KB.)

I assume all DVB packets are 188 bytes. (Let me know if you find an exception.)

Client may often experience an exception (crash) upon exiting from DVBDream.  I'm 
still looking for the cause.

Not thread-safe (yet)
- Only supports one (1) device per DVB host (untested - try it if you like)
- Only supports one (1) client per DVB host (client2 will steal control)
- No PIPs (DVBDream freezes/crashes)

CI interface (BDA only) is hopelessly broken at the moment.

Diseqc interface is implemented but untested (let me know).

High CPU load (100%) for more than 1 or 2 seconds on the client may cause DVBDream 
to crash.

Slowly resizing DVBDream's video window may eventually cause DVBDream to crash.

DDsrv's 'Configure' button may not work properly (I have only seen it function once.)
 
I don't keep .LOG files.  If you need something to post regarding a perceived error just 
copy some meaningful text from the host applet's dialog or use DBWIN32 
(bobmoore.mvps.org/Files/Utils/Utilshome.htm) if you think you need to see client 
messages.

