RELATED APPLICATIONSThe disclosed system and operating method are related to subject matter disclosed in the following co-pending patent applications that are incorporated by reference herein in their entirety: (1) U.S. patent application Ser. No. ______, entitled “Emulator-Enabled Network Connectivity to a Device”, attorney docket no. 1003.P002US. (2) U.S. patent application Ser. No. ______, entitled “Network Interface to a Video Device”, attorney docket no. 1003.P004US. (3) U.S. patent application Ser. No. ______, entitled “Video Receiver/Recorder with Computer Interface”, attorney docket no. 1003.P005US. (4) Computer System Capable of Executing a Remote Operating System”, attorney docket no. 1003.P006US. (5) U.S. patent application Ser. No. ______, entitled “Transcoding Media System”, attorney docket no. 1003.P007US. (6) U.S. patent application Ser. No. ______, entitled “Communication Architecture Utilizing Emulator Interface”, attorney docket no. 1003.P008US. (7) U.S. Patent application Ser. No. ______, entitled “Server in a Media System”, attorney docket no. 1003.P009US.[0001]
BACKGROUND OF THE INVENTIONIn many industries and applications, highly complex devices or appliances exist that perform a single function or only a few functions but have processing, storage and display capabilities that could greatly extend functionality if exploited. Examples of these devices and appliances include televisions, digital video cassette recorders, digital versatile disk players, audio receivers, point-of-sale terminals, process controllers and valves, vending machines, alarm systems, home appliances, and many more. Computational power and capabilities of the devices increases as technology evolves and additional software solutions become available, improving user and customer services and experiences with successive product generations. The devices and appliances typically have a dedicated function and unique architecture and, generally, are not designed for interaction with other device or model types, or even with others of the same device.[0002]
Technological advances have created availability of a vast amount of information that is accessible by computer networks such as intranets, local area networks, wide area networks, and the internet. The networks enable easy access to information throughout the world and facilitate information delivery world-wide in the form of text files, data, motion pictures, video clips, web pages, flash presentations, shareware, computer programs, command files, and other information. One obstacle to access and delivery of information is lack of interoperability and resource management among devices.[0003]
SUMMARY OF THE INVENTIONIn accordance with some embodiments, an apparatus for connecting a computer bus to a network comprises a network interface capable of coupling to an external network and an emulator coupled to the network interface. The emulator comprises a processor control block that can emulate a host processor coupled to the computer bus and a device control block that can emulate a device coupled to the computer bus.[0004]
In other embodiments, an interface couples a network to a computer bus that communicates bus data and control signals between a host and one or more devices coupled to the bus. The interface comprises a network controller capable of coupling to an external network and an interface controller coupled to the network controller and capable of coupling to the computer bus. The interface controller includes an emulator that emulates bus data and control signals of the host and at least one of the devices.[0005]
In some embodiments, an apparatus connects a computer bus to a network with the computer bus for communicating between a host processor and one or more devices. The apparatus comprises a network interface capable of coupling to an external network and an emulator coupled to the network interface and capable of emulating the host processor in device interactions and emulating a device in host interactions.[0006]
In further embodiments, an apparatus connects a computer bus to a network with the computer bus communicating between a host processor and one or more devices. The apparatus comprises a network interface capable of coupling to an external network and an emulator coupled to the network interface. The emulator can reformat bus data and control signals into a native device format, receives host information in the native format from the host processor and network information in a format different from the native format from the external network. The emulator can also seamlessly alternatively supplying the host information and the network information in the native format to the device.[0007]
In other embodiments and aspects, a method of supplying information from a network to a computer bus comprises communicating with the computer bus, emulating a host processor coupled to the computer bus, and emulating a device coupled to the computer bus.[0008]
BRIEF DESCRIPTION OF THE DRAWINGSThe features of the described embodiments believed to be novel are specifically set forth in the appended claims. However, embodiments of the invention relating to both structure and method of operation, may best be understood by referring to the following description and accompanying drawings.[0009]
FIG. 1 is a schematic block diagram showing an example of a device interaction model that can utilize an emulator interface.[0010]
FIG. 2 is a schematic block diagram that illustrates an example of a suitable emulator interface for connecting a device or bus to a network.[0011]
FIG. 3 is a detailed system block diagram showing an example of a device that utilizes an emulator interface.[0012]
FIG. 4 is a detailed block diagram that depicts functional blocks of an emulation circuit that is suitable for usage in the emulator interface of FIGS.[0013]2 and/or3.
FIG. 5 is a component diagram showing various system, hardware, and software components of a server for usage with an emulator interface.[0014]
FIG. 6 is a use case diagram that illustrates functionality of an audiovisual system that uses an emulator interface.[0015]
FIG. 7 is a use case diagram that illustrates functionality of an audiovisual system that uses an alternative embodiment of an emulator interface.[0016]
FIG. 8 is a detailed state diagram illustrating an example of functionality of a suitable emulator.[0017]
FIG. 9 is a schematic block diagram showing one example of an audiovisual system that includes emulation.[0018]
FIG. 10 is a schematic block diagram illustrating another implementation of an audio-visual system that includes emulation to extend rendering functionality.[0019]
FIG. 11 is a schematic mixed block and pictorial diagram that depicts an example of an application for an emulator.[0020]
FIG. 12 is a schematic block diagram showing various connections that can be made between an emulator and a communication system that includes a source, a sink, and a pathway for communicating from the source to the sink.[0021]
FIG. 13 is a schematic block diagram illustrating an information hallway application of an emulator that is configured to function as part of a cable/DSL gateway.[0022]
FIG. 14 is a schematic block diagram showing an example of a multiple-media receiver/recorder comprising an emulator that functions as an input selector or media switch.[0023]
DETAILED DESCRIPTIONWhat are desired are systems, devices, and methods that enable intercommunication and information sharing among a computer system and myriad other devices and appliances.[0024]
An Ethernet to internal interface gives network connectivity to an otherwise isolated device. In one example the interface can be used to attach a storage device to a network. The interface can emulate an existing device, for example to add network connectivity without change to the device. The emulator interface can emulate a device at a logical level as well as a physical level. The internal bus may be a nonstandard interface or any standard interface configuration including Integrated Device Electronics (IDE), audio/visual (A/V), advanced technology attachment packet interface (ATAPI), Small Computer Systems Interface (SCSI), or other buses. Signals can be supplied by the Ethernet and transposed to be compatible with the disc format so that no modifications to a rendering device, such as an MPEG decoder, are necessary.[0025]
The interface enables a variety of implementations including a standalone storage device, for example. CD, DVD, hard drives, with network connectivity, a printer that prints directly from the Ethernet connection.[0026]
The interface can function as a server for content over a network-attached storage device. In other applications, the interface can attain network connectivity in a device that formerly did not have connectivity using an existing interface, and supply content in a format that the rendering device already natively supports.[0027]
Referring to FIG. 1, a schematic block diagram shows an example of a[0028]device interaction model100 that can utilize an emulator interface. Thedevice interaction model100 defines general interactions between many different types of devices and controllers. Various devices and controllers may be computers, work-stations, laptop computers, calculators, palm computers, mobile telephones, televisions, electronic picture frames, video cassette recorders, compact disk (CD) or digital versatile disk (DVD) players and recorders, CD-ROM drives (R/RW), jukeboxes, karaoke devices, camcorders, set-top boxes, audio systems, MP3 players, still-image cameras, remote control devices, control panels, and any other control devices and information storage, retrieval, and display devices. Thedevice interaction model100 includes asource110, asink112, and acontroller114. A particular device or controller can be configured variously as any of thesource110, thesink112, and thecontroller114. Other interactions models can be used. Some may omit or integrate thecontroller114. A particular device or controller can function as any of thesource110, thesink112, or thecontroller114 in a particular interaction. A particular device or controller can function as more than one of thesource110, thesink112, and thecontroller114 in a particular interaction or configuration.
The[0029]source110 can be any device capable of supplying information or content of any type including audio, video, or any type of coded information. In various embodiments, thesource110 can supply content of one or more types under various video standards such as Motion Pictures Expert Group (MPEG2, MPEG4), picture standards including Joint Photographic Experts Group (JPEG), and audio standards including MPEG-1 Audio Layer-3 (MP3). Thesource110 also can supply content under other standards such as Windows Media Architecture (WMA), bitmaps (BMP), National Television Standards Committee (NTSC), Phase Alteration Line (PAL), Sequential Couleur avec Memoire (SECAM), Advanced Television Systems Committee (ATSC), video compact disk (VCD) and S-VCD standards, Power Point (PPT), karaoke functions, features such as MP3 or progressive scan display, and emerging new functionality.
The[0030]controller114 initiates content transfer by configuring thesource110 and sink112 so that selected content flows from thesource110 to thesink112 using asuitable transfer protocol116. Supportedtransfer protocols116 include one or more of broadband, IEEE-1394 high-speed serial bus, International Electrotechnical Commission (IEC-61883) Standard that describes: Isochronous Plug Control Registers, Connection Management Protocol (CMP), Function Control Protocol (FCP), Common Isochronous Packet (CIP) headers, Hypertext Transfer Protocol (HTTP GET/PUT/POST), Real-time Transport Protocol (RTP), Transmission Control Protocol/Internet Protocol (TCP/IP),IEEE 802 wireless standards, and others.
In various embodiments, the[0031]sink112 can be any device capable of rendering content.Typical sink112 devices include MPEG decoders, DVD recorders, televisions, with an embedded MPEG decoder, personal video recorders (PVRs), audio systems and other devices. In the illustrativedevice interaction model100, content from acontent source110 can be selected through thecontroller114 based on rendering capabilities of thesink112 and transferred from thesource110 to thesink112 for rendering.
The emulator interface can emulate an existing device, functioning in any capacity as a[0032]source110,sink112, orcontroller114, for example to add network connectivity without change to the device. The emulator interface can emulate a device at a logical level as well as a physical level.
In some embodiments, the emulator interface can analyze content communications to determine supported content formats, determine the format of presented content, and reformat or transcode the content to place the presented content in the supported format. In a particular example, the emulator interface can monitor traffic on a bus (for example, an IDE bus) and analyze the traffic for commands and responses to determine the supported format. The emulator interface can then convert content received from an external source in an unsupported format to the supported format.[0033]
Referring to FIG. 2, a schematic block diagram illustrates an example of a[0034]suitable emulator interface200 for connecting adevice202 orbus204 to anetwork206. Theillustrative emulator interface200 comprises aninterface controller210 that is capable of coupling theemulator interface200 to thedevice202 orbus204, annetwork controller212 that is capable of coupling theemulator interface200 to thenetwork206, and aprocessor214. Theprocessor214 is capable of executing various processes, methods, or programs to transfer information between thenetwork206 and thedevice202 orbus204 and to perform a wide variety of other functions. Theemulator interface200 may include other optional functional blocks such as avolatile memory216 andnonvolatile memory218 that may be coupled to theinterface controller210. Thevolatile memory216, for example synchronous dynamic random access memory (SDRAM), may be used to store information such as temporary control information, transferring data in various formats, and others. Thenonvolatile memory218, for example a bootstrap read-only memory (ROM), may be used to store executable function code such as a bootstrap load program and other operational functions, and operating parameters.
A[0035]network connector220, for example a RJ45 connector, can couple thenetwork controller212 to thenetwork206.
The[0036]interface controller210 can also support additional communication links. In the illustrative example, theinterface controller210 has a radiofrequency communication link222 and a universal serial bus (USB)link224.
The[0037]emulator interface200 integrates network communication capabilities into adevice202 or into a system that utilizes thebus204. In various embodiments, theemulator interface200 can support 10/100 Ethernet media access control (MAC) protocol, serial ports, parallel ports, memory controllers, direct memory access (DMA), and parallel I/O. In some examples, theemulator interface200 can interface with other processors, devices or components via a register interface or shared RAM interface.
The[0038]processor214 can be any suitable processor, microprocessor, controller, microcontroller, central processing unit, digital signal processor, state machine, or the like. One example of a suitable processor is a chip-internal Reduced Instruction Set Computer (RISC) such as a selected member (for example, ARM7, ARM9, ARM9E, ARM10) of the Advanced RISC Machines (ARM) from Advanced RISC Machines (ARM) Ltd., Cambridge, UK. The ARM7 processor includes a RISC stand-alone core, instruction/data cache, write buffer, and pre-fetch control (none shown) and has an internal bus structure that enables program execution from cache while the internal bus is performing DMA data transfer operations to efficiently handle communication operations.
In some embodiments, the[0039]Network controller212 has two modules, and network front end (not shown) and a media access control (MAC) module (not shown), for example for both 10 and 100 Mbit applications. The network front end maintains the MAC interface and includes transmit and receive first-in-first-out (FIFO) buffers, DMA interface logic, and control/status registers for MAC, transmitter, and receiver. In one example, the transmit FIFO and receive FIFO have capacities of 128 bytes and 2048 bytes, respectively. The transmit FIFO allows a portion of the transmit buffer to remain on the FIFO while collisions occur on the network medium, avoiding multiple buffer fetches from memory. The receive FIFO is large to allow an entire frame to be received and wait in the FIFO during byte count analysis to determine an optimum buffer description for DMA transfer.
The MAC module interfaces between the network front end and I/O pins, and supports ENDEC (10 Mbit) and Media Independent Interfaces (MII) under firmware control. Functions performed by the MAC module include 100 Mbit Ethernet MAC, MII management function, address filtering, statistics gathering, and an optional 100 Mbit physical coding layer.[0040]
The[0041]interface controller210 supplies an interface between theemulator interface200 and adevice202 orbus204, supporting one or more of five interface types, for example including an IEEE 1284 host port, a 16-bit shared RAM interface, an 8-bit shared RAM interface, a 16-bit FIFO interface, and an 8-bit FIFO interface. The IEEE 1284 mode supports commercial network printer server applications as a bridge between a local area network (LAN) and up to four external devices using the 1284 Parallel Port interface. The shared memory interface supplies up to 64K of shared RAM between theemulator interface200 and abus204. The FIFO interface supplies a data streaming FIFO interface between theemulator interface200 and thebus204 ordevice202. In an illustrative example, the FIFO interface supports two 32-bit FIFOs, one for each data direction.
The[0042]interface controller210 contains a functional element that operates as a memory controller (not shown) to interface to memory devices such as flash, static Random Access Memory (RAM), dynamic RAM (DRAM), EEPROM, and others. The memory controller functions in cooperation with a bus controller (not shown) to transfer data between thebus204 and a memory. The memory controller typically supports various types of DRAM including fast page mode (FD) DRAM, synchronous DRAM (SDRAM), and EDO DRAM. Generally a single application utilizes the same style of DRAM.
The[0043]interface controller210 may include a bus controller (not shown) that moves data to and from thebus204. In some embodiments, the bus controller supports dynamic bus sizing for selected logical addresses. The bus controller can perform system bus arbitration for interfaces with an external bus master or CPU. The bus controller operates in conjunction with the memory controller to accessdevices202 using thebus204.
In some embodiments, the[0044]interface controller210 may also support a serial controller (not shown). For example, theinterface controller210 may include two independent universal asynchronous/synchronous receiver/transmitter (UART) channels, each with a programmable bit-rate generator. The UARTs realize relatively low-speed information transfer between theemulator interface200 and adevice202 using a standard protocol.
In some embodiments, the serial controller of the[0045]interface controller210 can support a High Level Data Link Control (HDLC) protocol that forms a data link layer for wide area networking (WAN) models such as Frame Relay, ISDN, and SDLC. In the HDLC mode, theinterface controller210 uses a zero insertion/deletion “bit-stuffing” protocol to transmitlayer2 data frames over point-to-point links, broadcast networks, packet networks, or circuit switch networks with CRC field error detection.
In some embodiments, the serial controller of the[0046]interface controller210 can support a Serial Peripheral Interface (SPI) protocol that defines a full-duplex, synchronous, character-oriented data channel between master and slave devices using a four-wire interface. The master interface operates in broadcast mode with the slave interface activated using a select signal. The SPI operation mode converts simple parallel/serial data to stream serial data between memory and a peripheral.
In various embodiments, the[0047]interface controller210 may also include one or more components including programmable timers with interrupt support, programmable bus-error timers, programmable watch-dog timers, programmable parallel I/O ports with interrupt support, a system priority interrupt controller, and a controller for other miscellaneous system control functions.
Referring to FIG. 3, a detailed system diagram shows an example of a[0048]device300 that utilizes anemulator interface306. In one example, thedevice300 is a video player and/or recorder such as a Digital Versatile Disc (DVD) player or DVD player/recorder. Thedevice300 comprises acontent source302, acontent sink304, and anemulator interface306. Thecontent source302 supplies information or media content for presentation on thecontent sink304.
In some examples, the[0049]content source302 can be an audio and/or video device subsystem such as a DVD drive, CD drive, or CD-ROM drive (CD-R, CD-R/W). In a specific example, thecontent source302 may include an integrated DVD/CD digital signal processor (DSP), servo and block decoder with advanced error detection and correction schemes for improved playability.
The[0050]content sink304 is typically a device that processes the content for presentation, for example, a rendering device. In one example, thecontent sink304 can be an MPEG decoder that decodes audio and/or video content for display. In a particular example, thecontent sink304 may include an integrated DVD backend that combines an MPEG-2 video decoder; 24-bit audio digital signal processor (DSP); 32-bit reduced-instruction-set-computer (RISC) system CPU. Theparticular content sink304 may further include an advanced 32-bit on-screen display (OSD) with hardware 2D graphical user interface (GUI) acceleration for superior user-interface performance and quality; and PAL/NTSC video encoder with a progressive scan option for high-definition TV (HDTV)-ready systems. Major audio features in the specific example include support for multi-channel MPEG, Dolby Digital and Digital Theatre Systems (DTS), as well as High Definition Compatible Digital (HDCD™) and MP3 decode, in addition to post processing functions such as karaoke and 3D sound.
In the[0051]illustrative device300, thecontent sink304 is coupled to amemory330. Theillustrative content sink304 comprises several functional blocks including asink processor332, acommunications port334 such as a serial port, and adisplay panel336. Thesink processor332 can be any type of suitable processor, microprocessor, controller, microcontroller, digital signal processor, state machine, central processing unit, or the like. Thecommunications port334 may typically receive control signals from a communication device (not shown) such as a remote control unit. Thedisplay panel336 typically includes various types of user interface controls such as an alpha-numeric pad, volume control buttons, switches, pads, joysticks, or other function selection keys.
In the[0052]illustrative device300, thecontent source302 communicates with thecontent sink304 via acommunication bus338 that carries data signals, control signals, chip select signals, interrupt request signals, and the like. In various systems, thecommunication bus338 may be a nonstandard bus or may be one or more of several various standard, typically parallel, buses from among Integrated Device Electronics (IDE), audio/visual (AN), advanced technology attachment packet interface (ATAPI), Small Computer Systems Interface (SCSI), or other buses. In some embodiments, thecommunication bus338 may be a physical interface to the media access control (MAC) module.
The[0053]emulator interface306 can be coupled to thecommunication bus338 to communicate with a network and send network information to the sink and/or source in a manner that emulates a source-sink interaction. Although terminology ofcontent source302 andcontent sink304 indicate a particular direction of content transfer, in various device implementations and/or interactions either thecontent source302 or thecontent sink304 may be an ultimate receiver of content. For example, adevice300, a DVD player, may include an MPEG decoder as acontent sink304,emulator interface304 can manage content selection and communication direction so that either thecontent source302, for example a DVD drive, or an external network or device sources the content. In another example, a personal video recorder (PVR) orDVD recorder device300 may have an MPEG encoder content source, a writeable DVD drive or hard disk drive, that often operates as a content source, but may function as a content sink or renderer when thedevice300 is in a recording mode. In the PVR or DVD recorder example, thecontent source302 performs a network-attached storage function in which the writeable DVD or hard disk drive functions as a recordable drive or the DVD or hard disk drive storage can be omitted and content can be delivered to or from a computer or network.
In the illustrative embodiment, the[0054]emulator interface306 comprises anemulator interface controller310, anetwork controller312, aprocessor314, amemory316, aserial bus interface324, acontent bus interface340, and in some embodiments, processes executed on a processor such as acomputer342,host350, or remote source352.
The[0055]processor314 executes various processes, methods, or programs that control operations of theemulator interface controller310 to transfer information between a network external to thedevice300 and thecontent source302 orcommunication bus338 and to perform a wide variety of other functions. Theprocessor314 can be any suitable processor, microprocessor, controller, microcontroller, central processing unit, digital signal processor, state machine, or the like.
The[0056]emulator interface controller310 is capable of coupling theemulator interface306 to thedevice300 orcommunication bus338, and manages the generation and/or transmission of data signals, control signals, chip select, interrupt request signals, and the like. Theemulator interface controller310 may include a detection circuit for detecting presence of a communications port, such as an infrared (IR) or radio frequency (RF) port. In various examples, the detection circuit may comprise hardware, software, firmware, or a combination. Upon determination that a communications port is present, the detection circuit then can determine whether commands or control signals are issued from a remote device to thedevice300 via the communications port.
The[0057]emulator interface controller310 may be implemented in any suitable technology such as a field programmable gate array (FPGA), an integrated circuit, a discrete circuit, a programmable circuit, or any other type of circuit.
The[0058]emulator interface controller310 communicates bi-directionally with thememory316.
The illustrative[0059]emulator interface controller310 is also coupled to thenetwork controller312 that may be a local area network controller or other suitable network controller. Thenetwork controller312 forms an interface between thedevice300 and one or more networks, such as local area networks. Theemulator interface controller310 may also be connected to a wide area network, for example the internet, via anetwork connection320, such as a wide area network connection. Thenetwork connection320 facilitates operation of thedevice300 with any computer network standard, for example with broadband and modem standards. In some embodiments, acomputer342, such as a host computer, workstation, control terminal, and the like, may be connected to thedevice300 via thenetwork controller312. Alternatively, thecomputer342 may be connected to thedevice300 via thenetwork connection320. Thedevice300 may be coupled via thenetwork connection320 to a network that comprises a plurality of device subsystems, for example AN device subsystems, and other media elements. Alternatively, thedevice300 may retrieve information from one of the plurality of device subsystems.
The[0060]content bus interface340 enables thedevice300 to communicate with a variety of other devices and device types. For example, thecontent bus interface340 may enable connection to one or more of local area network (LAN) cards, a Universal Serial Bus (USB), an IEEE 1394 standard compatible bus, an Audio/Visual (AN) bus, a Small Systems Interconnect Bus (SCSI), a cable modem, a digital camera, a video camcorder, a Personal Digital Assistant (PDA), or any other device that produces electronic signals.
The[0061]serial bus interface324 enables thedevice300 to interface with a variety of other devices and device types, for example, user interface devices such as a mouse, a keyboard, joystick, trackpad, or other input devices. Media elements from any devices coupled to thecontent bus interface340, theserial bus interface324, or any of thecommunication buses338 may be retrieved or delivered to thecontent sink304 to be processed, and then to be displayed.
In some examples, data signals may communicate between the[0062]content source302 and thecontent sink304. Data signals may also communicate between thecontent source302 and theemulator interface controller310, or between thecontent sink304 and theemulator interface controller310 via data lines of thecommunication bus338. Control signals may also communicate between thecontent source302 and theemulator interface controller310, or between thecontent sink304 and theemulator interface controller310 via control lines of thecommunication bus338. Various other control signals and interrupt request signals may communicate bi-directionally between thecontent source302 andemulator interface controller310, or between thecontent sink304 and theemulator interface controller310.
Media content may be stored on the[0063]content source302, for example an optical disc drive (DVD or CD type), in a computer such as ahost computer350 or a computer at a remote network site352. In one transaction example, thesink processor332 of thecontent sink304 receives content located on either of thecontent source302, thehost computer350, or on a remote network site352 under control of theemulator interface306. The received data may be completely or partially processed, or unprocessed, before transmission to thecontent sink304. In a specific class of devices, the received content can be in a format native to thecontent source302 or a format that thecontent sink304 is capable of processing. For a specific device in this class, thecontent source302 can be a DVD player, a supported content format may beMPEG 2 DVD format, MPEG VCD format,MPEG 2 Super VCD format, or any DVD compliant format. The media content can be communicated directly to thecontent sink304, which transcodes the data, then forwards the transcoded data for display, for example video information on avideo display360 and/or audio information amplified byaudio amplifier362 and displayed onaudio display364. One example of anaudio display364 is a speaker.
If the content has a format that is not native to the[0064]content sink304, a format that thecontent sink304 is not configured to process, or if the content does not comply with frame rate requirements, thehost computer350 can decompress the content prior to forwarding to thecontent sink304. In either case, theemulator interface306 can convert the data to a displayable format. An example of a noncompliant format that may require format conversion is a DVD player in which content has an MPEG 4 format, Real Networks format, or MPEG1/MPEG2 format.
In various embodiments, applications, and examples, the[0065]device300 performs various functions of information storage, processing, monitoring, and display. The functions are executed by control and management elements such as thesink processor332, theprocessor314, thehost computer350, other computational and control devices in the remote network site352, or in other computational, management, and control elements inside and outside thedevice300. The control functions may be implemented as software, firmware, either individually or in combination. Executable program code can be stored in a processor-readable medium or transmitted by a computer data signal embodied in a carrier wave over a transmission medium or transmitted by a data signal in a carrier wave over a transmission medium or communication link. The processor-readable medium or machine-readable medium may include any medium that can store or transfer information. Examples of processor or machine-readable media include electronic circuits, semiconductor memory devices, read-only memory (ROM), floppy diskette, CDRW-ROM, DVDRW-ROM, optical disk, hard disk, fiber optic media, radio frequency (RF) signals, and the like. A computer data signal may comprise any signal that can communicate over a transmission medium such as electronic network channels, optical fibers, air, electromagnetic signals, RF links, serial links (e.g. IEEE 1394 high-speed serial bus), powerline, wireless (e.g.IEEE 802 Standards Working Groups, Bluetooth), wired, and the like. Executable program code segments may be downloaded via communication or computer networks such as internet, intranet, and local area networks (LANs), wide area networks (WANs), and the like.
A suitable application for the[0066]device300 is a home networking system. A personal computer can be coupled to a home networking system that includes at least one audio/visual device. Content may be located on a machine-readable medium that may be read by the personal computer or the audio/visual device, on one or more storage devices such as DVD drive, CD drive, hard disk drive or other drives, contained within the personal computer, the audio/visual device, or on a remote network site352 accessible through the network.
In an illustrative application, the[0067]device300 enables operational control to a user by presenting a graphical user interface (GUI), such as a menu of selected actions or options, typically on thevideo display360 but also possibly on display screens associated with thehost computer350, a console of thedevice300, or a display in the remote network site352. For example, thesink processor332 may request display of a menu in respond to a signal or request from the user. Theemulator interface controller310 receives the request, determines which functional element stores information for presenting the display, and retrieves the presentation information for display. Typically, the menu information can be stored inmemory330,memory316, a memory associated with thehost computer350, or another computer on the remote network site352, or a divided and spread among a plurality of storage locations in conjunction with one or more of the processors. The GUI also includes functional elements that permit the user to select from the menu, for example selection buttons, keys, or other types of switches of a remote control, console, or other input terminal of one or more of the interacting devices.
According to the menu selection, if a selected item is available in the[0068]device300, theemulator interface306 can issue a command to thecontent source302 to deliver a media element corresponding to the selected item to thecontent sink304. If the selected item is stored in association with thehost computer350, theemulator interface306 signals thehost computer350 to deliver the requested content to thecontent sink304. Similarly, if the requested content is available elsewhere on a remote network site352, theemulator interface306 issues a request to transfer requested content from the remote network site352. Theemulator interface306 can enforce priority or resolve contention for resources in a network that contains multiple content sources and multiple content requesters.
Control interface or translation functionality can be implemented typically in the[0069]processor314 or thehost computer350, but may otherwise be supported from a device on a remote network site352. Control interface or translation enables thecontent sink304 orhost computer350 to receive and/or process content for delivery to the home entertainment system or to a display device. Control interface or translation functionality may include transcoding or formatting information for content distribution, data format conversion, digital rights management conversion, and content protection. Thehost computer350 ordevice300 may monitor compliance with permission for receiving the content. Format conversion functionality includes content conversion, meta data conversion, digital rights management conversion.Processor314 may facilitate or assist decryption of received data.
In some embodiments, the[0070]host computer350 can operate as a content server. Server software can be executable on thehost computer350 and execute a content formatting operation. The server may include software that searches for content, and upon finding content determines the format of the content. If necessary, the server transcodes the content to a suitable format for a renderer. The server complies with multiple content format conventions and creates seamless communication of various types of computing and communication devices. Software searches for content, upon finding content creates a menu, displays the menu, and transcodes the signals. Specific software functionality includes a menu control structure that is enables a user to select content for rendering, and content formatting to place information in a format capable of rendering by the existing system. Software communicates with thecontent sink304 in a particular way that is expected by thecontent sink304.
Server software can be executable on various types of computing devices including computers, PCs, laptops, palm-held devices, set-top boxes, remote control devices, mobile telephones, and the like can access any type of video content and serve as a navigator for supplying the video content to the[0071]content sink304. The software exploits the infrastructure of existing devices, such as DVD players and drives, to conform the format of video content to a known native format. Accordingly, server software can conform video data in any format to a format supported by thecontent sink304 with no changes to thecontent sink304.
In various embodiments, the[0072]host computer350 may implement code that is executable on any suitable processor, for example on thehost computer350 or on theemulator processor314. For device flexibility, functionality can be supplied from thehost computer350. For example, theemulator interface306 can send all commands to thehost computer350 and software in thehost computer350 can execute various server, transcoding, control, and processing operations based on the commands.
In other examples, various processes may be executed in the[0073]emulator processor314 for various reasons such as capability of real-time processing and avoidance of large content transfers between processors. Flexibility, capability to upgrade, and reduction in executable code storage in theemulator processor314 can be achieved by downloading executable code from thehost computer350 to theemulator memory316 for execution on theemulator processor314. For example, theemulator interface306 can include a small, simple executable code in nonvolatile memory in theemulator memory316 to perform basic input/output and management functions, and execute most functionality from code downloaded involatile memory316 from an external device such as thehost computer350.
In some examples, content may be communicated in open format, allowing general access without digital rights management. Digital rights management capabilities can be included in the emulator, for instance executed by the[0074]processor314, so that content becomes compliant with a digital rights management scheme.
Transcoding is a functionality performed by the[0075]device300,host computer350, or other processor communicatively coupled to thedevice300 that converts content to a compatible format. If received content is compatible with thedevice300, the content forwards directly to thedevice300 without conversion. Otherwise, for incompatible content, thehost computer350,processor314, or other control functional element internal or external to thedevice300 can convert the content to a format that is compatible with thedevice300.
When the selected media content is available, the[0076]emulator interface306 forwards the media element to thecontent sink304. Thedevice300 can format the media element to a form suitable for a particular display such as a television screen, speakers, or the like.
In some examples, the[0077]content sink304 may include functionality to interpret user commands issued via remote control or appliance control panel.
Referring to FIG. 4, a detailed block diagram depicts functional blocks of an emulation circuit[0078]400 that is suitable for usage in the emulator interface of FIGS.2 and/or3. In some embodiments, the emulation circuit400 can be implemented as a field programmable gate array, although other technologies may otherwise be used. The emulation circuit400 includes aprocessor410 that can be programmed to execute various functions including control, data transfer, emulation, transcoding, data storage, interface, test, and others. In an illustrative embodiment, theprocessor410 can be implemented as an ARM7TDMI-S manufactured by Advanced RISC Machines, United Kingdom. Theillustrative processor410 further includes an in-circuit emulator412 and a Test Access Port (TAP) controller414.
The in-[0079]circuit emulator412 can support real-time debug with trace history around a trigger point, debugging of foreground tasks simultaneous with background task execution, and modification of memory during runtime. In-circuit emulator412 can also support multiple processors and mixed architecture devices, slow or variable-frequency designs, and debug of very low-voltage cores.
The TAP controller[0080]414 is coupled to aJTAG interface416, enabling theprocessor410 to execute JTAG emulation that allows theprocessor410 to be started and stopped under control of connected debugger software. JTAG emulation allows a user to read and modify registers and memory locations, set breakpoints and watchpoints, and support code download, trace, and monitoring for debug operations.
The[0081]processor410 and anAHB bus interface418 communicate on an ARM memory bus420. TheAHB bus interface412 communicatively couples theprocessor410 to a multi-layer Advanced Microcontroller Bus Architecture (AMBA™) high-speed bus (AHB)422.AHB matrix426 is also coupled to the AHB422. TheAHB Matrix426 is a complex interconnection matrix to attain parallel paths to memory and devices on the multi-layer AMBA™ high-speed bus (AHB)422. The parallel paths of the AHB422 increase bus bandwidth and lower latencies by reducing contention. Multi-layer AHB422 is an interconnection technique based on AHB protocol that supports parallel access between multiple master and slave devices.
Devices coupled to the AHB[0082]422 include an interruptcontroller424, astatic memory controller428, atest interface controller430, acache controller432, an AHB toPVCI bridge450, and an AHB toBVCI bridge452. The interruptcontroller424 is capable of detecting interrupt signals from multiple sources including an external interruptconnection436,timers438, a media access control (MAC)module440, an ATAPI device block442, and a host ATA control block444. The interruptcontroller424 asserts an appropriate bit identifying an interrupt on theprocessor410 upon the occurrence of one or more interrupt signals. In various applications, the current highest priority interrupt can be determined either by software or hardware. Typically, the current highest priority interrupt is read from a set of registers in the interruptcontroller424. The interruptcontroller424 contains registers indicative of interrupt status, and registers for enabling and setting interrupts.
The[0083]static memory controller428 is coupled to aflash memory interface446, typically for supplying program code that is executable on theprocessor410 although data and other information can also be supplied to the emulation circuit400.
The[0084]test interface controller430 is coupled to atest interface448 and supports external bus interface request and grant handshake signals for requesting test interface access to an external bus and information of external bus use grant, respectively. In a typical system, theprocessor410 may continually request access to an external bus with thetest interface controller430 having highest priority to bus access. In a typical sequence of events to apply test patterns, first reset is asynchronously applied and synchronously removed. On reset removal,processor410 initiates a memory read via thestatic memory controller428. Thestatic memory controller428 typically requests the external bus and reads the bus when the request is acknowledged. When thestatic memory controller428 is busy, thetest interface controller430 can request the external bus. The request is granted because thetest interface controller430 has the highest priority and thetest interface controller430 takes ownership of the external bus. When thestatic memory controller428 finishes the read access, thetest interface controller430 is granted use of the external bus. The external bus resolves the bus request signals and thetest interface controller430 initiates a test pattern sequence.
The[0085]cache controller432 is coupled to acache memory434, illustratively 4 kB of static RAM. Thecache memory434 reduces external memory accesses and increases performance even with usage of relatively low-speed RAM. Thecache memory434 allowsprocessor410 to share bus bandwidth with multiple devices with high data throughput such as streaming audio and video devices.
The AHB to[0086]PVCI Bridge450 couples Peripheral Virtual Component Interface (PVCI) functional blocks to the AHB422. The AHB toPVCI bridge450 can include both master and slave interfaces and supports AHB Master to PVCI Slave and PVCI Master to AHB Slave modes. The PVCI standard enables development of plug-in components that are compatible with numerous interfaces, promoting design efficiency. In the illustrative example, PVCI devices coupled to a register bus456 includetimers438,MAC module440, a general purpose input/output interface454, ATAPI device block442, and host ATA control block444.
The AHB to[0087]BVCI Bridge452 couples Basic Virtual Component Interface (BVCI) functional blocks to the AHB422. The Basic Virtual Component Interface (BVCI) is a system bus interface to a memory bus458. In the illustrative example, BVCI devices coupled to the AHB toBVCI bridge452 include the host ATA control block444, the ATAPI device block442, and a synchronous dynamic RAM (SDRAM)interface468.
[0088]Timers438 can be programmed to time various events under program control. Theprocessor410 controls operation oftimers438 through signals communicated to timer registers via the register bus456. Thetimers438 can generate timer interrupts that can redirect program execution through operation of theinterface controller210.
The emulation circuit[0089]400 receives and sends data or information by operation of the general purpose input/output interface454 that is coupled between the register bus456 and a GPIO interface462.
In the illustrative emulation circuit[0090]400, theMAC module440 is a 10/100 MBPS Ethernet media access controller for networking highly integrated embedded devices. TheMAC module440 is coupled to anexternal network interface460, as well as to the register bus456 and the memory bus458. TheMAC module440 is an interface to physical layer devices and can support 110-BaseT, 100-BaseTX, 100-BaseFX, and 32 bit standards-based BVCI bus interface with an integrated direct memory access (DMA) controller. TheMAC module440 is typically IEEE 802.3 compliant and supports half- and full-duplex operation with collision detection, auto-retry, flow control, address filtering, wakeup-on-LAN, and packet statistics.MAC module440 can incorporate a DMA buffer-management unit and support wire-speed performance with variable packet sizes and buffer chaining.MAC module440 can offload processor tasks including such direct register access and programmable interrupts to improve high data throughput with little processor overhead. TheMAC module440 can generate interrupts and includes an interrupt signal connection to the interruptcontroller424.
The host ATA control block[0091]444 and the ATAPI device block442 are coupled to the register bus456 and the memory bus458, and operate in combination to facilitate connectivity between a host controller and hard disk drives in various applications including computing, communication, entertainment, peripheral, and other applications. The host ATA control block444 includes digital circuitry to form a complete ATA host subsystem to integrate hard disk, CD-ROM, DVD, DVD-R, and other host subsystems. The host ATA control block444 implements functionality for drive control and enables the emulation circuit400 to operate as a host. When the emulator400 functions as a host to control a storage drive the host uses functionality of host ATA control block444 andhost ATA interface464. The host ATA control block444 can also implement programmed input-output (PIO), multiple-word direct memory access (DMA), and various speed, for example 33, 66, 100, and 133 megabyte/second, interface circuitry. In various embodiments, the host ATA control block444 can support multiple ATA/ATAPI devices. The host ATA control block444 is coupled to ahost ATA interface464 for connecting to a host computer and has an interrupt connection to the interruptcontroller424 so that theprocessor410 can address host ATA interface events.
The ATAPI device block[0092]442 is coupled to adevice ATA interface466 and connects an Integrated Device Electronics (IDE) storage device to a host system. The ATAPI device block442 typically performs command interpretation in conjunction with the embeddedprocessor410. The ATAPI device block442 implements functionality of storage drive emulation, enabling the emulation circuit400 to function as a storage drive. An external device can operate as a host that uses the emulation circuit400 as a drive. The ATAPI device block442 can be used to communicate with hard disk drives as well as solid-state storage devices using dynamic RAM (DRAM), NAND, or NOR flash memory devices, and the like. In various embodiments, the ATAPI device block442 can be designed to interface to one or more of various size (for example 1″, 1.8″, and 2.5″) hard disk drives, low-power drives, portable drives, tape drives, and solid-state or flash drives. The ATAPI device block442 has an interrupt connection to the interruptcontroller424 so that theprocessor410 can address device ATA interface events.
The[0093]host ATA interface464 can be logically connected to thedevice ATA interface466. In one example, the emulation circuit400 can function as a MPEG decoder communicating directly with a storage drive. In a pass through operation, the emulator circuit400 can monitor commands sent to a storage drive passively.
The[0094]SDRAM interface468 is an interface controller that supports interconnection of the emulation circuit400 to synchronous dynamic RAM modules in various configurations, for example DIMM, without supporting circuitry. TheSDRAM interface468 typically includes a SDRAM controller (not shown) and a SDRAM configuration block (not shown). The SDRAM controller generates control signals for controlling the SDRAM. The SDRAM configuration block includes configuration registers for controlling various entities such as refresh and mode lines, and a refresh timer for usage by the SDRAM controller. In various embodiments, theSDRAM interface468 SDRAM)interface468 can support slave devices, arbitrary length bus transfers, and programmability.
Referring to FIG. 5, a component diagram shows various system, hardware, and software components of a[0095]server500 for usage with an emulator interface. Theillustrative server500 is capable of executing on asystem502 such as a computer, a personal computer, workstation, laptop, palmheld computer, notebook computer, or any other type of device for executing programmed code. Theserver500 can communicate with one or more various information handling devices, including devices that function as a source or information or content, devices that display, perform, or render the sourced information or content, and control devices. In the illustrative example, theserver500 is configured to communicate with aclient device520, adecoder504 such as an MPEG decoder, and aDVD drive506 via anEthernet connection508. These devices are for illustration only and can be supplemented or replaced by many other types of information handling devices. Theclient device520, thedecoder504, and theDVD drive506 are each shown in a single system coupled by anIDE bus510. In other examples, the devices may be configured in different systems and may have internal interfaces different than theIDE bus510.
The[0096]server500 includes one ormore server applications512 that execute in conjunction with an audio-visual (AV) system515 and amedia directory518 to manage interactions among a variety of audio-visual devices and controllers. Theserver500 communicates with the devices over theEthernet connection508 by operation of aserver application512, for example a software application that executes a desired content handling application. Aserver application512 virtualizes media into a volume of data that is navigable by the system515. Theserver application512 can assess characteristics of source media and, if needed, modify characteristics into a more familiar form. For example, a DVD-basedserver500 may change data format to appear more as a DVD disc. Theserver application512 manages data streaming to one or more of multiple clients that may be connected to theserver500.
Generally, the[0097]server application512 controls the information transfer entities and the type of processing. Theserver application512 determines and selects devices that function as the content source and renderer, the type of processing performed on the content, and any control and management functionality. For example, theserver application512 can initially generate a graphical user interface display indicative of the types of content available for performance and classes of processes that can be performed on the content. A user can respond to the display by selecting the desired content and processing. Theserver application512 can generate and send control signals to the selected content source and renderer that commence content accessing, transmission, rendering, and display. Theserver application512 can generate and send control signals that activate devices, if any, in the path from source to renderer that process or modify the content. In some applications, theserver application512 can execute content processing routines that are suitably executed on the server processor.
The AV system[0098]515 defines and manages general interactions among various types of audio-visual devices and supports a broad range of device configurations and applications independently of device type, content format, and data transfer protocols. For example, the AV system515 can support an open-ended variety of audio-visual devices including, but not limited to, computers, PCs, laptops, palm-held computers, cellular telephones, workstations, video displays, electronic picture frames, televisions, CD/DVD players and jukeboxes, video cassette recorders, set-top boxes, camcorders, still-image cameras, audio systems, stereos, MP3 players. The AV system515 can support an open-ended broad variety of content, information, and data formats including, but not limited to, Motion Pictures Expert Group (MPEG2, MPEG4), Joint Photographic Experts Group (JPEG), audio standards including MPEG-1 Audio Layer-3 (MP3), Windows Media Architecture (WMA), bitmaps (BMP), National Television Standards Committee (NTSC), Phase Alteration Line (PAL), Sequential Couleur avec Memoire (SECAM), Advanced Television Systems Committee (ATSC), video compact disk (VCD) and S-VCD standards. The AV system515 selects and defines functionality of various content sources, content renderers, and controllers in combination with aserver application512 and themedia directory518.
The AV system[0099]515 comprises amedia renderer514, amedia controller516, and astandard media server542. The AV system515 defines and manages interactions among a content source, a content renderer, and an AV interaction controller. In some embodiments, the AV system515 can be highly flexible and compatible with any type of media source device and any type of media rendering device.
The[0100]server500 accesses content from one ormore media sources544 and546 from themedia directory518. Themedia controller516 enables a user to locate and select content from themedia directory518 and to select a target renderer. Themedia renderer514 obtains the selected content and directs transfer of the content to the selected target renderer.
In the illustrative example, the[0101]media renderer514 includes atranscoder530, a virtual logical block address (LBA) manager532, a virtualcontent file manager534, and avirtual content renderer540. In one embodiment, thetranscoder530 is an MPEG to video object block (VOB) transcoder and the virtualcontent file manager534 is a virtual IFO/VOB manager. The MPEG-VOB transcoder converts from an MPEG format that is commonly used to compress and display video content for computer handling to VOB files that are the standard format of DVD presentations and movies. VOB files contain multiple multiplexed audio/visual streams. The virtual IFO/VOB manager handles VOB files and information format (IFO) files containing information that describes the particular format of VOB files including playing information such as aspect ratio, subtitles, menus, languages, and the like.
The[0102]server500 can include transcoders and virtual content file managers that transcode information in other formats depending on the particular audio-visual application. For example, atranscoder530 can be implemented that transcodes content to and from various formats including one or more of MPEG video, Digital Video (DV), MPEG elementary (ES) or program streams (VOB), YUV4 MPEG streams, NuppelVideo file format and raw or compressed (pass-through) video frames and export modules for writing DivX, OpenDivX, DivX 4.xx or uncompressed AV1 files with MPEG, AC3 (pass-through) and PCM audio. One example of a particularly useful transcoding application is transcoding of JPEG to MPEG. In another example, digital video can be transcoded to MPEG including transcoding of low quality digital video to high quality MPEG.
In an audio example, the[0103]transcoder530 can transcode an MP3 media file to a Dolby AC3 pulse-coded modulation (PCM) format.
In a DVD player application, the[0104]transcoder530 can transcode any transcribable media for viewing on a DVD player. For example, a power-point presentation can be transcoded to a video presentation on a DVD player.
The[0105]transcoder530 executes decoding and encoding operations using content loading modules including import modules that feed transcode with raw video/audio streams and export modules that encode data frames. Atypical transcoder530 supports elementary video and audio frame transformations, including video frame de-interlacing or fast resizing and external filter loading. Various operations performed by thetranscoder530 include demultiplexing, extracting, and decoding of source content into raw video/audio streams for import, and probing and scanning of source content to enable post-processing of files, setting file header information, merging multiple files or splitting files for storage.
In a typical transaction, the[0106]transcoder530 is activated by a user command and initializes content transfer, activating modules that begin transfer and buffering of audio and video streams and encoding frames. For example can initiate transfers by creating a navigation logfile that contains the frame and related group of picture list with file offsets. Thetranscoder530 then executes one or more video/audio frame manipulations or simply passes through raw frame data without manipulation. Video frame manipulations may include removing an arbitrary frame region for processing, de-interlacing a video frame, enlarging or reduction of video width or height, filtering for image resizing, removing an arbitrary frame region for encoding, and downsampling of video width/height. Other video manipulations may include video frame flipping or mirror imaging, gamma correction, anti-aliasing, or color manipulations. Audio frame manipulations may include volume changes, audio stream resampling, and synchronizing video and audio frames.
The[0107]transcoder530 can load export modules for audio/video encoding and begin an encoder loop operation that started for the selected frames.
The virtual LBA manager[0108]532 controls definition and accessing of virtual logical block addresses in the media and relates the virtual logical block addresses to physical storage addresses of the media. By creating virtual logical block addressing, the virtual LBA manager532 enables access to content from a variety of different content sources in the manner of a particular physical source. In this manner, the virtual LBA manager532 enables a first device, for example a nonstandard or nontypical device, to emulate a second device, for example a device that normally supplies content within a system, using logical block addressing. In a particular example, the virtual LBA manager532 can emulate addressing of DVD player content from content acquired from the Internet.
The[0109]virtual content manager534 operates in conjunction with the virtual LBA manager532 to dictate a map of physical addresses to virtual block addresses. Thevirtual content manager534 tracks all elements of content data and maintains links among associated data including local data links and remote data links. Storage on theserver500 is in the configuration of multiple linked lists among files that reference one another. Thevirtual content manager534 maintains links among files, identifying and positioning on one or more media volumes. Thevirtual content manager534 verifies and ensures that the IFO file references are maintained to assure consistency of references at a directory and volume management level.
The[0110]virtual content manager534 functions to handle storage and accessing of media content in the manner that a virtual memory manager operates in a computer. A virtual memory manager tracks chunks of memory. Thevirtual content manager534 tracks chunks of media. Thevirtual content manager534 enables multiple chunks of media to be stored with overlapping addressing.
The[0111]virtual content manager534 receives commands from themedia controller516 that initiate or modify accessing and presentation of content. Thevirtual content manager534 responds by determining the format of IFO and VOB files and activating the virtual LBA manager532 andtranscoder530, if needed, to begin media streaming. Thevirtual content manager534 also functions in conjunction with thevirtual content renderer540 to perform media rendering.
The[0112]virtual content renderer540 operates on media files to format media to meet the functionality and capabilities of a presentation device, such as a DVD player.
In an illustrative embodiment, the[0113]virtual content renderer540 is a virtual IFO/VOB renderer. Thevirtual content renderer540 manipulates content data according to directions by thevirtual content manager534 to render content. Thevirtual content renderer540 manipulates content data elements, supplying information to files identified and located by thevirtual content manager534. Thevirtual content renderer540 also creates IFO files for media that do not already have IFO files including creation of selection trees that appear as cascading menus. IFO files are used to play various files including presentation of menus. Menus are a selection presentation for clusters of media. Thevirtual media renderer540 can generate multiple menus in a tree structure until all media is accessible. Thevirtual content renderer540 creates IFO files as a manifestation of a playlist structure.
Other examples of media that do not have IFO files are MPEG from digital video or other a myriad of other sources such as power point data for slide shows.[0114]
In some applications, the[0115]virtual content renderer540 adds content that would not exist without rendering for presentation. For example, thevirtual content renderer540 can configure JPEG images and add filling content to create a slide show of MPEG images to generate slide-show functionality.
The[0116]illustrative media controller516 includes amedia scanner538. In an illustrative embodiment, themedia controller516 allows monitoring of how the media is evolving through operation of themedia scanner538.
The[0117]media scanner538 tracks themedia directory518, enabling media content and themedia directory518 to be mutable. Themedia scanner538 regularly accesses themedia directory518 to determine whether any changes in the content of themedia directory518 have occurred and changing virtual structures in themedia renderer514 and theserver application512 to track changes in the media. Themedia scanner538 monitors for changes and responds to any changes by updating virtual structures.
The[0118]standard media server542 can access a variety of content, either locally stored or stored on an external device. Thestandard media server542 is capable of accessing content and transferring the accessed content to another device via a network using a standard transfer protocol, for example HTTP or FTP. Thestandard media server542 can locate content available on a network from a variety of devices and communicates with themedia controller516 to enable browsing or searching for available content items. Thestandard media server542 typically includes a content directory, a connection manager, and a transporter. The content directory includes functions that interact with themedia controller516 to search or browse for content, supplying information and properties that specifically identify the content. The connection manager manages connections associated with a particular device including preparation for content transfer, issue of flow control commands, distinguishing of multiple instances to support multiple renderers, and terminating connections when a transfer is complete. The transporter can be used to operate in conjunction with themedia controller516 to control content flow. Thestandard media server542 can supply media that does not require large changes for accessibility by conventional rendering hardware.
The[0119]media directory518 is a media container, holding a list of all available media content and possibly some or all of the media content. Themedia directory518 operates as a virtual media directory, enabling and facilitating access to locally-stored media content and remote media contained by other servers and devices. Themedia directory518 stores Uniform Resource Identifiers (URIs) that identify content resources. URIs includes WWW addresses, Universal Document Identifiers, Universal Resource Identifiers, and combinations of Uniform Resource Locators (URL) and Names (URN). Uniform Resource Identifiers are formatted strings that identify a resource by name, location, or another characteristic. Themedia directory518 holds URIs of all files that theserver500 can deliver for rendering. The URIs can correspond to files stored anywhere.
The[0120]media directory518 identifies available content sources, forexample media sources544 and546, and contains directory information to facilitate acquisition of content from one or more of the media sources.
Referring to FIG. 6, a use case diagram illustrates functionality of an audio-visual system that uses an emulator interface. The audio-[0121]visual system600 includes aserver610 that is capable of executing on a processor and an emulator-enabled media player612. Theserver610 manages accessing and streaming of content to the emulator-enabled media player612. The emulator-enabled media player612 receives content from theserver610 and performs or presents the content. In a particular embodiment, the audio-visual system600 can be a video system that plays video content from multiple sources on an emulator-enabled DVD player.
The[0122]server610 has several functional blocks including amedia server620, amedia renderer622, amedia controller624, amedia directory626, and anemulator server628. Themedia server620, themedia renderer622, and themedia controller624 contain specification elements, respectively aserver element629, arenderer element630, and acontrol element632. The specification elements comply with standard communication protocols.
The[0123]media controller624 and themedia renderer622 include specialized control operations and rendering operations, respectively. For example, themedia controller624 includes control functionality to select, enable, initiate and manage emulated interactions. Themedia renderer622 includes a specialized renderer that is a proxy for the emulatornetwork communications server628. Themedia controller624 communicates with themedia server620 and themedia renderer622 to initialize a source to supply content, set content transfer parameters, and begin content delivery. Media structure requests are sent to themedia controller624, and themedia controller624 sends control signals causing themedia server620 to transmit media files to themedia renderer622 including functional elements in themedia renderer622 that activate the emulator media stream.
The[0124]media controller624, which may be termed a control point, examines themedia directory626, and specifiesmedia menuing640, for example DVD menuing, creating menus in themedia directory626 concurrently with content transfer. Themedia directory626 contains some or all media content along with a list of available content for producing and displaying menus. Amedia provider602 makes media available to themedia directory626.
The[0125]media server620 receives control signals from themedia controller624 and responds by supplyingmedia content642 for rendering. Themedia renderer622 receives the control signals and adjusts the media to the emulated standard644. Themedia renderer622 can render media player menus646 for presentation of the menu by the emulator-enabled media player612. Themedia renderer622 receives and renders the content, supplying the renderedcontent648 to theemulator server628.
The[0126]emulator server628 functions as an interface between themedia renderer622 and the emulator-enabled media player612. Theemulator server628 conducts themedia content stream650 from themedia renderer622 to the emulator-enabled media player612 and receives control information from the emulator-enabled media player612 to permit discovery of available content652.
In an illustrative example, the emulator-enabled media player[0127]612 includes anemulator614, amedia drive616, and acontent sink device618. In a particular example, the media drive616 can be a DVD drive and thecontent sink device618 can be an MPEG decoder. Functions performed by theemulator614 mirror, or emulate, the functions of themedia drive616. In standard operation, the media drive616 supplies a media stream654 to thecontent sink device618 and requests a media description656. Theemulator614 emulates functions of the media drive616, supplying an emulatedmedia stream658, and requesting amedia description659.
The[0128]emulator614 can use automatic Internet Protocol (IP) addressing to allocate reusable network addresses and configuration options.
In an alternative embodiment shown in FIG. 7, the system may include a Dynamic Host Configuration Protocol (DHCP) server[0129]660 that supplies a framework for passing configuration information to hosts on a TCPIP network, based on a Bootstrap Protocol (BOOTP) that is known to those of ordinary skill in the art of network communication. The DHCP server660 adds a capability to automatically allocate reusable network addresses and additional configuration options762. DHCP captures the behavior of BOOTP relay agents to enable DHCP participants to interoperate with BOOTP participants.
Referring to FIG. 8, a detailed state diagram illustrates an example of functions performed by an[0130]emulator800. In various embodiments, theemulator800 may execute one or more of a plurality of operations from various devices and components such as source devices, sink devices, or external devices. For example, theemulator800 may execute some or all processes in theprocessor314 in theemulator interface306 depicted in FIG. 3.
In an emulation function, the[0131]emulator800 generates control signals, data, and responses that deceive one or more of the source device, the sink device, and an external device as to the identity of the interacting device. In the sample of an optical media player with a network connection, an optical drive functions as a source, an optical media decoder serves as sink, and a remote computer operates as an external device. Theemulator800 can trick the devices so that the optical media decoder can render content from the remote computer in an interaction identical to an optical drive transaction. The optical drive can source content for the remote computer in an interaction identical to sourcing to the optical media decoder. For a writeable drive, the remote computer can source content for the optical drive in an interaction identical to writing to the drive from a bus.
[0132]Emulator800 begins operation with a power-up initialization ofhardware act802 that proceeds when hardware tests are successful. Next an initialize operatingsystem kernel act804 initializes operation software. An initialize TCP/IP stack act806 prepares an Ethernet stack for communication. A start emulator tasks act810 commences operation of theemulator800 including anemulator state machine812 and aserver state machine814 that execute concurrently and synchronize at sync points815.
The illustrative[0133]emulator state machine812 has three wait states including a bus idle with no media816, a bus idle with media state818, and a bus wait read data state820. The illustrativeemulator state machine812 has five command action states including a field driveinformation request state822, a fieldmedia request state824, a deliver bus read data state826, a field readrequest state828, and a field seekrequest state830.
The illustrative[0134]server state machine814 has four wait states including a media host connectedstate832, a network mediaidle state834, a nomedia host state836, and a network wait readdata state838. The illustrativeserver state machine814 has four action states including a mediapresent state840, a send seekpacket state842, a send readpacket request state844, and a read data arrives ortimeout state846.
The no[0135]media host state836 advances to the media host connectedstate832 when a media connection is open but returns when the connection is closed. Similarly, the network mediaidle state834 returns to the nomedia host state836 when a media connection is lost. The media host connectedstate832 advances to the action mediapresent state840 when a media packet arrives but returns when the media is removed. When a media description is available, theemulator state machine812 advances to the bus idle with media state818 as the media is identified. The bus idle with media state818 advances to the field driveinformation request state822 upon a drive data request and returns on an acknowledge. The bus idle with media state818 advances to the fieldmedia request state824 upon a media request and returns on an acknowledge. The bus idle with media state818 advances to the field readrequest state828 on a read request, generating a read logical block address (LBA) signal that places theserver state machine814 in the send readpacket request state844. On a logical block address (LBA) request, theserver state machine814 advances from the send readpacket request state844 to the network wait readdata state838 and returns on a read retry. In the network wait readdata state838, theserver state machine814 advances to the read data arrives ortimeout state846 and, on a queue data signal, places theemulator state machine812 in the deliver bus read data state826. On a data transfer complete signal, theemulator state machine812 enters the bus idle with media state818 from the deliver bus read data state826.
The bus idle no media state[0136]816 of theemulator state machine812 advances to the field driveinformation request state822 upon a drive data request and returns on an acknowledge. The bus idle no media state816 signals theserver state machine814 when a media descriptor arrives, generating a media ID acknowledge that places theserver state machine814 in the network mediaidle state834. The network mediaidle state834 in the event of a bus seek request generates a seek acknowledge that places theemulator state machine812 in the bus idle with media state818. The bus idle with media state818 advances to the field seekrequest state830 on a bus seek. The field seekrequest state830 upon a seek request generates a seek destination signal that places theserver state machine814 in the send seekpacket state842 which goes to the network mediaidle state834 on an acknowledge.
The network media[0137]idle state834 upon a read request generates a read accepted signal that places theserver state machine814 in the bus wait read data state820. When data is ready in the bus wait read data state820, an acknowledge places theserver state machine814 in the network mediaidle state834.
Emulator[0138]800 can determine functionality of a particular sink device and specifically imitate that functionality for a remote device. In a particular example, theemulator800 can imitate a disk drive by generating one track or stream of MPEG-2 at a constant bit rate or variable bit rate of compressed digital video. Theparticular emulator800 may support constant or variable bit rate MPEG-1 CBR and VBR video at 525/60 (NTSC, 29.97 interlaced frames/sec) and 625/50 (PAL, 25 interlaced frames/sec) with coded frame rates of 24 fps progressive from film, 25 fps interlaced from PAL video, and 29.97 fps interlaced from NTSC video. Interlaced sequences can contain progressive pictures and macroblocks. Theemulator800 can place flags and signals into the video stream to control display frequency to produce the predetermined display rate. Theemulator800 can control interlacing, progressive frame display, encoding, and mixing. Theemulator800 can display still frames encoded as MPEG-2 I-frames for a selected duration, and can generate a plurality of subpicture streams that overlay video for captions, sub-titles, karaoke, menus, and animation.
The[0139]emulator800 imitates a device that sources content by exhibiting the file system and methods of communicating with the file system of the source device. During initiation of a source-sink interaction, a system searches for contact on a source device. Theemulator800 mimics the file structure and content search of the source device in a remote device, permitting selection of content from either the actual source device or the remote device emulating the source device.
In a particular example, the[0140]emulator800 emulates a file system such as a Universal Disk Format (UDF) or micro UDF file system and may support both write-once and rewritable formats. In some examples, theemulator800 can support a combination of UDF, UDF bridge (ISO 9660), and ISO 13346 standards to ensure compatibility with legacy operating systems, players, and computers.
If an emulated transaction is selected, the[0141]emulator800 manages the transaction by exchanging requests and data according to the protocols of a source-sink transaction. Theemulator800 also isolates the source device, intercepting and overriding control signals and data communicated by the source device and permitting signals and data interactions between the sink and the remote device as the emulated source. In various systems and transactions, theemulator800 can imitate a transaction without notification of the sink device. In other systems and transactions, theemulator800 can convey information to the sink device that indicates that emulation is occurring and identifying the actual remote content source, allowing additional control of network interactions, exploiting any additional capabilities of the remote device, and expanding rendering capabilities. For example, theemulator800 can control a transaction to allow simultaneous rendering of content from the source device and an emulating remote device. One specific capability is a picture-in-picture display of source content and remote content. Another specific capability is enhanced web-enabled DVD that extends capabilities to combine content from a DVD with special network-accessed applications.
Software or firmware that is executable by the[0142]emulator800 may include many functions such as media content navigation, user interfacing, servo firmware, and device drivers.
An emulator can be implemented in many forms. FIG. 9 shows one example of an audio-visual system that includes personal computer (PC) based software[0143]900 executable on a personal computer and capable of interacting with an audio-visual device such as aDVD player908. In the example, PC-executable software900 comprises aserver918, arenderer910, and acontrol point932. TheDVD player908 includes an emulator (not shown) that may be implemented, for example, according to the description of FIG. 4, and the PC-based software900 further comprises an interface or link920 that supplies information to the emulator in a suitable format. The PC-based software also comprises audio-visual compression codecs930, for example Windows A/V compression codecs, for coding and decoding information in various formats in conjunction with acontent transcoder914 in therenderer910.
In the illustrative example, the[0144]server918 can be implemented as part ofmedia management software916 that supplies content in various formats for access by theserver918. For example, themedia management software916 may supply various types of content files including music files, photo files, video files, and others. Music files may have formats such as MP3, WMA, and others. Photo files may have formats including JPG, TIFF, GIFF, and others. Video files may have formats including MPG, WMV, DIVX, and others. Themedia management software916 may also supply play lists and graphical user interface (GUI) information such as navigation information and graphic elements.
The[0145]renderer910 may comprise acontent transcoder914 and acontent request handler912. Theserver918 can supply GUI graphic elements and content files to thecontent transcoder914 for transcoding, according to various parameters, such as frame rate, sample rate, NTSC/PAL information, and the like, determined by thetranscoder914 in association with a VOB multiplexer924 in thelink920. Thecontent request handler912 requests content from theserver918 via call such as a HTTPGet( ) command.
The[0146]control point932 requests information from theserver918 using commands such as Simple Object Access Protocol (SOAP) commands in the eXtended Markup Language Transmission Control Protocol (XML TCP) protocol. Theserver918 can respond with Unified Resource Identifiers (URIs) for play lists and content. Thecontrol point932 transfers the URIs to thecontent request handler912 in therenderer910.
The[0147]link920 can comprise amenu generator922, a VOB multiplexer924, anIFO generator926, and aUDF generator928 that function, for example, as described in the discussion of FIG. 5. Thelink920 can communication with the A/V device908 using a protocol such as TCP/IP.
Referring to FIG. 10, a schematic block diagram illustrates another implementation of an audio-[0148]visual system1000 that includes emulation to extend rendering functionality. The audio-visual system1000 includes a media renderer withemulation1010 and network-enabledrendering hardware1008. Themedia renderer1000 comprisesrendering hardware1008 and the media renderer withemulation1010. In the illustrative system, themedia renderer1000 can be a media decoder in combination with a communication interface. In a specific example, therendering hardware1008 can be an MPEG decoder coupled to a network interface and an emulator interface. The media renderer withemulation1010 is a computer in any form or a workstation that is capable of receiving information or media content from anetwork1006.
In some systems, the[0149]rendering hardware1008 has only a conventional capability to render native format content but is supplemented with a network interface that enables receiving of content from an alternative source, local or remote. The renderer withemulation1010 receives content in various formats from anetwork1006 and converts the format of the content, if needed, for rendering by therendering hardware1008. Therenderer1010 extends functionality by inclusion of aformat transcoder subsystem1014 that can transcode content from virtually any format to the native format of thehardware renderer1008. Theformat transcoder subsystem1014 can transcode any supported format into the native format capable of handling by therendering hardware1008.
In one example, the media renderer with[0150]emulation1010 can be implemented using a computer-based proxy model in which the rendering function is supported by the computer, for example a personal computer (PC). Therenderer1010 can support any content format that the computer can transcode. In some embodiments, a control point function can also be proxied by the PC. The PC can supply a control point user interface, for example as a DVD menu. A DVD remote controller can then be used to select content. Once the content is selected, the control point is idle.
The[0151]transport service1016 is typically optional and controls some content transfer subsystem operations, typically playback operations such as stop, pause, seek, and the like. Theconnection manager1018 supports thecontent transfer subsystem1012 and theformat decoder subsystem1014 and controls connections associated with a particular device including preparation to receive an incoming transfer, flow control, and support of multiple simultaneous renderers. Therendering controller1020 interacts with therendering hardware1008 alone and enables control of therendering hardware1008 rendering of particular content. In a DVD application, therendering controller1020 controls rendering characteristics such as contrast, brightness, volume, mute, and the like. Functions such as handling of multiple, dynamic instances enables functionality such as picture-in-picture.
The media renderer with[0152]emulation1010 can include acontent transfer subsystem1012 that can receive content from thenetwork1006, and aformat transcoder subsystem1014. Theformat transcoder subsystem1014 detects the format of the received content, determines whether the content format is supported by therendering hardware1008 and, if not, transcodes the content into a supported format. Software programs that execute in therenderer1010 control information transfer, transcoding, and therendering hardware1008. In the illustrative system, aconnection manager1018 controls accessing and receipt of content from thenetwork1006 through operations of thecontent transfer subsystem1012, and controls transcoding definition and activation through operations of theformat transcoder subsystem1014. Arendering controller1020 sends signals to therendering hardware1008 to set rendering parameters to control rendering of incoming content and initiate rendering operations.
The[0153]renderer1010 can identify the content formats supported by therendering hardware1008 during initialization. Upon accessing content on thenetwork1006, therenderer1010 analyzes the network content and determines the received content format. If the received content format is not supported by therendering hardware1008, theformat transcoder subsystem1014 is initialized and activated to transcode the received content into a supported format.
The emulating[0154]renderer1010 may be implemented in various forms. For example, therenderer1010 may be implemented as a self-contained board or integrated circuit that can be installed in a computer system. The various functional elements may be implemented as hardware, firmware, software, other technologies, or various combinations. In some examples, a portion of therenderer1010 may be implemented as a board or integrated circuit, and a portion could be implemented is software that executes from one or more processors in a computer system.
Referring to FIG. 11, a schematic mixed block and pictorial diagram depicts an example of an application for an[0155]emulator1120. A DVD audio-visual system1100 includes aDVD player1104 and atelevision1102. TheDVD player1104 has several conventional functional elements including aDVD drive subsystem1106, anMPEG decoder1108, and amemory1110. TheDVD drive subsystem1106 sources content for rendering. TheMPEG decoder1108 receives content from theDVD drive subsystem1106 via abus1112, for example an IDE or A/V bus, and renders the content for presentation on thetelevision1102 or other video screening device.
Functional capabilities of the DVD audio-[0156]visual system1100 are substantially increased by adding theemulator1120 to supply content from a nearly infinite number of sources by operating as a network interface. Theemulator1120 is coupled into thebus1112 to function as a DVD to Internet Protocol (IP) link toEthernet1130.
Referring to FIG. 12, a schematic block diagram illustrates various connections that can be made between an[0157]emulator1200 and a communication system that includes asource1210, asink1212, and apathway1214 for communicating from thesource1210 to thesink1212. Theemulator1200 can have multiple links for coupling to buses, devices, processors, and components including, for example, bus connections, Ethernet media access control (MAC) links, serial links, parallel links, memory controller links, direct memory access (DMA) links, parallel I/O (PIO) links, register interfaces, shared RAM interfaces, radio frequency links, universal serial bus (USB) links. Accordingly, theemulator1200 can directly or indirectly tap or connect to any of thesource1210, thesink1212, and thepathway1214.
One type of[0158]link1220 connects theemulator1200 to thepathway1214, typically as a bus interface. Thepathway1214 can be a nonstandard bus or may be one of several various standard buses such as Integrated Device Electronics (IDE), audio/visual (A/V), advanced technology attachment packet interface (ATAPI), Small Computer Systems Interface (SCSI), or other buses. Thelink1220 can be a standard bus connection to a standard bus such as a TAPI connection and can emulate a device at the physical level or logical level.
A[0159]link1222 from theemulator1200 to thesink1212 is commonly a non-tapi connection such as a physical interface through a media access control (MAC) module. Thesink1212 can be any type of rendering device such as an MPEG decoder, electronic picture frame, audio player, and other display device.Sink devices1212 can also be various other devices and components such as computers, work-stations, laptop computers, calculators, palm computers, mobile telephones, televisions, video cassette recorders, compact disk (CD) or digital versatile disk (DVD) players and recorders, jukeboxes, karaoke devices, camcorders, set-top boxes, MP3 players, still-image cameras, remote control devices, control panels, televisions with embedded MPEG decoders, personal video recorders (PVRs), and other control devices and information storage, retrieval, and display devices.
Emulation directly at the[0160]sink1212 is commonly at the logical level.
A[0161]link1224 from theemulator1200 to thesource1210 is commonly a non-tapi connection such as a physical interface through a media access control (MAC) module. Thesource1210 can be any type of information supplying device such as a DVD drive, CD drive, CD-ROM drive (CD-R, CD-R/W), or can also be a hard disk drive, tape drive, tape library, and the like. Thesource device1210 can also be various other devices and components such as remote network storage facilities, computers, work-stations, laptop computers, calculators, palm computers, mobile telephones, and other retrieval devices.
Emulation at the[0162]source1210 is commonly at the logical level. Emulation at thesource1210 can have a connection at any entry position including, but not limited to, a memory interface, a processor interface, a disk data interface, an input interface such as a pickup head on a data channel, a serial interface, a parallel interface, a GPIO port, and the like.
Referring to FIG. 13, a schematic block diagram illustrates an[0163]information hallway application1300 of anemulator1310 that is configured to function as part of a cable/DSL gateway. Theillustrative application1300 utilizes theemulator1310 to network various types of devices in multiple rooms, for example aliving room1302 and astudy1304 in a household via aninformation hallway1306. In some examples, theinformation hallway1306 can be via Ethernet, wireless (e.g.IEEE 802 Standards Working Groups), or other suitable network connections.
In this example, the[0164]living room1302 contains entertainment devices and appliances such as atelevision1324 andDVD player1326. Thestudy1304 contains computing and communications equipment such as a cable/DSL gateway that may incorporate theemulator1310, apersonal computer1316, and aVGA monitor1314 functioning as a display screen for thePC1316. In other embodiments, theemulator1310 may be contained in other devices or equipment, such as thePC1316. The cable/DSL gateway enables networking with remote systems, here via an Internet Service Provider (ISP)1308.
Broadband Internet enables access to a wide variety of video and musical content over the Internet. Various usage models are well-established for music, including compressed content download via the Internet for usage on other playback devices such as portable MP3 and CD players. Various computer suppliers support MP3 players, mixing the concepts of computing and entertainment since Ethernet and phone network-connected MP3 decoders are intended for entertainment usage as part of a home stereo system.[0165]
The[0166]information hallway1306 enables communication of all types of content between different rooms and various entertainment, computing, and communication usages. Media no longer needs to be carried from room-to-room. Theemulator1310 enables access of all content throughout the house or even remote from the house. Low cost wireless 802.11 (WIFI) facilitates content sharing for homes that are difficult to wire and enable content transfer to a car while parked in the garage or nearby.
A similar usage model is developing for Internet video content with hundreds of thousands of video titles now available for download and encoded from commercial video broadcasts, VHS tape, VCD, DVD, amateur, and home video. Movie studios are making premium movies available for purchase and per-per-view download over the Internet, encoded to reduce size to a few hundred megabytes with near DVD quality.[0167]
One problem solved by the[0168]emulator1310 is facilitating downloaded movie access to thetelevision1324. In addition to assisting content access, theemulator1310 also can transcode content to meet requirements of the devices rendering the content. Theemulator1310 can also implement digital rights management functionality to permit content transfer only when authorized.
In some embodiments, volatile memory in the[0169]emulator1310 is implemented with a large capacity so that the DVD player can present video information without glitches. A large memory size has increased importance for communication connections that are less reliable. Generally, a volatile memory size of 8 megabytes may be sufficient for a highly reliable communication connection. A memory capacity of 64 or 128 megabytes may be more suitable for less reliable interconnections. An increase in storage operates analogous to an increase in bandwidth for a system that accesses media content over a network.
Suitability of memory capacity in a particular configuration also depends on the data transfer rate of the communication connection. If the data transfer rate is smaller than the rate that the[0170]emulator1310 supplies data to a video display, then the video information can be stored in the volatile memory for all or a part of a video presentation. In one example, if the video presentation rate exceeds the communication rate, a sufficient amount of video information can be stored before beginning presentation so that presentation of the video information does not outpace the continuing video information transfer.
The[0171]emulator1310 enables a user to search, find, and download content from any of a computer, an entertainment device or appliance, or a network and view the content in any of multiple desired locations.
With addition of the[0172]emulator1310, thePC1316 can operate in the background as a “communication facilitator” and “content formatter.” Additional functionality made possible by theemulator1310 includes extending consumer access to “open” and “premium” content. Combining functionality of thePC1316 and theDVD player1326 facilitates usage since familiarity of DVD player menu interface is extended to content access from thePC1316 and the network or Internet since the extended system uses the same remote control and menu features of DVD system. The combined system also improves flexibility to operate with any broadband internet service, supplying simple integration for Ethernet, 1394, wireless standards such asIEEE 802 Standards Working Groups and Bluetooth, or any other connectivity into a low-cost DVD player.
In some applications, manufacturers and original equipment manufacturers (OEMs) can implement the[0173]emulator1310 using only a simple PCB level change to avoid impacting existing system components or firmware, if desired.
The[0174]emulator1310 can supply functional basis for an Ethernet MPEG receiver that serves as a PC to television link. Theemulator1310 can be used to widely expand functionality of existing products that contain MPEG decoders such as digital cable and satellite set top boxes, PVRs, game consoles, and DVD players.
An Ethernet MPEG receiver comprises an MPEG decoder, an interface to the MPEG decoder, and an emulator for converting information from a non-standard form to a form expected from a standard media drive. The Ethernet MPEG receiver creates a link from a personal computer (PC)[0175]1326 to television (TV)1324 so that a user can search for and download content from either the PC or the TV and view the content in either location. The Ethernet MPEG receiver is a logical interface that supplies data to the MPEG decoder in an expected format so that the PC performs the function of supplying data in the format expected by the interface device.
In some applications, the[0176]emulator1310 can be used to connect a PC and DVD player via Ethernet to enable users to search and play content using either device seamlessly.
In some embodiments of the[0177]emulator1310, resources of the computer can be used to download and transcode content for streaming playback on the television using the MPEG decoder of the DVD player.
In some embodiments, the user interface for the DVD player can remain unchanged and the DVD remote control can be used for Internet video playback control in the manner of DVD disc playback usage.[0178]
Referring to FIG. 14, a schematic block diagram illustrates an example of a multiple-media receiver/[0179]recorder1400 comprising anemulator1400 that functions as an input selector or media switch coupled via apathway1414, for example a bus, to one ormore renderers1430,1432,1434. Theemulator1410 can select media content frommedia sources1420,1422,1424 ormedia storage elements1426,1427,1428 that are internal to a device or system such as a set top box or receiver/recorder. Some devices or systems may omit internal media sources and/or internal media storage elements. Theemulator1410 can also access media content from network devices connect via a network interface, for exampleremote sources1440,1442 orremote storage elements1444,1446.
The[0180]emulator1410 accesses input signals, for example in the form of video input streams from one or more sources. Various forms of video signal forms include, for example, National Television Standards Committee (NTSC) or PAL broadcast formats, and digital formats based on Moving Pictures Experts Group 2 (MPEG2) and MPEG2 Transport standards such as Digital Satellite System (DSS), Digital Broadcast Services (DBS), or Advanced Television Standards Committee (ATSC). The MPEG2 Transport standard formats a digital data stream from an analog television source transmitter, allowing a television TV receiver to disassemble the input signals to find particular programs in a multiplexed program signal.
For signals that are in a format that can be rendered by a selected[0181]renderer1430,1432, or1434, theemulator1410 passes through the signals to the renderer unaltered. For signals that are not in a suitable rendering format, theemulator1410 reformats or transcodes the signals to the suitable format, for example MPEG streams. An MPEG2 transport multiplex supports multiple programs in the same broadcast channel, with multiple video and audio feeds and private data. Theemulator1410 can tune the channel to a particular program, extracts a particular MPEG program, and transmit the MPEG signals to thepathway1414 for rendering by the selected renderer.
The[0182]emulator1410 can encode analog television signals into an MPEG format using separate video and audio encoders in a manner transparent to the system. Theemulator1410 may modulate information into Vertical Blanking Interval (VBI) of the analog TV signal using one or more of multiple techniques. North American Broadcast Teletext Standard (NABTS) may be used to modulate information onto lines10 through20 of an NTSC signal, using line21 for Closed Caption (CC) and Extended Data Services (EDS). Signals can be decoded by theemulator1410 and passed to renderers in the manner of MPEG2 private data channel delivery.
The[0183]emulator1410 can mediate signals between multipleinternal media sources1420,1422,1424 andmedia storage elements1426,1427,1428 and multiple externalremote sources1440,1442 andremote storage elements1444,1446, as well as from internal or external processes and memory. Theemulator1410 can convert input streams, for example to an MPEG stream, and sent to thepathway1414. Theemulator1410 can buffer the MPEG stream into memory. Theemulator1410 can perform two operations if a user is watching real time TV. Theemulator1410 can send the stream to a renderer, forexample renderer1420, and simultaneously write the stream to a storage, forexample storage1426 such as a hard disk drive.
The[0184]renderer1420 receives MPEG streams as an input signal and produces an analog television signal according to the NTSC, PAL, or other standards. Therenderer1420 commonly may contain an MPEG decoder, On-Screen Display (OSD) generator, analog TV encoder and audio logic. The OSD generator enables program logic to generate images for overlay on the analog television signal. Therenderer1420 can modulate information supplied by the program logic onto the VBI of the output signal in a number of standard formats, including NABTS, CC and EDS.
While the invention has been described with reference to various embodiments, it will be understood that these embodiments are illustrative and that the scope of the invention is not limited to them. Many variations, modifications, additions and improvements of the embodiments described are possible. For example, those having ordinary skill in the art will readily implement the steps necessary to provide the structures and methods disclosed herein, and will understand that the process parameters, materials, and dimensions are given by way of example only. The parameters, materials, and dimensions can be varied to achieve the desired structure as well as modifications, which arc within the scope of the invention. Variations and modifications of the embodiments disclosed herein may be made based on the description set forth herein, without departing from the scope and spirit of the invention as set forth in the following claims.[0185]
In the claims, unless otherwise indicated the article “a” is to refer to “one or more than one”.[0186]