US9432688B2 - Parallel symbol decoding - Google Patents
Parallel symbol decoding Download PDFInfo
- Publication number
- US9432688B2 US9432688B2 US14/028,455 US201314028455A US9432688B2 US 9432688 B2 US9432688 B2 US 9432688B2 US 201314028455 A US201314028455 A US 201314028455A US 9432688 B2 US9432688 B2 US 9432688B2
- Authority
- US
- United States
- Prior art keywords
- binary symbols
- stream
- decode
- motion vector
- decoder
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active, expires
Links
- 239000013598 vector Substances 0.000 claims abstract description 60
- 239000000872 buffer Substances 0.000 claims abstract description 35
- 238000000034 method Methods 0.000 claims description 47
- 239000000284 extract Substances 0.000 claims description 5
- 230000003044 adaptive effect Effects 0.000 claims description 3
- 238000004590 computer program Methods 0.000 claims 5
- 230000008569 process Effects 0.000 description 39
- 238000005516 engineering process Methods 0.000 description 16
- 238000012545 processing Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 230000005540 biological transmission Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 241000258963 Diplopoda Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
- H04N19/52—Processing of motion vectors by encoding by predictive encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/1887—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a variable length codeword
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/436—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
Definitions
- the present description relates generally to symbol decoding, and more particularly, but not exclusively, to parallel symbol decoding in a decoder.
- an encoded bitstream includes a series of arithmetic-coded symbols that correspond to elements of a compressed image, such as spatial prediction modes, motion vector data, transform coefficients, etc.
- the elements are combined into coding units (CUs) that correspond to square pixel regions of the coded image.
- CUs coding units
- a video decoder implementing the HEVC Standard receives the bitstream that includes HEVC coding units and passes the bitstream through a Context Adaptive Binary Arithmetic Coder (CABAC) block.
- CABAC Context Adaptive Binary Arithmetic Coder
- the CABAC block converts the coding units of the bitstream into a stream of binary symbols (“bins”) and stores the binary symbols in a memory buffer.
- a symbol decoder of the HEVC decoder retrieves the binary symbols from the memory buffer and decodes the binary symbols into the symbols that correspond to the elements of the compressed image, such as spatial prediction mode symbols, motion vector symbols and/or transform coefficient symbols.
- the symbols that correspond to the elements of the compressed image are passed to appropriate blocks for generating the corresponding elements, e.g.
- the symbol decoder may need to decode the binary symbols in serial fashion.
- the serial operation of the symbol decoder may limit the overall decoding performance of the HEVC decoder, which may require that the HEVC decoder operate at a very high frequency to decode high resolution video streams, e.g. 4 k or 8 k Ultra-HD video streams.
- FIG. 1 illustrates an example network environment in which parallel symbol decoding may be implemented in accordance with one or more implementations.
- FIG. 2 illustrates an example electronic device that may implement parallel symbol decoding in accordance with one or more implementations.
- FIG. 3 illustrates an example symbol decoder that may perform parallel symbol decoding in accordance with one or more implementations.
- FIG. 4 illustrates a flow diagram of an example process of a first decoder block of a decoder in accordance with one or more implementations.
- FIG. 5 illustrates a flow diagram of an example process of a second decoder block of a decoder in accordance with one or more implementations.
- FIG. 6 illustrates an example binary symbol stream in accordance with one or more implementations.
- FIG. 7 illustrates an example timing diagram for serial symbol decoding and an example timing diagram for parallel symbol decoding in accordance with one or more implementations.
- FIG. 8 illustrates a flow diagram of an example process for parsing a coding unit in accordance with one or more implementations.
- FIG. 9 conceptually illustrates an electronic system with which one or more implementations of the subject technology may be implemented.
- the CABAC block of a decoder inserts information, such as length fields, into the stream of binary symbols that is being stored in the memory buffer.
- the inserted length field provides the symbol decoder with the lengths of one or more of the elements encoded by the binary symbols, which enables the symbol decoder to decode multiple binary symbols in parallel.
- the parallel symbol decoding by the symbol decoder increases the performance and efficiency of the decoding process and thereby facilitates the decoding of high resolution video streams, e.g. 4 k or 8 k Ultra-HD video streams.
- FIG. 1 illustrates an example network environment 100 in which parallel symbol decoding may be implemented in accordance with one or more implementations. Not all of the depicted components may be required, however, and one or more implementations may include additional components not shown in the figure. Variations in the arrangement and type of the components may be made without departing from the spirit or scope of the claims as set forth herein. Additional components, different components, or fewer components may be provided.
- the example network environment 100 includes a content delivery network (CDN) 110 that is communicably coupled to an electronic device 120 , such as by a network 108 .
- the CDN 110 may include, and/or may be communicably coupled to, a content server 112 for transmitting encoded data streams, such as HEVC encoded video streams, over the network 108 , an antenna 116 for transmitting encoded data streams over the air, and a satellite transmitting device 118 for transmitting encoded data streams to a satellite 115 .
- the electronic device 120 may include, and/or may be coupled to, a satellite receiving device 122 , such as a satellite dish, that receives encoded data streams from the satellite 115 .
- the electronic device 120 may further include an antenna for receiving encoded data streams, such as HEVC encoded video streams, over the air from the antenna 116 of the CDN 110 .
- the content server 112 and/or the electronic device 120 may be, or may include, one or more components of the electronic system discussed below with respect to FIG. 8 .
- the network 108 may be a public communication network (such as the Internet, cellular data network, dialup modems over a telephone network) or a private communications network (such as private local area network (“LAN”), leased lines).
- the network 108 may also include, but is not limited to, any one or more of the following network topologies, including a bus network, a star network, a ring network, a mesh network, a star-bus network, a tree or hierarchical network, and the like.
- the network 108 may include transmission lines, such as coaxial transmission lines, fiber optic transmission lines, or generally any transmission lines, that communicatively couple the content server 112 and the electronic device 120 .
- the content server 112 may include, or may be coupled to, one or more processing devices, a data store 114 , and/or an encoder.
- the one or more processing devices execute computer instructions stored in the data store 114 , for example, to implement a content delivery network.
- the data store 114 may store the computer instructions on a non-transitory computer-readable medium.
- the data store 114 may further store one or more programs, e.g. video and/or audio streams, that are delivered by the CDN 110 .
- the encoder may use a codec to encode video streams, such as an HEVC codec or any other suitable codec.
- the content server 112 may be a single computing device such as a computer server.
- the content server 112 may represent multiple computing devices that are working together to perform the actions of a server computer (such as a cloud of computers and/or a distributed system).
- the content server 112 may be coupled with various databases, storage services, or other computing devices, such as an adaptive bit rate (ABR) server, that may be collocated with the content server 112 or may be disparately located from the content server 112 .
- ABR adaptive bit rate
- the electronic device 120 may include, or may be coupled to, one or more processing devices, a memory, and/or a decoder, such as a hardware decoder.
- the electronic device 120 may be any device that is capable of decoding an encoded data stream, such as an HEVC encoded video stream.
- the electronic device 120 may be, or may include all or part of, a laptop or desktop computer, a smartphone, a personal digital assistant (“PDA”), a portable media player, a tablet computer, a wearable electronic device, such as a pair of glasses or a watch with one or more processors coupled thereto and/or embedded therein, a set-top box, a television or other display with one or more processors coupled thereto and/or embedded therein, or other appropriate electronic devices that can be used to decode an encoded data stream, such as an encoded HEVC video stream.
- PDA personal digital assistant
- the electronic device 120 is depicted as a set-top box, e.g. a device that is coupled to, and is capable of displaying video content on, a display 124 , such as a television, a monitor, or any device capable of displaying video content.
- a display 124 such as a television, a monitor, or any device capable of displaying video content.
- the electronic device 120 may be integrated into the display 124 and/or the display 124 may be capable of outputting audio content in addition to video content.
- the electronic device 120 may receive streams from the CDN 110 , such as encoded data streams, that include content items, such as television programs, movies, or generally any content items.
- the electronic device 120 may receive the encoded data streams from the CDN 110 via the antenna 116 , via the network 108 , and/or via the satellite 115 , and decode the encoded data streams, e.g. using the hardware decoder.
- An example electronic device 120 is discussed further below with respect to FIG. 2 .
- FIG. 2 illustrates an example electronic device 120 that may implement parallel symbol decoding in accordance with one or more implementations. Not all of the depicted components may be required, however, and one or more implementations may include additional components not shown in the figure. Variations in the arrangement and type of the components may be made without departing from the spirit or scope of the claims as set forth herein. Additional components, different components, or fewer components may be provided.
- the electronic device 120 includes a decoder 200 , a memory 220 , and one or more processors 222 .
- the decoder 200 includes a CABAC block 202 , a memory buffer 204 , a symbol decoder 210 , a spatial mode generator 212 , a vector generator 214 , and a coefficient generator 216 .
- any of the CABAC block 202 , a memory buffer 204 , a symbol decoder 210 , a spatial mode generator 212 , a vector generator 214 , and a coefficient generator 216 may be referred to as a decoder block.
- the electronic device 120 receives a bitstream that includes an encoded video stream, such as a video stream encoded using an HEVC codec.
- the electronic device 120 passes the bitstream to the CABAC block 202 of the decoder 200 .
- the bitstream may be organized in a format that is associated with the codec used to encode the bitstream, such as the HEVC codec.
- the CABAC block 202 may parse the bitstream based on the format associated with the codec. An example process for parsing a bitstream, e.g. based on the HEVC codec, is discussed further below with respect to FIG. 8 .
- the CABAC block 202 parses the bitstream and converts the bitstream into a stream of binary symbols that are stored in the memory buffer 204 . However, when the CABAC block 202 identifies a binary symbol that corresponds to the start of motion vector data, e.g. based on the determined or known organization or format of the bitstream, the CABAC block 202 buffers the binary symbol, and subsequent consecutive binary symbols that include motion vector data, in an on-chip buffer, or an internal buffer. The CABAC block 202 also leaves space in the on-chip buffer before the binary symbol for a fixed-sized length field, such as a ten bit field. In one or more implementations, the length of the motion vector data may be bounded, e.g.
- the CABAC block 202 continues to convert the bitstream into binary symbols, and buffer the binary symbols in the on-chip buffer, until the CABAC block 202 identifies a binary symbol that corresponds to the end of the motion vector data. For example, the CABAC block 202 may identify the last binary symbol that corresponds to motion vector data or the first binary symbol that corresponds to the next compressed image data, such as transform coefficient data.
- the CABAC block 202 Upon identifying the binary symbol that corresponds to the end of the motion vector data, the CABAC block 202 determines the length of the motion vector data, e.g. based on the number of binary symbols stored in the on-chip buffer. The CABAC block 202 inserts the length of the motion vector data into the previously reserved space for the length field, and writes all of the internally buffered data, e.g. the length field and the binary symbols, to the memory buffer 204 . An example format of the stream of binary symbols, including an inserted length field, is discussed further below with respect to FIG. 6 . The CABAC block 202 may continue to convert the bitstream into the stream of binary symbols and insert length fields before consecutive binary symbols that include motion vector data, e.g. until the entirety of the bitstream has been converted. An example process of the CABAC block 202 is discussed further below with respect to FIG. 4 .
- the symbol decoder 210 may subsequently retrieve the symbols from the memory buffer 204 and utilize the inserted length field as a pointer to the end of the binary symbols that include the motion vector data and, consequently, the start of the binary symbols that include the next compressed image data, e.g. transform coefficient data.
- the symbol decoder 210 may decode the binary symbols that include the motion vector data (and provide the motion vector data to the vector generator 214 ) and in parallel with decoding the binary symbols that include other compressed image data (and providing the other compressed image data to the spatial mode generator 212 or the coefficient generator 216 ).
- Example components of the symbol decoder 210 are discussed further below with respect to FIG. 3 , and an example process of the symbol decoder 210 is discussed further below with respect to FIG. 5 .
- the symbol decoder 210 can extract and decode the binary symbols that include motion vector data in parallel with, e.g. at substantially the same time as, binary symbols that include other compressed image data, such as spatial mode data, transform coefficient data, etc. time required for decoding the compressed image data can be significantly reduced.
- An example timeline illustrating the reduction in decoding time achieved by parallel symbol decoding as compared to serial symbol decoding is discussed further below with respect to FIG. 7 .
- FIG. 3 illustrates an example symbol decoder 210 that may perform parallel symbol decoding in accordance with one or more implementations. Not all of the depicted components may be required, however, and one or more implementations may include additional components not shown in the figure. Variations in the arrangement and type of the components may be made without departing from the spirit or scope of the claims as set forth herein. Additional components, different components, or fewer components may be provided.
- the symbol decoder 210 includes a first in first out (FIFO) memory 302 , a first decode path 310 , and a second decode path 320 .
- the first decode path 310 decodes binary symbols corresponding to motion vector data and provides the decoded motion vector data to the vector generator 214 .
- the first decode path 310 includes a buffer 312 , a first alignment block 314 , a register 316 , and a first decode block 318 .
- the second decode path 320 decodes binary symbols corresponding to other compressed image data, such as spatial mode data, transform coefficient data, etc., provides decoded spatial mode data to the spatial mode generator 212 and provides decoded transform coefficient data to the coefficient generator 216 .
- the second decode path 320 includes a second alignment block 324 , a register 326 , and a second decode block 328 .
- the first decode path 310 may be physically separate and distinct from the second decode path 320 .
- the symbol decoder 210 may retrieve the binary symbol stream from the memory buffer 204 and may store the binary symbol stream in the FIFO memory 302 .
- the symbol decoder 210 may retrieve the binary symbol stream from the FIFO memory 302 and pass the binary symbol stream to the second decode path 320 , until the symbol decoder 210 identifies a length field in the binary symbol stream.
- the symbol decoder 210 identifies a length field in the binary symbol stream, e.g. indicating that a subsequent number of consecutive symbols correspond to motion vector data
- the symbol decoder 210 extracts the number of consecutive binary symbols from the stream indicated by the length field, and passes the extracted binary symbols to the first decode path 310 .
- the symbol decoder 210 passes the extracted binary symbols that correspond to motion vector data to the first decode path 310 rather than the second decode path 320 .
- the buffer 312 of the first decode path 310 buffers received binary symbols, e.g. when the pipeline of the first decode path 310 is full.
- the first alignment block 314 performs alignment for the binary symbols retrieved from the buffer 312 , such as based on a bit position.
- the binary symbols are stored in the register 316 from which they are retrieved by the first decode block 318 .
- the first decode block 318 performs a symbol decode, e.g. a table look-up, which determines both the symbol value and the size of the symbol in bits.
- the first decode block 318 provides the size of the symbol in bits to the first alignment block 314 which updates the bit position for the binary symbols being retrieved from the buffer 312 .
- the decoded binary symbols are then provided to the vector generator 214 .
- the second alignment block 324 retrieves binary symbols directly from the FIFO memory 302 .
- the second alignment block 324 performs alignment for the binary symbols retrieved from the FIFO memory 302 , such as based on a bit position.
- the binary symbols are stored in the register 326 from which they are retrieved by the second decode block 328 .
- the second decode block 328 performs a symbol decode, e.g. a table look-up, which determines both the symbol value and the size of the symbol in bits.
- the second decode block 328 provides the size of the symbol in bits to the second alignment block 324 which updates the bit position for the binary symbols being retrieved from the FIFO memory 302 .
- the decoded binary symbols are then provided to the spatial mode generator 212 , in the case of spatial mode data, or the coefficient generator 216 , in the case of transform coefficient data.
- FIG. 4 illustrates a flow diagram of an example process 400 of a first decoder block of a decoder 200 in accordance with one or more implementations.
- the example process 400 is described herein with reference to the CABAC block 202 of FIG. 2 ; however, the example process 400 is not limited to the CABAC block 202 of FIG. 2 , and the example process 400 may be performed by one or more other components of the decoder 200 .
- the blocks of the example process 400 are described herein as occurring in serial, or linearly. However, multiple blocks of the example process 400 may occur in parallel.
- the blocks of the example process 400 need not be performed in the order shown and/or one or more of the blocks of the example process 400 need not be performed.
- the CABAC block 202 converts an encoded bitstream into a stream of binary symbols ( 402 ), e.g. based at least in part on a CABAC encoding associated with the codec used to encode the bitstream. As the CABAC block 202 is converting the encoded bitstream into the stream of binary symbols ( 402 ), the CABAC block 202 determines whether a converted binary symbol includes motion vector data ( 404 ), e.g. based on the organization of the bitstream associated with the codec used to encode the bitstream. If the CABAC block 202 determines that the binary symbol does not include motion vector data ( 404 ), the CABAC block 202 stores the binary symbol in the memory buffer 204 ( 414 ).
- the CABAC block 202 determines that the binary symbol includes motion vector data ( 404 ). If the CABAC block 202 determines that the binary symbol includes motion vector data ( 404 ), the CABAC block 202 reserves space in an on-chip buffer for a length field ( 406 ), and stores the subsequent consecutive binary symbols that include motion vector data in the on-chip buffer ( 408 ). Once the subsequent consecutive binary symbols that include motion vector data have been stored in the on-chip buffer, e.g. when a binary symbol that does not include motion vector data is identified by the CABAC block 202 , the CABAC block 202 determines the number of the consecutive binary symbols that include motion vector data ( 410 ), such as by determining the number of binary symbols stored in the on-chip buffer.
- the CABAC block 202 inserts the determined number of the consecutive binary symbols into the space reserved in the on-chip buffer for the length field ( 412 ). The CABAC block 202 then retrieves the inserted length field and the binary symbols from the on-chip buffer and stores the inserted length field and the binary symbols in the memory buffer 204 ( 414 ).
- FIG. 5 illustrates a flow diagram of an example process 500 of a second decoder block of a decoder 200 in accordance with one or more implementations.
- the example process 500 is described herein with reference to the symbol decoder 210 of FIGS. 2 and 3 ; however, the example process 500 is not limited to the symbol decoder 210 of FIGS. 2 and 3 , and the example process 500 may be performed by one or more other components of the symbol decoder 210 .
- the blocks of the example process 500 are described herein as occurring in serial, or linearly. However, multiple blocks of the example process 500 may occur in parallel.
- the blocks of the example process 500 need not be performed in the order shown and/or one or more of the blocks of the example process 500 need not be performed.
- the symbol decoder 210 retrieves the binary symbol stream from the memory buffer 204 ( 502 ). The symbol decoder 210 determines whether a length field is identified in the binary symbol stream ( 504 ). If the symbol decoder 210 does not identify a length field in the binary symbol stream ( 504 ), the symbol decoder 210 provides the binary symbols of the binary symbol stream to the second decode path 320 for decoding ( 506 ). If the symbol decoder 210 identifies a length field in the binary symbol stream ( 504 ), the symbol decoder 210 extracts the number of consecutive binary symbols indicated by the length field from the binary symbol stream ( 508 ) and provides the extracted binary symbols to the first decode path 310 for decoding ( 510 ).
- FIG. 6 illustrates an example binary symbol stream 600 in accordance with one or more implementations. Not all of the depicted components may be required, however, and one or more implementations may include additional components not shown in the figure. Variations in the arrangement and type of the components may be made without departing from the spirit or scope of the claims as set forth herein. Additional components, different components, or fewer components may be provided.
- the binary symbol stream 600 includes a coding unit header 602 , a length field 604 , binary symbols that include motion vector data 606 and binary symbols that include coefficient data 608 .
- the length field 604 indicates the subsequent number of consecutive binary symbols that include the motion vector data 606 .
- the symbol decoder 210 can extract the binary symbols that include motion vector data 606 and provide the binary symbols that include the motion vector data 606 to the first decode path 310 for decoding while the binary symbols that include the coefficient data 608 are decoded by the second decode path 320 .
- the binary symbol stream 600 may include multiple coding unit headers 602 , length fields 604 , binary symbols that include motion vector data 606 and binary symbols that include coefficient data 608 .
- FIG. 7 illustrates an example timing diagram for serial symbol decoding 700 A and an example timing diagram for parallel symbol decoding 700 B in accordance with one or more implementations. Not all of the depicted components may be required, however, and one or more implementations may include additional components not shown in the figure. Variations in the arrangement and type of the components may be made without departing from the spirit or scope of the claims as set forth herein. Additional components, different components, or fewer components may be provided.
- the example timing diagram for serial symbol decoding 700 A illustrates the serial symbol decoding of a first coding unit 710 A, a second coding unit 720 A, and other compressed image data 730 A.
- the example timing diagram for parallel symbol decoding 700 B illustrates the parallel symbol decoding of a first coding unit 710 B, a second coding unit 720 B, and other compressed image data 730 B.
- the first coding units 710 A, 710 B are labeled differently for explanatory purposes; however, the first coding units 710 A, 710 B contain the same contents.
- the second coding units 720 A, 720 B are labeled differently for explanatory purposes; however, the second coding units 720 A, 720 B contain the same contents.
- the other compressed image data 730 A, 730 B are labeled differently for explanatory purposes; however, the other compressed image data 730 A, 730 B contain the same contents.
- the first coding units 710 A, 710 B include coding unit header decodes 712 A, 712 B, motion vector decodes 714 A, 714 B, and coefficient decodes 716 A, 716 B.
- the second coding units 720 A, 720 B include coding unit header decodes 722 A, 722 B, motion vector decodes 724 A, 724 B, and coefficient decodes 726 A, 726 B.
- serial symbol decoding each of the binary symbols is decoded in serial, e.g. one-by-one.
- parallel symbol decoding multiple binary symbols can be decoded in parallel, e.g. substantially simultaneously.
- the motion vector decode 714 B can be performed by the first decode path 310 while the coefficient decode 716 B is performed by the second decode path 320 .
- the parallel symbol decoding provided by the subject system allows the first and second coding units 710 B, 720 B to be decoded in significantly less time than serial symbol decoding.
- FIG. 8 illustrates a flow diagram of an example process 800 for parsing a coding unit in accordance with one or more implementations.
- the example process 800 is described herein with reference to the CABAC block 202 of FIG. 2 ; however, the example process 800 is not limited to the CABAC block 202 of FIG. 2 , and the example process 800 may be performed by one or more other components of the decoder 200 .
- the blocks of the example process 800 are described herein as occurring in serial, or linearly. However, multiple blocks of the example process 800 may occur in parallel.
- the blocks of the example process 800 need not be performed in the order shown and/or one or more of the blocks of the example process 800 need not be performed.
- the CABAC block 202 receives an encoded bitstream containing coding units and parses coding unit data, such as split flags, coding unit (CU) types, etc. from the bitstream ( 802 ).
- the CABAC block 202 determines whether the parsed CU type indicates that the coding unit includes spatial data ( 804 ). If the CABAC block 202 determines that the parsed CU type indicates that the coding unit includes spatial data ( 804 ), the CABAC block 202 parses information from the bitstream that corresponds to spatial mode data ( 806 ). If the CABAC block 202 determines that the parsed CU type does not indicate that the coding unit includes spatial data ( 804 ), the CABAC block 202 parses information from the bitstream that includes motion vector data ( 808 ).
- the CABAC block 202 parses information from the bitstream that includes transform coefficient data ( 810 ). The CABAC block 202 repeats this process for the entirety of the bitstream. In this manner, the CABAC block 202 can determine where motion vector data starts and ends in the bitstream and/or the binary symbol stream, and can therefore insert the length fields into the binary symbol stream corresponding to the motion vector data.
- FIG. 9 conceptually illustrates an electronic system 900 with which one or more implementations of the subject technology may be implemented.
- the electronic system 900 can be a desktop computer, a laptop computer, a tablet computer, a server, a switch, a router, a base station, a receiver, a phone, a personal digital assistant (PDA), or generally any electronic device that transmits signals over a network.
- the electronic system 900 may be, and/or may include one or more components of, the electronic device 120 .
- Such an electronic system 900 includes various types of computer readable media and interfaces for various other types of computer readable media.
- the electronic system 900 includes a bus 908 , one or more processing unit(s) 912 , a system memory 904 , a read-only memory (ROM) 910 , a permanent storage device 902 , an input device interface 914 , an output device interface 906 , one or more network interfaces 916 , such as local area network (LAN) interfaces and/or wide area network interfaces (WAN), and a decoder 200 or subsets and variations thereof.
- LAN local area network
- WAN wide area network interfaces
- the bus 908 collectively represents all system, peripheral, and chipset buses that communicatively connect the numerous internal devices of the electronic system 900 .
- the bus 908 communicatively connects the one or more processing unit(s) 912 with the ROM 910 , the system memory 904 , and the permanent storage device 902 . From these various memory units, the one or more processing unit(s) 912 retrieves instructions to execute and data to process in order to execute the processes of the subject disclosure.
- the one or more processing unit(s) 912 can be a single processor or a multi-core processor in different implementations.
- the decoder 200 may be a hardware decoder.
- the ROM 910 stores static data and instructions that are needed by the one or more processing unit(s) 912 and other modules of the electronic system 900 .
- the permanent storage device 902 may be a read-and-write memory device.
- the permanent storage device 902 may be a non-volatile memory unit that stores instructions and data even when the electronic system 900 is off.
- a mass-storage device (such as a magnetic or optical disk and its corresponding disk drive) may be used as the permanent storage device 902 .
- a removable storage device such as a floppy disk, flash drive, and its corresponding disk drive
- the system memory 904 may be a read-and-write memory device.
- the system memory 904 may be a volatile read-and-write memory, such as random access memory.
- the system memory 904 may store any of the instructions and data that one or more processing unit(s) 912 may need at runtime.
- the processes of the subject disclosure are stored in the system memory 904 , the permanent storage device 902 , and/or the ROM 910 . From these various memory units, the one or more processing unit(s) 912 retrieves instructions to execute and data to process in order to execute the processes of one or more implementations.
- the bus 908 also connects to the input and output device interfaces 914 and 906 .
- the input device interface 914 enables a user to communicate information and select commands to the electronic system 900 .
- Input devices that may be used with the input device interface 914 may include, for example, alphanumeric keyboards and pointing devices (also called “cursor control devices”).
- the output device interface 906 may enable, for example, the display of images generated by electronic system 900 .
- Output devices that may be used with the output device interface 906 may include, for example, printers and display devices, such as a liquid crystal display (LCD), a light emitting diode (LED) display, an organic light emitting diode (OLED) display, a flexible display, a flat panel display, a solid state display, a projector, or any other device for outputting information.
- printers and display devices such as a liquid crystal display (LCD), a light emitting diode (LED) display, an organic light emitting diode (OLED) display, a flexible display, a flat panel display, a solid state display, a projector, or any other device for outputting information.
- One or more implementations may include devices that function as both input and output devices, such as a touchscreen.
- feedback provided to the user can be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input.
- the bus 908 also couples the electronic system 900 to a network (not shown) through one or more network interfaces 916 , such as one or more LAN interfaces and/or WAN interfaces.
- the electronic system 900 can be a part of a network of computers, such as a LAN, a WAN, an Intranet, or a network of networks, such as the Internet. Any or all components of the electronic system 900 can be used in conjunction with the subject disclosure.
- Implementations within the scope of the present disclosure can be partially or entirely realized using a tangible computer-readable storage medium (or multiple tangible computer-readable storage media of one or more types) encoding one or more instructions.
- the tangible computer-readable storage medium also can be non-transitory in nature.
- the computer-readable storage medium can be any storage medium that can be read, written, or otherwise accessed by a general purpose or special purpose computing device, including any processing electronics and/or processing circuitry capable of executing instructions.
- the computer-readable medium can include any volatile semiconductor memory, such as RAM, DRAM, SRAM, T-RAM, Z-RAM, and TTRAM.
- the computer-readable medium also can include any non-volatile semiconductor memory, such as ROM, PROM, EPROM, EEPROM, NVRAM, flash, nvSRAM, FeRAM, FeTRAM, MRAM, PRAM, CBRAM, SONOS, RRAM, NRAM, racetrack memory, FJG, and Millipede memory.
- the computer-readable storage medium can include any non-semiconductor memory, such as optical disk storage, magnetic disk storage, magnetic tape, other magnetic storage devices, or any other medium capable of storing one or more instructions.
- the tangible computer-readable storage medium can be directly coupled to a computing device, while in other implementations, the tangible computer-readable storage medium can be indirectly coupled to a computing device, e.g., via one or more wired connections, one or more wireless connections, or any combination thereof.
- Instructions can be directly executable or can be used to develop executable instructions.
- instructions can be realized as executable or non-executable machine code or as instructions in a high-level language that can be compiled to produce executable or non-executable machine code.
- instructions also can be realized as or can include data.
- Computer-executable instructions also can be organized in any format, including routines, subroutines, programs, data structures, objects, modules, applications, applets, functions, etc. As recognized by those of skill in the art, details including, but not limited to, the number, structure, sequence, and organization of instructions can vary significantly without varying the underlying logic, function, processing, and output.
- ASICs application specific integrated circuits
- FPGAs field programmable gate arrays
- integrated circuits execute instructions that are stored on the circuit itself.
- any specific order or hierarchy of blocks in the processes disclosed is an illustration of example approaches. Based upon design preferences, it is understood that the specific order or hierarchy of blocks in the processes may be rearranged, or that all illustrated blocks be performed. Any of the blocks may be performed simultaneously. In one or more implementations, multitasking and parallel processing may be advantageous. Moreover, the separation of various system components in the embodiments described above should not be understood as requiring such separation in all embodiments, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.
- base station As used in this specification and any claims of this application, the terms “base station”, “receiver”, “computer”, “server”, “processor”, and “memory” all refer to electronic or other technological devices. These terms exclude people or groups of people.
- display or “displaying” means displaying on an electronic device.
- the phrase “at least one of” preceding a series of items, with the term “and” or “or” to separate any of the items, modifies the list as a whole, rather than each member of the list (i.e., each item).
- the phrase “at least one of” does not require selection of at least one of each item listed; rather, the phrase allows a meaning that includes at least one of any one of the items, and/or at least one of any combination of the items, and/or at least one of each of the items.
- phrases “at least one of A, B, and C” or “at least one of A, B, or C” each refer to only A, only B, or only C; any combination of A, B, and C; and/or at least one of each of A, B, and C.
- a processor configured to monitor and control an operation or a component may also mean the processor being programmed to monitor and control the operation or the processor being operable to monitor and control the operation.
- a processor configured to execute code can be construed as a processor programmed to execute code or operable to execute code.
- a phrase such as “an aspect” does not imply that such aspect is essential to the subject technology or that such aspect applies to all configurations of the subject technology.
- a disclosure relating to an aspect may apply to all configurations, or one or more configurations.
- An aspect may provide one or more examples of the disclosure.
- a phrase such as an “aspect” may refer to one or more aspects and vice versa.
- a phrase such as an “embodiment” does not imply that such embodiment is essential to the subject technology or that such embodiment applies to all configurations of the subject technology.
- a disclosure relating to an embodiment may apply to all embodiments, or one or more embodiments.
- An embodiment may provide one or more examples of the disclosure.
- a phrase such an “embodiment” may refer to one or more embodiments and vice versa.
- a phrase such as a “configuration” does not imply that such configuration is essential to the subject technology or that such configuration applies to all configurations of the subject technology.
- a disclosure relating to a configuration may apply to all configurations, or one or more configurations.
- a configuration may provide one or more examples of the disclosure.
- a phrase such as a “configuration” may refer to one or more configurations and vice versa.
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Description
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/028,455 US9432688B2 (en) | 2013-08-26 | 2013-09-16 | Parallel symbol decoding |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361870193P | 2013-08-26 | 2013-08-26 | |
US14/028,455 US9432688B2 (en) | 2013-08-26 | 2013-09-16 | Parallel symbol decoding |
Publications (2)
Publication Number | Publication Date |
---|---|
US20150055708A1 US20150055708A1 (en) | 2015-02-26 |
US9432688B2 true US9432688B2 (en) | 2016-08-30 |
Family
ID=52480366
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/028,455 Active 2034-08-02 US9432688B2 (en) | 2013-08-26 | 2013-09-16 | Parallel symbol decoding |
Country Status (1)
Country | Link |
---|---|
US (1) | US9432688B2 (en) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6466624B1 (en) * | 1998-10-28 | 2002-10-15 | Pixonics, Llc | Video decoder with bit stream based enhancements |
US20040240743A1 (en) * | 2003-05-08 | 2004-12-02 | Mana Hamada | Image decoding unit, image encoding/ decoding devices using image decoding unit, and method thereof |
US20060109912A1 (en) * | 2004-11-24 | 2006-05-25 | Lsi Logic Corporation | Method and/or apparatus for parsing compressed video bitstreams |
US20110248872A1 (en) * | 2010-04-13 | 2011-10-13 | Research In Motion Limited | Methods and devices for load balancing in parallel entropy coding and decoding |
US20110254712A1 (en) * | 2010-04-19 | 2011-10-20 | Research In Motion Limited | Methods and devices for reordered parallel entropy coding and decoding |
US20120121024A1 (en) * | 2009-10-30 | 2012-05-17 | Samsung Electronics Co., Ltd. | Method and apparatus for parallel entropy encoding and parallel entropy decoding based on decoding rate |
US20120207213A1 (en) * | 2009-10-15 | 2012-08-16 | Siemens Aktiengesellschaft | Method for encoding symbols from a sequence of digitized images |
US20120269448A1 (en) * | 2011-04-19 | 2012-10-25 | Canon Kabushiki Kaisha | Image processing apparatus and image processing method |
US20130114686A1 (en) | 2011-11-08 | 2013-05-09 | Sharp Laboratories Of America, Inc. | Video decoder with enhanced cabac motion vector decoding |
-
2013
- 2013-09-16 US US14/028,455 patent/US9432688B2/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6466624B1 (en) * | 1998-10-28 | 2002-10-15 | Pixonics, Llc | Video decoder with bit stream based enhancements |
US20040240743A1 (en) * | 2003-05-08 | 2004-12-02 | Mana Hamada | Image decoding unit, image encoding/ decoding devices using image decoding unit, and method thereof |
US20060109912A1 (en) * | 2004-11-24 | 2006-05-25 | Lsi Logic Corporation | Method and/or apparatus for parsing compressed video bitstreams |
US20120207213A1 (en) * | 2009-10-15 | 2012-08-16 | Siemens Aktiengesellschaft | Method for encoding symbols from a sequence of digitized images |
US20120121024A1 (en) * | 2009-10-30 | 2012-05-17 | Samsung Electronics Co., Ltd. | Method and apparatus for parallel entropy encoding and parallel entropy decoding based on decoding rate |
US20110248872A1 (en) * | 2010-04-13 | 2011-10-13 | Research In Motion Limited | Methods and devices for load balancing in parallel entropy coding and decoding |
US20110254712A1 (en) * | 2010-04-19 | 2011-10-20 | Research In Motion Limited | Methods and devices for reordered parallel entropy coding and decoding |
US20120269448A1 (en) * | 2011-04-19 | 2012-10-25 | Canon Kabushiki Kaisha | Image processing apparatus and image processing method |
US20130114686A1 (en) | 2011-11-08 | 2013-05-09 | Sharp Laboratories Of America, Inc. | Video decoder with enhanced cabac motion vector decoding |
Non-Patent Citations (2)
Title |
---|
"Image Processing-Context-Based Adaptive Binary Arithmetic Coding (CABAC)", Fraunhofer Heinrich-Hertz-Institut, retrieved from <www.hhi.fraunhofer.de/de/kompetenzfelder/image-processing/research-groups/image-video-coding/statistical-modeling-coding/context-based-adaptive-binary . . . > on Jul. 19, 2013, pp. 1-3. |
Sullivan, et al., "Overview of the High Efficiency Video Coding (HEVC) Standard", IEEE Transactions on Circuits and Systems for Video Technology, Dec. 2012, pp. 1649-1668, vol. 22, No. 12. |
Also Published As
Publication number | Publication date |
---|---|
US20150055708A1 (en) | 2015-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210337217A1 (en) | Video analytics encoding for improved efficiency of video processing and compression | |
CN103581665B (en) | Transcoded video data | |
TWI610295B (en) | Computer-implemented method of decompressing and compressing transducer data for speech recognition and computer-implemented system of speech recognition | |
CN103797805B (en) | Use the media coding in change region | |
US9749636B2 (en) | Dynamic on screen display using a compressed video stream | |
US10764590B2 (en) | Entropy coding primary and secondary coefficients of video data | |
CN104221382A (en) | Electronic devices for sending a message and buffering a bitstream | |
WO2017101355A1 (en) | Method and device for image processing | |
US20200112709A1 (en) | Carriage of pcc in isobmff for flexible combination | |
EP2866140A1 (en) | System and method for forwarding an application user interface | |
US10534852B2 (en) | Display system and virtual web device in the cloud | |
US20240078385A1 (en) | Method and apparatus for generating text | |
CN106664407A (en) | Parallel encoding for wireless displays | |
US20140333641A1 (en) | System and method for forwarding a graphics command stream | |
WO2018129924A1 (en) | Image processing method and electronic device | |
CN111783395B (en) | Method and device for outputting text | |
JP2016506165A (en) | Interlayer motion data inheritance | |
CN112601096A (en) | Video decoding method, device, equipment and readable storage medium | |
JP2024512914A (en) | Method and apparatus for video encoding for machine vision | |
CN104094603A (en) | Systems and methods for integrated metadata insertion in a video encoding system | |
US20140333640A1 (en) | System and method for forwarding a graphics command stream | |
CN104956671B (en) | Video frame is rebuild | |
JP2023549210A (en) | Video frame compression method, video frame decompression method and device | |
US9432688B2 (en) | Parallel symbol decoding | |
US20150084971A1 (en) | System and method for forwarding an application user interface |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: BROADCOM CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:HELLMAN, TIMOTHY MOORE;PAUL, NIRMALA;THOMPSON, STEPHEN MICHAEL;REEL/FRAME:031236/0066 Effective date: 20130906 |
|
AS | Assignment |
Owner name: BANK OF AMERICA, N.A., AS COLLATERAL AGENT, NORTH CAROLINA Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:BROADCOM CORPORATION;REEL/FRAME:037806/0001 Effective date: 20160201 Owner name: BANK OF AMERICA, N.A., AS COLLATERAL AGENT, NORTH Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:BROADCOM CORPORATION;REEL/FRAME:037806/0001 Effective date: 20160201 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD., SINGAPORE Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BROADCOM CORPORATION;REEL/FRAME:041706/0001 Effective date: 20170120 Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BROADCOM CORPORATION;REEL/FRAME:041706/0001 Effective date: 20170120 |
|
AS | Assignment |
Owner name: BROADCOM CORPORATION, CALIFORNIA Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:BANK OF AMERICA, N.A., AS COLLATERAL AGENT;REEL/FRAME:041712/0001 Effective date: 20170119 |
|
AS | Assignment |
Owner name: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITE Free format text: MERGER;ASSIGNOR:AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.;REEL/FRAME:047422/0464 Effective date: 20180509 |
|
AS | Assignment |
Owner name: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITE Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE PREVIOUSLY RECORDED AT REEL: 047422 FRAME: 0464. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER;ASSIGNOR:AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.;REEL/FRAME:048883/0702 Effective date: 20180905 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |