METHOD AND SYSTEM FOR DISTRIBUTING PROCESSING INSTRUCTIONS WITH ADATA TO BE PROCESSED

Abstract: A Method and system for distributing instructions for processing source data along with the source data to an extensible device. The extensible device receives the source data along with instructions for processing the source data. The extensible device in one embodiment includes a central processing unit, a memory, and output interface. The extensible device stores the instructions in memory as the instructions are received. The extensible device then directs the central processing unit to process the received source data in accordance with the instructions that have been stored in the memory. As part of this processing, the extensible device may send data to the output interface. In this way, the instructions for processing the source data can be customized to the source data or can include improvements in processing source data.

Description: METHOD AND SYSTEM FOR DISTRIBUTING PROCESSING INSTRUCTIONS WITH DATA TO BE PROCESSED CROSS-REFERENCE TO RELATED APPLICATIONS This application is related to U.S. Patent Application No. 60/085,021 filed on May 11, 1998, which is hereby incorporated by reference. TECHNICAL FIELD The described technology relates generally to processing of data via a computer system and, more specifically, to distributing the computer instructions for processing the data. BACKGROUND Home entertainment systems are increasingly being implemented as complex interconnections of special-purpose computer systems, which are generally referred to as "home entertainment devices." These home entertainment devices may be video and audio receivers, DVD players, CD-ROM players, sound mixers, amplifiers, speaker systems, display devices, and so on. Many different companies develop (e.g., design and manufacture) such home entertainment devices. Each company may develop its devices using proprietary interconnect technology. As a result, the input and output of devices developed by different companies may not be compatible. For example, a DVD player developed by one company may output data that is incompatible with a speaker subsystem developed by another company. Thus, it may be impractical to have a home entertainment system that includes devices that are developed by different companies. Various standards, such as the IEEE 1394 "Standard for High Performance Serial Bus," have been developed to facilitate the development of compatible home entertainment devices. Any devices that conform to such standards can be interconnected in home entertainment system. In addition, these standards define a common bus interconnection mechanism by which any devices connected to the bus can communicate with any other device connected to the bus. In this way, a standard bus cabling can be used within a house for interconnecting these home entertainment devices. Prior to such a common bus interconnection mechanism, each device needed to be connected on a point-to-point basis with each other device in order to transmit data to or receive data from that device. For example, a CD player would need a point-to-point connection to each speaker system to which its output is to be directed and a point-to-point connection to any amplification system to which its output is to be sent. With the use of the common bus interconnection mechanism, each device simply needs to be connected to a common bus in order to communicate with each other device. Although the interconnection of home entertainment devices has been greatly simplified because of common bus and interconnection standards, the home entertainment devices are typically hard-coded with their processing logic. For example, a DVD player may have a computer program stored in ROM that inputs the digital data from a DVD disk and processes the digital data in a preprogrammed way (e.g., AC-3 decoding) prior to outputting the digital data to a speaker system. Because such home entertainment devices are hard-coded, they cannot easily take advantage of improvements in techniques for processing such digital data. For example, a DVD player that supports AC-3 decoding may not also support DTS decoding or an improved AC-3 decoding. It may be theoretically possible to upgrade such home entertainment devices by having the owner ship the device to an upgrade facility of the company. Such upgrading, however, may be cost prohibitive and inconvenient. More typically, as new processing techniques are developed, companies develop new home entertainment devices to take advantage of such techniques. It is, of course, expensive to develop and market such new home entertainment devices and expensive and inconvenient for the consumer to purchase such devices every time an improvement is made. SUMMARY A method and system for distributing instructions for processing source data along with the source data to an extensible device is provided. The extensible device receives the source data along with instructions for processing the source data. The extensible device in one embodiment includes a central processing unit, a memory, and output interface. The extensible device stores the instructions in memory as the instructions are received. The extensible device then directs the central processing unit to process the received source data in accordance with the instructions that have been stored in the memory. As part of this processing, the extensible device may send data to the output interface. In this way, the instructions for processing the source data can be customized to the source data or can include improvements in processing source data. The extensible device may include default instructions that are used for processing source data that is not accompanied by instructions. The extensible device may also store the received instructions so as to supersede the existing default instructions. BRIEF DESCRIPTION OF THE DRAWINGS Figure 1 is a block diagram illustrating example components of an extensible device. Figure 2 is a flow diagram of an example implementation of a process source data component. Figure 3 is a flow diagram of an example implementation of the receive data component. Figure 4 is a flow diagram of an example implementation of a receive specialized instructions routine. Figure 5 is a flow diagram of an example implementation of a receive source data routine. Figure 6 is a block diagram of an example of data source component. Figure 7 is a flow diagram of an example implementation of the combine data component. DETAILED DESCRIPTION A method and system for distributing computer instructions for processing source data is provided. The distribution system in one embodiment distributes the computer instructions for processing the source data along with the source data. A device, such as a home entertainment device, may receive and store the computer instructions in its computer memory. The device can then execute the stored computer instructions to process the source data. In this way, as new techniques are developed for processing source data, computer instructions for implementing these new techniques can be distributed to devices that process the source data. These new techniques may be related to enhanced signal processing, improved encryption, improved compression, or any other improved processing of the source data. These techniques may also include user interfaces and game or educational programming associated with the source data that may be implemented, for example, as Java Applets. The new techniques may relate to the parsing of the source data that is stored in a new or unusual format (e.g., number of bits in an audio sample, sample rate, and number of channels) and to copy protection algorithms, such as "5C" or "XCA," for the source data. The 5C and XCA algorithms are competing to become the industry standard, and the distribution system would allow devices to be developed today that could handle whatever algorithm becomes the standard. The processing of the source data may include enhanced DOLBY Digital decoding, enhanced Digital Theatre Sound ("DTS") decoding, Meridian Lossless Packing ("MLP") decoding, MP3 decoding, QUICKTIME decoding, REALPLAYER decoding, DV digital video decoding, MPEG II layer 2 decoding, and virtual surround sound decoding. The devices that are capable of storing and executing such computer instructions are referred to as "extensible" devices. In one embodiment, the extensible devices include a central processing unit, a bus connection interface, a memory, a device-specific input/output interface, and default or standard computer instructions. For example, if the extensible device is a speaker system, the device-specific input output interface may be a digital-to- analog converter that is connected to a speaker and the default computer instructions may input source data in a predefined format and perform some standard processing on the data before sending the data to the device-specific input/output interface. The extensible device may include an extension component that detects that specialized (or customized) computer instructions are being provided along with the source data. When the extension component detects that such computer instructions are provided, it controls the storing of the specialized computer instructions into memory of the extensible device. The extension component may also set a flag to indicate that the device is to process the next source data received using the specialized computer instructions. When the extensible device receives the source data, it checks the flag and either executes the standard computer instructions or the specialized computer instructions. In one embodiment, the specialized computer instructions may indicate that these instructions should effectively replace the standard computer instructions for further processing of any source data. The extensible device may store such specialized computer instructions in a non-volatile memory such as an EPROM or a flash-EPROM. Alternatively, the specialized computer instructions may be sent to a extensible device independently of the source data. Figure 1 is a block diagram illustrating example components of an extensible device. In this example, the extensible device 100 includes a receive data component 101, an output interface component 102, a process source data component 103, a default instruction memory 104, and a specialized instruction memory 105. The extensible device is shown connected to data source 106. The extensible device may be a DVD player and the data source may be a DVD disk. The receive data component receives the data from the data source and determines whether to the data includes specialized computer instructions. If the data includes specialized computer instructions, then the receive data component stores those computer instructions in the specialized instruction memory. The specialized instruction memory may be volatile or non-volatile memory. If the memory is non-volatile, then the specialized computer instructions may be available for processing of all future source data that is received. When the receive data component receives source data, it forwards the source data to the process source data component. The process source data component first determines whether it should use the default instructions or the specialized instructions. The process source data component may check a flag set by the receive data component to help in this determination. Based on this determination, the process source data component either executes the default instructions or the specialized instructions. As part of its processing, the process source data component may output data to the output interface. Figure 2 is a flow diagram of an example implementation of a process source data component. The process source data component executes a loop waiting for source data to be received and processing the source data. When source data is received, the process source data component determines whether the default or specialized instructions should be used to process source data and then processes the source data accordingly. In step 201, the component waits for source data to be received. In step 202, if a specialized instruction flag is set, then the component continues at step 203, else the component continues at step 204. In step 203, the component sets the next address to execute to the address of the specialized instructions. In step 204, the component sets the next address to execute to the address of the default instructions. In step 205, the component jumps to the set address. The ellipsis between steps 205 and 206 indicates that either default or specialized processing is performed. In step 206, the component returns from default or specialized processing. In step 207, the component resets the specialized instruction flag and loops to step 201 to wait for more source data. Figure 3 is a flow diagram of an example implementation of the receive data component. The receive data component receives data and determines whether the data is specialized instructions or source data. If the data is specialized instructions, then the receive data component stores the specialized instructions in the specialized instruction memory so that the instructions are available for processing subsequently receives source data. In step 301, the receive data component waits for the data to be next received. In step 302, if the data received is specialized instructions, then the component continues at step 303, else the component continues at step 304. In step 303, the component invokes a receive specialized instructions routine to control the storing of the specialized instructions. In step 304, if the data received is source data, then the component continues at step 305. In step 305, the component invokes a receive source data routine to process the source data. The component then loops to step 301 to wait for more data. Figure 4 is a flow diagram of an example implementation of a receive specialized instructions routine. The receive specialized instructions routine first determines whether the specialized instructions indicate whether to use previously received specialized instructions or to use specialized instructions that are now being sent. In step 401, if specialized instructions indicate to use previously received specialized instructions, then the routine continues at step 403, else the routine continues at step 402. In step 402, the routine stores the specialized instructions in the specialized instruction memory as they are being received. In step 403, the routine sets the specialized instruction flag to indicate that the specialized instructions should be used in processing source data. If specialized instructions were previously received, then they are still in the specialized instruction memory. The routine then returns. Figure 5 is a flow diagram of an example implementation of a receive source data routine. In step 501, routine receives the source data and forwards it to the process source data component and then returns. Figure 6 is a block diagram of an example of data source component. In this example, the data source component 600 adds specialized instructions to source data 603. Data source component has the specialized instructions stored in the specialized instruction memory 602. The data source component receives source data from a storage medium, such as a DVD disk. The combine data component 601 combines the specialized instructions with the source data for sending to a extensible device such as a device 100. An alternate example data source would be a DVD disk on which is stored the specialized instructions and the source data. Figure 7 is a flow diagram of an example implementation of the combine data component. The combine data component may optionally not send the specialized computer instructions if the receiving device has already received the specialized instructions. For example, the combine data component may send the specialized instructions only once for a CD-ROM rather than once for each musical score stored on the CD-ROM. If the receiving device may not still have the specialized instructions stored in its memory, for example, because it was powered down and then powered up and the memory is volatile, then the component would need to resend the specialized instructions. In step 701, the combine data component waits for source data to the received. In step 702, if the specialized instructions have been previously sent, then the component continues at step 703, else the component continues at step 704. In step 703, the component sends an indication to use the previously sent specialized instructions. In step 704, the component retrieves the specialized instructions from memory. In step 705, the component sends the specialized instructions. In step 706, the component sends of the source data and then loops to step 701 to wait for more source data. From the foregoing it will be appreciated that although specific embodiments of the technology have been described for purposes of illustration, various modifications may be made to these embodiments without deviating from the spirit and scope of the invention. For example, each of the extensible devices can be developed in a way to ensure that the specialized instructions are not output. In this way, the specialized instructions can only be distributed in an approved way, such as in conjunction with source data. If the specialized instructions include a decryption algorithm, then the source data can only be used with the original data source that includes both the specialized instructions and source data. The extensible devices may be useful for distribution of source data on a try-and-buy basis. For example, the seller of the source data may send specialized instructions with the source data that can only process a portion of the source data (e.g., display the first minute of a two-hour movie). After the customer tries (e.g., views) the portion, then the customer can request access to all the source data. The access can be provided by electronically sending new specialized instructions to the extensible device or by providing a password to the customer which can be used to enable the extensible device to process all the source data. In some embodiments, the specialized instructions can be interleaved with the source data. The extensible device may retrieve the interleaved specialized instructions before processing the source data. This interleaving would make it more difficult for an unauthorized user to use the source data. Accordingly this invention is not limited except as by the appended claims.

