Methods and systems enable uncompressed source data, corresponding to previously-compressed data, to be manipulated or otherwise modified, prior to being rendered by a rendering application. For example, audio data can be modified to include additional audio content, and/or video data can be modified to include additional video content. Accordingly, when the modified or manipulated source data is rendered by the rendering application, it can contain additional information that was not part of the previously-compressed data.
|
11. A computer-implemented method comprising:
receiving a file comprising compressed data and information associated with an encoder that compressed source data corresponding to the compressed data, the compressed data comprising audio or video data, said information being configured for use in locating a first decoder that corresponds to the encoder and which is to be used to uncompress the compressed data;
searching for the information;
replacing the information with different information without modifying the compressed data, wherein the different information is associated with a second decoder that is different from the first decoder and which is to be used, at least in part, to uncompress the compressed data;
uncompressing the compressed data to provide uncompressed data comprising the source data; and
modifying the uncompressed data by adding new data to the source data, wherein the new data does not comprise content of the source data.
1. A computer-implemented method comprising:
providing compressed data that comprises audio or video data and which has been compressed using a first encoder having an associated first decoder that can be used to uncompress the compressed data, the compressed data having an associated id tag associated with the first decoder and which was previously removed and replaced with a second id tag that references at least one second decoder that is different from the first decoder, the associated id tag having been removed and replaced with the second id tag without modifying the compressed data;
providing the compressed data to said at least one second decoder that is different from the first decoder and which is involved in actually causing the compressed data to be uncompressed;
uncompressing the compressed data to provide uncompressed data comprising source data; and
operating on the uncompressed data to provide modified uncompressed data, wherein the operating comprises adding new data to the source data, wherein the new data does not comprise content of the source data.
7. A computer-implemented method comprising:
providing a compressed file that comprises audio or video data and which has been compressed using a first encoder having an associated first decoder that is to be used to uncompress the compressed file, the compressed file comprising at least one id tag that is associated with a second decoder that is different from the first decoder and that serves as a wrapper for the first decoder, the at least one id tag having replaced an original id tag without modifying the compressed file, wherein the original id tag is associated with the first decoder and the first encoder that compressed the compressed file;
searching for said at least one id tag to identify the second decoder;
providing the compressed file to the second decoder so that the compressed file can be uncompressed;
using the second decoder, providing the compressed file to the first decoder;
uncompressing the compressed file using the first decoder to provide an uncompressed file comprising source data;
providing the uncompressed file to a modification module;
modifying the uncompressed file using the modification module to provide a modified uncompressed file, wherein the modifying comprises adding new data to the source data, wherein the new data does not comprise content of the source data;
providing the modified uncompressed file to the second decoder;
using the second decoder, providing the modified uncompressed file to a rendering application; and
rendering the modified uncompressed file on a client device using the rendering application.
2. The method of
3. The method of
4. The method of
5. The method of
9. The method of
12. The method of
|
This application is a continuation of and claims priority to U.S. patent application Ser. No. 10/066,862, filed on Feb. 4, 2002, the disclosure of which is incorporated by reference herein.
This invention relates to encoding and decoding methods and systems.
Large files such as media files (e.g. audio, video, audio/video files and the like), are typically compressed for ease of storage and/or transmission. For example, the proliferation of the Internet as a communication medium has enabled users to access and play many different types of media files. Typically, these files are quite large and, as a result, are compressed so that they can be adequately transmitted over a network without consuming too much network bandwidth. On the client end, such files are typically received, stored and/or rendered by a media player. The rendering process typically involves uncompressing the compressed bits of the media file and then rendering the uncompressed bits on a suitable media player.
Many times, it would be desirable to impart, to a compressed file, such as a media file, other useful features in addition to the information that the file contains. For example, advertisers would benefit by being able to associate advertising information with particular media files such as video files. Additionally, it would be desirable to be able, in some instances, to do “voice overs” on certain audio files. Currently, however, there is no simple known way to do this in a straight forward, easily implemented manner.
Accordingly, this invention arose out of concerns associated with providing methods and systems for manipulating compressed files.
Methods and systems enable uncompressed source data, corresponding to previously-compressed data, to be manipulated or otherwise modified, prior to being rendered by a rendering application. For example, audio data can be modified to include additional audio content, and/or video data can be modified to include additional video content. Accordingly, when the modified or manipulated source data is rendered by the rendering application, it can contain additional information that was not part of the previously-compressed data.
Overview
The methods and systems described below enable uncompressed source data, corresponding to previously-compressed data, to be manipulated or otherwise modified, prior to being rendered by a rendering application. For example, audio data can be modified to include additional audio content, and/or video data can be modified to include additional video content. Accordingly, when the modified or manipulated source data is rendered by the rendering application, it can contain additional information that was not part of the previously-compressed data. The methods and systems can be employed in a wide variety of different areas such as advertising and content protection to name just a few.
Exemplary Computer Environment
The various components and functionality described herein can be implemented in connection with a number of different types of individual computers.
Generally, various different general purpose or special purpose computing system configurations can be used. Examples of well known computing systems, environments, and/or configurations that may be suitable for use with the invention include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
The functionality of the computers is embodied in many cases by computer-executable instructions, such as program modules, that are executed by the computers. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Tasks might also be performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media.
The instructions and/or program modules are stored at different times in the various computer-readable media that are either part of the computer or that can be read by the computer. Programs are typically distributed, for example, on floppy disks, CD-ROMs, DVD, or some form of communication media such as a modulated signal. From there, they are installed or loaded into the secondary memory of a computer. At execution, they are loaded at least partially into the computer's primary electronic memory. The invention described herein includes these and other various types of computer-readable media when such media contain instructions programs, and/or modules for implementing the steps described below in conjunction with a microprocessor or other data processors. The invention also includes the computer itself when programmed according to the methods and techniques described below.
For purposes of illustration, programs and other executable program components such as the operating system are illustrated herein as discrete blocks, although it is recognized that such programs and components reside at various times in different storage components of the computer, and are executed by the data processor(s) of the computer.
With reference to
Computer 100 typically includes a variety of computer-readable media. Computer-readable media can be any available media that can be accessed by computer 100 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer-readable media may comprise computer storage media and communication media. “Computer storage media” includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computer 100. Communication media typically embodies computer-readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more if its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above should also be included within the scope of computer readable media.
The system memory 130 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 131 and random access memory (RAM) 132. A basic input/output system 133 (BIOS), containing the basic routines that help to transfer information between elements within computer 100, such as during start-up, is typically stored in ROM 131. RAM 132 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 120. By way of example, and not limitation,
The computer 100 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,
The drives and their associated computer storage media discussed above and illustrated in
The computer may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 180. The remote computer 180 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to computer 100. The logical connections depicted in
When used in a LAN networking environment, the computer 100 is connected to the LAN 171 through a network interface or adapter 170. When used in a WAN networking environment, the computer 100 typically includes a modem 172 or other means for establishing communications over the WAN 173, such as the Internet. The modem 172, which may be internal or external, may be connected to the system bus 121 via the user input interface 160, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 100, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
Exemplary Encoding/Decoding Process
As an example, consider
In accordance with one embodiment, a file containing compressed data is processed in such a way as to associate it with a decoder that does not correspond to the encoder that originally compressed the file's source data. The file is then processed by the decoder in such a way as to uncompress the compressed data, manipulate or modify the uncompressed data in some desirable way, and then provide the manipulated or modified data to a rendering application for rendering.
One exemplary way that this can be done is as follows. The ID tag that is typically associated with the compressed data and which identifies the encoder that was used to compress the source data is replaced with a new ID tag. The new ID tag is not associated with the encoder that was used to compress the source data (and hence the associated decoder that can be used to uncompress the compressed data). Rather, the new ID tag is associated with a different decoder that, in a sense, acts as a middle man so that the compressed data can be uncompressed and then modified in some way and subsequently provided to the rendering application for rendering.
Consider, for example,
Step 500 receives uncompressed data. This data can be any type of data that is desirable to compress. For example, such data can comprise audio data, video data, audio/video data and the like. Step 502 compresses the uncompressed data using an encoder. Any suitable encoder or encoding application can be used. Step 504 associates an encoder ID tag with the compressed data to provide a file. The ID tag can be used to later identify the encoder when decoding is desired. Step 506 processes the file to identify the encoder ID tag. This step can be implemented by an encoding application such as application 406 (
The second decoder enables the file to be uncompressed and then manipulated or modified in some way so that when the uncompressed source data is rendered by a rendering application, it is rendered in a different way.
New or Second Decoder
On the client end, a new or second decoder is provided and registered with the operating system. This second decoder is associated with the new ID tag so that when the client attempts to render the file, the new decoder is used in the decoding process. As an example, consider
There, a rendering application 600 is engaged by the user in an attempt to render or otherwise play file 404a. In the usual manner, the rendering application 600 retrieves or otherwise receives file 404a and searches for the file's ID Tag. Instead of finding the original ID Tag that is associated with the encoding encoder (e.g. encoder 402 (FIG. 4)), the rendering application locates the New ID Tag and performs a query on the New ID Tag. When the query is executed, instead of returning a reference for the decoder associated with the encoding encoder, the query returns a reference that can be used to load a new decoder 602. The new decoder 602 functions to enable the compressed file to be uncompressed so that the uncompressed source data can be manipulated in some way.
The modification module 700 can perform a wide variety of modifications to the source data. For example, the modification module can add data to the source data, remove data from the source data, or manipulate the source data. Consider, for example, a media file comprising video data. The modification module can process the source data to provide an advertisement that can overlay a portion of the source data when it is ultimately rendered. For audio data, the modification module can add data that can be used, for example, as a “voice over”. The modification module can also be used to translate source data from one language to another. Consider, for example, textual data that is written in English. Assume that a French content provider desires to provide the textual data in French so that its French clients can enjoy the data as well. In this example, the French content provider can provide a new decoder 602 and a modification module 700 that serves to translate the textual data into French. Other uses of the modification module can include processing the bits of the source data using digital signal processing (DSP) techniques to modify the way in which the source data is to be rendered. In addition, the modification module can be used for implementing digital security techniques. For example, content providers may desire to insert watermarks or other identifying features into the source data that they provide. By having a properly configured modification module, security measures can be provided to protect the provider's content.
Needless to say, there are simply a multitude of applications for the modification module. By providing a new decoder 602 that is a wrapper for the original decoder, a high degree of flexibility can be provided for those who desire to modify source data.
Step 800 receives a file containing compressed data. An exemplary file 404a is shown in
Example Using Audio/Video Data
In this example, assume that a content provider has opted to modify the video data and not the audio data. Perhaps the content provider has opted to add an advertisement to the video data. Assume now that a user on a client device is executing a rendering application 906 and selects the ASF file 900 for rendering. The rendering application processes the ASF file 900 and identifies an audio decoder 908 that is to be used to uncompress the audio stream 902. Accordingly, the rendering application 906 hands the compressed audio data to the audio decoder 908 and receives back the uncompressed audio data. This audio data can now be rendered by the rendering application (as indicated by the speaker appearing to the right of the rendering application).
The rendering application 906 also identifies a new video decoder 910 that is to be used to uncompress the video stream 904. Recall that one way of doing this is to provide a new ID tag with the video stream 904 that corresponds to the new video decoder 910. Accordingly, rendering application 906 hands the compressed video data to the new video decoder 910 which, in turn, hands the compressed video data to the original video decoder 912. The original video decoder 912 uncompresses the compressed video data and provides the uncompressed source data to modification module 914 which then operates on the uncompressed source data to, for example, insert an advertisement into the source data. The modification module 914 then provides the modified source data so that the new video decoder 910 can return the modified source data to the rendering application 906 for rendering, as indicated by the graphics directly below the illustrated speaker.
The described methods and systems facilitate flexibility insofar as enabling uncompressed source data, corresponding to previously-compressed data, to be manipulated or otherwise modified, prior to being rendered by a rendering application. Accordingly, when the modified or manipulated source data is rendered, it can contain additional information that was not previously part of the previously-compressed data.
Although the invention has been described in language specific to structural features and/or methodological steps, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features or steps described. Rather, the specific features and steps are disclosed as preferred forms of implementing the claimed invention.
Patent | Priority | Assignee | Title |
10057293, | Sep 24 2014 | Oracle International Corporation | Method to modify android application life cycle to control its execution in a containerized workspace environment |
10225287, | Sep 24 2014 | Oracle International Corporation | Method to modify android application life cycle to control its execution in a containerized workspace environment |
8160154, | Feb 04 2002 | Microsoft Technology Licensing, LLC | Encoding and decoding methods and systems |
8363731, | Feb 04 2002 | Microsoft Technology Licensing, LLC | Encoding and decoding methods and systems |
8913609, | Mar 30 2006 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | System and method for demultiplexing different stream types in a programmable transport demultiplexer |
9344422, | Sep 24 2014 | Oracle International Corporation | Method to modify android application life cycle to control its execution in a containerized workspace environment |
9563772, | Mar 15 2013 | Oracle International Corporation | Methods, systems and machine-readable media for providing security services |
9602549, | Mar 15 2013 | Oracle International Corporation | Establishing trust between applications on a computer |
9645992, | Aug 21 2010 | Oracle International Corporation | Methods and apparatuses for interaction with web applications and web application data |
9722972, | Feb 26 2012 | Oracle International Corporation | Methods and apparatuses for secure communication |
Patent | Priority | Assignee | Title |
5907374, | Jun 30 1997 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Method and apparatus for processing a compressed input bitstream representing an information signal |
6647061, | Jun 09 2000 | Google Technology Holdings LLC | Video size conversion and transcoding from MPEG-2 to MPEG-4 |
6690832, | Oct 26 2000 | InfoPrint Solutions Company, LLC; INFOPRINTSOLUTIONS COMPANY, LLC, A DELAWARE CORPORATION | Method, system, and program for decoding compressed data at multiple points |
6941019, | May 10 2000 | International Business Machines Corporation; International Business Machines | Reentry into compressed data |
7116712, | Nov 02 2001 | Entropic Communications, LLC | Apparatus and method for parallel multimedia processing |
7190285, | Feb 04 2002 | Microsoft Technology Licensing, LLC | Encoding and decoding systems |
7612691, | Feb 04 2002 | Microsoft Technology Licensing, LLC | Encoding and decoding systems |
20020162110, | |||
20030004793, | |||
20040096110, | |||
JP20013038857, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Mar 18 2005 | Microsoft Corporation | (assignment on the face of the patent) | / | |||
Oct 14 2014 | Microsoft Corporation | Microsoft Technology Licensing, LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 034543 | /0001 |
Date | Maintenance Fee Events |
Nov 14 2014 | REM: Maintenance Fee Reminder Mailed. |
Apr 05 2015 | EXP: Patent Expired for Failure to Pay Maintenance Fees. |
Date | Maintenance Schedule |
Apr 05 2014 | 4 years fee payment window open |
Oct 05 2014 | 6 months grace period start (w surcharge) |
Apr 05 2015 | patent expiry (for year 4) |
Apr 05 2017 | 2 years to revive unintentionally abandoned end. (for year 4) |
Apr 05 2018 | 8 years fee payment window open |
Oct 05 2018 | 6 months grace period start (w surcharge) |
Apr 05 2019 | patent expiry (for year 8) |
Apr 05 2021 | 2 years to revive unintentionally abandoned end. (for year 8) |
Apr 05 2022 | 12 years fee payment window open |
Oct 05 2022 | 6 months grace period start (w surcharge) |
Apr 05 2023 | patent expiry (for year 12) |
Apr 05 2025 | 2 years to revive unintentionally abandoned end. (for year 12) |