Patent ID: 12212789

DETAILED DESCRIPTION

As described above, there are many circumstances in which attendance at live events for some people who have an interest in participating is precluded. Barriers to attendance may include limited ticket availability, cost of tickets, inconvenient or inaccessible location, and others. The present disclosure proposes a system to break down these barriers by providing the live experience in the comfort of one's home by providing immersive media transmissions from the remote event to users who subscribe to access to the event as a premium addition to their regular cable television, satellite television, or video streaming service, e.g., as a pay-per-view program. These media transmissions are directly and interactively controllable by the subscriber across a variety of parameters.

An example of one implementation of such a system100is presented inFIG.1. In this example, a live event, e.g., a football, baseball, basketball, or soccer game, is taking place at an athletic stadium, arena, or other venue102. Other live programs, for example, music concerts, plays, musicals, operas performed in theaters, arenas, stadiums, and other venues can similarly be provided for subscription broadcast. The proposed implementation leverages the technology of spherical or omnidirectional (360 degree) video cameras, for example, an Insta360 Pro 2-360 VR Camera with 8K resolution, and robust backend media processing to provide a remote subscriber with a rich and immersive experience of the event.

Omnidirectional cameras have a field of view that covers approximately the entire sphere or, more typically, a full circle in the horizontal plane excluding top and bottom directions. Omnidirectional cameras include several wide angle and/or “fishbowl” lenses on multiple sides of the camera to capture images in every direction. The lenses of the omnidirectional camera are actuated simultaneously to capture pictures and video with an angle of just over 180 degrees, e.g., 220 degrees. These image frames are then converted into a 360-degree image object using software implemented on a processor chip to “stitch” the edges together by comparing the pixels in the edge regions of each picture and overlapping the edges in alignment to create a “seamless” image. Many available omnidirectional cameras can provide 4K and 8K resolution and include processing capabilities to internally perform the stitching process, as well as encode, compress, and format the images for distribution. A corresponding microphone collocated at or incorporated with each camera captures the ambient sound at the same location, and the audio data is included in the media data transmitted to the subscriber to enhance the remote viewing experience.

As shown inFIG.1, multiple omnidirectional cameras104a-dwith corresponding microphones may be placed in various locations throughout the venue102. The placement of the omnidirectional cameras104a-dmay correspond to different tiers of tickets sold to persons physically attending the event at the venue102. Remote subscribers may similarly be offered remote access to the live event at various pricing tiers corresponding to the physical locations of the cameras placed throughout the venue. For example, a first omnidirectional camera104arepresents a higher priced remote subscription ticket to the event as the images provided to a subscriber will correspond to a seat closest to the primary activity in the venue102, e.g., the 50-yard line of a football game, center court at a basketball game, or front row, center at a concert or play. A second omnidirectional camera104bis positioned further from the center of the venue102and at a higher vantage point. A subscription to the view of this second omnidirectional camera104bthe live event may be priced lower than the subscription to media stream from the first omnidirectional camera104a.

Additional cameras may be placed in other locations within the venue102. For example, a third omnidirectional camera104cmay be located at a far side or end seating section and a subscription to a “seat” at that vantage point may have a lower price than the media streams from the first and second omnidirectional cameras104a,104b. As a final example, a fourth omnidirectional camera104dmay be located in a least desirable seating area in the venue102, e.g., very high or far from the program or event (i.e., “nosebleed” seats) and the media stream from this location may be priced for subscription lower than the media streams from the other camera locations, in the same way that live attendance tickets are sold. The number and placement of cameras inFIG.1is merely exemplary. Additional omnidirectional cameras may be located in various other sections of the venue, e.g., in each section, every other section, in an array of sections, or in any other configuration. In another example, at a music festival with different stages, omnidirectional cameras may be located to capture each stage in the venue, for example, positioned at each sound mixing platform.

In this system100, the subscriptions for remote viewing of the program at the venue102are less costly than the corresponding live attendance tickets and provide similar views, sounds, and experience, as if the subscriber were actually attending the event in person. Further, unlike live attendance tickets which are limited in number, there is no limit to how many tickets or subscriptions can be sold for live remote viewing of the event through one or more of the spherical cameras104a-d.