Claims: CLAIMS 1. An extensible device for processing source data, comprising: a component for receiving source data along with instructions for processing the source data at the device; a component for storing the received instructions in memory of the device; and a processing unit that executes the received instructions which are stored in the memory to effect the processing of the source data at the device in accordance with the instructions sent along with the source data. 2. The device of claim 1 wherein the memory is a nonvolatile memory. 3. The device of claim 1 including: a component for receiving source data without instructions for processing the source data at the device, wherein the processing unit executes default instructions which are stored in the memory to effect the processing of the source data in a default way. 4. The device of claim 1 wherein the component for storing the received instructions stores the received instructions so as to supersede instructions previously used to process source data. 5. The device of claim 1 wherein the instructions are received before the source data. 6. The device of claim 1 wherein the instructions are interleaved within the source data. 7. The device of claim 1 including: a drive that reads a storage media on which the source data and instructions are stored and provides the source data and instructions to the component for receiving the source data and instructions. 8. The device of claim 7 wherein the received instructions cannot be output from the device. 9. The device of claim 8 wherein the source data can be output from the device. 10. The device of claim 1 wherein the source data and instructions are received from another device via a communications channel. 11. The device of claim 10 wherein the other device has the instructions stored in a memory, wherein the other device receives the source data from an external source, and wherein the other device forwards the source data along with the instructions stored in memory to the device. 12. The device of claim 1 wherein the instructions are for decrypting the source data. 13. A computer-readable medium containing a data structure that includes: source data that can be processed by an extensible device; and computer instructions for performing processing on the source data whereby the source data and computer instructions are transmitted as a unit to the extensible device and wherein the extensible device can execute the computer instructions to perform the processing on the source data. 14. The computer-readable medium of claim 10 wherein the computer-readable medium is a data transmission medium. 15. The computer-readable medium of claim 10 wherein the computer-readable medium is a removable storage medium. 16. The computer-readable medium of claim 10 wherein the computer-readable medium is a disk. 17. The computer-readable medium of claim 10 wherein the computer instructions control the decrypting of the source data. 18. The computer-readable medium of claim 10 wherein the extensible device that that reads the data structure does not output the computer instructions. 19. A method in a device for transmitting source data, comprising: receiving the source data at the device from a source external to the device; retrieving instructions from memory of the device, the instructions for processing the source data; and ttansntitting the retrieved instructions and the received source data to an extensible device so that the extensible device can execute the transmitted instructions to effect the processing of the source data. 20. The method of claim 19 wherein the instructions are for decrypting the received source data. 21. The method of claim 19 including receiving instructions at the device from the source external to the device and transmitting the received instructions and the received source data rather than transrmtting the instructions retrieved from memory. 22. A computer-readable medium containing computer instructions for controlling an extensible device to process source data, by: receiving source data along with instructions for processing the source data at the extensible device; storing the received instructions at the extensible device; and executing the stored instructions to effect the processing of the source data at the extensible device. 23. The computer-readable medium of claim 22, including executing default instructions for processing source data that is received without accompanying instructions. 24. The computer-readable medium of claim 22 wherein the received instructions supersede the default instructions.

Inventors: BARTLETT GREGORY J, KARR BRIAN D, MOSES ROBERT W, BARTLETT, GREGORY, J., KARR, BRIAN, D., MOSES, ROBERT, W.
Applicants: BARTLETT GREGORY J, DIGITAL HARMONY TECHNOLOGIES L, KARR BRIAN D, MOSES ROBERT W, BARTLETT, GREGORY, J., DIGITAL HARMONY TECHNOLOGIES, L.L.C., KARR, BRIAN, D., MOSES, ROBERT, W.
Application year: 1999
Main classification: G06F9
IPC codes: G06F9, G06F13, H04J3, H04L7, H04L12, H04N5, H04N7