Source: https://patents.google.com/patent/US9667685B2/en
Timestamp: 2019-01-21 15:15:16
Document Index: 149610437

Matched Legal Cases: ['art 10', 'Application No. 11831194', 'art 1', 'art 2', 'art 1', 'art 2']

US9667685B2 - Systems and methods for encoding and decoding - Google Patents
US9667685B2
US9667685B2 US15171822 US201615171822A US9667685B2 US 9667685 B2 US9667685 B2 US 9667685B2 US 15171822 US15171822 US 15171822 US 201615171822 A US201615171822 A US 201615171822A US 9667685 B2 US9667685 B2 US 9667685B2
US15171822
US20160277472A1 (en )
BEVARA TECHNOLOGIES, LLC
Systems and methods for multimedia encoding and decoding are disclosed. The systems and methods include multimedia format detection systems, decoder functionality generation systems, decoder instantiation systems, and multimedia processing engines which are capable of selecting a decoder or playback mechanism for each input encoded multimedia stream. The functionality of the decoder or playback mechanism is represented as syntax elements which may be further encoded. The functionality for decoding or playback is then stored or transmitted with the multimedia bitstream. Alternatively, the functionality and multimedia bitstream can be embedded in or associated with a second digital bitstream. Further, the functionality associated with an encoded multimedia stream can be used to instantiate a decoder or playback mechanism and the encoded multimedia stream decoded with the instantiated decoder or mechanism.
This application is a continuation application of U.S. patent application Ser. No. 14/666,024, filed Mar. 23, 2015, now U.S. Pat. No. 9,363,518, which is a continuation application of U.S. patent application Ser. No. 13/212,127, filed Aug. 17, 2011, now U.S. Pat. No. 8,995,534, which claims the benefit of the following U.S. Provisional Patent Applications: (1) U.S. App. No. 61/384,686, filed on Sep. 20, 2010; (2) U.S. App. No. 61/387,327, filed on Sep. 28, 2010; (3) U.S. App. No. 61/443,658, filed on Feb. 16, 2011; and (4) 61/443,660, filed on Feb. 16, 2011. The disclosures of each of the above-referenced applications are considered part of this application, and are each hereby incorporated by reference in their entirety.
The present technology relates to systems and methods for encoding and decoding audio/video and other digital data. More particularly, the technology relates to computer architecture and operating methods that can enable decoders to decode unsupported formats of audio/video and other multimedia.
Digital audio/video and general digital multimedia capabilities can be incorporated into a wide range of devices, including digital televisions, digital direct broadcast systems, wireless communication devices such as radio telephone handsets, wireless broadcast systems, personal digital assistants (PDAs), laptop or desktop computers, digital cameras, digital recording devices, video gaming devices, video game consoles, and the like. Digital devices implement image and video encoding techniques or formats such as JPEG, GIF, RAW, TIFF, PBM, MPEG-2, MPEG-4, and H.264/MPEG-4, Part 10, Advanced Video Coding (AVC), to store, transmit and receive digital images and video efficiently. Digital devices implement audio encoding techniques or formats such as, AAC, MP3, and WAV to store, transmit, and receive digital audio efficiently. Digital devices further implement additional data and graphics encoding techniques or formats such as IGES, 3DT, PS, MNG, ODF and SVG.
Audio, video and other digital data are commonly encoded prior to transmission or storage by an encoder, e.g., a server. The encoding typically consists of operations such as compression or organization into a selected format. The audio, video and other digital data, collectively termed digital multimedia, may be independently stored or provided to a user. Alternatively, the digital multimedia may be embedded in other digital data provided to a user. For instance, an image, video, or animation may be part of an electronic newspaper article, an electronic slideshow, or a technical paper. In either case, the digital multimedia must be decoded prior to display by decoders resident on devices such as mobile devices, DVD players, Blu-Ray players, TV sets, tablets, laptops, computers, or set top boxes. However, a particular decoder may not support decoding of the format used by the encoder. For example, the format used by the encoder may be a legacy format no longer supported by decoders, or may be a new format that the decoder does not support.
Since different decoders may support different formats, traditionally digital multimedia needed to be coded in many different formats to support many different decoders. For example, a user downloading an audio/video file from a server through a network such as the Internet, may have many devices such as a mobile phone, a TV set, a laptop, etc. The downloaded content is traditionally in a single format. However, each of the user's devices may be configured to decode a different format. Accordingly, the user may need to download multiple versions of the audio/video data, each in a different format, for each of the decoders. This leads to bandwidth usage of the network for each version downloaded. Alternatively, the user might download and install a new decoder for each codec type on each device in order to decode the encoded multimedia. However, this solution requires that all legacy formats be supported on all devices. As a third alternative, the user may transcode (decode and re-encode) the digital multimedia received from the downloaded format to each format required for each device. However, this requires computational resources to decode the digital multimedia from the received format and re-encode the digital multimedia into the desired format. Further, this requires memory resources to store each copy of the digital multimedia in each of the desired formats. Additionally, decoding and re-encoding of digital data can lead to loss in quality due to both the loss in precision and the fact that decoding and encoding processes for multimedia data are often lossy as opposed to lossless processes.
One potential technique for avoiding transcoding and to adapt to video content is to provide switches between pre-determined standardized algorithms and tools as suggested in 1997 in Section 2.2.1 of “The MPEG-4 Systems and Description Language: A Way Ahead in Audio Visual Information Representation” by A. Ovaro, et al. As described in Section 2.2.1.3 of this document, the drawbacks include exhaustive specification of all configurations, difficulty of scaling up with increase in available tools, and challenges in anticipating future codec needs.
Similarly, a system for implementing reconfiguration of decoder algorithm elements using flexible or fixed libraries at both the encoder and decoder is proposed in Section 2.2.2 of “The MPEG-4 Systems and Description Language: A Way Ahead in Audio Visual Information Representation” by A. Ovaro, et al. and described in more detail “Whitepaper on Reconfigurable Video Coding (RVC)” ISO/IEC JTCI/SC20/WG11 document N9586 by E. Jang, et al. Information about which tools to select from a decoder library is transmitted either prior to encoded audio/video transmission or is embedded within the compressed audio/video bitstream. Systems for implementing intermittent configuration of algorithms are described in U.S. Pat. No. 5,987,181. Decoding tools or algorithms are selected from local libraries at the decoder through indicators embedded within the compressed bitstream. However, these approaches are limited to specific, pre-determined toolsets and restrict flexibility of systems.
Two systems for partially reconfiguring decoders without the use of local libraries at the decoder are given “Dynamic Replacement of Video Coding Elements” by Bystrom, et al. and “A Syntax for Defining, Communicating, and Implementing Video Decoder Function and Structure” by Kannagara, et al. The first transmits a tool for an inverse transform at the start of an encoded video frame or transmits a binary patch for replacing code in a decoder. The latter transmits encoded algorithms or data with the compressed video and adds the encoded algorithms to the decoder or replaces existing algorithms within the decoder.
One aspect of this disclosure is a multimedia processing engine. The multimedia processing engine comprises a format analyzer configured to determine the format of multimedia data. The engine also includes a functionality generator in communication with the format analyzer. The functionality generator is configured to select or generate functionality for decoding the multimedia data.
Another aspect of this disclosure is a multimedia processing engine comprising a functionality interpreter. The functionality interpreter is configured to receive data corresponding to a functionality. The functionality interpreter is further configured to generate the functionality based on the data. The engine also includes a functionality instantiator. The functionality instantiator is configured to generate a decoder based on the functionality. The decoder is configured to decode multimedia data.
FIG. 1 is a block diagram illustrating a multimedia analyzer/functionality generator that performs techniques as described in this disclosure.
FIG. 2 is a block diagram illustrating a multimedia receiver/decoder that performs techniques as described in this disclosure.
FIG. 3 is a flowchart illustrating an exemplary process for analyzing the format of multimedia data.
FIG. 4 is a flowchart illustrating an exemplary process for generating functionality for a decoder.
FIG. 5 is a flowchart illustrating an exemplary process for generating a decoder.
Various embodiments of systems and methods are described herein for encoding and decoding digital multimedia and/or functionality. In the embodiments described herein, the systems and methods may allow digital multimedia to be encoded and decoded in a more efficient manner. For example, the systems and methods described herein may allow for configuration of a decoder to support decoding of additional formats of multimedia. Further, the systems and methods may allow for any type of configuration, without requiring replacement of the decoder hardware or download of new configuration data from an alternate data source other than the data provided with the digital multimedia.
In one embodiment, the systems and methods described herein correspond to a reconfigurable decoder/receiver of digital multimedia. The systems and methods described herein further correspond to a multimedia analyzer/functionality generator configured to determine the coding format of encoded multimedia and generate syntax elements (e.g., codewords) for use by the receiver that are used to configure the decoder as further discussed below. It should be noted that certain embodiments described below may reference codewords, however, other syntax elements may be similarly used.
FIG. 1 is a block diagram illustrating a multimedia analyzer/functionality generator 100 that performs techniques as described in this disclosure. The multimedia analyzer/functionality generator 100 includes a format analyzer 102 and an optional first buffer 104 each configured to receive multimedia. The optional first buffer 104 is optionally in communication with a format annotator 106. The format analyzer 102 is in communication with a decoder functionality generator 108. The decoder functionality generator 108 is optionally in communication with an optional source/channel encoder 110, which is further in communication with the format annotator 106. Alternatively or additionally, the decoder functionality generator 108 is directly in communication with the format annotator 106. The format annotator 106 is optionally in communication with an optional multiplexer 112. The functionality of the components of the multimedia analyzer/functionality generator 100 is discussed in detail below.
The format analyzer 102 is configured to receive encoded multimedia data. The format analyzer 102 is configured to analyze the encoded multimedia in order to determine the format in which the multimedia is encoded. For example, the format analyzer 102 may compare the encoded multimedia against structures stored in a library such as a local library (e.g., a local memory store) of the format analyzer 102 or a non-local library (e.g., network storage), where different structures are associated with different formats. The structures may include, for example, file names, stream headers, formatting codes, etc. Based on the comparison to the structures, if a format with matching structures is found, the format analyzer 102 determines the format of the encoded multimedia. If matching structures are not found, the format analyzer may determine that the multimedia data are encoded in an unknown format. One of ordinary skill in the art should recognize that the format analyzer 102 may be configured to compare and/or analyze the multimedia to interpret a format in other manners as well. The format analyzer 102 further provides information about the detected format or a signal indicating an unknown format to the decoder functionality generator 108. In an alternate embodiment the format analyzer 102 may be configured to additionally receive a second encoded multimedia stream so that multiple streams may be processed in serial or in parallel. The format analyzer 102 is configured to analyze the second encoded multimedia data in order to determine the format in which the multimedia data are encoded. The format of the second encoded multimedia stream may differ from that of the first encoded multimedia stream. The format of the second stream is provided to the decoder functionality generator 108.
The decoder functionality generator 108 is configured to receive the information about the detected format or a signal indicating an unknown format from the format analyzer 102. If the format is known, then the decoder functionality generator 108 identifies one or more functionalities that are capable of decoding the detected format. The functionalities may further be stored in a local library or a non-local library. The decoder functionality generator 108 may then select a particular functionality based on the identified functionalities that are capable of decoding the detected format. In one embodiment, the decoder functionality generator 108 has only one functionality to select from the library per format. In another embodiment, the decoder functionality generator 108 is configured to receive functionality from a user as an input. In another embodiment the decoder functionality generator 108 may be configured to receive information about a detected format for a second input encoded multimedia stream from the format analyzer 102. The decoder functionality generator 108 may be configured to process the information about the detected formats of the first and second input encoded multimedia streams in parallel or in serial.
In another embodiment, the decoder functionality generator 108 has multiple functionalities to select from the library per format. Different functionalities may have different features such as type of post processing of decoded data, different temporal and spatial prediction algorithms, etc. Further, different functionalities may require different complexity of the decoder. For example, some functionalities may require more or less memory for storage of code and data elements. Some functionalities may require more or less computational power to execute. Some functionalities may require more or less time for the decoder to execute. Some functionalities may require more bandwidth to transmit over a communication channel. Accordingly, the decoder functionality generator 108 may optionally receive an input indicating information regarding the decoder to which the multimedia data are to be sent and/or information regarding the communication channel over which the multimedia data are to be sent. Based on this information, the decoder functionality generator 108 may select a particular functionality for decoding the determined format. For example, functionalities that require less bandwidth to transmit may be used when the information indicates that channel bandwidth is limited. Further, functionalities that require less power may be used when the information indicates the decoder has a particular constraint on power consumption. Further, functionalities that require less storage may be used when the information indicates the decoder has limited space, or a storage medium on which the functionality or encoded multimedia is stored has limited space. Further, compression performance of the decoding algorithms in terms of bitrate for a particular subjective or objective quality level may be used when information regarding this parameter is available. The decoder functionality generator 108 may be configured to weigh multiple points of information in selecting the functionality. The relative weights assigned to each point of information may be static or adjustable. One of ordinary skill in the art should understand similar selection processes for functionalities may be performed.
The decoder functionality generator 108 further sends information regarding the selected functionality to the optional source/channel encoder 110 or directly to the format annotator 106. In one embodiment the information corresponds to syntax elements such as codewords. The decoder functionality generator 108 maps the functionality to one or more syntax elements with optional overhead information. The overhead information may correspond to information used by the decoder to identify and/or decode the syntax elements such as a header that identifies the data as codewords. In another embodiment, the mapping function is performed by a functionality encoder that is part of a separate module than the decoder functionality generator 108. As an example, the decoder functionality generator 108 may generate or select from algorithms written in a specific language, such as C. The decoder functionality generator 108 or the external functionality encoder may then map the C-language instructions to bytecodes or other codewords with optional overhead information. In a further embodiment the functionality generator 108 sends information regarding the selected functionality corresponding to a second input encoded multimedia stream to the optional source/channel encoder 110 or directly to the format annotator 106. The information may be transmitted in sequence with the information regarding the selected functionality of a first encoded multimedia stream or may be sent separately from that of a first encoded multimedia stream.
The optional source/channel encoder 110 is configured to receive the syntax elements and optional overhead information from the decoder functionality generator 108 and to source and/or channel encode the syntax elements and overhead information. Source coding may include compression and various entropy encoding configurations may be used as would be understood by one of ordinary skill in the art. Various channel encoding configurations may be used as would be understood by one of ordinary skill in the art. Furthermore, joint source-channel coding may be used as would be understood by one of ordinary skill in the art. The source/channel encoder 110 may then transmit the encoded data to the format annotator 106.
The format annotator 106 is configured to receive the encoded multimedia from the optional buffer 104 or is in direct communication with the storage or other mechanism supplying the encoded multimedia. The format annotator 106 is further configured to receive the syntax elements and optional overhead information directly from the decoder functionality generator 108, or source and/or channel encoded syntax elements and optional overhead information from the source/channel encoder 110. In one embodiment, the format annotator 106 is configured to act as a multiplexer. Accordingly, the format annotator 106 is configured to multiplex the syntax elements and optional overhead information (source and/or channel encoded or not) with the encoded multimedia to form a single set of bits of data or bitstream corresponding to both pieces of data. In another embodiment, the format annotator 106 keeps the encoded multimedia and syntax elements and optional overhead information (source and/or channel encoded or not) as separate sets of bits of data or bitstreams.
The format annotator 106 then makes the bitstream(s) available to a receiver/decoder or a storage unit. Optionally, the format annotator 106 makes the bitstream(s) available to an optional multiplexer 112. In one embodiment, the optional multiplexer 112 is configured to receive the bitstream(s) from the format annotator 106 and multiplex the bitstream(s) with a second digital data stream. The second digital data stream which is input to the optional multiplexer 112 may be an electronic document, a web page, or other electronic data. In another embodiment, the optional multiplexer 112 is configured to receive the bitstream(s) from the format annotator 106 and multiplex the bitstream(s) with a second digital data stream and overhead. The overhead may consist of information such as synchronization codes, identification information, and additional access mechanism instructions. The optional multiplexer 112 then outputs the multiplexed bitstream to a receiver/decoder or a storage unit. For example, the format annotator 106 may output the bitstream(s) or the optional multiplexer 112 may output the multiplexed bitstream to a storage medium, such as random access memory (RAM) such as synchronous dynamic random access memory (SDRAM), read-only memory (ROM), non-volatile random access memory (NVRAM), electrically erasable programmable read-only memory (EEPROM), FLASH memory, magnetic or optical data storage media (e.g., DVD, Blu-Ray, CD, etc.), and the like. The storage medium may be accessible by the receiver/decoder. Additionally or alternatively, the format annotator 106 outputs the bitstream(s) or the optional multiplexer 112 outputs the multiplexed bitstream for wired or wireless transmission to the receiver/decoder. For example, the format annotator 106 outputs the bitstream(s) or the optional multiplexer 112 outputs the multiplexed bitstream to an appropriate transceiver and/or modem for transmitting the bitstream(s) to the receiver/decoder over one or more communication channels. Any known wired and/or wireless protocol may be used such as, IEEE 802.11 standards, including IEEE 802.11(a), (b), or (g), the BLUETOOTH standard, CDMA, GSM, TDMA, Ethernet (IEEE 802.3), and/or USB. The receiver/decoder may utilize the bitstream(s) to configure a decoder to decode the encoded multimedia data as discussed in further detail below with respect to FIG. 2.
FIG. 2 is a block diagram illustrating a multimedia receiver/decoder that performs techniques as described in this disclosure. The receiver/decoder 200 includes a buffer 202 in communication with a multimedia decoder 204. The multimedia decoder 204 is further in communication with a functionality interpreter and instantiator 206. The receiver/decoder 200 optionally includes a demultiplexer 208 in communication with the buffer 202 and the functionality interpreter and instantiator 206 (directly or via a configuration information entropy decoder 210). The receiver/decoder 200 further optionally includes the configuration information source/channel decoder 210 in communication with the functionality interpreter and instantiator 206. The configuration information source/channel decoder 210 is further in communication with the optional demultiplexer 208, if the format annotator 106 or the optional multiplexer 112 included in the format analyzer/functionality generator 200 creates a joint bitstream. The functionality of components of the multimedia receiver/decoder 200 is described in further detail below.
The presence or absence of optional components in the receiver/decoder 200 may be based on the configuration of components of a corresponding multimedia analyzer/functionality generator (e.g., multimedia analyzer/functionality generator 100) that sends encoded multimedia data and/or functionality to the receiver/decoder 200 for decoding. For example, if multimedia data are sent from an encoder to the receiver/decoder 200 is multiplexed as discussed above with respect to the format annotator 106 and optional multiplexer 112 components of FIG. 1, the receiver/decoder may include the demultiplexer 208 to demultiplex the multiplexed data. In addition, if the data received from the encoder are source and/or channel encoded as discussed above with respect to FIG. 1, the receiver/decoder 200 may include the source and/or channel decoder 210 to decode the data.
The buffer 202 is configured to receive encoded multimedia that has been processed by a multimedia format analyzer/functionality generator such as discussed above with respect to FIG. 1. The buffer 202 may receive the encoded multimedia data as a bitstream directly from the multimedia analyzer/functionality generator. Alternatively, the multimedia format analyzer/functionality generator may send a bitstream with the encoded multimedia multiplexed with syntax elements and optional overhead information corresponding to functionality. In another embodiment, the multimedia format analyzer/functionality generator may send a multiplexed bitstream with the encoded multimedia multiplexed with syntax elements and optional overhead information corresponding to functionality and further multiplexed with a second digital data stream and optional overhead. Accordingly, the demultiplexer 208 receives the bitstream and demultiplexes the data into an encoded multimedia data bitstream with the encoded multimedia data and a functionality data bitstream with both the syntax elements and optional overhead information and an optional second data stream. The demultiplexer 208 then sends the encoded multimedia data bitstream to the buffer 202. The demultiplexer 208 further sends the functionality data bitstream to the configuration information source/channel decoder 210 and/or the functionality interpreter and instantiator 206. In a second embodiment, the demultiplexer 208 receives the multiplexed bitstream and demultiplexes the data into an encoded multimedia data bitstream with the encoded multimedia data and a functionality data bitstream with the codewords and first and second sets of optional overhead information.
The configuration information source/channel decoder 210 is configured to source and/or channel decode the functionality data bitstream when the data are source and/or channel encoded by the corresponding encoder. The configuration information source/channel decoder 210 is configured to send the decoded functionality data bitstream to the functionality interpreter and instantiator 206. In a further embodiment, if functionality data corresponding to a second encoded multimedia stream are transmitted by the multimedia analyzer/functionality generator 100 or received from a storage medium then the configuration information source/channel decoder 210 may be configured to receive the encoded functionality data corresponding to the second stream. Further, the configuration information source/channel decoder 210 may be configured to process functionality data corresponding to multiple compressed multimedia streams in serial or in parallel.
The functionality interpreter and instantiator 206 receives the functionality data bitstream, which includes syntax elements and optional first and second overhead information, as discussed above. The functionality interpreter and instantiator 206 maps the syntax elements to the correct functionality. For example, the syntax elements may map to functionality such as processing elements, structures, and or code segments. Based on these syntax elements, the functionality interpreter and instantiator 206 interconnects, parameterizes, or adds to existing syntax elements used by the multimedia decoder 204. The functionality interpreter and instantiator 206 generates machine code or hardware organization and links the code or organization with the multimedia decoder 204, thus configuring the multimedia decoder 204 based on the received functionality. In a further embodiment, if functionality data corresponding to a second encoded multimedia stream are transmitted by the multimedia analyzer/functionality generator 100 then the functionality interpreter and instantiator 206 may be configured to receive the functionality data corresponding to the second stream. Further, the functionality interpreter and instantiator 206 may be configured to process functionality data corresponding to multiple encoded multimedia streams in serial or in parallel. In another embodiment, the functionality interpreter and instantiator 206 may delay some or all of its operations until triggered by an optional control signal.
The multimedia decoder 204 is configured by the functionality interpreter and instantiator 206 as discussed above. The multimedia decoder 204 further receives the multimedia data to be decompressed according to the received functionality from the buffer 202. The multimedia decoder 204 decompresses the encoded multimedia data and outputs the decoded multimedia data. In a further embodiment, if functionality data corresponding to a second encoded multimedia stream is transmitted by the multimedia analyzer/functionality generator 100 then the multimedia decoder 204 may be configured to decompress the second stream. Further, the multimedia decoder 204 may be configured to process the multiple compressed multimedia streams in serial or in parallel. In another embodiment, the multimedia decoder 204 may delay decoding the encoded multimedia data until triggered by an optional control signal. The multimedia decoder 204 may comprise a field programmable gate array (FPGA) or other suitable configurable circuitry.
FIG. 3 is a flowchart illustrating an exemplary process 300 for analyzing the format of multimedia data. Starting at a step 305, encoded multimedia data are received at a multimedia format analyzer. Continuing at a step 310, the multimedia format analyzer compares the encoded multimedia data to structures (e.g., file names, stream headers, formatting codes, etc.) associated with formats. Further at a step 315, the multimedia format analyzer determines whether or not the multimedia data match structures in the library. If, at step 315, the multimedia format analyzer determines the multimedia data match structures in the library, the process continues to a step 320. At the step 320 the multimedia format analyzer outputs an indicator of the format(s) associated with the matching structures. If at step 315, the multimedia format analyzer determines the multimedia data do not match structures in the library, the process continues to a step 325. At the step 325 the multimedia format analyzer outputs an indicator that the format of the multimedia data is unknown.
FIG. 4 is a flowchart illustrating an exemplary process 400 for generating functionality for a decoder. Starting at a step 405, the multimedia decoder functionality generator receives an indicator of a multimedia format. Continuing at a step 410, the multimedia decoder functionality generator optionally further receives information about a receiver/decoder. The information may include information regarding memory, processor, mobility, or power constraints, etc. of the decoder. Further, at a step 415, the multimedia decoder functionality generator further optionally receives information about a communication channel over which encoded multimedia and/or functionality information is to be sent to the receiver/decoder. The information may include bandwidth limitations, load, etc. Next, at a step 420, the multimedia analyzer/functionality generator determines which functionality to select for decoding multimedia data of the indicated multimedia format based on the received indicator, optional information about the decoder, and/or optional information about the communication channel. Continuing at a step 425, the multimedia analyzer/functionality generator selects syntax elements such as codewords that map to the selected functionality. Further at a step 430, the multimedia decoder functionality generator may provide the syntax elements to the receiver/decoder or storage.
FIG. 5 is a flowchart illustrating an exemplary process 500 for generating a decoder. At a step 505, the receiver/decoder receives syntax elements such as codewords. Continuing at a step 510, the receiver/decoder additionally receives encoded multimedia data. Further at a step 515, the decoder generates a new functionality for decoding the encoded multimedia data based on the received syntax elements. Next at a step 520, the decoder decodes the encoded multimedia data using the new functionality.
One of ordinary skill in the art should recognize that various steps may be added or omitted from the processes 300, 400, and 500. Further, the various steps of the processes 300, 400, and 500 may be performed in a different order than described above.
A microprocessor may be any conventional general purpose single-or multi-chip microprocessor such as a Pentium® processor, a Pentium® Pro processor, a 8051 processor, a MIPS® processor, a Power PC® processor, or an Alpha® processor. In addition, the microprocessor may be any conventional special purpose microprocessor such as a digital signal processor or a graphics processor. The microprocessor typically has conventional address lines, conventional data lines, and one or more conventional control lines.
1. An encoding device, comprising:
determine the format of encoded digital data,
select or generate hardware and software platform independent functionality that decodes the digital data encoded in the determined format,
generate or select hardware and software platform independent syntax elements that contain information to create and implement a new functionality that decodes the digital data encoded in the determined format in a receiver in which decoding of digital data encoded in the determined format is unsupported, and
multiplex the encoded digital data with the syntax elements and send the multiplexed data and syntax elements to a non-transient storage medium as a single set of bits.
2. The device of claim 1, wherein the functionality for decoding the digital data is stored in a library.
3. The device of claim 1, wherein the functionality for decoding the digital data is selected from functionality received from a user.
4. The device of claim 1, wherein the syntax elements comprise codewords.
5. The device of claim 1, further comprising a transmitter configured to transmit the syntax elements to a decoding device.
demultiplex from a non-transient storage medium a single set of bits encoding digital data and hardware and software platform independent syntax elements sufficient for creating and implementing functionality that decodes the encoded digital data and that is unsupported by the multimedia processing engine prior to receiving the single set of bits,
create and implement the new functionality based on the syntax elements, and
generate a decoder based on the created and implemented functionality, decode the encoded digital data using the decoder and the implemented functionality.
7. The device of claim 6, wherein the syntax elements comprise codewords.
US15171822 2010-09-20 2016-06-02 Systems and methods for encoding and decoding Active US9667685B2 (en)
US13212127 US8995534B2 (en) 2010-09-20 2011-08-17 Systems and methods for encoding and decoding
US14666024 US9578078B2 (en) 2010-09-20 2015-03-23 Systems and methods for encoding and decoding
US15171822 US9667685B2 (en) 2010-09-20 2016-06-02 Systems and methods for encoding and decoding
US14666024 Continuation US9578078B2 (en) 2010-09-20 2015-03-23 Systems and methods for encoding and decoding
US20160277472A1 true US20160277472A1 (en) 2016-09-22
US9667685B2 true US9667685B2 (en) 2017-05-30
Angus, Andrew. "Dropbox: Video Sharing and Photo Sharing Made Easy" [blog post] http://www.switchvideo.com/blog/2011/05/09/dropbox-video-sharing-and-photo-sharing-madeeasy/ May 9, 2011 (May 9, 2011) Switch Video. Retrieved on Mar. 14, 2013, 5 pages.
European extended Search Report dated Apr. 28, 2015 for Application No. 11831194.3.
Gorin et al., "Just-In-Time Adaptive Decoder Engine: A Universal Video Decoder based on MPEG RVC", Proc 19th ACM Inter'l Conference on Multimedia, New York, NY—USA (2011), 4 pages.
International Preliminary Report on Patentability issued in International Patent Application No. PCT/US2011/052396 on Feb. 12, 2013.
Jang et al., "Reshaping Digital Media Business Models by Reconfigurable Video Coding", 78. MPEG Meeting; Oct. 23-Oct. 27, 2006; Hangzhou; (Motion Picture Expert Group or ISA/IEC JTC1/SC29/WG11); No. M13907, 5 pages.
OneCodec. "OneCodec: Future proof your media." (online) Sep. 23, 2011 1-10, 13-15 (Sep. 23, 2011) Available at http://vimeo.com/29476212. Retrieved on Mar. 14, 2013, 2 pages.
Philp et al., "Decoder Description Syntax for Fully Configurable Video Coding", ICIP, Nov. 2009, pp. 769-772.
Richardson et al., "A Framework for Fully Configurable Video Coding", Picture Coding Symposium, PCS 2009, 4 pages.
Richardson et al., "Fully Configurable Video Coding-Part 1: Overview of FCVC", ISO/IEC JTCI/SC20/WG11 document M16751, Jun. 2009, 6 pages.
Richardson et al., "Fully Configurable Video Coding-Part 2: A Proposed Platform for Reconfigurable Video Coding", ISO/IEC JTCI/SC20/WG11 document M16752, Jun. 2009, (London, UK) 5 pages.
Richardson et al., "Fully Configurable Video Coding—Part 1: Overview of FCVC", ISO/IEC JTCI/SC20/WG11 document M16751, Jun. 2009, 6 pages.
Richardson et al., "Fully Configurable Video Coding—Part 2: A Proposed Platform for Reconfigurable Video Coding", ISO/IEC JTCI/SC20/WG11 document M16752, Jun. 2009, (London, UK) 5 pages.
Zhao et al., "A Random Access Protocol for Configurable Video Coding", 90th MPEG Meeting; Oct. 26-Oct. 30, 2009; XIAN; (Motion Picture Expert Group or ISO/IEC JTC1/SC29/WG11), No. M16927.
US9369717B2 (en) 2016-06-14 grant
US20120201297A1 (en) 2012-08-09 Image decoding method, image coding method, image decoding apparatus, image coding apparatus, program, and integrated circuit
WO2012067219A1 (en) 2012-05-24 Device for generating content data, method for generating content data, computer program, and recording medium
Ooi et al. 1998 The Dali multimedia software library
CN1511313A (en) 2004-07-07 Encoding device, decoding device and system thereof
CN101609680A (en) 2009-12-23 Compression coding and decoding method, coder, decoder and coding device
JP2005242363A (en) 2005-09-08 Lossless audio decoding/encoding method, medium, and apparatus
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BYSTROM, MAJA;RICHARDSON, IAIN E.;SIGNING DATES FROM 20101212 TO 20110207;REEL/FRAME:041207/0244
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:RICHARDSON, IAIN E.;BYSTROM, MAJA;SIGNING DATES FROM 20101212 TO 20110207;REEL/FRAME:041207/0258
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:RICHARDSON, IAIN E.;BYSTROM, MAJA;SIGNING DATES FROM 20110419 TO 20110504;REEL/FRAME:041207/0279
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:RICHARDSON, IAIN E.;BYSTROM, MAJA;SIGNING DATES FROM 20110419 TO 20110504;REEL/FRAME:041207/0401
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BYSTROM, MAJA;RICHARDSON, IAIN E.;REEL/FRAME:041207/0462
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:ONECODEC, LIMITED;REEL/FRAME:041207/0445