The present disclosure generally relates to the field of multimedia data encoding.
Pursuant to an exemplary scenario, during encoding of multimedia frames such as bi-directional coded frames (B-frames), a temporal prediction of each B-frame is performed bi-directionally by referring to one or more reference frames temporally preceding the B-frame and one or more reference frames temporally succeeding the B-frame in an order of capture of the multimedia frames. In the above-described scenario, the temporally succeeding multimedia frames are encoded prior to encoding the B-frame so as to render the temporally succeeding multimedia frames available during the encoding of the B frame. However, multimedia capture devices output the captured multimedia frames as buffers in the order that the multimedia frames are captured, which is different from an order of encoding the multimedia frames.
Various methods and systems for facilitating multimedia data encoding are disclosed. In an embodiment, a method includes receiving a plurality of picture buffers associated with multimedia data in an order of capture associated with the plurality of picture buffers. The multimedia data may comprise multimedia frames, such as intra-coded frames (I-frames), predictive-coded frames (P-frames) and/or bi-directional coded frames (B-frames). The method also includes configuring buffer information. In an embodiment, the buffer information comprises at least one of a metadata associated with the corresponding picture buffer and one or more encoding parameters for the corresponding picture buffer. The method also includes facilitating a provision of picture buffers in an order of encoding based on the configured buffer information.
In an embodiment, facilitating the provision of picture buffers in an order of encoding includes identifying a temporal level from among a plurality of pre-determined temporal levels. The temporal level is identified for each picture buffer based on the buffer information configured for each picture buffer. Facilitating a provision of picture buffers in an order of encoding further includes storing the buffer information configured for each picture buffer in a storage buffer from among a plurality of storage buffers. The buffer information is stored based on the temporal level of each picture buffer and a temporal level associated with each storage buffer.
In an embodiment, the buffer information configured for a picture buffer corresponding to one of an I-frame, an instantaneous decoding refresh (IDR) frame, and a P-frame is stored in a storage buffer from among the plurality of storage buffers associated with lowest temporal level of the plurality of pre-determined temporal levels. The buffer information configured for a picture buffer corresponding to a B-frame or a P-frame is stored in a storage buffer from among the plurality of buffers associated with higher temporal levels than the lowest temporal level of the plurality of pre-determined temporal levels. In an embodiment, facilitating a provision of picture buffers in an order of encoding further includes retrieving the buffer information configured for the picture buffers in the order of encoding from the plurality of storage buffers upon completion of storing buffer information corresponding to picture buffers associated with a pre-determined group of pictures (GOP).
In an embodiment, a storage buffer from among the plurality of storage buffers including at least one buffer information corresponding to picture buffers associated with the GOP is identified such that the identified storage buffer is associated with a lowest temporal level from among the temporal levels associated with the plurality of storage buffers including the buffer information. In an embodiment, the lowest temporal level is higher than a temporal level associated with a previously identified storage buffer as the identification is performed starting from a storage buffer associated with the lowest temporal level to a storage buffer associated with a highest temporal level of the pre-determined temporal levels. In an embodiment, the buffer information from the identified storage buffer is retrieved, such that the buffer information corresponds to one of an earliest of the stored buffer information and a latest of the stored buffer information in the identified storage buffer. Moreover, an encoding of the picture buffers is initiated based on the retrieved buffer information in the order of encoding. The encoded picture buffers are rendered available as reference picture buffers for an encoding of subsequent picture buffers. Retrieving the buffer information in the order of encoding and rendering the encoded picture buffers available as reference picture buffers for encoding of subsequent picture buffers facilitates continuous encoding of picture buffers upon initiation of encoding.
Additionally in an embodiment, a system for facilitating multimedia data encoding is provided. The system includes a buffer information module, a memory module, and a processor module. The buffer information module is configured to receive a plurality of picture buffers associated with multimedia data, wherein the plurality of picture buffers are received in an order of capture associated with the plurality of picture buffers. The buffer information module is also configured to configure buffer information comprising at least one of metadata associated with the picture buffer and at least one encoding parameter for each picture buffer from among the plurality of picture buffers. The memory module is configured to identify a temporal level from among a plurality of pre-determined temporal levels for each picture buffer from among the plurality of picture buffers based on the buffer information configured for each picture buffer and store buffer information configured for each picture buffer based on the temporal level of each picture buffer. The processor module is configured to retrieve buffer information configured for the picture buffers in the order of encoding from the memory module upon completion of storing of buffer information corresponding to picture buffers associated with a pre-determined group of pictures (GOP).
Moreover, in an embodiment, a computer-readable medium storing a set of instructions that when executed cause a computer to perform a method for facilitating multimedia data encoding is provided. The method includes receiving a plurality of picture buffers associated with multimedia data, the plurality of picture buffers are being received in an order of capture associated with the plurality of picture buffers. The method also includes configuring buffer information comprising at least one of metadata associated with the picture buffer and at least one encoding parameter for each picture buffer from among the plurality of picture buffers. The method further includes facilitating a provision of picture buffers in an order of encoding based on the buffer information configured for each picture buffer from among the plurality of picture buffers.
Pursuant to an exemplary scenario, during multimedia encoding, an order of encoding multimedia frames is different from an order of capturing the multimedia frames, especially when the multimedia frames include for example, B-frames, P-frames, and the like. Various embodiments of the present technology, however, provide methods and systems for facilitating multimedia data encoding by providing multimedia frames in an order of encoding prior to subjecting the multimedia frames to encoding.
The following description and accompanying figures demonstrate that the present technology may be practiced or otherwise implemented in a variety of different embodiments. It should be noted, however, that the scope of the present technology is not limited to any or all of the embodiments disclosed herein. Indeed, one or more of the devices, features, operations, processes, characteristics, or other qualities of a disclosed embodiment may be removed, replaced, supplemented, or changed.
In an embodiment, the multimedia encoder 100 is programmed to comply with a video compression standard. Examples of the video compression standards include, but are not limited to, video coding experts group (VCEG), H.120, H.261, moving pictures experts group (MPEG), MPEG-1 Part 2, H.262 or MPEG-2 Part 2, H.263, MPEG-4 Part 2, H.264 or MPEG-4 AVC, VC-2 (Dirac), high efficiency video coding (HEVC), and the like.
The multimedia data may comprise multimedia frames, such as intra-coded frames (I-frames), predictive-coded frames (P-frames) and/or bi-directional coded frames (B-frames). The multimedia frames may be captured by a multimedia capture device (for example, the video capture device) and provided to a multimedia encoder 100 in the form of picture buffers. Pursuant to one embodiment, however, the multimedia frames captured by the multimedia capture device may be stored in a memory device (e.g., a temporary storage such as flash memory) in the form of picture buffers and subsequently provided to the multimedia encoder 100. The multimedia encoder 100 may encode the picture buffers and output the encoded picture buffers for subsequent processing purposes. An example of the multimedia encoder 100 may include a video encoder.
In accordance with an embodiment, from among the picture buffers, picture buffers corresponding to the I-frames may be encoded based on information present within the picture buffer themselves and do not require any reference frame information for encoding purposes. The picture buffers corresponding to the P-frames may be encoded based on reference frame information from picture buffers temporally preceding the respective P-frames in an order of capture of the picture buffers. The picture buffers corresponding to the B-frames may be encoded based on reference frame information from picture buffers temporally preceding and/or succeeding the respective B-frames in the order of capture of the picture buffers. Therefore, it is essential to encode the temporally succeeding picture buffers prior to encoding a picture buffer corresponding to a B-frame so as to render the reference frame information available during the encoding of the B frame. However, multimedia capture devices output the captured multimedia frames as picture buffers in the order of capture of the multimedia frames, which may be different from an order of encoding of the picture buffers. If the picture buffers are subjected to the encoding in the order of capture, the temporally succeeding picture buffers are rendered unavailable during the encoding of a B-frame or a P-frame from among the multimedia frames, which may cause a delay during encoding.
Since an order of encoding of picture buffers may be different from an order of capture of the picture buffers (when the picture buffers correspond to, for example, B-frames or P-frames), the picture buffers may be ordered in the order of encoding prior to the encoding and/or prior to the provision of the picture buffers to the multimedia encoder 100. An exemplary system capable of ordering the multimedia frames in the order of encoding prior to encoding of the multimedia frames is explained in
In an embodiment, the system 202 is an exemplary form of a computer system within which sets of instructions (for example, instructions for causing system 202 to perform one or more of the methodologies discussed herein) are executed. In various embodiments, the system 202 operates as a standalone device and/or is communicatively associated with, coupled with or connected to (e.g., networked with) other systems, including, for example, the multimedia encoder 100, which is configured to encode the multimedia data. An example of the system 202 may include, but is not limited to, an embedded system and/or any machine capable of executing a set of instructions (sequential and/or otherwise) configured to cause one and/or more of the methodologies discussed herein to be performed.
The system 202 includes a buffer information module 204, a memory module 206, and a processor module 208. In an embodiment, the buffer information module 204, the memory module 206, and the processor module 208 are configured to communicate with each other via a bus 210. Examples of the bus 210 include, but are not limited to, a data bus, an address bus, a control bus, and the like. The bus 210 may be, for example, a serial bus, a bi-directional bus or a unidirectional bus.
In an embodiment, the buffer information module 204 may be configured to receive a plurality of picture buffers associated with multimedia data. In an embodiment, the plurality of picture buffers are received in an order of capture associated with the plurality of picture buffers as explained in
In an embodiment, the captured multimedia frames may be grouped into one or more group of pictures (GOPs). In an embodiment, a GOP may include multimedia frames from one key frame, such as an I-frame, a P-frame or an instantaneous decoding refresh (IDR) frame, to another key frame. For example, if a sequence of captured multimedia frames is IBBBPBBBBI, then a first GOP may include multimedia frames from the I-frame in the beginning of the sequence to the P-frame, and therefore includes multimedia frames in the sequence BBBP. Similarly, the second GOP may include multimedia frames from the P-frame to the I-frame located at the end of the sequence of multimedia frames, and therefore includes multimedia frames in the sequence BBBBI. A GOP structure may be configured to include one or more multimedia frames in the order of capture. Accordingly, in the exemplary sequence of captured multimedia frames of IBBBPBBBBI, the GOP structure may include multimedia frames in the sequence IBBBPBBBBI. Such a GOP structure may include, for example, the first GOP and the second GOP. In an embodiment, each captured multimedia frame may be associated with a current GOP number indicating a GOP to which the captured multimedia frame belongs.
In an embodiment, the buffer information module 204 is further capable of configuring buffer information for each picture buffer from among the plurality of picture buffers. In an embodiment, the buffer information comprises at least one of a metadata associated with the corresponding picture buffer and one or more encoding parameters for the corresponding picture buffer. For example, for a picture buffer 1, the configured buffer information includes metadata associated with the picture buffer 1 and one or more encoding parameters for the picture buffer 1. The buffer information may be configured for each picture buffer of the plurality of picture buffers. In an embodiment, the buffer information comprises metadata associated with the plurality of picture buffers and/or the multimedia data. Examples of the metadata associated with the plurality of picture buffers and/or the multimedia data, include, but are not limited to, information associated with a buffer address of each picture buffer, multimedia frame type (e.g., I-frames, P-frames, B-frames, and the like), a current GOP number indicative of a GOP to which a buffered multimedia frame belongs, a capture index of the multimedia frame, a buffer pointer of a scaling matrix to be used for the multimedia frame, and the like. The term ‘capture index’ as used herein may be construed as a numerical data indicating an order of capture of the multimedia frames. For example, a multimedia frame captured first will include a capture index of 1 and another multimedia frame captured next to the multimedia frame will include a capture index 2. Examples of the encoding parameter include, but are not limited to, one or more scaling matrices to be used for the multimedia frames, coordinates of the region of interest for encoding, and the like. The term ‘scaling matrix’ as used herein may be construed as a matrix used for subjective quality improvement for encoding purposes. An example of the scaling matrix includes, but is not limited to a quantisation scaling matrix. The term ‘region of interest’ as used herein may be construed as a region within a picture acquisition or display area relevant from an encoding perspective.
The buffer information for the plurality of picture buffers may be stored in the memory module 206. In an embodiment, memory module 206 comprises a plurality of storage buffers, such as storage buffers 206a-206n, which are configured to store the buffer information configured for the plurality of picture buffers. Examples of the storage buffers include, but are not limited to, a first in first out (FIFO) buffer, a last in first out (LIFO) buffer, and the like.
In an embodiment, the memory module 206 is configured to determine a temporal level for each picture buffer based on the buffer information associated with each picture buffer prior to storing the picture buffers in the plurality of storage buffers. The term ‘temporal level’ as used herein may be construed as a relative measure of dependence in encoding of a picture buffer on other picture buffers. Accordingly, the higher a temporal level associated with a picture buffer, the more dependent the picture buffer is on other picture buffers for encoding purposes and the picture buffer is less likely to be referred by other picture buffers for encoding purposes. For example, the key frames, such as an I-frame, a P-frame or an IDR-frame, are relatively less dependent on other multimedia frames (or relatively independent) than B-frames, and, accordingly, the corresponding picture buffers may be associated with the lower temporal level. In an embodiment, all the B-frames may not have the same measure of dependence on other frames. For example, some B-frames may refer to x frames in temporally succeeding order of capture and y frames in temporally preceding order of capture, while some B-frames may refer to ‘x-1’ frames in a temporally succeeding order of capture and ‘y-1’ frames in a temporally preceding order of capture. Accordingly, based on a higher or lower measure of dependency, the corresponding picture buffers may be associated with higher or lower temporal levels. In an embodiment, a GOP structure may include a plurality of temporal levels.
In an embodiment, each storage buffer from among a plurality of storage buffers may also be associated with a temporal level of a plurality of pre-determined temporal levels. The pre-determined temporal levels may correspond to a number of temporal levels in the GOP structure. In an exemplary embodiment, the pre-determined number of temporal levels is three. Accordingly, three storage buffers each associated with a temporal level may be allocated within the memory module 206 so as to store the buffer information configured for the plurality of picture buffers.
In an embodiment, a temporal level of a picture buffer may be matched with a temporal level of a storage buffer, and, upon confirmation of a match, the buffer information corresponding to the picture buffer may be stored in the respective storage buffer. In an embodiment, the memory module 206 may store buffer information associated with a key frame (e.g., I-frame, IDR frame or P-frame) in a storage buffer associated with a lowest temporal level, and may store buffer information associated with a multi-reference frame, such as a B-frame or a P-frame, in a storage buffer associated with a higher temporal level than the lowest temporal level of the plurality of pre-determined temporal levels. The storing of the buffer information is further explained in
Referring now to
The key frames I0, P4, and P8 are depicted to be stored in a storage buffer associated with a lowest temporal level (e.g., temporal level 0), thereby implying a relative independence of these multimedia frames on other frames for encoding purposes. The frames B2 and B6 are stored in a storage buffer associated with temporal level 1, thereby implying comparatively more dependence of these multimedia frames on other frames for encoding purposes as compared to key frames, but lesser than the frames B1, B3, B5 and B7 depicted to be stored in storage buffer associated with temporal level 2.
It should be noted that, in accordance with an embodiment, storing of the buffer information configured for the plurality of picture buffers based on the temporal level classifies the buffer information into different categories, and, depending upon an available bandwidth for encoding/storing, buffer information stored in one or more storage buffers may be expelled without affecting a syntax for decoding, thereby avoiding degradation in a quality of the multimedia data. For example, if one or more multimedia frames in the storage buffer associated with the highest temporal level (for example, temporal level 2) are dropped, as they are the most dependent on other multimedia frames for encoding and are the least referred (as no other multimedia frames refer to them), a frame rate associated with the multimedia frames during decoding is reduced from, for example, 60 frames per second (fps) to for example, 30 fps, and, hence, the multimedia frames can be dropped without affecting the decoding syntax. In accordance with one embodiment, however, if the multimedia frames in the storage buffers associated with a lower temporal level (for example, temporal level 1) are dropped, the frame rate associated with the multimedia frames during decoding is reduced from 60 fps to 15 fps, as the multimedia frames in the storage buffers associated with the lower temporal levels are most referred during the encoding of other multimedia frames and, hence, are not dropped without affecting the decoding syntax.
Referring back to
In an embodiment, the processor module 208 is further configured to identify a storage buffer from among the plurality of storage buffers including at least one buffer information corresponding to picture buffers associated with the GOP, where the identified storage buffer is associated with a lowest temporal level from among the temporal levels associated with the plurality of storage buffers including the buffer information. The lowest temporal level may be higher than a temporal level associated with a previously identified storage buffer for the GOP. In an embodiment, buffer information may be retrieved from the identified storage buffer, wherein the buffer information corresponds to one of an earliest of the stored buffer information and a latest of the stored buffer information in the identified storage buffer. In an embodiment, the processor module 208 may perform the identification and the retrieval repeatedly in a cyclic manner starting from a storage buffer associated with the lowest temporal level of the temporal levels to a storage buffer associated with a highest temporal level of the pre-determined temporal levels for retrieving the buffer information associated with the plurality of picture buffers in the order of encoding. The identification and the retrieval of the picture buffers in the order of encoding is explained in detail in
In an embodiment, an IDR frame insertion request corresponding to a picture buffer of the plurality of picture buffers is received. The term ‘IDR frame’ as used herein may be construed as an I-frame that forces all previously decoded multimedia frames, that are still in use as reference frames, to no longer be used as reference frames upon decoding of the IDR frame. When encoding is performed using the IDR frame the multimedia encoder, for example multimedia encoder 100 resets and empties the reference frames previously stored in a decoded picture buffer, and encodes multimedia flames following the IDR flame with reference to only flames following the IDR flame.
Upon receiving the IDR frame insertion request, the buffer information module 204 converts the buffer information associated with the picture buffer into the buffer information corresponding to the IDR frame. For example, if an IDR frame insertion request is received at B-frame with a capture index 8 (for example, B8) in a GOP, the B-frame is converted into an IDR frame with a capture index 8 (for example, IDR8). Subsequent to the conversion, the buffer information module 204 selects one or more picture buffers corresponding to B-frames preceding the picture buffer in the order of capture and corresponding to a GOP associated with the picture buffer. In an embodiment, each of the selected one or more picture buffers comprise at least one of an associated temporal level that is different than a temporal level associated with the picture buffer at which the IDR frame insertion request is received and an associated capture index that is higher than a capture index of a previously selected picture buffer corresponding to the B-frame within the GOP.
In an embodiment the buffer information configured for the selected one or more picture buffers from among the buffer information corresponding to the B-frames is converted into buffer information corresponding to P-frames. In an embodiment, in order to perform the conversion, the buffer information module 204 extracts the buffer information from the selected one or more picture buffers from one of the plurality of storage buffers, modifies the extracted buffer information from buffer information corresponding to the B-frames into buffer information corresponding to the P-frames, and transfers the modified buffer information corresponding to the P-frames into a storage buffer associated with the lowest temporal level from among the temporal levels associated with the plurality of storage buffers.
In an embodiment, selection of the one or more picture buffers corresponding to the B-frames from a storage buffer associated with the lowest temporal level to a storage buffer associated with the highest temporal level from among the plurality of storage buffers is performed repeatedly.
In an embodiment, a flush request corresponding to a picture buffer (for example, a missing picture buffer) from among the plurality of picture buffers is received. In an embodiment, the buffer information module 204 selects one or more picture buffers corresponding to B-frames preceding the picture buffer for which the flush request is received in the order of capture and corresponding to a GOP associated with the picture buffer. In an embodiment, each of the selected one or more picture buffers comprise at least one of an associated temporal level different than a temporal level associated with the picture buffer at which the flush request is received, and an associated capture index higher than a capture index of a previously selected picture buffer corresponding to the B-frame within the GOP.
In an embodiment, the buffer information configured for the selected one or more picture buffers from buffer information corresponding to the B-frames is converted into buffer information corresponding to P-frames. In an embodiment, in order to perform the conversion, the buffer information module 204 extracts the buffer information from the selected one or more picture buffers from one of the plurality of storage buffers, modifies the extracted buffer information from buffer information corresponding to the B-frames into buffer information corresponding to the P-frames, and transfers the modified buffer information corresponding to the P-frames into a storage buffer associated with a lowest temporal level from among the temporal levels associated with the plurality of storage buffers. In an embodiment, selection of the one or more picture buffers corresponding to the B-frames from a storage buffer associated with a lowest temporal level to a storage buffer associated with the highest temporal level from among the plurality of storage buffers is performed repeatedly.
In an embodiment, the system 202 and/or multimedia encoder 100 may be a part of a system including other components (not shown in
The software may further be transmitted and/or received over a network via the network interface unit. The term “machine-readable medium” may be construed to include a single medium and/or multiple media (e.g., a centralized and/or distributed database, and/or associated caches and servers) that store the one or more sets of instructions. Moreover, the term “machine-readable medium” may be construed to include any medium that is capable of storing, encoding and/or carrying a set of instructions for execution by the system 202 and that cause the system 202 to perform one or more of the methodologies of the various embodiments. Furthermore, the term “machine-readable medium” may be construed to include, but shall not be limited to, solid-state memories, optical and magnetic media, and carrier wave signals.
Also, as explained in
Upon completion of the storing of the buffer information for picture buffers corresponding to the first GOP 404a (for example, upon the storing of buffer information corresponding to picture buffer P8), the processor module 208 may identify a lowest temporal level storage buffer from among the plurality of storage buffers including at least one buffer information corresponding to picture buffers associated with the first GOP 404a and retrieve buffer information corresponding to one of an earliest stored buffer information and a latest stored buffer information from the identified storage buffer. In
In an embodiment, the processor module 208 may perform both the identification and the retrieval repeatedly in a cyclic manner, starting from the lowest temporal level buffer to a highest temporal level buffer of the plurality of buffers so as to retrieve the buffer information associated with the plurality of picture buffers in an encoding order sequence 410. For example, upon the storing of buffer information corresponding to picture buffer Pg, (e.g., upon completion of the storing of buffer information corresponding to the picture buffers for the first GOP 404a), the processor module 208 may identify the storage buffer 1 as the lowest temporal level non-empty storage buffer corresponding to the first GOP 404a and retrieve Pg from the storage buffer 1. Subsequently, when B9 is received by the memory module 206 and is being stored in the storage buffer 4 based on the associated temporal level, simultaneously, the processor module 208 identifies storage buffer 2 as the lowest temporal level non-empty storage buffer and retrieves B4 from the storage buffer 2.
Buffer information for B2 and B6 may be retrieved in a similar manner. Subsequently, when B12 is received by the memory module 206 and is stored in the storage buffer 2 based on the associated temporal level, simultaneously, the processor module 206 identifies storage buffer 4 as the lowest temporal level non-empty storage buffer and retrieves B1 from the storage buffer 4. It is noted that although storage buffer 2 is the lowest temporal level non-empty buffer, the lowest temporal level storage buffer with respect to the first GOP 404a is identified, and, accordingly, storage buffer 4 is identified. Retrieval of the buffer information for the second GOP 404b may similarly be performed, and the buffer information corresponding to the plurality of picture buffers may be retrieved in the order of encoding as depicted in the encoding order sequence 410.
An insertion of the IDR8 frame prevents reference into one or more future picture buffers (for example, one or more picture buffers succeeding the IDR8 frame in the order of capture) by picture buffers preceding IDR8. One or more B-frames belonging to the first GOP 404a corresponding to IDR8, preceding IDR8 and requiring reference from one or more subsequent frames in the order of capture are selected for conversion into P-frames. The selection is performed iteratively starting from a lowest capture index to a highest capture index of the multimedia frames in the order of capture. Also B-frames with a temporal level different from the temporal level of P8 are selected.
Accordingly, subsequent to the conversion of Pg into IDR8, the buffer information module 204 may select one or more picture buffers corresponding to B-frames preceding the picture buffer in the order of capture and corresponding to the first GOP 404a associated with the picture buffer. As explained in
As explained in
Accordingly, the buffer information corresponding to B4, B6, and B7 are retrieved from the storage buffers 2, 3 and 4, respectively, and modified into buffer information associated with P4, P6, and P7. Subsequent to the conversion, the buffer information associated with P4, P6, and P7 are transferred to storage buffer 1 as illustrated in
Subsequent to retrieving P7 from storage buffer 1, when B12 is received, the lowest temporal level non-empty storage buffer is storage buffer 3, which contains buffer information associated with B10 and B2. Since B2 belongs to the revised first GOP 504a of IDR8, the buffer information associated with B2 is retrieved from the storage buffer 3 and is lined up for encoding after P7. Similarly B1, B3, B5, and P16 are subsequently lined up for encoding in the encoding order sequence 510.
Furthermore, a GOP is incremented, and the GOP structure 600 includes a plurality of picture buffers 601 in a revised sequence 602. The revised sequence 602 includes three GOPS, wherein a first GOP 604a includes picture buffers B1, B2, B3, B4, B5, B6, B7, and P8, a second GOP 604b includes picture buffers B9, B10, B11, P12, and IDR13, and a third GOP 604c includes the multimedia frames B14, B15, B16, B17, B18, B19, B20, and P21. The arrows, such as arrows 606, depicted in
Accordingly, subsequent to the conversion of B13 into IDR13, the buffer information module 204 may select one or more picture buffers corresponding to B-frames preceding the picture buffer corresponding to IDR13 in the order of capture and corresponding to the second GOP 604b associated with the picture buffer. As explained earlier in
The selection may be performed, for example, iteratively starting from temporal level 1 to temporal level 4. The multimedia frame B12 belongs to the second GOP 604b, precedes the IDR13, and is associated with temporal level 2, which is different from temporal level 4 of B13, and, hence, is selected. The buffer information associated with B12 is retrieved from the storage buffer 2 and modified into buffer information associated with P12. Subsequent to the conversion, the buffer information associated with P12 is transferred into the storage buffer 1, as illustrated in
The buffer information corresponding to the encoding order sequence 608 may be provided to the multimedia encoder, such as the multimedia encoder 100, so as to encode the plurality of picture buffers corresponding to the multimedia data. A method for picture buffer facilitation is explained in
In an embodiment, the captured multimedia frames may be grouped into one or more group of pictures (GOPs). In an embodiment, a GOP may include multimedia frames from one key frame, such as an I-frame, a P-frame or an IDR frame, to another key frame. For example, if a sequence of captured multimedia frames is IBBBPBBBBI, then a first GOP may include multimedia frames from the I-frame in the beginning of the sequence to the P-frame such that the first GOP includes multimedia frames in the sequence BBBP. Similarly, the second GOP may include multimedia frames from the P-frame to the I-frame located at the end of the sequence of multimedia frames such that the second GOP includes multimedia frames in the sequence BBBBI. A GOP structure may be configured to include multimedia frames from one I-frame to another I-frame. Accordingly, in the exemplary sequence of captured multimedia frames of IBBBPBBBBI, the GOP structure may include multimedia frames in the sequence BBBPBBBBI. Such a GOP structure may include, for example, the first GOP and the second GOP. In an embodiment, each captured multimedia frame may be associated with a current GOP number indicating to which GOP the captured multimedia frame belongs.
At operation 704, buffer information is configured (for example, by the buffer information module 204) for each picture buffer from among the plurality of picture buffers. In an embodiment, in the buffer information comprises at least one of one or more encoding parameters for the corresponding picture buffer, and metadata associated with the corresponding picture buffer and/or the multimedia data. Examples of the metadata associated with the plurality of picture buffers and/or the multimedia data include, but are not limited to, information associated with a buffer address of each picture buffer, type of the multimedia frames (e.g., I-frames, P-frames, B-frames, and the like), a current GOP number to which a buffered multimedia frame belongs, a capture index of the multimedia frame, a buffer pointer of a scaling matrix to be used for the multimedia frame, and the like. Examples of the encoding parameter include, but are not limited to, one or more scaling matrices to be used for the multimedia frames, coordinates of the region of interest for encoding, and the like. At operation 706, a provision of picture buffers in an order of encoding is facilitated based on the buffer information configured for each picture buffer from among the plurality of picture buffers. In an embodiment, facilitating a provision of the picture buffers comprises identifying a temporal level from among a plurality of pre-determined temporal levels for each picture buffer from among the plurality of picture buffers based on the buffer information configured for each picture buffer. In an embodiment, a temporal level for each picture buffer may be determined (for example, by memory module 206) based on the buffer information associated with each picture buffer, as explained in
Facilitating a provision of the picture buffers in the order of encoding further comprises storing buffer information configured for each picture buffer in a storage buffer from among a plurality of storage buffers (such as storage buffers 206a-206n, which are configured to store the buffer information) based on the temporal level of each picture buffer and a temporal level associated with each storage buffer from among the plurality of storage buffers. Examples of the storage buffers include, but are not limited to, a first in first out (FIFO) buffer, a last in first out (LIFO) buffer, and the like. The pre-determined temporal levels may correspond to a number of temporal levels in the GOP structure. In an exemplary embodiment, the pre-determined number of temporal levels is four. Accordingly, four storage buffers each associated with a temporal level may be allocated to store the buffer information configured for the plurality of picture buffers.
In an embodiment, a temporal level of a picture buffer may be matched with a temporal level of a storage buffer, and, upon confirmation of a match, the buffer information corresponding to the picture buffer may be stored in the respective storage buffer. In an embodiment, the buffer information configured for a picture buffer corresponding to one of an I-frame, an instantaneous decoding refresh (IDR) frame, and a P-frame is stored in a storage buffer from among the plurality of storage buffers associated with a lowest temporal level from among the plurality of pre-determined temporal levels. In an embodiment, the buffer information configured for a picture buffer corresponding to a B-frame or a P-frame is stored in a storage buffer from among the plurality of buffers associated with higher temporal levels than the lowest temporal level of the plurality of pre-determined temporal levels, as explained in
The buffer information configured for the picture buffers is subsequently retrieved in the order of encoding from the plurality of storage buffers upon completion of the storing of buffer information corresponding to picture buffers associated with a pre-determined GOP. In an embodiment, in order to retrieve the buffer information, a storage buffer from among the plurality of storage buffers including buffer information corresponding to at least one picture buffer associated with the GOP is identified such that the identified storage buffer is associated with a lowest temporal level from among the temporal levels associated with the plurality of storage buffers including the buffer information. Furthermore, buffer information is retrieved from the identified storage buffer, such that the buffer information corresponds to an earliest stored buffer information or a latest stored buffer information in the identified storage buffer. The retrieving of the buffer information may be performed as explained in
At operation 804, buffer information for each picture buffer from among the plurality of picture buffers is configured (for example, by buffer information module 204 of
At operation 806, a temporal level from among a plurality of pre-determined temporal levels is identified (for example, by memory module 206 of
At operation 808, the buffer information configured for each picture buffer is stored (for example by buffer information module 204 of
In an embodiment, a temporal level of a picture buffer may be matched with a temporal level of a storage buffer, and, upon confirmation of a match, the buffer information corresponding to the picture buffer may be stored in the respective storage buffer. In an embodiment, the buffer information associated with a key frame (e.g., I-frame, IDR frame or P-frame) is stored in a storage buffer associated with a lowest temporal level, and buffer information associated with a B-frame may be stored in a storage buffer associated with a higher temporal level than the lowest temporal level of the plurality of pre-determined temporal levels. In an embodiment, the buffer information associated with a P-frame may be stored in a storage buffer associated with a higher temporal level than the lowest temporal level of the plurality of pre-determined temporal levels. The storing of the buffer information is as explained in
At operation 810, one of an instantaneous decoding refresh (IDR) frame insertion request and a flush request corresponding to a picture buffer from among the plurality of picture buffers is received. In an embodiment, upon receiving the IDR frame insertion request, the buffer information associated with the picture buffer at which the IDR frame insertion request is received is converted into the buffer information corresponding to the IDR frame. For example, if an IDR frame insertion request is received at B-frame with a capture index 8 (e.g., B8) in a GOP, the B-frame is converted into an IDR frame with a capture index 8 (e.g., IDR8).
At operation 812, one or more picture buffers corresponding to B-frames and corresponding to a GOP associated with the picture buffer is selected (for example, by processor module 208 of
At operation 814, buffer information associated with at least one selected picture buffer from one of the plurality of storage buffers is extracted (for example, by buffer information module 204 of
At operation 820, the buffer information configured for the picture buffers is retrieved (for example, by processor module 208 of
Without in any way limiting the scope, interpretation, or application of the claims appearing below, advantages of one or more of the exemplary embodiments disclosed herein include providing picture buffers corresponding to the multimedia frames in the order of encoding to the multimedia encoder without much overheads, thereby precluding any degradation in a quality of encoding of the multimedia data. Furthermore, various embodiments of the present technology enable scalability to different GOP structures including, for example, III, IPP, IBBP, BBIBBP, and the like and to multiple levels of temporal prediction. The various embodiments of the present technology are operable under dynamic changes in GOP structures including the change in GOP structure initiated from a key frame. Further, in an IDR frame insertion scenario, the method and system disclosed herein enable conversion of an optimal number of B-frames into P-frames without much complexity overhead. Additionally, such an insertion precludes any change in decoded picture buffer logic within a multimedia core encoder. Moreover, a reference picture used during motion compensation remains unchanged and subsequent to conversion of B-frames into P-frames, the converted P-frames refer to the same preceding frames for motion compensation as referred by the B-frames prior to conversion, thereby allowing handling of the IDR frame insertion without changing the decoded picture buffer logic.
Although the present technology has been described with reference to specific exemplary embodiments, it is noted that various modifications and changes may be made to these embodiments without departing from the broad spirit and scope of the present technology. For example, the various devices, modules, analyzers, generators, etc., described herein may be enabled and operated using hardware circuitry (e.g., complementary metal oxide semiconductor (CMOS) based logic circuitry), firmware, software and/or any combination of hardware, firmware, and/or software (e.g., embodied in a machine readable medium). For example, the various electrical structures and methods may be embodied using transistors, logic gates, and electrical circuits (e.g., application specific integrated circuit (ASIC) circuitry and/or in Digital Signal Processor (DSP) circuitry).
Particularly, the system 202 of
Embodiments of the present disclosure include one or more computer programs stored or otherwise embodied on a computer-readable medium, wherein the computer programs are configured to cause a processor to perform one or more operations. A computer-readable medium storing, embodying, or encoded with a computer program, or similar language, may be embodied as a tangible data storage device storing one or more software programs that are configured to cause a processor to perform one or more operations. Such operations may be, for example, any of the steps or operations described herein. Additionally, a tangible data storage device may be embodied as one or more volatile memory devices, one or more non-volatile memory devices, and/or a combination of one or more volatile memory devices and non-volatile memory devices.
Also, techniques, devices, subsystems and methods described and illustrated in the various embodiments as discrete or separate may be combined or integrated with other systems, modules, techniques, or methods without departing from the scope of the present technology. Other items shown or discussed as directly coupled or communicating with each other may be coupled through some interface or device, such that the items may no longer be considered directly coupled with each other but may still be indirectly coupled and in communication, whether electrically, mechanically, or otherwise, with one another. Other examples of changes, substitutions, and alterations ascertainable by one skilled in the art, upon studying the exemplary embodiments disclosed herein, may be made without departing from the spirit and scope of the present technology.
It should be noted that reference throughout this specification to features, advantages, or similar language does not imply that all of the features and advantages should be or are in any single embodiment. Rather, language referring to the features and advantages may be understood to mean that a specific feature, advantage, or characteristic described in connection with an embodiment may be included in at least one embodiment of the present technology. Thus, discussions of the features and advantages, and similar language, throughout this specification may, but do not necessarily, refer to the same embodiment.
Various embodiments of the present disclosure, as discussed above, may be practiced with steps and/or operations in a different order, and/or with hardware elements in configurations which are different than those which are disclosed. Therefore, although the technology has been described based upon these exemplary embodiments, it is noted that certain modifications, variations, and alternative constructions may be apparent and well within the spirit and scope of the technology.
Although various exemplary embodiments of the present technology are described herein in a language specific to structural features and/or methodological acts, the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as exemplary forms of implementing the claims.
Number | Date | Country | Kind |
---|---|---|---|
118/CHE/2011 | Jan 2011 | IN | national |
This application is a continuation of U.S. patent application Ser. No. 13/349,268 filed Jan. 12, 2012 which claims the benefit of India Provisional Patent Application Serial No. 118/CHE/2011, filed Jan. 13, 2011, both of which are incorporated herein by reference in their entirety.
Number | Name | Date | Kind |
---|---|---|---|
3737640 | Pao | Jun 1973 | A |
4634971 | Johnson | Jan 1987 | A |
4992868 | Holtz | Feb 1991 | A |
5416522 | Igarashi | May 1995 | A |
5668599 | Cheney | Sep 1997 | A |
5764374 | Seroussi | Jun 1998 | A |
6031843 | Swanbery | Feb 2000 | A |
6104752 | Yamagishi | Aug 2000 | A |
6148140 | Okada | Nov 2000 | A |
6473558 | Wu | Oct 2002 | B1 |
6608866 | Saunders | Aug 2003 | B1 |
6741713 | Boone | May 2004 | B1 |
6795498 | Kato | Sep 2004 | B1 |
6873735 | Aleksic | Mar 2005 | B1 |
6873786 | Lin | Mar 2005 | B2 |
7103100 | Tsukagoshi | Sep 2006 | B1 |
7292602 | Liu et al. | Nov 2007 | B1 |
8135852 | Nilsson | Mar 2012 | B2 |
8368694 | Novosad | Feb 2013 | B2 |
8482758 | Onno | Jul 2013 | B2 |
20030142748 | Tourapis | Jul 2003 | A1 |
20060088100 | Han | Apr 2006 | A1 |
20060209961 | Han | Sep 2006 | A1 |
20060221418 | Lee | Oct 2006 | A1 |
20070183494 | Hannuksela | Aug 2007 | A1 |
20080259799 | van Beek | Oct 2008 | A1 |
20100290537 | Moriyoshi | Nov 2010 | A1 |
20110090960 | Leontaris | Apr 2011 | A1 |
20110206123 | Panchal | Aug 2011 | A1 |
20130257916 | Kao et al. | Oct 2013 | A1 |
Entry |
---|
Prosecution History from U.S. Appl. No. 13/349,268, dated Jan. 12, 2012 to Mar. 17, 2016, 356 pages. |
Number | Date | Country | |
---|---|---|---|
20160219284 A1 | Jul 2016 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 13349268 | Jan 2012 | US |
Child | 15089854 | US |