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 .
This communication is responsive to the correspondence filled on 09/15/2025.
Claims 1-38 are presented for examination.
IDS Considerations
The information disclosure statement (IDS) submitted on 09/15/2025 is/are being considered by the examiner as the submission is in compliance with the provisions of 37 CFR 1.97.
Claim Rejections - 35 USC § 103
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 1-5, 7-9, 17, 20, 22, 29-30 and 35-36 is/are rejected under 35 U.S.C. 103 as being unpatentable over Browne (AHG12: Rice parameter selection for high bit depths, Adrian Browne et. al. Document: JVET-T0072, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29 20th Meeting, by teleconference, 7 - 16 Oct. 2020), in view of Imthurn (U.S. Pub. No. 20120022861 A1).
Regarding to claim 1, 29 and 35-36:
Examiner’s note: Encoding and decoding are done using same opposite algorithm.
1. Browne teach a data encoding method, comprising: acquiring a block of image data to be encoded, the block being formed of a number of data items; (Browne page 2 para 2: 2.1 Coefficient size estimation - The technique requires an estimation of the log2 size of coefficients being coded. This is derived in a similar
manner to Rice parameter estimation in HEVC (RExt) [block of image data to be encoded] using a series of counters. Fig. caption: l 6x 16 transform block) splitting the block of image data into a number of sets, each set having a predetermined length in data items; (Browne page 2 para 2 Table 1: Index function derivation – ordinary skill understands from HEVC, Table 1 and 16x 16 transform block that splitting the block of image data into a number of sets, because it represents dividing the transform block into fixed sub-TB groups [DC of top-left sub-TB, reminder of top-left sub-TB, all other sub-TBs]. Also Browne page 14 see section 9.3.3.11 Binarization process for abs_remainder - If this process is invoked for the first time for the current sub-block index i, lastAbsRemainder and lastRiceParam are both set equal to 0.
Otherwise (this process is not invoked for the first time for the current sub-block index i),
lastAbsRemainder and lastRiceParam are set equal to the values of abs_remainder[ n] and cRiceParam, respectively, that have been derived during the last invocation of the binarization process for the syntax element abs_remainder[ n ] as specified in this subclause. These index are associated with length)
and incrementing a counter in dependence upon a value being encoded, (Browne page 2:
PNG
media_image1.png
716
1334
media_image1.png
Greyscale
if'(abs(value) >= (3 << rice)) {count + = increment – means counter is incremented based on the coded value)
the predetermined configuration of the context model (Browne page 4: 3 Simplification - One potential issue with the modification is that there is a close coupling between the update and use of the size estimation counters. This also prevents the caching/pre-calculation and reuse of derived values. This section describes a simplification which attempts to resolve this issue. 3.1 Coefficient size estimation -
The proposed simplification is to take a copy of the riceCount array at the beginning of coding each subTB as follows: riceCopy = riceCount; This copy could be further reduced to the copying of a maximum of two counters rather than the complete set of 12 if the proposed index function described in section 2.1 is used. In short, int rice= riceCopyf component][ idx]; [context model, because its context dependent -as it is selected via the Table 1 index function based on position/component and it has a predetermined configuration as counter value that determines the rice parameter])
Browne do not explicitly teach for each set, in parallel: encoding each data item of the set using a context model, the context model having a predetermined configuration; wherein the counter is shared across the number of sets; and, when the sets have been encoded, updating, by circuitry, context model in dependence upon the value of the counter.
However Imthurn teach for each set, in parallel: encoding each data item of the set using a context model, the context model having a predetermined configuration; (Imthurn [0028] In an embodiment, an entropy encoder block for use in a context adaptive encoder is provided. The entropy encoder block for encoding phrase words into code words using encoding search tree lookup tables, each encoding search tree lookup table corresponding to one of N encoding probabilities used by a context modeling component of the context adaptive encoder, the entropy encoder block receiving phrase words and an associated probability corresponding to one of the N probabilities for each phrase word. [0029] The entropy encoder block may comprise a plurality of encoding elements for receiving phrase words and an indication of the associated probability for each phrase word, the plurality of encoding elements each connected to and operative to access a subset of one or more of the encoding search tree lookup tables to select a corresponding encoding search tree lookup table associated with each probability, such that each of the N encoding probabilities are serviced by at least one of the plurality of encoding elements and at least one of the N encoding probabilities is serviced by two or more encoding elements, and to encode the received phrase words using the selected encoding search tree lookup table to generate output code words; and, a state machine for assigning the phrase words to a particular encoding element based upon the encoding search tree lookup tables connected to that encoding element and an availability of that encoding element)
wherein the counter is shared across the number of sets; (Imthurn Fig. 2a, 3a [0113] In an embodiment, the code word output controller and buffer 207 may include control logic 240, such as a counter, for counting the number of code words output by the encoding elements 206-1 206-2 associated with each of the N probabilities within a context. The control logic 240 may receive input from the communication channels 210-1 210-2 and increment the code word count for each probability as the code word and associated probability is detected as being input from the communication channels 210-1 210-2. Alternatively, for instance, the control logic 240 may receive input from each of the code word buffers 205-1 . . . 205-N and increment the code word count for each probability as the corresponding code word buffer 205-1 . . . 205-N receives a completed code word. The control logic 240 may provide a count directly to a downstream processing block, such as DMA module 250, or alternatively may provide the count as side band information.) and, when the sets have been encoded, updating, by circuitry, (Imthurn [0027] In one aspect, the present application describes a hardware implementation of a parallel entropy encoder and a parallel entropy decoder.)
context model in dependence upon the value of the counter. (Imthurn [0114] In an alternate embodiment, control logic 240 may further output the number of bits (or bytes) of each code word output by the encoding elements 206-1 206-2. [0120] In an alternate preferred embodiment, identification of work packages may be included as a set of pointers, each pointer identifying a work package in a segment of the bitstream. The segment of the bitstream may be allocated, for instance, by all code words within a context identified by the context modeler 104)
It would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to modify Browne, further incorporating Imthurn in video/camera technology. One would be motivated to do so, to incorporate the counter is shared across the number of sets; and, when the sets have been encoded, updating, by circuitry, context model in dependence upon the value of the counter. This functionality will improve efficiency with predictable results.
Regarding to claim 2:
2. Browne teach the data encoding method according to claim 1, wherein the predetermined configuration of the context model (Browne page 4: 3 Simplification - One potential issue with the modification is that there is a close coupling between the update and use of the size estimation counters. This also prevents the caching/pre-calculation and reuse of derived values. This section describes a simplification which attempts to resolve this issue. 3.1 Coefficient size estimation - The proposed simplification is to take a copy of the riceCount array at the beginning of coding each subTB as follows: riceCopy = riceCount; This copy could be further reduced to the copying of a maximum of two counters rather than the complete set of 12 if the proposed index function described in section 2.1 is used. In short, int rice= riceCopyf component][ idx]; [context model, because its context dependent -as it is selected via the Table 1 index function based on position/component and it has a predetermined configuration as counter value that determines the rice parameter])
Browne do not explicitly teach defines one or more statistics of the context model.
However Imthurn teach defines one or more statistics of the context model. (Imthurn [0044] One of the techniques used in some entropy coding schemes, such as CAVLC and CABAC, both of which are used in H.264/AVC, is context modeling. With context modeling, each bit of the input sequence has a probability within a context, where the probability and the context is given by the bits that preceded it. In a first-order context model, the context may depend entirely upon the previous bit (symbol). In many cases, the context models may be adaptive, such that the probabilities associated with symbols for a given context may change as further bits of the sequence are processed. [0045] Reference is made to FIG. 1, which shows a block diagram of an encoding process 100. The encoding process 100 includes a context modeling component 104 and an entropy encoder 106. The context modeling component 104 receives the input sequence x 102, which in this example is a bit sequence (b.sub.0, b.sub.1, . . . , b.sub.n). The context modeling component 104 determines a context for each bit b based on one or more previous bits in the sequence, and determines, based on the adaptive context model, a probability p associated with that bit b, where the probability is the probability that the bit will be the Least Probable Symbol (LPS). The LPS may be "0" or "1" in a binary embodiment, depending on the convention or application. The context modeling component outputs the input sequence, i.e. the bits (b.sub.0, b.sub.1, . . . , b.sub.n) along with their respective probabilities (p.sub.0, p.sub.1, . . . , p.sub.n). The probabilities are an estimated probability determined by the context model. This data, is then input to the entropy encoder 106, which codes the input sequence using the probability information. For example, the entropy encoder 106 may be a binary arithmetic coder. The entropy encoder 106 outputs a bitstream 108 of encoded data)
Regarding to claim 3:
3. Browne teach the data encoding method according to claim 1, Browne do not explicitly teach wherein the value being encoded is the value of a bit being encoded.
However Imthurn teach wherein the value being encoded is the value of a bit being encoded. (Imthurn [0044] With context modeling, each bit of the input sequence has a probability within a context, where the probability and the context is given by the bits that preceded it. [0045] The context modeling component outputs the input sequence, i.e. the bits (b.sub.0, b.sub.1, . . . , b.sub.n) along with their respective probabilities (p.sub.0, p.sub.1, . . . , p.sub.n).)
Regarding to claim 4:
4. Browne teach the data encoding method according to claim 1, wherein the block of image data is a block of coefficients and wherein each data item is a coefficient. (Browne page 2 para 2: 2.1 Coefficient size estimation - The technique requires an estimation of the log2 size of coefficients being coded.)
Regarding to claim 5:
5. Browne teach the data encoding method according to claim 1, wherein the counter comprises a first counter which is incremented when the value is 0 and a second counter which is incremented when the value is 0 or 1. (Browne page 2: 2.2 Counter update function teach two branch condition counters as: if'(abs(value) >= (3 << rice)) {count + = increment;
} else if ((ahs(mlue) <<I)< (I<< rice)) {count= max(O, count - decrement); This teach of Browne is obvious basis for splitting into two counters.)
Regarding to claim 7:
7. Browne teach the data encoding method according to claim 1, wherein the data encoding method of claim 1 is performed in parallel for different context models, each of the different context models having a predetermined configuration of context variables. (Browne page 2: 2.2 Counter update function - Each counter is set to 0 at the beginning of every slice. For wavefront parallel coding each wavefront copies the counters before starting, treating them in a similar manner to CABAC contexts – parallel processing of multiple context models each with its own starting configuration)
Regarding to claim 8:
8. Browne teach the data encoding method according to claim 7, wherein there is a separate counter for each of the different context models. (Browne page 2 para 2 Table 1: and Browne page 2: 2.2 Counter update function - Each counter is set to 0 at the beginning of every slice. For wavefront parallel coding each wavefront copies the counters before starting, treating them in a similar manner to CABAC contexts – parallel processing of multiple context models each with its own starting configuration. int &count= riceCount{component][idx]: // II riceCount is the array of counrers, reset to 0 for each slice. This means riceCount{component][idx] array structure – indexed separately per component/idx, i.e., a distinct counter per context model)
Regarding to claim 9:
9. Browne teach the data encoding method according to claim 1, wherein a calculation is performed based on the value of the counter to update the context model and comprises a comparison of the value of the counter with a threshold value. (Browne page 2: 2.2 Counter update function – “int rice = count > > log2Divisor: if'(abs(value) >= (3 << rice))” – the update calculation comprises a comparison against a threshold derived from the counter)
Regarding to claim 17:
17. Browne teach the data encoding method according to claim 1, wherein the context model is updated using a look up table in dependence upon the value of the counter (Browne page 3: 2.4 Rice parameter selection - But as average coefficient values increase and the shift modifier becomes greater than zero, the resultant Rice parameter is offset as below: Table 2. Output Rice values for a range of estimated coefficient values. The counter value is used as a table lookup to derive the Rice parameter – the counter directly selects a configuration value from the table) or wherein the context model is updated using a function in dependence upon the value of the counter. (Part of OR condition rejection is not required. Browne page 2: 2.2 Counter update function – int rice = count > > log2Divisor: the counter value is used in a direct computed formula to derive the configuration value)
Regarding to claim 20:
20. Browne teach the data encoding method according to claim 1, wherein the updated context model is used for a next block of image data to be encoded. (Browne page 4: 3.1 Coefficient size estimation - The proposed simplification is to take a copy of the riceCount array at the beginning of coding each subTB as follows:
riceCopy = riceCount;)
Regarding to claim 22:
22. Browne teach the data encoding method according to claim 1, wherein the block of image data corresponds to a transform unit, a coding unit, a prediction unit, a slice or a picture. (Browne page 2 para 2: 2.1 Coefficient size estimation - The technique requires an estimation of the log2 size of coefficients being coded. This is derived in a similar manner to Rice parameter estimation in HEVC (RExt) [block of image data to be encoded] using a series of counters. Fig. caption: 16x 16 transform block)
Regarding to claim 30:
30. Browne teach a video data capture, transmission, Browne do not explicitly teach display and/or storage apparatus comprising the encoding apparatus of claim 29.
However Imthurn teach display and/or storage apparatus comprising the encoding apparatus of claim 29. (Imthurn [0127] FIG. 7 is an embodiment of a computing device 700 including an encoder 710 for encoding data as described above. The computing device 700 further includes a processor 702 and memory 704, for execution of program code on the device 700 as well as management of the encoder 710, and preferably a communications system 708. In an embodiment device 700 may further comprise an in input interface such as an RCA jack, microphone or digital input, such as a digital camera, for inputting data content to be encoded and an output interface such as a screen, speaker or headphone jack for outputting content to a user of the device 700. In the embodiment illustrated an application 706 is resident in the memory 704, for instance for controlling the encoder 710.)
Claims 23 is/are rejected under 35 U.S.C. 103 as being unpatentable over Browne (AHG12: Rice parameter selection for high bit depths, Adrian Browne et. al. Document: JVET-T0072, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29 20th Meeting, by teleconference, 7 - 16 Oct. 2020), in view of Imthurn (U.S. Pub. No. 20120022861 A1), further in view of Karczewicz (U.S. Pub. No. 20090175332 A1).
Regarding to claim 23:
23. Browne teach a data encoding method, Browne do not explicitly teach wherein the method of claim 1 is performed during a search phase for each of a plurality of trial encodings of image data to be encoded.
However Karczewicz teach wherein the method of claim 1 is performed during a search phase for each of a plurality of trial encodings of image data to be encoded. (Karczewicz [0010] In one example, this disclosure provides a method of quantizing coefficients of a video block for a video coding process that supports CABAC. The method comprises generating a plurality of sets of quantized coefficients for the video block, wherein each of the sets of quantized coefficients is defined based on an assumption that a particular one of the coefficients of the video block corresponds to a last non-zero coefficient of the video block, estimating a plurality of costs [trial] associated with coding the video block via the CABAC, wherein the estimated costs are based respectively on different ones of the sets of quantized coefficients, and selecting [search] a given one of the sets of quantized coefficients associated with a lowest one of the costs.)
The motivation for combining Browne and Imthurn as set forth in claim 1 is equally applicable to claim 23. It would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to modify Browne, further incorporating Imthurn and Karczewicz in video/camera technology. One would be motivated to do so, to incorporate during a search phase for each of a plurality of trial encodings of image data to be encoded. This functionality will improve user experience with predictable results.
Regarding to claim 6, 10, 14-16, 18-19, 21, 24-28, 31-34 and 37-38:
(Cancelled)
Allowable subject matter
Regarding to claim 11-13:
Claims 11-13 is/are objected to as being dependent upon a rejected base claim, but would be allowable if rewritten in independent form including all of the limitations of the base claim and any intervening claims because the limitations of these dependent claims are not obvious from the prior art search when all the limitations of independent and intervening claims are taken into account.
Regarding to claim 11:
11. Browne teach the data encoding method according to claim 9, wherein the configuration of the context model is updated in accordance with the equation:Mvalue = (A*ValueO + B*Mvalue/C) wherein Mvalue is a value corresponding to the configuration of the context model, A is a constant, B is a constant, C is a constant and ValueO is a value calculated by comparison of the value of the counter with a threshold value. (Chuang (U.S. Pub. No. 10225555 B2) is the closest prior art for claim 11. Chuang col. 2 line 17-30: In modern arithmetic coding, the probability update is often done according to a model. For example, a method is described by Marpe, et al., in a technical publication (“Context-Based Adaptive Binary Arithmetic Coding in the H.264/AVC Video Compression Standard”, IEEE Transactions on Circuits and Systems for Video Technology, Vol. 13, No. 7, pp. 620-636, July 2003), where the following formula is used: p.sub.new= (1−α).Math.y+α.Math.p.sub.old. However, prior art do not teach claim 11)
Closely related prior art
Examiner notes teaching of U.S. Pub. No. 12432348 B2 is/are pertinent to the independent claim(s), because it teach context model. However, is not used because dependent claims are better covered by cited reference.
Conclusion
Any inquiry concerning this communication or earlier communications from the examiner should be directed to NASIM N NIRJHAR whose telephone number is (571) 272-3792. The examiner can normally be reached on Monday - Friday, 8 am to 5 pm ET.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, William F Kraig can be reached on (571) 272-8660. 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://pair-direct.uspto.gov. Should you have questions on access to the Private PAIR system, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative or access to the automated information system, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/NASIM N NIRJHAR/Primary Examiner, Art Unit 2896