Use of omnidirectional cameras104a-din each of multiple locations provides for a full, immersive view in any direction from the particular vantage point. The encoded, compressed video and audio feeds from each of the omnidirectional cameras104a-dis received at a venue control center106on-site at the venue102. The venue control center106typically provide at least a portion of the production management for a broadcast of the event from the venue102. For example, if the venue102is hosting a professional football game, the venue control center106will manage the camera feeds from within the venue102, switching between views at the direction of a production director, and overlay audio from commentators, to output a broadcast video feed for transmission over a broadcast channel. The broadcast video feed may be carried by one or more transmission systems, for example, a terrestrial antenna108, a satellite uplink system110, or a cable television uplink system112.

The video and audio data from the omnidirectional cameras104a-dis packaged at the venue control center106as raw media data without any editing or production decisions for transmission to a headend116. The raw media data may also include feeds from the regular broadcast production cameras at the event, as well as the audio channel from commentators (if any), and metadata related to the event used in the broadcast transmission, e.g., the status, timeclock, and scores related to an athletic event at the venue102. The raw media data may be transmitted to the headend116via the satellite uplink system110or the cable television uplink system112if adequate bandwidth is available. Alternatively, the raw media data may be transmitted via a wireless network, e.g., fixed wireless network or a Fifth Generation (5G) wireless telephony network for connection with a broadband communication network, such as the Internet114, to the headend116where initial processing activities may be performed on the raw media data.

For example, the headend116may provide additional compression of the raw media data to accommodate multiple subscriber platforms and bandwidth availability of subscribers. As another example, the headend116may process the raw media data for presentation through a virtual reality (VR) platform, e.g., a VR headset used by a subscriber. In addition, the headend116may package the raw media data within a custom framework designed for the type of event. For example, for a sporting event, the headend116may process the event metadata to provide an available graphic overlay for presentation with the video indicating event information such as play status, timeclock, and scores related to the sporting event.

The minimally processed raw media data may then be transmitted from the headend116to a plurality of geographically dispersed CDN server nodes120connected via the Internet114and forming a content delivery network (CDN). CDN server nodes120are usually deployed in multiple locations, often over multiple Internet backbones. Benefits of a CDN include reduced bandwidth costs, improved streaming, reduced page load times, and increased global availability of content. The number of nodes and servers making up a CDN varies, depending on the architecture, some reaching thousands of CDN server nodes120with tens of thousands of servers on many remote points of presence.

Requests for content are typically algorithmically directed to CDN server nodes120that are optimal in some way with respect to the location of the subscriber. When optimizing for performance, locations that are best for serving content to the subscriber may be chosen. This may be measured by choosing locations with the fewest hops to the subscriber location, the lowest number of network seconds away from the subscriber, or the highest availability in terms of server performance (both current and historical), to optimize delivery across local networks. When optimizing for cost, locations that are the least expensive may be chosen. In an optimal scenario, these two goals tend to align, as CDN server nodes that are close to the subscriber at the edge of the network may have an advantage in performance or cost.

By making multiple copies of the raw media data to populate it within the CDN, the raw media data is located spatially closer to subscribers, thereby reducing latency in provision of the multimedia presentation of the event to a subscriber, particularly when the subscriber makes requests for individualization in the multimedia presentation as described further herein. In addition to merely transmitting the media data from the venue live to a subscriber, the CDN server nodes120may be equipped with parallel instances of high speed, high throughput video processors to manipulate the video before final broadcast to the subscriber in response to modification requests from the subscriber as further described below.

