Video decoding apparatus and video encoding apparatus

The video decoding device addresses the issue of undefined reference pictures by setting the reference picture list index variable based on the flag value and slice type, ensuring accurate and reliable decoding.

JP2026001147AActive Publication Date: 2026-01-06SHARP KK
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025165439
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2020-03-31
Filing Date
2025-10-01
Publication Date
2026-01-06
Estimated Expiration
2041-03-26

AI Technical Summary

Technical Problem

In the video coding method described in Non-Patent Document 1, the reference picture list with 0 reference pictures can lead to undefined reference pictures, causing issues in the decoding process.

Method used

A video decoding device that decodes encoded data by setting the reference picture list index variable based on the value of a flag indicating the reference picture list structure, ensuring a defined reference picture list selection on a picture-by-picture or slice-by-slice basis, and handling different types of slices (P, B, and IDR) to prevent indeterminate references.

Benefits of technology

This solution ensures that reference pictures are not indeterminate, improving the decoding process and maintaining the integrity of the video decoding operation.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026001147000001_ABST
    Figure 2026001147000001_ABST
Patent Text Reader

Abstract

To solve the problem that a reference picture becomes indefinite since a reference picture list in which the number of reference pictures is 0 can be defined in management of the reference picture list.SOLUTION: In a case that the syntax element indicates an IDR picture, the value of the syntax element that specifies the number of entries of the reference picture list structure and is defined by the variable I and the index variable of the reference picture list is 0.SELECTED DRAWING: Figure 27
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] An embodiment of the present invention relates to a video decoding device and a video encoding device. [Background technology]

[0002] In order to efficiently transmit or record moving images, a moving image encoding device is used that encodes moving images to generate coded data, and a moving image decoding device is used that decodes the coded data to generate decoded images.

[0003] Specific examples of video encoding methods include H.264 / AVC and H.265 / HEVC (High-Efficiency Video Coding).

[0004] In such a video coding method, images (pictures) constituting a video are managed in a hierarchical structure consisting of slices obtained by dividing the images, coding tree units (CTUs) obtained by dividing the slices, coding units (sometimes called coding units (CUs)) obtained by dividing the coding tree units, and transform units (TUs) obtained by dividing the coding units, and are coded / decoded for each CU.

[0005] In such video coding methods, a predicted image is usually generated based on a locally decoded image obtained by encoding / decoding an input image, and the predicted image is subtracted from the input image (original image) to obtain a prediction error (sometimes called a "difference image" or "residual image"), which is then coded. Methods for generating predicted images include inter-frame prediction (inter-prediction) and intra-frame prediction (intra-prediction).

[0006] Furthermore, Non-Patent Document 1 is an example of a recent video encoding and decoding technique.

[0007] Non-Patent Document 1 employs a mechanism for managing reference picture lists by defining multiple reference picture lists and using them by referring to them. Also, it employs a method for explicitly defining the number of weights in weighted prediction. [Prior art documents] [Non-patent literature]

[0008] [Non-Patent Document 1] "Versatile Video Coding (Draft 8)", JVET-P2001-vE, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11, 2020-3-12 Summary of the Invention [Problem to be solved by the invention]

[0009] However, in Non-Patent Document 1, a reference picture list with 0 reference pictures can be defined in reference picture list management, which causes a problem that the reference pictures become undefined. [Means for solving the problem]

[0010] A video decoding device according to one embodiment of the present invention is a video decoding device that decodes encoded data, and includes: a parameter decoding unit that decodes an index of a reference picture list structure when a value of a flag indicating whether a reference picture list i is derived based on one of the reference picture list structures is 1; and a prediction parameter derivation unit that determines whether a syntax element that specifies an NAL unit type indicates an IDR picture, wherein the reference picture list structure is defined by a list index variable and a reference picture list index variable, and when the value of the flag is 1, the reference picture list index variable is set to be equal to the value of the index of the reference picture list structure, and when the value of the flag is 0, the reference picture list index variable is set to be equal to the number of reference picture list structures in an SPS, and when the syntax element indicates an IDR picture, the value of a syntax element that specifies the number of entries of the reference picture list structure, and is defined by the variable i and the reference picture list index variable, is set to 0. Furthermore, a video decoding device according to one aspect of the present invention includes: a prediction unit that decodes a reference picture list structure including a plurality of reference picture lists and selects a reference picture list from the reference picture list structure on a picture-by-picture or slice-by-slice basis; When there is a possibility that a P slice or a B slice is present, the prediction unit selects a reference picture list in which the number of reference pictures in reference picture list 0 is one or more.

[0011] Furthermore, a video decoding device according to one aspect of the present invention includes: a prediction unit that decodes a reference picture list structure including a plurality of reference picture lists and selects a reference picture list from the reference picture list structure on a picture-by-picture or slice-by-slice basis; When there is a possibility that a B slice is present, the prediction unit selects a reference picture list in which the number of reference pictures in reference picture list 1 is one or more.

[0012] Furthermore, a video decoding device according to one aspect of the present invention includes: a prediction unit that decodes a reference picture list structure including a plurality of reference picture lists and selects a reference picture list from the reference picture list structure on a picture-by-picture or slice-by-slice basis; When the NAL unit type is IDR, the prediction unit selects a reference picture list in which the number of reference pictures is all 0.

[0013] By adopting such a configuration, the reference picture does not become indeterminate. [Effects of the Invention]

[0014] According to one aspect of the present invention, the above-mentioned problems can be solved. [Brief explanation of the drawings]

[0015] [Figure 1] 1 is a schematic diagram showing the configuration of an image transmission system according to an embodiment of the present invention. [Figure 2] 1 is a diagram showing the configuration of a transmitting device equipped with a video encoding device according to this embodiment, and a receiving device equipped with a video decoding device, in which PROD_A indicates the transmitting device equipped with the video encoding device, and PROD_B indicates the receiving device equipped with the video decoding device. [Figure 3] 1 is a diagram showing the configuration of a recording device equipped with a video encoding device according to this embodiment, and a playback device equipped with a video decoding device, in which PROD_C indicates a recording device equipped with a video encoding device, and PROD_D indicates a playback device equipped with a video decoding device. [Figure 4] FIG. 2 is a diagram showing a hierarchical structure of data in an encoded stream. [Figure 5] FIG. 1 is a conceptual diagram illustrating an example of a reference picture and a reference picture list. [Figure 6] FIG. 1 is a schematic diagram illustrating a configuration of a video decoding device. [Figure 7]10 is a flowchart illustrating a schematic operation of the video decoding device. [Figure 8] FIG. 10 is a diagram illustrating the arrangement of merge candidates. [Figure 9] FIG. 10 is a schematic diagram showing the configuration of an inter-prediction parameter derivation unit. [Figure 10] 1 is a schematic diagram showing the configuration of a merge prediction parameter derivation unit and an AMVP prediction parameter derivation unit. [Figure 11] FIG. 10 is a schematic diagram showing the configuration of an inter-prediction image generation unit. [Figure 12] FIG. 1 is a block diagram showing a configuration of a video encoding device. [Figure 13] FIG. 10 is a schematic diagram showing the configuration of an inter-prediction parameter encoding unit. [Figure 14] FIG. 10 is a schematic diagram illustrating a configuration of an intra-prediction parameter encoding unit. [Figure 15] FIG. 10 is a diagram showing part of the syntax of the Sequence Parameter Set (SPS) and the Picture Parameter Set (PPS). [Figure 16] FIG. 10 is a diagram illustrating a part of the syntax of a picture header PH. [Figure 17] A diagram showing part of the syntax of a slice header. [Figure 18] FIG. 10 is a diagram illustrating the syntax of weight prediction information pred_weight_table. [Figure 19] 10 is a diagram showing syntax for defining a reference picture list ref_pic_lists() and a reference picture list structure ref_pic_list_struct(listIdx, rplsIdx). [Figure 20] FIG. 10 is a diagram illustrating syntax for defining the reference picture list structure ref_pic_list_struct(listIdx, rplsIdx) of this embodiment. [Figure 21] FIG. 10 is a diagram showing the syntax of a picture header PH and a slice header in this embodiment. [Figure 22]FIG. 10 is a diagram illustrating the syntax of weight prediction information pred_weight_table in the present embodiment. [Figure 23] FIG. 10 is a diagram showing the syntax of another weight prediction information pred_weight_table in the present embodiment. [Figure 24] FIG. 10 is a diagram illustrating the syntax of a picture header and a method for deriving the variable NumRefIdxActive[i] in this embodiment. [Figure 25] FIG. 10 is a diagram illustrating the syntax of a slice header and a method for deriving the variable NumRefIdxActive[i] in this embodiment. [Figure 26] FIG. 10 is a diagram showing the syntax of another weight prediction information pred_weight_table in the present embodiment. [Figure 27] FIG. 10 is a diagram illustrating the syntax of a picture header and a method for deriving the variable NumRefIdxActive[i] in this embodiment. [Figure 28] FIG. 10 is a diagram illustrating the syntax of a slice header and a method for deriving the variable NumRefIdxActive[i] in this embodiment. DETAILED DESCRIPTION OF THE INVENTION

[0016] (First embodiment) Hereinafter, an embodiment of the present invention will be described with reference to the drawings.

[0017] FIG. 1 is a schematic diagram showing the configuration of an image transmission system 1 according to this embodiment.

[0018] The image transmission system 1 is a system that transmits an encoded stream obtained by encoding images of different resolutions after resolution conversion, decodes the transmitted encoded stream, and converts the images back to the original resolution for display. The image transmission system 1 includes a resolution conversion device (resolution conversion unit) 51, a video encoding device (image encoding device) 11, a network 21, a video decoding device (image decoding device) 31, a resolution inverse conversion device (resolution inverse conversion unit) 61, and a video display device (image display device) 41.

[0019] The resolution conversion device 51 converts the resolution of an image T included in the video, and supplies a variable resolution video signal including images of different resolutions to the video coding device 11. The resolution conversion device 51 also supplies information indicating whether or not the resolution of an image is to be converted to the video coding device 11. If the information indicates resolution conversion, the video coding device sets resolution conversion information ref_pic_resampling_enabled_flag, which will be described later, to 1, and includes it in a sequence parameter set SPS (Sequence Parameter Set) of the coded data for coding.

[0020] The video encoding device 11 receives an image T whose resolution has been converted.

[0021] The network 21 transmits the coded stream Te generated by the video coding device 11 to the video decoding device 31. The network 21 is the Internet, a wide area network (WAN), a local area network (LAN), or a combination of these. The network 21 is not necessarily limited to a bidirectional communication network, but may also be a unidirectional communication network that transmits broadcast waves such as terrestrial digital broadcasting and satellite broadcasting. Furthermore, the network 21 may be replaced by a storage medium on which the coded stream Te is recorded, such as a DVD (Digital Versatile Disc: registered trademark) or a BD (Blue-ray Disc: registered trademark).

[0022] The video decoding device 31 decodes each of the coded streams Te transmitted by the network 21 , generates a variable resolution decoded image signal, and supplies it to the resolution inverse conversion device 61 .

[0023] When the resolution conversion information included in the variable resolution decoded image signal indicates resolution conversion, the resolution inverse conversion device 61 generates a decoded image signal of the original size by inversely converting the resolution-converted image.

[0024] The moving image display device 41 displays all or part of one or more decoded images Td indicated by the decoded image signal input from the resolution inverse conversion unit. The moving image display device 41 includes, for example, a display device such as a liquid crystal display or an organic EL (Electro-luminescence) display. Examples of the form of the display include stationary, mobile, and HMD. Also, when the moving image decoding device 31 has high processing capabilities, it displays an image with high image quality, and when it has only lower processing capabilities, it displays an image that does not require high processing and display capabilities.

[0025] <Operator> The operators used in this specification are described below.

[0026] >> is a right bit shift, << is a left bit shift, & is a bitwise AND, | is a bitwise OR, |= is an OR assignment operator, and || indicates a logical OR.

[0027] x? y : z is a ternary operator that takes y when x is true (non-zero) and z when x is false (0).

[0028] Clip3(a, b, c) is a function that clips c to a value between a and b. If c < a, it returns a; if c > b, it returns b; otherwise, it returns c (where a <= b).

[0029] abs(a) is a function that returns the absolute value of a.

[0030] Int(a) is a function that returns the integer value of a.

[0031] floor(a) is a function that returns the largest integer less than or equal to a.

[0032] ceil(a) is a function that returns the smallest integer greater than or equal to a.

[0033] a / d represents the division of a by d (truncating the decimal part).

[0034] min(a,b) represents the smaller of a and b.

[0035] <Structure of the coded stream Te> Before proceeding to a detailed description of the video encoding device 11 and video decoding device 31 according to this embodiment, the data structure of the encoded stream Te generated by the video encoding device 11 and decoded by the video decoding device 31 will be described.

[0036] 4 is a diagram showing a hierarchical structure of data in an encoded stream Te. The encoded stream Te illustratively includes a sequence and a plurality of pictures constituting the sequence. In FIG. 4, a diagram showing an encoded video sequence defining the sequence SEQ, an encoded picture defining a picture PICT, an encoded slice defining a slice S, encoded slice data defining slice data, an encoding tree unit included in the encoded slice data, and an encoding unit included in the encoding tree unit is shown.

[0037] (Coded Video Sequence) The coded video sequence defines a set of data that the video decoding device 31 refers to in order to decode the sequence SEQ to be processed. As shown in Fig. 4, the sequence SEQ includes a video parameter set VPS (Video Parameter Set), a sequence parameter set SPS (Sequence Parameter Set), a picture parameter set PPS (Picture Parameter Set), an adaptation parameter set (APS), a picture PICT, and supplemental enhancement information SEI (Supplemental Enhancement Information).

[0038] The video parameter set VPS specifies a set of coding parameters common to multiple videos composed of multiple layers, as well as a set of coding parameters related to multiple layers included in the video and each individual layer.

[0039] The sequence parameter set SPS defines a set of coding parameters that the video decoding device 31 references to decode the target sequence. For example, the width and height of a picture are defined. Note that there may be multiple SPSs. In this case, one of the multiple SPSs is selected from the PPS.

[0040] Here, the sequence parameter set SPS includes the following syntax: ref_pic_resampling_enabled_flag: A flag that specifies whether or not to use a resolution-varying function (resampling) when decoding each image included in a single sequence that references the target SPS. In other words, this flag indicates that the size of the reference picture referenced in generating a predicted image changes between each image represented by a single sequence. If the value of this flag is 1, the resampling is applied, and if the value is 0, it is not applied. pic_width_max_in_luma_samples: This syntax specifies the width of the widest image in a single sequence, in units of luminance blocks. The value of this syntax must be a non-zero integer multiple of Max(8, MinCbSizeY), where MinCbSizeY is the value determined by the minimum size of a luminance block. pic_height_max_in_luma_samples: This syntax specifies the height of the image with the maximum height among the images in a single sequence, in units of luminance blocks. The value of this syntax must not be 0 and must be an integer multiple of Max(8, MinCbSizeY). sps_temporal_mvp_enabled_flag: A flag that specifies whether or not temporal motion vector prediction is used when decoding the target sequence. If the value of this flag is 1, temporal motion vector prediction is used, and if the value is 0, temporal motion vector prediction is not used. Furthermore, by specifying this flag, it is possible to prevent misalignment of the reference coordinate position when referencing a reference picture with a different resolution, for example.

[0041] The picture parameter set PPS defines a set of coding parameters that the video decoding device 31 references to decode each picture in the target sequence. For example, the picture parameter set PPS includes a reference value of the quantization width used in decoding the picture (pic_init_qp_minus26) and a flag indicating the application of weighted prediction (weighted_pred_flag). Note that there may be multiple PPSs. In this case, one of the multiple PPSs is selected for each picture in the target sequence.

[0042] (encoded slice) A coded slice defines a set of data that the video decoding device 31 refers to in order to decode a target slice S. As shown in Fig. 4, a slice includes a slice header and slice data.

[0043] The slice header includes a group of coding parameters that the video decoding device 31 refers to in order to determine a decoding method for the current slice. Slice type designation information (slice_type) that designates the slice type is an example of a coding parameter included in the slice header.

[0044] Slice types that can be specified by the slice type specification information include (1) an I slice that uses only intra prediction during encoding, (2) a P slice that uses uni-prediction (L0 prediction) or intra prediction during encoding, and (3) a B slice that uses uni-prediction (L0 prediction using only reference picture list 0 or L1 prediction using only reference picture list 1), bi-prediction, or intra prediction during encoding. Note that inter prediction is not limited to uni-prediction or bi-prediction, and a predicted image may be generated using more reference pictures. Hereinafter, the terms P and B slices refer to slices including blocks that can use inter prediction.

[0045] Note that the slice header may include a reference to a picture parameter set PPS (pic_parameter_set_id).

[0046] (encoded slice data) The coded slice data defines a set of data that the video decoding device 31 references in order to decode the slice data to be processed. The slice data includes a CTU, as shown in the coded slice header in Fig. 4. A CTU is a block of a fixed size (e.g., 64x64) that constitutes a slice, and is also called a Largest Coding Unit (LCU).

[0047] (coding tree unit) 4 defines a set of data that the video decoding device 31 references in order to decode a CTU to be processed. The CTU is divided into coding units (CUs), which are basic units of encoding processing, by recursive quad tree (QT) division, binary tree (BT) division, or ternary tree (TT) division. BT division and TT division are collectively called multi-tree (MT) division. A node in a tree structure obtained by recursive quad tree division is called a coding node. Intermediate nodes in a quad tree, binary tree, or ternary tree are coding nodes, and the CTU itself is defined as the top-level coding node.

[0048] The CT includes, as CT information, a CU split flag (split_cu_flag) indicating whether CT splitting is performed, a QT split flag (qt_split_cu_flag) indicating whether QT splitting is performed, an MT split direction (mtt_split_cu_vertical_flag) indicating the split direction of MT splitting, and an MT split type (mtt_split_cu_binary_flag) indicating the split type of MT splitting. split_cu_flag, qt_split_cu_flag, mtt_split_cu_vertical_flag, and mtt_split_cu_binary_flag are transmitted for each encoding node.

[0049] Different trees may be used for luminance and chrominance. The tree type is indicated by treeType. For example, if a common tree is used for luminance (Y, cIdx=0) and chrominance (Cb / Cr, cIdx=1,2), the common single tree is indicated by treeType=SINGLE_TREE. If two different trees (DUAL trees) are used for luminance and chrominance, the luminance tree is indicated by treeType=DUAL_TREE_LUMA and the chrominance tree is indicated by treeType=DUAL_TREE_CHROMA.

[0050] (encoding unit) 4 defines a set of data that the video decoding device 31 references in order to decode a coding unit to be processed. Specifically, a CU is composed of a CU header CUH, prediction parameters, transformation parameters, quantization transformation coefficients, etc. The CU header defines a prediction mode, etc.

[0051] Prediction processing may be performed in units of CUs, or in units of sub-CUs obtained by further dividing a CU. If the sizes of a CU and a sub-CU are the same, there is one sub-CU in the CU. If the size of a CU is larger than the size of a sub-CU, the CU is divided into sub-CUs. For example, if the CU is 8x8 and the sub-CU is 4x4, the CU is divided into four sub-CUs, divided horizontally by two and vertically by two.

[0052] There are two types of prediction (prediction modes): intra prediction and inter prediction. Intra prediction is a prediction within the same picture, while inter prediction refers to a prediction process performed between different pictures (for example, between display times or between layer images).

[0053] The transform and quantization processes are performed in units of CU, but the quantized transform coefficients may be entropy coded in units of sub-blocks such as 4x4.

[0054] (Prediction parameters) The predicted image is derived from prediction parameters associated with the block, which include intra-prediction and inter-prediction parameters.

[0055] Hereinafter, prediction parameters of inter prediction will be described. The inter prediction parameters are composed of prediction list usage flags predFlagL0 and predFlagL1, reference picture indices refIdxL0 and refIdxL1, and motion vectors mvL0 and mvL1. predFlagL0 and predFlagL1 are flags indicating whether or not a reference picture list (L0 list, L1 list) is used, and when the value is 1, the corresponding reference picture list is used. Note that in this specification, when a "flag indicating whether XX is true" is used, a flag other than 0 (for example, 1) is considered to be XX, and 0 is considered to be not XX, and in logical negation, logical product, etc., 1 is treated as true and 0 is treated as false (the same applies below). However, in an actual device or method, other values ​​may be used as true and false values.

[0056] Syntax elements for deriving inter-prediction parameters include, for example, an affine flag affine_flag used in merge mode, a merge flag merge_flag, a merge index merge_idx, an MMVD flag mmvd_flag, an inter-prediction identifier inter_pred_idc for selecting a reference picture to be used in AMVP mode, a reference picture index refIdxLX, a prediction vector index mvp_LX_idx for deriving a motion vector, a difference vector mvdLX, and a motion vector precision mode amvr_mode.

[0057] (Reference Picture List) A reference picture list is a list of reference pictures stored in the reference picture memory 306. FIG. 5 is a conceptual diagram showing an example of reference pictures and reference picture lists. In the conceptual diagram showing an example of reference pictures in FIG. 5, rectangles represent pictures, arrows represent picture reference relationships, the horizontal axis represents time, I, P, and B in the rectangles represent intra-pictures, uni-predictive pictures, and bi-predictive pictures, respectively, and the numbers in the rectangles represent decoding order. As shown in the diagram, the decoding order of pictures is I0, P1, B2, B3, and B4, and the display order is I0, B3, B2, B4, and P1. FIG. 5 shows an example of a reference picture list for picture B3 (target picture). A reference picture list is a list representing candidate reference pictures, and one picture (slice) may have one or more reference picture lists. In the example shown in the diagram, the target picture B3 has reference picture lists: an L0 list RefPicList0 and an L1 list RefPicList1. In each CU, refIdxLX specifies which picture in the reference picture list RefPicListX (X=0 or 1) to actually reference. The diagram shows an example where refIdxL0=2 and refIdxL1=0. Note that LX is a notation method used when there is no distinction between L0 prediction and L1 prediction; hereinafter, parameters for the L0 list and parameters for the L1 list will be distinguished by replacing LX with L0 or L1.

[0058] (Merge prediction and AMVP prediction) Prediction parameter decoding (encoding) methods include merge prediction mode and AMVP (Advanced Motion Vector Prediction) mode, and merge_flag is a flag for distinguishing between them. Merge prediction mode is a mode in which the prediction list usage flag predFlagLX, reference picture index refIdxLX, and motion vector mvLX are not included in the encoded data, but are derived from prediction parameters of already processed neighboring blocks, etc. AMVP mode is a mode in which inter_pred_idc, refIdxLX, and mvLX are included in the encoded data. Note that mvLX is encoded as mvp_LX_idx, which identifies the prediction vector mvpLX, and a difference vector mvdLX. In addition to merge prediction mode, affine prediction mode and MMVD prediction mode may also be used.

[0059] inter_pred_idc is a value indicating the type and number of reference pictures, and takes one of the values ​​PRED_L0, PRED_L1, or PRED_BI. PRED_L0 and PRED_L1 indicate uni-prediction using one reference picture managed in the L0 list and L1 list, respectively. PRED_BI indicates bi-prediction using two reference pictures managed in the L0 list and L1 list.

[0060] The merge_idx is an index indicating which prediction parameter is to be used as the prediction parameter for the current block from among prediction parameter candidates (merge candidates) derived from blocks for which processing has been completed.

[0061] (motion vector) mvLX indicates the amount of shift between blocks on two different pictures. The predicted vector and differential vector related to mvLX are called mvpLX and mvdLX, respectively.

[0062] (Inter prediction identifier inter_pred_idc and prediction list usage flag predFlagLX) The relationship between inter_pred_idc, predFlagL0, and predFlagL1 is as follows, and they can be converted to each other.

[0063] inter_pred_idc = (predFlagL1<<1)+predFlagL0 predFlagL0 = inter_pred_idc & 1 predFlagL1 = inter_pred_idc >> 1 Note that the inter prediction parameters may use a prediction list usage flag or an inter prediction identifier. Furthermore, the determination using the prediction list usage flag may be replaced with a determination using the inter prediction identifier. Conversely, the determination using the inter prediction identifier may be replaced with a determination using the prediction list usage flag.

[0064] (Bi-prediction biPred decision) The flag biPred indicating whether or not bi-prediction is performed can be derived based on whether two prediction list usage flags are both 1. For example, it can be derived using the following formula.

[0065] biPred = (predFlagL0==1 && predFlagL1==1) Alternatively, biPred can be derived based on whether the inter prediction identifier is a value indicating the use of two prediction lists (reference pictures). For example, it can be derived using the following formula:

[0066] biPred = (inter_pred_idc==PRED_BI) ? 1 : 0 (Configuration of video decoding device) The configuration of a video decoding device 31 (FIG. 6) according to this embodiment will be described.

[0067] The video decoding device 31 includes an entropy decoding unit 301, a parameter decoding unit (prediction image decoding device) 302, a loop filter 305, a reference picture memory 306, a prediction parameter memory 307, a prediction image generation unit (prediction image generation device) 308, an inverse quantization and inverse transform unit 311, an adder 312, and a prediction parameter derivation unit 320. Note that the video decoding device 31 may also be configured without including the loop filter 305, in accordance with the video coding device 11 described below.

[0068] The parameter decoding unit 302 further includes a header decoding unit 3020, a CT information decoding unit 3021, and a CU decoding unit 3022 (prediction mode decoding unit), and the CU decoding unit 3022 further includes a TU decoding unit 3024. These may be collectively referred to as a decoding module. The header decoding unit 3020 decodes parameter set information such as VPS, SPS, PPS, and APS, and slice headers (slice information) from the coded data. The CT information decoding unit 3021 decodes the CT from the coded data. The CU decoding unit 3022 decodes the CU from the coded data. When a prediction error is included in the TU, the TU decoding unit 3024 decodes QP update information (quantization correction value) and quantized prediction error (residual_coding) from the coded data.

[0069] The TU decoding unit 3024 decodes the QP update information and the quantized prediction error from the coded data when the mode is other than the skip mode (skip_mode==0). More specifically, when skip_mode==0, the TU decoding unit 3024 decodes the flag cu_cbp indicating whether or not the current block includes a quantized prediction error, and decodes the quantized prediction error when cu_cbp is 1. When cu_cbp does not exist in the coded data, it is derived as 0.

[0070] The TU decoding unit 3024 decodes an index mts_idx indicating a transform base from the coded data. The TU decoding unit 3024 also decodes an index stIdx indicating the use of a secondary transform and the transform base from the coded data. stIdx indicates no application of a secondary transform when it is 0, indicates one transform of a set (pair) of secondary transform bases when it is 1, and indicates the other transform of the pair when it is 2.

[0071] The TU decoding unit 3024 may also decode a sub-block transform flag cu_sbt_flag. When cu_sbt_flag is 1, the CU is divided into multiple sub-blocks and the residual of only one specific sub-block is decoded. The TU decoding unit 3024 may also decode a flag cu_sbt_quad_flag indicating whether the number of sub-blocks is 4 or 2, cu_sbt_horizontal_flag indicating the division direction, and cu_sbt_pos_flag indicating a sub-block that includes a non-zero transform coefficient.

[0072] The predicted image generating unit 308 includes an inter predicted image generating unit 309 and an intra predicted image generating unit 310 .

[0073] The prediction parameter derivation unit 320 includes an inter prediction parameter derivation unit 303 and an intra prediction parameter derivation unit 304 .

[0074] In the following, an example will be described in which CTUs and CUs are used as processing units, but this is not limiting and processing may be performed in sub-CU units. Alternatively, CTUs and CUs may be read as blocks, and sub-CUs as sub-blocks, and processing may be performed in block or sub-block units.

[0075] The entropy decoding unit 301 performs entropy decoding on the externally input coded stream Te to decode individual codes (syntax elements). Entropy coding can be divided into two types: variable-length coding of syntax elements using a context (probability model) adaptively selected according to the type of syntax element and surrounding circumstances, and variable-length coding of syntax elements using a predetermined table or formula. The former, CABAC (Context Adaptive Binary Arithmetic Coding), stores the CABAC state of the context (probability state index pStateIdx, which specifies the type (0 or 1) and probability of the most probable symbol) in memory. The entropy decoding unit 301 initializes all CABAC states at the beginning of a segment (tile, CTU row, slice). The entropy decoding unit 301 converts the syntax elements into a binary string (bin string) and decodes each bit of the bin string. When a context is used, a context index (ctxInc) is derived for each bit of the syntax element, the bit is decoded using the context, and the CABAC state of the used context is updated. Bits that do not use a context are decoded with equal probability (EP, bypass), and the ctxInc derivation and CABAC state are omitted. The decoded syntax elements include prediction information for generating a predicted image and a prediction error for generating a difference image.

[0076] The entropy decoding unit 301 outputs the decoded code to the parameter decoding unit 302. The decoded code is, for example, a prediction mode predMode, merge_flag, merge_idx, inter_pred_idc, refIdxLX, mvp_LX_idx, mvdLX, amvr_mode, etc. Control of which code to decode is performed based on an instruction from the parameter decoding unit 302.

[0077] (Basic flow) FIG. 7 is a flowchart illustrating the general operation of the video decoding device 31.

[0078] (S1100: Decode Parameter Set Information) The header decoder 3020 decodes parameter set information such as VPS, SPS, and PPS from the coded data.

[0079] (S1200: Decode slice information) The header decoding unit 3020 decodes the slice header (slice information) from the coded data.

[0080] Thereafter, the video decoding device 31 repeats the processes from S1300 to S5000 for each CTU included in the target picture, thereby deriving a decoded image of each CTU.

[0081] (S1300: Decode CTU Information) The CT information decoding unit 3021 decodes the CTU from the encoded data.

[0082] (S1400: Decode CT Information) The CT information decoding unit 3021 decodes the CT from the encoded data.

[0083] (S1500: CU Decoding) The CU decoding unit 3022 performs S1510 and S1520 to decode the CU from the encoded data.

[0084] (S1510: Decode CU Information) The CU decoding unit 3022 decodes CU information, prediction information, the TU split flag split_transform_flag, and CU residual flags cbf_cb, cbf_cr, and cbf_luma from the coded data.

[0085] (S1520: TU information decoding) When a prediction error is included in a TU, the TU decoding unit 3024 decodes the QP update information, the quantization prediction error, and the transform index mts_idx from the coded data. Note that the QP update information is a difference value from the quantization parameter predicted value qPpred, which is a predicted value of the quantization parameter QP.

[0086] (S2000: Generate predicted image) The predicted image generation unit 308 generates a predicted image for each block included in the current CU based on prediction information.

[0087] (S3000: Inverse Quantization and Inverse Transformation) The inverse quantization and inverse transform unit 311 executes inverse quantization and inverse transform processing on each TU included in the target CU.

[0088] (S4000: Generate decoded image) The addition unit 312 generates a decoded image of the current CU by adding the predicted image supplied from the predicted image generation unit 308 and the prediction error supplied from the inverse quantization and inverse transform unit 311.

[0089] (S5000: Loop filter) The loop filter 305 applies a loop filter such as a deblocking filter, SAO, or ALF to the decoded image to generate a decoded image.

[0090] (Configuration of the inter-prediction parameter derivation unit) 9 is a schematic diagram showing the configuration of the inter prediction parameter derivation unit 303 according to this embodiment. The inter prediction parameter derivation unit 303 derives inter prediction parameters by referring to prediction parameters stored in the prediction parameter memory 307, based on the syntax elements input from the parameter decoding unit 302. The inter prediction parameter derivation unit 303 also outputs the inter prediction parameters to the inter prediction image generation unit 309 and the prediction parameter memory 307. The inter prediction parameter derivation unit 303 and its internal elements, namely, the AMVP prediction parameter derivation unit 3032, the merge prediction parameter derivation unit 3036, the affine prediction unit 30372, the MMVD prediction unit 30373, the GPM prediction unit 30377, the DMVR unit 30537, and the MV addition unit 3038, are means common to the video encoding device and the video decoding device, and may therefore be collectively referred to as a motion vector derivation unit (motion vector derivation device).

[0091] The scale parameter derivation unit 30378 derives the horizontal scaling ratio of the reference picture, RefPicScale[i][j][0], the vertical scaling ratio of the reference picture, RefPicScale[i][j][1], and RefPicIsScaled[i][j] indicating whether the reference picture has been scaled, as follows, where i indicates whether the reference picture list is an L0 list or an L1 list, and j is the value of the L0 reference picture list or the L1 reference picture list:

[0092] RefPicScale[i][j][0] = ((fRefWidth << 14)+(PicOutputWidthL >> 1)) / PicOutputWidthL RefPicScale[i][j][1] = ((fRefHeight << 14)+(PicOutputHeightL >> 1)) / PicOutputHeightL RefPicIsScaled[i][j] = (RefPicScale[i][j][0] != (1<<14)) || (RefPicScale[i][j][1] != (1<<14)) Here, the variable PicOutputWidthL is a value used when calculating the horizontal scaling ratio when a picture to be coded is referenced, and is calculated by subtracting left and right offset values ​​from the horizontal number of luminance pixels of the picture to be coded. The variable PicOutputHeightL is a value used when calculating the vertical scaling ratio when a picture to be coded is referenced, and is calculated by subtracting top and bottom offset values ​​from the vertical number of luminance pixels of the picture to be coded. The variable fRefWidth is the value of PicOutputWidthL of the reference picture with reference picture list value j in list i, and the variable fRefHight is the value of PicOutputHeightL of the reference picture with reference picture list value j in list i.

[0093] When affine_flag is 1, that is, when affine prediction mode is indicated, the affine prediction unit 30372 derives inter prediction parameters in units of subblocks.

[0094] When mmvd_flag is 1, that is, when it indicates the MMVD prediction mode, the MMVD predictor 30373 derives inter prediction parameters from the merge candidates and difference vectors derived by the merge prediction parameter derivation unit 3036.

[0095] When the GPM Flag is 1, that is, when it indicates a GPM (Geometric Partitioning Mode) prediction mode, the GPM prediction unit 30377 derives GPM prediction parameters.

[0096] If merge_flag is 1, that is, if it indicates merge prediction mode, merge_idx is derived and output to the merge prediction parameter derivation unit 3036 .

[0097] When merge_flag is 0, that is, when it indicates the AMVP prediction mode, the AMVP prediction parameter derivation unit 3032 derives mvpLX from inter_pred_idc, refIdxLX, or mvp_LX_idx.

[0098] (MV addition section) The MV adder 3038 adds the derived mvpLX and mvdLX to derive mvLX.

[0099] (Affine prediction part) The affine prediction unit 30372 1) derives motion vectors for two control points CP0 and CP1 or three control points CP0, CP1, and CP2 of the target block, 2) derives affine prediction parameters for the target block, and 3) derives motion vectors for each sub-block from the affine prediction parameters.

[0100] In merge affine prediction, the motion vector cpMvLX[] for each control point CP0, CP1, CP2 is derived from the motion vectors of the blocks adjacent to the current block. In inter-affine prediction, the cpMvLX[] for each control point CP0, CP1, CP2 is derived from the sum of the predicted vector for each control point CP0, CP1, CP2 and the difference vector mvdCpLX[] derived from the encoded data.

[0101] (Merge prediction) 10 is a schematic diagram showing the configuration of the merge prediction parameter derivation unit 3036 according to this embodiment. The merge prediction parameter derivation unit 3036 includes a merge candidate derivation unit 30361 and a merge candidate selection unit 30362. Note that merge candidates include prediction parameters (predFlagLX, mvLX, refIdxLX) and are stored in a merge candidate list. Merge candidates stored in the merge candidate list are assigned indices according to predetermined rules.

[0102] The merge candidate derivation unit 30361 derives merge candidates by directly using the motion vectors and refIdxLX of decoded neighboring blocks. In addition, the merge candidate derivation unit 30361 may apply a spatial merge candidate derivation process, a temporal merge candidate derivation process, a pairwise merge candidate derivation process, and a zero merge candidate derivation process, which will be described later.

[0103] In the spatial merge candidate derivation process, the merge candidate derivation unit 30361 reads prediction parameters stored in the prediction parameter memory 307 according to a predetermined rule and sets them as merge candidates. The reference pictures are specified, for example, by prediction parameters for each of the neighboring blocks within a predetermined range from the target block (e.g., all or part of the blocks adjacent to the left A1, right B1, upper right B0, lower left A0, and upper left B2 of the target block). The merge candidates are referred to as A1, B1, B0, A0, and B2. Here, A1, B1, B0, A0, and B2 are motion information derived from blocks containing the following coordinates: The positions of A1, B1, B0, A0, and B2 are shown in the arrangement of merge candidates in the target picture in Figure 8.

[0104] A1: (xCb - 1, yCb + cbHeight - 1) B1: (xCb + cbWidth - 1, yCb - 1) B0: (xCb + cbWidth, yCb - 1) A0: (xCb - 1, yCb + cbHeight) B2: (xCb - 1, yCb - 1) The upper left coordinates of the target block are (xCb, yCb), the width is cbWidth, and the height is cbHeight.

[0105] As a temporal merge derivation process, the merge candidate derivation unit 30361 reads the prediction parameters of the block C in the reference image including the lower right CBR or center coordinates of the target block from the prediction parameter memory 307, as shown in the co-located picture of Figure 8, sets it as a merge candidate Col, and stores it in the merge candidate list mergeCandList[].

[0106] Generally, block CBR is given priority and added to mergeCandList[], and when CBR does not have a motion vector (for example, an intra-prediction block) or when CBR is located outside the picture, the motion vector of block C is added to the prediction vector candidates. By adding the motion vector of a co-located block, which is likely to have different motion, as a prediction candidate, the number of prediction vector options increases and coding efficiency improves.

[0107] If ph_temporal_mvp_enabled_flag is 0 or cbWidth*cbHeight is less than or equal to 32, the co-located motion vector mvLXCol of the current block is set to 0, and the availability flag availableFlagLXCol of the co-located block is set to 0.

[0108] Otherwise (SliceTemporalMvpEnabledFlag is 1), do the following:

[0109] For example, the merging candidate derivation unit 30361 may derive the position of C (xColCtr, yColCtr) and the position of CBR (xColCBr, yColCBr) using the following formulas.

[0110] xColCtr = xCb+(cbWidth>>1) yColCtr = yCb+(cbHeight>>1) xColCBr = xCb+cbWidth yColCBr = yCb + cbHeight If CBR is available, the CBR motion vector is used to derive the merge candidate COL. If CBR is not available, C is used to derive COL. Then, availableFlagLXCol is set to 1. Note that the reference picture may be collocated_ref_idx notified in the slice header.

[0111] The pairwise candidate derivation unit derives a pairwise candidate avgK from the average of the two merge candidates (p0Cand, p1Cand) already stored in mergeCandList, and stores it in mergeCandList[].

[0112] mvLXavgK[0] = (mvLXp0Cand[0]+mvLXp1Cand[0]) / 2 mvLXavgK[1] = (mvLXp0Cand[1]+mvLXp1Cand[1]) / 2 The merge candidate derivation unit 30361 derives zero merge candidates Z0, ..., ZM, where refIdxLX is 0...M and both the X and Y components of mvLX are 0, and stores them in the merge candidate list.

[0113] The order in which the mergeCandList[] is stored is, for example, spatial merge candidates (A1, B1, B0, A0, B2), temporal merge candidates Col, pairwise merge candidates avgK, and zero merge candidates ZK. Note that reference blocks that are unavailable (e.g., blocks that are intra-predicted) are not stored in the merge candidate list. i = 0 if( availableFlagA1 ) mergeCandList[ i++ ] = A1 if( availableFlagB1 ) mergeCandList[ i++ ] = B1 if( availableFlagB0 ) mergeCandList[ i++ ] = B0 if( availableFlagA0 ) mergeCandList[ i++ ] = A0 if( availableFlagB2 ) mergeCandList[ i++ ] = B2 if( availableFlagCol ) mergeCandList[ i++ ] = Col if( availableFlagAvgK ) mergeCandList[ i++ ] = avgK if( i < MaxNumMergeCand ) mergeCandList[ i++ ] = ZK The merge candidate selection unit 30362 selects a merge candidate N indicated by merge_idx from among the merge candidates included in the merge candidate list using the following formula.

[0114] N = mergeCandList[merge_idx] Here, N is a label indicating a merge candidate, and can be A1, B1, B0, A0, B2, Col, avgK, ZK, etc. The motion information of the merge candidate indicated by label N is indicated by (mvLXN[0], mvLXN[0]), predFlagLXN, and refIdxLXN.

[0115] The selected (mvLXN[0], mvLXN[0]), predFlagLXN, and refIdxLXN are selected as the inter prediction parameters for the current block. The merging candidate selection unit 30362 stores the inter prediction parameters of the selected merging candidate in the prediction parameter memory 307 and outputs them to the inter prediction image generation unit 309.

[0116] (DMVR) Next, a DMVR (Decoder side Motion Vector Refinement) process performed by the DMVR unit 30375 will be described. When merge_flag is 1 for a target CU or when the skip flag skip_flag is 1, the DMVR unit 30375 corrects the mvLX of the target CU derived by the merge prediction unit 30374 using a reference image. Specifically, when the prediction parameters derived by the merge prediction unit 30374 are bi-predictive, the DMVR unit 30375 corrects the motion vector using a predicted image derived from the motion vectors corresponding to two reference pictures. The corrected mvLX is output to the inter predicted image generation unit 309. are supplied to.

[0117] Furthermore, in deriving the flag dmvrFlag that specifies whether or not to perform DMVR processing, one of the conditions for setting dmvrFlag to 1 is that the value of RefPicIsScaled[0][refIdxL0] described above is 0 and the value of RefPicIsScaled[1][refIdxL1] is 0. When the value of dmvrFlag is set to 1, DMVR processing by the DMVR unit 30375 is performed.

[0118] Furthermore, in deriving the flag dmvrFlag that specifies whether or not to perform DMVR processing, one of the conditions for setting dmvrFlag to 1 is that ciip_flag is 0, that is, IntraInter composition processing is not applied.

[0119] Furthermore, in deriving the flag dmvrFlag that specifies whether or not to perform DMVR processing, one of the conditions for setting dmvrFlag to 1 is that luma_weight_l0_flag[i], which is a flag indicating whether or not coefficient information for weighted prediction of luminance L0 prediction, described later, is present, is 0, and the value of luma_weight_l1_flag[i], which is a flag indicating whether or not coefficient information for weighted prediction of luminance L1 prediction, is present, is 0. When the value of dmvrFlag is set to 1, DMVR processing by the DMVR unit 30375 is performed.

[0120] In deriving the flag dmvrFlag that specifies whether to perform DMVR processing, one of the conditions for setting dmvrFlag to 1 may include that luma_weight_l0_flag[i] is 0, the value of luma_weight_l1_flag[i] is 0, and chroma_weight_l0_flag[i], a flag indicating whether coefficient information for weighted prediction of chroma L0 prediction (described later), is present, is 0, and the value of chroma_weight_l1_flag[i], a flag indicating whether coefficient information for weighted prediction of chroma L1 prediction, is present, is 0. When the value of dmvrFlag is set to 1, DMVR processing by the DMVR unit 30375 is performed.

[0121] (Prof) Furthermore, if the value of RefPicIsScaled[0][refIdxLX] is 1 or the value of RefPicIsScaled[1][refIdxLX] is 1, the value of cbProfFlagLX is set to FALSE. Here, cbProfFlagLX is a flag that specifies whether or not to perform Prediction refinement (PROF) of affine prediction.

[0122] (AMVP forecast) 10 is a schematic diagram showing the configuration of the AMVP prediction parameter derivation unit 3032 according to this embodiment. The AMVP prediction parameter derivation unit 3032 includes a vector candidate derivation unit 3033 and a vector candidate selection unit 3034. The vector candidate derivation unit 3033 derives predictor vector candidates from the motion vectors of decoded adjacent blocks stored in the prediction parameter memory 307 based on refIdxLX, and stores the candidates in a predictor vector candidate list mvpListLX[ ].

[0123] The vector candidate selection unit 3034 selects, as mvpLX, the motion vector mvpListLX[mvp_LX_idx] indicated by mvp_LX_idx from among the predicted vector candidates in mvpListLX[ ]. The vector candidate selection unit 3034 outputs the selected mvpLX to the MV addition unit 3038.

[0124] (MV addition section) The MV addition unit 3038 calculates mvLX by adding the mvpLX input from the AMVP prediction parameter derivation unit 3032 and the decoded mvdLX. The addition unit 3038 outputs the calculated mvLX to the inter predicted image generation unit 309 and the prediction parameter memory 307.

[0125] mvLX[0] = mvpLX[0]+mvdLX[0] mvLX[1] = mvpLX[1] + mvdLX[1] (Detailed classification of sub-block merges) The types of prediction processes related to sub-block merging are summarized below. As described above, they are roughly divided into merge prediction and AMVP prediction.

[0126] Merge predictions are further categorized as follows:

[0127] Normal merge prediction (block-based merge prediction) Sub-block merge prediction Sub-block merge prediction is further categorized as follows:

[0128] Sub-block prediction (ATMVP) Affine prediction Inferred affine prediction Constructed affine prediction On the other hand, AMVP predictions are categorized as follows:

[0129] ·AMVP (translation) MVD affine prediction MVD affine prediction is further categorized as follows:

[0130] 4-parameter MVD affine prediction 6-parameter MVD affine prediction Note that MVD affine prediction refers to affine prediction that uses a decoded difference vector.

[0131] In sub-block prediction, similarly to the temporal merge derivation process, the availability of the co-located sub-block COL of the target sub-block (availableFlagSbCol) is determined, and if it is available, prediction parameters are derived. At least when the above-mentioned SliceTemporalMvpEnabledFlag is 0, availableFlagSbCol is set to 0.

[0132] MMVD prediction (Merge with Motion Vector Difference) may be classified as merge prediction or AMVP prediction. In the former case, mmvd_flag and MMVD-related syntax elements are decoded when merge_flag=1, and in the latter case, mmvd_flag and MMVD-related syntax elements are decoded when merge_flag=0.

[0133] The loop filter 305 is a filter provided in the encoding loop that removes block distortion and ringing distortion to improve image quality. The loop filter 305 applies filters such as a deblocking filter, a sample adaptive offset (SAO), and an adaptive loop filter (ALF) to the decoded image of the CU generated by the adder 312.

[0134] The reference picture memory 306 stores the decoded image of the CU in a predetermined location for each current picture and current CU.

[0135] The prediction parameter memory 307 stores prediction parameters at a predetermined location for each CTU or CU. Specifically, the prediction parameter memory 307 stores parameters decoded by the parameter decoding unit 302, parameters derived by the prediction parameter derivation unit 320, and the like.

[0136] The predicted image generation unit 308 receives as input the parameters derived by the prediction parameter derivation unit 320. The predicted image generation unit 308 also reads a reference picture from the reference picture memory 306. The predicted image generation unit 308 generates a predicted image of a block or sub-block using the parameters and a reference picture (reference picture block) in the prediction mode indicated by predMode. Here, the reference picture block is a set of pixels on the reference picture (usually rectangular, and therefore called a block), and is an area referenced to generate a predicted image.

[0137] (Inter-prediction image generation unit 309) When predMode indicates inter prediction mode, the inter prediction image generation unit 309 generates a prediction image of a block or sub-block by inter prediction using the inter prediction parameters input from the inter prediction parameter derivation unit 303 and the reference picture.

[0138] 11 is a schematic diagram showing the configuration of an inter-prediction image generation unit 309 included in the prediction image generation unit 308 according to this embodiment. The inter-prediction image generation unit 309 includes a motion compensation unit (prediction image generation device) 3091 and a synthesis unit 3095. The synthesis unit 3095 includes an intra-inter synthesis unit 30951, a GPM synthesis unit 30952, a BDOF unit 30954, and a weighted prediction unit 3094.

[0139] (motion compensation) The motion compensation unit 3091 (interpolated image generation unit 3091) generates an interpolated image (motion-compensated image) by reading a reference block from the reference picture memory 306 based on the inter-prediction parameters (predFlagLX, refIdxLX, mvLX) input from the inter-prediction parameter derivation unit 303. The reference block is a block located at a position shifted by mvLX from the position of the current block on the reference picture RefPicLX specified by refIdxLX. Here, if mvLX does not have integer precision, an interpolated image is generated by applying a filter called a motion compensation filter for generating pixels at decimal positions.

[0140] The motion compensation unit 3091 first derives the integer position (xInt, yInt) and phase (xFrac, yFrac) corresponding to the coordinates (x, y) in the prediction block using the following equations.

[0141] xInt = xPb+(mvLX[0]>>(log2(MVPREC)))+x xFrac = mvLX[0]&(MVPREC-1) yInt = yPb+(mvLX[1]>>(log2(MVPREC)))+y yFrac = mvLX[1]&(MVPREC-1) Here, (xPb, yPb) are the upper left coordinates of a bW*bH size block, x=0...bW-1, y=0...bH-1, and MVPREC indicates the accuracy of mvLX (1 / MVPREC pixel accuracy), e.g., MVPREC=16.

[0142] The motion compensation unit 3091 derives the temporary image temp[][] by performing horizontal interpolation on the reference picture refImg using an interpolation filter. In the following, Σ is the sum over k, where k=0..NTAP-1, shift1 is a normalization parameter that adjusts the value range, and offset1=1<<(shift1-1).

[0143] temp[x][y] = (ΣmcFilter[xFrac][k]*refImg[xInt+k-NTAP / 2+1][yInt]+offset1)>>shift1 Next, the motion compensation unit 3091 derives the interpolated image Pred[][] by vertically interpolating the temporary image temp[][]. In the following, Σ is the sum for k=0..NTAP-1, shift2 is a normalization parameter that adjusts the value range, and offset2=1<<(shift2-1).

[0144] Pred[x][y] = (ΣmcFilter[yFrac][k]*temp[x][y+k-NTAP / 2+1]+offset2)>>shift2 In the case of bi-prediction, the above Pred[][] is derived for each L0 list and L1 list (called interpolated images PredL0[][] and PredL1[][]), and the interpolated image Pred[][] is generated from PredL0[][] and PredL1[][].

[0145] The motion compensation unit 3091 has the function of scaling the interpolated image according to the horizontal scaling ratio RefPicScale[i][j][0] of the reference picture and the vertical scaling ratio RefPicScale[i][j][1] of the reference picture derived by the scale parameter derivation unit 30378.

[0146] The synthesis unit 3095 includes an IntraInter synthesis unit 30951, a GPM synthesis unit 30952, a weighted prediction unit 3094, and a BDOF unit 30954.

[0147] (interpolation filter processing) The following describes the interpolation filter processing performed by the predicted image generation unit 308 when the above-described resampling is applied and the size of the reference picture changes within a single sequence. Note that this processing may also be performed by the motion compensation unit 3091, for example.

[0148] When the value of RefPicIsScaled[i][j] input from the inter prediction parameter derivation unit 303 indicates that the reference picture is scaled, the predicted image generation unit 308 switches between multiple filter coefficients and performs interpolation filter processing.

[0149] (IntraInter synthesis processing) The IntraInter synthesis unit 30951 generates a predicted image by weighting the sum of the inter predicted image and the intra predicted image.

[0150] If the flag ciip_flag indicating whether to apply IntraInter synthesis processing is 1, the pixel value predSamplesComb[x][y] of the predicted image is derived as follows.

[0151] predSamplesComb[x][y] =(w * predSamplesIntra[x][y] +(4 - w)*predSamplesInter[x][y] + 2)>> 2 Here, predSamplesIntra[x][y] is an intra-predicted image, restricted to planar prediction, and predSamplesInter[x][y] is a reconstructed inter-predicted image.

[0152] The weight w is derived as follows:

[0153] If the bottommost left adjacent block and the rightmost upper adjacent block of the current coding block are both intra, w is set to 3.

[0154] Otherwise, if both the bottommost left-neighboring block and the rightmost upper-neighboring block of the current coding block are not intra, w is set to 1.

[0155] Otherwise, w is set to 2.

[0156] (GPM composite processing) The GPM synthesis unit 30952 generates a predicted image using the GPM prediction described above.

[0157] (BDOF prediction) Next, we will explain the details of BDOF prediction (Bi-Directional Optical Flow, BDOF processing) performed by the BDOF unit 30954. In bi-prediction mode, the BDOF unit 30954 generates a predicted image by referring to two predicted images (a first predicted image and a second predicted image) and a gradient correction term.

[0158] (Weight prediction) The weighted prediction unit 3094 generates a predicted image pbSamples of the block from the interpolated image predSamplesLX.

[0159] First, the variable weightedPredFlag, which indicates whether or not weighted prediction processing is performed, is derived as follows: if slice_type is equal to P, weightedPredFlag is set equal to pps_weighted_pred_flag defined in PPS. Otherwise, if slice_type is equal to B, weightedPredFlag is set equal to pps_weighted_bipred_flag && (!dmvrFlag) defined in PPS.

[0160] Hereinafter, bcw_idx is a weight index for bi-prediction with weights per CU. If bcw_idx is not notified, set bcw_idx = 0. In merge prediction mode, bcwIdx is set to the bcwIdxN of the neighboring block, and in AMVP prediction mode, it is set to the bcw_idx of the current block.

[0161] If the value of the variable weightedPredFlag is equal to 0 or the value of the variable bcwIdx is 0, the predicted image pbSamples is derived as follows, as normal predicted image processing.

[0162] When one of the prediction list usage flags (predFlagL0 or predFlagL1) is 1 (uni-prediction) (weighted prediction is not used), the following equation is processed to adjust predSamplesLX (LX is L0 or L1) to the pixel bit depth bitDepth.

[0163] pbSamples[x][y] = Clip3(0,(1<<bitDepth)-1,(predSamplesLX[x][y]+offset1)> >shift1) Here, shift1=14-bitDepth, offset1=1<<(shift1-1). PredLX is an interpolated image for L0 or L1 prediction.

[0164] Furthermore, when both prediction list usage flags (predFlagL0 and predFlagL1) are 1 (bi-prediction PRED_BI) and weighted prediction is not used, the following equation is processed to average predSamplesL0 and predSamplesL1 and adjust them to the pixel bit rate.

[0165] pbSamples[x][y] = Clip3(0,(1<<bitDepth)-1,(predSamplesL0[x][y]+predSamplesL1[x][y]+offset2)> >shift2) Here, shift2=15-bitDepth, offset2=1<<(shift2-1).

[0166] If the value of the variable weightedPredFlag is equal to 1 and the value of the variable bcwIdx is equal to 0, the predicted image pbSamples is derived as follows in weighted prediction processing.

[0167] The variable shift1 is set equal to Max(2, 14-bitDepth). The variables log2Wd, o0, o1, w0, and w1 are derived as follows:

[0168] If cIdx is 0 and is luminance, then the following applies:

[0169] log2Wd = luma_log2_weight_denom + shift1 w0 = LumaWeightL0[refIdxL0] w1 = LumaWeightL1[refIdxL1] o0 = luma_offset_l0[refIdxL0] <<(bitDepth - 8) o1 = luma_offset_l1[refIdxL1] <<(bitDepth - 8) Otherwise (cIdx is a chrominance not equal to 0), the following applies:

[0170] log2Wd = ChromaLog2WeightDenom + shift1 w0 = ChromaWeightL0[refIdxL0][cIdx - 1] w1 = ChromaWeightL1[refIdxL1][cIdx - 1] o0 = ChromaOffsetL0[refIdxL0][cIdx - 1] <<(bitDepth - 8) o1 = ChromaOffsetL1[refIdxL1][cIdx - 1] <<(bitDepth - 8) The pixel values ​​pbSamples[x][y] of the predicted image for x = 0..nCbW - 1 and y = 0..nCbH - 1 are derived as follows:

[0171] Next, if predFlagL0 is equal to 1 and predFlagL1 is equal to 0, the pixel values ​​pbSamples[x][y] of the predicted image are derived as follows:

[0172] if(log2Wd >= 1) pbSamples[x][y] = Clip3(0,(1 << bitDepth)- 1, ((predSamplesL0[x][y] * w0 + 2^(log2Wd - 1))>> log2Wd)+ o0) else pbSamples[x][y] = Clip3(0,(1< <bitDepth)-1, predSamplesL0[x][y]*w0 + o0) Otherwise, if predFlagL0 is 0 and predFlagL1 is 1, the pixel values ​​pbSamples[x][y] of the predicted image are derived as follows.

[0173] if(log2Wd >= 1) pbSamples[x][y] = Clip3(0,(1 << bitDepth)- 1, ((predSamplesL1[x][y] * w1 + 2^(log2Wd - 1))>> log2Wd)+ o1) else pbSamples[x][y] = Clip3(0,(1< <bitDepth)-1、predSamplesL1[x][y]*w1 + o1) Otherwise, if predFlagL0 is equal to 1 and predFlagL1 is equal to 1, the pixel values ​​pbSamples[x][y] of the predicted image are derived as follows:

[0174] pbSamples[x][y] = Clip3(0,(1 << bitDepth)- 1, (predSamplesL0[x][y] * w0 + predSamplesL1[x][y] * w1 + ((o0 + o1 + 1)<< log2Wd))>>(log2Wd + 1)) (BCW forecast) BCW (Bi-prediction with CU-level Weights) prediction is a prediction method that can switch weighting factors predetermined at the CU level. Two variables nCbW and nCbH that specify the width and height of the current coding block, two (nCbW) x (nCbH) arrays predSamplesL0 and predSamplesL1, flags predFlagL0 and predFlagL1 that indicate whether to use a prediction list, reference picture indexes refIdxL0 and refIdxL1, a BCW prediction index bcw_idx, and a variable cIdx that specifies the indexes of the luminance and chrominance components are input, BCW prediction processing is performed, and pixel values ​​of the predicted image in the (nCbW) x (nCbH) array pbSamples are output.

[0175] If sps_bcw_enabled_flag, which indicates whether or not this prediction is used at the SPS level, is TRUE, the variable weightedPredFlag is 0, neither of the reference pictures indicated by the two reference picture indexes refIdxL0 and refIdxL1 has a weighted prediction coefficient, and the coding block size is equal to or smaller than a certain value, the bcw_idx of the CU-level syntax is explicitly notified and its value is substituted into the variable bcwIdx. If bcw_idx does not exist, 0 is substituted into the variable bcwIdx.

[0176] When the variable bcwIdx is 0, the pixel values ​​of the predicted image are derived as follows.

[0177] pbSamples[x][y] = Clip3(0,(1 << bitDepth)- 1, (predSamplesL0[x][y] + predSamplesL1[x][y] + offset2)>> shift2) Otherwise (bcwIdx is not equal to 0), the following applies:

[0178] The variable w1 is set equal to bcwWLut[bcwIdx], where bcwWLut[k] = {4, 5, 3, 10, -2}.

[0179] The variable w0 is set to (8-w1). The pixel values ​​of the predicted image are derived as follows.

[0180] pbSamples[x][y] = Clip3(0, (1 << bitDepth)- 1, (w0 * predSamplesL0[x][y] + w1 * predSamplesL1[x][y] + offset3)>>(shift2 + 3)) When BCW prediction is used in AMVP prediction mode, the inter prediction parameter decoding unit 303 decodes bcw_idx and sends it to the BCW unit 30955. When BCW prediction is used in merge prediction mode, the inter prediction parameter decoding unit 303 decodes the merge index merge_idx, and the merge candidate derivation unit 30361 derives bcwIdx for each merge candidate. Specifically, the merge candidate derivation unit 30361 uses the weighting coefficients of the neighboring blocks used to derive the merge candidates as the weighting coefficients of the merge candidates to be used for the current block. In other words, in merge mode, the weighting coefficients used in the past are inherited as the weighting coefficients of the current block.

[0181] (Intra-predicted image generation unit 310) When predMode indicates an intra prediction mode, the intra prediction image generation unit 310 performs intra prediction using the intra prediction parameters input from the intra prediction parameter derivation unit 304 and reference pixels read from the reference picture memory 306 .

[0182] The inverse quantization and inverse transform unit 311 inverse quantizes the quantized transform coefficients input from the parameter decoding unit 302 to obtain transform coefficients.

[0183] The adder 312 generates a decoded image for the block by adding, for each pixel, the predicted image for the block input from the predicted image generation unit 308 and the prediction error input from the inverse quantization and inverse transform unit 311. The adder 312 stores the decoded image for the block in the reference picture memory 306 and also outputs it to the loop filter 305.

[0184] The inverse quantization and inverse transform unit 311 inverse quantizes the quantized transform coefficients input from the parameter decoding unit 302 to obtain transform coefficients.

[0185] The adder 312 generates a decoded image for the block by adding, for each pixel, the predicted image for the block input from the predicted image generation unit 308 and the prediction error input from the inverse quantization and inverse transform unit 311. The adder 312 stores the decoded image for the block in the reference picture memory 306 and also outputs it to the loop filter 305.

