RU2787812C2 - Method and equipment for video image prediction - Google Patents
Method and equipment for video image prediction Download PDFInfo
- Publication number
- RU2787812C2 RU2787812C2 RU2021114686A RU2021114686A RU2787812C2 RU 2787812 C2 RU2787812 C2 RU 2787812C2 RU 2021114686 A RU2021114686 A RU 2021114686A RU 2021114686 A RU2021114686 A RU 2021114686A RU 2787812 C2 RU2787812 C2 RU 2787812C2
- Authority
- RU
- Russia
- Prior art keywords
- block
- pointer
- value
- motion vector
- list
- Prior art date
Links
- 229940040608 SPS Drugs 0.000 claims abstract 6
- 230000002123 temporal effect Effects 0.000 claims description 59
- 230000000875 corresponding Effects 0.000 abstract description 56
- 230000000694 effects Effects 0.000 abstract 1
- 239000000126 substance Substances 0.000 abstract 1
- 238000004891 communication Methods 0.000 description 45
- 238000000034 method Methods 0.000 description 36
- 238000003860 storage Methods 0.000 description 34
- 238000010586 diagram Methods 0.000 description 28
- 238000006243 chemical reaction Methods 0.000 description 15
- 230000005540 biological transmission Effects 0.000 description 12
- 238000007906 compression Methods 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 10
- 230000003287 optical Effects 0.000 description 8
- 230000003044 adaptive Effects 0.000 description 7
- 238000000638 solvent extraction Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 5
- 238000001914 filtration Methods 0.000 description 5
- 101700002690 CLIP3 Proteins 0.000 description 4
- 241000023320 Luma <angiosperm> Species 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 229920000069 poly(p-phenylene sulfide) Polymers 0.000 description 4
- 238000005070 sampling Methods 0.000 description 4
- 230000001702 transmitter Effects 0.000 description 4
- 210000004915 Pus Anatomy 0.000 description 3
- 241001442055 Vipera berus Species 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 229920002635 polyurethane Polymers 0.000 description 3
- 238000000926 separation method Methods 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 230000003068 static Effects 0.000 description 3
- 235000010627 Phaseolus vulgaris Nutrition 0.000 description 2
- 240000005158 Phaseolus vulgaris Species 0.000 description 2
- 230000003190 augmentative Effects 0.000 description 2
- 230000000295 complement Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 239000003365 glass fiber Substances 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000000051 modifying Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000001360 synchronised Effects 0.000 description 2
- 230000002457 bidirectional Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 230000001809 detectable Effects 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000009987 spinning Methods 0.000 description 1
- 230000001131 transforming Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
Abstract
Description
[0001] Настоящая заявка испрашивает приоритет на основании патентной заявки Китая №. 201811268188.2, поданной в Национальное управление интеллектуальной собственности Китая 29 октября 2018 г. и озаглавленная «INTER PREDICTION METHOD AND APPARATUS», которая полностью включена в настоящий документ посредством ссылки. Настоящая заявка испрашивает приоритет на основании патентной заявки Китая №. 201811642717.0, поданной в Патентное ведомство Китая 29 декабря 2018 г. и озаглавленной «VIDEO PICTURE PREDICTION METHOD AND APPARATUS», которая полностью включена в настоящий документ посредством ссылки.[0001] The present application claims priority based on Chinese Patent Application No. 201811268188.2 filed with the National Intellectual Property Administration of China on October 29, 2018 and entitled "INTER PREDICTION METHOD AND APPARATUS", which is hereby incorporated by reference in its entirety. The present application claims priority based on Chinese Patent Application No. 201811642717.0, filed with the China Patent Office on December 29, 2018, entitled "VIDEO PICTURE PREDICTION METHOD AND APPARATUS", which is hereby incorporated by reference in its entirety.
Область техникиTechnical field
[0002] Эта заявка относится к области технологий кодирования изображений и, в частности, к способу и устройству предсказания видеоизображений.[0002] This application relates to the field of image coding technologies and, in particular, to a method and apparatus for predicting video images.
Уровень техникиState of the art
[0003] С развитием информационных технологий видеоуслуги, такие как телевидение высокой четкости, веб-конференции, IPTV и 3D-телевидение, быстро развиваются. Благодаря таким преимуществам как интуитивность и высокая эффективность, видеосигналы становятся основным методом получения информации в повседневной жизни людей. Видеосигналы содержат большой объем данных и, следовательно, занимают большую часть полосы пропускания передачи и места для хранения. Для эффективной передачи и хранения видеосигналов необходимо выполнять кодирование со сжатием для видеосигналов. Технология сжатия видео постепенно стала незаменимой ключевой технологией в области применения видео.[0003] With the development of information technology, video services such as high-definition television, web conferencing, IPTV, and 3D television are developing rapidly. Due to the advantages of intuitiveness and high efficiency, video signals are becoming the main method of obtaining information in people's daily lives. Video signals contain a large amount of data and therefore take up most of the transmission bandwidth and storage space. For efficient transmission and storage of video signals, it is necessary to perform compression encoding on the video signals. Video compression technology has gradually become an indispensable key technology in the video application field.
[0004] Основным принципом сжатия кодирования видео является максимальное уменьшение избыточности за счет использования корреляций между пространственной областью, временной областью и кодовым словом. В настоящее время распространенным методом является реализация сжатия кодирования видео с использованием структуры гибридного кодирования видео на основе блоков изображений и путем выполнения таких этапов, как предсказание (включая внутреннее предсказание и внешнее предсказание), преобразование, квантование и энтропийное кодирование.[0004] The main principle of video coding compression is to reduce redundancy as much as possible by using correlations between the spatial domain, the time domain, and the codeword. At present, a common technique is to implement video coding compression using a picture block-based hybrid video coding structure and by performing steps such as prediction (including intra prediction and inter prediction), transformation, quantization, and entropy coding.
[0005] В различных решениях кодирования/декодирования видео оценка движения/компенсация движения при внешнем предсказании является ключевой технологией, которая влияет на производительность кодирования/декодирования. В существующем внешнем предсказании предсказание вектора движения со слиянием на основе субблоков добавляется на основе предсказания компенсации движения (motion compensation, MC) на основе блоков, в котором используется модель прямолинейного движения. В существующей технологии нет приемлемого метода определения максимальной длины списка кандидатных векторов движения, соответствующего режиму слияния субблоков.[0005] In various video encoding/decoding solutions, inter-prediction motion estimation/motion compensation is a key technology that affects encoding/decoding performance. In the existing inter-prediction, sub-block-based merging motion vector prediction is added based on a block-based motion compensation (MC) prediction in which a rectilinear motion model is used. In the existing technology, there is no acceptable method for determining the maximum length of the list of candidate motion vectors corresponding to the subblock merge mode.
Сущность изобретенияThe essence of the invention
[0006] Эта заявка предоставляет способ и аппаратуру предсказания видеоизображений, чтобы обеспечить метод определения максимальной длины списка кандидатных векторов движения в режиме слияния субблоков.[0006] This application provides a video prediction method and apparatus to provide a method for determining the maximum length of a list of candidate motion vectors in a subblock merge mode.
[0007] Согласно первому аспекту вариант осуществления этой заявки предоставляет способ предсказания видеоизображений, в том числе:[0007] According to a first aspect, an embodiment of this application provides a method for predicting video images, including:
синтаксический анализ первого указателя (например, sps_affine_enable_flag) из битового потока; когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит аффинный режим, синтаксический анализ второго указателя (например, five_minus_max_num_subblock_merge_cand или six_minus_max_num_subblock_merge_cand) из битового потока, причем второй указатель используется для указания максимальной длины первого списка кандидатных векторов движения, а первый список кандидатных векторов движения является списком кандидатных векторов движения, созданным для блока, который должен быть обработан, режим предсказания слияния субблоков используется для блока, который должен быть обработан; и определение максимальной длины первого списка кандидатных векторов движения на основе второго указателя.parsing the first pointer (eg, sps_affine_enable_flag) from the bitstream; when the first pointer indicates that the candidate mode used for inter-prediction of the block to be processed contains affine mode, parsing the second pointer (e.g., five_minus_max_num_subblock_merge_cand or six_minus_max_num_subblock_merge_cand) from the bitstream, with the second pointer used to indicate the maximum length of the first candidate list motion vectors, and the first motion vector candidate list is a motion vector candidate list created for a block to be processed, the sub-block merge prediction mode is used for the block to be processed; and determining a maximum length of the first list of candidate motion vectors based on the second pointer.
[0008] Вышеупомянутый способ обеспечивает метод определения максимальной длины списка кандидатных векторов движения в режиме слияния субблоков. Это просто и легко реализовать.[0008] The above method provides a method for determining the maximum length of a list of candidate motion vectors in a subblock merge mode. It's simple and easy to implement.
[0009] В возможном исполнении перед определением максимальной длины первого списка кандидатных векторов движения на основе второго указателя способ дополнительно содержит: синтаксический анализ третьего указателя (например, sps_sbtmvp_enabled_flag) из битового потока, где третий указатель используется для указания состояния присутствия режима расширенного временного предсказания вектора движения в режиме предсказания слияния субблоков.[0009] In a possible implementation, before determining the maximum length of the first list of candidate motion vectors based on the second pointer, the method further comprises: parsing a third pointer (eg, sps_sbtmvp_enabled_flag) from the bitstream, where the third pointer is used to indicate the presence state of the extended temporal motion vector prediction mode in subblock merge prediction mode.
[0010] В возможном исполнении режим предсказания слияния субблоков содержит по меньшей мере один из режима планарного предсказания вектора движения, режима расширенного временного предсказания вектора движения или аффинного режима; и когда третий указатель указывает, что режим расширенного временного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, определение максимальной длины первого списка кандидатных векторов движения на основе второго указателя содержит: определение первого числа на основе третьего указателя и определение максимальной длины первого списка кандидатных векторов движения на основе второго указателя и первого числа.[0010] In an exemplary embodiment, the subblock merge prediction mode comprises at least one of planar motion vector prediction mode, extended temporal motion vector prediction mode, or affine mode; and when the third pointer indicates that the extended temporal motion vector prediction mode is not present in the subblock merge prediction mode, determining the maximum length of the first candidate motion vector list based on the second pointer comprises: determining the first number based on the third pointer and determining the maximum length of the first candidate vector list movements based on the second pointer and the first number.
[0011] Например, когда sps_sbtmvp_enabled_flag=0, это указывает, что режим расширенного временного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков. Например, первое число равно количеству векторов движения, которые поддерживаются при предсказании, выполняемом с использованием режима расширенного временного предсказания вектора движения. Когда sps_sbtmvp_enabled_flag=0, первое число равно количеству векторов движения, которые поддерживаются при предсказании, выполняемом с использованием режима расширенного временного предсказания вектора движения.[0011] For example, when sps_sbtmvp_enabled_flag=0, this indicates that the extended temporal motion vector prediction mode is not present in the subblock merge prediction mode. For example, the first number is equal to the number of motion vectors that are supported in prediction performed using the extended temporal motion vector prediction mode. When sps_sbtmvp_enabled_flag=0, the first number is equal to the number of motion vectors that are supported in prediction performed using the extended temporal motion vector prediction mode.
[0012] В возможном исполнении перед определением максимальной длины первого списка кандидатных векторов движения на основе второго указателя способ дополнительно содержит: синтаксический анализ четвертого указателя (например, sps_planar_enabled_flag) из битового потока, где четвертый указатель используется для указания состояния присутствия режима планарного предсказания вектора движения в режиме предсказания слияния субблоков.[0012] In an exemplary embodiment, before determining the maximum length of the first list of candidate motion vectors based on the second pointer, the method further comprises: parsing a fourth pointer (e.g., sps_planar_enabled_flag) from the bitstream, where the fourth pointer is used to indicate the presence state of the planar motion vector prediction mode in subblock merge prediction mode.
[0013] В возможном исполнении, когда третий указатель указывает, что режим расширенного временного предсказания вектора движения присутствует в режиме предсказания слияния субблоков, а четвертый указатель указывает, что режим планарного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, определение максимальной длины первого списка кандидатных векторов движения на основе второго указателя содержит: определение второго числа на основе четвертого указателя и определение максимальной длины первого списка кандидатных векторов движения на основе второго указателя и второго числа.[0013] In an exemplary embodiment, when the third pointer indicates that the extended temporal motion vector prediction mode is present in the subblock merge prediction mode, and the fourth pointer indicates that the planar motion vector prediction mode is not present in the subblock merge prediction mode, determining the maximum length of the first list of candidate motion vectors based on the second pointer comprises: determining the second number based on the fourth pointer and determining the maximum length of the first list of candidate motion vectors based on the second pointer and the second number.
[0014] Например, когда sps_planar_enabled_flag=0, это указывает, что режим планарного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков. Например, второе число равно числу векторов движения, которые поддерживаются при предсказании, выполняемом с использованием режима планарного предсказания вектора движения.[0014] For example, when sps_planar_enabled_flag=0, this indicates that the planar motion vector prediction mode is not present in the subblock merge prediction mode. For example, the second number is equal to the number of motion vectors that are supported in prediction performed using the planar motion vector prediction mode.
[0015] В возможном исполнении, когда третий указатель указывает, что режим расширенного временного предсказания векторов движения не присутствует в режиме предсказания слияния субблоков, а четвертый указатель указывает, что режим планарного предсказания вектора движения присутствует в режиме предсказания слияния субблоков, определение максимальной длины первого списка кандидатных векторов движения на основе второго указателя содержит: определение максимальной длины первого списка кандидатных векторов движения на основе второго указателя и первого числа.[0015] In an exemplary embodiment, when the third pointer indicates that the extended temporal motion vector prediction mode is not present in the subblock merge prediction mode, and the fourth pointer indicates that the planar motion vector prediction mode is present in the subblock merge prediction mode, determining the maximum length of the first list of candidate motion vectors based on the second pointer comprises: determining the maximum length of the first list of candidate motion vectors based on the second pointer and the first number.
[0016] В возможном исполнении, когда третий указатель указывает, что режим расширенного временного предсказания векторов движения не присутствует в режиме предсказания слияния субблоков, а четвертый указатель указывает, что режим планарного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, определение максимальной длины первого списка кандидатных векторов движения на основе второго указателя содержит: определение максимальной длины первого списка кандидатных векторов движения на основе второго указателя, первого числа и второго числа.[0016] In an exemplary embodiment, when the third pointer indicates that the extended temporal motion vector prediction mode is not present in the subblock merge prediction mode, and the fourth pointer indicates that the planar motion vector prediction mode is not present in the subblock merge prediction mode, determining the maximum length of the first the list of candidate motion vectors based on the second pointer comprises: determining the maximum length of the first list of candidate motion vectors based on the second pointer, the first number, and the second number.
[0017] В возможном исполнении максимальная длина первого списка кандидатных векторов движения получается по следующей формуле:[0017] In an exemplary embodiment, the maximum length of the first list of candidate motion vectors is obtained from the following formula:
MaxNumSubblockMergeCand=K − K_minus_max_num_subblock_merge_cand,MaxNumSubblockMergeCand=K − K_minus_max_num_subblock_merge_cand,
где MaxNumSubblockMergeCand представляет максимальную длину первого списка кандидатных векторов движения, K_minus_max_num_subblock_merge_cand представляет второй указатель, а K - предварительно установленное неотрицательное целое число.where MaxNumSubblockMergeCand represents the maximum length of the first list of candidate motion vectors, K_minus_max_num_subblock_merge_cand represents the second pointer, and K is a preset non-negative integer.
[0018] В возможном исполнении, когда максимальная длина первого списка кандидатных векторов движения определяется на основе второго указателя и первого числа, максимальная длина первого списка кандидатных векторов движения получается в соответствии со следующей формулой:[0018] In an exemplary embodiment, when the maximum length of the first candidate motion vector list is determined based on the second pointer and the first number, the maximum length of the first candidate motion vector list is obtained according to the following formula:
MaxNumSubblockMergeCand=K-K_minus_max_num_subblock_merge_cand-L1,MaxNumSubblockMergeCand=K-K_minus_max_num_subblock_merge_cand-L1,
где MaxNumSubblockMergeCand представляет максимальную длину первого списка кандидатных векторов движения, K_minus_max_num_subblock_merge_cand представляет второй указатель, L1 представляет первое число, а K представляет собой предварительно установленное неотрицательное целое число.where MaxNumSubblockMergeCand represents the maximum length of the first list of candidate motion vectors, K_minus_max_num_subblock_merge_cand represents the second pointer, L1 represents the first number, and K is a preset non-negative integer.
[0019] В возможном исполнении, когда максимальная длина первого списка кандидатных векторов движения определяется на основе второго указателя и второго числа, максимальная длина первого списка кандидатных векторов движения получается в соответствии со следующей формулой:[0019] In an exemplary embodiment, when the maximum length of the first candidate motion vector list is determined based on the second pointer and the second number, the maximum length of the first candidate motion vector list is obtained according to the following formula:
MaxNumSubblockMergeCand=K-K_minus_max_num_subblock_merge_cand-L2,MaxNumSubblockMergeCand=K-K_minus_max_num_subblock_merge_cand-L2,
где MaxNumSubblockMergeCand представляет максимальную длину первого списка кандидатных векторов движения, K_minus_max_num_subblock_merge_cand представляет второй указатель, L2 представляет второе число, а K представляет собой предварительно установленное неотрицательное целое число.where MaxNumSubblockMergeCand is the maximum length of the first list of candidate motion vectors, K_minus_max_num_subblock_merge_cand is the second pointer, L2 is the second number, and K is a preset non-negative integer.
[0020] В возможном исполнении, когда максимальная длина первого списка кандидатных векторов движения определяется на основе второго указателя, первого числа и второго числа, максимальная длина первого списка кандидатных векторов движения получается согласно следующей формуле: MaxNumSubblockMergeCand=K-K_minus_max_num_subblock_merge_cand-L1-L2, где MaxNumSubblockMergeCand представляет максимальную длину первого списка кандидатных векторов движения, K_minus_max_num_subblock_merge_cand представляет собой второй указатель, L1 представляет собой первое число, а L2 представляет собой второе число, а K представляет собой предварительно установленное неотрицательное целое число.[0020] In an exemplary embodiment, when the maximum length of the first candidate motion vector list is determined based on the second pointer, the first number, and the second number, the maximum length of the first candidate motion vector list is obtained according to the following formula: MaxNumSubblockMergeCand=K-K_minus_max_num_subblock_merge_cand-L1-L2, where MaxNumSubblockMergeCand is the maximum length of the first list of candidate motion vectors, K_minus_max_num_subblock_merge_cand is the second pointer, L1 is the first number, and L2 is the second number, and K is a preset non-negative integer.
[0021] В возможном исполнении синтаксический анализ второго указателя из битового потока содержит:[0021] In a possible implementation, parsing the second pointer from the bitstream comprises:
синтаксический анализ второго указателя из набора параметров последовательности в битовом потоке или синтаксический анализ второго указателя из заголовка слайса для слайса в битовом потоке, причем блок, который должен быть обработан, содержится в этом слайсе.parsing a second pointer from a bitstream sequence parameter set; or parsing a second pointer from a slice header for a slice in the bitstream, the block to be processed is contained in that slice.
[0022] В возможном исполнении способ дополнительно содержит: когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, подлежащего обработке, содержит только режим прямолинейного предсказания вектора движения, а третий указатель (например, sps_sbtmvp_enabled_flag) указывает что режим расширенного временного предсказания вектора движения присутствует в режиме предсказания слияния субблоков, определение третьего числа на основе третьего указателя и определение максимальной длины первого списка кандидатных векторов движения на основе третьего числа. Например, когда sps_sbtmvp_enabled_flag=1, это указывает, что режим расширенного предсказания вектора движения присутствует в режиме предсказания слияния субблоков. Третье число равно числу векторов движения, которые поддерживаются при предсказании, выполняемом с использованием режима расширенного временного предсказания векторов движения. Например, максимальная длина первого списка кандидатных векторов движения равна третьему числу.[0022] In a possible implementation, the method further comprises: when the first pointer indicates that the candidate mode used for inter prediction of the block to be processed contains only the rectilinear motion vector prediction mode, and the third pointer (for example, sps_sbtmvp_enabled_flag) indicates that the extended temporal prediction mode a motion vector is present in the subblock merge prediction mode, determining a third number based on the third pointer, and determining the maximum length of the first list of candidate motion vectors based on the third number. For example, when sps_sbtmvp_enabled_flag=1, it indicates that the extended motion vector prediction mode is present in the subblock merge prediction mode. The third number is equal to the number of motion vectors that are supported in prediction performed using the advanced temporal motion vector prediction mode. For example, the maximum length of the first list of candidate motion vectors is the third number.
[0023] В возможном исполнении, когда четвертый указатель (например, sps_planar_enabled_flag) указывает, что режим планарного предсказания вектора движения присутствует в режиме предсказания слияния субблоков, определение максимальной длины первого списка кандидатных векторов движения на основе первого числа содержит: определение четвертого числа на основе четвертого указателя и определение максимальной длины первого списка кандидатных векторов движения на основе третьего числа и четвертого числа. Например, максимальная длина первого списка кандидатных векторов движения равна сумме третьего числа и четвертого числа.[0023] In an exemplary embodiment, when the fourth indicator (eg, sps_planar_enabled_flag) indicates that the planar motion vector prediction mode is present in the subblock merge prediction mode, determining the maximum length of the first list of candidate motion vectors based on the first number comprises: determining the fourth number based on the fourth a pointer and determining a maximum length of the first list of candidate motion vectors based on the third number and the fourth number. For example, the maximum length of the first list of candidate motion vectors is the sum of the third number and the fourth number.
[0024] Например, когда sps_planar_enabled_flag=1, это указывает, что режим планарного предсказания вектора движения присутствует в режиме предсказания слияния субблоков. Четвертое число равно числу векторов движения, которые поддерживаются при предсказании, выполняемом с использованием списка векторов планарного движения.[0024] For example, when sps_planar_enabled_flag=1, this indicates that the planar motion vector prediction mode is present in the subblock merge prediction mode. The fourth number is equal to the number of motion vectors that are supported in the prediction performed using the list of planar motion vectors.
[0025] В возможном исполнении способ дополнительно содержит: когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит только режим прямолинейного предсказания вектора движения, третий указатель указывает, что режим расширенного временного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, и четвертый указатель указывает, что режим планарного предсказания вектора движения присутствует в режиме предсказания слияния субблоков, определение четвертого числа на основе четвертого указателя и определение максимальной длины первого списка кандидатных векторов движения на основе четвертого числа. Например, максимальная длина первого списка кандидатных векторов движения равна четвертому числу.[0025] In an exemplary embodiment, the method further comprises: when the first pointer indicates that the candidate mode used for inter prediction of the block to be processed contains only the rectilinear motion vector prediction mode, the third pointer indicates that the extended temporal motion vector prediction mode does not is present in the subblock merge prediction mode, and the fourth pointer indicates that the planar motion vector prediction mode is present in the subblock merge prediction mode, determining the fourth number based on the fourth pointer, and determining the maximum length of the first motion vector candidate list based on the fourth number. For example, the maximum length of the first list of candidate motion vectors is the fourth number.
[0026] В возможном исполнении, когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит только режим прямолинейного предсказания вектора движения, а третий указатель указывает, что режим расширенного временного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, максимальная длина первого списка кандидатных векторов движения равна нулю.[0026] In a possible implementation, when the first pointer indicates that the candidate mode used for inter prediction of the block to be processed contains only the rectilinear motion vector prediction mode, and the third pointer indicates that the extended temporal motion vector prediction mode is not present in sub-block merge prediction mode, the maximum length of the first list of candidate motion vectors is zero.
[0027] В возможном исполнении, когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит только режим прямолинейного предсказания вектора движения, третий указатель указывает, что режим расширенного временного предсказания вектора движения не присутствует в режим предсказания слияния субблоков, и четвертый указатель указывает, что режим планарного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, максимальная длина первого списка кандидатных векторов движения равна нулю.[0027] In an exemplary embodiment, when the first pointer indicates that the candidate mode used for inter prediction of the block to be processed contains only the rectilinear motion vector prediction mode, the third pointer indicates that the extended temporal motion vector prediction mode is not present in the mode. subblock merge prediction mode, and the fourth pointer indicates that the planar motion vector prediction mode is not present in the subblock merge prediction mode, the maximum length of the first motion vector candidate list is zero.
[0028] В возможном исполнении третий указатель равен первому значению, а первое число равно 1.[0028] In a possible implementation, the third pointer is equal to the first value, and the first number is equal to 1.
[0029] В возможном исполнении четвертый указатель равен третьему значению, а второе число равно 1.[0029] In a possible implementation, the fourth pointer is equal to the third value, and the second number is equal to 1.
[0030] В возможном исполнении третий указатель равен второму значению, а третье число равно 1.[0030] In a possible implementation, the third pointer is equal to the second value, and the third number is equal to 1.
[0031] В возможном исполнении четвертый указатель равен четвертому значению, а четвертое число равно 1.[0031] In an exemplary embodiment, the fourth pointer is equal to the fourth value, and the fourth number is equal to 1.
[0032] Согласно второму аспекту вариант осуществления этой заявки предоставляет аппаратуру предсказания видеоизображения, включающий в себя:[0032] According to a second aspect, an embodiment of this application provides a video prediction apparatus, including:
блок синтаксического анализа, сконфигурированный для: синтаксического анализа первого указателя из битового потока; и когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит аффинный режим, синтаксического анализа второго указателя из битового потока, где второй указатель используется для указания максимальной длины первого списка кандидатных векторов движения, а первый список кандидатных векторов движения является списком кандидатных векторов движения, созданным для блока, который должен быть обработан, режим предсказания слияния субблоков используется для блока, который должен быть обработан; иa parser configured to: parse the first pointer from the bitstream; and when the first pointer indicates that the candidate mode used for inter prediction of the block to be processed contains the affine mode, parsing the second pointer from the bitstream, where the second pointer is used to indicate the maximum length of the first list of candidate motion vectors, and the first list candidate motion vectors is a list of candidate motion vectors created for the block to be processed, the sub-block merge prediction mode is used for the block to be processed; and
блок определения, сконфигурированный для определения максимальной длины первого списка кандидатных векторов движения на основе второго указателя.a determiner configured to determine a maximum length of the first list of candidate motion vectors based on the second pointer.
[0033] В возможном исполнении блок синтаксического анализа дополнительно сконфигурирован для синтаксического анализа третьего указателя из битового потока до того, как максимальная длина первого списка кандидатных векторов движения определена на основе второго указателя, где третий указатель используется для указания состояния присутствия режима расширенного временного предсказания вектора движения в режиме предсказания слияния субблоков.[0033] In an exemplary embodiment, the parser is further configured to parse a third pointer from the bitstream before the maximum length of the first list of candidate motion vectors is determined based on the second pointer, where the third pointer is used to indicate the presence state of the extended temporal motion vector prediction mode in subblock merge prediction mode.
[0034] В возможном исполнении режим предсказания слияния субблоков содержит по меньшей мере один из режима планарного предсказания вектора движения, режима расширенного временного предсказания вектора движения или аффинного режима; и когда третий указатель указывает, что режим расширенного временного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, блок определения конкретно сконфигурирован, чтобы:[0034] In an exemplary embodiment, the subblock merge prediction mode comprises at least one of planar motion vector prediction mode, extended temporal motion vector prediction mode, or affine mode; and when the third pointer indicates that the extended temporal motion vector prediction mode is not present in the sub-block merge prediction mode, the determining unit is specifically configured to:
определить первое число на основе третьего указателя, иdetermine the first number based on the third pointer, and
определить максимальную длину первого списка кандидатных векторов движения на основе второго указателя и первого числа.determine the maximum length of the first list of candidate motion vectors based on the second pointer and the first number.
[0035] В возможном исполнении, прежде чем максимальная длина первого списка кандидатных векторов движения определена на основе второго указателя, блок синтаксического анализа дополнительно сконфигурирован для:[0035] In an exemplary embodiment, before the maximum length of the first list of candidate motion vectors is determined based on the second pointer, the parser is further configured to:
синтаксического анализа четвертого указателя из битового потока, где четвертый указатель используется для указания состояния присутствия режима планарного предсказания вектора движения в режиме предсказания слияния субблоков.parsing a fourth pointer from the bitstream, where the fourth pointer is used to indicate the presence state of the planar motion vector prediction mode in the subblock merge prediction mode.
[0036] В возможном исполнении, когда третий указатель указывает, что режим расширенного временного предсказания вектора движения присутствует в режиме предсказания слияния субблоков, а четвертый указатель указывает, что режим планарного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, блок определения конкретно сконфигурирован, чтобы:[0036] In an exemplary embodiment, when the third pointer indicates that the extended temporal motion vector prediction mode is present in the subblock merge prediction mode, and the fourth pointer indicates that the planar motion vector prediction mode is not present in the subblock merge prediction mode, the determining unit is specifically configured, to:
определить второе число на основе четвертого указателя, иdetermine the second number based on the fourth pointer, and
определить максимальную длину первого списка кандидатных векторов движения на основе второго указателя и второго числа.determine the maximum length of the first list of candidate motion vectors based on the second pointer and the second number.
[0037] В возможном исполнении, когда третий указатель указывает, что режим расширенного временного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, а четвертый указатель указывает, что режим планарного предсказания вектора движения присутствует в режиме предсказания слияния субблоков, блок определения конкретно сконфигурирован, чтобы:[0037] In an exemplary embodiment, when the third pointer indicates that the extended temporal motion vector prediction mode is not present in the subblock merge prediction mode, and the fourth pointer indicates that the planar motion vector prediction mode is present in the subblock merge prediction mode, the determining unit is specifically configured, to:
определять максимальную длину первого списка кандидатных векторов движения на основе второго указателя и первого числа.determine the maximum length of the first list of candidate motion vectors based on the second pointer and the first number.
[0038] В возможном исполнении, когда третий указатель указывает, что режим расширенного временного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, и четвертый указатель указывает, что режим планарного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, блок определения конкретно сконфигурирован, чтобы:[0038] In an exemplary embodiment, when the third pointer indicates that the extended temporal motion vector prediction mode is not present in the subblock merge prediction mode, and the fourth pointer indicates that the planar motion vector prediction mode is not present in the subblock merge prediction mode, the determining unit is specifically configured , to:
определять максимальную длину первого списка кандидатных векторов движения на основе второго указателя, первого числа и второго числа.determine the maximum length of the first list of candidate motion vectors based on the second pointer, the first number, and the second number.
[0039] В возможном исполнении максимальная длина первого списка кандидатных векторов движения получается по следующей формуле:[0039] In an exemplary embodiment, the maximum length of the first list of candidate motion vectors is obtained from the following formula:
MaxNumSubblockMergeCand=K-K_minus_max_num_subblock_merge_cand, MaxNumSubblockMergeCand=K-K_minus_max_num_subblock_merge_cand,
где MaxNumSubblockMergeCand представляет максимальную длину первого списка кандидатных векторов движения, K_minus_max_num_subblock_merge_cand представляет второй указатель, а K - предварительно установленное неотрицательное целое число.where MaxNumSubblockMergeCand represents the maximum length of the first list of candidate motion vectors, K_minus_max_num_subblock_merge_cand represents the second pointer, and K is a preset non-negative integer.
[0040] В возможном исполнении максимальная длина первого списка кандидатных векторов движения получается по следующей формуле:[0040] In an exemplary embodiment, the maximum length of the first list of candidate motion vectors is obtained from the following formula:
MaxNumSubblockMergeCand=K-K_minus_max_num_subblock_merge_cand-L1,MaxNumSubblockMergeCand=K-K_minus_max_num_subblock_merge_cand-L1,
где MaxNumSubblockMergeCand представляет максимальную длину первого списка кандидатных векторов движения, K_minus_max_num_subblock_merge_cand представляет второй указатель, L1 представляет первое число, а K представляет собой предварительно установленное неотрицательное целое число.where MaxNumSubblockMergeCand represents the maximum length of the first list of candidate motion vectors, K_minus_max_num_subblock_merge_cand represents the second pointer, L1 represents the first number, and K is a preset non-negative integer.
[0041] В возможном исполнении максимальная длина первого списка кандидатных векторов движения получается по следующей формуле:[0041] In an exemplary embodiment, the maximum length of the first list of candidate motion vectors is obtained from the following formula:
MaxNumSubblockMergeCand=K - K_minus_max_num_subblock_merge_cand - L2,MaxNumSubblockMergeCand=K - K_minus_max_num_subblock_merge_cand - L2,
где MaxNumSubblockMergeCand представляет максимальную длину первого списка кандидатных векторов движения, K_minus_max_num_subblock_merge_cand представляет второй указатель, L2 представляет второе число, а K представляет собой предварительно установленное неотрицательное целое число.where MaxNumSubblockMergeCand is the maximum length of the first list of candidate motion vectors, K_minus_max_num_subblock_merge_cand is the second pointer, L2 is the second number, and K is a preset non-negative integer.
[0042] В возможном исполнении максимальная длина первого списка кандидатных векторов движения получается по следующей формуле:[0042] In an exemplary embodiment, the maximum length of the first list of candidate motion vectors is obtained by the following formula:
MaxNumSubblockMergeCand=K - K_minus_max_num_subblock_merge_cand - L1 - L2,MaxNumSubblockMergeCand=K - K_minus_max_num_subblock_merge_cand - L1 - L2,
где MaxNumSubblockMergeCand представляет максимальную длину первого списка кандидатных векторов движения, K_minus_max_num_subblock_merge_cand представляет второй указатель, L1 представляет первое число, L2 представляет второе число, а K - предварительно установленное неотрицательное целое число.where MaxNumSubblockMergeCand represents the maximum length of the first list of candidate motion vectors, K_minus_max_num_subblock_merge_cand represents the second pointer, L1 represents the first number, L2 represents the second number, and K is a preset non-negative integer.
[0043] В возможном исполнении при синтаксическом анализе второго указателя из битового потока блок синтаксического анализа конкретно сконфигурирован, чтобы:[0043] In an exemplary embodiment, when parsing the second pointer from the bitstream, the parser is specifically configured to:
синтаксически анализировать второй указатель из набора параметров последовательности в битовом потоке или синтаксически анализировать второй указатель из заголовка слайса для слайса в битовом потоке, причем блок, который должен быть обработан, содержится в упомянутом слайсе.parse a second pointer from a set of sequence parameters in the bitstream; or parse a second pointer from a slice header for a slice in the bitstream, wherein the block to be processed is contained in said slice.
[0044] В возможном исполнении, когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит только режим прямолинейного предсказания вектора движения, а третий указатель указывает, что режим расширенного временного предсказания вектора движения присутствует в режиме предсказания слияния субблоков, блок определения дополнительно сконфигурирован для: определения третьего числа на основе третьего указателя и определения максимальной длины первого списка кандидатных векторов движения на основе третьего числа.[0044] In a possible implementation, when the first pointer indicates that the candidate mode used for inter prediction of the block to be processed contains only the rectilinear motion vector prediction mode, and the third pointer indicates that the extended temporal motion vector prediction mode is present in the mode sub-block merge prediction, the determining unit is further configured to: determine the third number based on the third pointer, and determine the maximum length of the first list of candidate motion vectors based on the third number.
[0045] В возможном исполнении, когда четвертый указатель указывает, что режим планарного предсказания вектора движения присутствует в режиме предсказания слияния субблоков, при определении максимальной длины первого списка кандидатных векторов движения на основе первого числа, блок определения конкретно сконфигурирован, чтобы:[0045] In an exemplary embodiment, when the fourth pointer indicates that the planar motion vector prediction mode is present in the subblock merge prediction mode, when determining the maximum length of the first list of candidate motion vectors based on the first number, the determining unit is specifically configured to:
определить четвертое число на основе четвертого указателя, иdetermine the fourth number based on the fourth pointer, and
определить максимальную длину первого списка кандидатных векторов движения на основе первого числа и четвертого числа.determine the maximum length of the first list of candidate motion vectors based on the first number and the fourth number.
[0046] В возможном исполнении, когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит только режим прямолинейного предсказания вектора движения, третий указатель указывает, что режим расширенного временного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, и четвертый указатель указывает, что режим планарного предсказания вектора движения присутствует в режиме предсказания слияния субблоков, блок определения дополнительно сконфигурирован для: определения четвертого числа на основе четвертого указателя и определения максимальной длины первого списка кандидатных векторов движения на основе четвертого числа.[0046] In an exemplary embodiment, when the first pointer indicates that the candidate mode used for inter prediction of the block to be processed contains only the rectilinear motion vector prediction mode, the third pointer indicates that the extended temporal motion vector prediction mode is not present in the mode. subblock merge prediction mode, and the fourth pointer indicates that the planar motion vector prediction mode is present in the subblock merge prediction mode, the determining unit is further configured to: determine the fourth number based on the fourth pointer, and determine the maximum length of the first list of candidate motion vectors based on the fourth number.
[0047] В возможном исполнении, когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит только режим прямолинейного предсказания вектора движения, а третий указатель указывает, что режим расширенного временного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, максимальная длина первого списка кандидатных векторов движения равна нулю.[0047] In a possible implementation, when the first pointer indicates that the candidate mode used for inter prediction of the block to be processed contains only the rectilinear motion vector prediction mode, and the third pointer indicates that the extended temporal motion vector prediction mode is not present in sub-block merge prediction mode, the maximum length of the first list of candidate motion vectors is zero.
[0048] В возможном исполнении, когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит только режим прямолинейного предсказания вектора движения, третий указатель указывает, что режим расширенного временного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, и четвертый указатель указывает, что режим планарного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, максимальная длина первого списка кандидатных векторов движения равна нулю.[0048] In an exemplary embodiment, when the first pointer indicates that the candidate mode used for inter prediction of the block to be processed contains only the rectilinear motion vector prediction mode, the third pointer indicates that the extended temporal motion vector prediction mode is not present in the mode. subblock merge prediction mode, and the fourth pointer indicates that the planar motion vector prediction mode is not present in the subblock merge prediction mode, the maximum length of the first motion vector candidate list is zero.
[0049] В возможном исполнении максимальная длина первого списка кандидатных векторов движения равна третьему числу.[0049] In an exemplary embodiment, the maximum length of the first list of candidate motion vectors is a third number.
[0050] В возможном исполнении максимальная длина первого списка кандидатных векторов движения равна сумме третьего числа и четвертого числа.[0050] In an exemplary embodiment, the maximum length of the first list of candidate motion vectors is equal to the sum of the third number and the fourth number.
[0051] В возможном исполнении максимальная длина первого списка кандидатных векторов равна четвертому числу.[0051] In an exemplary embodiment, the maximum length of the first list of candidate vectors is a fourth number.
[0052] В возможном варианте третий указатель равен первому значению, а первое число равно 1.[0052] Optionally, the third pointer is equal to the first value, and the first number is 1.
[0053] В возможном исполнении четвертый указатель равен третьему значению, а второе число равно 1.[0053] In a possible implementation, the fourth pointer is equal to the third value, and the second number is equal to 1.
[0054] В возможном исполнении третий указатель равен второму значению, а третье число равно 1.[0054] In a possible implementation, the third pointer is equal to the second value, and the third number is equal to 1.
[0055] В возможном исполнении четвертый указатель равен четвертому значению, а четвертое число равно 1.[0055] In an exemplary embodiment, the fourth pointer is equal to the fourth value, and the fourth number is equal to 1.
[0056] Согласно третьему аспекту вариант осуществления этой заявки предоставляет аппаратуру. Аппаратура может быть декодером и содержать процессор и память. Память сконфигурирована для хранения инструкции. Когда аппаратура работает, процессор выполняет инструкцию, хранящуюся в памяти, чтобы дать возможность аппаратуре выполнять способ согласно любому из первого аспекта или исполнениям первого аспекта. Следует отметить, что память может быть интегрирована в процессор или может быть независимой от процессора.[0056] According to a third aspect, an embodiment of this application provides hardware. The hardware may be a decoder and include a processor and memory. The memory is configured to store the instruction. When the hardware is running, the processor executes an instruction stored in memory to enable the hardware to perform the method according to any of the first aspect or implementations of the first aspect. It should be noted that the memory may be integral to the processor or may be independent of the processor.
[0057] Согласно четвертому аспекту вариант осуществления этой заявки предоставляет способ предсказания видеоизображения, используемый на стороне кодера и включающий в себя:[0057] According to a fourth aspect, an embodiment of this application provides a video prediction method used at the encoder side, including:
кодирование первого указателя в битовом потоке; иencoding the first pointer in the bitstream; and
когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит аффинный режим, кодирование второго указателя в битовом потоке, причем второй указатель используется для указания максимальной длины первого списка кандидатных векторов движения, а первый список кандидатных векторов движения является списком кандидатных векторов движения, созданным для блока, который должен быть обработан, режим предсказания слияния субблоков используется для блока, который должен быть обработан.when the first pointer indicates that the candidate mode used for inter prediction of the block to be processed contains affine mode, encoding the second pointer in the bitstream, the second pointer being used to indicate the maximum length of the first list of candidate motion vectors, and the first list of candidate vectors motion vector is a list of candidate motion vectors created for the block to be processed, the sub-block merge prediction mode is used for the block to be processed.
[0058] Согласно пятому аспекту вариант осуществления этой заявки предоставляет аппаратуру предсказания видеоизображения. Аппаратура может быть кодером и содержать процессор и память. Память сконфигурирована для хранения инструкции. Когда аппаратура работает, процессор выполняет инструкцию, хранящуюся в памяти, чтобы дать возможность аппаратуре выполнять способ согласно четвертому аспекту. Следует отметить, что память может быть интегрирована в процессор или может быть независимой от процессора.[0058] According to a fifth aspect, an embodiment of this application provides a video prediction engine. The hardware may be an encoder and include a processor and memory. The memory is configured to store the instruction. When the hardware is running, the processor executes an instruction stored in the memory to enable the hardware to execute the method according to the fourth aspect. It should be noted that the memory may be integral to the processor or may be independent of the processor.
[0059] Согласно шестому аспекту этой заявки предоставляется машиночитаемый носитель данных. Машиночитаемый носитель данных хранит инструкцию. Когда инструкция выполняется на компьютере, компьютер имеет возможность выполнять способ согласно каждому из вышеизложенных аспектов.[0059] According to a sixth aspect of this application, a computer-readable storage medium is provided. The computer-readable storage medium stores the instruction. When an instruction is executed on a computer, the computer is able to execute the method according to each of the above aspects.
[0060] Согласно седьмому аспекту этой заявки предоставляется компьютерный программный продукт, включающий в себя инструкцию. Когда компьютерный программный продукт выполняется на компьютере, компьютер имеет возможность выполнять способ согласно каждому из вышеупомянутых аспектов.[0060] According to a seventh aspect of this application, a computer program product including an instruction is provided. When the computer program product is executed on the computer, the computer is able to perform the method according to each of the above aspects.
[0061] Следует понимать, что технические решения, описанные в аспектах от второго аспекта до седьмого аспекта этой заявки, согласуются с техническими решениями, описанными в первом аспекте этой заявки, и положительные эффекты, достигаемые во всех аспектах и соответствующих исполнениях реализации, аналогичны. Поэтому подробности снова не описываются.[0061] It should be understood that the technical solutions described in aspects from the second aspect to the seventh aspect of this application are consistent with the technical solutions described in the first aspect of this application, and the benefits achieved in all aspects and corresponding implementations are similar. Therefore, details are not described again.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF THE DRAWINGS
[0062] ФИГ. 1A является блок-схемой примера системы 10 кодирования и декодирования видео для реализации вариантов осуществления этой заявки;[0062] FIG. 1A is a block diagram of an example of a video encoding and
[0063] ФИГ. 1B - это блок-схема примера системы 40 кодирования видео для реализации вариантов осуществления этой заявки;[0063] FIG. 1B is a block diagram of an example of a video coding system 40 for implementing embodiments of this application;
[0064] ФИГ. 2 - блок-схема примерной структуры кодера 20 для реализации вариантов осуществления этой заявки;[0064] FIG. 2 is a block diagram of an exemplary structure of an
[0065] ФИГ. 3 - блок-схема примерной структуры декодера 30 для реализации вариантов осуществления этой заявки;[0065] FIG. 3 is a block diagram of an exemplary structure of a
[0066] ФИГ. 4 - блок-схема примера устройства 400 кодирования видео для реализации вариантов осуществления этой заявки;[0066] FIG. 4 is a block diagram of an example of a
[0067] ФИГ. 5 - блок-схема примера другой аппаратуры кодирования или аппаратуры декодирования для реализации вариантов осуществления этой заявки;[0067] FIG. 5 is a block diagram of an example of other encoding equipment or decoding equipment for implementing embodiments of this application;
[0068] ФИГ. 6A - схематическая диаграмма кандидатного местоположения для информации о движении для реализации вариантов осуществления этой заявки;[0068] FIG. 6A is a schematic diagram of a candidate location for traffic information for implementing embodiments of this application;
[0069] ФИГ. 6B - схематическая диаграмма предсказания унаследованного вектора движения контрольной точки для реализации вариантов осуществления этой заявки;[0069] FIG. 6B is a schematic diagram of a legacy reference point motion vector prediction for implementing embodiments of this application;
[0070] ФИГ. 6С - схематическая диаграмма предсказания построенного вектора движения контрольной точки для реализации вариантов осуществления этой заявки;[0070] FIG. 6C is a schematic diagram of a built-in reference point motion vector prediction for implementing embodiments of this application;
[0071] ФИГ. 6D - схематическая диаграмма процедуры объединения информации о движении контрольной точки для получения информации о движении построенной контрольной точки для реализации вариантов осуществления этой заявки;[0071] FIG. 6D is a schematic diagram of a procedure for combining the movement information of a checkpoint to obtain information about the movement of a constructed checkpoint for implementing embodiments of this application;
[0072] ФИГ. 6E - схематическая диаграмма метода предсказания ATMVP для реализации вариантов осуществления этой заявки;[0072] FIG. 6E is a schematic diagram of an ATMVP prediction method for implementing embodiments of this application;
[0073] ФИГ. 7 - схематическая диаграмма метода планарного предсказания вектора движения для реализации вариантов осуществления этой заявки;[0073] FIG. 7 is a schematic diagram of a planar motion vector prediction method for implementing embodiments of this application;
[0074] ФИГ. 8A - блок-схема способа внешнего предсказания для реализации вариантов осуществления этой заявки;[0074] FIG. 8A is a flowchart of an inter prediction method for implementing embodiments of this application;
[0075] ФИГ. 8B - схематическая диаграмма построения списка кандидатных векторов движения для реализации вариантов осуществления этой заявки;[0075] FIG. 8B is a schematic diagram of building a list of candidate motion vectors for implementing embodiments of this application;
[0076] ФИГ. 8C - схематическая диаграмма блока компенсации движения для реализации вариантов осуществления этой заявки;[0076] FIG. 8C is a schematic diagram of a motion compensation unit for implementing embodiments of this application;
[0077] ФИГ. 9 - схематическая блок-схема способа предсказания видеоизображения для реализации вариантов осуществления этой заявки;[0077] FIG. 9 is a schematic block diagram of a video prediction method for implementing embodiments of this application;
[0078] ФИГ. 10 - схематическая блок-схема другого способа предсказания видеоизображения для реализации вариантов осуществления этой заявки;[0078] FIG. 10 is a schematic block diagram of another video prediction method for implementing embodiments of this application;
[0079] ФИГ. 11 - схематическая блок-схема еще одного способа предсказания видеоизображения для реализации вариантов осуществления этой заявки;[0079] FIG. 11 is a schematic block diagram of yet another video prediction method for implementing embodiments of this application;
[0080] ФИГ. 12A и фиг. 12B - схематическая блок-схема еще одного способа предсказания видеоизображения для реализации вариантов осуществления этой заявки;[0080] FIG. 12A and FIG. 12B is a schematic block diagram of yet another video prediction method for implementing embodiments of this application;
[0081] ФИГ. 13 - схематическая диаграмма аппаратуры 1300 для реализации вариантов осуществления этой заявки;[0081] FIG. 13 is a schematic diagram of
[0082] ФИГ. 14 - схематическая диаграмма аппаратуры 1400 для реализации вариантов осуществления этой заявки; и[0082] FIG. 14 is a schematic diagram of
[0083] ФИГ. 15 - схематическая диаграмма аппаратуры 1500 для реализации вариантов осуществления этой заявки.[0083] FIG. 15 is a schematic diagram of
Описание вариантов осуществленияDescription of Embodiments
[0084] Далее описываются варианты осуществления этой заявки со ссылкой на прилагаемые чертежи в вариантах осуществления этой заявки. В нижеследующем описании сделана ссылка на сопроводительные чертежи, которые составляют часть этого раскрытия и показывают в качестве иллюстрации конкретные аспекты вариантов осуществления этой заявки или конкретные аспекты, в которых могут использоваться варианты осуществления этой заявки. Следует понимать, что варианты осуществления этой заявки могут использоваться в других аспектах и могут содержать структурные или логические изменения, не изображенные на сопроводительных чертежах. Следовательно, следующие подробные описания не следует воспринимать в ограничивающем смысле, и объем этой заявки определяется прилагаемой формулой изобретения. Например, следует понимать, что раскрытие в связи с описанным способом также может быть верным для соответствующего устройства или системы, сконфигурированной для выполнения способа, и наоборот. Например, если описан один или несколько конкретных этапов способа, соответствующее устройство может содержать один или несколько блоков, таких как функциональные блоки, для выполнения описанных одного или нескольких этапов способа (например, один блок, выполняющий один или несколько этапов; или множество блоков, каждый из которых выполняет один или несколько из множества этапов), даже если такой один или несколько блоков явно не описаны или не проиллюстрированы на сопроводительных чертежах. С другой стороны, например, если конкретное устройство описывается на основе одного или нескольких блоков, таких как функциональные блоки, соответствующий способ может содержать один этап, используемый для выполнения функциональных возможностей одного или нескольких блоков (например, один этап, используемый для выполнения функциональных возможностей одного или нескольких блоков или множества этапов, каждый из которых используется для выполнения функциональных возможностей одного или нескольких из множества блоков), даже если такой один или несколько этапов явно не описаны или не проиллюстрированы на сопроводительных чертежах. Кроме того, следует понимать, что особенности различных примерных вариантов осуществления и/или аспектов, описанных в этом описании, могут быть объединены друг с другом, если конкретно не указано иное.[0084] Embodiments of this application will now be described with reference to the accompanying drawings in embodiments of this application. In the following description, reference is made to the accompanying drawings, which form part of this disclosure and show, by way of illustration, specific aspects of embodiments of this application or specific aspects in which embodiments of this application may be used. It should be understood that embodiments of this application may be used in other aspects and may contain structural or logical changes not shown in the accompanying drawings. Therefore, the following detailed descriptions are not to be taken in a limiting sense, and the scope of this application is defined by the appended claims. For example, it should be understood that the disclosure in connection with the described method may also be true for the corresponding device or system configured to perform the method, and vice versa. For example, if one or more specific method steps are described, the corresponding device may comprise one or more blocks, such as functional blocks, for performing the one or more method steps described (for example, one block performing one or more steps; or a plurality of blocks, each of which performs one or more of the plurality of steps), even if such one or more units are not explicitly described or illustrated in the accompanying drawings. On the other hand, for example, if a particular device is described in terms of one or more blocks, such as functional blocks, the corresponding method may include one step used to perform the functionality of one or more blocks (for example, one step used to perform the functionality of one or multiple blocks or multiple steps, each of which is used to perform the functionality of one or more of the multiple blocks), even if such one or more steps are not explicitly described or illustrated in the accompanying drawings. In addition, it should be understood that features of the various exemplary embodiments and/or aspects described in this specification may be combined with each other, unless specifically indicated otherwise.
[0085] Технические решения в вариантах осуществления этой заявки применимы не только к существующему стандарту кодирования видео (например, к стандарту H.264 или HEVC), но также применимы к будущему стандарту кодирования видео (например, стандарту H. 266). Термины, используемые в ОПИСАНИИ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ этой заявки, используются только для объяснения конкретных вариантов осуществления этой заявки, но не предназначены для ограничения этой заявки. Нижеследующее сначала кратко описывает связанные концепции в вариантах осуществления этой заявки.[0085] The technical solutions in the embodiments of this application are not only applicable to an existing video coding standard (eg, H.264 or HEVC), but also applicable to a future video coding standard (eg, H.266). The terms used in the DESCRIPTION OF EMBODIMENTS of this application are used only to explain specific embodiments of this application, but are not intended to limit this application. The following first briefly describes related concepts in embodiments of this application.
[0086] Кодирование видео обычно относится к обработке последовательности изображений, которые образуют видео или видеопоследовательность. Термин «изображение (picture)», «кадр (frame)» или «изображение (image)» может использоваться как синонимы в области кодирования видео. Кодирование видео в этой спецификации представляет собой кодирование видео или декодирование видео. Кодирование видео выполняется на стороне источника и обычно содержит обработку (например, путем сжатия) исходного видеоизображения для уменьшения объема данных, необходимых для представления видеоизображения, для более эффективного хранения и/или передачи. Декодирование видео выполняется на стороне назначения и обычно содержит обратную обработку по сравнению с кодером для восстановления видеоизображения. «Кодирование» видеоизображения в вариантах осуществления следует понимать как «кодирование» или «декодирование» видеопоследовательности. Комбинация части кодирования и части декодирования также называется кодеком (кодирование и декодирование).[0086] Video coding generally refers to the processing of a sequence of images that form a video or video sequence. The term "image (picture)", "frame (frame)" or "image (image)" can be used interchangeably in the field of video coding. Video encoding in this specification is video encoding or video decoding. Video encoding is performed at the source side and typically involves processing (eg, by compressing) the source video to reduce the amount of data required to represent the video for more efficient storage and/or transmission. Video decoding is performed on the destination side and usually contains inverse processing compared to the encoder for video reconstruction. "Encoding" a video image in the embodiments should be understood as "encoding" or "decoding" a video sequence. The combination of an encoding part and a decoding part is also called a codec (encoding and decoding).
[0087] Видеопоследовательность содержит серию изображений (picture), изображение дополнительно разбивается на слайсы (slice), а слайс дополнительно разбивается на блоки (block). Обработка кодирования видео выполняется по блокам. В некоторых новых стандартах кодирования видео понятие блока дополнительно расширено. Например, макроблок (macroblock, MB) введен в стандарт H.264. Макроблок может быть дополнительно разбит на множество блоков (сегментов) предсказания, которые могут использоваться для кодирования с предсказанием. В стандарте высокоэффективного кодирования видео (high efficiency video coding, HEVC) используются базовые концепции, такие как единица кодирования (coding unit, CU), единица предсказания (prediction unit, PU) и единица преобразования (transform unit, TU). Множество блочных единиц получается посредством функционального разбиения и описываются с использованием новой древовидной структуры. Например, CU может быть разбита на меньшие CU на основе квадродерева, а меньшая CU может быть дополнительно разбита, чтобы сгенерировать структуру квадродерева. CU - это базовая единица, используемая для разбиения и кодирования кодированного изображения. PU и TU также имеют похожие древовидные структуры. PU может соответствовать блоку предсказания и является базовой единицей, используемой для кодирования с предсказанием. CU дополнительно разбивается на множество PU на основе шаблона разбиения. TU может соответствовать блоку преобразования и является базовой единицей, используемой для преобразования остатка предсказания. Однако, по существу, все CU, PU и TU концептуально являются блоками (или блоками изображения).[0087] The video sequence contains a series of images (picture), the image is further divided into slices (slice), and the slice is further divided into blocks (block). Video encoding processing is performed in blocks. In some new video coding standards, the concept of a block is further expanded. For example, a macroblock (MB) is introduced into the H.264 standard. A macroblock may be further divided into a plurality of prediction blocks (segments) that may be used for predictive coding. The high efficiency video coding (HEVC) standard uses basic concepts such as a coding unit (CU), a prediction unit (PU), and a transform unit (TU). The set of block units is obtained through functional partitioning and is described using a new tree structure. For example, a CU may be split into smaller CUs based on a quadtree, and the smaller CU may be further split to generate a quadtree structure. CU is the basic unit used to partition and encode an encoded picture. PU and TU also have similar tree structures. The PU may correspond to a prediction block and is the base unit used for predictive coding. The CU is further partitioned into a plurality of PUs based on the partition pattern. A TU may correspond to a transform unit and is the base unit used to transform the prediction residual. However, essentially all CUs, PUs, and TUs are conceptually blocks (or image blocks).
[0088] Например, в HEVC CTU разбивается на множество CU с использованием структуры квадродерева, представленной как дерево кодирования. Решение о том, кодировать ли область изображения с помощью внешнего (временного) или внутрикадрового (пространственного) предсказания, принимается на уровне CU. Каждая CU может быть дополнительно разбита на одну, две или четыре PU на основе шаблона разбиения PU. Внутри одной PU применяется один и тот же процесс предсказания, и соответствующая информация передается в декодер на основе PU. После получения остаточного блока путем применения процесса предсказания на основе шаблона разбиения PU, CU может быть разделена на единицы преобразования (transform unit, TU) на основе другой структуры квадродерева, аналогичной дереву кодирования, используемому для CU. В недавних разработках технологий сжатия видео для разбиения блока кодирования используется кадр разбиения квадратичного дерева и двоичного дерева (Quad-tree and binary tree, QTBT). В блочной структуре QTBT CU может быть квадратной или прямоугольной.[0088] For example, in HEVC, the CTU is partitioned into multiple CUs using a quadtree structure represented as a coding tree. The decision on whether to encode an image area using inter (temporal) or intra frame (spatial) prediction is made at the CU level. Each CU may be further partitioned into one, two, or four PUs based on a PU partitioning pattern. Within one PU, the same prediction process is applied and the corresponding information is transmitted to the decoder based on the PU. After obtaining the residual block by applying the prediction process based on the PU splitting pattern, the CU can be divided into transform units (TUs) based on a different quadtree structure similar to the coding tree used for the CU. Recent developments in video compression technologies use a Quad-tree and binary tree (QTBT) split frame to split a coding block. In the block structure of QTBT, the CU can be square or rectangular.
[0089] В этой спецификации для простоты описания и понимания блок изображения, который должен быть кодирован в текущем кодированном изображении, может называться текущим блоком. Например, при кодировании текущий блок - это блок, кодируемый в настоящее время; а при декодировании текущий блок - это блок, который в настоящее время декодируется. Декодированный блок изображения, в качестве опорного изображения, используемого для предсказания текущего блока, называется опорным блоком. Другими словами, опорный блок - это блок, который обеспечивает опорный сигнал для текущего блока. Опорный сигнал представляет собой значение пикселя в блоке изображения. Блок, который обеспечивает сигнал предсказания для текущего блока в опорном изображении, может называться как блок предсказания. Сигнал предсказания представляет значение пикселя, значение выборки или сигнал выборки в блоке предсказания. Например, после прохождения множества опорных блоков находится оптимальный опорный блок, и оптимальный опорный блок обеспечивает предсказание для текущего блока, и этот блок упоминается как блок предсказания.[0089] In this specification, for ease of description and understanding, an image block to be encoded in the current encoded image may be referred to as a current block. For example, when encoding, the current block is the block currently being encoded; and when decoding, the current block is the block currently being decoded. A decoded image block, as a reference image used to predict the current block, is called a reference block. In other words, a reference block is a block that provides a reference signal for the current block. The reference signal is a pixel value in the image block. A block that provides a prediction signal for the current block in a reference picture may be referred to as a prediction block. The prediction signal represents a pixel value, a sample value, or a sample signal in a prediction block. For example, after passing through a plurality of reference blocks, an optimal reference block is found, and the optimal reference block provides prediction for the current block, and this block is referred to as a prediction block.
[0090] В случае кодирования видео без потерь исходные видеоизображения могут быть восстановлены. То есть восстановленные видеоизображения имеют то же качество, что и исходные видеоизображения (при условии, что во время хранения или передачи не возникают потери при передаче или другие потери данных). В случае кодирования видео с потерями выполняется дополнительное сжатие, например, посредством квантования, чтобы уменьшить объем данных, требуемых для представления видеоизображений, и видеоизображения не могут быть полностью восстановлены на стороне декодера. То есть качество восстановленных видеоизображений ниже или хуже качества исходных видеоизображений.[0090] In the case of lossless video coding, the original video images can be recovered. That is, the reconstructed video images have the same quality as the original video images (assuming no transmission loss or other data loss occurs during storage or transmission). In the case of lossy video coding, additional compression is performed, for example by quantization, to reduce the amount of data required to represent video images, and the video images cannot be fully reconstructed at the decoder side. That is, the quality of the reconstructed video images is lower or worse than the quality of the original video images.
[0091] Некоторые стандарты кодирования видео H.261 предназначены для «гибридных видеокодеков с потерями» (то есть пространственное и временное предсказание в области выборки комбинируется с кодированием с двумерным преобразованием для применения квантования в области преобразования). Каждое изображение видеопоследовательности обычно разделяется на набор неперекрывающихся блоков, и кодирование обычно выполняется на уровне блоков. Другими словами, на стороне кодера видео обычно обрабатывается, то есть кодируется на уровне блока (блока видео). Например, блок предсказания генерируется посредством пространственного (внутрикадрового) предсказания и временного (внешнего) предсказания, блок предсказания вычитается из текущего блока (блока, который в настоящее время обрабатывается или должен быть обработан), чтобы получить остаточный блок, а остаточный блок преобразуется и квантуется в области преобразования, чтобы уменьшить объем данных, которые должны быть переданы (сжаты). На стороне декодера обработка, обратная по сравнению с кодером, выполняется над кодированным или сжатым блоком, чтобы восстановить текущий блок для представления. Кроме того, кодер дублирует цикл обработки декодера, так что кодер и декодер генерируют одинаковые предсказания (например, внутреннее предсказание и внешнее предсказание) и/или реконструкцию для обработки, то есть для кодирования следующего блока.[0091] Some H.261 video coding standards are designed for "hybrid lossy video codecs" (ie, spatial and temporal sample-domain prediction is combined with 2D transform coding to apply transform-domain quantization). Each picture of a video sequence is usually divided into a set of non-overlapping blocks, and encoding is usually done at the block level. In other words, on the encoder side, the video is usually processed, that is, encoded at the block (video block) level. For example, a prediction block is generated by spatial (intra-frame) prediction and temporal (inter-) prediction, the prediction block is subtracted from the current block (the block currently being processed or to be processed) to obtain a residual block, and the residual block is transformed and quantized into conversion area to reduce the amount of data that must be transferred (compressed). On the decoder side, the reverse processing of the encoder is performed on the encoded or compressed block in order to reconstruct the current block for presentation. In addition, the encoder duplicates the processing cycle of the decoder, so that the encoder and decoder generate the same predictions (eg, intra prediction and inter prediction) and/or reconstruction for processing, i.e., for encoding the next block.
[0092] Ниже описывается архитектура системы, используемая в вариантах осуществления этой заявки. Фиг. 1A является схематической блок-схемой примера системы 10 кодирования и декодирования видео, используемой в вариантах осуществления этой заявки. Как показано на фиг. 1A, система 10 кодирования и декодирования видео может содержать устройство-источник 12 и устройство-адресат 14. Устройство-источник 12 генерирует кодированные видеоданные, и поэтому устройство-источник 12 может называться аппаратурой кодирования видео. Устройство-адресат 14 может декодировать кодированные видеоданные, сгенерированные устройством-источником 12, и поэтому устройство-адресат 14 может называться аппаратурой декодирования видео. В различных решениях реализации устройство-источник 12, устройство-адресат 14 или как устройство-источник 12, так и устройство-адресат 14 могут содержать один или несколько процессоров и память, связанную с одним или несколькими процессорами. Память может содержать, но не ограничивается этим, RAM, ROM, EEPROM, флэш-память или любой другой носитель, который может использоваться для хранения желаемого программного кода в форме инструкции или структуры данных, доступной для компьютера, как описано в этой спецификации. Устройство-источник 12 и устройство-адресат 14 могут содержать различные устройства, в том числе настольный компьютер, мобильное вычислительное устройство, портативный компьютер (например, портативный компьютер), планшетный компьютер, телеприставку, телефонную трубку, такую как так называемый «интеллектуальный» телефон, телевизор, камеру, устройство отображения, цифровой медиаплеер, игровую приставку, установленный на транспортном средстве компьютер, устройство беспроводной связи и т.п.[0092] The system architecture used in the embodiments of this application is described below. Fig. 1A is a schematic block diagram of an example of a video encoding and
[0093] Хотя фиг. 1A изображает устройство-источник 12 и устройство-адресат 14 как отдельные устройства, вариант осуществления устройства может альтернативно содержать как устройство-источник 12, так и устройство-адресат 14 или функциональные возможности как устройства-источника 12, так и устройства-адресата 14, то есть устройство-источник 12 или соответствующие функциональные возможности и устройство-адресат 14 или соответствующие функциональные возможности. В таком варианте осуществления устройство-источник 12 или соответствующие функциональные возможности и устройство-адресат 14 или соответствующие функциональные возможности могут быть реализованы с использованием одного и того же аппаратного и/или программного обеспечения, отдельного аппаратного и/или программного обеспечения или любой их комбинации.[0093] Although FIG. 1A depicts
[0094] Коммуникационное соединение между устройством-источником 12 и устройством-адресатом 14 может быть реализовано по линии 13 связи, а устройство-адресат 14 может принимать закодированные видеоданные от устройства-источника 12 по линии 13 связи. Линия 13 связи может содержать одно или несколько носителей или устройств, которые могут передавать закодированные видеоданные от устройства-источника 12 к устройству-адресату 14. В одном примере линия 13 связи может содержать одну или несколько сред передачи данных, которые позволяют устройству-источнику 12 напрямую передавать закодированные видеоданные на устройство-адресат 14 в реальном времени. В этом примере устройство-источник 12 может модулировать кодированные видеоданные в соответствии со стандартом связи (например, протоколом беспроводной связи) и может передавать модулированные видеоданные на устройство-адресат 14. Одна или несколько сред связи могут содержать среду беспроводной связи и/или среду проводной связи, например, радиочастотный (RF) спектр или один или несколько физических кабелей передачи. Одна или несколько коммуникационных сред могут быть частью сети на основе пакетов, а сеть на основе пакетов представляет собой, например, локальную сеть, глобальную сеть или глобальную сеть (например, Интернет). Одна или несколько коммуникационных сред могут содержать маршрутизатор, коммутатор, базовую станцию или другое устройство, которое обеспечивает связь от устройства-источника 12 к устройству-адресату 14.[0094] The communication connection between the
[0095] Устройство-источник 12 содержит кодер 20. Необязательно, устройство-источник 12 может дополнительно содержать источник 16 изображения, препроцессор 18 изображения и интерфейс 22 связи. В конкретной реализации кодер 20, источник 16 изображения, препроцессор 18 изображения и интерфейс 22 связи могут быть аппаратными компонентами в устройстве-источнике 12 или могут быть программами программного обеспечения в устройстве-источнике 12. Описания предоставляются отдельно следующим образом:[0095]
[0096] Источник 16 изображения может содержать или может быть устройством захвата изображения любого типа, сконфигурированным, например, для захвата изображения реального мира; и/или устройством любого типа для генерирования изображения или комментария (для кодирования содержимого экрана некоторый текст на экране также рассматривается как часть картинки или изображения, подлежащего кодированию), например процессор компьютерной графики сконфигурирован для генерирования компьютерного анимационного изображения; или устройство любого типа, сконфигурированное для получения и/или предоставления изображения реального мира или компьютерного анимационного изображения (например, содержимого экрана или изображения виртуальной реальности (virtual reality, VR)); и/или любое их сочетание (например, изображение дополненной реальности (augmented reality, AR)). Источник 16 изображения может быть камерой, сконфигурированной для захвата изображения, или памятью, сконфигурированной для хранения изображения. Источник 16 изображения может дополнительно содержать интерфейс любого типа (внутренний или внешний), через который ранее захваченное или сгенерированное изображение сохраняется и/или изображение получается или принимается. Когда источником 16 изображения является камера, источником 16 изображения может быть, например, локальная камера или встроенная камера, встроенная в устройство-источник. Когда источник 16 изображения является памятью, источник 16 изображения может быть локальной памятью или, например, встроенной памятью, встроенной в устройство-источник. Когда источник 16 изображения содержит интерфейс, этот интерфейс может быть, например, внешним интерфейсом для приема изображения от внешнего источника видео. Внешний источник видео представляет собой, например, внешнее устройство захвата изображения, такое как камера, внешняя память или внешнее устройство генерирования изображения. Внешнее устройство генерирования изображения представляет собой, например, внешний компьютерный графический процессор, компьютер или сервер. Интерфейс может быть интерфейсом любого типа, например, проводным или беспроводным интерфейсом или оптическим интерфейсом, в соответствии с любым частным или стандартизованным протоколом интерфейса.[0096] The image source 16 may comprise or may be any type of image capturing device configured to, for example, capture an image of the real world; and/or any type of device for generating an image or comment (to encode screen content, some text on the screen is also considered part of the picture or image to be encoded), such as a computer graphics processor configured to generate a computer animation image; or any type of device configured to receive and/or provide a real-world image or a computer-animated image (eg, screen content or virtual reality (VR) image); and / or any combination of them (for example, an image of augmented reality (augmented reality, AR)). Image source 16 may be a camera configured to capture an image or a memory configured to store an image. Image source 16 may further comprise any type of interface (internal or external) through which a previously captured or generated image is stored and/or an image is acquired or received. When the image source 16 is a camera, the image source 16 may be, for example, a local camera or an integrated camera built into the source device. When the image source 16 is a memory, the image source 16 may be a local memory or, for example, a built-in memory built into the source device. When the image source 16 contains an interface, this interface may be, for example, an external interface for receiving an image from an external video source. The external video source is, for example, an external image capture device such as a camera, external memory, or an external image generating device. The external image generating device is, for example, an external computer graphics processor, a computer or a server. The interface may be any type of interface, such as a wired or wireless interface, or an optical interface, in accordance with any proprietary or standardized interface protocol.
[0097] Изображение можно рассматривать как двумерный массив или матрицу элементов пикселей (элемент изображения). Элемент пикселя в массиве также может называться выборкой. Количество выборок в горизонтальном и вертикальном направлениях (или осях) массива или изображения определяет размер и/или разрешение изображения. Для представления цвета обычно используются три цветовых компонента, в частности, изображение может быть представлено в виде трех массивов выборок или содержать их. Например, в формате RBG или цветовом пространстве изображение содержит соответствующие массивы выборок красного, зеленого и синего цветов. Однако при кодировании видео каждый пиксель обычно представлен в формате яркости/цветности или цветовом пространстве. Например, изображение в формате YUV содержит компонент яркости, обозначенный Y (иногда вместо этого обозначаемый L), и два компонента цветности, обозначенные U и V. Компонент яркости (luma) Y представляет яркость или интенсивность уровня серого (например, оба одинаковы в изображении с оттенками серого), и два компонента цветности (chroma) U и V представляют собой компоненты цветности или информации о цвете. Соответственно, изображение в формате YUV содержит массив выборок яркости значений выборок яркости (Y) и два массива выборок цветности значений цветности (U и V). Изображения в формате RGB можно преобразовать или конвертировать в формат YUV и наоборот. Этот процесс также называется конверсией цвета или преобразованием. Если изображение является монохромным, оно может содержать только массив выборок яркости. В этом варианте осуществления этой заявки изображение, переданное источником 16 изображения в процессор изображения, также может называться необработанными данными 17 изображения.[0097] An image can be viewed as a two-dimensional array or matrix of pixel elements (image element). A pixel element in an array can also be called a selection. The number of samples in the horizontal and vertical directions (or axes) of an array or image determines the size and/or resolution of the image. Three color components are usually used to represent a color, in particular, an image can be represented as three arrays of samples or contain them. For example, in RBG format or color space, an image contains corresponding arrays of red, green, and blue color samples. However, in video encoding, each pixel is typically represented in a luma/chrominance format or color space. For example, a YUV image contains a luma component labeled Y (sometimes labeled L instead) and two chrominance components labeled U and V. The luminance (luma) component Y represents the brightness or intensity of the gray level (for example, both are the same in a grayscale), and the two chroma components U and V are chrominance or color information components. Accordingly, a YUV image contains an array of luma samples of luminance sample values (Y) and two chrominance sample arrays of chrominance values (U and V). Images in RGB format can be converted or converted to YUV format and vice versa. This process is also called color conversion or conversion. If the image is monochrome, it can only contain an array of brightness samples. In this embodiment of this application, the image transmitted by the image source 16 to the image processor may also be referred to as
[0098] Препроцессор 18 изображения сконфигурирован для приема необработанных данных 17 изображения и выполнения предварительной обработки необработанных данных 17 изображения для получения предварительно обработанного изображения 19 или предварительно обработанных данных 19 изображения. Например, предварительная обработка, выполняемая препроцессором 18 изображения, может содержать обрезку, конверсию цветового формата (например, из формата RGB в формат YUV), цветокоррекцию или уменьшение шума.[0098] The image preprocessor 18 is configured to receive the
[0099] Кодер 20 (или называемый видеокодером 20) сконфигурирован для приема предварительно обработанных данных 19 изображения и обработки предварительно обработанных данных 19 изображения с использованием соответствующего режима предсказания (например, режима предсказания в каждом варианте осуществления данной спецификации), чтобы предоставить данные 21 закодированного изображения (структурные детали кодера 20 дополнительно описаны ниже на основе фиг. 2, фиг. 4 или фиг. 5). В некоторых вариантах осуществления кодер 20 может быть сконфигурирован для выполнения каждого варианта осуществления, описанного ниже, для реализации применения на стороне кодера способа предсказания блока цветности, описанного в этой заявке.[0099] An encoder 20 (or referred to as a video encoder 20) is configured to receive preprocessed
[00100] Интерфейс 22 связи может быть сконфигурирован для приема данных 21 закодированного изображения и передачи данных 21 закодированного изображения на устройство-адресат 14 или любое другое устройство (например, память) по линии 13 связи для хранения или прямого восстановления (реконструкции). Другое устройство может быть любым устройством, используемым для декодирования или хранения. Интерфейс 22 связи может быть, например, сконфигурирован для упаковки данных 21 закодированного изображения в соответствующий формат, например пакет данных, для передачи по линии 13 связи.[00100]
[00101] Устройство-адресат 14 содержит декодер 30. Необязательно, устройство-адресат 14 может дополнительно содержать интерфейс 28 связи, постпроцессор 32 изображения и устройство 34 отображения. Описания предоставляются отдельно следующим образом:[00101]
[00102] Интерфейс 28 связи может быть сконфигурирован для приема данных 21 закодированного изображения от устройства-источника 12 или любого другого источника. Любой другой источник - это, например, запоминающее устройство. Запоминающее устройство представляет собой, например, устройство хранения данных закодированного изображения. Интерфейс 28 связи может быть сконфигурирован для передачи или приема данных 21 закодированного изображения по линии 13 связи между устройством-источником 12 и устройством-адресатом 14 или по сети любого типа. Линия 13 связи представляет собой, например, прямое проводное или беспроводное соединение. Любой тип сети представляет собой, например, проводную или беспроводную сеть или любую их комбинацию, или любой тип частной или общедоступной сети, или любую их комбинацию. Интерфейс 28 связи может быть, например, сконфигурирован для расформирования пакета данных, передаваемого через интерфейс 22 связи, для получения данных 21 закодированного изображения.[00102] Communication interface 28 may be configured to receive encoded
[00103] И интерфейс 28 связи, и интерфейс 22 связи могут быть сконфигурированы как интерфейсы однонаправленной связи или интерфейсы двунаправленной связи, и могут быть сконфигурированы, например, для отправки и приема сообщений для установки соединения, а также подтверждения и обмена любой другой информацией, относящейся к линии связи и/или передаче данных, такой как передача данных закодированного изображения.[00103] Both communication interface 28 and
[00104] Декодер 30 (или называемый декодером 30) сконфигурирован для приема данных 21 закодированного изображения и предоставления данных 31 декодированного изображения или декодированного изображения 31 (структурные детали декодера 30 дополнительно описаны ниже на основе фиг. 3, фиг. 4 или 5). В некоторых вариантах осуществления декодер 30 может быть сконфигурирован для выполнения каждого варианта осуществления, описанного ниже, для реализации на стороне декодера способа предсказания блока цветности, описанного в этой заявке, на стороне декодера.[00104] Decoder 30 (or referred to as decoder 30) is configured to receive encoded
[00105] Постпроцессор 32 изображения сконфигурирован для постобработки данных 31 декодированного изображения (также называемых данными реконструированного (восстановленного) изображения) для получения данных 33 постобработанного изображения. Постобработка, выполняемая постпроцессором 32 изображения, может содержать конверсию формата цвета (например, из формы YUV в формат RGB), цветокоррекцию, обрезку, повторную выборку или любую другую обработку. Постпроцессор 32 изображения может быть дополнительно сконфигурирован для передачи данных 33 постобработанного изображения на устройство 34 отображения.[00105] The image post-processor 32 is configured to post-process decoded image data 31 (also referred to as reconstructed (reconstructed) image data) to obtain
[00106] Устройство 34 отображения сконфигурировано для приема данных 33 изображения с постобработкой, чтобы отображать изображение, например, пользователю или зрителю. Устройство 34 отображения может быть или может содержать любой тип дисплея для представления восстановленного изображения, например встроенный или внешний дисплей или монитор. Например, дисплей может содержать жидкокристаллический дисплей (liquid crystal display, LCD), дисплей с органическим светоизлучающим диодом (organic light emitting diode, OLED), плазменный дисплей, проектор, микросветодиодный дисплей, жидкокристаллический дисплей на кремнии (liquid crystal on silicon, LCoS), цифровой световой процессор (digital light processor, DLP) или любой другой дисплей.[00106] The
[00107] Хотя фиг. 1A изображает устройство-источник 12 и устройство-адресат 14 как отдельные устройства, вариант осуществления устройства может альтернативно содержать как устройство-источник 12, так и устройство-адресат 14 или функциональные возможности как устройства-источника 12, так и устройства-адресата 14, то есть устройство-источник 12 или соответствующие функциональные возможности и устройство-адресат 14 или соответствующие функциональные возможности. В таком варианте осуществления устройство-источник 12 или соответствующие функциональные возможности и устройство-адресат 14 или соответствующие функциональные возможности могут быть реализованы с использованием одного и того же аппаратного и/или программного обеспечения, отдельного аппаратного и/или программного обеспечения или любой их комбинации.[00107] Although FIG. 1A depicts
[00108] Как будет очевидно для специалиста в данной области на основании описаний, существования и (точного) разделения функциональных возможностей различных блоков или функциональных возможностей устройства-источника 12 и/или устройства-адресата 14, показанных на фиг. 1A может отличаться в зависимости от фактического устройства и применения. Устройство-источник 12 и устройство-адресат 14 могут содержать любое из широкого диапазона устройств, включая любой тип портативного или стационарного устройства, например ноутбук или портативный компьютер, мобильный телефон, смартфон, планшет или планшетный компьютер, видеокамера, настольный компьютер, телевизионная приставка, телевизор, камера, устройство, установленное на транспортном средстве, устройство отображения, цифровой медиаплеер, игровая консоль, устройство потоковой передачи видео (например, сервер службы контента или сервер доставки контента), устройство приемника вещания или устройство передатчика вещания и может использовать или не использовать любой тип операционной системы.[00108] As will be apparent to one of skill in the art based on the descriptions, existence, and (exact) separation of the functionality of the various blocks or functionality of
[00109] Кодер 20 и декодер 30 каждый может быть реализован как одна из различных подходящих схем, например, один или несколько микропроцессоров, процессоров цифровых сигналов (digital signal processor, DSP), интегральные схемы для конкретных приложений (application-specific integrated circuit, ASIC), программируемые пользователем вентильные матрицы (field-programmable gate array, FPGA), дискретная логика, оборудование или любая их комбинация. Если технологии реализованы частично с использованием программного обеспечения, устройство может хранить программную инструкцию на подходящем энергонезависимом машиночитаемом носителе данных и может выполнять инструкцию с использованием аппаратного обеспечения, такого как один или несколько процессоров, для реализации технологий этого раскрытия. Любой из вышеуказанного контента (включая оборудование, программное обеспечение, комбинацию аппаратного и программного обеспечения и т.п.) может рассматриваться как один или несколько процессоров.[00109]
[00110] В некоторых случаях система 10 кодирования и декодирования видео, показанная на фиг. 1A является просто примером, и технологии этой заявки применимы к настройкам кодирования видео (например, кодирования видео или декодирования видео), которые не обязательно содержат какой-либо обмен данными между устройством кодирования и устройством декодирования. В другом примере данные могут быть извлечены из локальной памяти, переданы в потоковом режиме по сети и т.п. Устройство кодирования видео может кодировать данные и сохранять данные в памяти, и/или устройство декодирования видео может извлекать данные из памяти и декодировать данные. В некоторых примерах кодирование и декодирование выполняются устройствами, которые не обмениваются данными друг с другом, а просто кодируют данные в память и/или извлекают данные из памяти и декодируют данные.[00110] In some cases, the video encoding and
[00111] ФИГ. 1B - схема, иллюстрирующая пример системы 40 кодирования видео, включающей в себя кодер 20 на фиг. 2 и/или декодер 30 на фиг. 3 согласно примерному варианту осуществления. Система 40 кодирования видео может реализовывать комбинацию различных технологий в вариантах осуществления этой заявки. В проиллюстрированной реализации система 40 кодирования видео может содержать устройство 41 формирования изображения, кодер 20, декодер 30 (и/или кодер/декодер видео, реализованный логической схемой 47 блока 46 обработки), антенну 42, один или несколько процессоров 43, одно или несколько запоминающих устройств 44 и/или устройство 45 отображения.[00111] FIG. 1B is a diagram illustrating an example of a video encoding system 40 including
[00112] Как показано на фиг. 1B, устройство 41 формирования изображения, антенна 42, блок 46 обработки, логическая схема 47, кодер 20, декодер 30, процессор 43, память 44 и/или устройство 45 отображения могут обмениваться данными друг с другом. Как описано, хотя система 40 кодирования видео проиллюстрирована как с кодером 20, так и с декодером 30, в различных примерах система 40 кодирования видео может содержать только кодер 20 или только декодер 30.[00112] As shown in FIG. 1B, imager 41, antenna 42, processing unit 46, logic circuit 47,
[00113] В некоторых примерах антенна 42 может быть сконфигурирована для передачи или приема закодированного битового потока видеоданных. Кроме того, в некоторых примерах устройство 45 отображения может быть сконфигурировано для представления видеоданных. В некоторых примерах логическая схема 47 может быть реализована блоком 46 обработки. Блок 46 обработки может содержать логику интегральной схемы для конкретных приложений (application-specific integrated circuit, ASIC), графический процессор, универсальный процессор и т.п. Система 40 кодирования видео также может содержать дополнительный процессор 43. Аналогичным образом, дополнительный процессор 43 может содержать логику интегральной схемы для конкретных приложений (application-specific integrated circuit, ASIC), графический процессор, универсальный процессор и т.п. В некоторых примерах логическая схема 47 может быть реализована аппаратными средствами, например, специализированным оборудованием для кодирования видео, а процессор 43 может быть реализован с использованием программного обеспечения общего назначения, операционной системы и т.п. Кроме того, память 44 может быть любым типом памяти, например, энергозависимой памятью (например, статической памятью с произвольным доступом (Static Random Access Memory, SRAM) или динамической памятью с произвольным доступом (Dynamic Random Access Memory, DRAM)), или энергонезависимой памятью (например, флэш-памятью). В неограничивающем примере память 44 может быть реализована с помощью кэш-памяти. В некоторых примерах логическая схема 47 может обращаться к памяти 44 (например, для реализации буфера изображения). В других примерах логическая схема 47 и/или блок 46 обработки могут содержать память (например, кэш) для реализации буфера изображения или тому подобного.[00113] In some examples, antenna 42 may be configured to transmit or receive an encoded video bitstream. In addition, in some examples, display device 45 may be configured to present video data. In some examples, logic circuit 47 may be implemented by processing unit 46. The processing unit 46 may comprise application-specific integrated circuit (ASIC) logic, a graphics processor, a general purpose processor, and the like. The video encoding system 40 may also include an additional processor 43. Similarly, the additional processor 43 may contain application-specific integrated circuit (ASIC) logic, a graphics processor, a general purpose processor, and the like. In some examples, logic circuitry 47 may be implemented in hardware, such as dedicated video coding hardware, and processor 43 may be implemented using general purpose software, an operating system, or the like. In addition, the memory 44 may be any type of memory, such as volatile memory (for example, static random access memory (Static Random Access Memory, SRAM) or dynamic random access memory (Dynamic Random Access Memory, DRAM)), or non-volatile memory (for example, flash memory). In a non-limiting example, memory 44 may be implemented with a cache. In some examples, logic circuitry 47 may access memory 44 (eg, to implement an image buffer). In other examples, logic circuitry 47 and/or processing unit 46 may contain a memory (eg, cache) for implementing an image buffer or the like.
[00114] В некоторых примерах кодер 20, реализованный логической схемой, может содержать буфер изображения (например, реализованный блоком 46 обработки или памятью 44) и блок обработки графики (например, реализованный блоком 46 обработки). Графический процессор может быть коммуникативно связан с буфером изображения. Блок обработки графики может содержать кодер 20, реализованный логической схемой 47, для реализации различных модулей, которые описаны со ссылкой на фиг. 2 и/или любую другую систему или подсистему кодера, описанную в этой спецификации. Логическая схема может быть сконфигурирована для выполнения различных операций, описанных в этой спецификации.[00114] In some examples,
[00115] В некоторых примерах декодер 30 может быть реализован логической схемой 47 аналогичным образом для реализации различных модулей, которые описаны со ссылкой на декодер 30 на фиг. 3 и/или любую другую систему или подсистему декодера, описанную в этой спецификации. В некоторых примерах декодер 30, реализованный логической схемой, может содержать буфер изображения (например, реализованный блоком 2820 обработки или памятью 44) и блок обработки графики (например, реализованный блоком 46 обработки). Графический процессор может быть коммуникативно связан с буфером изображения. Блок обработки графики может содержать декодер 30, реализованный логической схемой 47, для реализации различных модулей, которые описаны со ссылкой на фиг. 3 и/или любую другую систему или подсистему декодера, описанную в этой спецификации.[00115] In some examples,
[00116] В некоторых примерах антенна 42 может быть сконфигурирована для приема кодированного битового потока видеоданных. Как описано, кодированный битовый поток может содержать данные, указатель, значение индекса, данные выбора режима и т.п., относящиеся к кодированию видеокадров, описанному в этой спецификации, например, данные, относящиеся к разделению кодирования (например, коэффициент преобразования или квантованный коэффициент преобразования, необязательный указатель (как описано) и/или данные, которые определяют разделение кодирования). Система 40 кодирования видео может дополнительно содержать декодер 30, подключенный к антенне 42 и сконфигурированный для декодирования кодированного битового потока. Устройство 45 отображения сконфигурировано для представления видеокадра.[00116] In some examples, antenna 42 may be configured to receive an encoded video bitstream. As described, the encoded bitstream may contain data, a pointer, an index value, mode selection data, and the like, related to the encoding of video frames described in this specification, such as data related to coding separation (for example, a transform coefficient or a quantized coefficient conversions, an optional pointer (as described), and/or data that defines an encoding split). Video coding system 40 may further comprise a
[00117] Следует понимать, что в этом варианте осуществления этой заявки для примера, описанного со ссылкой на кодер 20, декодер 30 может быть сконфигурирован для выполнения обратного процесса. Что касается сигнализации элемента синтаксиса, декодер 30 может быть сконфигурирован для приема и синтаксического анализа такого элемента синтаксиса и, соответственно, декодирования связанных видеоданных. В некоторых примерах кодер 20 может энтропийно кодировать элемент синтаксиса в кодированном битовом потоке видео. В таких примерах декодер 30 может синтаксически анализировать элемент синтаксиса и, соответственно, декодировать связанные видеоданные.[00117] It should be understood that in this embodiment of this application for the example described with reference to
[00118] Следует отметить, что способ, описанный в вариантах осуществления этой заявки, в основном используется в процессе внешнего предсказания. Этот процесс выполняется как кодером 20, так и декодером 30. Кодер 20 и декодер 30 в вариантах осуществления этой заявки могут быть, например, кодером и декодером, соответствующими протоколу стандарта видео, например H.263, H.264, HEVC, MPEG-2, MPEG-4, VP8, или VP9, или протокол стандарта видео следующего поколения (например, H.266).[00118] It should be noted that the method described in the embodiments of this application is mainly used in the inter prediction process. This process is performed by both
[00119] ФИГ. 2 является схематической/концептуальной блок-схемой примера кодера 20 для реализации вариантов осуществления этой заявки. В примере на фиг. 2, кодер 20 содержит блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, буфер 216, блок 220 контурного фильтра, буфер декодированного изображения (decoded picture buffer, DPB) 230, блок 260 обработки предсказания и блок 270 энтропийного кодирования. Блок 260 обработки предсказания может содержать блок 244 внешнего предсказания, блок 254 внутреннего предсказания и блок 262 выбора режима. Блок 244 внешнего предсказания может содержать модуль оценки движения и блок компенсации движения (не показаны). Кодер 20, показанный на фиг. 2 также может называться гибридным видеокодером или видеокодером согласно гибридному видеокодеку.[00119] FIG. 2 is a schematic/conceptual block diagram of an
[00120] Например, блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 260 обработки предсказания и блок 270 энтропийного кодирования образуют прямой путь сигнала кодера 20, в то время как, например, модуль обратного квантования 210, блок 212 обработки обратного преобразования, блок 214 восстановления, буфер 216, контурный фильтр 220, буфер 230 декодированного изображения (decoded picture buffer, DPB) и блок 260 обработки предсказания образуют обратный путь сигнала кодера. Обратный путь сигнала кодера соответствует пути сигнала декодера (ссылаясь на декодер 30 на фиг.3).[00120] For example, the residual calculation unit 204, the
[00121] Кодер 20 принимает, например, через вход 202 изображение 201 или блок 203 изображения для изображения 201, например изображение в последовательности изображений, образующих видео или видеопоследовательность. Блок 203 изображения может также называться текущим блоком изображения или блоком изображения, который должен быть закодирован. Изображение 201 может упоминаться как текущее изображение или изображение, которое должно быть закодировано (в частности, при кодировании видео, чтобы отличать текущее изображение от других изображений, например, ранее кодированных и/или декодированных изображений той же видеопоследовательности, то есть видеопоследовательности, которая также включает текущее изображение).[00121]
[00122] Вариант осуществления кодера 20 может содержать блок разделения (который не показан на фиг. 2), сконфигурированный для разделения изображения 201 на множество блоков, таких как блоки 203 изображения. Изображение 201 обычно разделяется на множество неперекрывающихся блоков. Блок разделения может быть сконфигурирован для использования одного и того же размера блока для всех изображений в видеопоследовательности и соответствующей сетки, определяющей размер блока, или изменения размера блока между изображениями, или поднаборами, или группами изображений, и разделения каждого изображения на соответствующие блоки.[00122] An embodiment of the
[00123] В одном примере блок 260 обработки предсказания в кодере 20 может быть сконфигурирован для выполнения любой комбинации технологий разделения, описанных выше.[00123] In one example,
[00124] Подобно изображению 201, блок 203 изображения также рассматривается или может рассматриваться как двумерный массив или матрица выборок со значениями выборок, хотя размер блока 203 изображения меньше, чем размер изображения 201. Другими словами, блок 203 изображения может содержать, например, один массив выборок (например, массив яркости в случае монохромного изображения 201), три массива выборок (например, один массив яркости и два массива цветности в случае цветного изображения) или любое другое количество и/или тип массивов в зависимости от применяемого цветового формата. Количество выборок в горизонтальном и вертикальном направлениях (или осях) блока 203 изображения определяет размер блока 203 изображения.[00124] Like image 201, image block 203 is also or may be considered as a two-dimensional array or matrix of samples with sample values, although the size of image block 203 is smaller than the size of image 201. In other words, image block 203 may contain, for example, one array samples (eg, a luminance array in the case of a monochrome image 201), three arrays of samples (eg, one luminance array and two chrominance arrays in the case of a color image), or any other number and/or type of arrays depending on the color format used. The number of samples in the horizontal and vertical directions (or axes) of the image block 203 determines the size of the image block 203 .
[00125] Кодер 20, показанный на фиг. 2 сконфигурирован для поблочного кодирования изображения 201. Например, кодирование и предсказание выполняются для каждого блока 203 изображения.[00125] The
[00126] Блок 204 вычисления остатка сконфигурирован для вычисления остаточного блока 205 на основе блока 203 изображения и блока 265 предсказания (дополнительные подробности о блоке 265 предсказания предоставлены ниже), например, путем вычитания значений выборок блока 265 предсказания из значений выборки блока 203 изображения выборка за выборкой (пиксель за пикселем), чтобы получить остаточный блок 205 в области выборки.[00126] Residual block 204 is configured to calculate residual block 205 based on image block 203 and predictor 265 (more details about
[00127] Блок 206 обработки преобразования сконфигурирован для применения преобразования, например, дискретного косинусного преобразования (discrete cosine transform, DCT) или дискретного синусоидального преобразования (discrete sine transform, DST), к значениям выборки остаточного блока 205 для получения коэффициентов 207 преобразования в области преобразования. Коэффициент 207 преобразования также может называться остаточным коэффициентом преобразования и представляет остаточный блок 205 в области преобразования.[00127] The
[00128] Блок 206 обработки преобразования может быть сконфигурирован для применения целочисленных аппроксимаций DCT/DST, таких как преобразования, указанные в HEVC/H.265. По сравнению с ортогональным преобразованием DCT, такие целочисленные аппроксимации обычно масштабируются на основе коэффициента. Чтобы сохранить норму остаточного блока, который обрабатывается с использованием прямого и обратного преобразований, дополнительный масштабный коэффициент применяется как часть процесса преобразования. Масштабный коэффициент обычно выбирается на основе некоторых ограничений, например, масштабный коэффициент является степенью двойки для операции сдвига, битовой глубиной коэффициента преобразования и компромиссом между точностью и затратами на реализацию. Например, конкретный масштабный коэффициент указан для обратного преобразования, например, блоком 212 обработки обратного преобразования на стороне декодера 30 (и соответствующее обратное преобразование, например, блоком 212 обработки обратного преобразования на стороне кодера 20), и, соответственно, соответствующий масштабный коэффициент может быть указан для прямого преобразования блоком 206 обработки преобразования на стороне кодера 20.[00128]
[00129] Блок 208 квантования сконфигурирован для квантования коэффициентов 207 преобразования для получения квантованных коэффициентов 209 преобразования, например, путем применения скалярного квантования или векторного квантования. Квантованный коэффициент 209 преобразования также может упоминаться как квантованный остаточный коэффициент 209. Процесс квантования может уменьшить битовую глубину, относящуюся к некоторым или всем коэффициентам 207 преобразования. Например, n-битовый коэффициент преобразования может быть округлен до m-битового коэффициента преобразования во время квантования, где n больше m. Степень квантования может быть модифицирована путем регулировки параметра квантования (quantization parameter, QP). Например, для скалярного квантования могут использоваться разные масштабы для достижения более точного или более грубого квантования. Меньший размер шага квантования соответствует более точному квантованию, а больший размер шага квантования соответствует более грубому квантованию. Соответствующий размер шага квантования может быть указан параметром квантования (quantization parameter, QP). Например, параметр квантования может быть индексом для заранее определенного набора подходящих размеров шага квантования. Например, меньший параметр квантования может соответствовать более точному квантованию (меньшему размеру шага квантования), а больший параметр квантования может соответствовать более грубому квантованию (большему размеру шага квантования) или наоборот. Квантование может содержать деление на размер шага квантования и соответствующее квантование или обратное квантование, например, выполняемое блоком 210 обратного квантования, или может содержать умножение на размер шага квантования. В вариантах осуществления согласно некоторым стандартам, таким как HEVC, параметр квантования может использоваться для определения размера шага квантования. Обычно размер шага квантования может быть вычислен на основе параметра квантования с использованием аппроксимации с фиксированной точкой уравнения, включающего в себя деление. Дополнительные масштабные коэффициенты могут быть введены для квантования и деквантования, чтобы восстановить норму остаточного блока, где норма остаточного блока может быть модифицирована из-за масштаба, используемого в аппоксимации фиксированной точки уравнения для размера шага квантования и параметра квантования. В примерной реализации масштаб обратного преобразования может быть объединен с масштабом деквантования. В качестве альтернативы настроенная таблица квантования может использоваться и передаваться сигнализацией от кодера к декодеру, например, в битовом потоке. Квантование - это операция с потерями, при которой потери возрастают с увеличением размера шага квантования.[00129] The
[00130] Блок 210 обратного квантования сконфигурирован для применения обратного квантования блока 208 квантования к квантованному коэффициенту для получения деквантованного коэффициента 211, например, применения на основе или с использованием того же размера шага квантования, что и блок 208 квантования, инверсии схемы квантования, применяемой блоком 208 квантования. Деквантованный коэффициент 211 также может упоминаться как деквантованный остаточный коэффициент 211 и соответствовать коэффициенту 207 преобразования, хотя деквантованный коэффициент 211 обычно отличается от коэффициента преобразования из-за потерь, вызванных квантованием.[00130] The
[00131] Блок 212 обработки обратного преобразования сконфигурирован для применения обратного преобразования для преобразования, применяемого блоком 206 обработки преобразования, например, обратного дискретного косинусного преобразования (discrete cosine transform, DCT) или обратного дискретного синусоидального преобразования (discrete sine transform, DST), чтобы получить блок 213 обратного преобразования в области выборки. Блок 213 обратного преобразования также может называться блоком 213 деквантования обратного преобразования или остаточным блоком 213 обратного преобразования.[00131] The inverse
[00132] Блок 214 восстановления (например, сумматор 214) сконфигурирован для добавления блока 213 обратного преобразования (а именно, восстановленного остаточного блока 213) к блоку 265 предсказания, например, путем добавления значений выборок восстановленного остаточного блока 213 и значений выборок блока 265 предсказания, чтобы получить восстановленный блок 215 в области выборки.[00132] Restoration block 214 (e.g., adder 214) is configured to add inverse transform block 213 (namely, restored residual block 213) to prediction block 265, for example, by adding sample values of recovered residual block 213 and sample values of
[00133] Необязательно, блок 216 буфера («буфер» 216 для краткости), например, линейный буфер 216, сконфигурирован для буферизации или хранения восстановленного блока 215 и соответствующего значения выборки, например, для внутреннего предсказания. В других вариантах осуществления кодер может быть сконфигурирован для использования нефильтрованного восстановленного блока и/или соответствующего значения выборки, которые хранятся в блоке 216 буфера, для выполнения любого типа оценки и/или предсказания, например, внутреннего предсказания.[00133] Optionally, buffer block 216 ("buffer" 216 for short), eg, linear buffer 216, is configured to buffer or store the reconstructed block 215 and the corresponding sample value, eg, for intra prediction. In other embodiments, the encoder may be configured to use the unfiltered reconstructed block and/or the corresponding sample value stored in buffer block 216 to perform any type of estimation and/or prediction, such as intra prediction.
[00134] Например, в варианте осуществления кодер 20 может быть сконфигурирован так, чтобы блок 216 буфера сконфигурирован для хранения восстановленного блока 215, не только используемого для блока 254 внутреннего предсказания, но также используемого для блока 220 контурного фильтра (который не показан на фиг.2), и/или так, что, например, блок 216 буфера и блок 230 буфера декодированного изображения образуют один буфер. В других вариантах осуществления фильтрованный блок 221 и/или блок или выборка (которые не показаны на фиг.2) из буфера 230 декодированных изображений используется в качестве базиса или основы для блока 254 внутреннего предсказания.[00134] For example, in an embodiment,
[00135] Блок 220 контурного фильтра («контурный фильтр» 220 для краткости) сконфигурирован для фильтрации восстановленного блока 215 для получения фильтрованного блока 221, сглаживания переходов пикселей или улучшения качества видео. Блок 220 контурного фильтра предназначен для представления одного или нескольких контурных фильтров, таких как фильтр удаления блочности, фильтр с адаптивным смещением к выборке (sample-adaptive offset, SAO) или другие фильтры, например двусторонний фильтр, адаптивный контурный фильтр (adaptive loop filter, ALF), фильтр повышения резкости или сглаживания или совместный фильтр. Хотя блок 220 контурного фильтра показан на фиг. 2, в другой реализации блок 220 контурного фильтра может быть реализован как пост-контурный фильтр. Отфильтрованный блок 221 также может называться фильтрованным восстановленным блоком 221. Буфер 230 декодированных изображений может хранить восстановленный кодированный блок после того, как блок 220 контурного фильтра выполнит операцию фильтрации на восстановленном кодированном блоке.[00135] A loop filter block 220 ("loop filter" 220 for short) is configured to filter the reconstructed block 215 to obtain a filtered block 221, smooth pixel transitions, or improve video quality. The
[00136] В варианте осуществления кодер 20 (соответственно, блок 220 контурного фильтра) может быть сконфигурирован для вывода параметра контурного фильтра (например, выборочной информации адаптивного смещения), например, непосредственно или после энтропийного кодирования, выполняемого блоком 270 энтропийного кодирования или любым другим блоком энтропийного кодирования, так что декодер 30 может принимать и применять один и тот же параметр контурного фильтра для декодирования.[00136] In an embodiment, encoder 20 (respectively, loop filter block 220) may be configured to output a loop filter parameter (e.g., sample adaptive bias information), for example, directly or after entropy encoding performed by
[00137] Буфер 230 декодированных изображений (decoded picture buffer, DPB) может быть памятью опорных изображений, в которой хранятся данные опорных изображений для использования при кодировании видеоданных кодером 20. DPB 230 может быть сформирован любым из множества запоминающих устройств, таких как динамическая память с произвольным доступом (dynamic random access memory, DRAM) (включая синхронную DRAM (synchronous DRAM, SDRAM), магниторезистивную RAM (magnetoresistive RAM, MRAM), резистивную RAM (resistive RAM, RRAM)) или другие типы запоминающих устройств. DPB 230 и буфер 216 могут быть предоставлены одним и тем же запоминающим устройством или отдельными запоминающими устройствами. В примере буфер 230 декодированного изображения (decoded picture buffer, DPB) сконфигурирован для хранения отфильтрованного блока 221. Буфер 230 декодированных изображений может быть дополнительно сконфигурирован для хранения других ранее отфильтрованных блоков, например, ранее восстановленных и отфильтрованных блоков 221, одного и того же текущего изображения или разных изображений, например, ранее восстановленных изображений, и может предоставлять полностью ранее восстановленные, то есть декодированные изображения (и соответствующие опорные блоки и выборки) и/или частично восстановленное текущее изображение (и соответствующие опорные блоки и выборки), например, для внешнего предсказания. В одном примере, если восстановленный блок 215 восстанавливается без внутриконтурной фильтрации, буфер 230 декодированного изображения (decoded picture buffer, DPB) конфигурируется для хранения восстановленного блока 215.[00137] Decoded picture buffer (DPB) 230 may be a reference picture memory that stores reference picture data for use in encoding video data by
[00138] Блок 260 обработки предсказания, также называемый блоком 260 обработки предсказания блока, сконфигурирован для приема или получения блока 203 изображения (текущего блока 203 изображения текущего изображения 201) и данных восстановленного изображения, например, опорных выборок того же (текущего) изображения из буфера 216 и/или данных 231 опорных изображений одного или более ранее декодированных изображений из буфера 230 декодированного изображения, и обработки таких данных для предсказания, а именно, чтобы обеспечить блок 265 предсказания, который может представлять собой блок 245 внешнего предсказания или блок 255 внутреннего предсказания.[00138] The
[00139] Блок 262 выбора режима может быть сконфигурирован для выбора режима предсказания (например, режима внутреннего или внешнего предсказания) и/или соответствующего блока 245 или 255 предсказания, который будет использоваться в качестве блока 265 предсказания, для вычисления остаточного блока 205 и для восстановления восстановленного блока 215.[00139] The mode selector 262 may be configured to select a prediction mode (e.g., intra or inter prediction mode) and/or an appropriate prediction block 245 or 255 to be used as
[00140] В варианте осуществления блок 262 выбора режима может быть сконфигурирован для выбора режима предсказания (например, из режимов предсказания, поддерживаемых блоком 260 обработки предсказания), где режим предсказания обеспечивает наилучшее совпадение или, другими словами, минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения), или обеспечивает минимальные накладные расходы на сигнализацию (минимальные накладные расходы на сигнализацию означают лучшее сжатие для передачи или хранения), или учитывает или уравновешивает и то, и другое. Блок 262 выбора режима может быть сконфигурирован для определения режима предсказания на основе оптимизации искажения скорости (rate distortion optimization, RDO), то есть выбора режима предсказания, который обеспечивает минимальное искажение скорости, или выбора режима предсказания, для которого связанное искажение скорости, по меньшей мере, удовлетворяет критерию выбора режима предсказания.[00140] In an embodiment, mode selector 262 may be configured to select a prediction mode (e.g., from among the prediction modes supported by prediction processor 260) where the prediction mode provides the best match, or in other words, minimum residual (minimum residual means better compression). for transmission or storage), or provides minimal signaling overhead (lower signaling overhead means better compression for transmission or storage), or considers or balances both. The mode selector 262 may be configured to determine a prediction mode based on rate distortion optimization (RDO), i.e., selecting a prediction mode that provides minimal rate distortion, or selecting a prediction mode for which the associated rate distortion is at least , satisfies the prediction mode selection criterion.
[00141] Нижеследующее подробно описывает обработку предсказания (например, выполняемую блоком 260 обработки предсказания) и выбор режима (например, выполняемый блоком 262 выбора режима), которые выполняются примером для кодера 20.[00141] The following describes in detail the prediction processing (eg, performed by prediction processing block 260) and mode selection (eg, performed by mode selection block 262) that are performed by the example for
[00142] Как описано выше, кодер 20 сконфигурирован для определения или выбора наилучшего или оптимального режима предсказания из набора (заранее определенных) режимов предсказания. Набор режимов предсказания может содержать, например, режим внутреннего предсказания и/или режим внешнего предсказания.[00142] As described above,
[00143] Набор режимов внутреннего предсказания может содержать 35 различных режимов внутреннего предсказания, например, ненаправленные режимы, такие как режим DC (или средний) и планарный режим, или направленные режимы, такие как определенные в H.265, или могут содержать 67 различных режимов внутреннего предсказания, например, ненаправленные режимы, такие как режим DC (или средний) и планарный режим, или направленные режимы, такие как те, которые определены в H.266, находящемся в стадии разработки.[00143] The intra prediction mode set may contain 35 different intra prediction modes, such as non-directional modes such as DC (or average) mode and planar mode, or directional modes such as those defined in H.265, or may contain 67 different modes intra prediction, such as non-directional modes such as DC (or average) mode and planar mode, or directional modes such as those defined in H.266 under development.
[00144] В возможной реализации набор режимов внешнего предсказания зависит от доступных опорных изображений (а именно, например, по меньшей мере, частично декодированных изображений, хранящихся в DBP 230, как описано выше), и других параметров внешнего предсказания, например, зависит от того, все опорное изображение или только часть опорного изображения, например, область окна поиска вокруг области текущего блока, используется для поиска наиболее подходящего опорного блока и/или, например, зависит от того, применяется ли интерполяция пикселей такая как интерполяция полупикселя и/или четверти пикселя. Набор режимов внешнего предсказания может содержать, например, режим расширенного предсказания вектора движения (Advanced Motion Vector Prediction, AMVP) и режим слияния (merge). В конкретной реализации набор режимов внешнего предсказания может содержать режим AMVP на основе уточненной контрольной точки и режим слияния на основе уточненной контрольной точки в вариантах осуществления этой заявки. В примере блок 254 внутреннего предсказания может быть сконфигурирован для выполнения любой комбинации технологий внешнего предсказания, описанных ниже.[00144] In an exemplary implementation, the set of inter prediction modes depends on the available reference pictures (namely, for example, at least partially decoded pictures stored in
[00145] В дополнение к вышеупомянутым режимам предсказания в вариантах осуществления этой заявки также могут применяться режим пропуска и/или прямой режим.[00145] In addition to the aforementioned prediction modes, the skip mode and/or direct mode may also be applied in the embodiments of this application.
[00146] Блок 260 обработки предсказания может быть дополнительно сконфигурирован для разделения блока 203 изображения на более мелкие части блока или субблоки, например, путем итеративного использования разбиения квадродерева (quad-tree, QT), разбиения двоичного дерева (binary-tree, BT), разбиения троичного дерева (triple-tree, TT) или любую их комбинацию, и выполнения, например, предсказания для каждого из разделов блоков или субблоков. Выбор режима содержит выбор древовидной структуры разделенного блока 203 изображения и выбор режима предсказания, используемого для каждого из разделов блока или субблоков.[00146]
[00147] Блок 244 внешнего предсказания может содержать блок оценки движения (motion estimation, ME) (который не показан на фиг.2) и блок компенсации движения (motion compensation, MC) (который не показан на фиг.2). Блок оценки движения сконфигурирован для приема или получения блока 203 изображения (текущий блок 203 изображения текущего изображения 201) и декодированного изображения 231 или по меньшей мере одного или нескольких ранее восстановленных блоков, например, одного или нескольких восстановленных блоков других/отличных ранее декодированных изображений 231 для оценки движения. Например, видеопоследовательность может содержать текущее изображение и ранее декодированное изображение 31. Другими словами, текущее изображение и ранее декодированное изображение 31 могут быть частью или формировать последовательность изображений, образующих видеопоследовательность.[00147]
[00148] Например, кодер 20 может быть выполнен с возможностью выбора опорного блока из множества опорных блоков одного и того же изображения или различных изображений из множества других изображений, а также обеспечить опорное изображение и/или смещение (пространственное смещение) между местоположением (X, Y координаты) опорного блока и местоположением текущего блока в качестве параметра внешнего предсказания для блока оценки движения (который не показан на фиг. 2). Это смещение также называется вектором движения (motion vector, MV).[00148] For example,
[00149] Блок компенсации движения сконфигурирован для получения параметра внешнего предсказания и выполнения внешнего предсказания на основе или посредством использования параметра внешнего предсказания для получения блока 245 внешнего предсказания. Компенсация движения, выполняемая блоком компенсации движения (который не показан на фиг.2), может содержать выборку или генерацию блока предсказания на основе вектора движения/блока, определенного посредством оценки движения (возможно, выполнение интерполяции с точностью до субпикселей). Интерполяционная фильтрация может генерировать дополнительные выборки пикселей из известных выборок пикселей. Это потенциально увеличивает количество кандидатных блоков предсказания, которые могут использоваться для кодирования блока изображения. После приема вектора движения для PU текущего блока изображения блок 246 компенсации движения может найти блок предсказания, на который указывает вектор движения, в одном из списков опорных изображений. Блок 246 компенсации движения также может генерировать элемент синтаксиса, связанный с блоком и слайсом видео, так что декодер 30 использует элемент синтаксиса для декодирования блока изображения в слайсе видео.[00149] The motion compensation block is configured to obtain an inter prediction parameter and perform inter prediction based on or by using the inter prediction parameter to obtain the inter prediction block 245 . The motion compensation performed by the motion compensator (which is not shown in FIG. 2) may comprise sampling or generating a prediction block based on the motion vector/block determined by the motion estimation (perhaps performing subpixel-accurate interpolation). Interpolation filtering may generate additional pixel samples from known pixel samples. This potentially increases the number of candidate prediction blocks that can be used to encode an image block. After receiving the motion vector for the PU of the current picture block, the motion compensator 246 may find the prediction block pointed to by the motion vector in one of the reference picture lists. The motion compensation block 246 may also generate a syntax element associated with the video block and slice, such that
[00150] В частности, блок 244 внешнего предсказания может передавать элемент синтаксиса в блок 270 энтропийного кодирования. Элемент синтаксиса содержит параметр внешнего предсказания (например, информацию указания выбора режима внешнего предсказания, используемого для предсказания текущего блока после прохождения множества режимов внешнего предсказания). В возможном сценарии применения, если существует только один режим внешнего предсказания, параметр внешнего предсказания может не переноситься в элементе синтаксиса. В этом случае сторона 30 декодера может непосредственно выполнять декодирование с использованием режима предсказания по умолчанию. Можно понять, что блок 244 внешнего предсказания может быть сконфигурирован для выполнения любой комбинации технологий внешнего предсказания.[00150] In particular,
[00151] Блок 254 внутреннего предсказания сконфигурирован для получения, например, приема блока 203 изображения (текущего блока изображения) и одного или нескольких ранее восстановленных блоков, например, восстановленных соседних блоков, одного и того же изображения для внутренней оценки. Например, кодер 20 может быть сконфигурирован для выбора режима внутреннего предсказания из множества (заранее определенных) режимов внутреннего предсказания.[00151] The intra prediction unit 254 is configured to obtain, for example, receiving an image block 203 (the current image block) and one or more previously reconstructed blocks, such as reconstructed adjacent blocks, of the same image for intra estimation. For example,
[00152] В варианте осуществления кодер 20 может быть сконфигурирован для выбора режима внутреннего предсказания согласно критерию оптимизации, например, на основе минимального остатка (например, режим внутреннего предсказания, обеспечивающий блок 255 предсказания, который наиболее похож на блок 203 текущего изображения) или минимального искажения скорости.[00152] In an embodiment,
[00153] Блок 254 внутреннего предсказания дополнительно сконфигурирован для определения блока 255 внутреннего предсказания на основе, например, параметра внутреннего предсказания в выбранном режиме внутреннего предсказания. В любом случае, после выбора режима внутреннего предсказания для блока, блок 254 внутреннего предсказания дополнительно конфигурируется для предоставления параметра внутреннего предсказания, то есть информации, указывающей выбранный режим внутреннего предсказания для блока, в блок 270 энтропийного кодирования. В примере блок 254 внутреннего предсказания может быть сконфигурирован для выполнения любой комбинации технологий внутреннего предсказания.[00153] The intra prediction block 254 is further configured to determine the intra prediction block 255 based on, for example, an intra prediction parameter in the selected intra prediction mode. In any case, after selecting the intra prediction mode for the block, the intra prediction block 254 is further configured to provide an intra prediction parameter, that is, information indicating the selected intra prediction mode for the block, to the
[00154] В частности, блок 254 внутреннего предсказания может передавать элемент синтаксиса в блок 270 энтропийного кодирования. Элемент синтаксиса содержит параметр внутреннего предсказания (например, информацию указания выбора режима внутреннего предсказания, используемого для предсказания текущего блока после прохождения множества режимов внутреннего предсказания). В возможном сценарии применения, если существует только один режим внутреннего предсказания, параметр внутреннего предсказания может не переноситься в элементе синтаксиса. В этом случае сторона 30 декодера может непосредственно выполнять декодирование с использованием режима предсказания по умолчанию.[00154] In particular, the intra prediction block 254 may pass the syntax element to the
[00155] Блок 270 энтропийного кодирования сконфигурирован для применения (или неприменения) алгоритма или схемы энтропийного кодирования (например, схемы кодирования с переменной длиной (variable length coding, VLC), схемы контекстно-адаптивного VLC (context adaptive VLC, CAVLC), схемы арифметического кодирования, схемы контекстно-адаптивного двоичного арифметического кодирования (context adaptive binary arithmetic coding, CABAC), схемы контекстно-адаптивного двоичного арифметического кодирования на основе синтаксиса (syntax-based context-adaptive binary arithmetic coding, SBAC), схемы энтропийного кодирования с разделением вероятностного интервала (probability interval partitioning entropy, PIPE) или другой методологии или технологии энтропийного кодирования) к одному или всем из квантованного остаточного коэффициента 209, параметра внешнего предсказания, параметра внутреннего предсказания и/или параметра контурного фильтра, чтобы получить данные 21 закодированного изображения, которые могут выводиться через вывод 272, например, в форме закодированного битового потока 21. Закодированный битовый поток может быть передан в декодер 30 видео или сохранен для последующей передачи или извлечения декодером 30 видео. Блок 270 энтропийного кодирования может быть дополнительно сконфигурирован для энтропийного кодирования другого элемента синтаксиса для текущего фрагмента видео, который кодируется.[00155]
[00156] Другие структурные вариации кодера 20 видео могут использоваться для кодирования видеопотока. Например, кодер 20, не основанный на преобразовании, может квантовать остаточный сигнал напрямую без блока 206 обработки преобразования для некоторых блоков или кадров. В другой реализации кодер 20 может иметь блок 208 квантования и блок 210 обратного квантования, объединенные в единый блок.[00156] Other structural variations of the
[00157] В частности, в этом варианте осуществления этой заявки кодер 20 может быть сконфигурирован для реализации способа внешнего предсказания, описанного в следующих вариантах осуществления.[00157] In particular, in this embodiment of this application, the
[00158] Следует понимать, что другие структурные вариации кодера 20 видео могут использоваться для кодирования видеопотока. Например, для некоторых блоков изображения или кадров изображения кодер 20 видео может непосредственно квантовать остаточный сигнал. В этом случае обработка блоком 206 обработки преобразования не требуется, и, соответственно, обработка блоком 212 обработки обратного преобразования также не требуется. В качестве альтернативы для некоторых блоков изображения или кадров изображения кодер 20 видео не генерирует остаточные данные. Соответственно, в этом случае обработка блоком 206 обработки преобразования, блоком 208 квантования, блоком 210 обратного квантования и блоком 212 обработки обратного преобразования не требуется. В качестве альтернативы, кодер 20 видео может непосредственно хранить восстановленный блок изображения в качестве опорного блока. В этом случае обработка фильтром 220 не требуется. В качестве альтернативы, блок 208 квантования и блок 210 обратного квантования в кодере 20 видео могут быть объединены. Контурный фильтр 220 не является обязательным. Кроме того, в случае кодирования со сжатием без потерь блок 206 обработки преобразования, блок 208 квантования, блок 210 обратного квантования и блок 212 обработки обратного преобразования также являются необязательными. Следует понимать, что в различных сценариях применений блок 244 внешнего предсказания и блок 254 внутреннего предсказания могут использоваться выборочно.[00158] It should be understood that other structural variations of the
[00159] ФИГ. 3 является схематической/концептуальной блок-схемой примера декодера 30 для реализации вариантов осуществления этой заявки. Декодер 30 видео сконфигурирован для приема, например, данных закодированного изображения (например, закодированного битового потока) 21, полученных посредством кодирования кодером 20, для получения декодированного изображения 231. В процессе декодирования декодер 30 видео принимает от кодера 20 видео видеоданные, например, кодированный битовый поток видео, который представляет блок изображения в кодированном слайсе видео и связанный с ним элемент синтаксиса.[00159] FIG. 3 is a schematic/conceptual block diagram of an
[00160] В примере на фиг. 3, декодер 30 содержит блок 304 энтропийного декодирования, блок 310 обратного квантования, блок 312 обработки обратного преобразования, блок 314 восстановления (например, сумматор 314), буфер 316, контурный фильтр 320, буфер 330 декодированного изображения и блок 360 обработки предсказания. Блок 360 обработки предсказания может содержать блок 344 внешнего предсказания, блок 354 внутреннего предсказания и блок 362 выбора режима. В некоторых примерах декодер 30 видео может выполнять этап декодирования, который обычно является обратным этапу кодирования, описанному со ссылкой на кодер 20 видео на фиг. 2.[00160] In the example of FIG. 3, the
[00161] Блок 304 энтропийного декодирования сконфигурирован для энтропийного декодирования данных 21 закодированного изображения для получения, например, квантованного коэффициента 309 и/или декодированного параметра кодирования (который не показан на фиг. 3), например, любого одного или всех из параметра внешнего предсказания, параметра внутреннего предсказания, параметра контурного фильтра и/или другого элемента синтаксиса (которые декодируются). Блок 304 энтропийного декодирования дополнительно сконфигурирован для пересылки параметра внешнего предсказания, параметра внутреннего предсказания и/или другого элемента синтаксиса в блок 360 обработки предсказания. Декодер 30 видео может принимать элемент синтаксиса на уровне слайса видео и/или уровне блока изображения.[00161] The
[00162] Блок 310 обратного квантования может быть идентичен по функциям блоку 110 обратного квантования, блок 312 обработки обратного преобразования может быть идентичен по функциям блоку 212 обработки обратного преобразования, блок 314 восстановления может быть идентичен по функциям блоку 214 восстановления, буфер 316 может быть идентичен по функциям буферу 216, контурный фильтр 320 может быть идентичен по функции контурному фильтру 220, и буфер 330 декодированного изображения может быть идентичен по функции буферу 230 декодированного изображения.[00162]
[00163] Блок 360 обработки предсказания может содержать блок 344 внешнего предсказания и блок 354 внутреннего предсказания. Блок 344 внешнего предсказания может быть аналогичен по функциям блоку 244 внешнего предсказания, а блок 354 внутреннего предсказания может быть аналогичен по функциям блоку 254 внутреннего предсказания. Блок 360 обработки предсказания обычно конфигурируется для выполнения предсказания блока и/или получения блока 365 предсказания из закодированных данных 21, а также приема или получения (явно или неявно) параметра, связанного с предсказанием, и/или информации о выбранном режиме предсказания, например, из блока 304 энтропийного декодирования.[00163] The
[00164] Когда слайс видео кодируется в слайс с внутренним кодированием (I), блок 354 внутреннего предсказания в блоке 360 обработки предсказания конфигурируется для генерации блока 365 предсказания для блока изображения в текущем слайсе видео на основе сигнализированного режима внутреннего предсказания и данные ранее декодированного блока текущего кадра или изображения. Когда видеокадр кодируется во внешне кодированный (а именно, B или P) слайс, блок 344 внешнего предсказания (например, блок компенсации движения) в блоке 360 обработки предсказания конфигурируется для генерации блока 365 предсказания видео блока в текущем слайсе видео на основе вектора движения и другого элемента синтаксиса, который принят из блока 304 энтропийного декодирования. Во внешнем предсказании, блок предсказания может быть сгенерирован из опорного изображения в списке опорных изображений. Декодер 30 видео может создавать списки опорных кадров, список 0 и список 1, используя технологию создания по умолчанию и на основе опорных изображений, хранящихся в DPB 330.[00164] When a video slice is encoded into an intra (I) slice,
[00165] Блок 360 обработки предсказания сконфигурирован для определения информации предсказания блока видео в текущем слайсе видео путем синтаксического анализа вектора движения и другого элемента синтаксиса и генерации, используя информацию предсказания, блока предсказания текущего блока видео, который декодируется. В примере этой заявки блок 360 обработки предсказания определяет, используя некоторые принятые элементы синтаксиса, режим предсказания (например, внутреннего предсказания или внешнего предсказания) для кодирования блока видео в слайсе видео, тип слайса внешнего предсказания (например, B-слайс, P-слайс или GPB-слайс), информацию о конструкции одного или нескольких списков опорных изображений для слайса, вектор движения каждого внешне кодированного блока видео в слайсе, статус внешнего предсказания каждого внешне кодированного блока видео в слайсе и другой информации для декодирования блока видео в текущем видео слайсе. В другом примере этого раскрытия элемент синтаксиса, принятый декодером 30 видео из битового потока, содержит элемент синтаксиса в одном или нескольких наборах адаптивных параметров (adaptive parameter set, APS), набор параметров последовательности (sequence parameter set, SPS), набор параметров изображения (picture parameter set, PPS) или заголовок фрагмента.[00165] The
[00166] Блок 310 обратного квантования может быть сконфигурирован для выполнения обратного квантования (а именно, деквантования) квантованного коэффициента преобразования, предоставленного в битовом потоке и декодированного блоком 304 энтропийного декодирования. Процесс обратного квантования может содержать использование параметра квантования, вычисленного кодером 20 видео для каждого блока видео в слайсе видео, для определения степени квантования, которая должна быть применена, а также степени обратного квантования, которая должна применяться.[00166] The
[00167] Блок 312 обработки обратного преобразования сконфигурирован для применения обратного преобразования (например, обратного DCT, обратного целочисленного преобразования или концептуально аналогичного процесса обратного преобразования) к коэффициенту преобразования, чтобы сгенерировать остаточный блок в области пикселей.[00167] The inverse
[00168] Блок 314 восстановления (реконструкции) (например, сумматор 314) сконфигурирован для добавления блока 313 обратного преобразования (а именно, восстановленного остаточного блока 313) к блоку 365 предсказания, например, путем добавления значений выборок восстановленного остаточного блока 313 и значений выборки блока 365 предсказания, чтобы получить восстановленный блок 315 в области выборки.[00168] A reconstruction (reconstruction) block 314 (e.g., an adder 314) is configured to add an inverse transform block 313 (namely, a reconstructed residual block 313) to a prediction block 365, for example, by adding sample values of the reconstructed residual block 313 and block sample values 365 prediction to obtain a reconstructed block 315 in the sample area.
[00169] Блок 320 контурного фильтра (либо в контуре кодирования, либо после контура кодирования) сконфигурирован для фильтрации восстановленного блока 315 для получения отфильтрованного блока 321, сглаживания переходов пикселей или улучшения качества видео. В одном примере блок 320 контурного фильтра может быть сконфигурирован для выполнения любой комбинации технологий фильтрации, описанных ниже. Блок 320 контурного фильтра предназначен для представления одного или нескольких контурных фильтров, таких как фильтр удаления блочности, фильтр со смещением, адаптивным к выборке (смещение, адаптивное к выборке, SAO) или другие фильтры, например двусторонний фильтр, адаптивный контурный фильтр (adaptive loop filter, ALF), фильтр повышения резкости или сглаживания или колоборативный фильтр. Хотя блок 320 контурного фильтра показан на фиг. 3, в другой реализации блок 320 контурного фильтра может быть реализован как пост-контурный фильтр.[00169] The loop filter block 320 (either in the encoding loop or after the encoding loop) is configured to filter the reconstructed block 315 to obtain a filtered block 321, smooth pixel transitions, or improve video quality. In one example,
[00170] Затем декодированный блок 321 видео, в данном кадре или изображении сохраняется в буфере 330 декодированного изображения, который хранит опорное изображение, используемое для последующей компенсации движения.[00170] Then, the decoded video block 321, in a given frame or picture, is stored in the decoded
[00171] Декодер 30 сконфигурирован для вывода, например, декодированного изображения 31 через вывод 332 для представления или просмотра пользователю.[00171]
[00172] Другие варианты декодера 30 видео могут использоваться для декодирования сжатого битового потока. Например, декодер 30 может генерировать выходной видеопоток без блока 320 контурного фильтра. Например, декодер 30, не основанный на преобразовании, может выполнять обратное квантование остаточного сигнала напрямую без блока 312 обработки обратного преобразования для некоторых блоков или кадров. В другой реализации декодер 30 видео может иметь блок 310 обратного квантования и блок 312 обработки обратного преобразования, объединенные в один блок.[00172] Other variants of
[00173] В частности, в этом варианте осуществления этой заявки декодер 30 может быть сконфигурирован для реализации способа внешнего предсказания, описанного в следующих вариантах осуществления.[00173] In particular, in this embodiment of this application, the
[00174] Следует понимать, что другие структурные вариации декодера 30 видео могут использоваться для декодирования кодированного битового потока видеоданных. Например, декодер 30 видео может генерировать выходной видеопоток без обработки фильтром 320. В качестве альтернативы, для некоторых блоков изображения или кадров изображения модуль 304 энтропийного декодирования в декодере 30 видео не получает квантованный коэффициент посредством декодирования. Соответственно, в этом случае обработка блоком 310 обратного квантования и блоком 312 обработки обратного преобразования не требуется. Контурный фильтр 320 не является обязательным. Кроме того, в случае сжатия без потерь блок 310 обратного квантования и блок 312 обработки обратного преобразования также являются необязательными. Следует понимать, что в различных сценариях применений блок внешнего предсказания и блок внутреннего предсказания могут использоваться выборочно.[00174] It should be understood that other structural variations of the
[00175] Следует понимать, что в кодере 20 и декодере 30 в этой заявке результат обработки этапа может быть дополнительно обработан и затем выведен на следующий этап. Например, после такого этапа, как интерполяционная фильтрация, вывод вектора движения или циклическая фильтрация, над результатом обработки соответствующего этапа выполняется дополнительная операция, такая как отсечение или сдвиг.[00175] It should be understood that in the
[00176] Например, вектор движения, который является контрольной точкой текущего блока изображения и который выводится на основе вектора движения соседнего аффинно-кодированного блока, может быть дополнительно обработан. В данной заявке это однозначно не ограничено. Например, значение вектора движения ограничено конкретным диапазоном разрядности. Предполагая, что допустимая разрядность вектора движения равна bitDepth, значение вектора движения находится в диапазоне от -2^(bitDepth-1) до 2^(bitDepth-1)-1, где символ «^» представляет возведение в степень. Если bitDepth равен 16, значение находится в диапазоне от -32768 до 32767. Если bitDepth равно 18, значение находится в диапазоне от -131072 до 131071. Значение вектора движения может быть ограничено одним из следующих двух методов:[00176] For example, a motion vector that is a reference point of the current image block and that is derived based on the motion vector of an adjacent affine-coded block may be further processed. In this application, it is expressly not limited. For example, the value of the motion vector is limited to a specific bit range. Assuming the allowed bit depth of the motion vector is bitDepth, the value of the motion vector is in the range -2^(bitDepth-1) to 2^(bitDepth-1)-1, where the symbol "^" represents exponentiation. If bitDepth is 16, the value is in the range -32768 to 32767. If bitDepth is 18, the value is in the range -131072 to 131071. The motion vector value can be limited by one of the following two methods:
[00177] Метод 1: Удаляется старший значащий бит переполнения вектора движения:[00177] Method 1: The most significant bit of the motion vector overflow is removed:
[00178] Например, значение vx равно -32769, а 32767 выводится в соответствии с приведенными выше формулами. Значение хранится на компьютере в представлении с дополнением до двух, представление с дополнением до двух -32769 составляет 1,0111,1111,1111,1111 (17 бит), а обработка, выполняемая компьютером для переполнения, отбрасывает самый старший бит. Следовательно, значение vx равно 0111,1111,1111,1111, то есть 32767. Это значение согласуется с результатом, полученным в результате обработки по формулам.[00178] For example, the value of vx is -32769, and 32767 is output in accordance with the formulas above. The value is stored on the computer in two's complement representation, the two's complement representation of -32769 is 1.0111,1111,1111,1111 (17 bits), and the computer's overflow processing discards the most significant bit. Therefore, the value of vx is 0111,1111,1111,1111, which is 32767. This value is consistent with the result obtained from formula processing.
[00179] Метод 2: Отсечение выполняется по вектору движения, и используются следующие формулы:[00179] Method 2: Clipping is performed on the motion vector, and the following formulas are used:
vx = Clip3(–2bitDepth – 1, 2bitDepth – 1 – 1, vx)vx = Clip3(–2 bitDepth – 1 , 2 bitDepth – 1 – 1, vx)
vy = Clip3(–2bitDepth – 1, 2bitDepth – 1 – 1, vy)vy = Clip3(–2 bitDepth – 1 , 2 bitDepth – 1 – 1, vy)
[00180] В приведенных выше формулах Clip3 определяется как усечение значения z до диапазона [x, y].[00180] In the formulas above, Clip3 is defined as the truncation of the z value to the range [x, y].
Clip3(x, y, z) = Clip3(x, y, z) =
[00181] ФИГ. 4 является схематической структурной схемой устройства 400 кодирования видео (например, устройства 400 кодирования видео или устройства 400 декодирования видео) согласно варианту осуществления этой заявки. Устройство 400 кодирования видео подходит для реализации вариантов осуществления, описанных в этой спецификации. В варианте осуществления устройство 400 кодирования видео может быть декодером видео (например, декодером 30 на фиг. 1A) или кодером видео (например, кодером 20 на фиг. 1A). В другом варианте осуществления устройство 400 кодирования видео может быть одним или несколькими компонентами декодера 30 на фиг. 1A или кодера 20 на фиг. 1А.[00181] FIG. 4 is a schematic block diagram of a video encoding apparatus 400 (eg, a
[00182] Устройство 400 кодирования видео содержит: входные порты 410 и приемник (Rx) 420, которые сконфигурированы для приема данных; процессор, логический блок или центральный процессор (CPU) 430, который сконфигурирован для обработки данных; передатчик (Tx) 440 и выходные порты 450, которые сконфигурированы для передачи данных; и память 460, сконфигурированная для хранения данных. Устройство 400 кодирования видео может дополнительно содержать опто-электрические компоненты и электрические-оптические (EO) компоненты, которые подключены к входным портам 410, приемнику 420, передатчику 440 и выходным портам 450 для выхода или входа оптического или электрического сигнала.[00182] The
[00183] Процессор 430 реализован аппаратно и программно. Процессор 430 может быть реализован как одна или несколько микросхем CPU, ядер (например, многоядерный процессор), FPGA, ASIC и DSP. Процессор 430 обменивается данными с входными портами 410, приемником 420, передатчиком 440, выходными портами 450 и памятью 460. Процессор 430 содержит модуль 470 кодирования (например, модуль 470 кодирования или модуль 470 декодирования). Модуль 470 кодирования/декодирования реализует варианты осуществления, раскрытые в этом описании, для реализации способа предсказания блока цветности, предусмотренного в вариантах осуществления этой заявки. Например, модуль 470 кодирования/декодирования реализует, обрабатывает или предоставляет различные операции кодирования. Следовательно, модуль 470 кодирования/декодирования обеспечивает существенное улучшение функции устройства 400 кодирования видео и влияет на перевод (преобразование) устройства 400 кодирования видео в другое состояние. В качестве альтернативы модуль 470 кодирования/декодирования реализован как инструкция, которая хранится в памяти 460 и выполняется процессором 430.[00183] The
[00184] Память 460 содержит один или несколько дисков, ленточных накопителей и твердотельных накопителей и может использоваться в качестве устройства хранения данных переполнения, для хранения программ, когда такие программы выбраны для выполнения, и для хранения инструкции и данных, считываемых во время выполнения программы. Память 460 может быть энергозависимой и/или энергонезависимой и может быть постоянным запоминающим устройством (ROM), памятью с произвольным доступом (RAM), троичной памятью с адресацией по содержанию (ternary content-addressable memory, TCAM) и/или статическая оперативная память (SRAM).[00184]
[00185] ФИГ. 5 - упрощенная блок-схема устройства 500, которое может использоваться как одно или оба из устройства-источника 12 и устройства-адресата 14 на фиг. 1A согласно примерному варианту осуществления. Устройство 500 может реализовывать технологии этой заявки. Другими словами, фиг. 5 является схематической блок-схемой реализации устройства кодирования или устройства декодирования (называемого для краткости устройством 500 кодирования) согласно варианту осуществления этой заявки. Устройство 500 кодирования может содержать процессор 510, память 530 и систему 550 шин. Процессор и память связаны через шинную систему. Память сконфигурирована для хранения инструкции. Процессор сконфигурирован для выполнения инструкции, хранящейся в памяти. В памяти устройства кодирования хранится программный код. Процессор может вызывать программный код, хранящийся в памяти, для выполнения различных способов кодирования или декодирования видео, описанных в этой заявке. Чтобы избежать повторения, подробности здесь не описываются.[00185] FIG. 5 is a simplified block diagram of a device 500 that can be used as one or both of
[00186] В этом варианте осуществления этой заявки процессор 510 может быть центральным процессором (Central Processing Unit, "CPU" для краткости). В качестве альтернативы, процессор 510 может быть другим процессором общего назначения, процессором цифровых сигналов (DSP), специализированной интегральной схемой (ASIC), программируемой вентильной матрицей (FPGA) или другим программируемым логическим устройством, дискретным вентильным или транзисторным логическим устройством, дискретным аппаратным компонентом и т.п. Универсальный процессор может быть микропроцессором, любым традиционным процессором или т.п.[00186] In this embodiment of this application,
[00187] Память 530 может содержать устройство постоянной памяти (ROM) или устройство оперативной памяти (RAM). В качестве альтернативы 530 может использоваться любой другой подходящий тип запоминающего устройства. Память 530 может содержать код и данные 531, к которым имеет доступ процессор 510 через шину 550. Память 530 может дополнительно содержать операционную систему 533 и прикладную программу 535. Прикладная программа 535 содержит по меньшей мере одну программу, которая позволяет процессору 510 выполнять способ кодирования или декодирования видео, описанный в этой заявке. Например, прикладные программы 535 могут содержать приложения с 1 по N. Приложения дополнительно содержат приложение для кодирования или декодирования видео (называемое для краткости приложением для кодирования видео), которое выполняет способ кодирования или декодирования видео, описанный в этой заявке.[00187] The
[00188] Система 550 шин может не только содержать шину данных, но также содержать шину питания, шину управления, шину сигнала состояния и т.п. Однако для ясного описания различные типы шин на чертеже обозначены как система 550 шин.[00188] The
[00189] Необязательно, устройство 500 кодирования может дополнительно содержать одно или несколько устройств вывода, например, дисплей 570. В одном примере дисплей 570 может быть сенсорным дисплеем, который сочетает в себе дисплей и сенсорный блок касания, который может воспринимать ввод касания. Дисплей 570 может быть подключен к процессору 510 через шину 550.[00189] Optionally, encoder 500 may further comprise one or more output devices, such as a
[00190] Следующее сначала описывает концепции в этой заявке.[00190] The following first describes the concepts in this application.
[00191] 1. Режим внешнего предсказания:[00191] 1. Inter prediction mode:
[00192] В HEVC используются два режима внешнего предсказания: режим расширенного предсказания вектора движения (advanced motion vector prediction, AMVP) и режим слияния (merge).[00192] HEVC uses two inter-prediction modes: advanced motion vector prediction (AMVP) mode and merge mode.
[00193] В режиме AMVP сначала проходят пространственные или временные соседние кодированные блоки (обозначенные как смежные блоки) текущего блока; список кандидатных векторов движения (который также может называться списком кандидатной информации о движении) создается на основе информации о движении соседних блоков; и затем оптимальный вектор движения определяется из списка кандидатных векторов движения на основе издержек искажения скорости. Кандидатная информация о движении, соответствующая минимальным издержкам искажения, используется в качестве предсказателя вектора движения (motion vector predictor, MVP)) текущего блока. Оба местоположения соседних блоков и порядок их прохождения предопределены. Издержки искажения скорости вычисляется в соответствии с формулой (1), где J представляет собой издержки искажения скорости (RD cost), SAD - это сумма абсолютных разностей (sum of absolute differences, SAD) между исходными значениями выборки и значениями выборки предсказания полученный посредством оценки движения с использованием предсказателя кандидатного вектора движения, R представляет битовую скорость, а λ представляет множитель Лагранжа. Сторона кодера передает значение индекса выбранного предсказателя вектора движения в списке кандидатных векторов движения и значение индекса опорного кадра на сторону декодера. Дополнительно, поиск движения выполняется в окрестности с центром в MVP, чтобы получить фактический вектор движения текущего блока. Сторона кодера передает разность (разность векторов движения) между MVP и фактическим вектором движения на сторону декодера.[00193] In the AMVP mode, the spatial or temporal adjacent coded blocks (denoted as contiguous blocks) of the current block are traversed first; a list of candidate motion vectors (which may also be called a list of candidate motion information) is created based on the motion information of neighboring blocks; and then the optimal motion vector is determined from the list of candidate motion vectors based on the velocity distortion cost. The candidate motion information corresponding to the minimum distortion cost is used as the motion vector predictor (MVP) of the current block. Both locations of adjacent blocks and the order in which they pass are predetermined. The rate distortion cost is calculated according to formula (1), where J is the rate distortion cost (RD cost), SAD is the sum of absolute differences (SAD) between the original sample values and the prediction sample values obtained by motion estimation using a candidate motion vector predictor, R represents the bit rate and λ represents the Lagrange multiplier. The encoder side transmits the index value of the selected motion vector predictor in the list of candidate motion vectors and the index value of the reference frame to the decoder side. Additionally, a motion search is performed in the neighborhood centered on the MVP to obtain the actual motion vector of the current block. The encoder side transmits the difference (motion vector difference) between the MVP and the actual motion vector to the decoder side.
(1) (1)
[00194] В режиме слияния список кандидатных векторов движения сначала создается на основе информации о движении пространственных или временных соседних кодированных блоков текущего блока. Затем информация об оптимальном движении определяется из списка кандидатных векторов движения как информация о движении текущего блока на основе издержек искажения скорости. Значение индекса (обозначаемое в дальнейшем как индекс слияния) местоположения оптимальной информации о движении в списке кандидатных векторов движения передается на сторону декодера. Информация о пространственном и временном кандидатном движении текущего блока показана на фиг. 6А. Информация о кандидатном движении в пространстве поступает из пяти пространственных соседних блоков (A0, A1, B0, B1 и B2). Если соседний блок недоступен (соседний блок не существует, или соседний блок не закодирован, или режим предсказания, используемый для соседнего блока, не является режимом внешнего предсказания), информация о движении соседнего блока не добавляется к список кандидатных векторов движения. Временная информация о кандидатном движении текущего блока получается путем масштабирования MV блока в соответствующем местоположении в опорном кадре на основе подсчета порядка изображения (picture order count, POC) опорного кадра и текущего кадра. Сначала определяется, является ли блок в местоположении T в опорном кадре доступным. Если блок недоступен, выбирается блок в местоположении C.[00194] In the merge mode, a list of candidate motion vectors is first created based on the motion information of the spatial or temporal neighboring coded blocks of the current block. Then, the optimal motion information is determined from the list of candidate motion vectors as the motion information of the current block based on the rate distortion cost. An index value (hereinafter referred to as the merge index) of the location of the optimal motion information in the list of candidate motion vectors is transmitted to the decoder side. Information about the spatial and temporal candidate motion of the current block is shown in FIG. 6A. Information about the candidate motion in space comes from five spatial neighboring blocks (A0, A1, B0, B1 and B2). If a neighbor block is not available (the neighbor block does not exist, or the neighbor block is not encoded, or the prediction mode used for the neighbor block is not an inter prediction mode), motion information of the neighbor block is not added to the list of candidate motion vectors. The temporal information about the candidate motion of the current block is obtained by scaling the MV block at the corresponding location in the reference frame based on the picture order count (POC) of the reference frame and the current frame. First, it is determined whether the block at location T in the reference frame is available. If the block is not available, the block at location C is selected.
[00195] Аналогично режиму AMVP, в режиме слияния оба местоположения соседних блоков и порядок их прохождения также предопределены. Кроме того, местоположения соседних блоков и порядок их прохождения могут отличаться в разных режимах.[00195] Similar to the AMVP mode, in the merge mode, both locations of adjacent blocks and their traversal order are also predetermined. In addition, the locations of neighboring blocks and the order in which they are passed may differ in different modes.
[00196] Можно узнать, что один список кандидатных векторов движения необходимо поддерживать как в режиме AMVP, так и в режиме слияния. Перед тем, как каждый раз добавлять новую информацию о движении в список кандидатов, сначала проверяется, существует ли такая же информация о движении в списке. Если такая же информация о движении существует в списке, информация о движении не добавляется в список. Этот процесс проверки называется сокращением списка кандидатных векторов движения. Сокращение списка предназначено для того, чтобы избежать наличия в списке одинаковой информации о движении, чтобы избежать избыточного вычисления издержек искажения скорости.[00196] It can be recognized that one list of candidate motion vectors needs to be maintained in both AMVP mode and merge mode. Before adding new motion information to the list of candidates each time, it is first checked whether the same motion information exists in the list. If the same traffic information exists in the list, the traffic information is not added to the list. This validation process is referred to as shortening the list of candidate motion vectors. The reduction of the list is intended to avoid having the same motion information in the list to avoid overcomputing the speed distortion overhead.
[00197] При внешнем предсказании в HEVC одинаковая информация о движении используется для всех выборок блока кодирования, а затем выполняется компенсация движения на основе информации о движении для получения предсказателей выборок блока кодирования. Однако в блоке кодирования не все выборки имеют одинаковые характеристики движения. Использование одной и той же информации о движении может привести к неточному предсказанию компенсации движения и большей остаточной информации.[00197] In HEVC inter-prediction, the same motion information is used for all coding block samples, and then motion compensation is performed based on the motion information to obtain coding block sample predictors. However, in a coding block, not all samples have the same motion characteristics. Using the same motion information can result in inaccurate motion compensation prediction and more residual information.
[00198] В существующих стандартах кодирования видео используется оценка движения согласования блоков на основе модели прямолинейного движения, и предполагается, что движение всех выборок в блоке является согласованным. Однако в реальном мире существует множество движений. Многие объекты находятся в непрямолинейном движении, например, вращающийся объект, американские горки, вращающиеся в разных направлениях, фейерверк и некоторые трюки в фильмах, особенно движущийся объект в сценарии пользовательского контента. Для этих движущихся объектов, если для кодирования используется технология компенсации движения блоков на основе модели прямолинейного движения в существующих стандартах кодирования, эффективность кодирования может сильно пострадать. В связи с этим для повышения эффективности кодирования вводится модель непрямолинейного движения, например аффинная модель движения.[00198] Existing video coding standards use block matching motion estimation based on a straight-line motion model, and it is assumed that the motion of all samples in a block is consistent. However, in the real world, there are many movements. Many objects are in non-rectilinear motion, such as a spinning object, multi-directional roller coasters, fireworks, and some movie stunts, especially a moving object in a UGC scenario. For these moving objects, if the block motion compensation technology based on the rectilinear motion model in existing coding standards is used for encoding, the encoding efficiency may suffer greatly. In this regard, to improve the coding efficiency, a model of non-rectilinear motion is introduced, for example, an affine motion model.
[00199] На основании этого, с точки зрения различных моделей движения, режим AMVP может быть классифицирован на режим AMVP на основе прямолинейной модели и режим AMVP на основе непрямолинейной модели, а режим слияния может быть классифицирован на режим слияния на основе прямолинейной модели и режим слияния на основе непрямолинейной модели.[00199] Based on this, in terms of different traffic patterns, the AMVP mode can be classified into a straight-line model based AMVP mode and a non-rectiline model based AMVP mode, and the merge mode can be classified into a straight-line model based merge mode and a merge mode based on a non-rectilinear model.
[00200] 2. Модель непрямолинейного движения:[00200] 2. Non-rectilinear motion model:
[00201] Предсказание на основе модели непрямолинейного движения означает, что одна и та же модель движения используется как на стороне кодера, так и на стороне декодера для получения информации о движении каждого субблока текущего блока, а компенсация движения выполняется на основе информации о движении субблока для получения блока предсказания. Таким образом повышается эффективность предсказания. Обычные модели непрямолинейного движения включают в себя аффинную модель движения с 4 параметрами и аффинную модель движения с 6 параметрами.[00201] Non-rectilinear motion model prediction means that the same motion model is used on both the encoder side and the decoder side to obtain the motion information of each sub-block of the current block, and motion compensation is performed based on the motion information of the sub-block for get a prediction block. Thus, the prediction efficiency is improved. Conventional curved motion models include the 4-parameter affine motion model and the 6-parameter affine motion model.
[00202] Субблок в вариантах осуществления этой заявки может быть выборкой или блоком выборки N1×N2, полученным с использованием конкретного способа разделения, где и N1, и N2 являются положительными целыми числами, а N1 может быть равно N2 или может не быть равным N2.[00202] A sub-block in embodiments of this application may be a sample or block of an N1×N2 sample obtained using a particular partitioning method, where both N1 and N2 are positive integers, and N1 may or may not be equal to N2.
[00203] аффинная модель движения с 4 параметрами выражается по формуле (2):[00203] An affine motion model with 4 parameters is expressed by formula (2):
(2) (2)
[00204] аффинная модель движения с 4 параметрами может быть представлена векторами движения двух выборок и их координатами относительно левой верхней выборки текущего блока. Выборка, используемая для представления параметра модели движения, называется контрольной точкой. Если верхняя левая выборка (0, 0) и верхняя правая выборка (W, 0) используются в качестве контрольных точек, сначала определяют соответствующие векторы движения (vx0, vy0) и (vx1, vy1) верхней левой вершины и правой верхней вершины текущего блока. Затем информация о движении каждого субблока текущего блока получается в соответствии с Формулой (3), где (x, y) представляет координаты субблока относительно верхней левой выборки текущего блока, а W представляет ширину текущего блока.[00204] A 4-parameter affine motion model can be represented by motion vectors of two samples and their coordinates relative to the top left sample of the current block. The sample used to represent a motion model parameter is called a control point. If the top left sample (0, 0) and the top right sample (W, 0) are used as control points, first determine the corresponding motion vectors (vx0, vy0) and (vx1, vy1) top left vertex and top right vertex of the current block. Then, the motion information of each sub-block of the current block is obtained according to Formula (3), where (x, y) represents the coordinates of the sub-block relative to the top left sample of the current block, and W represents the width of the current block.
(3) (3)
[00205] аффинная модель движения с 6 параметрами выражается по формуле (4):[00205] An affine motion model with 6 parameters is expressed by formula (4):
(4) (four)
[00206] Аффинная модель движения с 6 параметрами может быть представлена векторами движения трех выборок и их координатами относительно верхней левой выборки текущего блока. Если верхняя левая выборка (0, 0), верхняя правая выборка (W, 0) и нижняя левая выборка (0, H) текущего блока используются в качестве контрольных точек, сначала определяются соответствующие векторы движения (vx0, vy0), (vx1, vy1) и (vx2, vy2) верхней левой контрольной точки, верхней правой контрольной точки и нижней левой контрольной точки текущего блока. Затем информация о движении каждого субблока текущего блока получается в соответствии с Формулой (5), где (x, y) представляет координаты субблока относительно верхней левой выборки текущего блока, а W и H представляют ширину и высоту текущего блока соответственно.[00206] A 6-parameter affine motion model can be represented by motion vectors of three samples and their coordinates relative to the top left sample of the current block. If the top left sample (0, 0), top right sample (W, 0) and bottom left sample (0, H) of the current block are used as control points, the corresponding vectors are first determined movements (vx0, vy0), (vx1, vy1) and (vx2, vy2) upper left breakpoint, top right breakpoint, and bottom left breakpoint of the current block. Then, the motion information of each sub-block of the current block is obtained according to Formula (5), where (x, y) represents the coordinates of the sub-block relative to the top left sample of the current block, and W and H represent the width and height of the current block, respectively.
(5) (five)
[00207] Блок кодирования, который предсказывается с использованием аффинной модели движения, называется аффинно-кодированным блоком.[00207] A coding block that is predicted using an affine motion model is called an affine-coded block.
[00208] Как правило, информация о движении контрольной точки аффинно-кодированного блока может быть получена с использованием аффинной модели движения на основе режима расширенного предсказания вектора движения на основе (Advanced Motion Vector Prediction, AMVP) или режима слияния (Merge) на основе аффинной модели движения.[00208] Typically, the motion information of an affine-coded block checkpoint can be obtained using an affine motion model based on an Advanced Motion Vector Prediction (AMVP) mode or a merge mode based on an affine model. movement.
[00209] Информация о движении контрольной точки текущего блока кодирования может быть получена с использованием способа предсказания унаследованного вектора движения контрольной точки или способа предсказания построенного вектора движения контрольной точки.[00209] The checkpoint motion information of the current coding block can be obtained using a checkpoint inherited motion vector prediction method or a checkpoint constructed motion vector prediction method.
[00210] 3. Способ предсказания унаследованного вектора движения контрольной точки:[00210] 3. Method for predicting the legacy motion vector of the checkpoint:
[00211] Способ предсказания унаследованного вектора движения контрольной точки заключается в использовании модели движения соседнего кодированного аффинно-кодированного блока для определения кандидатных векторов движения контрольной точки текущего блока.[00211] A method for predicting a legacy checkpoint motion vector is to use a motion model of an adjacent encoded affine-coded block to determine candidate checkpoint motion vectors of the current block.
[00212] Текущий блок, показанный на фиг. 6B используется в качестве примера. Блоки в соседних местоположениях вокруг текущего блока проходятся в конкретном порядке, например, A1->B1->B0->A0->B2, чтобы найти аффинно-кодированный блок, включающий в себя блок в соседнем местоположении текущего блока, и для получения информации о движении контрольной точки аффинно-кодированного блока. Кроме того, вектор движения контрольной точки (используемый в режиме слияния) или предсказатель вектора движения контрольной точки (используемый в режиме AMVP) текущего блока выводится с использованием модели движения, построенной на основе информации о движении контрольной точки аффинно-кодированного блока. Порядок A1->B1->B0->A0->B2 используется просто в качестве примера. В этой заявке также может использоваться другой порядок комбинации. Кроме того, блоки в соседних местоположениях не ограничиваются A1, B1, B0, A0 и B2.[00212] The current block shown in FIG. 6B is used as an example. Blocks at neighboring locations around the current block are traversed in a specific order, for example, A1->B1->B0->A0->B2, to find an affine-coded block that includes the block at the current block's neighboring location and to obtain information about movement of the control point of the affine-coded block. In addition, a checkpoint motion vector (used in the merge mode) or checkpoint motion vector predictor (used in the AMVP mode) of the current block is derived using a motion model built based on the checkpoint motion information of the affine-coded block. The order A1->B1->B0->A0->B2 is just used as an example. This application may also use a different combination order. In addition, blocks at adjacent locations are not limited to A1, B1, B0, A0, and B2.
[00213] Блок в соседнем местоположении может быть выборкой или блоком выборки предварительно установленного размера, полученным с использованием конкретного способа разделения. Например, блок выборки может быть блоком выборки 4×4, блоком выборки 4×2 или блоком выборки другого размера. Это не ограничено здесь.[00213] The block at an adjacent location may be a sample or a sample block of a predetermined size obtained using a particular partitioning method. For example, the sample block may be a 4×4 sample block, a 4×2 sample block, or other size sample block. It's not limited here.
[00214] Далее описывается процесс определения с использованием A1, и аналогичные процессы могут использоваться для других случаев.[00214] The following describes the determination process using A1, and similar processes can be used for other cases.
[00215] Как показано на фиг. 4, если блок кодирования, в котором находится A1, является аффинно-кодированным блоком с 4 параметрами, получаются вектор движения (vx4, vy4) верхней левой вершины (x4, y4) и вектор движения (vx5, vy5) верхней правой вершины аффинно-кодированного блока. Вектор движения (vx0, vy0) верхней левой вершины (x0, y0) текущего аффинно-кодированного блока вычисляется в соответствии с формулой (6), а вектор движения (vx1, vy1) верхней правой вершины (x1, y1) текущего аффинно-кодированного блока вычисляется согласно Формуле (7).[00215] As shown in FIG. 4, if the coding block in which A1 is located is an affine-coded block with 4 parameters, the motion vector (vx4, vy4) of the upper left vertex (x4, y4) and the motion vector (vx5, vy5) of the upper right vertex of the affine-encoded block. The motion vector (vx0, vy0) of the upper left vertex (x0, y0) of the current affine-coded block is calculated in accordance with formula (6), and the motion vector (vx1, vy1) of the upper right vertex (x1, y1) of the current affine-coded block calculated according to Formula (7).
(6) (6)
(7) (7)
[00216] Комбинация вектора движения (vx0, vy0) верхней левой вершины (x0, y0) и вектора движения (vx1, vy1) правой верхней вершины (x1, y1) текущего блока, которые получены на основе аффинно-кодированного блока, в котором находится A1, это кандидатные векторы движения контрольной точки текущего блока.[00216] The combination of the motion vector (vx0, vy0) of the upper left vertex (x0, y0) and the motion vector (vx1, vy1) of the upper right vertex (x1, y1) of the current block, which are obtained based on the affine-coded block in which the A1, these are the candidate motion vectors of the control point of the current block.
[00217] Если блок кодирования, в котором находится A1, является аффинно-кодированным блоком с 6 параметрами, получаются вектор движения (vx4, vy4) верхней левой вершины (x4, y4), вектор движения (vx5, vy5) верхней правой вершины (x5, y5) и вектор движения (vx6, vy6) нижней левой вершины (x6, y6) аффинно-кодированного блока. Вектор движения (vx0, vy0) верхней левой вершины (x0, y0) текущего блока вычисляется согласно Формуле (8), вектор движения (vx1, vy1) верхней правой вершины (x1, y1) текущего блока вычисляется согласно Формуле (9), а вектор движения (vx2, vy2) нижней левой вершины (x2, y2) текущего блока вычисляется согласно Формуле (10).[00217] If the coding block in which A1 is located is an affine-coded block with 6 parameters, the motion vector (vx4, vy4) of the upper left vertex (x4, y4), the motion vector (vx5, vy5) of the upper right vertex (x5 , y5) and the motion vector (vx6, vy6) of the lower left vertex (x6, y6) of the affine-coded block. The motion vector (vx0, vy0) of the upper left vertex (x0, y0) of the current block is calculated according to Formula (8), the motion vector (vx1, vy1) of the upper right vertex (x1, y1) of the current block is calculated according to Formula (9), and the motion vector (vx2, vy2) of the lower left vertex (x2, y2) of the current block is calculated according to Formula (10).
(8) (8)
(9) (nine)
(10) (10)
[00218] Комбинация вектора движения (vx0, vy0) верхней левой вершины (x0, y0), вектора движения (vx1, vy1) правой верхней вершины (x1, y1) и вектора движения (vx2, vy2) левой нижней вершины (x2, y2) текущего блока, которые получены на основе аффинно-кодированного блока, в котором находится A1, является кандидатным вектором движения контрольной точки текущего блока.[00218] Combination of the motion vector (vx0, vy0) of the upper left vertex (x0, y0), the motion vector (vx1, vy1) of the upper right vertex (x1, y1), and the motion vector (vx2, vy2) of the lower left vertex (x2, y2 ) of the current block, which are derived from the affine-coded block in which A1 resides, is a candidate motion vector of the current block checkpoint.
[00219] Следует отметить, что в этой заявке также могут использоваться другие модели движения, кандидатные местоположения, а также порядки поиска и прохождения. Подробности не описаны в вариантах осуществления этой заявки.[00219] It should be noted that other traffic patterns, candidate locations, and search and traverse orders may also be used in this application. Details are not described in the embodiments of this application.
[00220] Следует отметить, что в этой заявке также могут использоваться способы для представления моделей движения соседних и текущих блоков кодирования на основе других контрольных точек. Подробности здесь не описаны.[00220] It should be noted that this application can also use methods to represent motion models of neighboring and current coding blocks based on other breakpoints. Details are not described here.
[00221] 4. Способ 1 предсказания построенного вектора движения контрольной точки (построенных векторов движения контрольной точки):[00221] 4.
[00222] Способ предсказания построенного вектора движения контрольной точки состоит в объединении векторов движения соседних кодированных блоков вокруг контрольной точки текущего блока в качестве вектора движения контрольной точки текущего аффинно-кодированного блока без учета того, являются ли соседние кодированные блоки аффинно-кодированными блоками.[00222] A method for predicting the built checkpoint motion vector is to combine the motion vectors of neighboring coded blocks around the current block's checkpoint as the checkpoint motion vector of the current affine-coded block, regardless of whether the neighboring coded blocks are affine-coded blocks.
[00223] Векторы движения верхней левой вершины и верхней правой вершины текущего блока определяются на основе информации о движении соседних кодированных блоков вокруг текущего блока кодирования. Фиг. 6C используется в качестве примера для описания способа предсказания построенного вектора движения контрольной точки. Следует отметить, что фиг. 6C просто используется в качестве примера.[00223] The motion vectors of the top left vertex and top right vertex of the current block are determined based on information about the movement of adjacent coded blocks around the current coding block. Fig. 6C is used as an example to describe a method for predicting a built reference point motion vector. It should be noted that FIG. 6C is just being used as an example.
[00224] Как показано на фиг. 6C, векторы движения соседних кодированных блоков A2, B2 и B3 в верхнем левом углу используются в качестве кандидатных векторов движения для вектора движения верхней левой вершины текущего блока; и векторы движения соседних кодированных блоков B1 и B0 в правом верхнем углу используются в качестве кандидатных векторов движения для вектора движения правой верхней вершины текущего блока. Кандидатные векторы движения верхней левой вершины и верхней правой вершины объединяются, чтобы образовать множество с 2 кортежами пространств. Векторы движения двух кодированных блоков, содержащихся в пространстве с 2 кортежами, могут использоваться в качестве кандидатных векторов движения контрольной точки текущего блока, как показано в следующей Формуле (11A):[00224] As shown in FIG. 6C, the motion vectors of neighboring coded blocks A2, B2 and B3 in the upper left corner are used as candidate motion vectors for the motion vector of the upper left vertex of the current block; and the motion vectors of neighboring encoded blocks B1 and B0 in the upper right corner are used as candidate motion vectors for the motion vector of the upper right vertex of the current block. The candidate top left and top right motion vectors are combined to form a 2-tuple set of spaces. The motion vectors of the two encoded blocks contained in the 2-tuple space can be used as candidate motion vectors of the current block reference point, as shown in the following Formula (11A):
(11A) (11A)
где представляет вектор движения A2, представляет вектор движения B1, представляет вектор движения B0, представляет вектор движения B2, а представляет вектор движения B3.where represents the motion vector A2, represents the motion vector B1, represents the motion vector B0, represents the motion vector B2, and represents the motion vector B3.
[00225] Как показано на фиг. 6C, векторы движения соседних кодированных блоков A2, B2 и B3 в верхнем левом углу используются в качестве кандидатных векторов движения для вектора движения верхней левой вершины текущего блока; векторы движения соседних кодированных блоков B1 и B0 в правом верхнем углу используются в качестве кандидатных векторов движения для вектора движения правой верхней вершины текущего блока; и векторы движения соседних кодированных блоков A0 и A1 в нижнем левом углу используются в качестве кандидатных векторов движения для вектора движения левой нижней вершины текущего блока. Кандидатные векторы движения верхней левой вершины, верхней правой вершины и нижней левой вершины объединяются в пространство с 3 кортежами. Векторы движения трех кодированных блоков, содержащихся в пространстве с 3 кортежами, могут использоваться в качестве кандидатных векторов движения контрольной точки текущего блока, как показано в следующих формулах (11B) и (11C):[00225] As shown in FIG. 6C, the motion vectors of neighboring coded blocks A2, B2 and B3 in the upper left corner are used as candidate motion vectors for the motion vector of the upper left vertex of the current block; the motion vectors of neighboring encoded blocks B1 and B0 in the upper right corner are used as candidate motion vectors for the motion vector of the upper right vertex of the current block; and the motion vectors of neighboring encoded blocks A0 and A1 in the lower left corner are used as candidate motion vectors for the motion vector of the lower left vertex of the current block. The candidate motion vectors of the top left vertex, top right vertex, and bottom left vertex are combined into a 3-tuple space. The motion vectors of the three encoded blocks contained in the 3-tuple space can be used as candidate motion vectors of the current block reference point, as shown in the following formulas (11B) and (11C):
(11B) (11B)
(11C) (11C)
где представляет вектор движения A2, представляет вектор движения B1, представляет вектор движения B0, представляет вектор движения B2, представляет вектор движения B3, представляет вектор движения A0, и представляет вектор движения A1.where represents the motion vector A2, represents the motion vector B1, represents the motion vector B0, represents the motion vector B2, represents the motion vector B3, represents the motion vector A0, and represents the motion vector A1.
[00226] Следует отметить, что в этой заявке также могут использоваться другие способы объединения векторов движения контрольных точек. Подробности здесь не описаны.[00226] It should be noted that other methods of combining motion vectors of control points can also be used in this application. Details are not described here.
[00227] Следует отметить, что в этой заявке также могут использоваться способы для представления моделей движения соседних и текущих блоков кодирования на основе других контрольных точек. Подробности здесь не описаны.[00227] It should be noted that this application can also use methods to represent motion models of neighboring and current coding blocks based on other breakpoints. Details are not described here.
[00228] 5. Способ 2 предсказания построенного вектора движения контрольной точки (построенных векторов движения контрольной точки), как показано на фиг. 6D:[00228] 5. Method 2 for predicting the built reference point motion vector(s) as shown in FIG. 6D:
[00229] Этап 601: Получить информацию о движении контрольных точек текущего блока.[00229] Step 601: Get information about the movement of control points of the current block.
[00230] Например, на фиг. 6C CPk (k=1, 2, 3, 4) представляет k-ю контрольную точку. A0, A1, A2, B0, B1, B2 и B3 являются пространственными соседними местоположениями текущего блока и используются для предсказания CP1, CP2 или CP3. T является временным соседним местоположением текущего блока и используется для предсказания CP4.[00230] For example, in FIG. 6C CPk (k=1, 2, 3, 4) represents the k-th control point. A0, A1, A2, B0, B1, B2, and B3 are spatial neighbor locations of the current block and are used to predict CP1, CP2, or CP3. T is the temporal neighbor location of the current block and is used for CP4 prediction.
[00231] Предполагается, что координаты CP1, CP2, CP3 и CP4 равны (0, 0), (W, 0), (H, 0) и (W, H) соответственно, где W и H представляют ширину и высоту текущего блока.[00231] The coordinates CP1, CP2, CP3, and CP4 are assumed to be (0, 0), (W, 0), (H, 0), and (W, H), respectively, where W and H represent the width and height of the current block .
[00232] Для каждой контрольной точки информация о движении контрольной точки получается в следующем порядке:[00232] For each checkpoint, checkpoint movement information is obtained in the following order:
[00233] (1) Для CP1 порядок проверки: B2->A2->B3. Если B2 доступен, информация о движении B2 используется для CP1. В противном случае проверяются A2 и B3. Если информация о движении всех трех местоположений недоступна, информация о движении CP1 не может быть получена.[00233] (1) For CP1, the check order is: B2->A2->B3. If B2 is available, B2 traffic information is used for CP1. Otherwise, A2 and B3 are checked. If traffic information of all three locations is not available, traffic information of CP1 cannot be obtained.
[00234] (2) Для CP2 порядок проверки B0->B1. Если B0 доступен, информация о движении B0 используется для CP2. В противном случае проверяется B1. Если информация о движении обоих местоположений недоступна, информация о движении CP2 не может быть получена.[00234] (2) For CP2, the check order is B0->B1. If B0 is available, B0 motion information is used for CP2. Otherwise, B1 is checked. If traffic information of both locations is not available, CP2 traffic information cannot be obtained.
[00235] (3) Для CP3 порядок проверки: A0->A1.[00235] (3) For CP3, check order: A0->A1.
[00236] (4) Для CP4 используется информация о движении T.[00236] (4) For CP4, motion information T is used.
[00237] Здесь, что X доступен, означает, что блок в X (X представляет собой A0, A1, A2, B0, B1, B2, B3 или T) уже закодирован, и для блока используется режим внешнего предсказания. В противном случае X недоступен.[00237] Here, that X is available means that a block in X (X is A0, A1, A2, B0, B1, B2, B3, or T) has already been encoded, and inter prediction mode is used for the block. Otherwise, X is not available.
[00238] Следует отметить, что в этой заявке также могут использоваться другие способы для получения информации о движении контрольной точки. Подробности здесь не описаны.[00238] It should be noted that this application can also use other methods to obtain information about the movement of the control point. Details are not described here.
[00239] Этап 602: Объединить информацию о движении контрольных точек, чтобы получить информацию о движении построенных контрольных точек.[00239] Step 602: Combine checkpoint motion information to obtain motion information of the constructed checkpoints.
[00240] Информация о движении двух контрольных точек объединяется в пространство с 2 кортежами для построения аффинной модели движения с 4 параметрами. Комбинации двух контрольных точек могут быть {CP1, CP4}, {CP2, CP3}, {CP1, CP2}, {CP2, CP4}, {CP1, CP3} и {CP3, CP4}. Например, аффинная модель движения с 4 параметрами, построенная с использованием пространства с 2 кортежами, включающего в себя контрольные точки CP1 и CP2, может быть обозначена как аффинная (CP1, CP2).[00240] The motion information of the two control points is combined into a 2-tuple space to build a 4-parameter affine motion model. Combinations of two breakpoints can be {CP1, CP4}, {CP2, CP3}, {CP1, CP2}, {CP2, CP4}, {CP1, CP3} and {CP3, CP4}. For example, a 4-parameter affine motion model built using a 2-tuple space including control points CP1 and CP2 can be referred to as affine (CP1, CP2).
[00241] Информация о движении трех контрольных точек объединяется в пространство с 3 кортежами, чтобы построить аффинную модель движения с 6 параметрами. Комбинации трех контрольных точек могут быть {CP1, CP2, CP4}, {CP1, CP2, CP3}, {CP2, CP3, CP4} и {CP1, CP3, CP4}. Например, аффинная модель движения с 6 параметрами, построенная с использованием пространства с 3 кортежами, включающего в себя контрольные точки CP1, CP2 и CP3, может быть обозначена как аффинная (CP1, CP2, CP3).[00241] The motion information of the three control points is combined into a 3-tuple space to construct a 6-parameter affine motion model. The combinations of the three breakpoints can be {CP1, CP2, CP4}, {CP1, CP2, CP3}, {CP2, CP3, CP4} and {CP1, CP3, CP4}. For example, a 6-parameter affine motion model built using a 3-tuple space including control points CP1, CP2, and CP3 can be referred to as affine (CP1, CP2, CP3).
[00242] Информация о движении четырех контрольных точек объединяется в пространство с 4 кортежами, чтобы построить билинейную модель движения с 8 параметрами. Билинейная модель с 8 параметрами, построенная с использованием пространства с 4 кортежами, включающего в себя контрольные точки CP1, CP2, CP3 и CP4, может быть обозначена как билинейная (CP1, CP2, CP3, CP4).[00242] The motion information of the four control points is combined into a 4-tuple space to construct an 8-parameter bilinear motion model. An 8-parameter bilinear model built using a 4-tuple space including control points CP1, CP2, CP3, and CP4 can be referred to as bilinear (CP1, CP2, CP3, CP4).
[00243] В вариантах осуществления этой заявки для простоты описания комбинация информации о движении двух контрольных точек (или двух кодированных блоков) просто упоминается как пространство с 2 кортежами, комбинация информации о движении трех контрольных точек (или трех закодированных блоков) просто называется пространством с 3 кортежами, а комбинация информации о движении четырех контрольных точек (или четырех кодированных блоков) просто называется пространством с 4 кортежами.[00243] In embodiments of this application, for ease of description, the combination of motion information of two checkpoints (or two coded blocks) is simply referred to as a 2-tuple space, the combination of motion information of three checkpoints (or three coded blocks) is simply referred to as a 3-space. tuples, and the combination of the motion information of four control points (or four coded blocks) is simply called a 4-tuple space.
[00244] По этим модели проходят в заданном порядке. Если информация о движении контрольной точки, соответствующей комбинированной модели, недоступна, считается, что модель недоступна. В противном случае, индекс опорного кадра модели определяется, и вектор движения контрольной точки масштабируется. Если информация о движении всех контрольных точек после масштабирования согласована, модель недействительна. Если вся информация о движении контрольных точек, управляющих моделью, доступна, и модель действительна, информация о движении контрольных точек, используемых для построения модели, добавляется в список кандидатов информации о движении.[00244] These models are run in a given order. If information about the movement of the control point corresponding to the combined model is not available, the model is considered to be unavailable. Otherwise, the index of the reference frame of the model is determined and the motion vector of the control point is scaled. If the motion information of all control points after scaling is consistent, the model is invalid. If all the motion information of the control points driving the model is available and the model is valid, the motion information of the control points used to build the model is added to the motion information candidate list.
[00245] Способ масштабирования вектора движения контрольной точки показан в Формуле (12):[00245] The method of scaling the motion vector of the reference point is shown in Formula (12):
(12) (12)
где представляет собой POC номер текущего кадра, представляет собой POC номер опорного кадра текущего блока, представляет собой POC номер опорного кадра контрольной точки, представляет собой вектор движения, полученный после масштабирования, MV представляет вектор движения контрольной точки.where is the POC number of the current frame, represents the POC number of the key frame of the current block, is the POC number of the reference frame of the reference point, represents the motion vector obtained after scaling, MV represents the motion vector of the control point.
[00246] Следует отметить, что разные комбинации контрольных точек могут быть конвертированы в контрольные точки в одном и том же местоположении.[00246] It should be noted that different combinations of checkpoints can be converted to checkpoints at the same location.
[00247] Например, аффинная модель движения с 4 параметрами, полученная на основе комбинации {CP1, CP4}, {CP2, CP3}, {CP2, CP4}, {CP1, CP3} или {CP3, CP4}, представлена как {CP1, CP2} или {CP1, CP2, CP3} после конвертирования. Способ конвертирования содержит: подстановку векторов движения и информации о координатах контрольных точек в Формулу (2) для получения параметров модели; и затем подстановку информации о координатах {CP1, CP2} в Формулу (3), чтобы получить векторы движения {CP1, CP2}.[00247] For example, a 4-parameter affine motion model derived from a combination of {CP1, CP4}, {CP2, CP3}, {CP2, CP4}, {CP1, CP3}, or {CP3, CP4} is represented as {CP1 , CP2} or {CP1, CP2, CP3} after conversion. The conversion method includes: substitution of motion vectors and information about the coordinates of control points in Formula (2) to obtain model parameters; and then substituting the coordinate information {CP1, CP2} into Formula (3) to obtain motion vectors {CP1, CP2}.
[00248] Более конкретно, конвертирование может выполняться в соответствии с формулами (13) - (21), где W представляет ширину текущего блока, а H представляет высоту текущего блока. В формулах (13)-(21) () представляет вектор движения CP1, () представляет вектор движения CP2, () представляет вектор движения CP3, а () представляет собой вектор движения CP4.[00248] More specifically, the conversion may be performed in accordance with formulas (13) - (21), where W represents the width of the current block, and H represents the height of the current block. In formulas (13)-(21) ( ) represents the motion vector CP1, ( ) represents the motion vector CP2, ( ) represents the motion vector of CP3, and ( ) is the motion vector of CP4.
[00249] {CP1, CP2} можно конвертировать в {CP1, CP2, CP3} согласно Формуле (13). Другими словами, вектор движения CP3 в {CP1, CP2, CP3} может быть определен согласно Формуле (13):[00249] {CP1, CP2} can be converted to {CP1, CP2, CP3} according to Formula (13). In other words, the motion vector CP3 in {CP1, CP2, CP3} can be determined according to Formula (13):
(13) (13)
[00250] {CP1, CP3} можно конвертировать в {CP1, CP2} или {CP1, CP2, CP3} в соответствии с формулой (14):[00250] {CP1, CP3} can be converted to {CP1, CP2} or {CP1, CP2, CP3} according to formula (14):
(14) (fourteen)
[00251] {CP2, CP3} можно конвертировать в {CP1, CP2} или {CP1, CP2, CP3} в соответствии с формулой (15):[00251] {CP2, CP3} can be converted to {CP1, CP2} or {CP1, CP2, CP3} according to formula (15):
(15) (15)
[00252] {CP1, CP4} можно конвертировать в {CP1, CP2} или {CP1, CP2, CP3} в соответствии с формулой (16) или (17):[00252] {CP1, CP4} can be converted to {CP1, CP2} or {CP1, CP2, CP3} according to formula (16) or (17):
(16) (sixteen)
(17) (17)
[00253] {CP2, CP4} можно конвертировать в {CP1, CP2} в соответствии с формулой (18), а {CP2, CP4} можно конвертировать в {CP1, CP2, CP3} в соответствии с формулами (18) и (19):[00253] {CP2, CP4} can be converted to {CP1, CP2} according to formula (18), and {CP2, CP4} can be converted to {CP1, CP2, CP3} according to formulas (18) and (19 ):
(18) (eighteen)
(19) (nineteen)
[00254] {CP3, CP4} можно конвертировать в {CP1, CP2} в соответствии с формулой (20), а {CP3, CP4} можно конвертировать в {CP1, CP2, CP3} в соответствии с формулами (20) и (21):[00254] {CP3, CP4} can be converted to {CP1, CP2} according to formula (20), and {CP3, CP4} can be converted to {CP1, CP2, CP3} according to formulas (20) and (21 ):
(20) (20)
(21) (21)
[00255] Например, аффинная модель движения с 6 параметрами, полученная на основе комбинации {CP1, CP2, CP4}, {CP2, CP3, CP4} или {CP1, CP3, CP4}, конвертируется и представляется с использованием {CP1, CP2, CP3}. Способ конвертирования содержит: подстановку векторов движения и информации о координатах контрольных точек в Формулу (4) для получения параметров модели; и затем подстановку информации о координатах {CP1, CP2, CP3} в формулу (5), чтобы получить векторы движения {CP1, CP2, CP3}.[00255] For example, a 6-parameter affine motion model derived from a combination of {CP1, CP2, CP4}, {CP2, CP3, CP4}, or {CP1, CP3, CP4} is converted and represented using {CP1, CP2, CP3}. The conversion method includes: substitution of motion vectors and information about the coordinates of control points in Formula (4) to obtain model parameters; and then substituting the coordinate information {CP1, CP2, CP3} into formula (5) to obtain motion vectors {CP1, CP2, CP3}.
[00256] Более конкретно, конвертирование может выполняться в соответствии с формулами (22) - (24), где W представляет ширину текущего блока, а H представляет высоту текущего блока. В формулах (13) - (21) () представляет вектор движения CP1, () представляет вектор движения CP2, () представляет вектор движения CP3, а () представляет собой вектор движения CP4.[00256] More specifically, the conversion may be performed in accordance with formulas (22) - (24), where W represents the width of the current block, and H represents the height of the current block. In formulas (13) - (21) ( ) represents the motion vector CP1, ( ) represents the motion vector CP2, ( ) represents the motion vector of CP3, and ( ) is the motion vector of CP4.
[00257] {CP1, CP2, CP4} могут быть конвертированы в {CP1, CP2, CP3} в соответствии с формулой (22):[00257] {CP1, CP2, CP4} can be converted to {CP1, CP2, CP3} according to formula (22):
(22) (22)
[00258] {CP2, CP3, CP4} можно конвертировать в {CP1, CP2, CP3} в соответствии с формулой (23):[00258] {CP2, CP3, CP4} can be converted to {CP1, CP2, CP3} according to formula (23):
(23) (23)
[00259] {CP1, CP3, CP4} можно конвертировать в {CP1, CP2, CP3} в соответствии с формулой (24):[00259] {CP1, CP3, CP4} can be converted to {CP1, CP2, CP3} according to formula (24):
(24) (24)
[00260] 6. Расширенное временное предсказание вектора движения (расширенное временное предсказание вектора движения, ATMVP):[00260] 6. Advanced Temporal Motion Vector Prediction (Advanced Temporal Motion Vector Prediction, ATMVP):
[00261] При внешнем предсказании в HEVC компенсация движения выполняется для всех выборок текущего блока на основе одной и той же информации о движении, чтобы получить предсказатели выборок блока, который должен быть обработан. Однако не все выборки блока, подлежащего обработке, имеют одинаковые характеристики движения. Использование одной и той же информации о движении для предсказания всех выборок блока, который должен быть обработан, может снизить точность компенсации движения и увеличить остаточную информацию.[00261] In inter-prediction in HEVC, motion compensation is performed on all samples of the current block based on the same motion information to obtain predictors of the samples of the block to be processed. However, not all samples of the block to be processed have the same motion characteristics. Using the same motion information to predict all samples of a block to be processed can reduce motion compensation accuracy and increase residual information.
[00262] Для решения вышеупомянутых проблем в существующем решении предусмотрена технология расширенного временного предсказания вектора движения (advanced temporal motion vector prediction, ATMVP).[00262] To solve the above problems, the current solution provides advanced temporal motion vector prediction (ATMVP) technology.
[00263] Процесс выполнения предсказания с использованием технологии ATMVP в основном содержит следующие этапы, как показано на фиг. 6E:[00263] The process of performing prediction using ATMVP technology mainly comprises the following steps, as shown in FIG. 6E:
[00264] (1) Определить вектор смещения блока, который должен быть обработан.[00264] (1) Determine the offset vector of the block to be processed.
[00265] (2) Определить в соответствующем целевом изображении на основе местоположения субблока, который должен быть обработан, блока, который должен быть обработан, и вектора смещения, субблок, соответствующий субблоку, который должен быть обработан, где целевое изображение - это одно из закодированных изображений.[00265] (2) Determine in the corresponding target image, based on the location of the sub-block to be processed, the block to be processed, and the offset vector, the sub-block corresponding to the sub-block to be processed, where the target image is one of the encoded images.
[00266] (3) Определить вектор движения субблока, который должен быть обработан, на основе вектора движения соответствующего субблока.[00266] (3) Determine the motion vector of the sub-block to be processed based on the motion vector of the corresponding sub-block.
[00267] Например, вектор движения текущего субблока, подлежащего обработке, может быть определен с использованием способа масштабирования. Например, способ масштабирования реализован по Формуле (25):[00267] For example, the motion vector of the current sub-block to be processed may be determined using a scaling method. For example, the scaling method is implemented by Formula (25):
(25) (25)
где представляет собой POC номер кадра, в котором, блок, подлежащий обработке, расположен, представляет собой POC номер кадра, в котором соответствующий субблоку находится, представляет собой POC номер опорного кадра соответствующего субблока, представляет вектор движения, полученный посредством масштабирования, а представляет вектор движения соответствующего субблока.where represents the POC number of the frame in which the block to be processed is located, represents the POC number of the frame in which the corresponding subblock resides, is the POC number of the reference frame of the corresponding subblock, represents the motion vector obtained by scaling, and represents the motion vector of the corresponding sub-block.
[00268] (4) Выполнить предсказание компенсации движения для субблока, который должен быть обработан, на основе вектора движения субблока, который должен быть обработан, чтобы получить значение выборки предсказания для субблока, который должен быть обработан.[00268] (4) Perform motion compensation prediction for the sub-block to be processed based on the motion vector of the sub-block to be processed to obtain a prediction sample value for the sub-block to be processed.
[00269] 7. Планарное предсказание вектора движения (PLANAR):[00269] 7. Planar Motion Vector Prediction (PLANAR):
[00270] При планарном предсказании вектора движения получается информация о движении в верхнем соседнем пространственном местоположении, левом соседнем пространственном местоположении, правом местоположении и нижнем местоположении каждого подлежащего обработке субблока для блока, который должен быть обработан, и вычисляется среднее значение информации о движении и конвертируется в информацию о движении текущего субблока, подлежащего обработке.[00270] In planar motion vector prediction, motion information is obtained at the top neighbor spatial location, left neighbor spatial location, right location, and bottom location of each sub-block to be processed for the block to be processed, and the average value of the motion information is calculated and converted to information about the movement of the current sub-block to be processed.
[00271] Для субблока, подлежащего обработке, координаты которого равны (x, y), вектор движения P(x, y) субблока, подлежащего обработке, вычисляется на основе вектора движения с горизонтальной интерполяцией Ph(x, y) и вектор движения с горизонтальной интерполяцией Pv(x, y) согласно Формуле (26):[00271] For a sub-block to be processed whose coordinates are (x, y), the motion vector P(x, y) of the sub-block to be processed is calculated based on the horizontal motion vector Ph(x, y) and the horizontal motion vector interpolation Pv(x, y) according to Formula (26):
(26) (26)
где H представляет высоту блока, который должен быть обработан, а W представляет ширину блока, который должен быть обработан.where H represents the height of the block to be processed and W represents the width of the block to be processed.
[00272] Вектор движения с горизонтальной интерполяцией Ph (x, y) и вектор движения с горизонтальной интерполяцией Pv (x, y) могут быть вычислены на основе векторов движения субблоков слева, справа, сверху и снизу от текущего субблока, подлежащего обработке, согласно формулам (27) и (28):[00272] The horizontal interpolation motion vector Ph (x, y) and the horizontal interpolation motion vector Pv (x, y) can be calculated based on the motion vectors of the sub-blocks to the left, right, top and bottom of the current sub-block to be processed, according to the formulas (27) and (28):
(27) (27)
(28) (28)
где представляет вектор движения субблока слева от субблока, который должен быть обработан, R(w, y) представляет вектор движения субблока справа от субблока, который должен быть обработан, представляет вектор движения субблока сверху от субблока, подлежащего обработке, а представляет вектор движения субблока снизу от субблока, подлежащего обработке. where represents the motion vector of the sub-block to the left of the sub-block to be processed, R(w, y) represents the motion vector of the sub-block to the right of the sub-block to be processed, represents the motion vector of the sub-block above the sub-block to be processed, and represents the motion vector of the sub-block below the sub-block to be processed.
[00273] Вектор L движения левого блока и вектор A движения верхнего блока получаются на основе пространственного соседнего блока текущего блока кодирования. Векторы движения и блоков кодирования в предварительно заданных местоположениях (-1, y) и (x, -1) получаются на основе координат (x, y) субблока, подлежащего обработке.[00273] The left block motion vector L and the top block motion vector A are obtained based on the spatial neighboring block of the current coding block. Motion vectors and coding blocks at predetermined locations (-1, y) and (x, -1) are obtained based on the coordinates (x, y) of the sub-block to be processed.
[00274] Как показано на фиг. 7, вектор движения R(w, y) правого блока и вектор движения B(x, H) нижнего блока могут быть извлечены с использованием следующего способа:[00274] As shown in FIG. 7, the motion vector R(w, y) of the right block and the motion vector B(x, H) of the bottom block can be extracted using the following method:
[00275] (1) Извлечь информацию BR о временном движении в правом нижнем пространственном соседнем местоположении блока, который должен быть обработан.[00275] (1) Retrieve temporal motion information BR at the lower right spatial neighbor location of the block to be processed.
[00276] (2) Получить вектор движения R(w, y) правого блока путем выполнения вычисления взвешивания на основе извлеченного вектора движения AR в правом верхнем пространственном соседнем местоположении и извлеченной информации BR о временном движении в правом нижнем соседнем пространственном местоположении, как показано в Формуле (29):[00276] (2) Obtain the motion vector R(w, y) of the right block by performing a weighting calculation based on the extracted motion vector AR at the upper right spatial neighbor location and the extracted temporal motion information BR at the lower right spatial neighbor location, as shown in Formula (29):
(29) (29)
[00277] (3) Получить вектор движения B(x, H) нижнего блока, выполнив вычисление взвешивания на основе извлеченного вектора движения BL в нижнем левом пространственном соседнем местоположении и извлеченной информации BR о временном движении в нижнем правом пространственном соседнем местоположении, как показано в Формуле (30):[00277] (3) Obtain the lower block motion vector B(x, H) by performing a weighting calculation based on the extracted motion vector BL at the lower left spatial neighbor location and the extracted temporal motion information BR at the lower right spatial neighbor location, as shown in Formula (30):
(30) (thirty)
[00278] Следует отметить, что вектор движения, используемый в вычислении, представляет собой вектор движения, полученный посредством масштабирования после того, как вектор движения масштабируется, чтобы указывать первый опорный кадр в конкретной очереди опорных кадров.[00278] It should be noted that the motion vector used in the calculation is a motion vector obtained by scaling after the motion vector is scaled to indicate the first reference frame in a particular reference frame queue.
[00279] 8. Режим расширенного предсказания вектора движения на основе аффинной модели движения (режим Affine AMVP):[00279] 8. Affine motion model-based advanced motion vector prediction mode (Affine AMVP mode):
[00280] (1) Создать список кандидатных векторов движения.[00280] (1) Create a list of candidate motion vectors.
[00281] Список кандидатных векторов движения, соответствующий режиму AMVP на основе аффинной модели движения, создается с использованием способа предсказания унаследованного вектора движения контрольной точки и/или способа предсказания построенного вектора движения контрольной точки. В вариантах осуществления этой заявки список кандидатных векторов движения, соответствующий режиму AMVP на основе аффинной модели движения, может упоминаться как список кандидатных предсказателей векторов движения контрольной точки (control point motion vectors predictor candidate list). Предсказатель вектора движения каждой контрольной точки содержит векторы движения двух контрольных точек (для аффинной модели движения с 4 параметрами) или векторы движения трех контрольных точек (для аффинной модели движения с 6 параметрами).[00281] A list of candidate motion vectors corresponding to the affine motion model based AMVP mode is generated using a checkpoint legacy motion vector prediction method and/or a checkpoint built motion vector prediction method. In embodiments of this application, a list of candidate motion vectors corresponding to an affine motion model based AMVP mode may be referred to as a control point motion vectors predictor candidate list. The motion vector predictor of each control point contains the motion vectors of two control points (for a 4-parameter affine motion model) or the motion vectors of three control points (for a 6-parameter affine motion model).
[00282] Необязательно, список кандидатных предсказателей векторов движения контрольной точки сокращается и сортируется в соответствии с конкретным правилом и может быть усечен или дополнен до конкретного количества.[00282] Optionally, the list of candidate checkpoint motion vector predictors is reduced and sorted according to a specific rule, and may be truncated or padded to a specific number.
[00283] (2) Определить оптимальный предсказатель вектора движения контрольной точки.[00283] (2) Determine the optimal motion vector predictor of the reference point.
[00284] На стороне кодера вектор движения каждого субблока текущего блока кодирования получается на основе каждого предиктора вектора движения контрольной точки в списке кандидатов предиктора векторов движения контрольной точки согласно формуле (3) или (5). Полученный вектор движения используется для получения значения выборки на соответствующем местоположении в опорном кадре, на который указывает вектор движения субблока. Полученное значение выборки используется в качестве предсказателя для выполнения компенсации движения с использованием аффинной модели движения. Вычисляется средняя разница между исходным значением и значением предсказания каждой выборки текущего блока кодирования. Предсказатель вектора движения контрольной точки, соответствующий минимальной средней разнице, выбирается в качестве оптимального предсказателя вектора движения контрольной точки и используется в качестве предсказателей вектора движения двух или трех контрольных точек текущего блока кодирования. Номер индекса, представляющий местоположение предсказателя вектора движения контрольной точки в списке кандидатов предсказателя вектора движения контрольной точки, кодируется в битовом потоке и отправляется в декодер.[00284] At the encoder side, the motion vector of each subblock of the current coding block is obtained based on each motion vector predictor of the checkpoint in the checkpoint motion vector predictor candidate list according to formula (3) or (5). The resulting motion vector is used to obtain a sample value at the corresponding location in the reference frame pointed to by the subblock's motion vector. The resulting sample value is used as a predictor to perform motion compensation using an affine motion model. The average difference between the original value and the prediction value of each sample of the current coding block is calculated. The motion vector predictor of the checkpoint corresponding to the minimum average difference is selected as the optimal motion vector predictor of the checkpoint and used as the motion vector predictors of two or three breakpoints of the current coding block. An index number representing the location of the cue motion vector predictor in the cue motion vector predictor candidate list is encoded in the bitstream and sent to the decoder.
[00285] На стороне декодера номер индекса анализируется, и предсказатель вектора движения контрольной точки (control point motion vectors predictor, CPMVP) определяется из списка кандидатов предсказателей векторов движения контрольной точки на основе номера индекса.[00285] On the decoder side, the index number is analyzed and a control point motion vector predictor (CPMVP) is determined from a list of control point motion vector predictor candidates based on the index number.
[00286] (3) Определить вектор движения контрольной точки.[00286] (3) Determine the motion vector of the reference point.
[00287] На стороне кодера предсказатель вектора движения контрольной точки используется в качестве начальной точки поиска для поиска движения в пределах конкретного диапазона поиска, чтобы получить вектор движения контрольной точки (control point motion vectors, CPMV). Разница между вектором движения контрольной точки и предсказателем вектора движения контрольной точки (control point motion vectors differences, CPMVD) передается на сторону декодера.[00287] At the encoder side, the control point motion vector predictor is used as a search starting point to search for motion within a specific search range to obtain control point motion vectors (CPMV). The difference between the control point motion vector and the control point motion vectors differences (CPMVD) predictor is transmitted to the decoder side.
[00288] На стороне декодера разность векторов движения контрольной точки анализируется и добавляется к предсказателю вектора движения контрольной точки, чтобы получить вектор движения контрольной точки.[00288] On the decoder side, the checkpoint motion vector difference is analyzed and added to the checkpoint motion vector predictor to obtain the checkpoint motion vector.
[00289] 9. Режим слияния субблоков (sub-block based merging mode):[00289] 9. Sub-block based merging mode:
[00290] Список кандидатов слияния на основе субблоков (sub-block based merging candidate list) создается с использованием по меньшей мере одного из: расширенного временного предсказания вектора движения, способа предсказания унаследованного вектора движения контрольной точки, способа предсказания построенного вектора движения контрольной точки и способа планарного предсказания.[00290] A sub-block based merging candidate list is created using at least one of: extended temporal motion vector prediction, a checkpoint legacy motion vector prediction method, a checkpoint constructed motion vector prediction method, and a planar prediction.
[00291] Необязательно, список кандидатов слияния на основе субблоков сокращается и сортируется в соответствии с конкретным правилом и может быть усечен или дополнен до конкретного количества.[00291] Optionally, the subblock-based merge candidate list is reduced and sorted according to a specific rule, and may be truncated or padded to a specific number.
[00292] На стороне кодера, если используется расширенное временное предсказание вектора движения, вектор движения каждого субблока (выборка или блок выборки N1×N2, полученный с использованием конкретного метода разделения) получается с использованием способа, описанного в предшествующих описаниях в «7. Планарное предсказание вектора движения». Если используется способ планарного предсказания, вектор движения каждого субблока получается с использованием способа, описанного в предшествующих описаниях в «8. Режим расширенного предсказания вектора движения на основе аффинной модели движения».[00292] On the encoder side, if extended temporal motion vector prediction is used, the motion vector of each sub-block (sample or N1×N2 sample block obtained using a specific partitioning method) is obtained using the method described in the previous descriptions in “7. Planar motion vector prediction”. If the planar prediction method is used, the motion vector of each sub-block is obtained using the method described in the foregoing descriptions in “8. Advanced Motion Vector Prediction Mode Based on Affine Motion Model.
[00293] Если используется способ предсказания унаследованного вектора движения контрольной точки или способ предсказания построенного вектора движения контрольной точки, вектор движения каждого субблока (выборка или блок выборки N1×N2, полученный с использованием конкретного способа разбиения) текущего блока получается согласно Формуле (3) или (5). После того, как вектор движения каждого субблока получен, дополнительно получается значение выборки в местоположении в опорном кадре, на который указывает вектор движения точек субблока, и значение выборки используются в качестве предсказателя субблока для аффинной компенсации движения. Вычисляется средняя разница между исходным значением и предсказателем каждой выборки текущего блока кодирования. Вектор движения контрольной точки, соответствующий минимальной средней разнице, выбирается в качестве векторов движения двух или трех контрольных точек текущего блока кодирования. Номер индекса, представляющий местоположение вектора движения контрольной точки в списке кандидатов, кодируется в битовом потоке и отправляется в декодер.[00293] If a checkpoint legacy motion vector prediction method or a checkpoint constructed motion vector prediction method is used, the motion vector of each sub-block (sample or N1×N2 sample block obtained using a specific partitioning method) of the current block is obtained according to Formula (3), or (five). After the motion vector of each sub-block is obtained, a sample value at a location in the reference frame pointed to by the motion vector of the sub-block points is further obtained, and the sample value is used as a sub-block predictor for affine motion compensation. The average difference between the original value and the predictor of each sample of the current coding block is calculated. The breakpoint motion vector corresponding to the minimum average difference is selected as the motion vectors of two or three breakpoints of the current coding block. An index number representing the location of the motion vector of the checkpoint in the candidate list is encoded in the bitstream and sent to the decoder.
[00294] На стороне декодера номер индекса синтаксически анализируется, и вектор движения контрольной точки (control point motion vectors, CPMV) определяется из списка кандидатов слияния векторов движения контрольной точки на основе номера индекса.[00294] On the decoder side, the index number is parsed and a control point motion vector (control point motion vectors, CPMV) is determined from a list of control point motion vector fusion candidates based on the index number.
[00295] Кроме того, следует отметить, что в этой заявке «по меньшей мере один» означает один или несколько, а «множество» означает два или более двух. Термин "и/или" описывает ассоциативную взаимосвязь для описания ассоциированных объектов и представляет, что могут существовать три взаимосвязи. Например, A и/или B могут представлять следующие случаи: существует только A, существуют как A, так и B, и существует только B, причем A и B могут быть в единственном или множественном числе. Символ «/» обычно представляет отношение «или» между связанными объектами. «По меньшей мере, один элемент (часть) из следующего» или подобное выражение означает любую комбинацию этих элементов, в том числе единичный элемент (часть) или любую комбинацию множественных элементов (частей). Например, по меньшей мере, один элемент (часть) из a, b или c может представлять: a, b, c, ab, ac, bc или abc, где a, b и c могут быть в единственном или множественном числе.[00295] In addition, it should be noted that in this application, "at least one" means one or more, and "many" means two or more than two. The term "and/or" describes an association relationship for describing associated objects and represents that there may be three relationships. For example, A and/or B may represent the following cases: only A exists, both A and B exist, and only B exists, where A and B can be singular or plural. The "/" character usually represents an "or" relationship between related entities. "At least one element (part) of the following" or a similar expression means any combination of these elements, including a single element (part) or any combination of multiple elements (parts). For example, at least one element (part) of a, b, or c may represent: a, b, c, ab, ac, bc, or abc, where a, b, and c may be singular or plural.
[00296] В этой заявке, когда режим внешнего предсказания используется для декодирования текущего блока, элемент синтаксиса может использоваться для сигнализации режима внешнего предсказания.[00296] In this application, when the inter prediction mode is used to decode the current block, the syntax element can be used to signal the inter prediction mode.
[00297] Некоторые используемые в настоящее время синтаксические структуры режима внешнего предсказания, используемые для синтаксического анализа текущего блока, см. в Таблице 1. Следует отметить, что элемент синтаксиса в структуре синтаксиса альтернативно может быть представлен другими указателями. В данной заявке это конкретно не ограничено.[00297] See Table 1 for some currently used inter-prediction mode syntax structures used to parse the current block. It should be noted that a syntax element in a syntax structure may alternatively be represented by other pointers. In this application, this is not specifically limited.
Таблица 1.Table 1.
(MvdL0[x0][y0][0] != 0 | | MvdL0[x0][y0][1] != 0 | |
MvdL1[x0][y0][0] != 0 | | MvdL1[x0][y0][1] != 0))if(sps_amvr_enabled_flag && inter_affine_flag == 0 &&
(MvdL0[x0][y0][0] != 0 | | MvdL0[x0][y0][1] != 0 | |
MvdL1[x0][y0][0] != 0 | | MvdL1[x0][y0][1] != 0))
[00298] Переменная treeType указывает тип дерева кодирования, используемый для кодирования текущего блока.[00298] The variable treeType indicates the type of coding tree used to encode the current block.
[00299] Переменная slice_type используется для указания типа слайса, в котором расположен текущий блок, например, типа P, типа B или типа I.[00299] The variable slice_type is used to indicate the type of slice in which the current block is located, for example, type P, type B, or type I.
[00300] Элемент синтаксиса cu_skip_flag [x0] [y0] может использоваться, чтобы указать, имеет ли текущий блок остаток. Например, когда cu_skip_flag [x0] [y0] = 1, это указывает, что текущий блок имеет остаток; или когда cu_skip_flag [x0] [y0] = 0, это указывает, что текущий блок не имеет остатка.[00300] The cu_skip_flag[x0][y0] syntax element may be used to indicate whether the current block has a remainder. For example, when cu_skip_flag[x0][y0] = 1, this indicates that the current block has a remainder; or when cu_skip_flag[x0][y0] = 0, it indicates that the current block has no remainder.
[00301] Следует отметить, что режим пропуска - это особый режим слияния. После использования режима слияния для поиска вектора движения, если кодер определяет с помощью некоторого способа, что текущий блок в основном одинаковый с опорным блоком, остаточные данные не нужно передавать, и только индекс вектора движения и cu_skip_flag необходимо передать. Следовательно, если cu_skip_flag [x0] [y0] = 0, это указывает, что текущий блок не имеет остатка, и остаточные данные не нужно синтаксически анализировать.[00301] It should be noted that the skip mode is a special merge mode. After using the merge mode for motion vector search, if the encoder determines by some method that the current block is basically the same as the reference block, the residual data need not be transmitted, and only the motion vector index and cu_skip_flag need to be transmitted. Therefore, if cu_skip_flag[x0][y0] = 0, this indicates that the current block has no remainder and the residual data does not need to be parsed.
[00302] Элемент синтаксиса pred_mode_flag[x0][y0] используется для указания того, является ли режим предсказания для текущего блока режимом внешнего предсказания или внутреннего предсказания.[00302] The pred_mode_flag[x0][y0] syntax element is used to indicate whether the prediction mode for the current block is inter prediction or intra prediction mode.
[00303] Переменная CuPredMode[x0][y0] определяется на основе pre_mode_flag[x0][y0]. MODE_INTRA указывает режим внутреннего предсказания.[00303] The variable CuPredMode[x0][y0] is determined based on pre_mode_flag[x0][y0]. MODE_INTRA indicates the intra prediction mode.
[00304] Элемент синтаксиса merge_flag[x0][y0] может использоваться, чтобы указать, используется ли режим слияния (merge) для текущего блока. Например, когда merge_flag[x0][y0] = 1, это указывает, что режим слияния используется для текущего блока; или когда merge_flag[x0][y0] = 0, это указывает, что режим слияния не используется для текущего блока, где x0 и y0 представляют координаты текущего блока в видеоизображении.[00304] The syntax element merge_flag[x0][y0] can be used to indicate whether the merge mode is used for the current block. For example, when merge_flag[x0][y0] = 1, this indicates that the merge mode is being used for the current block; or when merge_flag[x0][y0] = 0, this indicates that the merge mode is not used for the current block, where x0 and y0 represent the coordinates of the current block in the video image.
[00305] cbWidth определяет ширину текущего блока, а cbHeight определяет высоту текущего блока.[00305] cbWidth specifies the width of the current box, and cbHeight specifies the height of the current box.
[00306] Элемент синтаксиса sps_affine_enabled_flag может использоваться, чтобы указать, может ли аффинная модель движения использоваться для внешнего предсказания блока изображения, содержащегося в видеоизображении. Например, когда sps_affine_enabled_flag=0, это указывает, что аффинная модель движения не может использоваться для внешнего предсказания блока изображения, содержащегося в видеоизображении; или когда sps_affine_enabled_flag=1, это указывает, что аффинная модель движения может использоваться для внешнего предсказания блока изображения, содержащегося в видеоизображении.[00306] The sps_affine_enabled_flag syntax element can be used to indicate whether an affine motion model can be used for inter prediction of an image block contained in a video image. For example, when sps_affine_enabled_flag=0, this indicates that the affine motion model cannot be used for inter prediction of an image block contained in a video image; or when sps_affine_enabled_flag=1, this indicates that the affine motion model can be used for inter prediction of an image block contained in a video image.
[00307] Элемент синтаксиса merge_subblock_flag[x0][y0] может использоваться для указания, используется ли режим слияния на основе субблока для текущего блока. Тип (slice_type) слайса, в котором расположен текущий блок, является типом P или типом B. Например, когда merge_subblock_flag[x0][y0] = 1, это указывает, что для текущего блока используется режим слияния на основе субблока; или когда merge_subblock_flag[x0][y0] = 0, это указывает, что режим слияния на основе субблока не используется для текущего блока, но может использоваться режим слияния на основе модели прямолинейного движения.[00307] The merge_subblock_flag[x0][y0] syntax element can be used to indicate whether a subblock-based merge mode is used for the current block. The type (slice_type) of the slice in which the current block is located is type P or type B. For example, when merge_subblock_flag[x0][y0] = 1, this indicates that the current block uses subblock-based merge mode; or when merge_subblock_flag[x0][y0] = 0, it indicates that the subblock-based merge mode is not used for the current block, but the rectilinear motion model-based merge mode may be used.
[00308] Элемент синтаксиса merge_idx[x0][y0] может использоваться для указания индекса списка кандидатов слияния.[00308] The merge_idx[x0][y0] syntax element may be used to specify the index of the merge candidate list.
[00309] Элемент синтаксиса merge_subblock_idx[x0][y0] может использоваться для указания индекса списка кандидатов слияния на основе субблока.[00309] The merge_subblock_idx[x0][y0] syntax element may be used to specify the index of a subblock-based merge candidate list.
[00310] sps_sbtmvp_enabled_flag может использоваться, чтобы указать, можно ли использовать режим ATMVP для внутреннего предсказания блока изображения, содержащегося в видеоизображении. Например, когда sps_sbtmvp_enabled_flag=1, это указывает, что режим ATMVP может использоваться для внутреннего предсказания блока изображения, содержащегося в видеоизображении; или когда sps_sbtmvp_enabled_flag=0, это указывает, что режим ATMVP не может использоваться для внутреннего предсказания блока изображения, содержащегося в видеоизображении.[00310] The sps_sbtmvp_enabled_flag may be used to indicate whether the ATMVP mode can be used for intra prediction of an image block contained in a video image. For example, when sps_sbtmvp_enabled_flag=1, this indicates that the ATMVP mode can be used for intra prediction of a picture block contained in a video picture; or when sps_sbtmvp_enabled_flag=0, this indicates that the ATMVP mode cannot be used for intra prediction of a picture block contained in a video picture.
[00311] Элемент синтаксиса inter_affine_flag[x0][y0] может использоваться, чтобы указать, используется ли режим AMVP на основе аффинной модели движения для текущего блока, когда слайс, в котором расположен текущий блок, является слайсом P-типа или слайсом B-типа. Например, когда inter_affine_flag[x0][y0] = 0, это указывает, что режим AMVP на основе аффинной модели движения используется для текущего блока; или когда inter_affine_flag[x0][y0] = 1, это указывает, что режим AMVP на основе аффинной модели движения не используется для текущего блока, но может использоваться режим AMVP на основе модели прямолинейного движения.[00311] The inter_affine_flag[x0][y0] syntax element may be used to indicate whether the affine motion model based AMVP mode is used for the current block when the slice in which the current block is located is a P-type slice or a B-type slice . For example, when inter_affine_flag[x0][y0] = 0, this indicates that the affine motion model based AMVP mode is used for the current block; or when inter_affine_flag[x0][y0] = 1, it indicates that the affine motion model based AMVP mode is not used for the current block, but the rectilinear motion model based AMVP mode can be used.
[00312] Элемент синтаксиса cu_affine_type_flag[x0][y0] может использоваться, чтобы указать, используется ли аффинная модель движения с 6 параметрами для выполнения компенсации движения для текущего блока, когда слайс, в котором расположен текущий блок, является слайсом P-типа или слайсом B-типа. Когда cu_affine_type_flag[x0][y0] = 0, это указывает, что аффинная модель движения с 6 параметрами не используется для выполнения компенсации движения для текущего блока, но только аффинная модель движения с 4 параметрами может использоваться для выполнения компенсации движения; или когда cu_affine_type_flag[x0][y0] = 1, это указывает, что аффинная модель движения с 6 параметрами используется для выполнения компенсации движения для текущего блока.[00312] The cu_affine_type_flag[x0][y0] syntax element can be used to indicate whether a 6-parameter affine motion model is used to perform motion compensation for the current block when the slice in which the current block is located is a P-type slice or a B-type. When cu_affine_type_flag[x0][y0] = 0, it indicates that a 6-parameter affine motion model is not used to perform motion compensation for the current block, but only a 4-parameter affine motion model can be used to perform motion compensation; or when cu_affine_type_flag[x0][y0] = 1, this indicates that a 6-parameter affine motion model is used to perform motion compensation for the current block.
[00313] Как показано в таблице 2, когда MotionModelIdc[x0][y0] = 1, это указывает на то, что используется аффинная модель движения с 4 параметрами; когда MotionModelIdc[x0][y0] = 2, это указывает, что используется аффинная модель движения с 6 параметрами; или когда MotionModelIdc[x0][y0] = 0, это указывает, что используется модель прямолинейного движения.[00313] As shown in Table 2, when MotionModelIdc[x0][y0] = 1, this indicates that a 4-parameter affine motion model is being used; when MotionModelIdc[x0][y0] = 2, this indicates that an affine motion model with 6 parameters is used; or when MotionModelIdc[x0][y0] = 0, this indicates that a rectilinear motion model is being used.
Таблица 2.Table 2.
[00314] Переменная MaxNumMergeCand используется для указания максимальной длины списка кандидатных векторов движения на слияние, переменная MaxNumSubblockMergeCand используется для указания максимальной длины списка кандидатных векторов движения на слияние на основе субблока, inter_pred_idc[x0][y0] используется для указания направления предсказания, PRED_L0 указывает прямое предсказание, num_ref_idx_l0_active_minus1 определяет количество опорных кадров в списке переднего опорного кадра, ref_idx_l0[х0][у0] указывает значение индекса для переднего опорного кадра текущего блока, mvd_coding (х0, у0, 0, 0) указывает первую разность векторов движения, mvp_l0_flag[x0][y0] указывает значение индекса для списка кандидатов прямого MVP, PRED_L1 используется для указания обратного предсказания, num_ref_idx_l1_active_minus1 указывает количество опорных кадров в обратном списке опорных кадров, ref_idx_l1[x0][y0] указывает значение индекса для обратного опорного кадра текущего блока, а mvp_l1_flag[x0][y0] указывает значение индекса для списка кандидатов обратного MVP.[00314] The variable MaxNumMergeCand is used to indicate the maximum length of the list of candidate motion vectors to merge, the variable MaxNumSubblockMergeCand is used to indicate the maximum length of the list of candidate motion vectors to merge on a sub-block basis, inter_pred_idc[x0][y0] is used to indicate the prediction direction, PRED_L0 indicates forward prediction, num_ref_idx_l0_active_minus1 specifies the number of reference frames in the front reference frame list, ref_idx_l0[x0][y0] indicates the index value for the current block's front reference frame, mvd_coding(x0, y0, 0, 0) indicates the first motion vector difference, mvp_l0_flag[x0] [y0] indicates the index value for the forward MVP candidate list, PRED_L1 is used to indicate backward prediction, num_ref_idx_l1_active_minus1 indicates the number of reference frames in the reverse reference frame list, ref_idx_l1[x0][y0] indicates the index value for the reverse reference frame of the current block, and mvp_l1_flag[ x0 ][y0] specifies the index value for the reverse MVP candidate list.
[00315] В таблице 1 ae(v) представляет элемент синтаксиса, закодированный с использованием контекстно-зависимого адаптивного двоичного арифметического кодирования (context-based adaptive binary arithmetic coding, CABAC).[00315] In Table 1, ae(v) represents a syntax element encoded using context-based adaptive binary arithmetic coding (CABAC).
[00316] Далее подробно описывается процесс внешнего предсказания, как показано на фиг. 8А.[00316] Next, the inter prediction process will be described in detail as shown in FIG. 8A.
[00317] Этап 801: синтаксически анализировать битовый поток на основе структуры синтаксиса, показанной в таблице 1, и определить режим внешнего предсказания для текущего блока.[00317] Step 801: Parse the bitstream based on the syntax structure shown in Table 1 and determine the inter prediction mode for the current block.
[00318] Если определено, что режим внешнего предсказания для текущего блока является режимом AMVP на основе аффинной модели движения, выполняется этап 802a.[00318] If it is determined that the inter prediction mode for the current block is the affine motion model based AMVP mode,
[00319] Элементы синтаксиса sps_affine_enabled_flag=1, merge_flag=0 и inter_affine_flag=1 указывают, что режим внешнего предсказания для текущего блока является режимом AMVP на основе аффинной модели движения.[00319] The sps_affine_enabled_flag=1, merge_flag=0, and inter_affine_flag=1 syntax elements indicate that the inter prediction mode for the current block is an affine motion model based AMVP mode.
[00320] Если определено, что режим внешнего предсказания для текущего блока является режимом слияния (merge) субблоков, выполняется этап 802b.[00320] If it is determined that the inter-prediction mode for the current block is the sub-block merge mode,
[00321] Элемент синтаксиса sps_affine_enabled_flag=1 или элемент синтаксиса sps_sbtmvp_enabled_flag=1, и элементы синтаксиса merge_flag=1 и merge_subblock_flag=1 указывают, что режим внешнего предсказания для текущего блока является режимом слияния субблоков.[00321] The sps_affine_enabled_flag=1 syntax element or the sps_sbtmvp_enabled_flag=1 syntax element, and the merge_flag=1 and merge_subblock_flag=1 syntax elements indicate that the inter prediction mode for the current block is the subblock merge mode.
[00322] Этап 802a: создать список кандидатных векторов движения, соответствующий режиму AMVP на основе аффинной модели движения. Выполнить этап 803a.[00322]
[00323] Кандидатный вектор движения в контрольную точку текущего блока выводится с использованием способа предсказания унаследованного вектора движения контрольной точки и/или способа предсказания построенного вектора движения контрольной точки и добавляется в список кандидатных векторов движения.[00323] A checkpoint candidate motion vector of the current block is output using the checkpoint inherited motion vector prediction method and/or checkpoint built motion vector prediction method, and added to the list of candidate motion vectors.
[00324] Список кандидатных векторов движения может содержать список с 2 кортежами (для текущего блока кодирования используется аффинная модель движения с 4 параметрами) или список с 3 кортежами. Список с 2 кортежами содержит одно или более 2 кортежей , используемых для построения аффинной модели движения с 4 параметрами. Список с 3 кортежами содержит одно или более 3 кортежей, используемых для построения аффинной модели движения с 6 параметрами.[00324] The list of candidate motion vectors may be a 2-tuple list (a 4-parameter affine motion model is used for the current coding block) or a 3-tuple list. The 2-tuple list contains one or more 2-tuples used to build an affine motion model with 4 parameters. The 3-tuple list contains one or more 3-tuples used to build an affine motion model with 6 parameters.
[00325] Необязательно, список из 2-х/3-х кортежей кандидатных векторов движения сокращается и сортируется в соответствии с конкретным правилом и может быть усечен или дополнен до конкретного количества.[00325] Optionally, the 2/3-tuple list of candidate motion vectors is reduced and sorted according to a specific rule, and may be truncated or padded to a specific number.
[00326] A1: Описывается процесс построения списка кандидатных векторов движения с использованием способа предсказания унаследованного вектора движения контрольной точки.[00326] A1: A process for constructing a list of candidate motion vectors using a checkpoint legacy motion vector prediction method is described.
[00327] ФИГ. 4 используется в качестве примера. В примере на фиг. 4, блоки в соседних местоположениях вокруг текущего блока просматриваются в порядке A1->B1->B0->A0->B2, чтобы найти аффинно-кодированный блок, включающий в себя блок в соседнем местоположении текущего блока, и чтобы получить информацию о движении контрольной точки аффинно-кодированного блока. Дополнительно, информация о движении контрольной точки аффинно-кодированного блока используется для построения модели движения, чтобы получить информацию о кандидатном движении в контрольную точку текущего блока. Для получения подробной информации см. Предыдущее описание в разделе «3. Способ предсказания унаследованного вектора движения контрольной точки». Подробности не описаны здесь снова.[00327] FIG. 4 is used as an example. In the example in FIG. 4, blocks at neighboring locations around the current block are searched in the order A1->B1->B0->A0->B2 to find an affine-coded block including the block at the neighboring location of the current block, and to obtain motion information of the reference points of the affine-coded block. Additionally, information about the movement of the affine-coded block checkpoint is used to build a movement model to obtain information about the candidate movement to the current block's checkpoint. For details, see the previous description in "3. A way to predict the legacy motion vector of a checkpoint. Details are not described here again.
[00328] Например, аффинная модель движения, используемая для текущего блока, представляет собой аффинную модель движения с 4 параметрами (то есть MotionModelIdc=1). Если для соседнего блока аффинного декодирования используется аффинная модели движения с 4 параметрами, получаются векторы движения двух контрольных точек блока аффинного декодирования: вектор движения (vx4, vy4) верхней левой контрольной точки (x4, y4) и вектор движения (vx5, vy5) правой верхней контрольной точки (x5, y5). Блок аффинного декодирования - это блок аффинного кодирования, для которого предсказание выполняется с использованием аффинной модели движения во время кодирования.[00328] For example, the affine motion model used for the current block is a 4-parameter affine motion model (ie MotionModelIdc=1). If a 4-parameter affine motion model is used for an adjacent affine decoder block, the motion vectors of the two control points of the affine decoder block are obtained: the motion vector (vx4, vy4) of the upper left control point (x4, y4) and the motion vector (vx5, vy5) of the upper right control point (x5, y5). An affine decoding block is an affine encoding block for which prediction is performed using an affine motion model during encoding.
[00329] Векторы движения двух контрольных точек, а именно верхней левой и верхней правой контрольных точек текущего блока, выводятся соответственно согласно формулам (6) и (7), соответствующим аффинной модели движения с 4 параметрами, с использованием аффинной модели движения с 4 параметрами, включающей в себя две контрольные точки соседнего блока аффинного декодирования.[00329] The motion vectors of the two control points, namely the upper left and upper right control points of the current block, are derived respectively according to formulas (6) and (7) corresponding to the 4-parameter affine motion model using the 4-parameter affine motion model, which includes two checkpoints of a neighboring affine decoding block.
[00330] Если для соседнего блока аффинного декодирования используется аффинная модель движения с 6 параметрами, получаются векторы движения трех контрольных точек соседнего блока аффинного декодирования, например вектор движения (vx4, vy4) верхней левой контрольной точки (x4, y4), вектор движения (vx5, vy5) верхней правой контрольной точки (x5, y5) и вектор движения (vx6, vy6) нижней левой вершины (x6, y6) на фиг. 4.[00330] If a 6-parameter affine motion model is used for a neighbor affine decoder, the motion vectors of the three control points of the neighbor affine decoder are obtained, e.g. , vy5) of the upper right control point (x5, y5) and the motion vector (vx6, vy6) of the lower left vertex (x6, y6) in FIG. four.
[00331] Векторы движения двух контрольных точек, а именно верхней левой и верхней правой контрольных точек текущего блока, выводятся соответственно согласно формулам (8) и (9), соответствующим аффинной модели движения с 6 параметрами, с использованием аффинной модели движения с 6 параметрами, включающей в себя три контрольные точки соседнего блока аффинного декодирования.[00331] The motion vectors of the two control points, namely the upper left and upper right control points of the current block, are derived respectively according to formulas (8) and (9) corresponding to the 6-parameter affine motion model using the 6-parameter affine motion model, which includes three control points of the adjacent affine decoding block.
[00332] Например, аффинная модель движения, используемая для текущего блока декодирования, представляет собой аффинную модель движения с 6 параметрами (то есть MotionModelIdc=2). Если аффинная модель движения, используемая для соседнего блока аффинного декодирования, является аффинной моделью движения с 6 параметрами, получаются векторы движения трех контрольных точек соседнего блока аффинного декодирования, например вектор движения (vx4, vy4) верхней левой контрольной точки (x4, y4), вектор движения (vx5, vy5) верхней правой контрольной точки (x5, y5) и вектор движения (vx6, vy6) нижней левой вершины (x6, y6) на фиг. 4.[00332] For example, the affine motion model used for the current decoding block is a 6-parameter affine motion model (ie, MotionModelIdc=2). If the affine motion model used for the neighboring affine decoding block is a 6-parameter affine motion model, the motion vectors of the three control points of the neighboring affine decoding block are obtained, for example, the motion vector (vx4, vy4) of the upper left control point (x4, y4), vector motion (vx5, vy5) of the upper right control point (x5, y5) and motion vector (vx6, vy6) of the lower left vertex (x6, y6) in FIG. four.
[00333] Векторы движения трех контрольных точек, а именно, верхней левой, верхней правой и нижней левой контрольных точек текущего блока, выводятся соответственно в соответствии с формулами (8), (9) и (10), соответствующими аффинной модели движения с 6 параметрами с использованием аффинной модели движения с 6 параметрами, включающей в себя три контрольные точки соседнего блока аффинного декодирования.[00333] The motion vectors of the three control points, namely, the upper left, upper right and lower left control points of the current block, are output respectively in accordance with formulas (8), (9) and (10) corresponding to the 6-parameter affine motion model using a 6-parameter affine motion model including three control points of a neighboring affine decoding block.
[00334] Если аффинная модель движения, используемая для соседнего блока аффинного декодирования, является аффинной моделью движения с 4 параметрами, получаются векторы движения двух контрольных точек соседнего блока аффинного декодирования: вектор движения (vx4, vy4) верхней левой контрольной точки (x4, y4) и вектор движения (vx5, vy5) верхней правой контрольной точки (x5, y5).[00334] If the affine motion model used for the neighboring affine decoding block is a 4-parameter affine motion model, the motion vectors of the two control points of the adjacent affine decoding block are obtained: motion vector (vx4, vy4) of the upper left control point (x4, y4) and the motion vector (vx5, vy5) of the upper right control point (x5, y5).
[00335] Векторы движения трех контрольных точек, а именно верхней левой, верхней правой и нижней левой контрольных точек текущего блока, выводятся соответственно согласно формулам (6) и (7), соответствующим аффинной модели движения с 4 параметрами, используя аффинную модель движения с 4 параметрами, включающую в себя две контрольные точки соседнего блока аффинного декодирования.[00335] The motion vectors of the three control points, namely the upper left, upper right, and lower left control points of the current block, are derived respectively according to formulas (6) and (7) corresponding to the 4-parameter affine motion model using the 4-parameter affine motion model. parameters, which includes two checkpoints of the neighboring block of affine decoding.
[00336] Следует отметить, что в этой заявке также могут использоваться другие модели движения, возможные местоположения и порядки поиска. Подробности здесь не описаны. Следует отметить, что в этой заявке также могут использоваться способы для представления моделей движения соседних и текущих блоков кодирования на основе других контрольных точек. Подробности здесь не описаны.[00336] It should be noted that other traffic patterns, possible locations, and search orders may also be used in this application. Details are not described here. It should be noted that this application can also use methods to represent motion models of adjacent and current coding blocks based on other breakpoints. Details are not described here.
[00337] A2: Описан процесс построения списка кандидатных векторов движения с использованием способа предсказания построенного вектора движения контрольной точки.[00337] A2: A process for constructing a list of candidate motion vectors using a checkpoint constructed motion vector prediction method is described.
[00338] Например, аффинная модель движения, используемая для текущего блока декодирования, представляет собой аффинную модель движения с 4 параметрами (то есть MotionModelIdc=1) и векторы движения верхней левой вершины и верхней правой вершины текущего блока кодирования определяются на основе информации о движении соседнего кодированного блока текущего блока кодирования. В частности, список кандидатных векторов движения может быть построен с использованием способа 1 предсказания построенного вектора движения контрольной точки или способа 2 предсказания построенного вектора движения контрольной точки. Для получения информации о конкретном способе см. предыдущее описание в разделе «4. Способ 1 предсказания построенного вектора движения контрольной точки»; 5. Способ 2 предсказания построенного вектора движения контрольной точки». Подробности не описаны здесь снова.[00338] For example, the affine motion model used for the current decoding block is a 4-parameter affine motion model (i.e., MotionModelIdc=1) and the motion vectors of the top left vertex and top right vertex of the current coding block are determined based on the motion information of the adjacent encoded block of the current encoding block. In particular, the list of candidate motion vectors may be constructed using the reference point constructed motion
[00339] Например, аффинная модель движения, используемая для текущего блока декодирования, представляет собой аффинную модель движения с 6 параметрами (то есть MotionModelIdc=2) и векторы движения верхней левой вершины, верхней правой вершины и нижней левой вершины текущего блока кодирования определяется на основе информации о движении соседнего кодированного блока текущего блока кодирования. В частности, список кандидатных векторов движения может быть построен с использованием способа 1 предсказания построенного вектора движения контрольной точки или способа 2 предсказания построенного вектора движения контрольной точки. Для получения информации о конкретном способе см. предыдущее описание в разделе «4. Способ 1 предсказания построенного вектора движения контрольной точки»; 5. Способ 2 предсказания построенного вектора движения контрольной точки». Подробности не описаны здесь снова.[00339] For example, the affine motion model used for the current decoding block is a 6-parameter affine motion model (i.e., MotionModelIdc=2) and the motion vectors of the top left vertex, top right vertex, and bottom left vertex of the current coding block are determined based on motion information of a neighboring encoded block of the current encoding block. In particular, the list of candidate motion vectors may be constructed using the reference point constructed motion
[00340] Следует отметить, что в этой заявке также могут использоваться другие комбинации информации о движении контрольной точки. Подробности здесь не описаны.[00340] It should be noted that other combinations of checkpoint movement information may also be used in this application. Details are not described here.
[00341] Этап 803a: Синтаксически анализировать битовый поток и определить оптимальный предсказатель вектора движения контрольной точки. Выполнить этап 804a.[00341]
[00342] B1: Если аффинная модель движения, используемая для текущего блока декодирования, представляет собой аффинную модель движения с 4 параметрами (MotionModelIdc=1), номер индекса синтаксически анализируется, и оптимальный предсказатель вектора движения для двух контрольных точек определяется из списка кандидатных векторов движения на основе номера индекса.[00342] B1: If the affine motion model used for the current decoding block is a 4-parameter affine motion model (MotionModelIdc=1), the index number is parsed and the optimal motion vector predictor for the two control points is determined from a list of candidate motion vectors based on index number.
[00343] Например, номер индекса - mvp_l0_flag или mvp_l1_flag.[00343] For example, the index number is mvp_l0_flag or mvp_l1_flag.
[00344] B2: Если аффинная модель движения, используемая для текущего блока декодирования, является аффинной моделью движения с 6 параметрами (MotionModelIdc=2), номер индекса синтаксически анализируется, и оптимальный предсказатель вектора движения для трех контрольных точек определяется из списка кандидатных векторов движения на основе порядкового номера.[00344] B2: If the affine motion model used for the current decoding block is a 6-parameter affine motion model (MotionModelIdc=2), the index number is parsed and the optimal motion vector predictor for the three control points is determined from the list of candidate motion vectors at serial number basis.
[00345] Этап 804a: синтаксически анализировать битовый поток и определить вектор движения контрольной точки.[00345]
[00346] C1: Если аффинная модель движения, используемая для текущего блока декодирования, является аффинной моделью движения с 4 параметрами (MotionModelIdc=1), разности векторов движения двух контрольных точек текущего блока получаются путем декодирования битового потока, а векторы движения двух контрольных точек затем получаются на основе разностей векторов движения и предсказателей вектора движения контрольных точек. Используя прямое предсказание в качестве примера, разности векторов движения двух контрольных точек равны mvd_coding (x0, y0, 0, 0) и mvd_coding (x0, y0, 0, 1) соответственно.[00346] C1: If the affine motion model used for the current decoding block is a 4-parameter affine motion model (MotionModelIdc=1), the motion vector differences of the two control points of the current block are obtained by decoding the bitstream, and the motion vectors of the two control points are then are obtained based on the differences of the motion vectors and the motion vector predictors of the control points. Using forward prediction as an example, the motion vector differences of two control points are mvd_coding(x0, y0, 0, 0) and mvd_coding(x0, y0, 0, 1), respectively.
[00347] Например, разности векторов движения верхней левой контрольной точки и верхней правой контрольной точки получаются путем декодирования битового потока и добавляются к соответствующим предсказателям вектора движения, чтобы получить векторы движения верхней левой контрольной точки и верхней правой контрольной точки текущего блока.[00347] For example, the motion vector differences of the top left breakpoint and top right breakpoint are obtained by bitstream decoding and added to the respective motion vector predictors to obtain the top left breakpoint and top right breakpoint motion vectors of the current block.
[00348] C2: Если аффинная модель движения, используемая для текущего блока декодирования, является аффинной моделью движения с 6 параметрами (MotionModelIdc=2), разности векторов движения трех контрольных точек текущего блока получаются путем декодирования битового потока, а векторы движения трех контрольных точек затем получаются на основе разностей векторов движения и предсказателей вектора движения контрольных точек. Используя в качестве примера прямое предсказание, разности векторов движения трех контрольных точек равны mvd_coding (x0, y0, 0, 0), mvd_coding (x0, y0, 0, 1) и mvd_coding (x0, y0, 0, 2) соответственно. [00348] C2: If the affine motion model used for the current decoding block is a 6-parameter affine motion model (MotionModelIdc=2), the motion vector differences of the three control points of the current block are obtained by decoding the bitstream, and the motion vectors of the three control points are then are obtained based on the differences of the motion vectors and the motion vector predictors of the control points. Using direct prediction as an example, the motion vector differences of the three control points are mvd_coding (x0, y0, 0, 0), mvd_coding (x0, y0, 0, 1), and mvd_coding (x0, y0, 0, 2), respectively.
[00349] Например, разности векторов движения верхней левой контрольной точки, верхней правой контрольной точки и нижней левой контрольной точки получаются путем декодирования битового потока и добавляются к соответствующим предсказателям вектора движения, чтобы получить векторы движения верхней левой контрольной точки, верхней правой контрольной точки и нижней левой контрольной точки текущего блока.[00349] For example, the motion vector differences of the top left breakpoint, top right breakpoint, and bottom left breakpoint are obtained by bitstream decoding and added to the respective motion vector predictors to obtain the top left breakpoint, top right checkpoint, and bottom motion vectors. the left control point of the current block.
[00350] Этап 805a: Получить вектор движения каждого субблока текущего блока на основе информации о движении контрольной точки и аффинной модели движения, используемой для текущего блока декодирования.[00350]
[00351] Один субблок в текущем блоке аффинного декодирования может быть эквивалентен одному блоку компенсации движения, а ширина и высота субблока меньше ширины и высоты текущего блока. Информация о движении выборки в предварительно установленном местоположении в блоке компенсации движения может использоваться для представления информации движения всех выборок блока компенсации движения. Предполагая, что размер блока компенсации движения составляет M×N, выборка в предварительно установленном местоположении может быть центральной выборкой (M/2, N/2), верхней левой выборкой (0, 0), верхней правой выборкой образец (M - 1, 0) или выборкой в другом местоположении в блоке компенсации движения. Центральная выборка блока компенсации движения используется в качестве примера для описания ниже, как показано на фиг. 8C. На фиг. 8C, V0 представляет вектор движения верхней левой контрольной точки, а V1 представляет вектор движения верхней правой контрольной точки. Каждый маленький прямоугольник представляет один блок компенсации движения.[00351] One sub-block in the current affine decoding block may be equivalent to one motion compensation block, and the width and height of the sub-block is less than the width and height of the current block. The motion information of a sample at a predetermined location in the motion compensation block may be used to represent the motion information of all samples of the motion compensation block. Assuming the size of the motion compensation block is M×N, the sample at the preset location can be center sample (M/2, N/2), top left sample (0, 0), top right sample (M - 1, 0 ) or by sampling at another location in the motion compensation block. The center sample of the motion compensation block is used as an example for the description below, as shown in FIG. 8C. In FIG. 8C, V0 represents the motion vector of the upper left control point, and V1 represents the motion vector of the top right control point. Each small rectangle represents one block of motion compensation.
[00352] Координаты центральной выборки блока компенсации движения относительно верхней левой выборки текущего блока аффинного декодирования вычисляются согласно формуле (31). В формуле (31) i представляет i-ю единицу компенсации движения в горизонтальном направлении (слева направо), j представляет j-ю единицу компенсации движения в вертикальном направлении (сверху вниз) и (x(i, j), y(i, j)) представляет координаты центральной выборки (i, j)-го блока компенсации движения относительно выборки верхней левой контрольной точки текущего блока аффинного декодирования.[00352] The coordinates of the center sample of the motion compensation block relative to the upper left sample of the current affine decoding block are calculated according to formula (31). In formula (31), i represents the i-th movement compensation unit in the horizontal direction (left to right), j represents the j-th movement compensation unit in the vertical direction (top to bottom), and (x(i, j), y(i, j )) represents the coordinates of the center sample of the (i, j)th motion compensation block relative to the upper left sample of the current affine decoding block.
[00353] Если аффинная модель движения, используемая для текущего блока аффинного декодирования, является аффинной моделью движения с 6 параметрами, (x(i, j), y(i, j)) подставляется в формулу (32), соответствующую аффинной моделидвижения с 6 параметрами для получения вектора движения (vx (i, j), vy (i, j)) центральной выборки каждого блока компенсации движения, и вектор движения используется в качестве векторов движения всех выборок блока компенсации движения.[00353] If the affine motion model used for the current affine decoding block is a 6-parameter affine motion model, (x(i, j), y(i, j)) is substituted into formula (32) corresponding to the 6-parameter affine motion model parameters to obtain a motion vector (vx (i, j), vy (i, j)) of the center sample of each motion compensation block, and the motion vector is used as the motion vectors of all samples of the motion compensation block.
[00354] Если аффинная модель движения, используемая для текущего блока аффинного декодирования, представляет собой аффинную модель движения с 4 параметрами, (x(i, j), y(i, j)) подставляется в формулу (33), соответствующую аффинной модели движения с 4 параметрами для получения вектора движения (vx (i, j), vy (i, j)) центральной выборки каждого блока компенсации движения, и вектор движения используется в качестве векторов движения всех выборок блока компенсации движения.[00354] If the affine motion model used for the current affine decoding block is a 4-parameter affine motion model, (x(i, j), y(i, j)) is substituted into formula (33) corresponding to the affine motion model with 4 parameters to obtain the motion vector (vx(i, j), vy(i, j)) of the center sample of each motion compensation block, and the motion vector is used as the motion vectors of all samples of the motion compensation block.
(31) (31)
(32) (32)
(33) (33)
[00355] Этап 806a: Выполнити компенсацию движения для каждого субблока на основе определенного вектора движения субблока, чтобы получить значение выборки предсказания субблока.[00355]
[00356] Этап 802b: Создать список кандидатов информации о движении, соответствующий режиму слияния (merge) субблоков.[00356]
[00357] В частности, список кандидатов информации о движении, соответствующий режиму слияния субблоков (sub-block based merging candidate list), может быть построен с использованием одного или нескольких из расширенного временного предсказания вектора движения, способа предсказания унаследованного вектора движения контрольной точки, способа предсказания построенного вектора движения контрольной точки или планарного способа. В этом варианте осуществления этой заявки список кандидатов информации о движении, соответствующий режиму слияния субблоков, может для краткости называться списком кандидатов слияния на основе субблоков.[00357] Specifically, a motion information candidate list corresponding to a sub-block based merging candidate list may be constructed using one or more of extended temporal motion vector prediction, a checkpoint legacy motion vector prediction method, a predicting the constructed motion vector of the control point or the planar method. In this embodiment of this application, the list of motion information candidates corresponding to the subblock merge mode may be referred to as a subblock merge candidate list for short.
[00358] Необязательно, список кандидатов информации о движении сокращается и сортируется в соответствии с конкретным правилом и может быть усечен или дополнен до конкретного количества.[00358] Optionally, the list of motion information candidates is reduced and sorted according to a specific rule, and may be truncated or padded to a specific number.
[00359] D0: Если sps_sbtmvp_enabled_flag=1, кандидатный вектор движения получается с использованием ATMVP и добавляется в список кандидатов слияния на основе субблоков. Для получения подробной информации см. предыдущее описание в разделе «6. Расширенное временное предсказание вектора движения».[00359] D0: If sps_sbtmvp_enabled_flag=1, a motion vector candidate is obtained using ATMVP and added to the subblock-based merge candidate list. For details, see the previous description in “6. Advanced temporal motion vector prediction”.
[00360] D1: Если sps_affine_enabled_flag=1, rfylblfnyfz информация о движении контрольной точки текущего блока выводится с использованием способа предсказания унаследованного вектора движения контрольной точки и добавляется в список кандидатов слияния на основе субблока. Для получения подробной информации см. предыдущее описание в разделе «3. Способ предсказания унаследованного вектора движения контрольной точки».[00360] D1: If sps_affine_enabled_flag=1, rfylblfnyfz the checkpoint motion information of the current block is output using the checkpoint legacy motion vector prediction method and added to the subblock-based merge candidate list. For details, see the previous description in “3. A way to predict the legacy motion vector of a checkpoint.
[00361] Например, на фиг. 6C, блоки в соседних местоположениях вокруг текущего блока проходят в порядке A1->B1->B0->A0->B2, чтобы найти аффинно-кодированный блок, включающий в себя блок в соседнем местоположении текущего блока, и получить информацию о движении контрольной точки аффинно-кодированного блока. Дополнительно, модель движения, соответствующая аффинно-кодированному блоку, используется для выведения информации о движении кандидатной контрольной точки текущего блока.[00361] For example, in FIG. 6C, blocks at neighboring locations around the current block are traversed in the order A1->B1->B0->A0->B2 to find an affine-coded block including the block at the neighboring location of the current block and obtain checkpoint movement information. affine-coded block. Additionally, a motion model corresponding to the affine-coded block is used to derive motion information about the candidate checkpoint of the current block.
[00362] Если список кандидатов слияния на основе субблоков пуст, кандидатная информация о движении контрольной точки добавляется в список кандидатов слияния на основе субблоков. В противном случае, по информации о движении в списке кандидатов слияния на основе субблоков проходят последовательно, чтобы проверить, существует ли информация о движении, которая является такой же, как кандидатная информация о движении контрольной точки, в списке кандидатов слияния на основе субблоков. Если в списке кандидатов слияния на основе субблоков не присутствует информация о движении, которая является такой же, как кандидатная информация о движении контрольной точки, кандидатная информация о движении контрольной точки добавляется в список кандидатов слияния на основе субблока.[00362] If the subblock-based merge candidate list is empty, candidate checkpoint movement information is added to the subblock-based merge candidate list. Otherwise, the motion information in the sub-unit merge candidate list is sequentially passed to check whether there is motion information that is the same as the candidate checkpoint motion information in the sub-unit merge candidate list. If no motion information is present in the sub-block-based merge candidate list that is the same as the checkpoint motion candidate information, the checkpoint motion candidate information is added to the sub-block-based merge candidate list.
[00363] Определение того, являются ли две части кандидатной информации о движении одинаковыми, должно быть реализовано путем определения того, совпадают ли прямые и обратные опорные кадры двух частей кандидатной информации о движении и горизонтальные и вертикальные компоненты каждого вектора движения вперед и вектора движения назад. Две части кандидатной информации о движении считаются разными только тогда, когда все эти элементы различны.[00363] Determining whether two pieces of candidate motion information are the same should be implemented by determining whether the forward and reverse reference frames of the two pieces of candidate motion information and the horizontal and vertical components of each forward motion vector and reverse motion vector are the same. Two pieces of candidate motion information are considered different only when all of these elements are different.
[00364] Если количество частей информации о движении в списке кандидатов слияния на основе субблоков достигает максимальной длины списка MaxNumSubblockMergeCand (MaxNumSubblockMergeCand - положительное целое число, такое как 1, 2, 3, 4 или 5, где 5 используется в качестве примера в следующем описании, а подробности здесь не описаны), построение списка кандидатов завершено. В противном случае выполняется прохождение блока в следующем соседнем местоположении.[00364] If the number of motion information pieces in the subblock-based merge candidate list reaches the maximum list length MaxNumSubblockMergeCand (MaxNumSubblockMergeCand is a positive integer such as 1, 2, 3, 4, or 5, where 5 is used as an example in the following description, and the details are not described here), the construction of the list of candidates is completed. Otherwise, the block is traversed at the next adjacent location.
[00365] D2: Если sps_affine_enabled_flag=1, кандидатная информация о движении контрольной точки для текущего блока выводится с использованием способа предсказания построенного вектора движения контрольной точки и добавляется в список кандидатов слияния на основе субблока, как показано на фиг. 8B.[00365] D2: If sps_affine_enabled_flag=1, checkpoint motion candidate information for the current block is output using the checkpoint motion vector built prediction method and added to the subblock-based merge candidate list as shown in FIG. 8B.
[00366] Этап 801c: Получить информацию о движении контрольных точек текущего блока. Например, для получения подробной информации обратитесь к этапу 601 в предшествующем описании в «5. Способ предсказания построенного вектора движения контрольной точки». Подробности здесь снова не описываются.[00366]
[00367] Этап 802c: Объединить информацию о движении контрольных точек, чтобы получить информацию о движении построенных контрольных точек. Подробнее см. этап 602 на фиг. 6D. Подробности здесь снова не описываются.[00367]
[00368] Этап 803c: Добавить информацию о движении построенной контрольной точки в список кандидатов слияния на основе субблоков.[00368]
[00369] Если длина списка кандидатов слияния на основе субблоков меньше максимальной длины списка MaxNumSubblockMergeCand, по комбинациям информации о движении контрольных точек проходят в заранее установленном порядке, и результирующая допустимая комбинация используется в качестве кандидатной информации движения контрольной точки. В этом случае, если список кандидатов слияния на основе субблоков пуст, кандидатная информация о движении контрольной точки добавляется в список кандидатов слияния на основе субблока. В противном случае информация о движении в списке кандидатных векторов движения просматривается последовательно, чтобы проверить, существует ли информация о движении, одинаковая с информацией о движении кандидатной точки в списке кандидатов слияния на основе субблока. Если в списке кандидатов слияния на основе субблоков не присутствует информация о движении, одинаковая с кандидатной информацией о движении контрольной точки, кандидатная информация о движении контрольной точки добавляется в список кандидатов слияния на основе субблока.[00369] If the length of the subblock-based merge candidate list is less than the maximum length of the MaxNumSubblockMergeCand list, the combinations of checkpoint motion information are passed through in a predetermined order, and the resulting valid combination is used as candidate checkpoint motion information. In this case, if the sub-block-based merge candidate list is empty, checkpoint movement candidate information is added to the sub-block-based merge candidate list. Otherwise, the motion information in the list of candidate motion vectors is searched sequentially to check if there is motion information that is the same as the motion information of the candidate point in the candidate list of sub-block merge candidates. If no motion information is present in the sub-block-based merge candidate list that is the same as the candidate checkpoint motion information, the candidate checkpoint motion information is added to the sub-block-based merge candidate list.
[00370] Например, предустановленный порядок выглядит следующим образом: Affine (CP1, CP2, CP3) -> Affine (CP1, CP2, CP4) -> Affine (CP1, CP3, CP4) -> Affine (CP2, CP3, CP4) -> Affine (CP1, CP2) -> Affine (CP1, CP3). Всего существует шесть комбинаций.[00370] For example, the preset order is: Affine (CP1, CP2, CP3) -> Affine (CP1, CP2, CP4) -> Affine (CP1, CP3, CP4) -> Affine (CP2, CP3, CP4) - > Affine (CP1, CP2) -> Affine (CP1, CP3). There are six combinations in total.
[00371] Например, если sps_affine_type_flag=1, предустановленный порядок будет следующим: Affine (CP1, CP2, CP3) -> Affine (CP1, CP2, CP4) -> Affine (CP1, CP3, CP4) -> Affine (CP2, CP3, CP4) -> Affine (CP1, CP2) -> Affine (CP1, CP3). Всего существует шесть комбинаций. Порядок добавления шести комбинаций в список кандидатных векторов движения конкретно не ограничен в этом варианте осуществления этой заявки.[00371] For example, if sps_affine_type_flag=1, the preset order would be: Affine (CP1, CP2, CP3) -> Affine (CP1, CP2, CP4) -> Affine (CP1, CP3, CP4) -> Affine (CP2, CP3 , CP4) -> Affine (CP1, CP2) -> Affine (CP1, CP3). There are six combinations in total. The order of adding six combinations to the list of candidate motion vectors is not specifically limited in this embodiment of this application.
[00372] Если sps_affine_type_flag=0, предустановленный порядок следующий: Affine (CP1, CP2) -> Affine (CP1, CP3). Всего есть две комбинации. Порядок добавления двух комбинаций в список кандидатных векторов движения конкретно не ограничивается в этом варианте осуществления этой заявки.[00372] If sps_affine_type_flag=0, the preset order is: Affine (CP1, CP2) -> Affine (CP1, CP3). There are two combinations in total. The order of adding two combinations to the list of candidate motion vectors is not specifically limited in this embodiment of this application.
[00373] Если информация о движении контрольной точки, соответствующая некоторой комбинации, недоступна, комбинация считается недоступной. Если комбинация доступна, индекс опорного кадра комбинации определяется (при наличии двух контрольных точек, минимальный индекс опорного кадра выбирают в качестве индекса опорного кадра комбинации; при наличии более чем двух контрольных точек, индекс опорного кадра с максимальной частотой присутствия выбирают в качестве индекса опорного кадра комбинации, и если множество индексов опорного кадра имеет одинаковую частоту присутствия, минимальный индекс опорного кадра, выбирают в качестве индекса опорного кадра комбинации). Векторы движения контрольной точки дополнительно масштабируются. Если информация о движении всех контрольных точек после масштабирования одинакова, комбинация недействительна.[00373] If the checkpoint motion information corresponding to a combination is not available, the combination is considered unavailable. If a combination is available, the combination key frame index is determined (if there are two breakpoints, the minimum key frame index is chosen as the combination key frame index; if there are more than two breakpoints, the index of the key frame with the maximum frequency of presence is chosen as the combination key frame index , and if the plurality of reference frame indexes have the same occurrence frequency, the minimum reference frame index is selected as the combination reference frame index). The control point motion vectors are further scaled. If the motion information of all control points after scaling is the same, the combination is invalid.
[00374] D3: Необязательно, если sps_planar_enabled_flag=1, информация о движении, созданная с использованием ATMVP, добавляется в список кандидатов слияния на основе субблоков. Для получения подробной информации см. предыдущее описание в разделе «7. Планарное предсказание вектора движения».[00374] D3: Optionally, if sps_planar_enabled_flag=1, traffic information generated using ATMVP is added to the subblock-based merge candidate list. For details, see the previous description in “7. Planar motion vector prediction”.
[00375] Необязательно, в этом варианте осуществления этой заявки список кандидатных векторов движения может быть дополнен. Например, после вышеупомянутого процесса прохождения, если длина списка кандидатных векторов движения меньше, чем максимальная длина списка MaxNumSubblockMergeCand, список кандидатных векторов движения может дополняться до тех пор, пока длина списка не станет равной MaxNumSubblockMergeCand.[00375] Optionally, in this embodiment of this application, the list of candidate motion vectors may be extended. For example, after the above traversal process, if the length of the list of candidate motion vectors is less than the maximum length of the list MaxNumSubblockMergeCand, the list of candidate motion vectors may be padded until the length of the list becomes equal to MaxNumSubblockMergeCand.
[00376] Заполнение может выполняться с использованием способа заполнения нулевого вектора движения или с помощью способа объединения или взвешенного усреднения существующей кандидатной информации о движении в существующем списке. Следует отметить, что в этой заявке также могут использоваться другие способы для заполнения списка кандидатных векторов движения. Подробности здесь не описаны.[00376] The padding may be performed using a zero motion vector padding method, or using a pooling or weighted average method of existing candidate motion information in an existing list. It should be noted that this application may also use other methods to populate the list of candidate motion vectors. Details are not described here.
[00377] Этап 803b: Синтаксически анализировать битовый поток и определить оптимальную информацию о движении контрольной точки.[00377]
[00378] Номер индекса merge_subblock_idx синтаксически анализируется, и оптимальная информация о движении определяется из списка кандидатов слияния на основе субблоков на основе номера индекса.[00378] The merge_subblock_idx index number is parsed and the optimal motion information is determined from the subblock-based merge candidate list based on the index number.
[00379] merge_subblock_idx обычно бинаризуется с использованием TR-кода (усеченный унарный, truncated unary code). Другими словами, merge_subblock_idx отображается в разные строки бинов на основе максимального значения индекса. Максимальное значение индекса предварительно сконфигурировано или передано. Например, если максимальное значение индекса равно 4, merge_subblock_idx преобразовывается в двоичную форму в соответствии с таблицей 3.[00379] merge_subblock_idx is typically binarized using a TR (truncated unary code) code. In other words, merge_subblock_idx is mapped to different bin rows based on the maximum index value. The maximum index value is preconfigured or passed. For example, if the maximum index value is 4, merge_subblock_idx is converted to binary form according to table 3.
Таблица 3.Table 3
[00380] Когда максимальное значение индекса равно 2, merge_subblock_idx преобразовывается в двоичную форму в соответствии с таблицей 4.[00380] When the maximum index value is 2, merge_subblock_idx is converted to binary form according to Table 4.
Таблица 4.Table 4
[00381] Если merge_subblock_idx передается с использованием строки бинов, сторона декодера может определить номер индекса на основе максимального значения индекса и таблицы 2 или таблицы 3. Например, максимальное значение индекса равно 4. Когда декодирование выполняется для получения номера индекса, если получен 0 или номер индекса, полученный посредством декодирования, равен максимальному значению индекса, определяется номер индекса. Например, когда выполняется декодирование для получения номера индекса, если первый бит равен 0, декодирование, которое выполняется для получения номера индекса, заканчивается, и номер индекса определяется как 0. В другом примере, если первый бит равен 1, а второй бит равен 0, декодирование, которое выполняется для получения номера индекса, заканчивается, и номер индекса определяется как 1.[00381] If merge_subblock_idx is transmitted using a bin string, the decoder side may determine the index number based on the maximum index value and table 2 or table 3. For example, the maximum index value is 4. When decoding is performed to obtain an index number, if 0 or a number is received index obtained by decoding is equal to the maximum value of the index, the index number is determined. For example, when decoding is performed to obtain an index number, if the first bit is 0, the decoding that is performed to obtain an index number ends and the index number is determined to be 0. In another example, if the first bit is 1 and the second bit is 0, the decoding that is performed to obtain the index number ends and the index number is determined to be 1.
[00382] Установка максимального значения индекса и таблицы бинаризации конкретно не ограничивается в этом варианте осуществления этой заявки.[00382] Setting the maximum value of the index and binarization table is not specifically limited in this embodiment of this application.
[00383] Этап 804b: Если оптимальной информацией о движении является ATMVP или информация о планарном движении, получить вектор движения для каждого субблока, напрямую используя ATMVP или планарный способ.[00383]
[00384] Если режим движения, указанный оптимальной информацией о движении, является аффинным режимом, вектор движения каждого субблока текущего блока получается на основе оптимальной информации о движении контрольной точки и аффинной модели движения, используемой для текущего блока декодирования. Этот процесс аналогичен этапу 805a.[00384] If the motion mode indicated by the optimal motion information is the affine mode, the motion vector of each subblock of the current block is obtained based on the optimal checkpoint motion information and the affine motion model used for the current decoding block. This process is similar to step 805a.
[00385] Этап 805b: Выполнить компенсацию движения для каждого субблока на основе определенного вектора движения субблока, чтобы получить значение выборки предсказания субблока.[00385]
[00386] В существующей технологии нет приемлемого способа определения максимальной длины (MaxNumSubblockMergeCand) списка кандидатных векторов движения, соответствующего режиму слияния субблоков.[00386] In the existing technology, there is no acceptable way to determine the maximum length (MaxNumSubblockMergeCand) of the list of candidate motion vectors corresponding to the subblock merge mode.
[00387] Ввиду этого варианты осуществления этой заявки предоставляют способ и аппаратуру предсказания видеоизображения, чтобы обеспечить метод определения максимальной длины (MaxNumSubblockMergeCand) списка кандидатных векторов движения, соответствующего режиму слияния субблоков. Способ и аппаратура основаны на одной и той же изобретательской концепции. Поскольку принцип решения задач способа аналогичен принципу аппаратуры, между реализациями аппаратуры и способа может быть сделана взаимная ссылка. Повторных описаний нет.[00387] In view of this, embodiments of this application provide a video prediction method and apparatus to provide a method for determining a maximum length (MaxNumSubblockMergeCand) of a list of candidate motion vectors corresponding to a subblock merge mode. The method and apparatus are based on the same inventive concept. Since the problem solving principle of the method is similar to that of the hardware, a mutual reference can be made between hardware and method implementations. There are no repeated descriptions.
[00388] Метод определения максимальной длины списка кандидатных векторов движения, соответствующего режиму слияния субблоков, подробно описывается ниже в двух случаях.[00388] The method for determining the maximum length of the list of candidate motion vectors corresponding to the subblock merge mode is described in detail below in two cases.
[00389] В первом случае режим слияния субблоков может содержать по меньшей мере одно из аффинного режима, режима расширенного временного предсказания вектора движения или режима планарного предсказания вектора движения.[00389] In the first case, the sub-block merging mode may comprise at least one of an affine mode, an extended temporal motion vector prediction mode, or a planar motion vector prediction mode.
[00390] Во втором случае считается, что режим планарного предсказания вектора движения не присутствует в режиме слияния субблоков. Другими словами, режим слияния субблоков может содержать по меньшей мере один из аффинного режима или режима расширенного временного предсказания вектора движения.[00390] In the second case, it is considered that the planar motion vector prediction mode is not present in the subblock merge mode. In other words, the sub-block merging mode may comprise at least one of an affine mode or an extended motion vector temporal prediction mode.
[00391] Ниже приводится подробное описание реализации этой заявки с точки зрения декодера со ссылкой на прилагаемые чертежи. В частности, способ может выполняться декодером 30 видео, или может быть реализован модулем компенсации движения в декодере видео, или может выполняться процессором.[00391] The following is a detailed description of the implementation of this application from the point of view of the decoder with reference to the accompanying drawings. In particular, the method may be performed by the
[00392] Для первого случая в качестве примеров представлены несколько возможных реализаций, от первой реализации до пятой.[00392] For the first case, several possible implementations are presented as examples, from the first implementation to the fifth.
[00393] ФИГ. 9 показывает описание первой реализации.[00393] FIG. 9 shows a description of the first implementation.
[00394] Этап 901: синтаксически анализировать первый указатель из битового потока. Выполнить этап S902 или этап S904.[00394] Step 901: parse the first pointer from the bitstream. Execute step S902 or step S904.
[00395] Первый указатель используется для обозначения того, содержит ли кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, аффинный режим. Другими словами, указатель 1 используется, чтобы указать, можно ли (или разрешено) использовать аффинный режим для выполнения компенсации движения в блоке, который должен быть обработан.[00395] The first pointer is used to indicate whether the candidate mode used for inter-prediction of the block to be processed contains the affine mode. In other words,
[00396] Например, первый указатель может быть сконфигурирован в SPS в битовом потоке. Исходя из этого, синтаксический анализ первого указателя из битового потока может быть реализован следующим образом: синтаксический анализ указателя 1 из SPS в битовом потоке. В качестве альтернативы, первый указатель может быть сконфигурирован в заголовке слайса для слайса в битовом потоке, причем блок, который должен быть обработан, содержится в слайсе. На основании этого, синтаксический анализ первого указателя из битового потока может быть реализован следующим образом: анализ первого указателя из заголовка слайса для слайса в битовом потоке, причем блок, который должен быть обработан, содержится в слайсе.[00396] For example, the first pointer may be configured in the SPS in the bitstream. Based on this, parsing the first pointer from the bitstream can be implemented as follows: parsing
[00397] Например, первый указатель может быть представлен синтаксическим элементом sps_affine_enabled_flag, а sps_affine_enabled_flag используется для указания, может ли аффинный режим использоваться для внешнего предсказания блока изображения, содержащегося в видеоизображении. Например, когда sps_affine_enabled_flag=0, это указывает, что аффинный режим не может использоваться для внутреннего предсказания блока изображения, содержащегося в видеоизображении. Когда sps_affine_enabled_flag=1, это указывает, что аффинная модель движения может использоваться для внешнего предсказания блока изображения, содержащегося в видеоизображении.[00397] For example, the first pointer may be represented by the sps_affine_enabled_flag syntax element, and the sps_affine_enabled_flag is used to indicate whether the affine mode can be used for inter prediction of an image block contained in a video image. For example, when sps_affine_enabled_flag=0, this indicates that the affine mode cannot be used for intra-prediction of an image block contained in a video image. When sps_affine_enabled_flag=1, this indicates that the affine motion model can be used for inter prediction of an image block contained in a video image.
[00398] Этап S902: Когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит аффинный режим, синтаксически проанализировать второй указатель из битового потока, где второй указатель используется для указания (или определения) максимальной длины первого списка кандидатных векторов движения, а первый список кандидатных векторов движения - это список кандидатных векторов, созданный для блока, который должен быть обработан, с использованием режима предсказания слияния субблоков. Первый список кандидатных векторов движения может называться MaxNumSubblockMergeCand.[00398] Step S902: When the first pointer indicates that the candidate mode used for inter prediction of the block to be processed contains affine mode, parse the second pointer from the bitstream, where the second pointer is used to indicate (or determine) the maximum length the first candidate motion vector list, and the first candidate motion vector list is the candidate vector list created for the block to be processed using the sub-block merge prediction mode. The first list of candidate motion vectors may be called MaxNumSubblockMergeCand.
[00399] Например, второй указатель может быть сконфигурирован в SPS, PPS или заголовке слайса. На основании этого синтаксический анализ второго указателя из битового потока может быть реализован следующим образом: анализ второго указателя из набора параметров последовательности в битовом потоке; или синтаксический анализ второго указателя из заголовка слайса для слайса, включая блок, который должен быть обработан, в битовом потоке.[00399] For example, the second pointer may be configured in the SPS, PPS, or slice header. Based on this, parsing the second pointer from the bitstream can be implemented as follows: parsing the second pointer from the set of sequence parameters in the bitstream; or parsing the second pointer from the slice header to the slice, including the block to be processed, in the bitstream.
[00400] Например, второй указатель может быть представлен K_minus_max_num_subblock_merge_cand.[00400] For example, the second pointer may be represented by K_minus_max_num_subblock_merge_cand.
[00401] Например, значение K_minus_max_num_subblock_merge_cand может находиться в диапазоне от 0 до 4.[00401] For example, the value of K_minus_max_num_subblock_merge_cand can range from 0 to 4.
[00402] Например, максимальное значение MaxNumSubblockMergeCand может быть 5.[00402] For example, the maximum value of MaxNumSubblockMergeCand may be 5.
[00403] Когда максимальное значение MaxNumSubblockMergeCand может быть равно 5, второй указатель может быть представлен с помощью five_minus_max_num_subblock_merge_cand.[00403] When the maximum value of MaxNumSubblockMergeCand may be 5, the second pointer may be represented by five_minus_max_num_subblock_merge_cand.
[00404] В таблице 5 показан пример синтаксической структуры для синтаксического анализа второго указателя.[00404] Table 5 shows an example of a syntax structure for parsing a second pointer.
Таблица 5.Table 5
[00405] Этап S903: Определить максимальную длину первого списка кандидатных векторов движения на основе второго указателя.[00405] Step S903: Determine the maximum length of the first list of candidate motion vectors based on the second pointer.
[00406] В примере, когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит аффинный режим, максимальная длина (MaxNumSubblockMergeCand) первого списка кандидатных векторов может быть получена в соответствии со следующей формулой: MaxNumSubblockMergeCand=K K_minus_max_num_subblock_merge_cand,[00406] In an example where the first pointer indicates that the candidate mode used for inter-prediction of a block to be processed contains affine mode, the maximum length (MaxNumSubblockMergeCand) of the first list of candidate vectors can be obtained according to the following formula: MaxNumSubblockMergeCand= K K_minus_max_num_subblock_merge_cand,
где MaxNumSubblockMergeCand представляет максимальную длину первого списка кандидатных векторов движения, K_minus_max_num_subblock_merge_cand представляет второй указатель, а K - предварительно установленное неотрицательное целое число.where MaxNumSubblockMergeCand represents the maximum length of the first list of candidate motion vectors, K_minus_max_num_subblock_merge_cand represents the second pointer, and K is a preset non-negative integer.
[00407] Этап S904: Когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит только режим прямолинейного предсказания вектора движения, а третий указатель используется, чтобы указать, что режим ATMVP присутствует в режиме предсказания слияния субблоков, определить третье число на основе третьего указателя и определить максимальную длину первого списка кандидатных векторов движения на основе третьего числа.[00407] Step S904: When the first pointer indicates that the candidate mode used for inter prediction of the block to be processed contains only the rectilinear motion vector prediction mode, and the third pointer is used to indicate that the ATMVP mode is present in the merge prediction mode subblocks, determine the third number based on the third pointer, and determine the maximum length of the first list of candidate motion vectors based on the third number.
[00408] То, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит только режим прямолинейного предсказания вектора движения, означает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, не может (не разрешено) содержать аффинный режим. Третий указатель используется для указания, присутствует ли режим ATMVP в режиме предсказания слияния субблоков. Другими словами, третий указатель используется для указания, разрешено ли использование режима ATMVP для внешнего предсказания блока, который должен быть обработан. Третий указатель может быть сконфигурирован в SPS, PPS или заголовке слайса.[00408] That the candidate mode used for inter-prediction of the block to be processed contains only the rectilinear motion vector prediction mode means that the candidate mode used for inter-prediction of the block to be processed cannot (not allowed ) contain an affine mode. The third pointer is used to indicate whether the ATMVP mode is present in the subblock merge prediction mode. In other words, the third pointer is used to indicate whether the use of the ATMVP mode for inter-prediction of a block to be processed is allowed. The third pointer may be configured in the SPS, PPS, or slice header.
[00409] В примере, когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит только режим прямолинейного предсказания вектора движения, а третий указатель используется для указания того, что режим ATMVP присутствует в режиме предсказания слияния субблоков, максимальная длина (MaxNumSubblockMergeCand) первого списка кандидатных векторов движения равна третьему числу.[00409] In an example, when the first pointer indicates that the candidate mode used for inter prediction of the block to be processed contains only the rectilinear motion vector prediction mode, and the third pointer is used to indicate that the ATMVP mode is present in the merge prediction mode subblocks, the maximum length (MaxNumSubblockMergeCand) of the first list of candidate motion vectors is equal to the third number.
[00410] Например, третий указатель может быть представлен sps_sbtmvp_enabled_flag. Например, когда sps_sbtmvp_enabled_flag равен первому значению, это указывает, что режим ATMVP не присутствует в режиме предсказания слияния субблоков; или когда sps_sbtmvp_enabled_flag равен второму значению, это указывает, что режим ATMVP присутствует в режиме предсказания слияния субблоков. Например, первое значение равно 0, а второе значение равно 1.[00410] For example, the third pointer may be represented by sps_sbtmvp_enabled_flag. For example, when sps_sbtmvp_enabled_flag is equal to the first value, it indicates that the ATMVP mode is not present in the subblock merge prediction mode; or when sps_sbtmvp_enabled_flag is equal to the second value, it indicates that the ATMVP mode is present in the subblock merge prediction mode. For example, the first value is 0 and the second value is 1.
[00411] Например, третье число может использоваться для указания максимального количества векторов движения, которые поддерживаются при предсказании, выполняемом с использованием режима ATMVP. Например, когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит только режим прямолинейного предсказания вектора движения, если sps_sbtmvp_enabled_flag=0, третье число равно 0, или если sps_sbtmvp_enabled_flag=1 , третье число равно максимальному количеству векторов движения, которые поддерживаются при предсказании, выполняемом с использованием режима ATMVP. Дополнительно, когда максимальное количество векторов движения, которые поддерживаются при предсказании, выполняемом с использованием режима ATMVP, равно 1, третье число может быть равно значению sps_sbtmvp_enabled_flag. Например, если sps_sbtmvp_enabled_flag=0, третье число равно 0; или если sps_sbtmvp_enabled_flag=1, третье число равно 1.[00411] For example, the third number may be used to indicate the maximum number of motion vectors that are supported in prediction performed using the ATMVP mode. For example, when the first pointer indicates that the candidate mode used for inter prediction of the block to be processed contains only the rectilinear motion vector prediction mode, if sps_sbtmvp_enabled_flag=0, the third number is 0, or if sps_sbtmvp_enabled_flag=1 , the third number is equal to the maximum the number of motion vectors that are supported in the prediction performed using the ATMVP mode. Additionally, when the maximum number of motion vectors that are supported in prediction performed using the ATMVP mode is 1, the third number may be equal to the value of sps_sbtmvp_enabled_flag. For example, if sps_sbtmvp_enabled_flag=0, the third number is 0; or if sps_sbtmvp_enabled_flag=1, the third number is 1.
[00412] То, что максимальное значение MaxNumSubblockMergeCand может быть равно 5, используется в качестве примера. Если sps_affine_enable_flag=0, MaxNumSubblockMergeCand получается по следующей формуле:[00412] That the maximum value of MaxNumSubblockMergeCand can be 5 is used as an example. If sps_affine_enable_flag=0, MaxNumSubblockMergeCand is obtained from the following formula:
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag.MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag.
[00413] Если sps_affine_enable_flag=1, MaxNumSubblockMergeCand получается по следующей формуле:[00413] If sps_affine_enable_flag=1, MaxNumSubblockMergeCand is obtained from the following formula:
MaxNumSubblockMergeCand=5 - five_minus_max_num_subblock_merge_cand.MaxNumSubblockMergeCand=5 - five_minus_max_num_subblock_merge_cand.
[00414] Например, five_minus_max_num_subblock_merge_cand может быть определен как вычитание максимальной длины списка предсказания вектора движения слияния на основе субблока в слайсе из 5 (five_minus_max_num_subblock_merge_cand указывает максимальное количество кандидатов предсказания векторов движения (MVP) слияния на основе субблока, поддерживаемых в слайсе, который вычтен из 5).[00414] For example, five_minus_max_num_subblock_merge_cand can be defined as subtracting the maximum length of the subblock-based merge motion vector prediction list in the slice from 5 (five_minus_max_num_subblock_merge_cand indicates the maximum number of subblock-based merge motion vector prediction (MVP) candidates supported in the slice that is subtracted from 5 ).
[00415] Максимальное количество кандидатов MVP слияния на основе субблоков, MaxNumSubblockMergeCand, определяется следующим образом:[00415] The maximum number of subblock-based merge MVP candidates, MaxNumSubblockMergeCand, is defined as follows:
-- Если sps_affine_enabled_flag равно 0:-- If sps_affine_enabled_flag is 0:
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag;MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag;
-- В противном случае (sps_affine_enabled_flag равно 1):-- Otherwise (sps_affine_enabled_flag is 1):
MaxNumSubblockMergeCand=5 - five_minus_max_num_subblock_merge_cand.MaxNumSubblockMergeCand=5 - five_minus_max_num_subblock_merge_cand.
[00416] Значение MaxNumSubblockMergeCand должно находиться в диапазоне от 0 до 5 включительно.[00416] The MaxNumSubblockMergeCand value must be between 0 and 5 inclusive.
[00417] ФИГ. 10 показывает описание второй реализации.[00417] FIG. 10 shows a description of the second implementation.
[00418] Этап S1001: Для получения подробной информации о этапе S1001 см. этап S901. Подробности здесь снова не описываются. Выполнить этап S1002 или этап S1004.[00418] Step S1001: For details of step S1001, see step S901. The details are again not described here. Execute step S1002 or step S1004.
[00419] Этап S1002: Когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит аффинный режим, синтаксически анализировать второй указатель и третий указатель из битового потока, где второй указатель используется для указания (или определения) максимальной длины первого списка кандидатных векторов движения, а первый список кандидатных векторов движения представляет собой список кандидатных векторов движения, созданный для блока, который должен быть обработан, с использованием режима предсказания слияния субблоков.[00419] Step S1002: When the first pointer indicates that the candidate mode used for inter prediction of the block to be processed contains affine mode, parse the second pointer and the third pointer from the bitstream, where the second pointer is used to indicate (or determine ) the maximum length of the first candidate motion vector list, and the first candidate motion vector list is a candidate motion vector list created for a block to be processed using the sub-block merge prediction mode.
[00420] Этап S1003: Когда третий указатель указывает, что режим расширенного временного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, определить первое число на основе третьего указателя и определить максимальную длину первого списка кандидатных векторов движения на основе второго указателя и первого числа.[00420] Step S1003: When the third pointer indicates that the extended temporal motion vector prediction mode is not present in the subblock merge prediction mode, determine the first number based on the third pointer, and determine the maximum length of the first motion vector candidate list based on the second pointer and the first number.
[00421] Для объяснения первого указателя, второго указателя и третьего указателя обратитесь к варианту осуществления, соответствующему фиг. 9. Подробности не описаны здесь снова.[00421] For an explanation of the first pointer, the second pointer, and the third pointer, refer to the embodiment corresponding to FIG. 9. Details are not described here again.
[00422] Когда третий указатель указывает, что режим ATMVP не присутствует в режиме предсказания слияния субблоков, первое число может быть равно максимальному количеству векторов движения, которые поддерживаются при предсказании, выполняемом с использованием режима ATMVP. Например, третий указатель может быть представлен sps_sbtmvp_enabled_flag. Когда sps_sbtmvp_enabled_flag=0, это указывает, что режим расширенного временного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков. В этом случае первое число равно максимальному количеству векторов движения, которые поддерживаются при предсказании, выполняемом с использованием режима ATMVP. Напротив, когда sps_sbtmvp_enabled_flag=1, это указывает, что режим расширенного временного предсказания вектора движения присутствует в режиме предсказания слияния субблоков. В этом случае первое число равно 0. Например, максимальное количество векторов движения, которые поддерживаются при предсказании, выполняемом с использованием режима ATMVP, может быть 1. В этом случае первое число может быть равно значению третьего указателя. Для получения подробной информации обратитесь к описанию варианта осуществления, соответствующего фиг. 9. Подробности здесь снова не описываются.[00422] When the third pointer indicates that the ATMVP mode is not present in the subblock merge prediction mode, the first number may be equal to the maximum number of motion vectors that are supported in the prediction performed using the ATMVP mode. For example, the third pointer could be sps_sbtmvp_enabled_flag. When sps_sbtmvp_enabled_flag=0, it indicates that the extended temporal motion vector prediction mode is not present in the subblock merge prediction mode. In this case, the first number is equal to the maximum number of motion vectors that are supported in the prediction performed using the ATMVP mode. On the contrary, when sps_sbtmvp_enabled_flag=1, it indicates that the extended temporal motion vector prediction mode is present in the subblock merge prediction mode. In this case, the first number is 0. For example, the maximum number of motion vectors that are supported in prediction performed using the ATMVP mode may be 1. In this case, the first number may be equal to the value of the third pointer. For details, refer to the description of the embodiment corresponding to FIG. 9. Details are not described here again.
[00423] В возможном примере, когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит аффинный режим, максимальная длина первого списка кандидатных векторов движения может быть получена в соответствии со следующей формулой:[00423] In an example, when the first pointer indicates that the candidate mode used for inter prediction of the block to be processed contains the affine mode, the maximum length of the first list of candidate motion vectors can be obtained according to the following formula:
MaxNumSubblockMergeCand=K - K_minus_max_num_subblock_merge_cand - L1,MaxNumSubblockMergeCand=K - K_minus_max_num_subblock_merge_cand - L1,
где MaxNumSubblockMergeCand представляет максимальную длину первого списка кандидатных векторов движения, K_minus_max_num_subblock_merge_cand представляет второй указатель, L1 представляет первое число, а K представляет собой предварительно установленное неотрицательное целое число.where MaxNumSubblockMergeCand represents the maximum length of the first list of candidate motion vectors, K_minus_max_num_subblock_merge_cand represents the second pointer, L1 represents the first number, and K is a preset non-negative integer.
[00424] Например, значение K_minus_max_num_subblock_merge_cand может находиться в диапазоне от 0 до 3.[00424] For example, the value of K_minus_max_num_subblock_merge_cand can range from 0 to 3.
[00425] Например, максимальное значение MaxNumSubblockMergeCand может быть 5.[00425] For example, the maximum value of MaxNumSubblockMergeCand can be 5.
[00426] Когда максимальное значение MaxNumSubblockMergeCand может быть равно 5, второй указатель может быть представлен с помощью five_minus_max_num_subblock_merge_cand.[00426] When the maximum value of MaxNumSubblockMergeCand may be 5, the second pointer may be represented by five_minus_max_num_subblock_merge_cand.
[00427] Например, L1 можно получить по следующей формуле:[00427] For example, L1 can be obtained by the following formula:
L1=sps_sbtmvp_enabled_flag == 1? 0 : 1. Если sps_sbtmvp_enabled_flag=1, L1=0. Если sps_sbtmvp_enabled_flag=0, L1=1.L1=sps_sbtmvp_enabled_flag == 1? 0 : 1. If sps_sbtmvp_enabled_flag=1, L1=0. If sps_sbtmvp_enabled_flag=0, L1=1.
[00428] Этап S1004: Для получения подробной информации об этапе S1004 см. этап S904. Подробности здесь снова не описываются.[00428] Step S1004: For details of step S1004, see step S904. The details are again not described here.
[00429] То, что максимальное значение MaxNumSubblockMergeCand может быть равно 5, используется в качестве примера. Если sps_affine_enable_flag=0, MaxNumSubblockMergeCand получается по следующей формуле:[00429] That the maximum value of MaxNumSubblockMergeCand can be 5 is used as an example. If sps_affine_enable_flag=0, MaxNumSubblockMergeCand is obtained from the following formula:
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag.MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag.
[00430] Если sps_affine_enable_flag=1, MaxNumSubblockMergeCand получается по следующей формуле:[00430] If sps_affine_enable_flag=1, MaxNumSubblockMergeCand is obtained from the following formula:
MaxNumSubblockMergeCand=5 - five_minus_max_num_subblock_merge_cand - (sps_sbtmvp_enabled_flag == 1? 0 : 1).MaxNumSubblockMergeCand=5 - five_minus_max_num_subblock_merge_cand - (sps_sbtmvp_enabled_flag == 1? 0 : 1).
[00431] Например, five_minus_max_num_subblock_merge_cand может быть определен как вычитание максимальной длины списка предсказания вектора движения слияния на основе субблока в слайсе из 5 (five_minus_max_num_subblock_merge_cand указывает максимальное количество кандидатов предсказания векторов движения (MVP) слияния, который вычтен из 5). Максимальное количество кандидатов MVP слияния на основе субблоков, MaxNumSubblockMergeCand, определяется следующим образом:[00431] For example, five_minus_max_num_subblock_merge_cand can be defined as subtracting the maximum length of the merge motion vector prediction list based on a subblock in a slice from 5 (five_minus_max_num_subblock_merge_cand indicates the maximum number of merge motion vector prediction (MVP) candidates that are subtracted from 5). The maximum number of subblock-based merge MVP candidates, MaxNumSubblockMergeCand, is defined as follows:
-- Если sps_affine_enabled_flag равно 0:-- If sps_affine_enabled_flag is 0:
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag;MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag;
-- В противном случае (sps_affine_enabled_flag равно 1):-- Otherwise (sps_affine_enabled_flag is 1):
MaxNumSubblockMergeCand=5 - five_minus_max_num_subblock_merge_cand - (sps_sbtmvp_enabled_flag == 1? 0 : 1).MaxNumSubblockMergeCand=5 - five_minus_max_num_subblock_merge_cand - (sps_sbtmvp_enabled_flag == 1? 0 : 1).
[00432] Значение MaxNumSubblockMergeCand должно находиться в диапазоне от 0 до 5 включительно.[00432] The MaxNumSubblockMergeCand value must be between 0 and 5 inclusive.
[00433] ФИГ. 11 показывает описание третьей реализации.[00433] FIG. 11 shows a description of the third implementation.
[00434] Этап S1101 – этап S1103: Для получения подробной информации о этапе S1101 – этапе S1103, обратитесь к этапу S901 – этапу S903. Подробности здесь снова не описываются.[00434] Step S1101 - Step S1103: For details of Step S1101 - Step S1103, refer to Step S901 - Step S903. The details are again not described here.
[00435] Следует отметить, что в третьей реализации максимальное значение MaxNumSubblockMergeCand может быть разрешено равным 5. Например, второй указатель может быть представлен K_minus_max_num_subblock_merge_cand, где значение K_minus_max_num_subblock_merge_cand может находиться в диапазоне от 0 до 4. Когда максимальное значение MaxNumSubblockMergeCand может быть равно 5, второй указатель может быть представлен с помощью five_minus_max_num_subblock_merge_cand.[00435] It should be noted that, in a third implementation, the maximum value of MaxNumSubblockMergeCand may be allowed to be 5. For example, the second pointer may be represented by K_minus_max_num_subblock_merge_cand, where the value of K_minus_max_num_subblock_merge_cand may range from 0 to 4. When the maximum value of MaxNumSubblockMergeCand may be 5, the second a pointer can be represented with five_minus_max_num_subblock_merge_cand.
[00436] Этап S1104: Когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит только режим прямолинейного предсказания вектора движения, синтаксически анализировать третий указатель и четвертый указатель из битового потока. Выполнить этап S1105, этап S1106 или этап S1107.[00436] Step S1104: When the first pointer indicates that the candidate mode used for inter prediction of the block to be processed contains only the rectilinear motion vector prediction mode, parse the third pointer and the fourth pointer from the bitstream. Execute step S1105, step S1106 or step S1107.
[00437] Третий указатель используется для указания состояния присутствия режима ATMVP в режиме предсказания слияния субблоков. Связанные описания третьего указателя см. в описаниях в варианте осуществления, соответствующем фиг. 9. Подробности не описаны здесь снова.[00437] The third pointer is used to indicate the presence state of the ATMVP mode in the subblock merge prediction mode. For related descriptions of the third pointer, see the descriptions in the embodiment corresponding to FIG. 9. Details are not described here again.
[00438] Четвертый указатель используется для указания состояния присутствия режима прямолинейного предсказания (PLANAR) вектора движения в режиме предсказания слияния субблоков. Другими словами, четвертый указатель используется для указания, разрешено ли использование планарного режима для внешнего предсказания блока, который должен быть обработан.[00438] The fourth pointer is used to indicate the presence state of the PLANAR mode of the motion vector in the subblock merge prediction mode. In other words, the fourth pointer is used to indicate whether the planar mode is allowed to inter-predict the block to be processed.
[00439] Этап S1105: Когда третий указатель указывает, что режим ATMVP присутствует в режиме предсказания слияния субблоков, а четвертый указатель указывает, что планарный режим не присутствует в режиме предсказания слияния субблоков, определить третье число на основе третьего указателя и определить максимальную длину первого списка кандидатных векторов движения на основе только третьего числа.[00439] Step S1105: When the third pointer indicates that the ATMVP mode is present in the subblock merge prediction mode, and the fourth pointer indicates that the planar mode is not present in the subblock merge prediction mode, determine the third number based on the third pointer, and determine the maximum length of the first list candidate motion vectors based on the third number only.
[00440] Например, когда четвертый указатель является третьим значением, он указывает, что планарный режим не присутствует в режиме предсказания слияния субблоков; или когда четвертый указатель представляет собой четвертое значение, он указывает, что планарный режим присутствует в режиме предсказания слияния субблоков. Например, третье значение равно 0, а четвертое значение равно 1. Например, четвертый указатель может быть сконфигурирован в SPS, PPS или заголовке слайса. Четвертый указатель может быть представлен sps_planar_enabled_flag.[00440] For example, when the fourth pointer is the third value, it indicates that the planar mode is not present in the subblock merge prediction mode; or when the fourth pointer is the fourth value, it indicates that the planar mode is present in the subblock merge prediction mode. For example, the third value is 0 and the fourth value is 1. For example, the fourth pointer may be configured in the SPS, PPS, or slice header. The fourth pointer may be represented by sps_planar_enabled_flag.
[00441] Этап S1106: Когда третий указатель указывает, что режим ATMVP не присутствует в режиме предсказания слияния субблоков, а четвертый указатель указывает, что планарный режим присутствует в режиме предсказания слияния субблоков, определить четвертое число на основе четвертого указателя и определить максимальную длину первого списка кандидатных векторов движения на основе четвертого числа.[00441] Step S1106: When the third pointer indicates that the ATMVP mode is not present in the subblock merge prediction mode, and the fourth pointer indicates that the planar mode is present in the subblock merge prediction mode, determine the fourth number based on the fourth pointer, and determine the maximum length of the first list candidate motion vectors based on the fourth number.
[00442] Например, когда четвертый указатель указывает, что планарный режим присутствует в режиме предсказания слияния субблоков, четвертое число равно максимальному количеству векторов движения, которые поддерживаются при предсказании, выполняемом с использованием планарного режима.[00442] For example, when the fourth pointer indicates that the planar mode is present in the subblock merge prediction mode, the fourth number is equal to the maximum number of motion vectors that are supported in the prediction performed using the planar mode.
[00443] Например, на этапе S1106 максимальная длина первого списка кандидатных векторов движения равна четвертому числу. Например, если максимальное количество векторов движения, которые поддерживаются при предсказании, выполняемом с использованием планарного режима, равно 1, максимальная длина первого списка кандидатных векторов движения равна 1. В другом примере, когда четвертый указатель равен 1, это указывает, что планарный режим присутствует в режиме предсказания слияния субблоков. В этом случае максимальная длина первого списка кандидатных векторов движения равна четвертому указателю.[00443] For example, in step S1106, the maximum length of the first motion vector candidate list is the fourth number. For example, if the maximum number of motion vectors that are supported in the prediction performed using the planar mode is 1, the maximum length of the first motion vector candidate list is 1. In another example, when the fourth pointer is 1, this indicates that the planar mode is present in subblock merge prediction mode. In this case, the maximum length of the first list of candidate motion vectors is equal to the fourth pointer.
[00444] Этап S1107: Когда третий указатель указывает, что режим ATMVP присутствует в режиме предсказания слияния субблоков, а четвертый указатель указывает, что планарный режим присутствует в режиме предсказания слияния субблоков, определить третье число на основе третьего указателя, определить четвертое число на основе четвертого указателя и определить максимальную длину первого списка кандидатных векторов движения на основе третьего числа и четвертого числа.[00444] Step S1107: When the third pointer indicates that the ATMVP mode is present in the subblock merge prediction mode, and the fourth pointer indicates that the planar mode is present in the subblock merge prediction mode, determine the third number based on the third pointer, determine the fourth number based on the fourth pointer and determine the maximum length of the first list of candidate motion vectors based on the third number and the fourth number.
[00445] В примере, когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит только режим прямолинейного предсказания вектора движения, максимальное количество векторов движения, которые поддерживаются в предсказании, выполняемом с использованием планарного режима равно 1, и максимальное количество векторов движения, которые поддерживаются при предсказании, выполняемом с использованием режима ATMVP, равно 1, если третий указатель равен 1, это указывает, что режим ATMVP присутствует в режиме предсказания слияния субблоков; или если третий указатель равен 0, это указывает, что режим ATMVP не присутствует в режиме предсказания слияния субблоков; и если четвертый указатель равен 1, это указывает, что режим PLANAR присутствует в режиме предсказания слияния субблоков; или если четвертый указатель равен 0, это указывает, что планарный режим присутствует в режиме предсказания слияния субблоков. В этом случае максимальная длина первого списка кандидатных векторов движения может быть равна сумме третьего указателя и четвертого указателя.[00445] In an example where the first pointer indicates that the candidate mode used for inter-prediction of a block to be processed contains only the rectilinear motion vector prediction mode, the maximum number of motion vectors that are supported in the prediction performed using the planar mode is 1, and the maximum number of motion vectors that are supported in the prediction performed using the ATMVP mode is 1, if the third pointer is 1, this indicates that the ATMVP mode is present in the subblock merge prediction mode; or if the third pointer is 0, this indicates that the ATMVP mode is not present in the subblock merge prediction mode; and if the fourth pointer is 1, it indicates that the PLANAR mode is present in the subblock merge prediction mode; or if the fourth pointer is 0, it indicates that the planar mode is present in the subblock merge prediction mode. In this case, the maximum length of the first list of candidate motion vectors may be equal to the sum of the third pointer and the fourth pointer.
[00446] Третий указатель представлен sps_sbtmvp_enabled_flag, а четвертый указатель представлен sps_planar_enabled_flag. Максимальная длина первого списка кандидатных векторов движения может быть получена по следующей формуле:[00446] The third pointer is represented by sps_sbtmvp_enabled_flag and the fourth pointer is represented by sps_planar_enabled_flag. The maximum length of the first list of candidate motion vectors can be obtained from the following formula:
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag.MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag.
[00447] Когда sps_sbtmvp_enabled_flag=1 (указывает, что режим ATMVP присутствует в режиме предсказания слияния субблоков), и sps_planar_enabled_flag=0 (указывает, что планарный режим не присутствует в режиме предсказания слияния субблоков), MaxNumSubblockMergeCand = sps_sbtmvp_enabled_flag = 1, который соответствует этапу S1105. Когда sps_sbtmvp_enabled_flag=0 (что указывает на то, что режим ATMVP не присутствует в режиме предсказания слияния субблоков) и sps_planar_enabled_flag=1 (указывает, что планарный режим присутствует в режиме предсказания слияния субблоков), MaxNumSubblockMergeCand = sps_planar_enabled_flag = 1, который соответствует этапу S1106. Когда sps_sbtmvp_enabled_flag=1 и sps_planar_enabled_flag=1, MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag=2, что соответствует этапу S1107.[00447] When sps_sbtmvp_enabled_flag=1 (indicates that the ATMVP mode is present in the subblock merge prediction mode), and sps_planar_enabled_flag=0 (indicates that the planar mode is not present in the subblock merge prediction mode), MaxNumSubblockMergeCand = sps_sbtmvp_enabled_flag = 1, which corresponds to step S1105 . When sps_sbtmvp_enabled_flag=0 (indicating that the ATMVP mode is not present in the subblock merge prediction mode) and sps_planar_enabled_flag=1 (indicating that the planar mode is present in the subblock merge prediction mode), MaxNumSubblockMergeCand = sps_planar_enabled_flag = 1, which corresponds to step S1106. When sps_sbtmvp_enabled_flag=1 and sps_planar_enabled_flag=1, MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag=2, which corresponds to step S1107.
[00448] Конечно, когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит только режим прямолинейного предсказания вектора движения, третий указатель указывает, что режим ATMVP не присутствует в режиме предсказания слияния субблоков, и четвертый указатель указывает, что планарный режим не присутствует в режиме предсказания слияния субблоков, MaxNumSubblockMergeCand=0.[00448] Of course, when the first pointer indicates that the candidate mode used for inter prediction of the block to be processed contains only the rectilinear motion vector prediction mode, the third pointer indicates that the ATMVP mode is not present in the subblock merge prediction mode, and the fourth the pointer indicates that the planar mode is not present in the subblock merge prediction mode, MaxNumSubblockMergeCand=0.
[00449] То, что максимальное значение MaxNumSubblockMergeCand может быть равно 5, используется в качестве примера.[00449] That the maximum value of MaxNumSubblockMergeCand can be 5 is used as an example.
[00450] Если sps_affine_enable_flag=0, MaxNumSubblockMergeCand получается по следующей формуле:[00450] If sps_affine_enable_flag=0, MaxNumSubblockMergeCand is obtained from the following formula:
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag.MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag.
[00451] Если sps_affine_enable_flag=1, MaxNumSubblockMergeCand получается по следующей формуле:[00451] If sps_affine_enable_flag=1, MaxNumSubblockMergeCand is obtained from the following formula:
MaxNumSubblockMergeCand=5 - five_minus_max_num_subblock_merge_cand.MaxNumSubblockMergeCand=5 - five_minus_max_num_subblock_merge_cand.
[00452] Например, five_minus_max_num_subblock_merge_cand может быть определен как вычитание максимальной длины списка предсказания вектора движения слияния на основе субблока в слайсе из 5 (five_minus_max_num_subblock_merge_cand указывает максимальное количество кандидатов предсказания векторов движения (MVP) слияния на основе субблока, поддерживаемых в слайсе, который вычтен из 5).[00452] For example, five_minus_max_num_subblock_merge_cand can be defined as subtracting the maximum length of the subblock-based merge motion vector prediction list in the slice from 5 (five_minus_max_num_subblock_merge_cand indicates the maximum number of subblock-based merge motion vector prediction (MVP) candidates supported in the slice that is subtracted from 5 ).
[00453] Максимальное количество кандидатов MVP слияния на основе субблоков, MaxNumSubblockMergeCand, определяется следующим образом:[00453] The maximum number of subblock-based merge MVP candidates, MaxNumSubblockMergeCand, is defined as follows:
-- Если sps_affine_enabled_flag равно 0:-- If sps_affine_enabled_flag is 0:
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag;MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag;
-- В противном случае (sps_affine_enabled_flag равно 1):-- Otherwise (sps_affine_enabled_flag is 1):
MaxNumSubblockMergeCand=5 - five_minus_max_num_subblock_merge_cand.MaxNumSubblockMergeCand=5 - five_minus_max_num_subblock_merge_cand.
[00454] Значение MaxNumSubblockMergeCand должно находиться в диапазоне от 0 до 5 включительно.[00454] The MaxNumSubblockMergeCand value must be between 0 and 5 inclusive.
[00455] ФИГ. 12A и фиг. 12B показывает описания четвертой реализации.[00455] FIG. 12A and FIG. 12B shows descriptions of the fourth implementation.
[00456] Этап S1201: Для получения подробной информации о этапе S1201 см. этап S901. Подробности здесь снова не описываются. Выполнить этап S1202 или этап S1206.[00456] Step S1201: For details of step S1201, see step S901. The details are again not described here. Execute step S1202 or step S1206.
[00457] Этап S1202: Когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит аффинный режим, синтаксически анализировать второй указатель, третий указатель и четвертый указатель из битового потока, где второй указатель используется для указания (или определения) максимальной длины первого списка кандидатных векторов движения, и первый список кандидатных векторов движения является списком кандидатных векторов движения, созданным для блока, который должен быть обработан, с использованием режима предсказания слияния субблоков. Выполните этапы S1203, S1204 или этап S1205.[00457] Step S1202: When the first pointer indicates that the candidate mode used for inter prediction of the block to be processed contains the affine mode, parse the second pointer, the third pointer, and the fourth pointer from the bitstream, where the second pointer is used to indicate (or determining) the maximum length of the first candidate motion vector list, and the first candidate motion vector list is a candidate motion vector list created for a block to be processed using the sub-block merge prediction mode. Execute steps S1203, S1204 or step S1205.
[00458] Этап S1203: Когда третий указатель указывает, что режим расширенного временного предсказания вектора движения присутствует в режиме предсказания слияния субблоков, а четвертый указатель указывает, что режим планарного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, определить второе число на основе четвертого указателя и определить максимальную длину первого списка кандидатных векторов движения на основе второго указателя и второго числа.[00458] Step S1203: When the third pointer indicates that the extended temporal motion vector prediction mode is present in the subblock merge prediction mode, and the fourth pointer indicates that the planar motion vector prediction mode is not present in the subblock merge prediction mode, determine the second number based on the fourth pointer and determine the maximum length of the first list of candidate motion vectors based on the second pointer and the second number.
[00459] Этап S1204: Когда третий указатель указывает, что режим расширенного временного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, а четвертый указатель указывает, что режим планарного предсказания вектора движения присутствует в режиме предсказания слияния субблоков, определить первое число на основе третьего указателя и определить максимальную длину первого списка кандидатных векторов движения на основе второго указателя и первого числа.[00459] Step S1204: When the third pointer indicates that the extended temporal motion vector prediction mode is not present in the subblock merge prediction mode, and the fourth pointer indicates that the planar motion vector prediction mode is present in the subblock merge prediction mode, determine the first number based on the third pointer and determine the maximum length of the first list of candidate motion vectors based on the second pointer and the first number.
[00460] Этап S1205: Когда третий указатель указывает, что режим расширенного временного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, и четвертый указатель указывает, что режим планарного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, определить первое число на основе третьего указателя, определить второе число на основе четвертого указателя и определить максимальную длину первого списка кандидатных векторов движения на основе второго указателя, первого числа и второго числа.[00460] Step S1205: When the third pointer indicates that the extended temporal motion vector prediction mode is not present in the subblock merge prediction mode, and the fourth pointer indicates that the planar motion vector prediction mode is not present in the subblock merge prediction mode, determine the first number based on the third pointer, determine the second number based on the fourth pointer, and determine the maximum length of the first list of candidate motion vectors based on the second pointer, the first number, and the second number.
[00461] Когда четвертый указатель указывает, что планарный режим не присутствует в режиме предсказания слияния субблоков, второе число может быть равно максимальному числу векторов движения, которые поддерживаются при предсказании, выполняемом с использованием планарного режима. Например, четвертый указатель может быть представлен sps_planar_enabled_flag. Когда sps_planar_enabled_flag=0, это указывает, что режим планарного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков. В этом случае второе число равно максимальному количеству векторов движения, которые поддерживаются при предсказании, выполняемом с использованием режима ATMVP. Напротив, когда sps_planar_enabled_flag=1, это указывает, что режим планарного предсказания вектора движения присутствует в режиме предсказания слияния субблоков. В этом случае второе число равно 0. Например, максимальное количество векторов движения, которые поддерживаются при предсказании, выполняемом с использованием планарного режима, может быть 1. В этом случае второе число может быть равно значению sps_planar_enabled_flag.[00461] When the fourth pointer indicates that the planar mode is not present in the subblock merge prediction mode, the second number may be equal to the maximum number of motion vectors that are supported in the prediction performed using the planar mode. For example, the fourth pointer could be represented by sps_planar_enabled_flag. When sps_planar_enabled_flag=0, it indicates that the planar motion vector prediction mode is not present in the subblock merge prediction mode. In this case, the second number is equal to the maximum number of motion vectors that are supported in the prediction performed using the ATMVP mode. On the contrary, when sps_planar_enabled_flag=1, it indicates that the planar motion vector prediction mode is present in the subblock merge prediction mode. In this case, the second number is 0. For example, the maximum number of motion vectors that are supported in prediction performed using planar mode may be 1. In this case, the second number may be equal to the value of sps_planar_enabled_flag.
[00462] В возможном примере, когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит аффинный режим, максимальная длина первого списка кандидатных векторов движения может быть получена в соответствии со следующей формулой:[00462] In an example, when the first pointer indicates that the candidate mode used for inter-prediction of the block to be processed contains the affine mode, the maximum length of the first list of candidate motion vectors can be obtained according to the following formula:
MaxNumSubblockMergeCand=K - K_minus_max_num_subblock_merge_cand - L1-L2,MaxNumSubblockMergeCand=K - K_minus_max_num_subblock_merge_cand - L1-L2,
[00463] Например, в четвертой реализации значение K_minus_max_num_subblock_merge_cand может находиться в диапазоне от 0 до 2 или от 0 до 3.[00463] For example, in the fourth implementation, the value of K_minus_max_num_subblock_merge_cand may range from 0 to 2, or from 0 to 3.
[00464] Например, максимальное значение MaxNumSubblockMergeCand может быть 5 или 6.[00464] For example, the maximum value of MaxNumSubblockMergeCand can be 5 or 6.
[00465] Когда максимальное значение MaxNumSubblockMergeCand может быть равно 5, второй указатель может быть представлен five_minus_max_num_subblock_merge_cand. Когда максимальное значение MaxNumSubblockMergeCand может быть 6, второй указатель может быть представлен с помощью six_minus_max_num_subblock_merge_cand.[00465] When the maximum value of MaxNumSubblockMergeCand may be 5, the second pointer may be represented by five_minus_max_num_subblock_merge_cand. When the maximum value of MaxNumSubblockMergeCand can be 6, the second pointer can be represented with six_minus_max_num_subblock_merge_cand.
[00466] Например, L1 можно получить по следующей формуле:[00466] For example, L1 can be obtained by the following formula:
L1=sps_sbtmvp_enabled_flag == 1? 0 : 1. Если sps_sbtmvp_enabled_flag=1, L1=0. Если sps_sbtmvp_enabled_flag=0, L1=1.L1=sps_sbtmvp_enabled_flag == 1? 0 : 1. If sps_sbtmvp_enabled_flag=1, L1=0. If sps_sbtmvp_enabled_flag=0, L1=1.
[00467] В примере L2 может быть получен по следующей формуле:[00467] In the example, L2 can be obtained by the following formula:
L2=sps_planar_enabled_flag == 1? 0 : 1. Если sps_planar_enabled_flag=1, L2=0. Если sps_sbtmvp_enabled_flag=0, L2=1.L2=sps_planar_enabled_flag == 1? 0 : 1. If sps_planar_enabled_flag=1, L2=0. If sps_sbtmvp_enabled_flag=0, L2=1.
[00468] Этапы S1206 - S1209: Для получения подробной информации о этапах S1206 - S1209, обратитесь к этапам S1104 - S1107. Подробности здесь снова не описываются.[00468] Steps S1206 - S1209: For details on steps S1206 - S1209, refer to steps S1104 - S1107. The details are again not described here.
[00469] Например, максимальное значение MaxNumSubblockMergeCand может быть 5. Значение five_minus_max_num_subblock_merge_cand находится в диапазоне от 0 до 2.[00469] For example, the maximum value of MaxNumSubblockMergeCand may be 5. The value of five_minus_max_num_subblock_merge_cand ranges from 0 to 2.
[00470] Если sps_affine_enable_flag=0, MaxNumSubblockMergeCand получается по следующей формуле:[00470] If sps_affine_enable_flag=0, MaxNumSubblockMergeCand is obtained from the following formula:
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag.MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag.
[00471] В противном случае (если sps_affine_enable_flag=1) MaxNumSubblockMergeCand получается по следующей формуле:[00471] Otherwise (if sps_affine_enable_flag=1) MaxNumSubblockMergeCand is obtained from the following formula:
MaxNumSubblockMergeCand=5 - five_minus_max_num_subblock_merge_cand - (sps_sbtmvp_enabled_flag == 1? 0 : 1) - (sps_planar_enabled_flag == 1? 0 : 1),MaxNumSubblockMergeCand=5 - five_minus_max_num_subblock_merge_cand - (sps_sbtmvp_enabled_flag == 1? 0 : 1) - (sps_planar_enabled_flag == 1? 0 : 1),
где (five_minus_max_num_subblock_merge_cand указывает максимальное число кандидатов предсказания вектора движения (MVP) слияния на основе субблока, поддерживаемых в слайсе, вычтенном из 5), максимальное количество кандидатов MVP слияния на основе субблока, MaxNumSubblockMergeCand, определяется следующим образом:where (five_minus_max_num_subblock_merge_cand indicates the maximum number of subblock-based merge motion vector prediction (MVP) candidates supported in a slice subtracted from 5), the maximum number of subblock-based merge MVP candidates, MaxNumSubblockMergeCand, is defined as follows:
-- Если sps_affine_enabled_flag равно 0:-- If sps_affine_enabled_flag is 0:
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag;MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag;
-- В противном случае (sps_affine_enabled_flag равно 1):-- Otherwise (sps_affine_enabled_flag is 1):
MaxNumSubblockMergeCand=5 - five_minus_max_num_subblock_merge_cand - (sps_sbtmvp_enabled_flag == 1? 0 : 1) - (sps_planar_enabled_flag == 1? 0 : 1).MaxNumSubblockMergeCand=5 - five_minus_max_num_subblock_merge_cand - (sps_sbtmvp_enabled_flag == 1? 0 : 1) - (sps_planar_enabled_flag == 1? 0 : 1).
[00472] Значение MaxNumSubblockMergeCand должно находиться в диапазоне от 0 до 5 включительно.[00472] The MaxNumSubblockMergeCand value must be between 0 and 5 inclusive.
[00473] Например, максимальное значение MaxNumSubblockMergeCand может быть 6. Значение five_minus_max_num_subblock_merge_cand находится в диапазоне от 0 до 3.[00473] For example, the maximum value of MaxNumSubblockMergeCand may be 6. The value of five_minus_max_num_subblock_merge_cand ranges from 0 to 3.
[00474] Если sps_affine_enable_flag=0, MaxNumSubblockMergeCand получается по следующей формуле:[00474] If sps_affine_enable_flag=0, MaxNumSubblockMergeCand is obtained from the following formula:
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag;MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag;
[00475] В противном случае (если sps_affine_enable_flag=1) MaxNumSubblockMergeCand получается по следующей формуле:[00475] Otherwise (if sps_affine_enable_flag=1) MaxNumSubblockMergeCand is obtained from the following formula:
MaxNumSubblockMergeCand=6 - six_minus_max_num_subblock_merge_cand - (sps_sbtmvp_enabled_flag == 1? 0 : 1) - (sps_planar_enabled_flag == 1? 0 : 1).MaxNumSubblockMergeCand=6 - six_minus_max_num_subblock_merge_cand - (sps_sbtmvp_enabled_flag == 1? 0 : 1) - (sps_planar_enabled_flag == 1? 0 : 1).
где (six_minus_max_num_subblock_merge_cand указывает максимальное число кандидатов предсказания вектора движения (MVP) слияния на основе субблока, поддерживаемых в слайсе, вычтенном из 6), максимальное количество кандидатов MVP слияния на основе субблока, MaxNumSubblockMergeCand, определяется следующим образом:where (six_minus_max_num_subblock_merge_cand indicates the maximum number of subblock-based merge motion vector prediction (MVP) candidates supported in a slice subtracted from 6), the maximum number of subblock-based merge MVP candidates, MaxNumSubblockMergeCand, is defined as follows:
-- Если sps_affine_enabled_flag равно 0:-- If sps_affine_enabled_flag is 0:
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag;MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag;
-- В противном случае (sps_affine_enabled_flag равно 1):-- Otherwise (sps_affine_enabled_flag is 1):
MaxNumSubblockMergeCand=6 - six_minus_max_num_subblock_merge_cand - (sps_sbtmvp_enabled_flag == 1? 0 : 1) - (sps_planar_enabled_flag == 1? 0 : 1).MaxNumSubblockMergeCand=6 - six_minus_max_num_subblock_merge_cand - (sps_sbtmvp_enabled_flag == 1? 0 : 1) - (sps_planar_enabled_flag == 1? 0 : 1).
[00476] Значение MaxNumSubblockMergeCand должно находиться в диапазоне от 0 до 6 включительно.[00476] The MaxNumSubblockMergeCand value must be between 0 and 6 inclusive.
[00477] Для второго случая режим планарного предсказания вектора движения не считается присутствующим в режиме слияния субблоков. Другими словами, когда режим слияния субблоков может содержать по меньшей мере один из аффинного режима и режима расширенного временного предсказания вектора движения, может использоваться первая реализация или вторая реализация. Подробности не описаны здесь снова.[00477] For the second case, the planar motion vector prediction mode is not considered to be present in the subblock merge mode. In other words, when the sub-block merging mode may comprise at least one of the affine mode and the extended motion vector temporal prediction mode, the first implementation or the second implementation may be used. Details are not described here again.
[00478] На основе той же концепции изобретения, что и в вариантах осуществления упомянутого способа, вариант осуществления этой заявки дополнительно предоставляет аппаратуру. Как показано на фиг. 13, аппаратура 1300 может быть, в частности, процессором в декодере видео, микросхемой, системой микросхем или модулем в декодере видео, например, блоком 304 энтропийного декодирования и/или блоком 344 внешнего предсказания.[00478] Based on the same inventive concept as in the embodiments of said method, an embodiment of this application further provides hardware. As shown in FIG. 13,
[00479] Например, аппаратура может содержать блок 1301 синтаксического анализа и блок 1302 определения. Блок 1301 синтаксического анализа и блок 1302 определения выполняют этапы способа, описанные в вариантах осуществления, соответствующих фиг. 9 - фиг. 12A и фиг. 12B. Например, блок 1301 синтаксического анализа может быть сконфигурирован для синтаксического анализа указателей (например, первого указателя, второго указателя, третьего указателя или четвертого указателя), содержащихся в битовом потоке, а блок 1302 определения сконфигурирован для определения максимальной длины первого списка кандидатных векторов движения.[00479] For example, the hardware may include a
[00480] Вариант осуществления этой заявки дополнительно обеспечивает другую структуру аппаратуры, используемой в декодере. Как показано на фиг. 14, аппаратура 1400 может содержать интерфейс 1410 связи и процессор 1420. Необязательно, аппаратура 1400 может дополнительно содержать память 1430. Память 1430 может располагаться внутри или снаружи аппаратуры. И блок 1301 синтаксического анализа, и блок 1302 определения, показанные на фиг. 13 может быть реализован процессором 1420. Процессор 1420 отправляет или принимает видеопоток или битовый поток через интерфейс 1410 связи и сконфигурирован для реализации способов, показанных на фиг. 9 - фиг. 12A и фиг. 12B. В процессе реализации этапы процедуры обработки могут выполняться с использованием аппаратной интегральной логической схемы в процессоре 1420 или инструкции в форме программного обеспечения, чтобы завершить способы, показанные на фиг. 9 - фиг. 12A и фиг. 12B.[00480] An embodiment of this application further provides a different hardware structure used in the decoder. As shown in FIG. 14,
[00481] Интерфейс 1410 связи в этом варианте осуществления этой заявки может быть схемой, шиной, приемопередатчиком или любой другой аппаратурой, которая может быть сконфигурирована для обмена информацией. Например, другая аппаратура может быть устройством, подключенным к аппаратуре 1400. Например, если аппаратура является кодером видео, другая аппаратура может быть декодером видео.[00481] The
[00482] В этом варианте осуществления этой заявки процессор 1420 может быть процессором общего назначения, процессором цифровых сигналов, специализированной интегральной схемой, программируемой вентильной матрицей или другим программируемым логическим устройством, дискретным затвором или транзисторным логическим устройством, или дискретным аппаратным компонентом и может реализовывать или выполнять способы, этапы и логические блок-схемы, раскрытые в вариантах осуществления этой заявки. Универсальный процессор может быть микропроцессором, любым традиционным процессором или т.п. Этапы способов, раскрытых со ссылкой на варианты осуществления этой заявки, могут выполняться непосредственно аппаратным процессором или могут выполняться с использованием комбинации аппаратного обеспечения в процессоре и программного модуля. Программный код, выполняемый процессором 1420 для реализации вышеупомянутых способов, может храниться в памяти 1430. Память 1430 связана с процессором 1420.[00482] In this embodiment of this application,
[00483] Соединение в этом варианте осуществления этой заявки может быть косвенным соединением или коммуникационным соединением между устройствами, блоками или модулями в электрической, механической или другой форме и используется для обмена информацией между устройствами, блоками, или модулями.[00483] The connection in this embodiment of this application may be an indirect connection or communication connection between devices, blocks or modules in electrical, mechanical or other form and is used to exchange information between devices, blocks, or modules.
[00484] Процессор 1420 может работать совместно с памятью 1430. Память 1430 может быть энергонезависимой памятью, например, жестким диском (hard disk drive, HDD) или твердотельным накопителем (solid-state drive, SSD), или может быть энергозависимой памятью (volatile memory), например, оперативной памятью (random-access memory, RAM). Память 1430 - это любой другой носитель, который может быть сконфигурирован для переноса или хранения ожидаемого программного кода в форме инструкции или структуры данных, и к которому компьютер может получить доступ, но не ограничивается этим.[00484]
[00485] В этом варианте осуществления этой заявки конкретная среда соединения между интерфейсом 1410 связи, процессором 1420 и памятью 1430 не ограничивается. В этом варианте осуществления этой заявки память 1430, процессор 1420 и интерфейс 1410 связи подключены через шину на фиг. 14. Шина представлена жирной линией на фиг. 14. Режим соединения между другими компонентами описан просто схематично и не ограничивается этим. Шину можно разделить на адресную шину, шину данных, шину управления и т.п. Для простоты представления используется только одна толстая линия для представления шины на Фиг.14, но это не означает, что есть только одна шина или только один тип шины.[00485] In this embodiment of this application, the specific communication medium between the
[00486] Вышеупомянутые возможные реализации и конкретные варианты осуществления, относящиеся к фиг. 9 - фиг. 12A и фиг. 12B предоставляют описания одного или нескольких аппаратур декодирования видеоданных в этой заявке. Следует понимать, что согласно предшествующему описанию сторона кодера обычно определяет режим внешнего предсказания и кодирует режим внешнего предсказания в битовом потоке. После того, как режим внешнего предсказания будет окончательно выбран, указатель (например, первый указатель, второй указатель, третий указатель или четвертый указатель, описанный выше) для режима внешнего предсказания кодируется в битовом потоке с использованием процесса кодирования, который полностью обратен вышеуказанному методу декодирования (процесс кодирования соответствует процессу декодирования синтаксического анализа первого указателя, второго указателя, третьего указателя или четвертого указателя). Следует понимать, что определение максимальной длины первого списка кандидатных векторов движения стороной кодера полностью согласуется с определением стороной декодера. Конкретный вариант осуществления стороны кодера не описывается. Однако следует понимать, что способ предсказания видеоизображения, описанный в этой заявке, также используется в устройстве кодирования.[00486] The above possible implementations and specific embodiments related to FIG. 9 - fig. 12A and FIG. 12B provide descriptions of one or more video decoding apparatuses in this application. It should be understood that, according to the foregoing description, the encoder side typically determines the inter prediction mode and encodes the inter prediction mode in the bitstream. After the inter prediction mode is finally selected, the pointer (for example, the first pointer, the second pointer, the third pointer, or the fourth pointer described above) for the inter prediction mode is encoded in the bitstream using an encoding process that is the complete inverse of the above decoding method ( the encoding process corresponds to the decoding process of parsing the first pointer, second pointer, third pointer, or fourth pointer). It should be understood that the definition of the maximum length of the first list of candidate motion vectors by the encoder side is fully consistent with the definition by the decoder side. The specific embodiment of the encoder side is not described. However, it should be understood that the video prediction method described in this application is also used in the encoding device.
[00487] Вариант осуществления этой заявки дополнительно предоставляет устройство, используемое в кодере. Как показано на фиг. 15, аппаратура 1500 может содержать интерфейс 1510 связи и процессор 1520. Необязательно, аппаратура 1500 может дополнительно содержать память 1530. Память 1530 может быть расположена внутри или снаружи аппаратуры. Процессор 1520 отправляет или принимает видеопоток или битовый поток через интерфейс 1510 связи.[00487] An embodiment of this application further provides a device used in an encoder. As shown in FIG. 15,
[00488] В одном аспекте процессор 1520 сконфигурирован для: кодирования первого указателя в битовом потоке; и когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит аффинный режим, кодировать второй указатель в битовом потоке, причем второй указатель используется для указания максимальной длины первого списка кандидатных векторов движения, а первый список кандидатных векторов движения является списком кандидатных векторов движения, созданным для блока, который должен быть обработан, с использованием режима предсказания слияния субблоков.[00488] In one aspect,
[00489] Интерфейс 1510 связи в этом варианте осуществления этой заявки может быть схемой, шиной, приемопередатчиком или любой другой аппаратурой, которая может быть сконфигурирована для обмена информацией. Например, другая аппаратура может быть устройством, подключенным к аппаратуре 1500. Например, если аппаратура является кодером видео, другая аппаратура может быть декодером видео.[00489] The
[00490] В этом варианте осуществления этой заявки процессор 1520 может быть процессором общего назначения, процессором цифровых сигналов, специализированной интегральной схемой, программируемой вентильной матрицей или другим программируемым логическим устройством, дискретным затвором или транзисторным логическим устройством, или дискретным аппаратным компонентом и может реализовывать или выполнять способы, этапы и логические блок-схемы, раскрытые в вариантах осуществления этой заявки. Универсальный процессор может быть микропроцессором, любым традиционным процессором или т.п. Этапы способов, раскрытых со ссылкой на варианты осуществления этой заявки, могут выполняться непосредственно аппаратным процессором или могут выполняться с использованием комбинации аппаратного обеспечения в процессоре и программного модуля. Программный код, выполняемый процессором 1520 для реализации вышеупомянутых способов, может храниться в памяти 1530. Память 1530 связана с процессором 1520.[00490] In this embodiment of this application, the
[00491] Соединение в этом варианте осуществления этой заявки может быть косвенным соединением или коммуникационным соединением между аппаратурами, блоками или модулями в электрической, механической или другой форме и используется для обмена информацией между аппаратурами, блоками, или модулями.[00491] The connection in this embodiment of this application may be an indirect connection or communication connection between apparatuses, blocks, or modules in electrical, mechanical, or other form, and is used to exchange information between apparatuses, blocks, or modules.
[00492] Процессор 1520 может работать во взаимодействии с памятью 1530. Память 1530 может быть энергонезависимой памятью, например, жестким диском (hard disk drive, HDD) или твердотельным накопителем (solid-state drive, SSD), или может быть энергозависимой памятью (volatile memory), например, оперативной памятью (random-access memory, RAM). Память 1530 представляет собой любой другой носитель, который может быть сконфигурирован для переноса или хранения ожидаемого программного кода в форме инструкции или структуры данных, и к которому компьютер может получить доступ, но не ограничивается этим.[00492] The
[00493] В этом варианте осуществления этой заявки конкретная среда связи между интерфейсом 1510 связи, процессором 1520 и памятью 1530 не ограничена. В этом варианте осуществления этой заявки память 1530, процессор 1520 и интерфейс 1510 связи подключены через шину на фиг. 15. Шина представлена жирной линией на фиг. 15. Режим соединения между другими компонентами описан просто схематично и не ограничивается этим. Шину можно разделить на адресную шину, шину данных, шину управления и т.п. Для простоты представления используется только одна толстая линия для представления шины на Фиг.15, но это не означает, что есть только одна шина или только один тип шины.[00493] In this embodiment of this application, the specific communication medium between the
[00494] На основе вышеописанных вариантов осуществления, вариант осуществления данной заявки дополнительно обеспечивает компьютерный носитель данных. На носителе хранится программное обеспечение. Когда программное обеспечение считывается и выполняется одним или несколькими процессорами, может быть реализован способ, предусмотренный в любом одном или нескольких вышеупомянутых вариантах осуществления. Компьютерный носитель данных может содержать любой носитель, на котором может храниться программный код, такой как флэш-накопитель USB, съемный жесткий диск, постоянное запоминающее устройство, оперативное запоминающее устройство, магнитный диск или оптический диск.[00494] Based on the embodiments described above, an embodiment of this application further provides a computer storage medium. The media stores the software. When the software is read and executed by one or more processors, the method provided in any one or more of the above embodiments may be implemented. A computer storage medium may include any medium that can store program code, such as a USB flash drive, removable hard disk, read only memory, random access memory, magnetic disk, or optical disk.
[00495] На основе вышеописанных вариантов осуществления, вариант осуществления данной заявки дополнительно обеспечивает микросхему. Микросхема содержит процессор, сконфигурированный для реализации функций в любом одном или нескольких из вышеупомянутых вариантов осуществления, например, получения или обработки информации или сообщения, используемых в вышеупомянутых способах. Необязательно, микросхема дополнительно содержит память. Память сконфигурирована для хранения программных инструкций и данных, которые необходимы и выполняются процессором. Микросхема может содержать микросхему или может содержать микросхему и другое дискретное устройство.[00495] Based on the embodiments described above, an embodiment of this application further provides a chip. The chip contains a processor configured to implement the functions in any one or more of the above embodiments, such as receiving or processing information or messages used in the above methods. Optionally, the chip further comprises memory. The memory is configured to store program instructions and data that are needed and executed by the processor. A microcircuit may contain a microcircuit or may contain a microcircuit and other discrete device.
[00496] Хотя конкретные аспекты этой заявки были описаны со ссылкой на кодер 20 видео и декодер 30 видео, следует понимать, что технологии этой заявки могут использоваться многими другими модулями кодирования и/или декодирования видео, процессорами, модулями обработки и аппаратными блоками декодирования и т.п., например кодерами/декодерами (CODEC). Кроме того, следует понимать, что этапы, описанные и показанные на фиг. С 8А по фиг. 12A и фиг. 12B представлены просто как возможные реализации. Другими словами, этапы, описанные в возможных реализациях на фиг. С 8А по фиг. 12A и фиг. 12B не обязательно выполняются в порядке, показанном на фиг. С 8А по фиг. 12A и фиг. 12B, и может быть выполнено меньше этапов, дополнительные или альтернативные этапы.[00496] While specific aspects of this application have been described with reference to
[00497] Кроме того, следует понимать, что в зависимости от возможных реализаций конкретные действия или события в любом из способов, описанных в этой спецификации, могут выполняться в разных порядках, действие или событие могут быть добавлены, или действия или события могут быть объединены, или опущены (например, не все описанные действия или события необходимы для реализации способов). Кроме того, в конкретной возможной реализации действия или события могут (например) подвергаться многопоточной обработке или обработке прерываний или могут обрабатываться множеством процессоров одновременно, а не последовательно. Кроме того, хотя конкретные аспекты этой заявки описаны как выполняемые одним блоком или устройством для ясности, следует понимать, что технологии этой заявки могут выполняться комбинацией блоков или модулей, связанных с видеодекодером. [00497] In addition, it should be understood that, depending on possible implementations, specific actions or events in any of the ways described in this specification may be performed in different orders, an action or event may be added, or actions or events may be combined, or omitted (eg, not all actions or events described are necessary to implement the methods). In addition, in a particular possible implementation, actions or events may (for example) be threaded or interrupted, or may be processed by multiple processors simultaneously rather than sequentially. Furthermore, while specific aspects of this application are described as being performed by a single unit or device for clarity, it should be understood that the technologies of this application may be performed by a combination of units or modules associated with a video decoder.
[00498] В одной или нескольких возможных реализациях описанные функции могут быть реализованы с использованием оборудования, программного обеспечения, встроенного программного обеспечения или любой их комбинации. Если функции реализуются с использованием программного обеспечения, функции могут храниться на машиночитаемом носителе в виде одной или нескольких инструкций или кода или передаваться через машиночитаемый носитель и выполняться аппаратным блоком обработки. Машиночитаемый носитель может содержать машиночитаемый носитель данных или среду связи. Машиночитаемый носитель данных соответствует материальному носителю, например, носителю данных. Среда связи включает в себя любую среду, которая облегчает передачу компьютерной программы (например) из одного места в другое в соответствии с протоколом связи.[00498] In one or more possible implementations, the described functions may be implemented using hardware, software, firmware, or any combination thereof. If the functions are implemented using software, the functions may be stored on a computer-readable medium as one or more instructions or code, or transmitted over a computer-readable medium and executed by a hardware processing unit. The computer-readable medium may comprise a computer-readable storage medium or communication medium. A computer-readable storage medium corresponds to a tangible medium, such as a storage medium. A communication medium includes any medium that facilitates the transfer of a computer program (for example) from one place to another in accordance with a communication protocol.
[00499] Таким образом, машиночитаемый носитель может соответствовать, например, (1) энергонезависимому материальному машиночитаемому носителю данных или (2) среде связи, такой как сигнал или носитель. Носитель данных может быть любым доступным носителем, к которому может получить доступ один или несколько компьютеров или один или несколько процессоров для извлечения инструкций, кода и/или структур данных для реализации технологий, описанных в этой заявке. Компьютерный программный продукт может содержать машиночитаемый носитель.[00499] Thus, a computer-readable medium may correspond to, for example, (1) a non-volatile tangible computer-readable storage medium, or (2) a communication medium such as a signal or a medium. A storage medium can be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, code, and/or data structures for implementing the technologies described in this application. The computer program product may include a computer-readable medium.
[00500] В качестве возможной реализации, а не ограничения, машиночитаемый носитель данных может содержать RAM, ROM, EEPROM, CD-ROM или другую аппаратуру хранения оптического диска, аппаратуру хранения магнитного диска или другую аппаратуру магнитного хранения, флэш-память или любой другой носитель, который можно использовать для хранения необходимого кода в форме инструкции или структуры данных и к которому может получить доступ компьютер. Точно так же любое соединение может быть соответственно названо машиночитаемым носителем. Например, если инструкция передается с веб-сайта, сервера или другого удаленного источника через коаксиальный кабель, оптическое волокно, витую пару, цифровую абонентскую линию (DSL) или беспроводные технологии, такие как инфракрасный порт, радио и микроволны, коаксиальный кабель, оптическое волокно, витая пара, DSL или беспроводные технологии, такие как инфракрасный порт, радио и микроволны, содержатся в определении среды.[00500] As a possible implementation, and not limitation, a computer-readable storage medium may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage equipment, magnetic disk storage equipment or other magnetic storage equipment, flash memory, or any other media. A that can be used to store the required code in the form of an instruction or data structure and that can be accessed by a computer. Similarly, any connection can be appropriately referred to as a computer-readable medium. For example, if an instruction is transmitted from a website, server, or other remote source via coaxial cable, optical fiber, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio and microwave, coaxial cable, optical fiber, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are contained in the media definition.
[00501] Однако следует понимать, что машиночитаемый носитель данных и носитель хранения данных могут не содержать соединение, носитель, сигнал или другой временный носитель, но, альтернативно, означают энергонезависимые материальные носители данных. Магнитный диск и оптический диск, описанные в этой спецификации, включают в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), дискету и диск Blu-ray. Магнитный диск обычно воспроизводит данные магнитным способом, а оптический диск воспроизводит данные оптически с помощью лазера. Комбинация вышеупомянутого магнитного диска и оптического диска также должна входить в объем машиночитаемого носителя.[00501] However, it should be understood that a computer-readable storage medium and a storage medium may not contain a connection, medium, signal, or other temporary medium, but, alternatively, mean non-volatile tangible storage media. The magnetic disc and optical disc described in this specification include compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk, and Blu-ray disc. A magnetic disc usually reproduces data magnetically, while an optical disc reproduces data optically using a laser. The combination of the aforementioned magnetic disk and optical disk should also be included in the scope of the computer-readable medium.
[00502] Инструкция может выполняться одним или несколькими процессорами, такими как один или несколько процессоров цифровых сигналов (DSP), микропроцессоры общего назначения, специализированные интегральные схемы (ASIC), программируемые вентильные матрицы (FPGA) или другие эквивалентные интегрированные или дискретные логические схемы. Следовательно, термин «процессор», используемый в этой спецификации, может быть любой из вышеупомянутых структур или другой структурой, которая используется для реализации технологий, описанных в этой спецификации. Кроме того, в некоторых аспектах функции, описанные в этой спецификации, могут быть предоставлены в рамках выделенных аппаратных и/или программных модулей, сконфигурированных для кодирования и декодирования, или могут быть включены в комбинированный кодек. Аналогичным образом, все технологии могут быть реализованы в одной или нескольких схемах или логических элементах.[00502] An instruction may be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Therefore, the term "processor" as used in this specification may be any of the above structures, or another structure that is used to implement the technologies described in this specification. In addition, in some aspects, the functions described in this specification may be provided within dedicated hardware and/or software modules configured for encoding and decoding, or may be included in a combined codec. Likewise, all technologies may be implemented in one or more circuits or logic elements.
[00503] Технологии в этой заявке могут быть реализованы в различных аппаратурах или устройствах, в том числе беспроводной мобильный телефон, интегральная схема (ИС) или набор ИС (например, набор микросхем). Различные компоненты, модули или блоки описаны в этой заявке, чтобы подчеркнуть функциональные аспекты устройства, сконфигурированного для выполнения раскрытых технологий, но не обязательно реализованы различными аппаратными блоками. Точнее, как описано выше, различные блоки могут быть объединены в аппаратный блок кодека или обеспечены взаимодействующими аппаратными блоками (включая один или несколько процессоров, описанных выше) в комбинации с соответствующим набором программного обеспечения и/или встроенного программного обеспечения.[00503] The technologies in this application may be implemented in various apparatuses or devices, including a wireless mobile phone, an integrated circuit (IC), or an IC stack (eg, a chipset). Various components, modules, or blocks are described in this application to emphasize the functional aspects of a device configured to perform the disclosed technologies, but are not necessarily implemented in different hardware blocks. More specifically, as described above, the various blocks may be combined into a codec hardware block or provided with cooperating hardware blocks (including one or more of the processors described above) in combination with an appropriate set of software and/or firmware.
[00504] Приведенные выше описания являются просто примерами конкретных реализаций этой заявки, но не предназначены для ограничения объема защиты этой заявки. Любое изменение или замена, легко обнаруживаемая специалистом в данной области техники в пределах технического объема, раскрытого в настоящей заявке, должно/должна попадать в область охраны данной заявки. Следовательно, объем охраны данной заявки подлежит защите формулой изобретения.[00504] The above descriptions are merely examples of specific implementations of this application, but are not intended to limit the scope of protection of this application. Any change or replacement readily detectable by a person skilled in the art within the technical scope disclosed in this application should/should fall within the scope of this application. Therefore, the scope of this application is protected by the claims.
Claims (37)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811268188.2 | 2018-10-29 | ||
CN201811642717.0 | 2018-12-29 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2021128424A Division RU2778993C2 (en) | 2018-10-29 | 2019-10-23 | Method and equipment for predicting video images |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2021114686A RU2021114686A (en) | 2022-11-30 |
RU2787812C2 true RU2787812C2 (en) | 2023-01-12 |
Family
ID=
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012116212A1 (en) * | 2011-02-24 | 2012-08-30 | Qualcomm Incorporated | Hierarchy of motion prediction video blocks |
US9516314B2 (en) * | 2011-06-30 | 2016-12-06 | JVC Kenwood Corporation | Picture decoding device with a motion compensation prediction |
RU2639647C2 (en) * | 2012-09-28 | 2017-12-21 | Сони Корпорейшн | Image processing device and method |
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012116212A1 (en) * | 2011-02-24 | 2012-08-30 | Qualcomm Incorporated | Hierarchy of motion prediction video blocks |
US9516314B2 (en) * | 2011-06-30 | 2016-12-06 | JVC Kenwood Corporation | Picture decoding device with a motion compensation prediction |
RU2639647C2 (en) * | 2012-09-28 | 2017-12-21 | Сони Корпорейшн | Image processing device and method |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7485839B2 (en) | Video picture prediction method and apparatus | |
CN111107356B (en) | Image prediction method and device | |
JP7164710B2 (en) | Video decoding method and video decoder | |
KR102621958B1 (en) | Candidate motion vector list acquisition method, device, encoder and decoder | |
AU2020261145B2 (en) | Picture prediction method and apparatus, and computer-readable storage medium | |
US12010293B2 (en) | Picture prediction method and apparatus, and computer-readable storage medium | |
CN111416981B (en) | Video image decoding and encoding method and device | |
KR20220003037A (en) | Inter prediction method and apparatus | |
CN111432219B (en) | Inter-frame prediction method and device | |
RU2787812C2 (en) | Method and equipment for video image prediction | |
RU2778993C2 (en) | Method and equipment for predicting video images | |
KR20210103561A (en) | Inter prediction method and apparatus | |
RU2783337C2 (en) | Method for video decoding and video decoder | |
RU2810126C2 (en) | Method and device for image prediction and computer readable data medium | |
RU2820638C2 (en) | Method for calculating position of reference sample of integer grid for calculating gradient of boundary sample of block level in calculating optical flow with dual prediction and correction with dual prediction | |
RU2787885C2 (en) | Method and equipment for mutual prediction, bit stream and non-volatile storage carrier | |
WO2020135368A1 (en) | Inter-frame prediction method and apparatus |