When a subscriber selects a live event for transmission and presentation on a subscriber device, the geographically closest CDN server node120may transmit a processed subset of the raw media data of the live event to the subscriber as a streaming audio/video (A/V) file over the Internet114and ultimately to the subscriber via a wired network (e.g., coaxial cable, fiber optic, or digital subscriber line (DSL) telephony), a wireless network (e.g., a fixed wireless network, a line-of-sight microwave network, a satellite transmission network (e.g., STARLINK), or 5G wireless telephony). The streaming A/V file may be configured by account profile and real-time direction of the subscriber as further described herein. The streaming A/V file may be received by modem and router components managing data traffic on the local area network (LAN)122of the subscriber and ultimately transmitted to a set top box124connected to a television126or other multimedia A/V display device for presentation to the subscriber. The set top box124may include a data buffer130to ensure seamless presentation of the streaming A/V file and a decoder132operating in conjunction with a processor134to decode and decompress the streaming A/V file for presentation on the television126. Once the streaming A/V file is decompressed and decoded, it is transmitted to the television126via an output port136in a format suitable for presentation on the television126, e.g., high-definition multimedia interface (HDMI) format. The set top box124may further include local storage138on which the decoded streaming A/V file of the live event may be stored for repeat future playback if such permission is available to the subscriber.

In other example implementations, the streaming A/V file of the event may be delivered to other devices on the LAN122, for example, a personal computer, a laptop computer, a tablet computer, a smart phone, gaming console, a virtual reality device, etc. Playback applications on such devices harness the device processors to perform decoding and decompression operations. As such, the CDN server node120providing the streaming A/V file to the subscriber location may adjust the type, size, or quality of the streaming A/V file based upon the type of device identified as the playback device in addition to the service bandwidth at the subscriber location.

The subscriber may maintain control over the presentation of the live event, for example, through a remote-control device128interacting with the user input interface140of the set top box124to control the playback of the streaming A/V file. In some example implementations, if the streaming A/V file is being presented on one of the other devices on the LAN122as described above, such subscriber control of the presentation may be exercised through an interface of the playback application on the relevant device.

In addition to typical playback control of a streaming A/V file available to a subscriber, e.g., pause, rewind, fast forward, volume control, language selection, closed captioning and subtitle presentation, other control features may be made available to the subscriber specific to the playback of the content from the live event.FIG.2depicts some of these additional available controls in the context of a subscriber control graphic user interface (GUI)202available on the remote-control device128, a smartphone device200connected to the set top box124, e.g., via Bluetooth® communication protocol, or through a GUI menu on the television126operated by the remote-control device128. For example, the subscriber may be able to perform a seat or camera selection204location in the venue102from which the A/V presentation of the event will be provided. The seat/camera selection204may be limited to a single, prior selection by the subscriber when initially purchasing access to the event. In other instances, there may be options for a subscriber to purchase a multiple-seat or all-access pass, by which, the subscriber can switch the presentation between several cameras or all available cameras. In some implementations, the subscriber may purchase an ability to switch between the live raw camera footage of the used in the broadcast production of the event, e.g., of a live sporting event, as well as camera feeds from the omnidirectional cameras104a-dpositioned in seats throughout the venue102. In some example implementations, the seat/camera selection204may allow a subscriber to purchase an upgrade to additional seat locations or camera access during the course of the live event.

The subscriber control GUI202next indicates an ability for horizontal panning control206by the subscriber. Recall that the ticketed cameras in the audience section of the venue102are omnidirectional video cameras104a-d, providing live images 360 degrees around the omnidirectional video cameras104a-d. The omnidirectional video cameras104a-dalso have a wide vertical field of view which allows for vertical panning control208. When the subscriber selects either horizontal panning control206or vertical panning control208, the set top box124communicates the request to the CDN server node120providing the streaming A/V files. The CDN server node120then further processes the raw media files to select or focus the presentation formatted for the streaming A/V file to be limited to the chosen direction of the panning request. The processing algorithms at the CDN server node120may “move” the image seamlessly in response to the panning request through serial selection of areas of the video frames in the raw media data. By leveraging the data buffer130on the set top box124, the video presented may pan in any direction in response to subscriber input and may be presented seamlessly, i.e., without any hard frame brakes, although a small amount of lag may occur due to the time needed for processing the raw image data at the CDN server node120.

The subscriber control GUI202next indicates an ability for zoom control210by the subscriber. Similar to the panning control described earlier, due to the high resolution of the omnidirectional video cameras104a-d(e.g., 4K to 8K), good quality “magnification” of areas of the video can be output by a processing algorithm at the CDN server node120responsive to a zoom control210input from the subscriber received over the Internet from the set top box124. As with panning, the processing algorithms at the CDN server node120may zoom in and out of the video frames seamlessly in response to the zoom request through serial selection of areas of the video frames in the raw media data. By leveraging the data buffer130on the set top box124, the video presented may zoom in and out in response to subscriber input and may be presented seamlessly, i.e., without any hard frame brakes, although a small amount of lag may occur due to the time needed for processing the raw image data at the CDN server node120.

The subscriber control GUI202further indicates sound source control212, which is a feature for selecting between multiple available sound sources. For example, available sound selection may be between microphone input at one of the omnidirectional video cameras104a-dcapturing live sound and crowd noise at the ticketed seat, mixing board sound, for example, at a music concert, and production sound, e.g., from commentators in a production booth at a live sporting event. One or more of these sound selection options may be available in the raw media data for presentation to an individual subscriber by the CDN server node120.

Additional functionality in example implementations of the subscriber control GUI202may include a picture-in-picture option214through which the subscriber may be allowed to present different camera views from the event in windows of the same presentation screen. The CDN server node120could be directed by such a subscriber selection to construct a streaming A/V file with two (or more) video streams from the raw media data superimposed over each other. The subscriber control GUI202may also include a scoreboard option216in which the CDN server node120may be directed to construct a visual data overlay representative of real-time statistics of a live sporting event from metadata in the raw media data. In some implementations, the subscriber may even be able to select desired data for presentation from a number of choices and also the format and location of the scoreboard overlay in the streaming A/V file.

A further functional option represented in the subscriber control GUI202is a chat or social interaction feature218. Such a feature might enable an onscreen chat feature through which a subscriber may communication and interact with other subscribers virtually attending the same live event. Such a feature may be handled locally by the set top box124communicating with other subscriber set top boxes, either via the Internet114or over the closed cable television or satellite television network. Connection to or through other social media platforms for communication options between subscribers is also contemplated.

The ability to make such selections as indicated in the subscriber control GUI202ofFIG.2may be based upon a subscriber profile300as represented inFIG.3, e.g., whether the “ticket” purchased by the subscriber for the “seat” at the live event includes such additional functionality. For example, a base “ticket” for remote access to the live event may include the video images from the sole omnidirectional video camera104a-dat the purchased seat location and ambient sound from the microphone at that location, while additional features such as other sound sources, camera feeds, or other controls could be offered to and purchased by the subscriber as premium options and added as permissions to the subscriber profile300for the live event, or even to a “season subscription” to a series of related events.

An example implementation of a data structure for such a subscriber profile300may include a network connection profile302, a subscription profile304, and a real-time control profile306. The network connection profile302may log information about the communication network established with or available to the subscriber. Such information may include maximum and minimum data speeds and bandwidth, effects of time of day on speed and bandwidth, LAN speed and bandwidth, and type of user device. This information may be used to inform the CDN server about the best level of media quality to package from the raw media data to send to the subscriber to ensure a quality and seamless presentation experience for the live event.

The subscription profile304may catalog the live event “tickets” the subscriber has purchased. For example, as shown inFIG.3, the subscribers has purchased tickets to Event A308and Event B312. The ticket permissions310and314both available for and actually purchased for each of Event A308and Event B312may differ from each other. For example, Event A308may be a sporting event and therefore offer additional options for ticket permissions310such as announcer commentary, end zone and flyover camera, and scoreboard information that would not be applicable to Event B312, which is a rock concert. Event B312may offer ticket permissions314such as audio from the soundboard mix unavailable from Event A308. Similarly, the subscriber may have purchased tickets at different premium levels for each of Event A308and Event B312. For example, the subscriber may choose access to a single, upper-level seat for the sporting event, but wants access to the scoreboard, but choose to purchase a ticket upgrade for front row seats to the concert and the soundboard mix. Thus, the ticket permissions310and314may differ substantially from each other for each live event remote ticket purchased.