[0186] (Configuration of a video encoding device) Next, the configuration of the video encoding device 11 according to this embodiment will be described. Fig. 12 is a block diagram showing the configuration of the video encoding device 11 according to this embodiment. The video encoding device 11 includes a prediction image generation unit 101, a subtraction unit 102, a transformation and quantization unit 103, an inverse quantization and inverse transformation unit 105, an addition unit 106, a loop filter 107, a prediction parameter memory (prediction parameter storage unit, frame memory) 108, a reference picture memory (reference image storage unit, frame memory) 109, a coding parameter determination unit 110, a parameter coding unit 111, a prediction parameter derivation unit 120, and an entropy coding unit 104.

[0187] The predicted image generation unit 101 generates a predicted image for each CU. The predicted image generation unit 101 includes the inter predicted image generation unit 309 and the intra predicted image generation unit 310, which have already been described, and therefore further description thereof will be omitted.

[0188] The subtraction unit 102 generates a prediction error by subtracting pixel values ​​of the predicted image of the block input from the predicted image generation unit 101 from pixel values ​​of the image T. The subtraction unit 102 outputs the prediction error to the transformation and quantization unit 103.

[0189] The transform / quantization unit 103 calculates transform coefficients by frequency transforming the prediction errors input from the subtraction unit 102, and derives quantized transform coefficients by quantizing them. The transform / quantization unit 103 outputs the quantized transform coefficients to the parameter coding unit 111 and the inverse quantization / inverse transform unit 105.

[0190] The inverse quantization and inverse transform unit 105 is the same as the inverse quantization and inverse transform unit 311 (FIG. 6) in the video decoding device 31, and a description thereof will be omitted. The calculated prediction error is output to the adder .

[0191] The parameter coding unit 111 includes a header coding unit 1110, a CT information coding unit 1111, and a CU coding unit 1112 (prediction mode coding unit). The CU coding unit 1112 further includes a TU coding unit 1114. The following describes an outline of the operation of each module.

[0192] The header encoding unit 1110 performs encoding processing of parameters such as header information, division information, prediction information, and quantized transform coefficients.

[0193] The CT information encoding unit 1111 encodes QT, MT (BT, TT) division information and the like.

[0194] The CU encoding unit 1112 encodes CU information, prediction information, division information, and the like.

[0195] When a prediction error is included in a TU, the TU encoding unit 1114 encodes the QP update information and the quantized prediction error.

[0196] The CT information encoding unit 1111 and the CU encoding unit 1112 supply syntax elements such as inter-prediction parameters (predMode, merge_flag, merge_idx, inter_pred_idc, refIdxLX, mvp_LX_idx, mvdLX), intra-prediction parameters (intra_luma_mpm_flag, intra_luma_mpm_idx, intra_luma_mpm_reminder, intra_chroma_pred_mode), and quantized transform coefficients to the parameter encoding unit 111.

[0197] The entropy coding unit 104 receives the quantized transform coefficients and coding parameters (division information, prediction parameters) from the parameter coding unit 111. The entropy coding unit 104 entropy codes these to generate and output a coded stream Te.

[0198] The prediction parameter derivation unit 120 is a means including an inter-prediction parameter coding unit 112 and an intra-prediction parameter coding unit 113, and derives intra-prediction parameters and intra-prediction parameters from the parameters input from the coding parameter determination unit 110. The derived intra-prediction parameters and intra-prediction parameters are output to the parameter coding unit 111.

[0199] (Configuration of Inter-Prediction Parameter Encoding Unit) 13, the inter prediction parameter coding unit 112 includes a parameter coding control unit 1121 and an inter prediction parameter derivation unit 303. The inter prediction parameter derivation unit 303 has the same configuration as the video decoding device. The parameter coding control unit 1121 includes a merge index derivation unit 11211 and a vector candidate index derivation unit 11212.

[0200] The merge index derivation unit 11211 derives merge candidates and the like, and outputs them to the inter prediction parameter derivation unit 303. The vector candidate index derivation unit 11212 derives predicted vector candidates and the like, and outputs them to the inter prediction parameter derivation unit 303 and the parameter coding unit 111.

[0201] (Configuration of the intra-prediction parameter encoding unit 113) 14, the intra prediction parameter encoding unit 113 includes a parameter encoding control unit 1131 and an intra prediction parameter derivation unit 304. The intra prediction parameter derivation unit 304 has the same configuration as the video decoding device.

[0202] The parameter coding control unit 1131 derives IntraPredModeY and IntraPredModeC. Furthermore, it determines intra_luma_mpm_flag by referring to mpmCandList[ ]. These prediction parameters are output to the intra prediction parameter derivation unit 304 and the parameter coding unit 111.

[0203] However, unlike the video decoding device, the inputs to the inter prediction parameter derivation unit 303 and the intra prediction parameter derivation unit 304 are the coding parameter determination unit 110 and the prediction parameter memory 108 , and they are output to the parameter coding unit 111 .

[0204] The adder 106 generates a decoded image by adding, for each pixel, the pixel values ​​of the predicted block input from the predicted image generation unit 101 and the prediction errors input from the inverse quantization and inverse transform unit 105. The adder 106 stores the generated decoded image in a reference picture memory 109.

[0205] The loop filter 107 performs deblocking filtering, SAO, and ALF on the decoded image generated by the adder 106. Note that the loop filter 107 does not necessarily have to include the above three types of filters, and may be configured with only a deblocking filter, for example.

[0206] The prediction parameter memory 108 stores the prediction parameters generated by the coding parameter determination unit 110 in a predetermined location for each current picture and CU.

[0207] The reference picture memory 109 stores the decoded image generated by the loop filter 107 at a predetermined location for each current picture and CU.

[0208] The coding parameter determination unit 110 selects one set of coding parameters from among a plurality of sets of coding parameters. The coding parameters are the above-mentioned QT, BT, or TT division information, prediction parameters, or parameters to be coded that are generated in relation to these. The predicted image generation unit 101 generates a predicted image using these coding parameters.

[0209] The coding parameter determination unit 110 calculates an RD cost value indicating the magnitude of the information amount and the coding error for each of the multiple sets. The RD cost value is, for example, the sum of the code amount and the value obtained by multiplying the squared error by a coefficient λ. The code amount is the information amount of the coded stream Te obtained by entropy coding the quantization error and the coding parameters. The squared error is the sum of the squares of the prediction errors calculated by the subtraction unit 102. The coefficient λ is a preset real number greater than zero. The coding parameter determination unit 110 selects the set of coding parameters that minimizes the calculated cost value. The coding parameter determination unit 110 outputs the determined coding parameters to the parameter coding unit 111 and the prediction parameter derivation unit 120.

[0210] Note that parts of the video encoding device 11 and the video decoding device 31 in the above-described embodiments, such as the entropy decoding unit 301, the parameter decoding unit 302, the loop filter 305, the predicted image generating unit 308, the inverse quantization and inverse transform unit 311, the adder 312, the prediction parameter derivation unit 320, the predicted image generating unit 101, the subtractor 102, the transform and quantization unit 103, the entropy encoding unit 104, the inverse quantization and inverse transform unit 105, the loop filter 107, the encoding parameter determining unit 110, the parameter encoding unit 111, and the prediction parameter derivation unit 120, may be implemented by a computer. In this case, a program for implementing these control functions may be recorded on a computer-readable recording medium, and the program may be read into and executed by a computer system. Note that the term "computer system" used here refers to a computer system built into either the video encoding device 11 or the video decoding device 31, and includes hardware such as an OS and peripheral devices. Furthermore, "computer-readable recording media" refers to portable media such as flexible disks, optical magnetic disks, ROMs, and CD-ROMs, as well as storage devices such as hard disks built into computer systems. Furthermore, "computer-readable recording media" may also include devices that dynamically store programs for a short period of time, such as communication lines used when transmitting programs over networks like the Internet or communication lines like telephone lines, or devices that store programs for a fixed period of time, such as volatile memory within computer systems that serve as servers or clients in such cases. Furthermore, the programs may be programs that realize some of the aforementioned functions, or may be programs that can realize the aforementioned functions in combination with programs already stored in the computer system.

[0211] Furthermore, part or all of the video encoding device 11 and video decoding device 31 in the above-described embodiments may be realized as an integrated circuit such as an LSI (Large Scale Integration). Each functional block of the video encoding device 11 and video decoding device 31 may be individually implemented as a processor, or part or all of them may be integrated into a processor. Furthermore, the integrated circuit implementation method is not limited to LSI, and may be implemented using a dedicated circuit or a general-purpose processor. Furthermore, if an integrated circuit implementation technology that can replace LSI emerges due to advances in semiconductor technology, an integrated circuit based on that technology may be used.

[0212] One embodiment of the present invention has been described in detail above with reference to the drawings, but the specific configuration is not limited to that described above, and various design changes and the like are possible within the scope that does not deviate from the gist of the present invention.

[0213] (Syntax) FIG. 15(a) shows a part of the syntax of the Sequence Parameter Set (SPS) of Non-Patent Document 1.

[0214] sps_weighted_pred_flag is a flag indicating whether weighted prediction may be applied to a P slice that references an SPS. When sps_weighted_pred_flag is equal to 0, this indicates that weighted prediction is applied to a P slice that references an SPS. When sps_weighted_pred_flag is equal to 0, this indicates that weighted prediction is not applied to a P slice that references an SPS.

[0215] sps_weighted_bipred_flag is a flag indicating whether weighted prediction may be applied to a B slice that references an SPS. When sps_weighted_bipred_flag is equal to 0, it indicates that weighted prediction is applied to a B slice that references an SPS. When sps_weighted_bipred_flag is equal to 0, it indicates that weighted prediction is not applied to a B slice that references an SPS.

[0216] The long_term_ref_pics_flag is a flag indicating whether long-term pictures are used or not.

[0217] inter_layer_ref_pics_present_flag is a flag indicating whether inter-layer prediction is used or not.

[0218] sps_idr_rpl_present_flag is a flag indicating whether or not a reference picture list is defined in the slice header of an IDR picture (Instantaneous Decoding Refresh picture).

[0219] If rpl1_same_as_rpl0_flag is 1, it indicates that there is no information for reference picture list 1 and that it is the same as num_ref_pic_lists_in_sps[0] and ref_pic_list_struct(0,rplsIdx).

[0220] FIG. 15(b) shows a part of the syntax of the Picture Parameter Set (PPS) in Non-Patent Document 1.

[0221] num_ref_idx_default_active_minus1[i]+1, when i is 0, indicates the value of the variable NumRefIdxActive[0] for a P or B slice when num_ref_idx_active_override_flag is 0. When i is 1, it indicates the value of the variable NumRefIdxActive[1] for a B slice when num_ref_idx_active_override_flag is equal to 0. The value of num_ref_idx_default_active_minus1[i] must be in the range of 0 to 14, inclusive.

[0222] pps_weighted_pred_flag is a flag indicating whether weighted prediction is applied to a P slice that references a PPS. When pps_weighted_pred_flag is equal to 0, this indicates that weighted prediction is not applied to a P slice that references a PPS. When pps_weighted_pred_flag is equal to 1, this indicates that weighted prediction is applied to a P slice that references a PPS. When sps_weighted_pred_flag is equal to 0, the weighted prediction unit 3094 sets the value of pps_weighted_pred_flag to 0. When pps_weighted_pred_flag does not exist, the value is set to 0.

[0223] pps_weighted_bipred_flag is a flag indicating whether weighted prediction is applied to a B slice that references a PPS. When pps_weighted_bipred_flag is equal to 0, this indicates that weighted prediction is not applied to a B slice that references a PPS. When pps_weighted_bipred_flag is equal to 1, this indicates that weighted prediction is applied to a B slice that references a PPS. When sps_weighted_bipred_flag is equal to 0, the weighted prediction unit 3094 sets the value of pps_weighted_bipred_flag to 0. When pps_weighted_bipred_flag does not exist, the value is set to 0.

[0224] rpl_info_in_ph_flag is a flag indicating whether reference picture list information is present in the picture header. When rpl_info_in_ph_flag is equal to 1, it indicates that reference picture list information is present in the picture header. When rpl_info_in_ph_flag is equal to 0, it indicates that reference picture list information is not present in the picture header, and that a slice header may be present.

[0225] wp_info_in_ph_flag is present when pps_weighted_pred_flag is equal to 1, pps_weighted_bipred_flag is equal to 1, or rpl_info_in_ph_flag is equal to 1. When wp_info_in_ph_flag is equal to 1, it indicates that the weighted prediction information pred_weight_table is present in the picture header but not in the slice header. When wp_info_in_ph_flag is equal to 0, it indicates that the weighted prediction information pred_weight_table is not present in the picture header but may be present in the slice header. If wp_info_in_ph_flag is not present, the value of wp_info_in_ph_flag shall be equal to 0.

[0226] FIG. 16 shows a part of the syntax of the picture header PH in Non-Patent Document 1.

[0227] If ph_inter_slice_allowed_flag is 0, it indicates that the slice_type of all slices in the picture is 2 (I Slice). If ph_inter_slice_allowed_flag is 1, it indicates that the slice_type of at least one slice contained in the picture is 0 (B Slice) or 1 (P Slice).

[0228] If rpl_info_in_ph_flag is 1, a reference picture list is selected by calling ref_pic_lists(), which defines a reference picture list.

[0229] ph_temporal_mvp_enabled_flag is a flag that indicates whether temporal motion vector prediction is used for inter prediction of the slice associated with the PH. If ph_temporal_mvp_enabled_flag is 0, temporal motion vector prediction cannot be used for the slice associated with the PH. Otherwise (if ph_temporal_mvp_enabled_flag is equal to 1), temporal motion vector prediction can be used for the slice associated with the PH. If not present, the value of ph_temporal_mvp_enabled_flag is inferred to be equal to 0. If the reference pictures in the DPB do not have the same spatial resolution as the current picture, the value of ph_temporal_mvp_enabled_flag is 0. If ph_collocated_from_l0_flag is 1, it indicates that the reference pictures used for temporal motion vector prediction are specified using reference picture list 0. If ph_collocated_from_l0_flag is 0, it indicates that the reference pictures used for temporal motion vector prediction are specified using reference picture list 1. ph_collocated_ref_idx indicates the index value of the reference picture used for temporal motion vector prediction. If ph_collocated_from_l0_flag is 1, ph_collocated_ref_idx refers to reference picture list 0, and the value of ph_collocated_ref_idx must be in the range from 0 to num_ref_entries[0][RplsIdx[0]]-1. If ph_collocated_from_l0_flag is 0, ph_collocated_ref_idx refers to reference picture list 1, and the value of ph_collocated_ref_idx must be in the range from 0 to num_ref_entries[1][RplsIdx[1]]-1. If not present, the value of ph_collocated_ref_idx is inferred to be equal to 0.

[0230] If ph_inter_slice_allowed_flag is not 0, and pps_weighted_pred_flag is equal to 1, or pps_weighted_bipred_flag is equal to 1, or wp_info_in_ph_flag is equal to 1, then the weighted prediction information pred_weight_table exists.

[0231] 17(a) shows part of the syntax of the slice header in Non-Patent Document 1. This syntax is decoded by the parameter decoding unit 302, for example.

[0232] If num_ref_idx_active_override_flag is 1, it indicates that the syntax element num_ref_idx_active_minus1[0] is present in P and B slices and that the syntax element num_ref_idx_active_minus1[1] is present in B slices. If num_ref_idx_active_override_flag is 0, it indicates that the syntax element num_ref_idx_active_minus1[0] is not present in P and B slices. If not present, the value of num_ref_idx_active_override_flag is inferred to be equal to 1.

[0233] num_ref_idx_active_minus1[i] is used to derive the number of reference pictures actually used in reference picture list i. The variable NumRefIdxActive[i], which is the number of reference pictures actually used, is derived using the method shown in Figure 17(b). The value of num_ref_idx_active_minus1[i] must be between 0 and 14. If the slice is a B slice, num_ref_idx_active_override_flag is 1, and num_ref_idx_active_minus1[i] is not present, num_ref_idx_active_minus1[i] is inferred to be equal to 0.

[0234] If the value of ph_temporal_mvp_enabled_flag is 1 and rpl_info_in_ph_flag is not 1, information about temporal motion vector prediction is present in the slice header. In this case, slice_collocated_from_l0_flag is specified if the slice_type of the slice is equal to B. rpl_info_in_ph_flag is a flag indicating that information about the reference picture list is present in the picture header.

[0235] slice_collocated_from_l0_flag, when set to 1, indicates that the reference picture used for temporal motion vector prediction is derived from reference picture list 0. slice_collocated_from_l0_flag, when set to 0, indicates that the reference picture used for temporal motion vector prediction is derived from reference picture list 1. When slice_type is equal to B or P, ph_temporal_mvp_enabled_flag is equal to 1, and slice_collocated_from_l0_flag is not present, the following applies: If rpl_info_in_ph_flag is not 1, slice_collocated_from_l0_flag is inferred to be equal to ph_collocated_from_l0_flag. Otherwise (rpl_info_in_ph_flag is 0 and slice_type is equal to P), the value of slice_collocated_from_l0_flag is inferred to be equal to 1.

[0236] slice_collocated_ref_idx indicates an index specifying a reference picture used for temporal motion vector prediction. If slice_type is P or slice_type is B and slice_collocated_from_l0_flag is 1, slice_collocated_ref_idx refers to reference picture list 0, and the value of slice_collocated_ref_idx must be greater than or equal to 0 and less than or equal to NumRefIdxActive[0]-1. If slice_type is B and slice_collocated_from_l0_flag is 0, slice_collocated_ref_idx refers to reference picture list 1, and the value of slice_collocated_ref_idx must be greater than or equal to 0 and less than or equal to NumRefIdxActive[1]-1. If slice_collocated_ref_idx is not present, the following applies: If rpl_info_in_ph_flag is 1, the value of slice_collocated_ref_idx is inferred to be equal to ph_collocated_ref_idx. Otherwise (if rpl_info_in_ph_flag is equal to 0), the value of slice_collocated_ref_idx is inferred to be equal to 0. Also, the reference picture indicated by slice_collocated_ref_idx must be the same for all slices in the picture. The values ​​of pic_width_in_luma_samples and pic_height_in_luma_samples of the reference picture indicated by slice_collocated_ref_idx must be equal to the values ​​of pic_width_in_luma_samples and pic_height_in_luma_samples of the current picture, and RprConstraintsActive[slice_collocated_from_l0_flag? 0:1][slice_collocated_ref_idx] must be equal to 0.

[0237] If wp_info_in_ph_flag is not 1, and pps_weighted_pred_flag is equal to 1 and slice_type is 1 (P Slice), or if pps_weighted_bipred_flag is equal to 1 and slice_type is 0 (B Slice), pred_weight_table is called.

[0238] 17(b) shows a method for deriving the variable NumRefIdxActive[i] of Non-Patent Document 1 by the prediction parameter derivation unit 320. For reference picture list i (=0, 1), in the case of a B slice or a P slice and reference picture list 0, if num_ref_idx_active_override_flag is equal to 1, the value obtained by adding 1 to the value of num_ref_idx_active_minus1[i] is substituted for the variable NumRefIdxActive[i]. Otherwise (in the case of a B slice or a P slice with reference picture list 0 and num_ref_idx_active_override_flag equal to 0), if the value of num_ref_entries[i][RplsIdx[i]] is equal to or greater than the value obtained by adding 1 to num_ref_idx_default_active_minus1[i], the variable NumRefIdxActive[i] is assigned the value obtained by adding 1 to num_ref_idx_default_active_minus1[i]; otherwise, the variable NumRefIdxActive[i] is assigned the value of num_ref_entries[i][RplsIdx[i]]. num_ref_idx_default_active_minus1[i] is the value of the default variable NumRefIdxActive[i] defined in the PPS. In the case of an I slice or a P slice with reference picture list 1, the variable NumRefIdxActive[i] is assigned the value of 0.

[0239] FIG. 18 shows the syntax of the weight prediction information pred_weight_table in Non-Patent Document 1.

[0240] where num_l0_weights indicates the number of weights signaled for entries in reference picture list 0 when wp_info_in_ph_flag is equal to 1. The value of num_l0_weights is in the range from 0 to min(15,num_ref_entries[0][RplsIdx[0]]) inclusive. If wp_info_in_ph_flag is equal to 1, the variable NumWeightsL0 is set equal to num_l0_weights. Otherwise (wp_info_in_ph_flag is equal to 0), NumWeightsL0 is set to NumRefIdxActive[0]. Here, num_ref_entries[i][RplsIdx[i]] indicates the number of reference pictures in reference picture list i. The variable RplsIdx[i] is an index value indicating whether multiple lists exist for reference picture list i.

[0241] num_l1_weights specifies the number of weights signaled for entries in reference picture list 1 when both pps_weighted_bipred_flag and wp_info_in_ph_flag are equal to 1. The value of num_l1_weights shall be in the range from 0 to min(15,num_ref_entries[1][RplsIdx[1]]) inclusive.

[0242] If pps_weighted_bipred_flag is 0, the variable NumWeightsL1 is set to 0; otherwise, if wp_info_in_ph_flag is 1, the value of num_l1_weights is assigned to the variable NumWeightsL1; otherwise, NumRefIdxActive[1] is assigned to the variable NumWeightsL1.

[0243] luma_log2_weight_denom is the logarithm to the base 2 of the denominator of all luminance weight coefficients. The value of luma_log2_weight_denom must be within the range from 0 to 7. delta_chroma_log2_weight_denom is the difference of the logarithms to the base 2 of the denominators of all chrominance weight coefficients. If delta_chroma_log2_weight_denom does not exist, it is assumed to be equal to 0. The variable ChromaLog2WeightDenom is derived to be equal to luma_log2_weight_denom + delta_chroma_log2_weight_denom, and the value must be within the range from 0 to 7.

[0244] If luma_weight_l0_flag[i] is 1, it indicates that there exists a weight coefficient for the luminance component of L0 prediction. If luma_weight_l0_flag[i] is 0, it indicates that there does not exist a weight coefficient for the luminance component of L0 prediction. If luma_weight_l0_flag[i] does not exist, the weight prediction unit 3094 assumes it to be equal to 0. If chroma_weight_l0_flag[i] is 1, it indicates that there exists a weight coefficient for the chrominance prediction value of L0 prediction. If chroma_weight_l0_flag[i] is 0, it indicates that there does not exist a weight coefficient for the chrominance prediction value of L0 prediction. If chroma_weight_l0_flag[i] does not exist, the weight prediction unit 3094 assumes it to be equal to 0.

[0245] delta_luma_weight_l0[i] is the difference of the weight coefficients applied to the luminance prediction value of L0 prediction using RefPicList[0][i]. The variable LumaWeightL0[i] is derived to be equal to (1 << luma_log2_weight_denom) + delta_luma_weight_l0[i]. If luma_weight_l0_flag[i] is equal to 1, the value of delta_luma_weight_l0[i] must be within the range from -128 to 127. When luma_weight_l0_flag[i] is equal to 0, the weight prediction unit 3094 assumes that LumaWeightL0[i] is equal to the power value of 2 to the luma_log2_weight_denom (2^luma_log2_weight_denom).

[0246] luma_offset_l0[i] is an offset value applied to the luminance prediction value of the L0 prediction using RefPicList[0][i]. The value of luma_offset_l0[i] must be within the range from -128 to 127. When luma_weight_l0_flag[i] is equal to 0, the weight prediction unit 3094 assumes that luma_offset_l0[i] is equal to 0.

[0247] delta_chroma_weight_l0[i][j] is the difference in weight coefficients applied to the chrominance prediction value of the L0 prediction using RefPicList0[i] with j = 0 for Cb and j = 1 for Cr. The variable ChromaWeightL0[i][j] is derived to be equal to (1<<ChromaLog2WeightDenom)+delta_chroma_weight_l0[i][j]. When chroma_weight_l0_flag[i] is equal to 1, the value of delta_chroma_weight_l0[i][j] must be within the range from -128 to 127. When chroma_weight_l0_flag[i] is 0, the weight prediction unit 3094 assumes that ChromaWeightL0[i][j] is equal to the power value of 2 to the ChromaLog2WeightDenom (2^ChromaLog2WeightDenom). delta_chroma_offset_l0[i][j] is the difference in offset values applied to the chrominance prediction value of the L0 prediction using RefPicList0[i] with j = 0 for Cb and j = 1 for Cr. The variable ChromaOffsetL0[i][j] is derived as follows.

[0248] ChromaOffsetL0[i][j] = Clip3(-128,127, (128 + delta_chroma_offset_l0[i][j] - ((128 * ChromaWeightL0[i][j])>> ChromaLog2WeightDenom))) The value of delta_chroma_offset_l0[i][j] must be in the range of −4*128 to 4*127. If chroma_weight_l0_flag[i] is equal to 0, the weight predictor 3094 infers that ChromaOffsetL0[i][j] is equal to 0.

[0249] Note that luma_weight_l1_flag[i], chroma_weight_l1_flag[i], delta_luma_weight_l1[i], luma_offset_l1[i], delta_chroma_weight_l1[i][j], and delta_chroma_offset_l1[i][j] are interpreted by replacing them with luma_weight_l0_flag[i], chroma_weight_l0_flag[i], delta_luma_weight_l0[i], luma_offset_l0[i], delta_chroma_weight_l0[i][j], and delta_chroma_offset_l0[i][j], respectively, and l0, L0, list0, and List0 are interpreted by replacing them with l1, l1, list1, and List1, respectively.

[0250] Figure 19(a) shows the syntax of ref_pic_lists(), which defines a reference picture list in Non-Patent Document 1. ref_pic_lists() may exist in a picture header or a slice header. rpl_sps_flag[i] equals 1, indicating that the reference picture list i in ref_pic_lists() is derived based on one of the ref_pic_list_struct(listIdx, rplsIdx) in the SPS. Here, listIdx is equal to i (= 0, 1), and rplsIdx = rpl_idx[i].

[0251] If rpl_sps_flag[i] is 0, it indicates that reference picture list i is derived based on ref_pic_list_struct(listIdx, rplsIdx), where listIdx is equal to i directly in ref_pic_lists(). If rpl_sps_flag[i] is not present, the following applies: If num_ref_pic_lists_in_sps[i] is 0, the value of rpl_sps_flag[i] is inferred to be 0. If num_ref_pic_lists_in_sps[i] is greater than 0, if rpl1_idx_present_flag is 0 and i is equal to 1, the value of rpl_sps_flag[1] is inferred to be equal to rpl_sps_flag[0].

[0252] If rpl_sps_flag[i] is 1, decode rpl_idx[i]. rpl_idx[i] is used to derive RplsIdx[i] (described later), which indicates the index rplsIdx of ref_pic_list_struct(listIdx, rplsIdx). ref_pic_list_struct(listIdx, rplsIdx) is used to derive reference picture i. Here, listIdx is equal to i. If it does not exist, the value of rpl_idx[i] is assumed to be equal to 0. The value of rpl_idx[i] is in the range from 0 to num_ref_pic_lists_in_sps[i]-1. If rpl_sps_flag[i] is 1 and num_ref_pic_lists_in_sps[i] is 1, the value of rpl_idx[i] is inferred to be equal to 0. If rpl_sps_flag[i] is 1 and rpl1_idx_present_flag is 0, the value of rpl_idx[1] is inferred to be equal to rpl_idx[0]. The variable RplsIdx[i] is derived as follows:

[0253] RplsIdx[i]=(rpl_sps_flag[i])? rpl_idx[i]:num_ref_pic_lists_in_sps[i] FIG. 19(b) shows the syntax that defines the reference picture list structure ref_pic_list_struct(listIdx, rplsIdx) of Non-Patent Document 1.

[0254] ref_pic_list_struct(listIdx, rplsIdx) may exist in an SPS, picture header, or slice header. Depending on whether the syntax is included in an SPS, picture header, or slice header, the following applies: If it exists in a picture or slice header, ref_pic_list_struct(listIdx, rplsIdx) indicates the reference picture list listIdx of the current picture (the picture containing the slice). If it exists in an SPS, ref_pic_list_struct(listIdx, rplsIdx) indicates candidates for the reference picture list listIdx. The current picture can then be referenced by an index value from the picture header or slice header to the list of ref_pic_list_struct(listIdx, rplsIdx) included in the SPS.

[0255] Here, num_ref_entries[listIdx][rplsIdx] indicates the number of ref_pic_list_struct(listIdx, rplsIdx). The value of num_ref_entries[listIdx][rplsIdx] is equal to or greater than 0 and equal to or less than MaxDpbSize+13. MaxDpbSize is the number of decoded pictures determined by the profile level.

[0256] ltrp_in_header_flag[listIdx][rplsIdx] is a flag indicating whether or not a long-term reference picture exists in ref_pic_list_struct(listIdx, rplsIdx).

[0257] inter_layer_ref_pic_flag[listIdx][rplsIdx][i] is a flag indicating whether the i-th reference picture in the reference picture list of ref_pic_list_struct(listIdx, rplsIdx) is inter-layer predicted or not.

[0258] st_ref_pic_flag[listIdx][rplsIdx][i] is a flag indicating whether the i-th picture in the reference picture list of ref_pic_list_struct(listIdx, rplsIdx) is a short-term reference picture.

[0259] abs_delta_poc_st[listIdx][rplsIdx][i] is a syntax element for deriving the absolute difference value of the POC of a short-term reference picture.

[0260] strp_entry_sign_flag[listIdx][rplsIdx][i] is a flag for deriving a positive or negative sign.

[0261] rpls_poc_lsb_lt[listIdx][rplsIdx][i] is a syntax element for deriving the POC of the i-th long-term reference picture in the reference picture list of ref_pic_list_struct(listIdx, rplsIdx).

[0262] ilrp_idx[listIdx][rplsIdx][i] is a syntax element for deriving layer information of the i-th inter-layer prediction reference picture in the reference picture list of ref_pic_list_struct(listIdx, rplsIdx).

[0263] A problem with the method described in Non-Patent Document 1 is that, as shown in FIG. 19(b), the value of num_ref_entries[listIdx][rplsIdx] in the reference picture list structure ref_pic_list_struct(listIdx, rplsIdx) can be specified as 0. 0 indicates that the number of reference pictures in the reference picture list listIdx of the pic_list_struct indicated by rplsIdx is 0. num_ref_entries can be specified regardless of slice_type. In the case of reference picture list 0 for a P slice or a B slice, the number of reference pictures in the reference picture list is assumed to be at least 1. If 0 is specified, there is no picture to refer to, and the reference picture becomes undefined.

