the invention extends the functionality disclosed in the referenced u . s . patent application ser . no . 10 / 846 , 426 , which is incorporated herein by reference . referring now to the drawings in which like reference characters designate identical or corresponding parts throughout the several views , a preferred embodiment of the system of the present invention , generally designated 10 , will now be described with reference to fig1 - 4 . referring now to fig1 , the system 10 according to the invention has three main components : a broadcaster component 20 , a gateway 30 , and a viewing device 40 . the broadcaster component 20 is software running on a processor connected to a video capture device 15 . it is understood that the broadcaster software 20 may run on a desktop computer , a mobile phone , or on a dedicated server , as long as they are communicably connected to the video capture device 15 . when the broadcast components resides on a cellular phone or any other wireless device , a separate computer is not required to broadcast the video . a sample code for the broadcast software for a cell phone was submitted on a cd as appendixa . txt . furthermore , a number of video capture devices 15 may be connected to a single broadcaster component 20 , especially in the instance where the broadcaster component 20 is embodied as a dedicated server . it is also understood that the broadcaster may be embodied as software or as hardware where the functionality is carried out directly from the chipset . the broadcaster 20 opens and maintains a socket connection to the gateway 30 over which it communicates with the gateway 30 . the broadcaster 20 continually checks to insure that the connection is still open . a sample of the broadcast component reconnect code was submitted on a cd as appendixc . txt . the connection is preferably made through port 80 over the internet to avoid being blocked by a firewall . although the connection to the gateway 30 is maintained , no video data is sent from the broadcaster 20 until a viewer requests to view the video stream or the system is archiving the video to be viewed at a later time , as is discussed in greater detail below . the broadcaster 20 utilizes either vfw ( video for windows ) or directshow ( directx ) api &# 39 ; s on the microsoft windows platform . referring now to fig2 , each video capture device 15 captures the analogue or digital video and / or audio data into the digital domain . examples of video capture devices are dome cameras , cctv , webcams , cell phone cameras , cameras on wireless devices , and any other camera that can be communicably connected to the broadcaster component . the image and source data are captured by the video capture device 15 in raw video ( rgb , yuv , or i420 ) format and digital audio ( if applicable depending on the installation ). the broadcaster 20 receives the raw video and has the capability to encode the video in a variety of formats including : 3gp , 3gpp , png , full motion jpeg , mpeg 2 , and mpeg 4 depending on the user settings . the captured video source is encoded into the appropriate inner frame codec by the broadcaster component 20 . the broadcaster 20 uses 3rd party license - free win32 or similar libraries to do the initial encoding for either png or jpeg or a variety of inner frame codecs , as previously defined . the frame rate at which the images are captured is set and encoded . the broadcaster also has the ability to set image frame size and color depth of image frame dynamically . after the raw video data is encoded it is transmitted to the gateway 30 . the broadcaster component 20 also has the ability to list the viewing devices viewing a particular stream as well as log data associated with the video stream transmission and its viewers . a sample of the broadcaster code was submitted on a cd as appendixb . txt . referring again to fig1 , upon startup or reboot of the broadcaster component 20 , a connection is made to the backend system 70 to retrieve settings associated with the video devices connected to the broadcaster component . the settings are stored in a settings database 80 coupled to the backend system 70 . a user may access and enter or edit the settings associated with one or more devices via a secure website . this allows the user to centrally and remotely manage all devices associated with the user &# 39 ; s account . the settings can include security , permissions , archiving , frame rates , data transmission rates , data compression , data encryption , etc . the broadcaster component 20 also receives software updates via this connection to the backend system 70 . the gateway 30 is a server or a cluster of servers that functions as the central hub or interface between the broadcaster component 20 and the viewing device 40 . the gateway 30 is a java socket server with a dedicated publicly addressable ip address that listens on port 80 ( or other applicable port ) for incoming connections . the gateway 30 enables the video data transmitted from the broadcaster component 20 to get through most firewalls . the gateway 30 receives connections from all broadcasters on the system and identifies the connections and the video streams available via those connection so that the viewer can select a particular video stream . the gateway utilizes connection pooling which allows the system to “ accept ” multiple connections in a separate thread for each new connection and pass it off to the appropriate request handler . an example of the gateway connection handling code was submitted on a cd as appendixd . txt . the gateway 30 also controls the permissions to each video stream . a log is kept of each viewing device and user account that viewed a particular thread , as well as other data associated with viewing the stream . the gateway 30 can write streams and other logged data to a database 50 for archiving , as is described in greater detail below . a cluster of gateway servers is beneficial because it allows the system 10 to do load management of the devices connected to the system 10 . the video streams may be spread out over the multiple gateway servers so that the workload is evenly distributed . preferably , the gateway checks the version of the broadcaster component to insure that the broadcaster 20 is running the most updated version of the software . if the broadcaster software is outdated , the gateway 30 sends a call to the broadcaster to reboot . upon reboot , the broadcaster component 20 connects to the backend system 70 to retrieve the update , as described above . the third main component of the system is the viewing device 40 . the viewing device 40 can be a mobile device such as a cell phone or a pda with wireless capabilities , as well as a remote personal computer . the viewing device 40 includes software that connects to the gateway 20 to query the gateway about available video streams as well as to retrieve and view selected streams . in the case of a cell phone or other wireless device the software is a midlet or wireless device application software that runs on any j2me enabled device , pocket pc , palm , symbian , smart phone , doja or brew or similar . the application works on j2me handsets ( gsm and cdma cellular networks ), microsoft smartphone 2003 , microsoft pocket pc mobile edition , palm treo , blackberry , and brew enabled cellular handsets , and others with compatible features or with minimal adaptation to the current invention . the viewing device &# 39 ; s main purpose is to display a video stream from a particular software broadcaster 20 . sample code from the midlet and wireless device application software were submitted on a cd as appendixf . txt . referring again to fig2 , the viewer 40 connects to the gateway 30 to query the gateway regarding available streams . a user can use the viewer to connect to the gateway , login to the system , and select a video stream that is available to the user . upon connection to the gateway 30 , the user account information is checked by the gateway for security clearance , permissions to individual video streams and for any other settings associated with the user account or the viewing device being used by the user . the gateway checks the settings by connecting to the backend system 70 which in turn accesses the settings database 80 to retrieve the user account information and settings . the user then uses an interface on the viewer 40 to choose a broadcaster device 20 and then to choose a particular video stream from a particular video capture device 15 on that broadcaster . an example of the viewer interface is shown in fig3 and 4 . once a video stream has been selected , the gateway 30 sends a call to the broadcasting component 20 to begin transmitting the video data . the video stream packet protocol comes down as 1 byte control , 4 bytes cast to integer for image payload size , and then the image payload bytes respectively . j2me methods , createimage for png and jpg frames or creatergbimage for inner frames are called respectively to display that image on the canvas . this process is repeated until eos ( end of stream ) or user aborts viewing . the system does not require the use of any third party video players such as windows media player , or real player , but will have selected compatibilities with such third party players . streams can be set as public or private streams with password protection for the private streams . once the user has authenticated to the gateway server 30 , and chooses to start broadcasting , the user is prompted to enter a 20 - character stream name and a password if it is a private stream . the stream name is a user - defined identifier used by clients to identify their stream . the stream name information and password are then transmitted to the gateway server component to notify it of its incoming video stream . until the user requested the stream no video data was transmitted to the gateway . this assures that the bandwidth is not wasted on video data that is not being viewed . furthermore , the user may adjust the settings of a particular broadcaster or particular stream to be set on an archive or record mode . in this case , shown in fig2 , the broadcaster continually sends the video data to the gateway which writes the video data to a database 50 . it is understood that the system could also be set up so that the gateway 30 relays the video data to the backend system 70 which records the video data in a separate database . in the archiving mode , the callback function for the video stream is called and the appropriate actions to resize the video from 320 × 240 to the appropriate frame size take place . it will then encode into the appropriate codec of the consumer &# 39 ; s choosing and then transmit that video data to the gateway server component . it continues this process until the consumer stops broadcasting , which in turn notifies the software gateway server component the video stream has finished . the description provided above indicates that a great degree of flexibility exists with the system and method . although the system and method of the present invention have been described with considerable detail with reference to certain preferred embodiments thereof , other embodiments are possible . therefore the spirit and scope of the appended claims should not be limited to the description of the preferred versions contained herein .