Another example portion of the subscriber profile300is the real-time control profile306. The real-time control profile306may include certain options as default and track other options as set for the live event by the subscriber in real-time. One example option may be seat/camera selection316, which may default to the actual virtual seat location purchased, but can be changed by the subscriber to other seats or cameras during the event broadcast and these changes are recorded in the subscriber profile300to ensure that the desired view is being accessed for presentation from the raw media data. Other example options may be zoom selection318and pan selection320based upon the subscriber input through remote control at the set top box. In some implementations, these selections may return to default camera angles or magnification after a predetermined period of time or upon the occurrence of a trigger, for example, play in a sporting event has moved to another location on the field away from the location of the pan selection. By periodically returning to default positions at appropriate times, processing power at the CDN server node may be decreased periodically to manage other tasks. As indicated inFIG.3, audio selection322, e.g., between ambient noise at the seat location or a sound board mix, is also an important field in the subscriber profile300to ensure that the desired audio is being accessed for presentation from the raw media data.

FIG.4depicts an example process400for management and distribution of raw media data at a CDN server node. In a first operation402, the CDN server node receives raw media data of the live event from the headend. As noted above, the headend may perform some preprocessing and packaging of the raw media data, but the headend is primarily a distribution hub for populating the CDN. Next, in a second operation404, the CDN server node delivers customized presentations of live event media data in the form of streaming A/V content files over a communication network such as the Internet to multiple subscriber set top boxes pursuant to individual subscriber profiles that are specific to the live event.

The remaining steps for preparation and delivery of the live subscription content to a first subscriber is depicted, for example, in the left-side path of the process400inFIG.4. In receiving operation406, the CDN server node receives a request from the first subscriber set top box for a first alternate presentation of a live event available in raw media data received by the CDN server node from the headend. As described above, the request for an alternate presentation could be a request to pan the view in a certain direction, to zoom in or out, to change the audio channel, or any other request that would alter the presentation for the first individual subscriber. Next, in processing operation408, the CDN server node processes the raw media data to produce a first alternate presentation of media data, e.g., in a first streaming A/V file, pursuant to the first subscriber request. Then, in transmitting operation410, the CDN server node, transmits the first alternate presentation of the media data of the live event, i.e., by transmitting the first streaming A/V file, directly to the first subscriber set top box over the communication network.

The right-side path of the process400inFIG.4depicts steps for preparation and delivery of the live subscription content. In receiving operation412, the CDN server node receives a request from the second subscriber set top box for a second alternate presentation of a live event available in the raw media data received by the CDN server node from the headend. The delivery of the live event content to the second subscriber occurs simultaneously with the delivery of the live event content to the first subscriber. As described above, the request for an alternate presentation could be a request to pan the view in a certain direction, to zoom in or out, to change the audio channel, or any other request that would alter the presentation for the second individual subscriber. The request from the second subscriber may be, and likely is, different than the request from the first subscriber. Next, in processing operation414, the CDN server node processes the raw media data to produce a second alternate presentation of media data, e.g., in a second streaming A/V file, pursuant to the second subscriber request. Notably. The streaming A/V file prepared for the second subscriber will differ from the streaming A/V file prepared for the first subscriber. Then, in transmitting operation416, the CDN server node, transmits the second alternate presentation of the media data of the live event, i.e., by transmitting the second streaming A/V file, directly to the second subscriber set top box over the communication network.

An exemplary computer system500implementing the processes performed as part of the headend or content delivery network for distribution of the live event media to a subscriber as described above is depicted inFIG.5. The computer system500, for example, may be in the form of any of a server computer, a virtual machine instantiated on a server, a distributed computer, an Internet appliance, or other computer devices, or combinations thereof, for example, in the form of a content distribution network of computer servers as described herein. Alternatively, the computer system500may also be understood as including the basic components of a special purpose computer device (e.g., a set-top cable or satellite television receiver box used by the subscriber), or it may be one or more of a personal computer (PC), a workstation, a notebook or portable computer, or other computing device, with internal processing and memory components as well as interface components for connection with external input, output, storage, network, and other types of peripheral devices, particularly configured to perform the functions described herein. Internal components of the computer system500inFIG.5are shown within the dashed line and external components are shown outside of the dashed line. Components that may be internal or external are shown straddling the dashed line.

In any implementation described herein, the computer system500includes a processor502and a system memory506connected by a system bus504that also operatively couples various system components. There may be one or more processors502, e.g., a single central processing unit (CPU), or a plurality of processing units, commonly referred to as a parallel processing environment (for example, a dual-core, quad-core, or other multi-core processing device). The system bus504may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, a switched fabric, point-to-point connection, and a local bus using any of a variety of bus architectures. The computer system500may include a power source505, e.g., either or both an electrical port for connecting to a AC/DC inverter for constant power or a battery for working without a connected power source or for provision of backup power in a case of general or local power outage or emergency.

The system memory506includes read only memory (ROM)508and random access memory (RAM)510. A basic input/output system (BIOS)512, containing the basic routines that help to transfer information between elements within the computer system500, such as during start up, is stored in ROM508. A cache514may be set aside in RAM510to provide a high-speed memory store for frequently accessed data.

A storage drive interface516may be connected with the system bus504to provide read and write access to a data storage drive518, e.g., a magnetic hard disk drive or a solid-state drive for nonvolatile storage of applications, files, and data. A number of program modules and other data may be stored on the data storage drive518, including an operating system520, one or more application programs522, and related data files524. In particular, a media processing application526, or algorithms or modules thereof, for implementing video and audio processing of live event media events for presentation to a customer pursuant to the customer subscription and real-time requests may be stored on the data storage drive518. In addition, audio and image/video files528may be stored in the data storage drive518. Further, a customer subscription and request data structure530may be stored in the data storage drive for access by the media processing application526. Note that the data storage drive518may be either an internal component or an external component of the computer system500as indicated by the data storage drive518straddling the dashed line inFIG.5.

In some configurations, there may be both an internal and an external storage drive. For example, one or more external storage drives534may be connected with the system bus504via an external storage interface532to provide read and write access to the external storage drive534initiated by other components or applications within the computer system500. In some implementations, external storage drives may also be connected to the system bus504via a serial port interface540further described below. Exemplary external storage drive534may include a magnetic disk drive for reading from or writing to a removable magnetic disk, tape, or other magnetic media, and/or an optical disk drive for reading from or writing to a removable optical disk such as a CD-ROM, a DVD, or other optical media. The external storage drive534and any associated removable computer readable media may be used to provide nonvolatile storage of computer readable instructions, data structures, program modules, and other data for the computer system500.

The computer system500may include a display device538, e.g., a display screen, a monitor, a television, or a projector, or other type of presentation device connected to the system bus504via an interface, such as a video adapter536or a video card. The computer system500may also include other peripheral input and output devices, which are often connected to the processor502and system memory506through the serial port interface540that is coupled to the system bus504. Input and output devices may also or alternately be connected to the system bus504by other interfaces, for example, a universal serial bus (USB), an IEEE 1394 interface (“Firewire”), a parallel port, or a game port, or wirelessly e.g., using a Bluetooth® connection interfacing with the serial port interface540or system bus504. A user may enter commands and information into the computer system500through various input devices including, for example, a keyboard542and pointing device544, for example, a computer mouse. Other input devices may include, for example, a microphone546and a digital video camera548, or (not shown) a digital camera, a joystick, a game pad, a tablet, a touch screen device, a satellite dish, a scanner, or a facsimile machine.

Output devices may include one or more loudspeakers550for presenting the test questions audibly to a student or display device538for presenting instruction to a student. Audio devices, for example, loudspeakers550or a microphone546, may alternatively be connected to the system bus504through an audio card or other audio interface (not shown). Other output devices may include, for example, a printer552, or (not shown) a plotter, a photocopier, a photo printer, a facsimile machine, and a press. In some implementations, several of these input and output devices may be combined into single devices, for example, a printer/scanner/fax/photocopier. It should also be appreciated that other types of computer-readable media and associated drives for storing data, for example, magnetic disks or flash memory drives, may be accessed by the computer system500via the serial port interface540(e.g., USB) or similar port interface.