[0264] Therefore, in this embodiment, as shown in Fig. 20, the syntax element to be notified is not num_ref_entries[listIdx][rplsIdx] but num_ref_entries_minus1[listIdx][rplsIdx], where num_ref_entries_minus1[listIdx][rplsIdx] takes a value between 0 and MaxDpbSize+14. In this way, the number of reference pictures can be arbitrarily prohibited to be 0, so that the reference pictures do not become indeterminate.

[0265] Another problem with the method described in Non-Patent Document 1 is that the pred_weight_table in FIG. 18 explicitly describes the number of weights for reference picture list 0 and reference picture list 1 by describing num_l0_weights and num_l1_weights as syntax elements. When pred_weight_table is called in a picture header, the number of reference pictures in reference picture list i is already defined by ref_pic_list_struct(listIdx, rplsIdx), making this syntax element redundant. When pred_weight_table is called in a slice header, the number of reference pictures in reference picture list i is already defined by NumRefIdxActive[i], making this syntax element redundant. Therefore, in this embodiment, as shown in FIG. 21(a), before pred_weight_table is called in the picture header, the value of num_ref_entries_minus1[0][RplsIdx[0]]+1 is substituted into the variable NumWeightsL0. If pps_weighted_bipred_flag is 1, the value of num_ref_entries_minus1[1][RplsIdx[1]]+1 is substituted into the variable NumWeightsL1, and 0 is substituted into the variable NumWeightsL1 otherwise. This is because if pps_weighted_bipred_flag is 0, weighted prediction for bidirectional prediction does not exist. Furthermore, as shown in FIG. 21(b), before pred_weight_table is called in the slice header, the value of the variable NumWeightsL0 is substituted into the variable NumRefIdxActive[0], and the value of the variable NumRefIdxActive[1] is substituted into the variable NumWeightsL1. Incidentally, the value of the variable NumRefIdxActive[1] for a P slice is 0. As shown in FIG. 22 , pred_weight_table does not explicitly describe num_l0_weights and num_l1_weights as syntax, but rather sets the variable NumWeightsL0 to the number of weights for reference picture list 0 and the variable NumWeightsL1 to that for reference picture list 1, thereby eliminating redundancy.

[0266] 23 shows an example of another embodiment of the present invention. In this example, variables NumWeightsL0 and NumWeightsL1 are defined in pred_wight_table. If wp_info_in_ph_flag is equal to 1, the value of num_ref_entries[0][PicRplsIdx[0]] is substituted for variable NumWeightsL0; otherwise, the value of variable NumRefIdxActive[0] is substituted for variable NumWeightsL0. wp_info_in_ph_flag is a flag indicating that weighted prediction information is present in the picture header.

[0267] Also, if wp_info_in_ph_flag is equal to 1 and pps_weighted_bipred_flag is equal to 1, the value of num_ref_entries[1][PicRplsIdx[1]] is substituted into the variable NumWeightsL1. pps_weighted_bipred_flag is a flag indicating that bidirectional weighted prediction is to be performed. If wp_info_in_ph_flag is equal to 1 and pps_weighted_bipred_flag is 0, 0 is substituted into the variable NumWeightsL1. If wp_info_in_ph_flag is equal to 0, the value of the variable NumRefIdxActive[1] is substituted into NumWeightsL1. By doing this, redundancy can be eliminated by not explicitly writing num_l0_weights and num_l1_weights in the syntax, but instead setting the variable NumWeightsL0 to the number of weights for reference picture list 0 and the variable NumWeightsL1 to the number of weights for reference picture list 1.

[0268] Another problem with the method described in Non-Patent Document 1 is that the number of active reference pictures is defined in the slice header but not in the picture header.

[0269] Therefore, in another embodiment of the present invention, the number of active reference pictures can also be defined in the picture header, as shown in Figure 24(a). The following syntax is decoded by, for example, the parameter decoding unit 302. When ph_inter_slice_allowed_flag is equal to 1 and rpl_info_in_ph_flag is equal to 1, the number of active reference pictures is defined. When ph_inter_slice_allowed_flag is equal to 1, it indicates that a P slice or a B slice may exist in the picture. When rpl_info_in_ph_flag is equal to 1, it indicates that reference picture list information exists in the picture header.

[0270] ph_num_ref_idx_active_override_flag is a flag indicating whether ph_num_ref_idx_active_minus1[0] and ph_num_ref_idx_active_minus1[1] exist.

[0271] ph_num_ref_idx_active_minus1[i] is a syntax element used to derive the variable NumRefIdxActive[i] for reference picture list i, and is a value between 0 and 14 inclusive.

[0272] ph_collocated_ref_idx indicates the index of the reference picture used for temporal motion vector prediction. If ph_collocated_from_l0_flag is 1, ph_collocated_ref_idx refers to reference picture list 0, and the value of ph_collocated_ref_idx is between 0 and NumRefIdxActive[0] - 1, inclusive. If ph_collocated_from_l0_flag is 0, ph_collocated_ref_idx refers to an entry in reference picture list 1, and the value of ph_collocated_ref_idx is between 0 and NumRefIdxActive[1] - 1, inclusive. If not present, the value of ph_collocated_ref_idx is inferred to be equal to 0.

[0273] 24(b) shows a method for deriving the variable NumRefIdxActive[i] by the prediction parameter derivation unit 320. When ph_num_ref_idx_active_override_flag is 1 for reference picture list i (=0, 1), if num_ref_entries_minus1[i][RplsIdx[i]] is greater than 0, the variable NumRefIdxActive[i] is assigned the value obtained by adding 1 to the value of ph_num_ref_idx_active_minus1[i]. Otherwise, 1 is assigned. On the other hand, if ph_num_ref_idx_active_override_flag is not 1, and the value of num_ref_entries_minus1[i][RplsIdx[i]] is greater than 0, the variable NumRefIdxActive[i] is assigned the value obtained by adding 1 to the value of ph_num_ref_idx_active_minus1[i]. If the value is greater than or equal to num_ref_idx_default_active_minus1[i] plus 1, assign the variable NumRefIdxActive[i] with the value num_ref_idx_default_active_minus1[i] plus 1. Otherwise, assign the variable NumRefIdxActive[i] with the value num_ref_entries_minus1[i][RplsIdx[i]] plus 1. num_ref_idx_default_active_minus1[i] is the value of the default variable NumRefIdxActive[i] defined in PPS.

[0274] 25(a) shows the syntax of a slice header. The following syntax is decoded, for example, by the parameter decoding unit 302. The slice header defines the number of active reference pictures if rpl_info_in_ph_flag, which indicates that reference picture list information is present in the picture header, is not 1 and if the slice is a P slice or a B slice.

[0275] 25(b) shows a method for deriving the variable NumRefIdxActive[i] by the prediction parameter derivation unit 320. When rpl_info_in_ph_flag is not 1 for reference picture list i (=0, 1) and when i is 0 for a B slice or a P slice, the variable NumRefIdxActive[i] is rewritten. When num_ref_idx_active_override_flag is 1, if num_ref_entries_minus1[i][RplsIdx[i]] is greater than 0, the value obtained by adding 1 to the value of num_ref_idx_active_minus1[i] is substituted for the variable NumRefIdxActive[i]; otherwise, 1 is substituted for the variable NumRefIdxActive[i]. If num_ref_idx_active_override_flag is not 1, and the value of num_ref_entries_minus1[i][RplsIdx[i]] is equal to or greater than the value obtained by adding 1 to num_ref_idx_default_active_minus1[i], the variable NumRefIdxActive[i] is assigned the value obtained by adding 1 to num_ref_idx_default_active_minus1[i]; otherwise, the variable NumRefIdxActive[i] is assigned the value obtained by adding 1 to num_ref_entries_minus1[i][RplsIdx[i]]. When i is 1 for an I slice or a P slice, the variable NumRefIdxActive[i] is assigned the value 0 regardless of the value of rpl_info_in_ph_flag. rpl_info_in_ph_flag is a flag indicating that reference picture list information is present in the picture header. num_ref_idx_default_active_minus1[i] is the value of the default variable NumRefIdxActive[i] defined in the PPS.

[0276] As shown in Figure 26, pred_weight_table does not explicitly describe num_l0_weights and num_l1_weights as syntax, but rather sets the variable NumRefIdxActive[0] to the number of weights for reference picture list 0 and the variable NumRefIdxActive[1] to the number of weights for reference picture list 1, thereby eliminating redundancy.

[0277] As described above, the problem with the method described in Non-Patent Document 1 is that the value of num_ref_entries[listIdx][rplsIdx] in the reference picture list structure ref_pic_list_struct(listIdx, rplsIdx) can be specified as 0. On the other hand, the number of reference pictures present in the reference picture list 0 of a P slice or the reference picture list of a B slice is assumed to be at least 1. Therefore, when 0 is specified, there is no picture to refer to, and the reference picture becomes undefined.

[0278] Therefore, first, the following restrictions are imposed on the value of num_ref_entries, which indicates the number of reference pictures in a reference picture list, according to nal_unit_type, which indicates the type of NAL (Network Abstraction Layer) unit, and slice_type.

[0279] If nal_unit_type is IDR_W_RADL or IDR_N_LP (i.e., an IDR picture), num_ref_entries[i][RplsIdx[i]] must be 0 when i is both 0 and 1. i is the index listIdx indicating the reference picture list. Note that the nal_unit_type for an IDR picture can be IDR_W_RADL or IDR_N_LP. IDR_W_RADL indicates that there is a possibility that a RADL (Random Access Decodable Leading) picture will be output before the IDR picture, while IDR_N_LP indicates that this is not the case.

[0280] If slice_type is P or B, num_ref_entries[0][RplsIdx[0]] must be greater than 0.

[0281] If slice_type is B, num_ref_entries[1][RplsIdx[1]] must be greater than 0.

[0282] In this embodiment, the picture header syntax shown in (a) of Figure 27 is taken as an example. The following syntax is decoded by the parameter decoding unit 302, for example.

[0283] If rpl_info_in_ph_flag is 1, the picture header calls ref_pic_lists() to select the reference picture list, as shown in the figure.

[0284] However, for an IDR picture, num_ref_entries[i][RplsIdx[i]] must select the reference picture list with value 0 for both i=0 and i=1.

[0285] Furthermore, if a P slice or a B slice exists in the picture, a reference picture list with a value greater than 0 must be selected as num_ref_entries[0][RplsIdx[0]].

[0286] Furthermore, if a B slice exists in the picture, a reference picture list with a value greater than 0 must be selected as num_ref_entries[1][RplsIdx[1]].

[0287] Then, the variable NumRefIdxActive[i] is derived using the number of active reference pictures. ph_num_ref_idx_active_override_flag is a flag indicating whether ph_num_ref_idx_active_minus1[0] and ph_num_ref_idx_active_minus1[1] exist. If ph_num_ref_idx_active_override_flag is 1, ph_num_ref_idx_active_minus1[0] and ph_num_ref_idx_active_minus1[1] exist, and if ph_num_ref_idx_active_override_flag is 0, ph_num_ref_idx_active_minus1[0] and ph_num_ref_idx_active_minus1[1] do not exist. If ph_num_ref_idx_active_override_flag does not exist, its value is estimated to be 0.

[0288] ph_num_ref_idx_active_minus1[i], i=0,1 is a syntax element used to derive the variable NumRefIdxActive[i] for reference picture list i, and is a value between 0 and 14.

[0289] Also, ph_num_ref_idx_active_minus1[i]+1 must be less than or equal to num_ref_entries[i][RplsIdx[i]].

[0290] The value is explicitly reported if num_ref_entries[i][RplsIdx[i]] is greater than 1. If ph_num_ref_idx_active_minus1[i] is not present, the value is inferred to be 0.

[0291] 27(b) shows a method for deriving the variable NumRefIdxActive[i] by the prediction parameter derivation unit 320. When ph_num_ref_idx_active_override_flag is 1 for reference picture list i (=0, 1), the value of ph_num_ref_idx_active_minus1[i] plus 1 is substituted for the variable NumRefIdxActive[i]. On the other hand, when ph_num_ref_idx_active_override_flag is not 1, if the value of num_ref_entries[i][RplsIdx[i]] is equal to or greater than the value of num_ref_idx_default_active_minus1[i] plus 1, the value of num_ref_idx_default_active_minus1[i] plus 1 is substituted for the variable NumRefIdxActive[i]. Otherwise, num_ref_entries[i][RplsIdx[i]] is assigned to the variable NumRefIdxActive[i]. num_ref_idx_default_active_minus1[i] is the value of the default variable NumRefIdxActive[i] defined in the PPS.

[0292] 28(a) shows the syntax of a slice header. The following syntax is decoded by the parameter decoding unit 302, for example.

[0293] In the slice header, if rpl_info_in_ph_flag is not 1 and nal_unit_type is neither IDR_W_RADL nor IDR_N_LP or sps_idr_rpl_present_flag is 1, ref_pic_lists() is called to select a reference picture list.

[0294] However, in the case of an IDR picture, num_ref_entries[i][RplsIdx[i]] must select a reference picture list with a value of 0 when i is both 0 and 1.

[0295] Also, in the case of a P slice or a B slice, a reference picture list with a value greater than 0 must be selected as num_ref_entries[0][RplsIdx[0]].

[0296] Also, for a B slice, a reference picture list with a value greater than 0 must be selected for num_ref_entries[1][RplsIdx[1]].

[0297] Then, the variable NumRefIdxActive[i] is derived using the number of active reference pictures. If slice_type is not I and num_ref_entries[0][RplsIdx[0]] is greater than 1, or slice_type is B and num_ref_entries[1][RplsIdx[1]] is greater than 1, num_ref_idx_active_override_flag exists. If num_ref_idx_active_override_flag is 1, num_ref_idx_active_minus1[0] and num_ref_idx_active_minus1[1] exist. If num_ref_idx_active_override_flag is 0, num_ref_idx_active_minus1[0] and num_ref_idx_active_minus1[1] do not exist. If num_ref_idx_active_override_flag does not exist, its value is assumed to be 0.

[0298] num_ref_idx_active_minus1[i] is a syntax element used to derive the variable NumRefIdxActive[i] for reference picture list i, and is a value between 0 and 14 inclusive.

[0299] Also, num_ref_idx_active_minus1[i]+1 must be less than or equal to num_ref_entries[i][RplsIdx[i]].

[0300] If slice_type is B, there is a syntax element num_ref_idx_active_minus1[i] for i=0 and 1, and if slice_type is other than B (if slice_type is P), there is only a syntax element num_ref_idx_active_minus1[0].

[0301] An explicit value is provided if num_ref_entries[i][RplsIdx[i]] is greater than 1. If num_ref_idx_active_minus1[i] is not present, the value is inferred to be 0.

[0302] FIG. 28(b) shows how the prediction parameter derivation unit 320 derives the variable NumRefIdxActive[i].

[0303] If rpl_info_in_ph_flag is not 1 and the slice is a B slice or a P slice with i=0, the following processing is performed. If num_ref_idx_active_override_flag is 1, the variable NumRefIdxActive[i] is assigned the value of num_ref_idx_active_minus1[i] plus 1. If num_ref_idx_active_override_flag is not 1, and the value of num_ref_entries[i][RplsIdx[i]] is greater than or equal to the value of num_ref_idx_default_active_minus1[i] plus 1, the variable NumRefIdxActive[i] is assigned the value of num_ref_idx_default_active_minus1[i] plus 1. Otherwise, the variable NumRefIdxActive[i] is assigned the value of num_ref_entries[i][RplsIdx[i]].

