DETAILED ACTION
Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Response to Arguments
In view of the Appeal Brief filed on October 20, 2025, PROSECUTION IS HEREBY REOPENED. A new ground of rejection is set forth below.
To avoid abandonment of the application, appellant must exercise one of the following two options:
(1) file a reply under 37 CFR 1.111 (if this Office action is non-final) or a reply under 37 CFR 1.113 (if this Office action is final); or,
(2) initiate a new appeal by filing a notice of appeal under 37 CFR 41.31 followed by an appeal brief under 37 CFR 41.37. The previously paid notice of appeal fee and appeal brief fee can be applied to the new appeal. If, however, the appeal fees set forth in 37 CFR 41.20 have been increased since they were previously paid, then appellant must pay the difference between the increased fees and the amount previously paid.
A Supervisory Patent Examiner (SPE) has approved of reopening prosecution by signing below:
/Brian T Pendleton/ Supervisory Patent Examiner, Art Unit 2425
Claim Rejections - 35 USC § 103
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claims 21 - 25, 29 - 36 and 40 - 44 are rejected under 35 U.S.C. 103 as being unpatentable over Converse (US 2017/0164007 A1) referred to as Converse hereinafter, in view of Guo et al., (US 2013/0114691 A1) referred to as Guo hereinafter, and in further view of Giesen, “rANS in practice,” downloaded from The ryg blog (wordpress.com), 10 pp. (December 2015) referred to as Giesen hereinafter.
Regarding Claim 21, Converse teaches in a computer system (Fig. 1, Par. [0022], A transmitting station 102 can be, for example, a computer having an internal configuration of hardware such as that described in FIG. 2), a method (Fig. 4) comprising:
encoding input symbols using a range asymmetric number system ("RANS") encoder (Par. [0073], a symbol ANS coder (e.g., for tokens (also known as a “symbol”)), Par. [0085], The symbol ANS decoder 904 controls the state normalization, output computation, and state evolution (and hence, the common decoder state 906) while operating within the range of the TOKEN node 606), thereby generating encoded data for at least part of a bitstream (Par. [0036], Encoder 400 has the following stages to perform the various functions in a forward path (shown by the solid connection lines) to produce an encoded or compressed bitstream 420 using video stream 300), including:
determining whether state of a RANS decoder (Fig. 6, State diagram 600, Par. [0055], The binary ANS flag indicates whether or not (i.e. determining whether) the EOB (end-of-block) has been reached for a current block (i.e. state) so the flag read at the EOB node 602 may be more generically referred to herein as an EOB flag or EOBF) is to be changed (Par [0077], the common ANS state of the decoders 902, 904 results in operation of the decoders 902, 904 according to one of the nodes of FIG. 6, and common ANS state of the encoders 1002, 1004 results in operation of the decoders 902, 904 according to one of the nodes of FIG. 8. And Par. [0087], the symbol ANS encoder 1004 controls the state evolution function at any given point depends on the value of the state (i.e., which node of the state diagram encompasses the current state value)), by setting the state of the RANS decoder to zero (Fig. 6, Fig. 6, Par. [0055] If the EOB is “1” the decoder state advances to the ZERO node 604. Par. [0057] At the ZERO node 604, a zero flag or ZEROF is read. This flag may be another binary ANS flag read with an appropriate context probability. On a value of “0” for the binary ANS flag (e.g., representing that the token is ZERO), a zero value is outputted (i.e. changes) for the current transform coefficient (e.g., using a detokenizer) (i.e. set the state to zero)), and re-initialized, by loading an initial state as the state of the RANS decoder (Fig. 6, Par. [0057] Then, the coefficient counter increments (i.e. loading), and the state remains unchanged (i.e. initial state) so that decoder remains at the ZERO node 604), for decoding of the encoded data for the at least part of the bitstream (Par. [0047] FIG. 6 is a state diagram 600 of an entropy decoding state machine forming the entropy decoding stage 502 of FIG. 5);
setting an element (Par. [0049] the final non-zero block is marked with an end-of-block (EOB) indicator or flag (i.e. element), Par. [0055] EOB flag, EOBF (i.e. element)) that indicates whether the state of the RANS decoder (Fig. 6, State diagram 600, Par. [0055], The binary ANS flag indicates whether or not (i.e. determining whether) the EOB (end-of-block) has been reached for a current block (i.e. state) so the flag read at the EOB node 602 may be more generically referred to herein as an EOB flag or EOBF) is to be changed, by setting the state of the RANS decoder to zero (Fig. 6, Fig. 6, Par. [0055] If the EOB is “1” the decoder state advances to the ZERO node 604. Par. [0057] At the ZERO node 604, a zero flag or ZEROF is read. This flag may be another binary ANS flag read with an appropriate context probability. On a value of “0” for the binary ANS flag (e.g., representing that the token is ZERO), a zero value is outputted (i.e. changes) for the current transform coefficient (e.g., using a detokenizer) (i.e. set the state to zero)), and re-initialized, by loading the initial state as the state of the RANS decoder (Fig. 6, Par. [0057] Then, the coefficient counter increments (i.e. loading), and the state remains unchanged (i.e. initial state) so that decoder remains at the ZERO node 604), for decoding of the encoded data for the at least part of the bitstream (Par. [0044], When compressed bitstream 420 is presented for decoding, the data elements within compressed bitstream 420 can be decoded by entropy decoding stage 502); and
performing RANS encoding (Par. [0091], during state evolution, the state, the output value, and the probability or probability distribution are used to calculate the next state (i.e. performing) to conform to the state diagram 800); and
outputting the encoded data for the at least part of the bitstream (Par. [0039], The entropy-encoded coefficients, together with other information used to decode the block, which may include for example the type of prediction used, transform type, motion vectors and quantizer value, are then output to the compressed bitstream 420), wherein a header in the at least part of the bitstream Par. [0044], Using header information decoded from compressed bitstream 420) includes the element ((Par. [0049] the final non-zero block is marked with an end-of-block (EOB) indicator or flag (i.e. element), Par. [0055] EOB flag, EOBF (i.e. element)) that indicates whether the state of the RANS decoder (Fig. 6, State diagram 600, Par. [0055], The binary ANS flag indicates whether or not (i.e. determining whether) the EOB (end-of-block) has been reached for a current block (i.e. state) so the flag read at the EOB node 602 may be more generically referred to herein as an EOB flag or EOBF) is to be changed, by setting the state of the RANS decoder to zero (Fig. 6, Fig. 6, Par. [0055] If the EOB is “1” the decoder state advances to the ZERO node 604. Par. [0057] At the ZERO node 604, a zero flag or ZEROF is read. This flag may be another binary ANS flag read with an appropriate context probability. On a value of “0” for the binary ANS flag (e.g., representing that the token is ZERO), a zero value is outputted (i.e. changed) for the current transform coefficient (e.g., using a detokenizer) (i.e. set the state to zero)), and re- initialized, by loading the initial state as the state of the RANS decoder ((Fig. 6, Par. [0057] Then, the coefficient counter increments (i.e. loading), and the state remains unchanged (i.e. initial state) so that decoder remains at the ZERO node 604)), for decoding of the encoded data for the at least part of the bitstream (Par. [0044], When compressed bitstream 420 is presented for decoding, the data elements within compressed bitstream 420 can be decoded by entropy decoding stage 502).
While Converse teaches in Par. [0049] the final non-zero block is marked with an end-of-block (EOB) indicator or flag and in Par. [0055] EOB flag, EOBF, Converse does not specifically teach the flag is a syntax element. Therefore, Converse fails to explicitly teach setting a syntax for the decoder for decoding of the encoded data for the at least part of the bitstream.
However, Guo teaches setting a syntax element for the decoder (Par. [0087], The syntax element may be presented (i.e. setting), for example, in a sequence parameter set (SPS), picture parameter set (PPS), adaptation parameter set (APS), slice header, entropy slice header, coding unit (CU) header, or the like. Entropy encoding unit 56 may change a value of the syntax element, e.g., flag, between a first and second value to indicate to the video decoder whether any context states are to be initialized) for decoding of the encoded data for the at least part of the bitstream (Par. [0023] In general, as will be described in greater detail below, a CABAC process includes binarization of symbols to bins having values of 0 or 1, assigning a context to one or more of the bins, and then binary arithmetic encoding the bins using the selected context in a CABAC coding engine. Some of the bins may be encoded using bypass coding, which does not rely on the CABAC coding engine. To encode the bin, an initial state of the context for the bin, i.e., an initial probability value indicating the estimated probability that the values in the bin are 0 or 1, is provided. The context state, i.e., probability value, is then updated based on the actual values (0's or 1's) in the bin as the CABAC process continues. Par. [0057], entropy coding (encoding or decoding) any data symbol using CABAC).
References Converse and Guo are considered to be analogous art because they relate to coding systems. Therefore, it would have been obvious that one of ordinary skill in the art, before the effective filing date of the claimed invention, would recognize the advantage of further specifying a flag is a syntax element as suggested by Guo in the invention of Converse in order to signal to the decoder whether default or adaptive initialization is used for any of the contexts of a frame, slice or other video unit. (See Guo, Par. [0087]).
In addition, Converse in view of Guo does not specifically teach flushed. Therefore, Converse in view of Guo fails the state of a RANS decoder is to be flushed and re-initialized.
However, Giesen teaches the state of a RANS decoder is to be flushed and re-initialized (Page 3 Paragraph 3, line 3-4, process the input data in chunks and flush the coder periodically, resetting (i.e. re-initializing) the rANS state every time).
References Converse, Guo and Giesen are considered to be analogous art because they relate to coding systems. Therefore, it would have been obvious that one of ordinary skill in the art, before the effective filing date of the claimed invention, would recognize the advantage of further specifying flushing and re-initializing the decoder as suggested by Giesen in the inventions of Converse and Guo in order to reduce compression by means of the symbol buffer, the output is not delayed waiting for the end of the bitstream and using the rANS coder as a drop-in replacement for a conventional arithmetic coder (See Giesen, Page 3 Paragraphs 2-3).
Regarding Claim 22, Converse in combination with Guo and Giesen teaches Claim 21. Converse further teaches indicates the states of the RANS decoder is to be decoding of the encoded data for the at least part of the bitstream( Par. [0055], reads a binary ANS flag with an appropriate context probability indicating whether or not the EOB has been reached for a current block), and wherein the encoding further includes determining initial state information for the encoded data for the at least part of the bitstream, the bitstream further including the initial state information for the encoded data for the at least part of the bitstream (Par. [0055], If the EOB has been reached (the flag value is “0”), detokenization is halted for the block). Guo further teaches the syntax element (Par. [0087], The syntax element may be presented (i.e. setting), for example, in a sequence parameter set (SPS), picture parameter set (PPS), adaptation parameter set (APS), slice header, entropy slice header, coding unit (CU) header, or the like. Entropy encoding unit 56 may change a value of the syntax element, e.g., flag, between a first and second value to indicate to the video decoder whether any context states are to be initialized). Giesen further teaches the state of a RANS decoder is to be flushed and re-initialized (Page 3 Paragraph 3, line 3-4, process the input data in chunks and flush the coder periodically, resetting the rANS state every time).
Regarding Claim 23, Converse in combination with Guo and Giesen teaches Claim 21. Converse further teaches indicates the state of the RANS decoder is not to be decoding of the encoded data for the at least part of the bitstream (Par. [0055], reads a binary ANS flag with an appropriate context probability indicating whether or not the EOB has been reached for a current block), and wherein the bitstream lacks initial state information for the encoded data for the at least part of the bitstream (Par. [0055], If the EOB has not been reached (the flag value is “1”) the decoder state advances to the ZERO node 604). Guo further teaches the syntax element (Par. [0087], The syntax element may be presented (i.e. setting), for example, in a sequence parameter set (SPS), picture parameter set (PPS), adaptation parameter set (APS), slice header, entropy slice header, coding unit (CU) header, or the like. Entropy encoding unit 56 may change a value of the syntax element, e.g., flag, between a first and second value to indicate to the video decoder whether any context states are to be initialized). Giesen further teaches the state of a RANS decoder is to be flushed and re-initialized (Page 3 Paragraph 3, line 3-4, process the input data in chunks and flush the coder periodically, resetting the rANS state every time).
Regarding Claim 24, Converse in combination with Guo and Giesen teaches Claim 21. Converse further teaches further comprising repeating the encoding on a fragment-by-fragment basis for each of multiple fragments, each of the multiple fragments including its own header that indicates whether or not the state of the RANS decoder is to be decoding of encoded data for that fragment (Par. [0080], at the start of the decoding process, the ANS state is initialized to a value within the valid range (e.g., of the EOB node 602), and the buffer position is initialized at a first position within the variable string (i.e. multiple fragments). The variable string within the buffer 910 is written/read per bitstream data unit (e.g., per byte) in this example). Guo further teaches the syntax element (Par. [0087], The syntax element may be presented (i.e. setting), for example, in a sequence parameter set (SPS), picture parameter set (PPS), adaptation parameter set (APS), slice header, entropy slice header, coding unit (CU) header, or the like. Entropy encoding unit 56 may change a value of the syntax element, e.g., flag, between a first and second value to indicate to the video decoder whether any context states are to be initialized). Giesen further teaches the state of a RANS decoder is to be flushed and re-initialized (Page 3 Paragraph 3, line 3-4, process the input data in chunks and flush the coder periodically, resetting the rANS state every time).
Regarding Claim 25, Converse in combination with Guo and Giesen teaches Claim 21. Converse further teaches wherein the determining whether or not the state of the RANS decoder is to be decoding of the encoded data for the at least part of the bitstream includes, for a fragment of the input symbols or an initial p input symbols of the fragment, evaluating compression efficiency with the state of the RANS decoder retained versus compression efficiency with the state of the RANS decoder (Par. [0072], sequentially producing transform coefficients of the current block from the variable string (i.e. fragment) using the entropy decoder state machine until a maximum number (i.e. compression efficiency) of transform coefficients is output). Giesen further teaches the state of a RANS decoder is to be flushed and re-initialized (Page 3 Paragraph 3, line 3-4, process the input data in chunks and flush the coder periodically, resetting the rANS state every time).
Regarding Claim 29, Converse in combination with Guo and Giesen teaches Claim 21. Converse further teaches further comprising storing the encoded data (Fig. 2, Par. [0029], Any other suitable type of non-transitory memory or storage device can be used as memory 204) for the at least part of the bitstream on a computer-readable medium (Par. [0098], a portion of implementations of the present disclosure can take the form of a computer program product accessible from, for example, a tangible computer-usable or computer-readable medium).
Regarding claims 30, 31, 33 – 35, the limitations are similar to those treated in the above rejection(s), and are met by the references as discussed above. Apparatus Claims 30, 31, 33 – 35 however recite decoding method, rather than an encoding method, which is similar in structure expect in reverse operation. Therefore claims 30, 31, 33 – 35 correspond to claims 21 - 24, and are rejected for the same reasons of obviousness as used above. Apparatus Claim 30 further recites an encoded data buffer (See Converse Par. [0077], the encoders 1002, 1004 share a common encoder state 1006 including an ANS state (e.g., a scalar or integer) and a buffer position within a memory buffer 1010 that stores the variable string to which the encoded tokens of the current block are written before extraction to the encoded bitstream), memory of the computer system (Par. [0025], a video stream can be encoded and then stored for transmission at a later time to any other device having memory), and one or more processors (Par. [0028], a single processor as shown, e.g., CPU 202, advantages in speed and efficiency can be achieved using more than one processor).
Regarding Claim 32, Converse in combination with Guo and Giesen teaches Claim 30. , Converse in view of Guo fails to explicitly teach the initial state information is a 32-bit value. However, Giesen further teaches the initial state information is a 32-bit value (Page 8, paragraph 1,line 6, BitKnit uses a 32--bit rANS state).
References Converse, Guo and Giesen are considered to be analogous art because they relate to coding systems. Therefore, it would have been obvious that one of ordinary skill in the art, before the effective filing date of the claimed invention, would recognize the advantage of further specifying 32-bit value for the initial state information as suggested by Giesen in the inventions of Converse and Guo in order to make the process easier, friendlier, reduce complexity and speed (See Giesen, Page 8 Paragraph 1, line 1-10).
Regarding Claim 36, Converse in combination with Guo and Giesen teaches Claim 30. Converse further teaches wherein the performing the RANS decoding (Par. [0091], during state evolution, the state, the output value, and the probability or probability distribution are used to calculate the next state (i.e. performing) to conform to the state diagram 800) includes:
as part of a first phase, selectively updating state of the RANS decoder using probability information for an output symbol from a previous iteration (Par. [0084], during state evolution, the Boolean value, the state, and the probability are used by the Boolean ANS decoder 902 to compute the next state and relatedly update the buffer position);
as part of a second phase, selectively merging a portion of the encoded data into the state of the RANS decoder (Par. [0082], If reading a single bitstream data unit (i.e. first phase) is insufficient to bring the state within the valid range for the current node, another bitstream data (i.e. second phase) unit may be appended until the state is within the valid range. Each new bitstream data unit is appended to the new state); and
as part of the second phase, selectively generating an output symbol for a current iteration using the state of the RANS decoder (Par. [0083], the state and the probability or probability distribution from the detokenizer 908 are used to compute an output value).
Regarding Claim 40, the computer-readable media claim 40 corresponds to the system as claimed in claim 30. Therefore claim 40 corresponds to claim 30, and is rejected for the same reasons of obviousness as used above.
Regarding Claim 41, Converse in combination with Guo and Giesen teaches Claim 21. Converse further teaches wherein the state of the RANS decoder is a portion of the encoded data for the at least part of the bitstream that has been merged into the state of the RANS decoder (Par. [0090] During state normalization, it is determined whether the state is outside of its valid range. Generally, but not necessarily, this means that the state is above the valid range. Because the state is valid at initialization, state normalization by the Boolean ANS encoder 1002 is not required for the EOB node 802 at the start of encoding. When state normalization is required, however, it may be achieved in this implementation by transferring a single least significant bitstream data unit from the common state 1006 and into the buffer 1010 for inclusion in the encoded bitstream in an operation opposite to that described with respect to the entropy decoding state machine 900.When the bitstream data unit is a byte, for example, a single byte is removed and the current state is used to generate a new state according to (current state>>8) where >>8 is a right shift of 8 bits)).
Converse in view of Guo does not specifically teach a state variable. Therefore, Converse in view of Guo fails to explicitly teach the state of the RANS decoder is implemented using a state variable configured to contain a portion of the encoded data that is merged into the state of the RANS decoder.
However, Giesen further teaches the state of the RANS decoder is implemented using a state variable configured to contain a portion of the encoded data that is merged into the state of the RANS decoder (Page 6, it's easy to add raw bit IO into a rANS coder by adding the bits at the bottom of our state variable, corresponding “getbits” in the examples of the decoder, unit32_t get_bits(unit32_ nbits)).
References Converse, Guo and Giesen are considered to be analogous art because they relate to coding systems. Therefore, it would have been obvious that one of ordinary skill in the art, before the effective filing date of the claimed invention, would recognize the advantage of further implementing a state variable as suggested by Giesen in the inventions of Converse and Guo in order for easier interleaving of an arithmetic code stream with a raw bitstream (See Giesen, Page 5 Paragraph 4).
Regarding Claim 42, Converse in combination with Guo and Giesen teaches Claim 30. Converse further teaches wherein the state of the RANS decoder is a portion of the encoded data for the at least part of the bitstream that has been merged into the state of the RANS decoder (Par. [0090] During state normalization, it is determined whether the state is outside of its valid range. Generally, but not necessarily, this means that the state is above the valid range. Because the state is valid at initialization, state normalization by the Boolean ANS encoder 1002 is not required for the EOB node 802 at the start of encoding. When state normalization is required, however, it may be achieved in this implementation by transferring a single least significant bitstream data unit from the common state 1006 and into the buffer 1010 for inclusion in the encoded bitstream in an operation opposite to that described with respect to the entropy decoding state machine 900.When the bitstream data unit is a byte, for example, a single byte is removed and the current state is used to generate a new state according to (current state>>8) where >>8 is a right shift of 8 bits)).
Converse in view of Guo does not specifically teach a state variable. Therefore, Converse in view of Guo fails to explicitly teach the state of the RANS decoder is implemented using a state variable configured to contain a portion of the encoded data that is merged into the state of the RANS decoder.
However, Giesen further teaches the state of the RANS decoder is implemented using a state variable configured to contain a portion of the encoded data that is merged into the state of the RANS decoder (Page 6, it's easy to add raw bit IO into a rANS coder by adding the bits at the bottom of our state variable, corresponding “getbits” in the examples of the decoder, unit32_t get_bits(unit32_ nbits)).
References Converse, Guo and Giesen are considered to be analogous art because they relate to coding systems. Therefore, it would have been obvious that one of ordinary skill in the art, before the effective filing date of the claimed invention, would recognize the advantage of further implementing a state variable as suggested by Giesen in the inventions of Converse and Guo in order for easier interleaving of an arithmetic code stream with a raw bitstream (See Giesen, Page 5 Paragraph 4).
Regarding Claim 43, Converse in combination with Guo and Giesen teaches Claim 35. Converse further teaches wherein the multiple fragments (See Fig. 7A-7D) include a first fragment and a second fragment (Par. [0080], at the start of the decoding process, the ANS state is initialized to a value within the valid range (e.g., of the EOB node 602), and the buffer position is initialized at a first position within the variable string (i.e. multiple fragments). The variable string within the buffer 910 is written/read per bitstream data unit (e.g., per byte) in this example), the element for the first fragment indicating the state of the RANS decoder (Fig. 7C, Par. [0050], The value of the EOB flag is shown in additional detail in FIG. 7C, which includes the tokenization of the transform coefficient values of the block 700 (including EOB 704)) is to be changed and re-initialized for decoding of encoded data for the first fragment ((Fig. 6, Fig. 6, Par. [0055] If the EOB is “1” the decoder state advances to the ZERO node 604. Par. [0057] At the ZERO node 604, a zero flag or ZEROF is read. This flag may be another binary ANS flag read with an appropriate context probability. On a value of “0” for the binary ANS flag (e.g., representing that the token is ZERO), a zero value is outputted (i.e. changes) for the current transform coefficient (e.g., using a detokenizer) (i.e. set the state to zero). [0057] Then, the coefficient counter increments (i.e. loading), and the state remains unchanged (i.e. initial state) so that decoder remains at the ZERO node 604), and the element for the second fragment indicating the state of the RANS decoder (Fig. 7C, Par. [0050], The value of the EOB flag is shown in additional detail in FIG. 7C, which includes the tokenization of the transform coefficient values of the block 700 (including EOB 704)) is not to be changed and re-initialized for decoding of encoded data for the second fragment (Par. [0055], If the EOB has been reached (the flag value is “0”), detokenization is halted (i.e. not changed) for the block), and wherein the operations include: for the first fragment: setting the state of the RANS decoder to zero (Fig. 6, Fig. 6, Par. [0055] If the EOB is “1” the decoder state advances to the ZERO node 604. Par. [0057] At the ZERO node 604, a zero flag or ZEROF is read. This flag may be another binary ANS flag read with an appropriate context probability. On a value of “0” for the binary ANS flag (e.g., representing that the token is ZERO), a zero value is outputted (i.e. changes) for the current transform coefficient (e.g., using a detokenizer) (i.e. set the state to zero); retrieving, from the bitstream, initial state information for the encoded data for the first fragment; and loading the initial state, as the state of the RANS decoder, based at least in part on the initial state information for the encoded data for the first fragment (Fig. 6, Par. [0057] Then, the coefficient counter increments (i.e. retrieves and loads), and the state remains unchanged (i.e. initial state) so that decoder remains at the ZERO node 604); and for the second fragment, retaining the state of the RANS decoder (Par. [0055], If the EOB has been reached (the flag value is “0”), detokenization is halted (i.e. retaining) for the block). Guo further teaches setting a syntax element for the decoder (Par. [0087], The syntax element may be presented (i.e. setting), for example, in a sequence parameter set (SPS), picture parameter set (PPS), adaptation parameter set (APS), slice header, entropy slice header, coding unit (CU) header, or the like. Entropy encoding unit 56 may change a value of the syntax element, e.g., flag, between a first and second value to indicate to the video decoder whether any context states are to be initialized). Giesen further teaches the state of a RANS decoder is to be flushed and re-initialized (Page 3 Paragraph 3, line 3-4, process the input data in chunks and flush the coder periodically, resetting the rANS state every time).
Regarding Claim 44, Converse in combination with Guo and Giesen teaches Claim 24. Converse further teaches wherein the multiple fragments (See Fig. 7A-7D) include a first fragment and a second fragment (Par. [0080], at the start of the decoding process, the ANS state is initialized to a value within the valid range (e.g., of the EOB node 602), and the buffer position is initialized at a first position within the variable string (i.e. multiple fragments). The variable string within the buffer 910 is written/read per bitstream data unit (e.g., per byte) in this example), the element for the first fragment indicating the state of the RANS decoder (Fig. 7C, Par. [0050], The value of the EOB flag is shown in additional detail in FIG. 7C, which includes the tokenization of the transform coefficient values of the block 700 (including EOB 704)) is to be changed and re-initialized for decoding of encoded data for the first fragment ((Fig. 6, Fig. 6, Par. [0055] If the EOB is “1” the decoder state advances to the ZERO node 604. Par. [0057] At the ZERO node 604, a zero flag or ZEROF is read. This flag may be another binary ANS flag read with an appropriate context probability. On a value of “0” for the binary ANS flag (e.g., representing that the token is ZERO), a zero value is outputted (i.e. changes) for the current transform coefficient (e.g., using a detokenizer) (i.e. set the state to zero). [0057] Then, the coefficient counter increments (i.e. loading), and the state remains unchanged (i.e. initial state) so that decoder remains at the ZERO node 604), and the syntax element for the second fragment indicating the state of the RANS decoder (Fig. 7C, Par. [0050], The value of the EOB flag is shown in additional detail in FIG. 7C, which includes the tokenization of the transform coefficient values of the block 700 (including EOB 704)) is not to be changed and re-initialized for decoding of encoded data for the second fragment (Par. [0055], If the EOB has been reached (the flag value is “0”), detokenization is halted (i.e. not changed) for the block), and wherein the encoding further includes determining initial state information for the encoded data for the first fragment (Fig. 6, Par. [0057] Then, the coefficient counter increments (i.e. retrieves and loads), and the state remains unchanged (i.e. initial state) so that decoder remains at the ZERO node 604), the bitstream further including the initial state information for the encoded data for the first fragment but not including initial state information for encoded data for the second fragment (Par. [0055], If the EOB has been reached (the flag value is “0”), detokenization is halted (i.e. initial state not included) for the block).
Claims 26 - 28 and 37 – 39 are rejected under 35 U.S.C. 103 as being unpatentable over Converse (US 2017/0164007 A1), in view of Guo (US 2013/0114691 A1), in view of Giesen, and in further view of Greenfield et al., (US 2016/0248440 A1) referred to as Greenfield hereinafter.
Regarding Claim 26, Converse in combination with Guo and Giesen teaches Claim 21. Converse further teaches wherein the encoding further includes:
selecting a symbol width (Par. [0050], Each token ZERO, ONE, TWO, THREE, AND FOUR represents a single value for the transform coefficient (i.e., 0, 1, 2, 3, and 4, respectively), and may be referred to herein as a single value token. Each of the category tokens represents a range of (e.g., quantized) values for the transform coefficients and is associated with a number of extra bits (i.e. symbol width) according to Table 1);
setting an element that indicates the selected symbol width (Par. [0044], When compressed bitstream 420 is presented for decoding, the data elements within compressed bitstream 420 can be decoded by entropy decoding stage 502. Using header information (i.e. element) decoded from compressed bitstream 420); and
configuring the RANS encoder to perform the RANS encoding at the selected symbol width, including selecting probability information for the selected symbol width (Par. [0056], Different symbols can use different context models and different context probabilities for coding. The same context probability is used to decode the symbol as was used to encode the symbol).
While Converse further teaches in Par. [0049] the final non-zero block is marked with an end-of-block (EOB) indicator or flag and in Par. [0055] EOB flag, EOBF, Converse does not specifically teach the flag is a syntax element. Therefore, Converse fails to explicitly teach setting a syntax for the decoder.
However, Guo teaches setting a syntax element for the decoder (Par. [0087], The syntax element may be presented (i.e. setting), for example, in a sequence parameter set (SPS), picture parameter set (PPS), adaptation parameter set (APS), slice header, entropy slice header, coding unit (CU) header, or the like. Entropy encoding unit 56 may change a value of the syntax element, e.g., flag, between a first and second value to indicate to the video decoder whether any context states are to be initialized).
References Converse and Guo are considered to be analogous art because they relate to coding systems. Therefore, it would have been obvious that one of ordinary skill in the art, before the effective filing date of the claimed invention, would recognize the advantage of further specifying a flag is a syntax element as suggested by Guo in the invention of Converse in order to signal to the decoder whether default or adaptive initialization is used for any of the contexts of a frame, slice or other video unit. (See Guo, Par. [0087]).
In addition, Converse in combination with Guo and Giesen fails to explicitly teach lookup tables. However, Greenfield teaches a set of pre-defined lookup tables lookup tables (Par. [0041] lookup tables of size m can be used for both s and g. Par. [0051], due to the way that rANS works, using lookup tables (LUT) that convert symbols to probability (and cumulative probability)).
References Converse, Guo, Giesen and Greenfield are considered to be analogous art because they relate to coding systems. Therefore, it would have been obvious that one of ordinary skill in the art, before the effective filing date of the claimed invention, would recognize the advantage of further specifying a lookup table as suggested by Greenfield in the inventions of Converse, Guo and Giesen in order to fold quantization/delta-encoding into the LUT's for compression and decompression (See Greenfield, Par. [0051]).
Regarding Claim 27, Converse in combination with Guo and Giesen teaches Claim 21. Converse further teaches wherein the encoding further includes:
selectively adjusting a default symbol width for the encoded data for the at least part of the bitstream (Par. [0076], Higher ANS base states and higher values for the probability granularity allow more freedom to adjust (i.e. selectively adjusting) probabilities dynamically in probability modelling (e.g., of the transform coefficients));
setting an element that indicates the selectively adjusted symbol width, the header in the at least part of the bitstream further including the element that indicates the selectively adjusted symbol width (Par. [0044], When compressed bitstream 420 is presented for decoding, the data elements within compressed bitstream 420 can be decoded by entropy decoding stage 502. Using header information (i.e. element) decoded from compressed bitstream 420); and
configuring the RANS encoder to perform the RANS encoding at the selectively adjusted symbol width, including selecting probability information for the selectively adjusted symbol width (Par. [0056], Different symbols can use different context models and different context probabilities for coding. The same context probability is used to decode the symbol as was used to encode the symbol).
While Converse further teaches in Par. [0049] the final non-zero block is marked with an end-of-block (EOB) indicator or flag and in Par. [0055] EOB flag, EOBF, Converse does not specifically teach the flag is a syntax element. Therefore, Converse fails to explicitly teach setting a syntax for the decoder.
However, Guo teaches setting a syntax element for the decoder (Par. [0087], The syntax element may be presented (i.e. setting), for example, in a sequence parameter set (SPS), picture parameter set (PPS), adaptation parameter set (APS), slice header, entropy slice header, coding unit (CU) header, or the like. Entropy encoding unit 56 may change a value of the syntax element, e.g., flag, between a first and second value to indicate to the video decoder whether any context states are to be initialized).
References Converse and Guo are considered to be analogous art because they relate to coding systems. Therefore, it would have been obvious that one of ordinary skill in the art, before the effective filing date of the claimed invention, would recognize the advantage of further specifying a flag is a syntax element as suggested by Guo in the invention of Converse in order to signal to the decoder whether default or adaptive initialization is used for any of the contexts of a frame, slice or other video unit. (See Guo, Par. [0087]).
In addition, Converse in combination with Guo and Giesen fails to explicitly teach lookup tables.
However, Greenfield teaches a set of pre-defined lookup tables lookup tables (Par. [0041] lookup tables of size m can be used for both s and g. Par. [0051], due to the way that rANS works, using lookup tables (LUT) that convert symbols to probability (and cumulative probability)).
References Converse, Guo, Giesen and Greenfield are considered to be analogous art because they relate to coding systems. Therefore, it would have been obvious that one of ordinary skill in the art, before the effective filing date of the claimed invention, would recognize the advantage of further specifying a lookup table as suggested by Greenfield in the inventions of Converse, Guo and Giesen in order to fold quantization/delta-encoding into the LUT's for compression and decompression (See Greenfield, Par. [0051]).
Regarding Claim 28, Converse in combination with Guo and Giesen teaches Claim 21. Converse further teaches wherein the encoding further includes:
selecting a static probability model, for the encoded data for the at least part of the bitstream, from among multiple available static probability models (Par. [0019], Entropy coding can use a plurality probability models based on the statistics of the video data to code the data);
setting an element that indicates the selected static probability model, the header in the at least part of the bitstream further including the element that indicates the selected static probability model (Par. [0044], When compressed bitstream 420 is presented for decoding, the data elements within compressed bitstream 420 can be decoded by entropy decoding stage 502. Using header information (i.e. element) decoded from compressed bitstream 420); and
configuring the RANS encoder to perform the RANS encoding using the selected static probability model (Par. [0056], Different symbols can use different context models and different context probabilities for coding. The same context probability is used to decode the symbol as was used to encode the symbol).
While Converse further teaches in Par. [0049] the final non-zero block is marked with an end-of-block (EOB) indicator or flag and in Par. [0055] EOB flag, EOBF, Converse does not specifically teach the flag is a syntax element. Therefore, Converse fails to explicitly teach setting a syntax for the decoder.
However, Guo teaches setting a syntax element for the decoder (Par. [0087], The syntax element may be presented (i.e. setting), for example, in a sequence parameter set (SPS), picture parameter set (PPS), adaptation parameter set (APS), slice header, entropy slice header, coding unit (CU) header, or the like. Entropy encoding unit 56 may change a value of the syntax element, e.g., flag, between a first and second value to indicate to the video decoder whether any context states are to be initialized).
References Converse and Guo are considered to be analogous art because they relate to coding systems. Therefore, it would have been obvious that one of ordinary skill in the art, before the effective filing date of the claimed invention, would recognize the advantage of further specifying a flag is a syntax element as suggested by Guo in the invention of Converse in order to signal to the decoder whether default or adaptive initialization is used for any of the contexts of a frame, slice or other video unit. (See Guo, Par. [0087]).
Converse in combination with Guo and Giesen fails to explicitly teach static probability distribution.
However, Greenfield teaches static probability distribution (Par. [0051] the real symbol is encoded using a fixed static probability distribution).
References Converse, Guo, Giesen and Greenfield are considered to be analogous art because they relate to coding systems. Therefore, it would have been obvious that one of ordinary skill in the art, before the effective filing date of the claimed invention, would recognize the advantage of further specifying static probability distribution as suggested by Greenfield in the inventions of Converse, Giesen and Giesen in order allow any symbols to be added with only minimal skew to the sample probability distribution (See Greenfield, Par. [0051]).
Regarding claims 37 – 39, the limitations are similar to those treated in the above rejection(s), and are met by the reference as discussed above. Claims 37 – 39 however recite decoding, rather than an encoding, which is similar in structure expect in reverse operation. Therefore claims 37 – 39 correspond to claims 26 - 28, and are rejected for the same reasons of obviousness as used above.
Conclusion
Any inquiry concerning this communication should be directed to SUSAN E HODGES whose telephone number is (571)270-0498. The Examiner can normally be reached on Monday - Friday from 8:00 am (EST) to 4:00 pm (EST).
If attempts to reach the Examiner by telephone are unsuccessful, the Examiner's supervisor, Brian T. Pendleton, can be reached on (571)270-0498. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of an application may be obtained from the Patent Application Information Retrieval (PAIR) system. Status information for published applications may be obtained from either Private PAIR or Public PAIR. Status information for unpublished applications is available through Private PAIR only. For more information about the PAIR system, see http://portal.uspto.gov/external/portal. Should you have questions on access to the Private PAIR system, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free).
/Susan E. Hodges/Primary Examiner, Art Unit 2425