The computer system500may operate in a networked environment using logical connections through a network interface554coupled with the system bus504to communicate with one or more remote devices. The logical connections depicted inFIG.5include a local area network (LAN)558and a wide area network (WAN)562. Such networking environments are commonplace in home networks, office networks, enterprise wide computer networks, and intranets. These logical connections may be achieved by a network access device556coupled to or integral with the computer system500. As depicted inFIG.5, the network access device556may operate as both a wireless router for directing traffic on the LAN558or may connect with a switch or hub (the physical structure of the LAN558), either wired or wireless, internal or external, to connect with remote devices, e.g., a remote computer560, similarly connected on the LAN558. The remote computer560may be another personal computer, a server, a client, a peer device, or other common network node, and typically includes many or all of the elements described above relative to the computer system500.

To connect the computer system500with a WAN562, the network access device typically includes a modem for establishing communications over the WAN562. In some implementations, the modem for external network connections and the router for local network connections may be separate components. Most often the WAN562may be the Internet. In some instances the WAN562may be a large private network spread among multiple locations, for example, a content distribution network, a cable television and data distribution network, a fixed wireless network, or a virtual private network (VPN). The modem component of the network access device556may be a telephone modem, a high-speed modem (e.g., a digital subscriber line (DSL) modem), a cable modem, or similar type of communications device. The network access device556with modem is connected to the system bus504via the network interface554. In alternate implementations the network access device556may be connected via the serial port interface540. It should be appreciated that the network connections shown are exemplary and other means of and communications devices for establishing a network communications link between the computer system500and other devices or networks may be used.

The terms “module,” “program,” and “engine” may be used to describe one or more of a hardware component, a software process, or a combination of both, that implement logical operations and/or algorithms to perform a particular function. It will be understood that different modules, programs, and/or engines refer to discrete components of software code that each may perform independent subroutines, tasks, or calculations by implementing one or more algorithms and together perform the functions of the larger application. Modules, programs, or engines may be called upon instantiated by one or more applications, services, code blocks, objects, libraries, routines, scripts, application program interfaces (API), functions, etc. When incorporating software, the modules, programs, and engines may encompass individual or groups of executable files, data files, libraries, drivers, scripts, database records, etc. The logical operations may be implemented as a sequence of processor implemented steps executing in one or more computer systems and as interconnected machine or circuit modules within one or more computer systems. Likewise, the descriptions of various component modules may be provided in terms of operations executed or effected by the modules. The resulting implementation is a matter of choice, dependent on the performance requirements of the underlying system implementing the described technology. Furthermore, logical operations may be performed in any order, unless explicitly claimed otherwise or a specific order is inherently necessitated by the claim language.

In some implementations, articles of manufacture are provided as computer program products that cause the instantiation of operations on a computer system to implement the procedural operations. One implementation of a computer program product provides a non-transitory computer program storage medium readable by a computer system and encoding a computer program. It should further be understood that the described technology may be employed in special purpose devices independent of a personal computer.

Connection references (e.g., attached, coupled, connected, and joined) are to be construed broadly and may include intermediate members between a collection of elements and relative movement between elements unless otherwise indicated. As such, connection references do not necessarily infer that two elements are directly connected and in fixed relation to each other. The exemplary drawings are for purposes of illustration and the dimensions, positions, order and relative sizes reflected in the drawings attached hereto may vary.

The above specification, examples and data provide a complete description of the structure and use of exemplary implementations as recited in the claims. Although various implementations have been described above with a certain degree of particularity, or with reference to one or more individual implementations, other implementations using different combinations of elements and structures disclosed herein are contemplated, as other iterations can be determined through ordinary skill based upon the teachings of the present disclosure. It is intended that matter contained in the above description and shown in the accompanying drawings shall be interpreted as illustrative of particular implementations and not limiting. Changes in detail or structure may be made without departing from the basic elements recited in the following claims.