[0304] Otherwise, for an I slice or a P slice with i=1, the variable NumRefIdxActive[i] is set to 0 regardless of the value of rpl_info_in_ph_flag. rpl_info_in_ph_flag is a flag indicating that reference picture list information is present in the picture header. num_ref_idx_default_active_minus1[i] is the value of the default variable NumRefIdxActive[i] defined in the PPS.

[0305] [Application example] The above-described video encoding device 11 and video decoding device 31 can be mounted on various devices that transmit, receive, record, and play back video. The video may be a natural video captured by a camera or the like, or an artificial video (including CG and GUI) generated by a computer or the like.

[0306] First, it will be explained with reference to FIG. 2 that the above-described video encoding device 11 and video decoding device 31 can be used for transmitting and receiving video.

[0307] 2 is a block diagram showing the configuration of a transmitting device PROD_A equipped with a video encoding device 11. As shown in the figure, the transmitting device PROD_A includes an encoding unit PROD_A1 that encodes video to obtain encoded data, a modulation unit PROD_A2 that modulates a carrier wave with the encoded data obtained by the encoding unit PROD_A1 to obtain a modulated signal, and a transmitting unit PROD_A3 that transmits the modulated signal obtained by the modulation unit PROD_A2. The above-described video encoding device 11 is used as this encoding unit PROD_A1.

[0308] The transmitting device PROD_A may further include, as a source of moving images to be input to the encoding unit PROD_A1, a camera PROD_A4 that captures moving images, a recording medium PROD_A5 on which moving images are recorded, an input terminal PROD_A6 for inputting moving images from the outside, and an image processing unit A7 that generates or processes images. In the figure, the transmitting device PROD_A is shown as having all of these components, but some of them may be omitted.

[0309] The recording medium PROD_A5 may record unencoded video, or may record video encoded using a recording encoding method that is different from the transmission encoding method. In the latter case, a decoding unit (not shown) that decodes the encoded data read from the recording medium PROD_A5 according to the recording encoding method may be interposed between the recording medium PROD_A5 and the encoding unit PROD_A1.

[0310] 2 is a block diagram showing the configuration of a receiving device PROD_B equipped with a video decoding device 31. As shown in the figure, the receiving device PROD_B includes a receiving unit PROD_B1 that receives a modulated signal, a demodulating unit PROD_B2 that obtains coded data by demodulating the modulated signal received by the receiving unit PROD_B1, and a decoding unit PROD_B3 that obtains video by decoding the coded data obtained by the demodulating unit PROD_B2. The above-mentioned video decoding device 31 is used as this decoding unit PROD_B3.

[0311] The receiving device PROD_B may further include, as destinations of the moving images output by the decoding unit PROD_B3, a display PROD_B4 for displaying the moving images, a recording medium PROD_B5 for recording the moving images, and an output terminal PROD_B6 for outputting the moving images to the outside. In the figure, the receiving device PROD_B is shown as having all of these components, but some of them may be omitted.

[0312] The recording medium PROD_B5 may be for recording unencoded video, or may be encoded using an encoding method for recording that is different from the encoding method for transmission. In the latter case, it is preferable to interpose an encoding unit (not shown) between the decoding unit PROD_B3 and the recording medium PROD_B5, which encodes the video acquired from the decoding unit PROD_B3 according to the encoding method for recording.

[0313] The transmission medium for transmitting the modulated signal may be wireless or wired. The transmission mode for transmitting the modulated signal may be broadcast (here, this refers to a transmission mode in which the destination is not specified in advance) or communication (here, this refers to a transmission mode in which the destination is specified in advance). In other words, the transmission of the modulated signal may be realized by any of wireless broadcasting, wired broadcasting, wireless communication, and wired communication.

[0314] For example, a broadcasting station (such as a broadcasting facility) / receiving station (such as a television receiver) for terrestrial digital broadcasting is an example of a transmitting device PROD_A / receiving device PROD_B that transmits and receives modulated signals via wireless broadcasting. Also, a broadcasting station (such as a broadcasting facility) / receiving station (such as a television receiver) for cable television broadcasting is an example of a transmitting device PROD_A / receiving device PROD_B that transmits and receives modulated signals via cable broadcasting.

[0315] Furthermore, a server (such as a workstation) / client (such as a television receiver, personal computer, or smartphone) of an Internet-based VOD (Video On Demand) service or video sharing service is an example of a transmitter PROD_A / receiver PROD_B that transmits and receives modulated signals via communication (usually, a LAN uses either a wireless or wired transmission medium, while a WAN uses a wired transmission medium). Here, personal computers include desktop PCs, laptop PCs, and tablet PCs. Smartphones also include multi-function mobile phone terminals.

[0316] The client of the video hosting service has the function of decoding the encoded data downloaded from the server and displaying it on a display, as well as the function of encoding the video images captured by a camera and uploading them to the server. In other words, the client of the video hosting service functions as both the transmitting device PROD_A and the receiving device PROD_B.

[0317] Next, it will be explained with reference to FIG. 3 that the above-described video encoding device 11 and video decoding device 31 can be used for recording and reproducing video.

[0318] PROD_C in Fig. 3 is a block diagram showing the configuration of a recording device PROD_C equipped with the above-mentioned video encoding device 11. As shown in the figure, the recording device PROD_C includes an encoding unit PROD_C1 that obtains encoded data by encoding video, and a writing unit PROD_C2 that writes the encoded data obtained by the encoding unit PROD_C1 onto a recording medium PROD_M. The above-mentioned video encoding device 11 is used as this encoding unit PROD_C1.

[0319] The recording medium PROD_M may be (1) a type that is built into the recording device PROD_C, such as an HDD (Hard Disk Drive) or SSD (Solid State Drive), (2) a type that is connected to the recording device PROD_C, such as an SD memory card or USB (Universal Serial Bus) flash memory, or (3) a type that is loaded into a drive device (not shown) built into the recording device PROD_C, such as a DVD (Digital Versatile Disc: registered trademark) or BD (Blu-ray Disc: registered trademark).

[0320] The recording device PROD_C may further include a camera PROD_C3 that captures moving images, an input terminal PROD_C4 for inputting moving images from an external device, a receiving unit PROD_C5 for receiving moving images, and an image processing unit PROD_C6 that generates or processes images, as sources of moving images to be input to the encoding unit PROD_C1. Although the figure illustrates a configuration in which the recording device PROD_C includes all of these components, some of them may be omitted.

[0321] The receiving unit PROD_C5 may receive unencoded video, or may receive encoded data encoded by a transmission encoding method different from the recording encoding method. In the latter case, a transmission decoding unit (not shown) that decodes the encoded data encoded by the transmission encoding method may be interposed between the receiving unit PROD_C5 and the encoding unit PROD_C1.

[0322] Examples of such a recording device PROD_C include a DVD recorder, a BD recorder, and an HDD (Hard Disk Drive) recorder (in this case, the input terminal PROD_C4 or the receiving unit PROD_C5 is the main source of moving images).Other examples of such a recording device PROD_C include a camcorder (in this case, the camera PROD_C3 is the main source of moving images), a personal computer (in this case, the receiving unit PROD_C5 or the image processing unit C6 is the main source of moving images), and a smartphone (in this case, the camera PROD_C3 or the receiving unit PROD_C5 is the main source of moving images).

[0323] 3PROD_D is a block diagram showing the configuration of a playback device PROD_D equipped with the above-mentioned video decoding device 31. As shown in the figure, the playback device PROD_D includes a reading unit PROD_D1 that reads coded data written to a recording medium PROD_M, and a decoding unit PROD_D2 that obtains video by decoding the coded data read by the reading unit PROD_D1. The above-mentioned video decoding device 31 is used as this decoding unit PROD_D2.

[0324] The recording medium PROD_M may be (1) a type that is built into the playback device PROD_D, such as an HDD or SSD, (2) a type that is connected to the playback device PROD_D, such as an SD memory card or USB flash memory, or (3) a type that is loaded into a drive device (not shown) built into the playback device PROD_D, such as a DVD or BD.

[0325] The playback device PROD_D may further include, as destinations of the video output by the decoding unit PROD_D2, a display PROD_D3 that displays the video, an output terminal PROD_D4 that outputs the video to the outside, and a transmission unit PROD_D5 that transmits the video. Although the figure shows an example of a configuration in which the playback device PROD_D includes all of these, some of them may be omitted.

[0326] The transmitting unit PROD_D5 may transmit unencoded video, or may transmit encoded data encoded by a transmission encoding method different from the recording encoding method. In the latter case, it is preferable to interpose an encoding unit (not shown) between the decoding unit PROD_D2 and the transmitting unit PROD_D5, which encodes the video by the transmission encoding method.

[0327] Examples of such a playback device PROD_D include a DVD player, a BD player, and an HDD player (in this case, the output terminal PROD_D4 to which a television receiver or the like is connected is the main destination of the moving images). Other examples of such a playback device PROD_D include a television receiver (in this case, the display PROD_D3 is the main destination of the moving images), a digital signage (also called an electronic billboard or electronic bulletin board, and the display PROD_D3 or the transmitter PROD_D5 is the main destination of the moving images), a desktop PC (in this case, the output terminal PROD_D4 or the transmitter PROD_D5 is the main destination of the moving images), a laptop or tablet PC (in this case, the display PROD_D3 or the transmitter PROD_D5 is the main destination of the moving images), and a smartphone (in this case, the display PROD_D3 or the transmitter PROD_D5 is the main destination of the moving images).

[0328] (hardware and software implementations) Furthermore, each block of the above-mentioned video decoding device 31 and video encoding device 11 may be realized in hardware by a logic circuit formed on an integrated circuit (IC chip), or may be realized in software using a CPU (Central Processing Unit).

[0329] In the latter case, each of the above devices includes a CPU that executes instructions of a program that realizes each function, a ROM (Read Only Memory) that stores the program, a RAM (Random Access Memory) that expands the program, and a storage device (recording medium) such as a memory that stores the program and various data.The object of the embodiment of the present invention can also be achieved by supplying each of the above devices with a recording medium on which program code (executable program, intermediate code program, source program) of a control program for each of the above devices, which is software that realizes the above-mentioned functions, is recorded in a computer-readable manner, and having the computer (or CPU or MPU) read and execute the program code recorded on the recording medium.

[0330] Examples of the recording medium that can be used include tapes such as magnetic tape and cassette tape, magnetic disks such as floppy disks (registered trademark) and hard disks, disks including optical disks such as CD-ROMs (Compact Disc Read-Only Memory), MO disks (Magneto-Optical discs), MDs (Mini Discs), DVDs (Digital Versatile Discs: registered trademark), CD-Rs (CD Recordable), and Blu-ray Discs (registered trademark), cards such as IC cards (including memory cards) and optical cards, semiconductor memories such as mask ROMs, EPROMs (Erasable Programmable Read-Only Memory), EEPROMs (Electrically Erasable and Programmable Read-Only Memory: registered trademark), and flash ROMs, and logic circuits such as PLDs (Programmable logic devices) and FPGAs (Field Programmable Gate Arrays).

[0331] Furthermore, each of the above devices may be configured to be connectable to a communications network, and the program code may be supplied via the communications network. This communications network may be any network capable of transmitting the program code. For example, the Internet, an intranet, an extranet, a local area network (LAN), an integrated services digital network (ISDN), a value-added network (VAN), a community antenna television / cable television (CATV) communications network, a virtual private network, a telephone line network, a mobile communications network, a satellite communications network, etc. Furthermore, the transmission media constituting this communications network may be any medium capable of transmitting the program code, and are not limited to any particular configuration or type. For example, the communication method can be used in wired communication such as IEEE (Institute of Electrical and Electronic Engineers) 1394, USB, power line carrier, cable TV line, telephone line, or ADSL (Asymmetric Digital Subscriber Line) line, or in wireless communication such as IrDA (Infrared Data Association), infrared communication such as that of a remote control, Bluetooth (registered trademark), IEEE 802.11 wireless, HDR (High Data Rate), NFC (Near Field Communication), DLNA (Digital Living Network Alliance: registered trademark), mobile phone network, satellite line, or terrestrial digital broadcasting network. Note that the embodiment of the present invention can also be realized in the form of a computer data signal embedded in a carrier wave in which the program code is embodied by electronic transmission.

[0332] The present invention is not limited to the above-described embodiments, and various modifications are possible within the scope of the claims. In other words, embodiments obtained by combining technical means modified appropriately within the scope of the claims are also included in the technical scope of the present invention. [Industrial Applicability]

[0333] The embodiments of the present invention can be suitably applied to a video decoding device that decodes coded data obtained by coding image data, and a video coding device that generates coded data obtained by coding image data, and can also be suitably applied to the data structure of coded data generated by a video coding device and referenced by the video decoding device. [Explanation of symbols]

[0334] 31 Image decoding device 301 Entropy Decoding Unit 302 Parameter Decoding Unit 303 Inter-prediction parameter derivation unit 304 Intra prediction parameter derivation unit 305, 107 Loop filter 306, 109 Reference Picture Memory 307, 108 Prediction parameter memory 308, 101 Prediction image generation unit 309 Inter-prediction image generation unit 310 Intra-prediction image generation unit 311, 105 Inverse quantization and inverse transform unit 312, 106 Addition section 320 Prediction parameter derivation part 11 Image encoding device 102 Subtraction section 103 Transformation and Quantization Unit 104 Entropy coding unit 110 Encoding parameter determination unit 111 Parameter Encoding Unit 112 Inter-prediction parameter coding unit 113 Intra prediction parameter coding unit 120 Prediction parameter derivation part

Claims

1. 1. A video decoding device for decoding encoded data, a parameter decoding unit for decoding an index of the reference picture list structure when a value of a flag indicating whether the reference picture list i is derived based on one of the reference picture list structures is 1; a prediction parameter derivation unit that determines whether a syntax element that specifies a NAL unit type indicates an IDR picture; the reference picture list structure is defined by a list index variable and a reference picture list index variable; If the value of the flag is 1, the reference picture list index variable is set equal to the value of the reference picture list structure index; If the value of the flag is 0, the reference picture list index variable is set to be equal to the number of reference picture list structures in an SPS; A video decoding device characterized in that, when the syntax element indicates an IDR picture, the value of a syntax element that specifies the number of entries in the reference picture list structure, and that is defined by a variable i and an index variable of the reference picture list, is set to 0.

2. 2. The video decoding device according to claim 1, wherein the value of the syntax element is 0 whether the variable i is 0 or 1.

3. 1. A video encoding device for generating encoded data, comprising: a parameter coding unit for coding an index of the reference picture list structure when a value of a flag indicating whether the reference picture list i is derived based on one of the reference picture list structures is 1; a prediction parameter derivation unit that determines whether a syntax element that specifies a NAL unit type indicates an IDR picture; the reference picture list structure is defined by a list index variable and a reference picture list index variable; If the value of the flag is 1, the reference picture list index variable is set equal to the value of the reference picture list structure index; If the value of the flag is 0, the reference picture list index variable is set to be equal to the number of reference picture list structures in an SPS; A video encoding device characterized in that, when the syntax element indicates an IDR picture, the value of a syntax element that specifies the number of entries in the reference picture list structure, and that is defined by a variable i and an index variable of the reference picture list, is set to 0.