RE-SAMPLING FILTERS FOR SCALABLE VIDEO CODING
In one embodiment, a method receives a plurality of sample values. The method then determines a filter to determine an up-sampled value for a first layer for a video, wherein the filter has a set of coefficient values of [−1, 3, −9, 47, 31, −10, 4, −1] or [−1, 4, −10, 31, 47, −9, 3, −1] assigned to the filter. The up-sampled value is determined by applying the set of coefficient values of [−1, 3, −9, 47, 31, −10, 4, −1] or [−1, 4, −10, 31, 47, −9, 3, −1] to the plurality of sample values. The method then outputs the up-sampled value for use in coding a second layer of a higher resolution than the first layer. The up-sampled values may be for the 6/16 and −6/16 phase offsets.
Latest ARRIS Enterprises LLC Patents:
This application claims priority under 35 U.S.C. § 119(e) from earlier filed U.S. Provisional Application Ser. No. 61/835,340 filed on Jun. 14, 2013 and U.S. Provisional Application Ser. No. 61/847,070 filed on Jul. 16, 2013, both of which are incorporated herein by reference in their incorporated herein by reference in its entirety.
BACKGROUND Technical FieldParticular embodiments generally relate to a re-sampling filter process for scalable video coding. More specifically, particular embodiments relate to up-sampling filters using video data obtained from an encoder or decoder process, where the encoder or decoder process can be MPEG-4 Advanced Video Coding (AVC) or High Efficiency Video Coding (HEVC).
Related ArtAn example of a scalable video coding system using two layers is shown in
The cross-layer CL information provided from the BL to the FR layer shown in
The up-sampling block 200 works by interpolating from the BL data to recreate what is modified from the FR data. For instance, if every other pixel is dropped from the FR in block 108 to create the lower resolution BL data, the dropped pixels can be recreated using the up-sampling block 200 by interpolation or other techniques to generate the EL resolution output y′ from up-sampling block 200. The data y′ is then used to make encoding and decoding of the EL data more efficient.
SUMMARYIn one embodiment, a method receives a plurality of sample values. The method then determines a filter to determine an up-sampled value for a first layer for a video, wherein the filter has a set of coefficient values of [−1, 3, −9, 47, 31, −10, 4, −1] or [−1, 4, −10, 31, 47, −9, 3, −1] assigned to the filter. The up-sampled value is determined by applying the set of coefficient values of [−1, 3, −9, 47, 31, −10, 4, −1] or [−1, 4, −10, 31, 47, −9, 3, −1] to the plurality of sample values. The method then outputs the up-sampled value for use in coding a second layer of a higher resolution than the first layer. The up-sampled values may be for the 6/16 and −6/16 phase offsets.
Further details of particular embodiments are explained with the help of the attached drawings in which:
As will be described in more detail below, specific sets of coefficients for filters used during an up-sampling process may provide optimal results. The up-sampling process will be generally described first and then the use of the specific coefficients.
Up-Sampling Overview
In module 300, a set of input samples in a video signal x is first selected. In general, the samples can be a two-dimensional subset of samples in x, and a two-dimensional filter can be applied to the samples. The module 302 receives the data samples in x from module 300 and identifies the position of each sample from the data it receives, enabling module 302 to select an appropriate filter to direct the samples toward a subsequent filter module 304. The filter in module 304 is selected to filter the input samples, where the selected filter is chosen or configured to have a phase corresponding to the particular output sample location desired. Also, particular embodiments select filter coefficient values that provide an optimal up-sampling result.
The filter input samples module 304 can include separate row and column filters. The selection of filters is represented herein as filters h[n; p], where the filters can be separable along each row or column, and p denotes a phase index selection for the filter. The output of the filtering process using the selected filter h[n;p] on the selected input samples produces output value y′.
In
Although the filters h[n:p] in module 304a are shown as separate phase fixed devices, they can be implemented using a single filter with phase p selected and adaptively controlled. The adaptive phase filters can be reconfigured by software. The adaptive filters can thus be designed so that each filter h[n;p] corresponds to a desired phase p. The filter coefficients h[n;p] can be signaled in the EL from the encoder so that the decoder can reconstruct a prediction to the FR data.
Phase selection for the filters h[n:p] enables recreation of the FR layer from the BL data. For example, if the BL data is created by removing every other pixel of data from the FR, to recreate the FR data from the BL data, the removed data must be reproduced or interpolated from the BL data available. In this case, depending on whether even or odd indexed samples are removed, the appropriate filter h[n;p] with phase p can be used to interpolate the new data. The selection of p different phase filters from the filters h[n:p] allows the appropriate phase shift to be chosen to recreate the missing data depending on how the BL data is downsampled from the FR data. The selection of filter coefficient values also provides optimal up-sampling results.
Filter CoefficientsDepending on the scalability ratio and any phase offset, different phases will be chosen for the upsampling (re-sampling) operation. In one embodiment, the HEVC extension specifies 16 possible phases 0-15 with 1/16 resolution that can be used. For the luma component, phases 0 (0/16), 1 (1/16), 2 (2/16), 3 (3/16), 4 (4/16), 5 (5/16), 6 (6/16), 7 (7/16), 8 (1/2), 9 (−7/16), 10 (−6/16), 11, (−5/16), 12 (−4/16), 13 (−3/16), 14 (−2/16), and 15 (−1/16) may be used. In one embodiment, for up-sampling filtering, particular embodiments use a set of +/−1/6 phase offset filters to interpolate up-sampled values from the base layer resolution to the full resolution. In one embodiment, for 1.5× scalability, where the full resolution is in a 1.5× higher resolution than the base layer, down-sampling filtering for the base layer may introduce a 1/4 phase offset. In this case, pixels are removed from the full resolution version of the video at the 1/4 phase offset. Up-sampling filtering using a 1/6 filter set of {−1/6, 1/2, 1/6} may compensate for this phase offset. In one embodiment, the following coefficients in Table I may be used for the filters:
In Table I, other coefficients for the 1/2 phase filter may also be used. Also, it will be understood that a phase in the 1/6 filter set may be used individually, or with other coefficients for other phases. That is, these filter coefficients do not need to be used together. The process of using the above filters will now be described.
At 504, select sample module 302a may select one of the filters in the 1/6 filter set. For example, the following process may be performed for each filter in the 1/6 filter set to generate three up-sampled values for the row or column. Once the filter is selected, at 506, select sample module 302a may select the coefficients for the filter. For example, if select sample module 302a selected the −1/6 filter, the coefficients of [−1, 3, −6, 14, 58, −5, 1, 0] are selected as the coefficients. These coefficients may be determined to yield optimal interpolation results for generating the up-sampled value from the sample values. Then, filter module 304a may assign the coefficients to the filter to weight the sample values. At 508, filter module 304a then calculates the up-sampled value for the −1/6 filter by applying the coefficients to the sample values to interpolate the up-sampled value.
At 510, filter module 304a then outputs the up-sampled value. This up-sampled value may be the value for the −1/6 position in a row or column for the luma component of the video. As discussed above, the up-sampled value may interpolate a value that was removed from the full resolution video when generating the base layer. An encoder or decoder may then use the up-sampled value in encoding or decoding corresponding video of the higher layers of the video from the base layer. For example, the up-sampled value, or a further processed up-sampled value, can be used as a basis for prediction of the higher resolution video.
The above process may then be repeated for the 1/2 phase offset and the 1/6 phase offset where the up-sampled values for the 1/2 phase offset and the 1/6 phase offset are output.
At 606, filter module 304a assigns the 1/2 filter coefficients of [−1, 4, −11, 40, 40, −11, 4, −1] to the 1/2 filter taps. Also, as mentioned above, different coefficients for the 1/2 filter may be used. At 608, filter module 304a calculates the up-sampled value for the 1/2 phase offset by applying the sample values to the coefficients of the 1/2 filter.
At 610, filter module 304a assigns the coefficients of [0, 1, −5, 58, 14, −6, 3, −1] for the 1/6 filter. At 612, filter module 304a calculates the up-sampled value for the 1/6 phase offset by applying the sample values to the corresponding coefficients in the 1/6 filter.
At 614, filter module 304a outputs the up-sampled values for the −1/6 phase offset, the 1/2 phase offset, and the 1/6 phase offset. These values may then be used in the encoding or decoding process.
For example, the 1/6 phase offset position FL and the −1/6 phase offset position FR are interpolated using the values of spatial neighboring full-pel pixels, L3, L2, L1, L0, R0, R1, R2 and R3, as follows:
FL=(0*L3+1*L2−5*L1+58*L0+14*R0−6*R1+3*R2−1*R3+offset)>>shift;
FR=(−1*L3+3*L2−6*L1+14*L0+58*R0−5*R1+1*R2+0*R3+offset)>>shift.
In the above, FL is a left full resolution pixel between pixel L0 and pixel R0, and FR is a right full resolution pixel between pixel L0 and pixel R0. L1, L2, L3 are the left neighbor pixels and R1, R2, R3 are the right neighbor pixels.
Here, multiplication with filter coefficient of zero is given for the sake of completeness. However, in an implementation it is not necessary to perform the operation, and the complexity can be reduced. The phase offset is calculated by applying coefficient values to the full-pel pixel values (L3, L2, L1, L0, R0, R1, R2, and R3). For example, a full-pel pixel value is multiplied by a corresponding coefficient value. Then, the results of the multiplied values are added together. A value of “offset” is added and the result is right shifted by “shift”. The values of offset and shift can be different, for example, depending on different rounding operations desired. For example, with offset=32 and shift=6, the adding of “32” and shifting to the right (6 bits) is equivalent to adding 32 and dividing by 64, which truncates the value. The resulting value can also be clipped to a range of allowable values. Other operations are also contemplated. For example, the coefficients may be applied to different full-pel pixel values (e.g., one coefficient value to multiple full-pel values or multiple coefficient values to one full-pel value, etc.) or a different truncating operation may be performed.
As an alternative to the +/−1/6 phases, an approximate +/− 3/16th up-sampling phase offset may be used in place of the −1/6 and the 1/6 filters as follows:
At 626, filter module 304a assigns the 1/2 filter coefficients of [−1, 4, −11, 40, 40, −11, 4, −1] to the 1/2 filter taps. Also, as mentioned above, different coefficients for the 1/2 filter may be used. At 628, filter module 304a calculates the up-sampled value for the 1/2 phase offset by applying the sample values to the coefficients of the 1/2 filter.
At 630, filter module 304a assigns the coefficients of [−1, 3, −8, 60, 13, −4, 1, 0] for the 3/16 filter. At 632, filter module 304a calculates the up-sampled value for the 3/16 phase offset by applying the sample values to the corresponding coefficients in the 3/16 filter.
At 634, filter module 304a outputs the up-sampled values for the −3/16 phase offset, the 1/2 phase offset, and the 3/16 phase offset. These values may then be used in the encoding or decoding process.
For example, the 3/16 phase offsets FL (phase 3 or +3/16) and FR (phase 13 or −3/16) are interpolated using the values of spatial neighboring full-pel pixels, L3, L2, L1, L0, R0, R1, R2 and R3, as follows:
FL=(0*L3+1*L2−5*L1+58*L0+14*R0−6*R1+3*R2−1*R3+offset)>>shift;
FR=(−1*L3+3*L2−6*L1+14*L0+58*R0−5*R1+1*R2+0*R3+offset)>>shift.
As mentioned above, the above filter sets are used for luma up-sampling.
Corresponding filters for chroma up-sampling for the +/−1/6 and +/−3/16 phase offsets may be as follows:
In another embodiment, different coefficient values for the +/−6/16 phase offsets may be used. For example, the values for the 6/16 filter coefficients may be [−1, 3, −9, 47, 31, −10, 4, −1] and the coefficient values for the −6/16 phase offset may be [−1, 4, −10, 31, 47, −9, 3, −1]. Also, in one embodiment, the following coefficients may be used:
Luma:
-
- Phase 2 {−1 3 −7 63 8 −3 1 0}
- Phase 5 {−1 4 −11 54 23 −7 3 −1}
- Phase 6 {−1 3 −9 47 31 −10 4 −1}
- Phase 10 {−1 4 −10 31 47 −9 3 −1}
- Phase 11 {−1 3 −7 23 54 −11 4 −1}
- Phase 14 {0 1 −3 8 63 −7 3 −1}
Chroma:
-
- Phase 1 {0 58 8 −2} or {−2 64 2 0}
- Phase 3 {−4 58 12 −2} or {−2 53 17 −4}
- Phase 5 {−4 48 24 −4}
- Phase 6 {−4 44 28 −4}
- Phase 7 {−6 44 30 −4}
- Phase 9 {−4 30 44 −6}
- Phase 10 {−4 28 44 −4}
- Phase 11 {−4 24 48 −4}
- Phase 13 {−2 12 58 −4} or {−4 17 53 −2}
- Phase 15 {−2 8 58 0} or {0 2 64 −2}
In the above, the phase 6 and phase 10 filter coefficients for the luma component correspond to the 6/16 and −6/16 filter coefficients.
At 706, filter module 304a assigns the 1/2 filter coefficients of [−1, 4, −11, 40, 40, −11, 4, −1] to the 1/2 filter taps. These coefficients may be the same as used above or may be different. At 708, filter module 304a calculates the up-sampled value for the 1/2 phase offset by applying the sample values to the coefficients of the 1/2 filter.
At 710, filter module 304a assigns the coefficients of [−1, 4, −10, 31, 47, −9, 3, −1] for the −6/16 filter. At 712, filter module 304a calculates the up-sampled value for the −6/16 phase offset by applying the sample values to the corresponding coefficients in the −6/16 filter.
At 714, filter module 304a outputs the up-sampled values for the 6/16 phase offset, the 1/2 phase offset, and the −6/16 phase offset. These values may then be used in the encoding or decoding process for a higher layer.
For example, the 6/16 phase offsets FL (phase 6 or +6/16) and FR (phase 10 or −6/16) are interpolated using the values of spatial neighboring full-pel pixels, L3, L2, L1, L0, R0, R1, R2 and R3, as follows:
FL=(0*L3+1*L2−5*L1+58*L0+14*R0−6*R1+3*R2−1*R3+offset)>>shift;
FR=(−1*L3+3*L2−6*L1+14*L0+58*R0−5*R1+1*R2+0*R3+offset)>>shift.
In another embodiment, the following coefficients may be used:
Luma:
-
- Phase 0 {0, 0, 0, 64, 0, 0, 0, 0},
- Phase 1 {0, 1, −3, 63, 4, −2, 1, 0},
- Phase 2 {0, 2, −6, 61, 9, −3, 1, 0},
- Phase 3 {−1, 3, −8, 60, 13, −4, 1, 0},
- Phase 4 {−1, 4, −10, 58, 17, −5, 1, 0},
- Phase 5 {−1, 4, −11, 52, 26, −8, 3, −1},
- Phase 6 {−1, 4, −11, 50, 29, −9, 3, −1},
- Phase 7 {−1, 4, −11, 45, 34, −10, 4, −1},
- Phase 8 {−1, 4, −11, 40, 40, −11, 4, −1},
- Phase 9 {−1, 4, −10, 34, 45, −11, 4, −1},
- Phase 10 {−1, 3, −9, 29, 50, −11, 4, −1},
- Phase 11 {−1, 3, −8, 26, 52, −11, 4, −1},
- Phase 12 {0, 1, −5, 17, 58, −10, 4, −1},
- Phase 13 {0, 1, −4, 13, 60, −8, 3, −1},
- Phase 14 {0, 1, −3, 9, 61, −6, 2, 0},
- Phase 15 {0, 1, −2, 4, 63, −3, 1, 0}
Chroma:
-
- Phase 0 {0, 64, 0, 0},
- Phase 1 {−2, 62, 4, 0},
- Phase 2 {−2, 58, 10, −2},
- Phase 3 {−4, 56, 14, −2},
- Phase 4 {−4, 54, 16, −2},
- Phase 5 {−6, 52, 20, −2},
- Phase 6 {−6, 46, 28, −4},
- Phase 7 {−4, 42, 30, −4},
- Phase 8 {−4, 36, 36, −4},
- Phase 9 {−4, 30, 42, −4},
- Phase 10 {−4, 28, 46, −6},
- Phase 11 {−2, 20, 52, −6},
- Phase 12 {−2, 16, 54, −4},
- Phase 13 {−2, 14, 56, −4},
- Phase 14 {−2, 10, 58, −2},
- Phase 15 {0, 4, 62, −2}.
Coefficient Signaling
In one embodiment, the decoder needs to know which coefficients were used in the encoder to decode the full resolution of the video. Different methods may be used to notify a decoder of the coefficients that the encoder used.
A coefficient manager 806-1 in encoder 802 may determine how to notify decoder 804 of which coefficients are used in the encoding process. A coefficient manager 806-2 of decoder 804 may then determine the coefficients. Encoder 802 may transmit the filter coefficients explicitly. In one embodiment, encoder 802 may use different methods to notify decoder 804. For example, encoder 802 may transmit each coefficient for the 1/6 filter set to decoder 804. In another embodiment, the difference between the filter coefficients and some other reference set of filters may be explicitly transmitted. In this case, coefficient manager 806-1 may determine the difference between the 1/6 filter set coefficients and another set. For example, coefficient manager 806-1 may subtract the coefficient values for the 1/6 filter set from the values of another set. Then, encoder 802 sends the differences to decoder 804. Sending the difference may save bits. Coefficient manager 806-2 may then determine the coefficients based on the differences and the other filter.
In another embodiment, some of the filter coefficients may be time-reversed versions of other filters. For example, for the −1/6 and 1/6 filters above, the coefficients are reversed. That is, the values for the −1/6 filter are reversed for the 1/6 filter as the value for the first position of the −1/6 filter is −1 and the value for the last position of the 1/6 filter is −1, the value for the second position of the −1/6 filter is 3, and the value for the second to last position of the 1/6 filter is 3, and so on. In one embodiment, coefficient manager 806-1 may cause encoder 802 to signal a flag to indicate the time reversal.
In one example, for N filters in a set (e.g., N=3 in the 1/6 filter set), for the last N/2 filters, (N+1)/2<=i<N, encoder 802 can send a flag to indicate whether the filter coefficients are in a time-reversed version. If a flag is set for filter i, (N+1)/2<=i<N, then filter i is set to be the time-reversed version of filter N−1−i. If the flag is not set for filter i, then encoder 802 signals the filter i coefficients. Alternatively, the symmetries in the filters can be reflected in a single parent polyphase filter. By exploiting the symmetries, only the first half of the parent polyphase filter coefficients need to be signaled (including the center point for an odd-length filter), and coefficient manager 806-2 in decoder 804 can derive the remaining filter coefficients using the symmetry. Coefficient manager 806-2 may detect the flag and then determine the coefficient values based on the time reversal. In this case, encoder 802 only has to signal half (and an additional coefficient for an odd number of coefficients) of the time reversed coefficients, and then coefficient manager 806-2 can determine the other half.
At 904, encoder 802 determines a signaling method. For example, encoder 802 may analyze the coefficient values to determine whether all of the coefficients need to be signaled explicitly, or only some of the coefficients need to be signaled. Also, it is possible that only a difference of the coefficients from another filter set needs to be sent. Encoder 802 may dynamically determine the signaling method or may use a pre-set signaling method for a specific filter set that is being used.
At 906, encoder 802 signals the coefficients used to up-sample the sampled values in the encoding process to decoder 804. Also, at 908, encoder 802 may signal information (e.g., a flag) to decoder 804 that indicates how to determine the filter coefficients. For example, the flag may indicate that the filter coefficients are time-reversed. Then, decoder 804 can determine the coefficient values to use.
In other embodiments, the coefficients that are used may be implicitly determined by encoder 802 and decoder 804. For example, encoder 802 and decoder 804 may analyze information in the video stream independently to determine which coefficients to use.
Particular embodiments may be implemented in a non-transitory computer-readable storage medium for use by or in connection with the instruction execution system, apparatus, system, or machine. The computer-readable storage medium contains instructions for controlling a computer system to perform a method described by particular embodiments. The computer system may include one or more computing devices. The instructions, when executed by one or more computer processors, may be operable to perform that which is described in particular embodiments.
As used in the description herein and throughout the claims that follow, “a”, “an”, and “the” includes plural references unless the context clearly dictates otherwise. Also, as used in the description herein and throughout the claims that follow, the meaning of “in” includes “in” and “on” unless the context clearly dictates otherwise.
The above description illustrates various embodiments along with examples of how aspects of particular embodiments may be implemented. The above examples and embodiments should not be deemed to be the only embodiments, and are presented to illustrate the flexibility and advantages of particular embodiments as defined by the following claims. Based on the above disclosure and the following claims, other arrangements, embodiments, implementations and equivalents may be employed without departing from the scope hereof as defined by the claims.
Claims
1. A method comprising:
- determining, by the computing device, a first filter to determine a first up-sampled value for a first layer for a video, wherein the first filter has a first set of coefficient values of [−1, 3, −9, 47, 31, −10, 4, −1] assigned to the filter;
- determining, by the computing device, the up-sampled value by applying the set of coefficient values of [−1, 3, −9, 47, 31, −10, 4, −1] to the plurality of sample values; and
- outputting, by the computing device, the first up-sampled value for use in coding a second layer of a higher resolution than the first layer;
- determining a second filter, wherein the second filter has a second set of coefficient values assigned for the second filter;
- determining a second up-sampled value by applying the second set of coefficient values to the plurality of sample values; and
- outputting the second up-sampled value for use in coding the second layer of the higher resolution than the first layer.
2. The method of claim 1, wherein a phase offset for the filter is a 6/16 phase offset.
3. The method of claim 1, wherein
- the second filter has a second set of coefficient values of [−1, 4, −10, 31, 47, −9, 3, −1] assigned for the second filter.
4. The method of claim 1, further comprising:
- communicating information for the set of coefficient values from an encoder to a decoder, the information allowing the decoder to determine the set of coefficient values assigned for the filter.
5. The method of claim 4, wherein communicating comprises:
- communicating a first portion of the set of coefficient values from the encoder to the decoder, wherein the decoder determines a second portion of the set of coefficient values based on the first portion of the set of coefficient values.
6. The method of claim 5, wherein the set of coefficient values are time reversed.
7. The method of claim 4, wherein the information comprises a flag indicating a method to use to determine the set of coefficient values.
8. The method of claim 4, wherein the information comprises differences between the set of coefficient values and another set of coefficient values for a different filter.
9. The method of claim 1, wherein the up-sampled value is used for encoding the second layer.
10. The method of claim 1, wherein the up-sampled value is used for decoding the second layer.
11. A method comprising:
- determining, by the computing device, a first filter to determine a first up-sampled value for a first layer for a video, wherein the filter has a first set of coefficient values;
- determining, by the computing device, the first up-sampled value by applying the set of coefficient values to the plurality of sample values; and
- outputting, by the computing device, the first up-sampled value for use in coding a second layer of a higher resolution than the first layer;
- determining a second filter, wherein the second filter has a second set of coefficient values of [−1, 4, −10, 31, 47, −9, 3, −1] assigned for the second filter;
- determining a second up-sampled value by applying the second set of coefficient values of [−1, 4, −10, 31, 47, −9, 3, −1] to the plurality of sample values; and
- outputting the second up-sampled value for use in coding the second layer of the higher resolution than the first layer.
12. The method of claim 11, wherein a phase offset for the second filter is a −6/16 phase offset.
13. The method of claim 11, wherein
- the first filter has coefficient values of [−1, 3, −9, 47, 31, −10, 4, −1].
14. The method of claim 11, wherein the up-sampled value is used for encoding the second layer.
15. The method of claim 11, wherein the up-sampled value is used for decoding the second layer.
16. The method of claim 11, further comprising:
- communicating information for the set of coefficient values from an encoder to a decoder, the information allowing the decoder to determine the set of coefficient values assigned for the filter.
17. The method of claim 16, wherein communicating comprises:
- communicating a first portion of the set of coefficient values from the encoder to the decoder, wherein the decoder determines a second portion of the set of coefficient values based on the first portion of the set of coefficient values.
18. The method of claim 16, wherein the information comprises a flag indicating a method to use to determine the set of coefficient values.
19. The method of claim 16, wherein the information comprises differences between the set of coefficient values and another set of coefficient values for a different filter.
20. (canceled)
Type: Application
Filed: Jun 22, 2023
Publication Date: Oct 19, 2023
Applicant: ARRIS Enterprises LLC (Suwanee, GA)
Inventors: Koohyar Minoo (San Diego, CA), David M. Baylon (San Diego, CA)
Application Number: 18/213,161