[go: up one dir, main page]

RU2850055C1 - Method for encoding coefficients, encoder and decoder - Google Patents

Method for encoding coefficients, encoder and decoder

Info

Publication number
RU2850055C1
RU2850055C1 RU2025111703A RU2025111703A RU2850055C1 RU 2850055 C1 RU2850055 C1 RU 2850055C1 RU 2025111703 A RU2025111703 A RU 2025111703A RU 2025111703 A RU2025111703 A RU 2025111703A RU 2850055 C1 RU2850055 C1 RU 2850055C1
Authority
RU
Russia
Prior art keywords
significant coefficient
last significant
last
flag
coefficient
Prior art date
Application number
RU2025111703A
Other languages
Russian (ru)
Inventor
Фань ВАН
Чжихуан СЕ
Original Assignee
Гуандун Оппо Мобайл Телекоммьюникейшнс Корп., Лтд.
Filing date
Publication date
Application filed by Гуандун Оппо Мобайл Телекоммьюникейшнс Корп., Лтд. filed Critical Гуандун Оппо Мобайл Телекоммьюникейшнс Корп., Лтд.
Application granted granted Critical
Publication of RU2850055C1 publication Critical patent/RU2850055C1/en

Links

Abstract

FIELD: video encoding.
SUBSTANCE: perform bitstream analysis with sequence level flag acquisition. Analyse the bitstream with acquisition of the last significant coefficient reverse position flag and information about the coordinates of the last significant coefficient when the sequence level flag indicates that the video satisfies the specified condition. When the last significant coefficient reverse position flag indicates that the position of the last significant coefficient has been reversed for the current block, determine the position of the last significant coefficient by calculating using the information about the coordinates of the last significant coefficient, wherein the coordinate information of the last significant coefficient is the horizontal distance and the vertical distance from the position of the last significant coefficient to the lower right corner of the current block. Decoding is performed according to a predetermined scanning order of all coefficients before the position of the last significant coefficient to determine the coefficients of the current block.
EFFECT: improved video encoding efficiency.
10 cl, 17 dwg, 10 tbl

Description

ОбластьRegion техники,techniques, кTo которойwhich относитсяrefers to изобретениеinvention

[1] Варианты осуществления настоящего изобретения относятся к области технологии кодирования видео, и в частности к способу кодирования коэффициентов, кодеру и декодеру.[1] Embodiments of the present invention relate to the field of video coding technology, and in particular to a coefficient coding method, an encoder and a decoder.

ПредпосылкиPrerequisites созданияcreation изобретенияinventions

[2] Области, связанные с компьютерным зрением, привлекают все больше внимания, поскольку люди требуют более высокого качества отображения видео. В последние годы технологии обработки изображений успешно применяют во всех сферах жизни. В процессе кодирования видеоизображения на стороне кодирования данные изображения, подлежащие кодированию, преобразуют и квантуют, а затем подвергают кодированию сжатия с помощью элемента кодирования энтропии, а битовый поток, сгенерированный из кодирования энтропии, будет передан на сторону декодирования. На стороне декодирования битовый поток анализируют, а затем выполняют обратное квантование и обратное преобразование, так что исходные входные данные изображения могут быть восстановлены.[2] Computer vision-related fields are attracting increasing attention as people demand higher video display quality. In recent years, image processing technologies have been successfully applied in all areas of life. In the video image coding process, the image data to be coded is transformed and quantized on the coding side, and then subjected to compression coding using an entropy coding element. The bitstream generated from the entropy coding is transmitted to the decoding side. On the decoding side, the bitstream is analyzed, and then inverse quantized and inversely transformed, so that the original input image data can be reconstructed.

[3] В настоящее время по сравнению с кодированием видео с низкой битовой глубиной, низким качеством и низкой битовой скоростью (называемым «обычным видео»), кодирование видео с высокой битовой глубиной, высоким качеством и высокой битовой скоростью (называемым «видео с тройной высокой четкостью») обычно требует кодирования большего количества больших коэффициентов. В этом случае использование существующих соответствующих решений для видео с тройной высокой четкостью может привести к большому потреблению ресурсов и нерациональному их использованию и даже повлиять на скорость и пропускную способность кодирования.[3] Currently, compared with low-bit-depth, low-quality, and low-bit-rate video encoding (referred to as "normal video"), high-bit-depth, high-quality, and high-bit-rate video encoding (referred to as "triple-HD video") typically requires encoding a larger number of large coefficients. In this case, using existing corresponding solutions for triple-HD video may result in high resource consumption and wasteful resource utilization, and even affect the encoding speed and bandwidth.

СущностьEssence изобретенияinventions

[4] В настоящем изобретении предложены способ кодирования коэффициентов, кодер и декодер, которые могут повысить пропускную способность и скорость кодирования при кодировании коэффициентов, одновременно повышая эффективность сжатия в сценариях кодирования видео с высокой битовой глубиной, высокой битовой скоростью, высоким качеством или сжатием без потерь.[4] The present invention provides a coefficient encoding method, an encoder, and a decoder that can improve the throughput and encoding speed of coefficient encoding while improving the compression efficiency in high-bit-depth, high-bit-rate, high-quality, or lossless compression video encoding scenarios.

[5] В первом аспекте настоящего изобретения предложен способ декодирования коэффициента, применяемый к декодеру и включающий:[5] In a first aspect of the present invention, there is provided a coefficient decoding method applied to a decoder and comprising:

анализ битового потока с получением флага уровня последовательности;bit stream analysis to obtain sequence level flag;

анализ битового потока с получением флага обратного положения последнего значимого коэффициента, когда флаг уровня последовательности указывает на то, что видео удовлетворяет заданному условию;analyzing the bit stream to obtain a last significant coefficient reverse position flag when the sequence level flag indicates that the video satisfies a given condition;

анализ битового потока с получением информации о префиксе горизонтальной координаты последнего значимого коэффициента, информации о префиксе вертикальной координаты последнего значимого коэффициента, информации о суффиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента;analyzing the bit stream to obtain information about the prefix of the horizontal coordinate of the last significant coefficient, information about the prefix of the vertical coordinate of the last significant coefficient, information about the suffix of the horizontal coordinate of the last significant coefficient, and information about the suffix of the vertical coordinate of the last significant coefficient;

определение горизонтальной координаты последнего значимого коэффициента согласно информации о префиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе горизонтальной координаты последнего значимого коэффициента;determining the horizontal coordinate of the last significant coefficient according to the information about the prefix of the horizontal coordinate of the last significant coefficient and the information about the suffix of the horizontal coordinate of the last significant coefficient;

определение вертикальной координаты последнего значимого коэффициента согласно информации о префиксе вертикальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента; иdetermining the vertical coordinate of the last significant coefficient according to the information about the prefix of the vertical coordinate of the last significant coefficient and the information about the suffix of the vertical coordinate of the last significant coefficient; and

определение информации о координатах последнего значимого коэффициента согласно горизонтальной координате последнего значимого коэффициента и вертикальной координате последнего значимого коэффициента;determining information about the coordinates of the last significant coefficient according to the horizontal coordinate of the last significant coefficient and the vertical coordinate of the last significant coefficient;

определение положения последнего значимого коэффициента путем вычисления с помощью информации о координатах последнего значимого коэффициента, когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока; иdetermining the position of the last significant coefficient by calculating using the coordinate information of the last significant coefficient when the last significant coefficient position reversal flag indicates that the position of the last significant coefficient is reversed for the current block; and

декодирование, согласно заданному порядку сканирования, всех коэффициентов перед положением последнего значимого коэффициента для определения коэффициентов текущего блока,decoding, according to a given scanning order, all coefficients before the position of the last significant coefficient to determine the coefficients of the current block,

при этом значение горизонтальной координаты последнего значимого коэффициента в заданном порядке сканирования в пределах текущего блока находят следующим образомin this case, the value of the horizontal coordinate of the last significant coefficient in a given scanning order within the current block is found as follows

если last_sig_coeff_x_suffix не присутствует, то:if last_sig_coeff_x_suffix is not present, then:

LastSignificantCoeffX = last_sig_coeff_x_prefix;LastSignificantCoeffX = last_sig_coeff_x_prefix;

если last_sig_coeff_x_suffix присутствует, то:if last_sig_coeff_x_suffix is present, then:

LastSignificantCoeffX = (1<<((last_sig_coeff_x_prefix>>1) -1)) * (2+(last_ sig_coeff_x_prefix&1)) + last_sig_coeff_x_suffix; иLastSignificantCoeffX = (1<<((last_sig_coeff_x_prefix>>1) -1)) * (2+(last_ sig_coeff_x_prefix&1)) + last_sig_coeff_x_suffix; And

если reverse_last_sig_coeff_flag равен 1, то:if reverse_last_sig_coeff_flag is 1, then:

LastSignificantCoeffX = (1<<log2ZoTbWidth) -1-LastSignificantCoeffX; иLastSignificantCoeffX = (1<<log2ZoTbWidth) -1-LastSignificantCoeffX; And

значение вертикальной координаты последнего значимого коэффициента в заданном порядке сканирования в пределах текущего блока находят следующим образом:the value of the vertical coordinate of the last significant coefficient in a given scanning order within the current block is found as follows:

если last_sig_coeff_y_suffix не присутствует, то:if last_sig_coeff_y_suffix is not present, then:

LastSignificantCoeffY = last_sig_coeff_y_prefix;LastSignificantCoeffY = last_sig_coeff_y_prefix;

если last_sig_coeff_y_suffix присутствует, то:if last_sig_coeff_y_suffix is present, then:

LastSignificantCoeffY= (1<<((last_sig_coeff_y_prefix>>1) -1)) * (2+(last_sig_coeff_y_prefix&1)) + last_sig_coeff_y_suffix; иLastSignificantCoeffY= (1<<((last_sig_coeff_y_prefix>>1) -1)) * (2+(last_sig_coeff_y_prefix&1)) + last_sig_coeff_y_suffix; And

если reverse_last_sig_coeff_flag равен 1, то:if reverse_last_sig_coeff_flag is 1, then:

LastSignificantCoeffY= (1<<log2ZoTbHeight) -1-LastSignificantCoeffY;LastSignificantCoeffY= (1<<log2ZoTbHeight) -1-LastSignificantCoeffY;

при этом (1<<log2ZoTbWidth) представляет ширину блока преобразования после нулевого вывода, (1<<log2ZoTbHeight) представляет высоту блока преобразования после нулевого вывода, LastSignificantCoeffX представляет значение горизонтальной координаты последнего значимого коэффициента в заданном порядке сканирования в пределах текущего блока, LastSignificantCoeffY представляет значение вертикальной координаты последнего значимого коэффициента в заданном порядке сканирования в пределах текущего блока, last_sig_coeff_x_prefix представляет информацию о префиксе горизонтальной координаты последнего значимого коэффициента, last_sig_coeff_y_prefix представляет информацию о префиксе вертикальной координаты последнего значимого коэффициента, last_sig_coeff_x_suffix представляет информацию о суффиксе горизонтальной координаты последнего значимого коэффициента, the last_sig_coeff_y_suffix представляет информацию о суффиксе вертикальной координаты последнего значимого коэффициента и reverse_last_sig_coeff_flag представляет флаг обратного положения последнего значимого коэффициента.wherein (1<<log2ZoTbWidth) represents the width of the transformation block after zero output, (1<<log2ZoTbHeight) represents the height of the transformation block after zero output, LastSignificantCoeffX represents the value of the horizontal coordinate of the last significant coefficient in the given scan order within the current block, LastSignificantCoeffY represents the value of the vertical coordinate of the last significant coefficient in the given scan order within the current block, last_sig_coeff_x_prefix represents the information of the prefix of the horizontal coordinate of the last significant coefficient, last_sig_coeff_y_prefix represents the information of the prefix of the vertical coordinate of the last significant coefficient, last_sig_coeff_x_suffix represents the information of the suffix of the horizontal coordinate of the last significant coefficient, the last_sig_coeff_y_suffix represents the information of the suffix of the vertical coordinate of the last significant coefficient, and reverse_last_sig_coeff_flag represents the flag of the reverse position of the last significant coefficient.

[6] В одном варианте осуществления способ дополнительно включает:[6] In one embodiment, the method further comprises:

определение положения последнего значимого коэффициента непосредственно согласно информации о координатах последнего значимого коэффициента, когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента не изменено на обратное для текущего блока; иdetermining the position of the last significant coefficient directly according to the coordinate information of the last significant coefficient, when the last significant coefficient position reversal flag indicates that the position of the last significant coefficient is not reversed for the current block; and

декодирование, согласно заданному порядку сканирования, всех коэффициентов перед положением последнего значимого коэффициента для определения коэффициентов текущего блока.decoding, according to a given scanning order, all coefficients before the position of the last significant coefficient to determine the coefficients of the current block.

[7] В еще одном варианте осуществления способ дополнительно включает:[7] In another embodiment, the method further comprises:

когда флаг уровня последовательности имеет первое значение, определение того, что флаг уровня последовательности указывает на то, что видео удовлетворяет заданному условию; илиwhen the sequence level flag has the first value, determining that the sequence level flag indicates that the video satisfies a specified condition; or

когда флаг уровня последовательности имеет второе значение, определение того, что флаг уровня последовательности указывает на то, что видео не удовлетворяет заданному условию.when the sequence level flag has a second value, determining that the sequence level flag indicates that the video does not satisfy the specified condition.

[8] В еще одном варианте осуществления заданное условие включает по меньшей мере одно из: высокой битовой глубины, высокого качества, высокой битовой скорости, высокой кадровой частоты или сжатия без потерь.[8] In another embodiment, the specified condition includes at least one of: high bit depth, high quality, high bit rate, high frame rate, or lossless compression.

[9] В еще одном варианте осуществления способ дополнительно включает:[9] In another embodiment, the method further comprises:

когда флаг обратного положения последнего значимого коэффициента имеет первое значение, определение того, что флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока; илиwhen the last significant coefficient position reverse flag has the first value, determining that the last significant coefficient position reverse flag indicates that the position of the last significant coefficient has been reversed for the current block; or

когда флаг обратного положения последнего значимого коэффициента имеет второе значение, определение того, что флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента не изменено на обратное для текущего блока.when the last significant coefficient position reverse flag has the second value, determining that the last significant coefficient position reverse flag indicates that the position of the last significant coefficient is not reversed for the current block.

[10] В еще одном варианте осуществления способ дополнительно включает:[10] In another embodiment, the method further comprises:

определение информации о координатах последнего значимого коэффициента как расстояния по горизонтали и расстояния по вертикали от положения последнего значимого коэффициента до нижнего правого угла текущего блока, когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока; иdetermining the coordinate information of the last significant coefficient as a horizontal distance and a vertical distance from the position of the last significant coefficient to the lower right corner of the current block, when the last significant coefficient position reversal flag indicates that the position of the last significant coefficient is reversed for the current block; and

соответственно, определение положения последнего значимого коэффициента путем вычисления с помощью информации о координатах последнего значимого коэффициента включает:accordingly, determining the position of the last significant coefficient by calculating using information about the coordinates of the last significant coefficient includes:

определение ширины и высоты текущего блока;defining the width and height of the current block;

получение горизонтальной координаты последнего значимого коэффициента путем вычитания из ширины текущего блока расстояния по горизонтали от положения последнего значимого коэффициента до нижнего правого угла текущего блока;obtaining the horizontal coordinate of the last significant coefficient by subtracting from the width of the current block the horizontal distance from the position of the last significant coefficient to the lower right corner of the current block;

получение вертикальной координаты последнего значимого коэффициента путем вычитания из высоты текущего блока расстояния по вертикали от положения последнего значимого коэффициента до нижнего правого угла текущего блока; иobtaining the vertical coordinate of the last significant coefficient by subtracting from the height of the current block the vertical distance from the position of the last significant coefficient to the lower right corner of the current block; and

определение положения последнего значимого коэффициента согласно горизонтальной координате последнего значимого коэффициента и вертикальной координате последнего значимого коэффициента.determining the position of the last significant coefficient according to the horizontal coordinate of the last significant coefficient and the vertical coordinate of the last significant coefficient.

[11] В еще одном варианте осуществления способ дополнительно включает:[11] In another embodiment, the method further comprises:

определение информации о координатах последнего значимого коэффициента как расстояния по горизонтали и расстояния по вертикали от положения последнего значимого коэффициента до верхнего левого угла текущего блока, когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента не изменено на обратное для текущего блока; иdetermining the coordinate information of the last significant coefficient as a horizontal distance and a vertical distance from the position of the last significant coefficient to the upper left corner of the current block, when the last significant coefficient position reversal flag indicates that the position of the last significant coefficient is not reversed for the current block; and

определение положения последнего значимого коэффициента согласно расстоянию по горизонтали и расстоянию по вертикали от положения последнего значимого коэффициента до верхнего левого угла текущего блока.determining the position of the last significant coefficient according to the horizontal distance and vertical distance from the position of the last significant coefficient to the upper left corner of the current block.

[12] В еще одном варианте осуществления флаг обратного положения последнего значимого коэффициента является по меньшей мере флагом одного из: уровня последовательности, уровня изображения, уровня слайса или уровня блока.[12] In another embodiment, the last significant coefficient reverse position flag is at least one of a sequence level, a picture level, a slice level, or a block level flag.

[13] Во втором аспекте настоящего изобретения предложен способ кодирования коэффициента, применяемый к кодеру и включающий:[13] In a second aspect of the present invention, there is provided a coefficient encoding method applied to an encoder and comprising:

определение флага уровня последовательности и положения последнего значимого коэффициента;determination of the sequence level flag and the position of the last significant coefficient;

определение флага обратного положения последнего значимого коэффициента, когда флаг уровня последовательности указывает на то, что видео удовлетворяет заданному условию;determining a flag of the reverse position of the last significant coefficient when the sequence level flag indicates that the video satisfies a given condition;

определение информации о координатах последнего значимого коэффициента согласно положению последнего значимого коэффициента и флагу обратного положения последнего значимого коэффициента; determining information about the coordinates of the last significant coefficient according to the position of the last significant coefficient and the flag of the reverse position of the last significant coefficient;

определение информации о префиксе горизонтальной координаты последнего значимого коэффициента, информации о префиксе вертикальной координаты последнего значимого коэффициента, информации о суффиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента согласно информации о координатах последнего значимого коэффициента; иdetermining the information about the prefix of the horizontal coordinate of the last significant coefficient, the information about the prefix of the vertical coordinate of the last significant coefficient, the information about the suffix of the horizontal coordinate of the last significant coefficient and the information about the suffix of the vertical coordinate of the last significant coefficient according to the information about the coordinates of the last significant coefficient; and

кодирование всех коэффициентов перед положением последнего значимого коэффициента согласно заданному порядку сканирования и предоставление битовой информации, полученной посредством кодирования, флага уровня последовательности, информации о префиксе горизонтальной координаты последнего значимого коэффициента, информации о префиксе вертикальной координаты последнего значимого коэффициента, информации о суффиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента в битовый поток,encoding all coefficients before the position of the last significant coefficient according to a given scanning order and providing bit information obtained by encoding a sequence level flag, information about a prefix of a horizontal coordinate of the last significant coefficient, information about a prefix of a vertical coordinate of the last significant coefficient, information about a suffix of a horizontal coordinate of the last significant coefficient and information about a suffix of a vertical coordinate of the last significant coefficient to a bit stream,

при этом значение горизонтальной координаты последнего значимого коэффициента в заданном порядке сканирования в пределах текущего блока находят следующим образом:in this case, the value of the horizontal coordinate of the last significant coefficient in a given scanning order within the current block is found as follows:

если last_sig_coeff_x_suffix не присутствует, то:if last_sig_coeff_x_suffix is not present, then:

LastSignificantCoeffX = last_sig_coeff_x_prefix;LastSignificantCoeffX = last_sig_coeff_x_prefix;

если last_sig_coeff_x_suffix присутствует, то:if last_sig_coeff_x_suffix is present, then:

LastSignificantCoeffX = (1<<((last_sig_coeff_x_prefix>>1) -1)) * (2+(last_ sig_coeff_x_prefix&1)) + last_sig_coeff_x_suffix; иLastSignificantCoeffX = (1<<((last_sig_coeff_x_prefix>>1) -1)) * (2+(last_ sig_coeff_x_prefix&1)) + last_sig_coeff_x_suffix; And

если reverse_last_sig_coeff_flag равен 1, то:if reverse_last_sig_coeff_flag is 1, then:

LastSignificantCoeffX = (1<<log2ZoTbWidth) -1-LastSignificantCoeffX; иLastSignificantCoeffX = (1<<log2ZoTbWidth) -1-LastSignificantCoeffX; And

значение вертикальной координаты последнего значимого коэффициента в заданном порядке сканирования в пределах текущего блока находят следующим образом:the value of the vertical coordinate of the last significant coefficient in a given scanning order within the current block is found as follows:

если last_sig_coeff_y_suffix не присутствует, то:if last_sig_coeff_y_suffix is not present, then:

LastSignificantCoeffY = last_sig_coeff_y_prefix;LastSignificantCoeffY = last_sig_coeff_y_prefix;

если last_sig_coeff_y_suffix присутствует, то:if last_sig_coeff_y_suffix is present, then:

LastSignificantCoeffY= (1<<((last_sig_coeff_y_prefix>>1) -1)) * (2+(last_sig_coeff_y_prefix&1)) + last_sig_coeff_y_suffix; иLastSignificantCoeffY= (1<<((last_sig_coeff_y_prefix>>1) -1)) * (2+(last_sig_coeff_y_prefix&1)) + last_sig_coeff_y_suffix; And

если reverse_last_sig_coeff_flag равен 1, то:if reverse_last_sig_coeff_flag is 1, then:

LastSignificantCoeffY= (1<<log2ZoTbHeight) -1-LastSignificantCoeffY;LastSignificantCoeffY= (1<<log2ZoTbHeight) -1-LastSignificantCoeffY;

при этом (1<<log2ZoTbWidth) представляет ширину блока преобразования после нулевого вывода, (1<<log2ZoTbHeight) представляет высоту блока преобразования после нулевого вывода, LastSignificantCoeffX представляет значение горизонтальной координаты последнего значимого коэффициента в заданном порядке сканирования в пределах текущего блока, LastSignificantCoeffY представляет значение вертикальной координаты последнего значимого коэффициента в заданном порядке сканирования в пределах текущего блока, last_sig_coeff_x_prefix представляет информацию о префиксе горизонтальной координаты последнего значимого коэффициента, last_sig_coeff_y_prefix представляет информацию о префиксе вертикальной координаты последнего значимого коэффициента, last_sig_coeff_x_suffix представляет информацию о суффиксе горизонтальной координаты последнего значимого коэффициента, the last_sig_coeff_y_suffix представляет информацию о суффиксе вертикальной координаты последнего значимого коэффициента и reverse_last_sig_coeff_flag представляет флаг обратного положения последнего значимого коэффициента.wherein (1<<log2ZoTbWidth) represents the width of the transformation block after zero output, (1<<log2ZoTbHeight) represents the height of the transformation block after zero output, LastSignificantCoeffX represents the value of the horizontal coordinate of the last significant coefficient in the given scan order within the current block, LastSignificantCoeffY represents the value of the vertical coordinate of the last significant coefficient in the given scan order within the current block, last_sig_coeff_x_prefix represents the information of the prefix of the horizontal coordinate of the last significant coefficient, last_sig_coeff_y_prefix represents the information of the prefix of the vertical coordinate of the last significant coefficient, last_sig_coeff_x_suffix represents the information of the suffix of the horizontal coordinate of the last significant coefficient, the last_sig_coeff_y_suffix represents the information of the suffix of the vertical coordinate of the last significant coefficient, and reverse_last_sig_coeff_flag represents the flag of the reverse position of the last significant coefficient.

[14] В одном варианте осуществления определение флага уровня последовательности включает:[14] In one embodiment, defining a sequence level flag includes:

определение флага уровня последовательности как первого значения, когда видео удовлетворяет заданному условию; илиdefining a sequence level flag as the first value when the video satisfies a given condition; or

определение флага уровня последовательности как второго значения, когда видео не удовлетворяет заданному условию.defining a sequence level flag as a second value when the video does not satisfy a given condition.

[15] В еще одном варианте осуществления заданное условие включает по меньшей мере одно из: высокой битовой глубины, высокого качества, высокой битовой скорости, высокой кадровой частоты или сжатия без потерь.[15] In another embodiment, the specified condition includes at least one of: high bit depth, high quality, high bit rate, high frame rate, or lossless compression.

[16] В еще одном варианте осуществления определение флага обратного положения последнего значимого коэффициента включает:[16] In another embodiment, determining the last significant coefficient reverse position flag includes:

определение флага обратного положения последнего значимого коэффициента как первого значения, когда положение последнего значимого коэффициента изменено на обратное для текущего блока; илиdefining the last significant coefficient position reversal flag as the first value when the last significant coefficient position is reversed for the current block; or

определение флага обратного положения последнего значимого коэффициента как второго значения, когда положение последнего значимого коэффициента не изменено на обратное для текущего блока.defining the last significant coefficient position reversal flag as the second value when the last significant coefficient position is not reversed for the current block.

[17] В еще одном варианте осуществления положение последнего значимого коэффициента содержит начальную горизонтальную координату и начальную вертикальную координату последнего значимого коэффициента, при этом начальная горизонтальная координата представляет собой расстояние по горизонтали от положения последнего значимого коэффициента до верхнего левого угла текущего блока, а начальная вертикальная координата представляет собой расстояние по вертикали от положения последнего значимого коэффициента до левого верхнего угла текущего блока; и[17] In another embodiment, the position of the last significant coefficient comprises an initial horizontal coordinate and an initial vertical coordinate of the last significant coefficient, wherein the initial horizontal coordinate is a horizontal distance from the position of the last significant coefficient to the upper left corner of the current block, and the initial vertical coordinate is a vertical distance from the position of the last significant coefficient to the upper left corner of the current block; and

соответственно, определение информации о координатах последнего значимого коэффициента согласно положению последнего значимого коэффициента и флагу обратного положения последнего значимого коэффициента включает:accordingly, determining the information about the coordinates of the last significant coefficient according to the position of the last significant coefficient and the flag of the reverse position of the last significant coefficient includes:

когда флаг обратного положения последнего значимого коэффициента имеет первое значение, определение информации о координатах последнего значимого коэффициента посредством вычисления согласно начальной горизонтальной координате и начальной вертикальной координате последнего значимого коэффициента; или when the last significant coefficient reverse position flag has the first value, determining the coordinate information of the last significant coefficient by calculating according to the initial horizontal coordinate and the initial vertical coordinate of the last significant coefficient; or

когда флаг обратного положения последнего значимого коэффициента имеет второе значение, определение информации о координатах последнего значимого коэффициента непосредственно согласно начальной горизонтальной координате и начальной вертикальной координате последнего значимого коэффициента.when the last significant coefficient reverse position flag has the second value, determining the coordinate information of the last significant coefficient directly according to the initial horizontal coordinate and the initial vertical coordinate of the last significant coefficient.

[18] В еще одном варианте осуществления определение информации о координатах последнего значимого коэффициента путем вычисления согласно начальной горизонтальной координате и начальной вертикальной координате последнего значимого коэффициента включает:[18] In another embodiment, determining the coordinate information of the last significant coefficient by calculating according to the initial horizontal coordinate and the initial vertical coordinate of the last significant coefficient includes:

определение ширины и высоты текущего блока;defining the width and height of the current block;

получение горизонтальной координаты последнего значимого коэффициента путем вычитания начальной горизонтальной координаты последнего значимого коэффициента из ширины текущего блока;obtaining the horizontal coordinate of the last significant coefficient by subtracting the initial horizontal coordinate of the last significant coefficient from the width of the current block;

получение вертикальной координаты последнего значимого коэффициента путем вычитания начальной вертикальной координаты последнего значимого коэффициента из высоты текущего блока; иobtaining the vertical coordinate of the last significant coefficient by subtracting the initial vertical coordinate of the last significant coefficient from the height of the current block; and

определение информации о координатах последнего значимого коэффициента согласно горизонтальной координате последнего значимого коэффициента и вертикальной координате последнего значимого коэффициента.determining information about the coordinates of the last significant coefficient according to the horizontal coordinate of the last significant coefficient and the vertical coordinate of the last significant coefficient.

[19] В еще одном варианте осуществления способ дополнительно включает:[19] In another embodiment, the method further comprises:

когда флаг обратного положения последнего значимого коэффициента имеет первое значение, определение информации о координатах последнего значимого коэффициента как расстояния по горизонтали и расстояния по вертикали от положения последнего значимого коэффициента до нижнего правого угла текущего блока; илиwhen the last significant coefficient reverse position flag has the first value, defining the coordinate information of the last significant coefficient as the horizontal distance and the vertical distance from the position of the last significant coefficient to the lower right corner of the current block; or

когда флаг обратного положения последнего значимого коэффициента имеет второе значение, определение информации о координатах последнего значимого коэффициента как расстояния по горизонтали и расстояния по вертикали от положения последнего значимого коэффициента до верхнего левого угла текущего блока.when the last significant coefficient reverse position flag has the second value, defining the coordinate information of the last significant coefficient as the horizontal distance and the vertical distance from the position of the last significant coefficient to the upper left corner of the current block.

[20] В третьем аспекте настоящего изобретения предложен кодер, содержащий процессор и запоминающее устройство хранящее компьютерную программу, которая при исполнении процессором вызывает выполнение процессором следующего:[20] In a third aspect of the present invention, there is provided an encoder comprising a processor and a memory device storing a computer program that, when executed by the processor, causes the processor to perform the following:

определения флага уровня последовательности и положения последнего значимого коэффициента;definitions of the sequence level flag and the position of the last significant coefficient;

определения флага обратного положения последнего значимого коэффициента, когда флаг уровня последовательности указывает на то, что видео удовлетворяет заданному условию;determining the flag of the reverse position of the last significant coefficient when the sequence level flag indicates that the video satisfies a given condition;

определения информации о координатах последнего значимого коэффициента согласно положению последнего значимого коэффициента и флагу обратного положения последнего значимого коэффициента;determining information about the coordinates of the last significant coefficient according to the position of the last significant coefficient and the flag of the reverse position of the last significant coefficient;

определения информации о префиксе горизонтальной координаты последнего значимого коэффициента, информации о префиксе вертикальной координаты последнего значимого коэффициента, информации о суффиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента согласно информации о координатах последнего значимого коэффициента; иdetermining the information about the prefix of the horizontal coordinate of the last significant coefficient, the information about the prefix of the vertical coordinate of the last significant coefficient, the information about the suffix of the horizontal coordinate of the last significant coefficient and the information about the suffix of the vertical coordinate of the last significant coefficient according to the information about the coordinates of the last significant coefficient; and

кодирования всех коэффициентов перед положением последнего значимого коэффициента согласно заданному порядку сканирования и предоставления битовой информации, полученной посредством кодирования, флага уровня последовательности, информации о префиксе горизонтальной координаты последнего значимого коэффициента, информации о префиксе вертикальной координаты последнего значимого коэффициента, информации о суффиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента в битовый поток,encoding all coefficients before the position of the last significant coefficient according to a given scanning order and providing bit information obtained by encoding, a sequence level flag, information about the prefix of the horizontal coordinate of the last significant coefficient, information about the prefix of the vertical coordinate of the last significant coefficient, information about the suffix of the horizontal coordinate of the last significant coefficient and information about the suffix of the vertical coordinate of the last significant coefficient into a bit stream,

при этом значение горизонтальной координаты последнего значимого коэффициента в заданном порядке сканирования в пределах текущего блока находят следующим образом:in this case, the value of the horizontal coordinate of the last significant coefficient in a given scanning order within the current block is found as follows:

если last_sig_coeff_x_suffix не присутствует, то:if last_sig_coeff_x_suffix is not present, then:

LastSignificantCoeffX = last_sig_coeff_x_prefix;LastSignificantCoeffX = last_sig_coeff_x_prefix;

если last_sig_coeff_x_suffix присутствует, то:if last_sig_coeff_x_suffix is present, then:

LastSignificantCoeffX = (1<<((last_sig_coeff_x_prefix>>1) -1)) * (2+(last_ sig_coeff_x_prefix&1)) + last_sig_coeff_x_suffix; иLastSignificantCoeffX = (1<<((last_sig_coeff_x_prefix>>1) -1)) * (2+(last_ sig_coeff_x_prefix&1)) + last_sig_coeff_x_suffix; And

если reverse_last_sig_coeff_flag равен 1, то:if reverse_last_sig_coeff_flag is 1, then:

LastSignificantCoeffX = (1<<log2ZoTbWidth) -1-LastSignificantCoeffX; иLastSignificantCoeffX = (1<<log2ZoTbWidth) -1-LastSignificantCoeffX; And

значение вертикальной координаты последнего значимого коэффициента в заданном порядке сканирования в пределах текущего блока находят следующим образом:the value of the vertical coordinate of the last significant coefficient in a given scanning order within the current block is found as follows:

если last_sig_coeff_y_suffix не присутствует, то:if last_sig_coeff_y_suffix is not present, then:

LastSignificantCoeffY = last_sig_coeff_y_prefix;LastSignificantCoeffY = last_sig_coeff_y_prefix;

если last_sig_coeff_y_suffix присутствует, то:if last_sig_coeff_y_suffix is present, then:

LastSignificantCoeffY= (1<<((last_sig_coeff_y_prefix>>1) -1)) * (2+(last_sig_coeff_y_prefix&1)) + last_sig_coeff_y_suffix; иLastSignificantCoeffY= (1<<((last_sig_coeff_y_prefix>>1) -1)) * (2+(last_sig_coeff_y_prefix&1)) + last_sig_coeff_y_suffix; And

если reverse_last_sig_coeff_flag равен 1, то:if reverse_last_sig_coeff_flag is 1, then:

LastSignificantCoeffY= (1<<log2ZoTbHeight) -1-LastSignificantCoeffY;LastSignificantCoeffY= (1<<log2ZoTbHeight) -1-LastSignificantCoeffY;

при этом (1<<log2ZoTbWidth) представляет ширину блока преобразования после нулевого вывода, (1<<log2ZoTbHeight) представляет высоту блока преобразования после нулевого вывода, LastSignificantCoeffX представляет значение горизонтальной координаты последнего значимого коэффициента в заданном порядке сканирования в пределах текущего блока, LastSignificantCoeffY представляет значение вертикальной координаты последнего значимого коэффициента в заданном порядке сканирования в пределах текущего блока, last_sig_coeff_x_prefix представляет информацию о префиксе горизонтальной координаты последнего значимого коэффициента, last_sig_coeff_y_prefix представляет информацию о префиксе вертикальной координаты последнего значимого коэффициента, last_sig_coeff_x_suffix представляет информацию о суффиксе горизонтальной координаты последнего значимого коэффициента, the last_sig_coeff_y_suffix представляет информацию о суффиксе вертикальной координаты последнего значимого коэффициента и reverse_last_sig_coeff_flag представляет флаг обратного положения последнего значимого коэффициента.wherein (1<<log2ZoTbWidth) represents the width of the transformation block after zero output, (1<<log2ZoTbHeight) represents the height of the transformation block after zero output, LastSignificantCoeffX represents the value of the horizontal coordinate of the last significant coefficient in the given scan order within the current block, LastSignificantCoeffY represents the value of the vertical coordinate of the last significant coefficient in the given scan order within the current block, last_sig_coeff_x_prefix represents the information of the prefix of the horizontal coordinate of the last significant coefficient, last_sig_coeff_y_prefix represents the information of the prefix of the vertical coordinate of the last significant coefficient, last_sig_coeff_x_suffix represents the information of the suffix of the horizontal coordinate of the last significant coefficient, the last_sig_coeff_y_suffix represents the information of the suffix of the vertical coordinate of the last significant coefficient, and reverse_last_sig_coeff_flag represents the flag of the reverse position of the last significant coefficient.

[21] В четвертом аспекте настоящего изобретения предложен декодер, содержащий процессор и запоминающее устройство хранящее компьютерную программу, которая при исполнении процессором вызывает выполнение процессором следующего:[21] In a fourth aspect of the present invention, a decoder is provided, comprising a processor and a memory device storing a computer program that, when executed by the processor, causes the processor to perform the following:

анализа битового потока с получением флага уровня последовательности;bit stream analysis to obtain a sequence level flag;

анализа битового потока с получением флага обратного положения последнего значимого коэффициента, когда флаг уровня последовательности указывает на то, что видео удовлетворяет заданному условию;analyzing the bit stream to obtain a flag of the reverse position of the last significant coefficient when the sequence level flag indicates that the video satisfies a given condition;

анализа битового потока с получением информации о префиксе горизонтальной координаты последнего значимого коэффициента, информации о префиксе вертикальной координаты последнего значимого коэффициента, информации о суффиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента;analyzing the bit stream to obtain information about the prefix of the horizontal coordinate of the last significant coefficient, information about the prefix of the vertical coordinate of the last significant coefficient, information about the suffix of the horizontal coordinate of the last significant coefficient, and information about the suffix of the vertical coordinate of the last significant coefficient;

определения горизонтальной координаты последнего значимого коэффициента согласно информации о префиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе горизонтальной координаты последнего значимого коэффициента;determining the horizontal coordinate of the last significant coefficient according to the information about the prefix of the horizontal coordinate of the last significant coefficient and the information about the suffix of the horizontal coordinate of the last significant coefficient;

определения вертикальной координаты последнего значимого коэффициента согласно информации о префиксе вертикальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента; иdetermining the vertical coordinate of the last significant coefficient according to the information on the prefix of the vertical coordinate of the last significant coefficient and the information on the suffix of the vertical coordinate of the last significant coefficient; and

определения информации о координатах последнего значимого коэффициента согласно горизонтальной координате последнего значимого коэффициента и вертикальной координате последнего значимого коэффициента;determining information about the coordinates of the last significant coefficient according to the horizontal coordinate of the last significant coefficient and the vertical coordinate of the last significant coefficient;

определения положения последнего значимого коэффициента путем вычисления с помощью информации о координатах последнего значимого коэффициента, когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока; иdetermining the position of the last significant coefficient by calculating using the coordinate information of the last significant coefficient when the last significant coefficient position reversal flag indicates that the position of the last significant coefficient is reversed for the current block; and

декодирования, согласно заданному порядку сканирования, всех коэффициентов перед положением последнего значимого коэффициента для определения коэффициентов текущего блока,decoding, according to a given scanning order, all coefficients before the position of the last significant coefficient to determine the coefficients of the current block,

при этом значение горизонтальной координаты последнего значимого коэффициента в заданном порядке сканирования в пределах текущего блока находят следующим образомin this case, the value of the horizontal coordinate of the last significant coefficient in a given scanning order within the current block is found as follows

если last_sig_coeff_x_suffix не присутствует, то:if last_sig_coeff_x_suffix is not present, then:

LastSignificantCoeffX = last_sig_coeff_x_prefix;LastSignificantCoeffX = last_sig_coeff_x_prefix;

если last_sig_coeff_x_suffix присутствует, то:if last_sig_coeff_x_suffix is present, then:

LastSignificantCoeffX = (1<<((last_sig_coeff_x_prefix>>1) -1)) * (2+(last_ sig_coeff_x_prefix&1)) + last_sig_coeff_x_suffix; иLastSignificantCoeffX = (1<<((last_sig_coeff_x_prefix>>1) -1)) * (2+(last_ sig_coeff_x_prefix&1)) + last_sig_coeff_x_suffix; And

если reverse_last_sig_coeff_flag равен 1, то:if reverse_last_sig_coeff_flag is 1, then:

LastSignificantCoeffX = (1<<log2ZoTbWidth) -1-LastSignificantCoeffX; иLastSignificantCoeffX = (1<<log2ZoTbWidth) -1-LastSignificantCoeffX; And

значение вертикальной координаты последнего значимого коэффициента в заданном порядке сканирования в пределах текущего блока находят следующим образом:the value of the vertical coordinate of the last significant coefficient in a given scanning order within the current block is found as follows:

если last_sig_coeff_y_suffix не присутствует, то:if last_sig_coeff_y_suffix is not present, then:

LastSignificantCoeffY = last_sig_coeff_y_prefix;LastSignificantCoeffY = last_sig_coeff_y_prefix;

если last_sig_coeff_y_suffix присутствует, то:if last_sig_coeff_y_suffix is present, then:

LastSignificantCoeffY= (1<<((last_sig_coeff_y_prefix>>1) -1)) * (2+(last_sig_coeff_y_prefix&1)) + last_sig_coeff_y_suffix; иLastSignificantCoeffY= (1<<((last_sig_coeff_y_prefix>>1) -1)) * (2+(last_sig_coeff_y_prefix&1)) + last_sig_coeff_y_suffix; And

если reverse_last_sig_coeff_flag равен 1, то:if reverse_last_sig_coeff_flag is 1, then:

LastSignificantCoeffY= (1<<log2ZoTbHeight) -1-LastSignificantCoeffY;LastSignificantCoeffY= (1<<log2ZoTbHeight) -1-LastSignificantCoeffY;

при этом (1<<log2ZoTbWidth) представляет ширину блока преобразования после нулевого вывода, (1<<log2ZoTbHeight) представляет высоту блока преобразования после нулевого вывода, LastSignificantCoeffX представляет значение горизонтальной координаты последнего значимого коэффициента в заданном порядке сканирования в пределах текущего блока, LastSignificantCoeffY представляет значение вертикальной координаты последнего значимого коэффициента в заданном порядке сканирования в пределах текущего блока, last_sig_coeff_x_prefix представляет информацию о префиксе горизонтальной координаты последнего значимого коэффициента, last_sig_coeff_y_prefix представляет информацию о префиксе вертикальной координаты последнего значимого коэффициента, last_sig_coeff_x_suffix представляет информацию о суффиксе горизонтальной координаты последнего значимого коэффициента, the last_sig_coeff_y_suffix представляет информацию о суффиксе вертикальной координаты последнего значимого коэффициента и reverse_last_sig_coeff_flag представляет флаг обратного положения последнего значимого коэффициента.wherein (1<<log2ZoTbWidth) represents the width of the transformation block after zero output, (1<<log2ZoTbHeight) represents the height of the transformation block after zero output, LastSignificantCoeffX represents the value of the horizontal coordinate of the last significant coefficient in the given scan order within the current block, LastSignificantCoeffY represents the value of the vertical coordinate of the last significant coefficient in the given scan order within the current block, last_sig_coeff_x_prefix represents the information of the prefix of the horizontal coordinate of the last significant coefficient, last_sig_coeff_y_prefix represents the information of the prefix of the vertical coordinate of the last significant coefficient, last_sig_coeff_x_suffix represents the information of the suffix of the horizontal coordinate of the last significant coefficient, the last_sig_coeff_y_suffix represents the information of the suffix of the vertical coordinate of the last significant coefficient, and reverse_last_sig_coeff_flag represents the flag of the reverse position of the last significant coefficient.

КраткоеBrief описаниеdescription графическихgraphic материаловmaterials

[22] На фиг. 1 представлено схематическое изображение применения структуры кодирования, представленной в известном уровне техники.[22] Fig. 1 shows a schematic representation of the application of the coding structure presented in the prior art.

[23] На фиг. 2 представлено схематическое изображение, иллюстрирующее соотношение положения между текущим коэффициентом и соседними коэффициентами, представленными в известном уровне техники.[23] Fig. 2 is a schematic diagram illustrating the position relationship between the current coefficient and the neighboring coefficients presented in the prior art.

[24] На фиг. 3 представлена схематическая блок-схема процесса арифметического декодирования для двоичного числа, представленного в известном уровне техники.[24] Fig. 3 is a schematic block diagram of the arithmetic decoding process for a binary number as presented in the prior art.

[25] На фиг. 4 представлена схематическая блок-схема процесса арифметического декодирования для двоичного решения, представленного в известном уровне техники.[25] Fig. 4 is a schematic block diagram of the arithmetic decoding process for a binary solution presented in the prior art.

[26] На фиг. 5 представлена схематическая блок-схема перенормировки движка арифметического декодирования, представленного в известном уровне техники.[26] Fig. 5 shows a schematic block diagram of the renormalization of the arithmetic decoding engine presented in the prior art.

[27] На фиг. 6 представлена схематическая блок-схема процесса обходного декодирования, представленного в известном уровне техники.[27] Fig. 6 is a schematic block diagram of the bypass decoding process presented in the prior art.

[28] На фиг. 7 представлено схематическое изображение, иллюстрирующее соотношение положения между областью, которая может иметь значимые коэффициенты, и областью нулевого вывода, представленной в известном уровне техники.[28] Fig. 7 is a schematic diagram illustrating the position relationship between the region that may have significant coefficients and the zero output region presented in the prior art.

[29] На фиг. 8A представлено схематическое изображение состава системы кодера, представленного в вариантах осуществления настоящего изобретения.[29] Fig. 8A is a schematic diagram of the composition of the encoder system provided in embodiments of the present invention.

[30] На фиг. 8B представлено схематическое изображение состава системы декодера, представленного в вариантах осуществления настоящего изобретения.[30] Fig. 8B is a schematic diagram of the composition of a decoder system as provided in embodiments of the present invention.

[31] На фиг. 9 представлена схематическая блок-схема способа декодирования коэффициента, предоставленного в вариантах осуществления настоящего изобретения.[31] Fig. 9 is a schematic flow chart of a coefficient decoding method provided in embodiments of the present invention.

[32] На фиг. 10A представлено схематическое изображение положения последнего значимого коэффициента относительно верхнего левого угла текущего блока, представленного в вариантах осуществления настоящего изобретения.[32] Fig. 10A is a schematic diagram of the position of the last significant coefficient relative to the upper left corner of the current block, as shown in embodiments of the present invention.

[33] На фиг. 10B представлено схематическое изображение положения последнего значимого коэффициента относительно нижнего правого угла текущего блока, представленного в вариантах осуществления настоящего изобретения.[33] Fig. 10B is a schematic diagram of the position of the last significant coefficient relative to the lower right corner of the current block, as shown in embodiments of the present invention.

[34] На фиг. 11 представлена схематическая блок-схема способа кодирования коэффициента, предоставленного в вариантах осуществления настоящего изобретения.[34] Fig. 11 is a schematic flow chart of a coefficient encoding method provided in embodiments of the present invention.

[37] На фиг. 12 представлено схематическое структурное изображение кодера, предоставленного в вариантах осуществления настоящего изобретения.[37] Fig. 12 is a schematic structural illustration of an encoder provided in embodiments of the present invention.

[36] На фиг. 13 представлено схематическое изображение конкретной структуры аппаратного обеспечения кодера, представленной в вариантах осуществления настоящего изобретения.[36] Fig. 13 is a schematic diagram of a specific hardware structure of an encoder provided in embodiments of the present invention.

[37] На фиг. 14 представлено схематическое структурное изображение декодера, предоставленного в вариантах осуществления настоящего изобретения.[37] Fig. 14 is a schematic structural diagram of a decoder provided in embodiments of the present invention.

[38] На фиг. 15 представлено схематическое изображение конкретной структуры аппаратного обеспечения декодера, представленного в вариантах осуществления настоящего изобретения.[38] Fig. 15 is a schematic diagram of a specific hardware structure of a decoder provided in embodiments of the present invention.

ПодробноеDetailed описаниеdescription

[39] Чтобы иметь возможность более подробно понимать признаки и техническое содержание вариантов осуществления настоящего изобретения, далее приведено подробное описание вариантов осуществления настоящего изобретения в сочетании с прилагаемыми графическими материалами. Прилагаемые графические материалы приложены только в иллюстративных целях и не предназначены для ограничения вариантов осуществления настоящего изобретения.[39] In order to be able to more fully understand the features and technical content of the embodiments of the present invention, the following is a detailed description of the embodiments of the present invention in conjunction with the accompanying drawings. The accompanying drawings are included for illustrative purposes only and are not intended to limit the embodiments of the present invention.

[40] Если не определено иное, все используемые в данном документе технические и научные термины имеют то же значение, которое обычно понимается специалистами в данной области техники. Термины, используемые в данном документе, предназначены только для описания вариантов осуществления настоящего изобретения и не предназначены для ограничения настоящего изобретения.[40] Unless otherwise defined, all technical and scientific terms used herein have the same meaning as commonly understood by those skilled in the art. The terms used herein are only for the purpose of describing embodiments of the present invention and are not intended to limit the present invention.

[41] В нижеследующем описании «некоторые варианты осуществления», упомянутые в данном документе, описывают поднабор всех возможных вариантов осуществления. Следует понимать, что «некоторые варианты осуществления» могут быть одним и тем же поднабором или другим поднабором всех возможных вариантов осуществления и могут быть объединены друг с другом в случае отсутствия противоречий. Также необходимо отметить, что термины «первый/второй/третий» в вариантах осуществления настоящего изобретения используют только для различения сходных объектов и не представляют конкретный порядок для объектов. Следует понимать, что «первый/второй/третий» могут быть взаимозаменяемы в определенном порядке, когда это разрешено, и, следовательно, варианты осуществления настоящего изобретения, описанные в данном документе, могут быть реализованы в порядке, отличном от того, который проиллюстрирован или описан в данном документе.[41] In the following description, "some embodiments" mentioned herein describe a subset of all possible embodiments. It should be understood that "some embodiments" may be the same subset or a different subset of all possible embodiments and may be combined with each other if there is no contradiction. It should also be noted that the terms "first/second/third" in the embodiments of the present invention are used only to distinguish similar objects and do not represent a specific order for the objects. It should be understood that "first/second/third" may be interchangeable in a certain order when permitted, and therefore, the embodiments of the present invention described herein may be implemented in an order different from that illustrated or described herein.

[42] В видеоизображении первый компонент цвета, второй компонент цвета и третий компонент цвета обычно используют для характеризации блока кодирования (CB). Три компонента цвета представляют собой компонент яркости, синий компонент цветности и красный компонент цветности соответственно. В частности, компонент яркости обычно представлен символом Y, синий компонент цветности обычно представлен символом Cb или U и красный компонент цветности обычно представлен символом Cr или V. В этом случае видеоизображение может быть представлено в формате YCbCr или в формате YUV.[42] In a video image, the first color component, the second color component, and the third color component are usually used to characterize the coding block (CB). The three color components are the luminance component, the blue chrominance component, and the red chrominance component, respectively. Specifically, the luminance component is usually represented by the symbol Y, the blue chrominance component is usually represented by the symbol Cb or U, and the red chrominance component is usually represented by the symbol Cr or V. In this case, the video image can be represented in the YCbCr format or in the YUV format.

[43] Прежде чем варианты осуществления настоящего изобретения будут описаны более подробно, поясняются термины и терминология, используемые в вариантах осуществления настоящего изобретения, и термины и терминология, используемые в вариантах осуществления настоящего изобретения, применимы к следующим пояснениям:[43] Before the embodiments of the present invention are described in more detail, the terms and terminology used in the embodiments of the present invention are explained, and the terms and terminology used in the embodiments of the present invention are applicable to the following explanations:

экспертная группа по движущемуся изображению (MPEG)Moving Picture Experts Group (MPEG)

международная организация по стандартизации (ISO)International Organization for Standardization (ISO)

международная электротехническая комиссия (IEC)International Electrotechnical Commission (IEC)

совместная команда по исследованию видео (JVET)Joint Video Engineering Team (JVET)

альянс открытых средств массовой информации (AOM)Alliance for Open Media (AOM)

стандарт кодирования видео следующего поколения H.266/универсальное кодирование видео (VVC)next-generation video coding standard H.266/Versatile Video Coding (VVC)

тестовая платформа эталонного программного обеспечения для универсального кодирования видео (VVC Test Model, VTM)Versatile Video Coding Test Model (VVC Test Model, VTM) benchmark software test platform

стандарт по аудио- и видеоинформации (AVS)Audio and Video Standard (AVS)

высокопроизводительная модель (HPM) для AVSHigh Performance Model (HPM) for AVS

регулируемое двоичное арифметическое кодирование на основе контекста (CABAC)context-based adjustable binary arithmetic coding (CABAC)

регулярное остаточное кодирование (RRC)regular residual coding (RRC)

пропуск преобразования остаточного кодирования (TSRC)skip residual coding transform (TSRC)

[44] Следует понимать, что в настоящее время универсальные стандарты кодирования видео (такие как VVC) обычно используют структуры гибридного кодирования на основе блоков. Каждое изображение видео разбито на самые большие элементы кодирования (LCU), которые представляют собой квадраты равного размера (например, 128×128, 64×64 и т. д.). Каждый LCU также может быть разбит на прямоугольные элементы кодирования (CU) согласно определенному правилу. Более того, CU может быть разбит на более мелкие элементы предсказания (PU) или элементы преобразования (TU) и т.д. В частности, как проиллюстрировано на фиг. 1, структура гибридного кодирования может включать модули для таких задач, как предсказание, преобразование, квантование, кодирование энтропии и фильтр в контуре. Модуль предсказания может включать внутреннее предсказание и промежуточное предсказание, а промежуточное предсказание может включать оценку движения и компенсацию движения. Поскольку существует сильная корреляция между соседними выборками в изображении в видео, использование внутреннего предсказания при кодировании видео может устранить пространственную избыточность между соседними выборками. Более того, поскольку также существует сильное сходство между соседними изображениями в видео, использование промежуточного предсказания при кодировании видео может устранить временную избыточность между соседними изображениями. Таким образом, эффективность кодирования может быть повышена.[44] It should be understood that currently universal video coding standards (such as VVC) typically use block-based hybrid coding structures. Each video image is divided into largest coding units (LCUs), which are equal-sized squares (e.g., 128×128, 64×64, etc.). Each LCU can also be divided into rectangular coding units (CUs) according to a certain rule. Moreover, a CU can be divided into smaller prediction units (PUs) or transform units (TUs), etc. In particular, as illustrated in Fig. 1, the hybrid coding structure may include modules for tasks such as prediction, transform, quantization, entropy coding, and in-loop filter. The prediction module may include intra-prediction and intermediate prediction, and the intermediate prediction may include motion estimation and motion compensation. Since there is a strong correlation between adjacent samples in a video image, using intra-prediction in video coding can eliminate spatial redundancy between adjacent samples. Furthermore, since there is also a strong similarity between adjacent images in a video, using intermediate prediction in video coding can eliminate temporal redundancy between adjacent images. Thus, coding efficiency can be improved.

[45] Основной процесс кодера видео заключается в следующем. В кодере изображение разбивается на блоки. Внутреннее предсказание или промежуточное предсказание применяют к текущему блоку для генерирования блока предсказания текущего блока. Блок предсказания вычитают из первоначального блока текущего блока для получения остаточного блока. Затем остаточный блок подвергают преобразованию и квантованию для генерирования матрицы коэффициентов квантования. Матрицу коэффициентов квантования энтропийно кодируют и выводят в битовый поток. В декодере внутреннее предсказание или промежуточное предсказание применяют к текущему блоку для генерирования блока предсказания текущего блока. В дополнение битовый поток декодируют для получения матрицы коэффициентов квантования. Матрицу коэффициентов квантования подвергают обратному квантованию и обратному преобразованию для получения остаточного блока, который добавляют к блоку предсказания для получения восстановленного блока. Восстановленные блоки образуют восстановленное изображение. Восстановленное изображение фильтруют в контуре на основе изображения или блока для получения декодированного изображения. Кодеру также требуются подобные операции, что и декодеру, для получения декодированного изображения. Декодированное изображение может быть использовано в качестве опорного изображения при промежуточном предсказании для последующих изображений. Информацию о разбитии блока, а также информацию о режиме или информация о параметре (например, для предсказания, преобразования, квантования, кодирования энтропии и фильтра в контуре), определенные кодером, при необходимости выводят в битовый поток. Путем анализа и исследования на основе доступной информации декодер определяет ту же информацию о разбитии блока и информацию о режиме или информацию о параметре (например, для предсказания, преобразования, квантования, кодирования энтропии и фильтра в контуре), что и кодер, тем самым обеспечивая то, что декодированное изображение, полученное кодером, является таким же, что и декодированное изображение, полученное декодером. Декодированное изображение, полученное с помощью кодера, также обычно называется восстановленным изображением. Текущий блок может быть разбит на PU во время предсказания. Текущий блок может быть разбит на TU во время преобразования. Разбитие PU и разбитие TU могут быть разными. Вышеописанное является основным процессом кодера видео при структуре гибридного кодирования на основе блоков. С развитием технологии некоторые модули или операции структуры или процесса могут быть оптимизированы. Варианты осуществления настоящего изобретения применимы к основному процессу кодера видео при структуре гибридного кодирования на основе блоков, но не ограничены структурой и процессом.[45] The basic process of a video encoder is as follows. In the encoder, an image is divided into blocks. Intra-prediction or intermediate-prediction is applied to the current block to generate a prediction block of the current block. The prediction block is subtracted from the original block of the current block to obtain a residual block. Then, the residual block is transformed and quantized to generate a matrix of quantization coefficients. The matrix of quantization coefficients is entropy encoded and output to a bitstream. In the decoder, intra-prediction or intermediate-prediction is applied to the current block to generate a prediction block of the current block. In addition, the bitstream is decoded to obtain a matrix of quantization coefficients. The matrix of quantization coefficients is inversely quantized and inversely transformed to obtain a residual block, which is added to the prediction block to obtain a reconstructed block. The reconstructed blocks form a reconstructed image. The reconstructed image is filtered in an image-based or block-based loop to obtain a decoded image. The encoder also requires similar operations as the decoder to obtain a decoded image. The decoded image can be used as a reference image in intermediate prediction for subsequent images. The block partitioning information, as well as mode information or parameter information (e.g., for prediction, transform, quantization, entropy coding, and in-loop filter) determined by the encoder, are output to the bitstream if necessary. By analyzing and examining the available information, the decoder determines the same block partitioning information and mode information or parameter information (e.g., for prediction, transform, quantization, entropy coding, and in-loop filter) as the encoder, thereby ensuring that the decoded image obtained by the encoder is the same as the decoded image obtained by the decoder. The decoded image obtained by the encoder is also commonly referred to as the reconstructed image. The current block can be partitioned into PUs during prediction. The current block can be partitioned into TUs during transform. The PU partitioning and TU partitioning may be different. The above describes the core process of a video encoder with a block-based hybrid coding structure. As technology advances, some modules or operations of the structure or process may be optimized. Embodiments of the present invention are applicable to the core process of a video encoder with a block-based hybrid coding structure, but are not limited to the structure and process.

[46] Текущий блок может быть текущим CU, текущим PU, текущим TU и т. д.[46] The current block can be the current CU, the current PU, the current TU, etc.

[47] Информацию о разбитии блока, информацию о режиме или информацию о параметре для предсказания, преобразования и квантования, коэффициенты и т. п. передают в битовый поток посредством кодирования энтропии. Предполагая, что вероятности разных элементов различны, более короткое кодовое слово назначают элементу с большей вероятностью появления, а более длинное кодовое слово назначают элементу с меньшей вероятностью появления, так что может быть получена более высокая эффективность кодирования, чем при кодировании фиксированной длины. Однако, если вероятности разных элементов близки или по существу одинаковы, кодирование энтропии приводит к ограниченному сжатию. CABAC представляет собой обычный способ кодирования энтропии, который используют как в HEVC, так и в VVC для кодирования энтропии. CABAC может повысить эффективность сжатия, используя контекстную модель. Однако использование и обновление контекстной модели приводит к более сложным операциям. CABAC имеет обходной режим, в котором нет необходимости использовать или обновлять контекстную модель, и, таким образом, может быть достигнута более высокая пропускная способность. В вариантах осуществления настоящего изобретения режим, требующий использование и обновление контекстной модели в CABAC, может называться контекстным режимом.[47] Block partition information, mode information, or parameter information for prediction, transformation, and quantization, coefficients, etc. are transmitted into the bitstream by entropy coding. Assuming that the probabilities of different elements are different, a shorter codeword is assigned to an element with a higher probability of occurrence, and a longer codeword is assigned to an element with a lower probability of occurrence, so that higher coding efficiency can be obtained than fixed-length coding. However, if the probabilities of different elements are close or essentially the same, entropy coding results in limited compression. CABAC is a common entropy coding method that is used in both HEVC and VVC for entropy coding. CABAC can improve the compression efficiency by using a context model. However, using and updating the context model results in more complex operations. CABAC has a bypass mode in which there is no need to use or update the context model, and thus higher throughput can be achieved. In embodiments of the present invention, the mode requiring the use and updating of a context model in CABAC may be referred to as the context mode.

[48] Обычно контекстная модель должна быть определена согласно указанному способу. При вызове указанного процесса арифметического декодирования для двоичного решения в качестве входных данных могут быть использованы параметры контекстной модели. При выборе контекстной модели также существует соотношение зависимости между соседними коэффициентами. Например, на фиг. 2 представлено схематическое изображение, иллюстрирующее соотношение положения между текущим коэффициентом и соседними коэффициентами, представленными в известном уровне техники. На фиг. 2 блок в черном указывает на текущий коэффициент, а блоки с линиями сетки указывают на соседние коэффициенты. Как показано на фиг. 2, то, какая контекстная модель выбрана для sig_coeff_flag текущего коэффициента, необходимо определить согласно информации о пяти соседних коэффициентах справа, снизу и снизу справа от текущего коэффициента. Как можно увидеть на фиг. 2, операции для контекстного режима являются более сложными, чем операции для обходного режима, и существует зависимость между соседними коэффициентами. [48] Generally, a context model needs to be determined according to the specified method. When calling the specified arithmetic decoding process for a binary decision, the parameters of the context model can be used as input. When selecting a context model, there is also a dependency relationship between neighboring coefficients. For example, Fig. 2 is a schematic diagram illustrating the position relationship between the current coefficient and neighboring coefficients presented in the prior art. In Fig. 2, the block in black indicates the current coefficient, and the blocks with grid lines indicate the neighboring coefficients. As shown in Fig. 2, which context model is selected for sig_coeff_flag of the current coefficient needs to be determined according to the information of five neighboring coefficients to the right, below, and below the right of the current coefficient. As can be seen from Fig. 2, the operations for the context mode are more complex than those for the bypass mode, and there is a dependency between the neighboring coefficients.

[49] Для движка арифметического кодирования CABAC, если используют контекстный режим, необходимо вызвать указанный процесс арифметического декодирования для двоичного решения, который включает процесс перехода состояния, а именно обновление контекстной модели. Во время процесса арифметического декодирования для двоичного решения вызывается процесс перенормировки движка арифметического декодирования. Если используют обходной режим, необходимо вызвать процесс обходного декодирования.[49] For the CABAC arithmetic coding engine, if the context mode is used, it is necessary to call the specified arithmetic decoding process for the binary decision, which includes the state transition process, namely, updating the context model. During the arithmetic decoding process for the binary decision, the renormalization process of the arithmetic decoding engine is called. If the bypass mode is used, it is necessary to call the bypass decoding process.

[50] CABAC, используемый в VVC, представлен в качестве примера следующим образом.[50] CABAC used in VVC is presented as an example as follows.

[51] Для движка арифметического кодирования CABAC входными данными для процесса арифметического декодирования являются ctxTable, ctxIdx, bypassFlag и переменные состояния ivlCurrRange и ivlOffset движка арифметического декодирования, а выходом процесса арифметического декодирования является значение bin.[51] For the CABAC arithmetic coding engine, the inputs to the arithmetic decoding process are ctxTable, ctxIdx, bypassFlag, and the arithmetic decoding engine state variables ivlCurrRange and ivlOffset, and the output of the arithmetic decoding process is the value bin.

[52] ctxTable представляет собой таблицу, используемую при выборе контекстного режима. ctxIdx представляет собой индекс контекстной модели.[52] ctxTable is the table used when selecting the context mode. ctxIdx is the index of the context model.

[53] На фиг. 3 представлена схематическая блок-схема процесса арифметического декодирования для двоичного числа, представленного в известном уровне техники. Как показано на фиг. 3, чтобы декодировать значение bin, таблицу индексов контекста ctxTable, ctxIdx, bypassFlag передают в качестве входных данных процессу арифметического декодирования DecodeBin (ctxTable, ctxIdx, bypassFlag), который задан следующим образом:[53] Fig. 3 is a schematic flow chart of the arithmetic decoding process for a binary number presented in the prior art. As shown in Fig. 3, to decode the value bin, the context index table ctxTable, ctxIdx, bypassFlag is passed as input to the arithmetic decoding process DecodeBin(ctxTable, ctxIdx, bypassFlag), which is defined as follows:

если bypassFlag равен 1, то вызывается процесс обходного декодирования DecodeBypass().If bypassFlag is 1, the bypass decoding process DecodeBypass() is called.

В противном случае, если bypassFlag равен 0, ctxTable равен 0, а ctxIdx равен 0, то вызывается DecodeTerminate().Otherwise, if bypassFlag is 0, ctxTable is 0, and ctxIdx is 0, then DecodeTerminate() is called.

В противном случае (bypassFlag равен 0, а ctxIdx не равен 0) вызывается указанный процесс арифметического декодирования для двоичного решения DecodeDecision(ctxTable, ctxIdx).Otherwise (bypassFlag is 0 and ctxIdx is not 0), the specified arithmetic decoding process is called for the binary solution DecodeDecision(ctxTable, ctxIdx).

[54] Дополнительно, входными данными процесса арифметического декодирования для двоичного решения являются переменные ctxTable, ctxIdx, ivlCurrRange и ivlOffset, а выходными данными процесса арифметического декодирования являются декодированное значение binVal и обновленные переменные ivlCurrRange и ivlOffset.[54] Additionally, the inputs to the arithmetic decoding process for the binary solution are the variables ctxTable, ctxIdx, ivlCurrRange, and ivlOffset, and the outputs of the arithmetic decoding process are the decoded value binVal and the updated variables ivlCurrRange and ivlOffset.

[55] На фиг. 4 представлена схематическая блок-схема процесса арифметического декодирования для двоичного решения, представленного в известном уровне техники. Как показано на фиг. 4, pStateIdx0 и pStateIdx1 представляют собой два состояния текущей контекстной модели.[55] Fig. 4 is a schematic flow chart of the arithmetic decoding process for a binary solution presented in the prior art. As shown in Fig. 4, pStateIdx0 and pStateIdx1 represent two states of the current context model.

[56] (1) Значение переменной ivlLpsRange выводят следующим образом:[56] (1) The value of the variable ivlLpsRange is displayed as follows:

При заданном текущем значении ivlCurrRange, переменную qRangeIdx выводят следующим образом:Given the current value of ivlCurrRange, the variable qRangeIdx is output as follows:

qRangeIdx=ivlCurrRange >>5.qRangeIdx=ivlCurrRange >>5.

При заданных qRangeIdx, pStateIdx0 и pStateIdx1 связанные с ctxTable и ctxIdx, valMPS и ivlLpsRange, выводят следующим образом:Given qRangeIdx, pStateIdx0 and pStateIdx1, the associated ctxTable and ctxIdx, valMPS and ivlLpsRange are output as follows:

pState=pStateIdx1+16×pStateIdx0;pState=pStateIdx1+16×pStateIdx0;

valMps=pState >>14;valMps=pState >>14;

ivlLpsRange=(qRangeIdx×((valMps ? 32767-pState : pState)>>9)>>1)+4.ivlLpsRange=(qRangeIdx×((valMps ? 32767-pState : pState)>>9)>>1)+4.

[57] (2) Переменную ivlCurrRange устанавливают равной ivlCurrRange - ivlLpsRange и применяют следующее:[57] (2) The ivlCurrRange variable is set equal to ivlCurrRange - ivlLpsRange and the following is applied:

Если ivlOffset больше или равно ivlCurrRange, тогда значение переменной binVal устанавливают равным 1-valMPS, ivlOffset уменьшается на ivlCurrRange, а ivlCurrRange устанавливают равным ivlLpsRange.If ivlOffset is greater than or equal to ivlCurrRange, then binVal is set to 1 - valMPS, ivlOffset is decremented by ivlCurrRange, and ivlCurrRange is set to ivlLpsRange.

В противном случае, (ivlOffset меньше, чем ivlCurrRange) значение переменной binVal устанавливают равным valMPS.Otherwise, (ivlOffset is less than ivlCurrRange) the value of the binVal variable is set equal to valMPS.

[58] При заданном значении binVal выполняют переход указанного состояния. В зависимости от текущего значения ivlCurrRange может быть выполнена указанная перенормировка.[58] For a given binVal value, the specified state transition is performed. Depending on the current value of ivlCurrRange, the specified renormalization may be performed.

[59] Кроме того, входными данными для процесса перехода состояния являются текущие pStateIdx0 и pStateIdx1, а также декодированное значение binVal. Выходными данными процесса являются обновленные pStateIdx0 и pStateIdx1 контекстных переменных, связанных с ctxTable и ctxIdx. Переменные shift0 и shift1 являются производными от shiftIdx. Соответствие между shiftIdx и ctxTable, и ctxIdx указывают следующим образом:[59] Furthermore, the inputs to the state transition process are the current pStateIdx0 and pStateIdx1, and the decoded value of binVal. The outputs of the process are the updated pStateIdx0 and pStateIdx1 context variables associated with ctxTable and ctxIdx. The variables shift0 and shift1 are derived from shiftIdx. The correspondence between shiftIdx and ctxTable, and ctxIdx is specified as follows:

shift0=(shiftIdx >>2)+2;shift0=(shiftIdx >>2)+2;

shift1=(shiftIdx & 3)+3+shift0.shift1=(shiftIdx & 3)+3+shift0.

[60] В зависимости от декодированного значения binVal обновление двух переменных pStateIdx0 и pStateIdx1, связанных с ctxTable и ctxIdx, происходит следующим образом:[60] Depending on the decoded value of binVal, the two variables pStateIdx0 and pStateIdx1 associated with ctxTable and ctxIdx are updated as follows:

pStateIdx0=pStateIdx0-(pStateIdx0 >>shift0)+(1023×binVal >>shift0);pStateIdx0=pStateIdx0-(pStateIdx0 >>shift0)+(1023×binVal >>shift0);

pStateIdx1=pStateIdx1-(pStateIdx1>>shift1)+(16383×binVal >>shift1).pStateIdx1=pStateIdx1-(pStateIdx1>>shift1)+(16383×binVal >>shift1).

[61] Кроме того, входными данными для процесса перенормировки движка арифметического декодирования являются биты из данных фрагмента и переменные ivlCurrRange и ivlOffset. Выходными данными процесса являются обновленные переменные ivlCurrRange и ivlOffset.[61] Additionally, the inputs to the arithmetic decoding engine's renormalization process are the bits from the fragment data and the ivlCurrRange and ivlOffset variables. The outputs of the process are the updated ivlCurrRange and ivlOffset variables.

[62] На фиг. 5 представлена схематическая блок-схема перенормировки движка арифметического декодирования, представленного в известном уровне техники. Как показано на фиг. 5, текущее значение ivlCurrRange сначала сравнивают с 256, а последующие операции выполняют следующим образом:[62] Fig. 5 shows a schematic block diagram of the renormalization of the arithmetic decoding engine presented in the prior art. As shown in Fig. 5, the current value of ivlCurrRange is first compared with 256, and the subsequent operations are performed as follows:

Если ivlCurrRange больше или равно 256, перенормировка не требуется и процесс RenormD завершается.If ivlCurrRange is greater than or equal to 256, renormalization is not required and the RenormD process terminates.

В противном случае (ivlCurrRange меньше 256) вводят контур перенормировки. Внутри этого контура значение ivlCurrRange удваивается, т. е. сдвигается влево на 1. Значение ivlOffset удваивается, т. е. сдвигается влево на 1. Единичный бит сдвигается в ivlOffset, используя read_bits (1).Otherwise (ivlCurrRange is less than 256), a renormalization loop is introduced. Within this loop, the value of ivlCurrRange is doubled, i.e., shifted left by 1. The value of ivlOffset is doubled, i.e., shifted left by 1. The 1-bit is shifted into ivlOffset using read_bits(1).

[63] Битовый поток не должен содержать данных, в результате которых значение ivlOffset будет больше или равно ivlCurrRange по завершении этого процесса.[63] The bitstream must not contain data that would cause ivlOffset to be greater than or equal to ivlCurrRange when this process completes.

[64] Кроме того, входными данными для процесса обходного декодирования для двоичных решений являются биты из данных фрагмента и переменные ivlCurrRange и ivlOffset. Выходными данными этого процесса являются обновленная переменная ivlOffset и декодированное значение binVal.[64] Additionally, the inputs to the bypass decoding process for binary solutions are the bits from the chunk data and the ivlCurrRange and ivlOffset variables. The outputs of this process are the updated ivlOffset variable and the decoded binVal value.

[65] Процесс обходного декодирования вызывается, когда bypassFlag равен 1. На фиг. 6 представлена схематическая блок-схема процесса обходного декодирования, представленного в известном уровне техники. Как показано на фиг. 6, сначала значение ivlOffset удваивается, т. е. сдвигается влево на 1, а единичный бит сдвигается в ivlOffset, используя read_bits(1). Затем значение ivlOffset сравнивают со значением ivlCurrRange, а последующие этапы выполняют следующим образом:[65] The bypass decoding process is called when bypassFlag is equal to 1. Fig. 6 shows a schematic flow chart of the bypass decoding process presented in the prior art. As shown in Fig. 6, first, the ivlOffset value is doubled, i.e., shifted left by 1, and a one bit is shifted into ivlOffset using read_bits(1). Then, the ivlOffset value is compared with the ivlCurrRange value, and the subsequent steps are performed as follows:

если ivlOffset больше или равно ivlCurrRange, значение binVal устанавливают равным 1, ivlOffset уменьшается на ivlCurrRange.If ivlOffset is greater than or equal to ivlCurrRange, binVal is set to 1 and ivlOffset is decreased by ivlCurrRange.

В противном случае, (ivlOffset меньше, чем ivlCurrRange) binVal устанавливают равным 0.Otherwise, (ivlOffset is less than ivlCurrRange) binVal is set to 0.

[66] Битовый поток не должен содержать данных, в результате которых значение ivlOffset будет больше или равно ivlCurrRange по завершении этого процесса.[66] The bitstream must not contain data that would cause ivlOffset to be greater than or equal to ivlCurrRange when this process completes.

[67] Следует также понимать, что в текущих стандартах кодирования видео для остатков обычно поддерживается одно или более преобразований и пропусков преобразования. Преобразования включают дискретное косинусное преобразование (DCT) и т. д. Преобразованный остаточный блок обычно проявляет определенные характеристики после преобразования (и квантования). Например, после некоторых преобразований (и квантования), поскольку энергия в основном сконцентрирована в низкочастотной области, коэффициенты в верхней левой области относительно велики, а коэффициенты в нижней правой области относительно малы или даже равны 0. Для пропуска преобразования преобразование не выполняют. Шаблон распределения коэффициентов после пропуска преобразования отличается от такового коэффициентов после преобразования, так что могут быть использованы разные способы кодирования коэффициентов. Например, в VVC RRC используют для коэффициентов после пропуска преобразования, а TSRC используют для коэффициентов после пропуска преобразования.[67] It should also be understood that in current video coding standards, one or more transforms and skip transforms are usually supported for residuals. The transforms include discrete cosine transform (DCT), etc. The transformed residual block usually exhibits certain characteristics after the transform (and quantization). For example, after some transforms (and quantization), since the energy is mainly concentrated in the low-frequency region, the coefficients in the upper-left region are relatively large, and the coefficients in the lower-right region are relatively small or even equal to 0. For skip transform, no transform is performed. The distribution pattern of the coefficients after skip transform is different from that of the coefficients after the transform, so different coefficient coding methods may be used. For example, in VVC, RRC is used for the coefficients after skip transform, and TSRC is used for the coefficients after skip transform.

[68] Для общих преобразований, таких как преобразование DCT, в преобразованном блоке частоты увеличиваются слева направо и сверху вниз. Верхний левый угол представляет более низкую частоту, а нижний правый угол представляет более высокую частоту. Человеческие глаза более чувствительны к низкочастотной информации и менее чувствительны к высокочастотной информации. С этим свойством интенсивная обработка или удаление некоторой высокочастотной информации оказывает меньшее визуальное воздействие. Некоторые технологии, такие как нулевой вывод, могут привести к тому, что некоторая высокочастотная информация будет равна 0. Например, для блока размером 64×64 коэффициенты в положениях с горизонтальными координатами, большими или равными 32, или с вертикальными координатами, большими или равными 32, принудительно равны 0. Вышеописанное является только простым примером и могут существовать более сложные способы получения диапазона нулевого вывода, которые не описаны в данном документе. Как показано на фиг. 7, ненулевые (или называемые значимыми) коэффициенты могут существовать в верхнем левом углу (а именно область, которая возможно имеет значимые коэффициенты), а все коэффициенты в правом нижнем углу устанавливают равными нулю (а именно область нулевого вывода). Таким образом, для последующего кодирования коэффициентов не требуется кодировать коэффициенты области нулевого вывода, поскольку коэффициенты должны быть равны 0.[68] For common transforms such as the DCT, the transformed block has increasing frequencies from left to right and top to bottom. The upper left corner represents a lower frequency, and the lower right corner represents a higher frequency. Human eyes are more sensitive to low-frequency information and less sensitive to high-frequency information. With this property, intensive processing or removal of some high-frequency information has less visual impact. Some techniques, such as zero-output, may force some high-frequency information to be 0. For example, for a 64×64 block, the coefficients at positions with horizontal coordinates greater than or equal to 32 or with vertical coordinates greater than or equal to 32 are forced to be 0. The above is only a simple example, and there may be more complex ways to obtain the zero-output range that are not described here. As shown in Fig. 7, non-zero (or so-called significant) coefficients can exist in the upper left corner (namely, the region that possibly contains significant coefficients), and all coefficients in the lower right corner are set to zero (namely, the zero-output region). Therefore, subsequent encoding of the coefficients does not require encoding the coefficients in the zero-output region, since the coefficients must be equal to 0.

[69] Кроме того, поскольку распределение коэффициентов показывает характеристику, заключающуюся в том, что коэффициенты в верхнем левом углу больше, а многие коэффициенты в правом нижнем углу равны 0 после преобразования остатков (и квантования) в обычном видео, во время кодирования коэффициентов обычно используют некоторые способы для кодирования коэффициентов в пределах определенного диапазона верхнего левого угла, а не для кодирования коэффициентов в пределах определенного диапазона нижнего правого угла (по умолчанию эти коэффициенты равны 0). Один из способов заключается в том, чтобы при кодировании коэффициентов блока сначала определить положение последнего значимого коэффициента блока в порядке сканирования. После определения этого положения все коэффициенты, следующие за положением последнего значимого коэффициента в порядке сканирования, считаются равными 0, то есть кодирование не требуется. Необходимо закодировать только последний значимый коэффициент и его предыдущие коэффициенты. Например, в VVC положение последнего значимого коэффициента (LastSignificantCoeffX, LastSignificantCoeffY) определяют с использованием last_sig_coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix и last_sig_coeff_y_suffix.[69] In addition, since the distribution of coefficients shows the characteristic that the coefficients in the upper left corner are larger and many coefficients in the lower right corner are 0 after residual transformation (and quantization) in normal video, during coefficient coding, some methods are usually used to coding the coefficients within a certain range of the upper left corner, rather than coding the coefficients within a certain range of the lower right corner (by default, these coefficients are 0). One method is to first determine the position of the last significant coefficient of the block in the scan order when coding the coefficients of a block. Once this position is determined, all coefficients following the position of the last significant coefficient in the scan order are considered to be 0, that is, no coding is required. Only the last significant coefficient and its previous coefficients need to be coding. For example, in VVC, the position of the last significant coefficient (LastSignificantCoeffX, LastSignificantCoeffY) is determined using last_sig_coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix and last_sig_coeff_y_suffix.

[70] (a) last_sig_coeff_x_prefix указывает префикс горизонтальной координаты (или столбца) последнего значимого коэффициента в порядке сканирования в пределах текущего блока. Значение last_sig_coeff_x_prefix должно быть в диапазоне от 0 до ( log2ZoTbWidth << 1 ) - 1 включительно.[70] (a) last_sig_coeff_x_prefix specifies the prefix of the horizontal coordinate (or column) of the last significant coefficient in scan order within the current block. The value of last_sig_coeff_x_prefix must be in the range from 0 to ( log2ZoTbWidth << 1 ) - 1 , inclusive.

[71] Если last_sig_coeff_x_prefix не присутствует, тогда last_sig_coeff_x_prefix равен 0.[71] If last_sig_coeff_x_prefix is not present, then last_sig_coeff_x_prefix is 0.

[72] (b) last_sig_coeff_y_prefix указывает префикс вертикальной координаты (или строки) последнего значимого коэффициента в порядке сканирования в пределах текущего блока. Значение last_sig_coeff_y_prefix должно быть в диапазоне от 0 до ( log2ZoTbHeight << 1 ) - 1 включительно.[72] (b) last_sig_coeff_y_prefix specifies the prefix of the vertical coordinate (or row) of the last significant coefficient in scan order within the current block. The value of last_sig_coeff_y_prefix must be in the range from 0 to ( log2ZoTbHeight << 1 ) - 1 , inclusive.

[73] Если last_sig_coeff_y_prefix не присутствует, тогда last_sig_coeff_y_prefix равен 0.[73] If last_sig_coeff_y_prefix is not present, then last_sig_coeff_y_prefix is 0.

[74] (c) last_sig_coeff_x_suffix указывает суффикс горизонтальной координаты (или столбца) последнего значимого коэффициента в порядке сканирования в пределах текущего блока. Значение last_sig_coeff_x_suffix должно быть в диапазоне от 0 до (1<< ( ( last_sig_coeff_x_prefix>>1)-1))-1 включительно.[74] (c) last_sig_coeff_x_suffix specifies the suffix of the horizontal coordinate (or column) of the last significant coefficient in scan order within the current block. The value of last_sig_coeff_x_suffix must be in the range from 0 to (1<< ( ( last_sig_coeff_x_prefix>>1)-1))-1, inclusive.

[75] LastSignificantCoeffX, т. е. значение горизонтальной координаты (или столбца) последнего значимого коэффициента в порядке сканирования в пределах текущего блока преобразования, выводят следующим образом:[75] LastSignificantCoeffX, i.e. the value of the horizontal coordinate (or column) of the last significant coefficient in the scan order within the current transformation block, is output as follows:

если last_sig_coeff_x_suffix не присутствует, тогдаif last_sig_coeff_x_suffix is not present, then

LastSignificantCoeffX = last_sig_coeff_x_prefix;LastSignificantCoeffX = last_sig_coeff_x_prefix;

В противном случае (last_sig_coeff_x_suffix присутствует), Otherwise (last_sig_coeff_x_suffix is present),

LastSignificantCoeffX=(1<< ((last_sig_coeff_x_prefix>>1)-1))*(2+(last_ sig_coeff_x_prefix&1)) + last_sig_coeff_x_suffix.LastSignificantCoeffX=(1<< ((last_sig_coeff_x_prefix>>1)-1))*(2+(last_ sig_coeff_x_prefix&1)) + last_sig_coeff_x_suffix.

[76] (d) last_sig_coeff_y_suffix указывает суффикс вертикальной координаты (или строки) последнего значимого коэффициента текущего блока преобразования в порядке сканирования. Значение last_sig_coeff_x_suffix должно быть в диапазоне от 0 до (1<< ((last_sig_coeff_y_prefix>>1)-1))-1 включительно.[76] (d) last_sig_coeff_y_suffix specifies the suffix of the vertical coordinate (or row) of the last significant coefficient of the current transform block in scan order. The value of last_sig_coeff_x_suffix must be in the range from 0 to (1<< ((last_sig_coeff_y_prefix>>1)-1))-1, inclusive.

[77] LastSignificantCoeffY, т. е. значение вертикальной координаты (или строки) последнего значимого коэффициента текущего блока преобразования в порядке сканирования, выводят следующим образом:[77] LastSignificantCoeffY, i.e. the value of the vertical coordinate (or row) of the last significant coefficient of the current transform block in the scanning order, is output as follows:

если last_sig_coeff_y_suffix не присутствует, тогдаif last_sig_coeff_y_suffix is not present, then

LastSignificantCoeffY = last_sig_coeff_y_prefix;LastSignificantCoeffY = last_sig_coeff_y_prefix;

В противном случае (last_sig_coeff_y_suffix присутствует),Otherwise (last_sig_coeff_y_suffix is present),

LastSignificantCoeffY = (1<< ((last_sig_coeff_y_prefix>>1)-1))*(2+(last_ sig_coeff_y_prefix&1)) + last_sig_coeff_y_suffix.LastSignificantCoeffY = (1<< ((last_sig_coeff_y_prefix>>1)-1))*(2+(last_sig_coeff_y_prefix&1)) + last_sig_coeff_y_suffix.

[78] Кроме того, необходимо закодировать последний значимый коэффициент и его предыдущие коэффициенты. Однако в обычном видео определенный процент этих коэффициентов по-прежнему равен 0. В VVC флаг sb_coded_flag, указывающий, закодирован ли текущий подблок, используют для определения того, необходимо ли кодировать коэффициенты текущего подблока. Если кодирование не требуется, тогда все коэффициенты текущего подблока считаются равными 0. В данном случае подблок обычно представляет собой подблок n×n, такой как подблок 4×4.[78] In addition, the last significant coefficient and its previous coefficients must be encoded. However, in normal video, a certain percentage of these coefficients are still 0. In VVC, the sb_coded_flag flag, which indicates whether the current sub-block is encoded, is used to determine whether the coefficients of the current sub-block need to be encoded. If encoding is not required, then all coefficients of the current sub-block are considered to be 0. In this case, the sub-block is typically an n×n sub-block, such as a 4×4 sub-block.

[79] sb_coded_flag[xS][yS] указывает следующее для подблока в местоположении ( xS, yS ) в пределах текущего блока преобразования, где подблок представляет собой массив уровней коэффициента преобразования:[79] sb_coded_flag[xS][yS] specifies the following for the subblock at location ( xS, yS ) within the current transform block, where subblock is an array of transform coefficient levels:

когда sb_coded_flag[ xS ][ yS ] равен 0, все уровни коэффициента преобразования подблока в местоположении ( xS, yS ) считаются равными 0.When sb_coded_flag[ xS ][ yS ] is 0, all sub-block transform coefficient levels at location ( xS, yS ) are considered to be 0.

Когда sb_coded_flag[ xS ][ yS ] не присутствует, считается, что он равен 1.When sb_coded_flag[ xS ][ yS ] is not present, it is assumed to be 1.

[80] Кроме того, при работе с кодированием коэффициентов эффективность сжатия может быть повышена за счет использования свойств коэффициентов. Например, для обычного видео определенный процент коэффициентов, подлежащих кодированию, равен 0. Таким образом, элемент синтаксиса можно использовать для указания того, равен ли текущий коэффициент 0. Данный элемент синтаксиса обычно представляет собой двоичный символ (bin). Если текущий коэффициент равен 0, тогда это означает, что кодирование текущего коэффициента завершено. В противном случае необходимо продолжить кодирование текущего коэффициента. В качестве другого примера для обычного видео определенный процент значимых коэффициентов имеет абсолютное значение 1. Таким образом, элемент синтаксиса можно использовать для указания того, превышает ли абсолютное значение текущего коэффициента 1. Данный элемент синтаксиса обычно представляет собой bin. Если абсолютное значение текущего коэффициента не превышает 1, тогда это означает, что кодирование текущего коэффициента завершено. В противном случае необходимо продолжить кодирование текущего коэффициента. Например, элемент(-ы) синтаксиса, задействованный в VVC, заключается в следующем.[80] Furthermore, when dealing with coefficient coding, the compression efficiency can be improved by exploiting the properties of the coefficients. For example, for normal video, a certain percentage of the coefficients to be coding are 0. Thus, a syntax element can be used to indicate whether the current coefficient is 0. This syntax element is typically a binary symbol (bin). If the current coefficient is 0, then it means that the coding of the current coefficient is complete. Otherwise, it is necessary to continue coding the current coefficient. As another example, for normal video, a certain percentage of significant coefficients have an absolute value of 1. Thus, a syntax element can be used to indicate whether the absolute value of the current coefficient is greater than 1. This syntax element is typically a bin. If the absolute value of the current coefficient does not exceed 1, then it means that the coding of the current coefficient is complete. Otherwise, it is necessary to continue coding the current coefficient. For example, the syntax element(s) involved in VVC are as follows.

[81] sig_coeff_flag[xC][yC] указывает для местоположения коэффициента преобразования ( xC, yC ) в пределах текущего блока преобразования, является ли соответствующий уровень коэффициента преобразования в местоположении ( xC, yC ) ненулевым следующим образом.[81] sig_coeff_flag[xC][yC] indicates for a transform coefficient location ( xC, yC ) within the current transform block whether the corresponding transform coefficient level at location ( xC, yC ) is non-zero as follows.

если sig_coeff_flag[ xC ][ yC ] равен 0, уровень коэффициента преобразования в местоположении ( xC, yC ) устанавливают равным 0;if sig_coeff_flag[ xC ][ yC ] is 0, the transformation coefficient level at location ( xC, yC ) is set to 0;

В противном случае (sig_coeff_flag[ xC ][ yC ] равен 1) уровень коэффициента преобразования в местоположении ( xC, yC ) имеет ненулевое значение.Otherwise (sig_coeff_flag[ xC ][ yC ] is 1) the transformation coefficient level at location ( xC, yC ) has a non-zero value.

[82] Когда sig_coeff_flag[ xC ][ yC ] не присутствует, считается следующим образом:[82] When sig_coeff_flag[ xC ][ yC ] is not present, it is calculated as follows:

если transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 0 или sh_ts_residual_coding_disabled_flag равен 1, применяют следующее:If transform_skip_flag[ x0 ][ y0 ][ cIdx ] is 0 or sh_ts_residual_coding_disabled_flag is 1, the following applies:

если ( xC, yC ) является последним значимым местоположением (LastSignificantCoeffX, LastSignificantCoeffY) в порядке сканирования или все следующие условия верны, sig_coeff_flag[ xC ][ yC ] считается равным 1:if ( xC, yC ) is the last significant location (LastSignificantCoeffX, LastSignificantCoeffY) in scan order or all of the following conditions are true, sig_coeff_flag[ xC ][ yC ] is considered to be 1:

( xC & ( (1 << log2SbW ) - 1 ), yC & ( (1 << log2SbH ) - 1 ) ) равно ( 0, 0 );( xC & ( (1 << log2SbW ) - 1 ), yC & ( (1 << log2SbH ) - 1 ) ) is equal to ( 0, 0 );

inferSbDcSigCoeffFlag равно 1; иinferSbDcSigCoeffFlag is equal to 1; and

sb_coded_flag[ xS ][ yS ] равно 1;sb_coded_flag[ xS ][ yS ] is equal to 1;

В противном случае sig_coeff_flag[ xC ][ yC ] считается равным 0;Otherwise, sig_coeff_flag[ xC ][ yC ] is considered equal to 0;

В противном случае ([ x0 ][ y0 ][ cIdx ] равен 1 и sh_ts_residual_coding_disabled_flag равен 0), применяют следующее:Otherwise ([ x0 ][ y0 ][ cIdx ] is 1 and sh_ts_residual_coding_disabled_flag is 0), the following applies:

если все следующие условия верны, sig_coeff_flag[ xC ][ yC ] считается равным 1:If all the following conditions are true, sig_coeff_flag[ xC ][ yC ] is considered to be equal to 1:

( xC & ( (1 << log2SbW ) - 1 ), yC & ( (1 << log2SbH ) - 1 ) ) равно ( (1 << log2SbW ) - 1, (1 << log2SbH ) - 1 );( xC & ( (1 << log2SbW ) - 1 ), yC & ( (1 << log2SbH ) - 1 ) ) equals ( (1 << log2SbW ) - 1, (1 << log2SbH ) - 1 );

inferSbSigCoeffFlag равно 1; иinferSbSigCoeffFlag is equal to 1; and

sb_coded_flag[ xS ][ yS ] равно 1;sb_coded_flag[ xS ][ yS ] is equal to 1;

В противном случае sig_coeff_flag[ xC ][ yC ] считается равным 0.Otherwise, sig_coeff_flag[ xC ][ yC ] is considered equal to 0.

[83] abs_level_gtx_flag[ n ][ j ] указывает, превышает ли абсолютное значение уровня коэффициента преобразования (в положении сканирования n) ( j << 1 ) + 1. Когда abs_level_gtx_flag[ n ][ j ] не присутствует, abs_level_gtx_flag[ n ][ j ] равен 0.[83] abs_level_gtx_flag[ n ][ j ] indicates whether the absolute value of the transform gain level (at scan position n) is greater than ( j << 1 ) + 1. When abs_level_gtx_flag[ n ][ j ] is not present, abs_level_gtx_flag[ n ][ j ] is 0.

[84] Таким образом, если кодирование текущего коэффициента не завершено после обработки вышеуказанных флагов (или называемых элементов синтаксиса), тогда необходимо закодировать оставшееся значение абсолютного значения коэффициента, такое как abs_remainder в VVC.[84] Thus, if the encoding of the current coefficient is not complete after processing the above flags (or so-called syntax elements), then it is necessary to encode the remaining absolute value of the coefficient, such as abs_remainder in VVC.

[85] abs_remainder[ n ] представляет собой оставшееся абсолютное значение уровня коэффициента преобразования, которое кодируют кодом Голомба-Райса в положении сканирования n. Когда abs_remainder[ n ] не присутствует, abs_remainder[ n ] равен 0.[85] abs_remainder[ n ] represents the remaining absolute value of the transform coefficient level that is encoded by the Golomb-Rice code at scan position n. When abs_remainder[ n ] is not present, abs_remainder[ n ] is equal to 0.

[86] Кроме того, в VVC элементы синтаксиса, такие как sig_coeff_flag и abs_level_gtx_flag, кодируют с использованием контекстного режима, в то время как abs_remainder кодируют с использованием обходного режима. Как упомянуто выше, кодирование в контекстном режиме является более сложным, чем кодирование в обходном режиме, что интуитивно означает более низкую скорость обработки. Если требуется закодировать большее количество коэффициентов, интенсивное использование кодирования в контекстном режиме повлияет на скорость декодирования. Следовательно, количество элементов синтаксиса, закодированных с использованием контекстного режима, может быть ограничено. Например, если количество двоичных чисел, закодированных с использованием контекстного режима, превышает пороговое значение, последующие коэффициенты принудительно кодируют с использованием обходного режима. Например, dec_abs_level в VVC.[86] Furthermore, in VVC, syntax elements such as sig_coeff_flag and abs_level_gtx_flag are encoded using the context mode, while abs_remainder is encoded using the bypass mode. As mentioned above, context mode encoding is more complex than bypass mode encoding, which intuitively means lower processing speed. If more coefficients need to be encoded, heavy use of context mode encoding will impact the decoding speed. Therefore, the number of syntax elements encoded using the context mode may be limited. For example, if the number of binary numbers encoded using the context mode exceeds a threshold, subsequent coefficients are forced to encode using the bypass mode. For example, dec_abs_level in VVC.

[87] dec_abs_level[ n ] представляет собой промежуточное значение, которое кодируют кодом Голомба-Райса в положении сканирования n. ZeroPos[ n ] может быть выведено во время анализа dec_abs_level[ n ], абсолютное значение уровня коэффициента преобразования в местоположении ( xC, yC ) AbsLevel[ xC ][ yC ] выводят следующим образом:[87] dec_abs_level[ n ] is the intermediate value which is encoded by Golomb-Rice code at scan position n. ZeroPos[ n ] can be derived during analysis of dec_abs_level[ n ], the absolute value of the transformation coefficient level at location ( xC, yC ) AbsLevel[ xC ][ yC ] is derived as follows:

если dec_abs_level[ n ] не присутствует или равно ZeroPos[ n ], AbsLevel[ xC ][ yC ] устанавливают равным 0.If dec_abs_level[ n ] is not present or equal to ZeroPos[ n ], AbsLevel[ xC ][ yC ] is set to 0.

В противном случае, если dec_abs_level[ n ] меньше ZeroPos[ n ], AbsLevel[ xC ][ yC ] устанавливают равным dec_abs_level[ n ] + 1;Otherwise, if dec_abs_level[ n ] is less than ZeroPos[ n ], AbsLevel[ xC ][ yC ] is set to dec_abs_level[ n ] + 1;

В противном случае (dec_abs_level[ n ] больше ZeroPos[ n ]), AbsLevel[ xC ][ yC ] устанавливают равным dec_abs_level[ n ].Otherwise (dec_abs_level[ n ] is greater than ZeroPos[ n ]), AbsLevel[ xC ][ yC ] is set equal to dec_abs_level[ n ].

[88] Вышеуказанные значения являются абсолютными значениями коэффициентов. Знак значимого коэффициента может быть определен с использованием флага знака коэффициента coeff_sign_flag или некоторых способов получения знака. coeff_sign_flag[n] можно использовать для определения знака коэффициента преобразования в положении сканирования n следующим образом:[88] The above values are the absolute values of the coefficients. The sign of the significant coefficient can be determined using the coefficient sign flag coeff_sign_flag or some sign-detection methods. coeff_sign_flag[n] can be used to determine the sign of the transform coefficient at scan position n as follows:

если coeff_sign_flag[n] равен 0, тогда соответствующий коэффициент преобразования положителен;if coeff_sign_flag[n] is 0, then the corresponding conversion coefficient is positive;

в противном случае (coeff_sign_flag[n] равно 1) соответствующий коэффициент преобразования отрицателен.otherwise (coeff_sign_flag[n] is 1) the corresponding transformation coefficient is negative.

[89] Если coeff_sign_flag[n] не присутствует, тогда coeff_sign_flag[n] равен 0. В этом случае знак коэффициента преобразования на координатах (xC, yC) определяют по CoeffSignLevel[xC][yC]:[89] If coeff_sign_flag[n] is not present, then coeff_sign_flag[n] is equal to 0. In this case, the sign of the transformation coefficient on the coordinates (xC, yC) is determined by CoeffSignLevel[xC][yC]:

если CoeffSignLevel[xC][yC] равен 0, тогда соответствующий коэффициент преобразования равен 0;if CoeffSignLevel[xC][yC] is 0, then the corresponding transformation coefficient is 0;

в противном случае, если CoeffSignLevel[xC][yC] равен 1, тогда соответствующий коэффициент преобразования положителен; в противном случае (CoeffSignLevel[xC][yC] равен -1) соответствующий коэффициент преобразования отрицателен.otherwise, if CoeffSignLevel[xC][yC] is 1, then the corresponding transformation coefficient is positive; otherwise (CoeffSignLevel[xC][yC] is -1), the corresponding transformation coefficient is negative.

[90] Следует также отметить, что CoeffSignLevel[xC][yC] может быть получен с использованием других способов, которые не будут повторяться в данном документе.[90] It should also be noted that CoeffSignLevel[xC][yC] can be obtained using other methods that will not be repeated in this paper.

[91] Кроме того, VVC использует флаг четности par_level_flag для значения коэффициента. Флаг указывает четность текущего коэффициента и используют при определении текущего значения коэффициента и при зависимом квантовании.[91] Additionally, VVC uses a parity flag, par_level_flag, for the coefficient value. The flag indicates the parity of the current coefficient and is used when determining the current coefficient value and for dependent quantization.

[92] par_level_flag[ n ] указывает четность уровня коэффициента преобразования в положении сканирования n. Когда par_level_flag[ n ] не присутствует, par_level_flag[ n ] равен 0.[92] par_level_flag [ n ] specifies the parity of the transform coefficient level at scan position n. When par_level_flag[ n ] is not present, par_level_flag[ n ] is 0.

[93] В дополнение к определению четности коэффициента преобразования par_level_flag может быть дополнительно использован для определения значения коэффициента в сочетании с abs_level_gtx_flag, abs_remainder и т. д.[93] In addition to determining the parity of the conversion factor, par_level_flag can be further used to determine the value of the factor in combination with abs_level_gtx_flag, abs_remainder, etc.

[94] В данном случае поскольку кодирование в контекстном режиме требует выбора, использования и обновления контекстных режимов, в то время как кодирование в обходном режиме этого не требует, обычной практикой является размещение элементов синтаксиса, закодированных в контекстном режиме, вместе и элементов синтаксиса, закодированных в обходном режиме, вместе в определенном диапазоне, что более удобно для конструкции аппаратного обеспечения. Например, сначала обрабатывают все элементы синтаксиса, закодированные в контекстном режиме, в блоке, а затем обрабатывают элементы синтаксиса, закодированные в обходном режиме. Все элементы синтаксиса, закодированные в контекстном режиме, в текущем блоке могут быть дополнительно разделены на несколько групп, а все элементы синтаксиса, закодированные в обходном режиме, в блоке могут быть дополнительно разделены на несколько групп.[94] In this case, since context mode encoding requires selecting, using, and updating context modes, while bypass mode encoding does not, it is common practice to place context mode-encoded syntax elements together and bypass mode-encoded syntax elements together in a certain range, which is more convenient for hardware design. For example, all context mode-encoded syntax elements in a block are processed first, and then the bypass mode-encoded syntax elements are processed. All context mode-encoded syntax elements in the current block may be further divided into multiple groups, and all bypass mode-encoded syntax elements in a block may be further divided into multiple groups.

[95] В одном конкретном примере конкретный синтаксис RRC проиллюстрирован в таблице 1.[95] In one specific example, the specific RRC syntax is illustrated in Table 1.

[96] Массив AbsLevel[xC][yC] представляет собой массив абсолютных значений коэффициентов преобразования текущего блока преобразования. Массив AbsLevelPass1[xC][yC] представляет собой массив абсолютных значений частичного восстановления коэффициентов преобразования текущего блока преобразования. Индексы xC и yC массива представляют положение (xC, yC) в текущем блоке преобразования.[96] The AbsLevel[xC][yC] array is an array of absolute values of the transformation coefficients of the current transformation block. The AbsLevelPass1[xC][yC] array is an array of absolute values of the partial reconstruction of the transformation coefficients of the current transformation block. The xC and yC indices of the array represent the position (xC, yC) in the current transformation block.

[97] После ввода функции residual_coding (x0, y0, log2TbWidth, log2TbHeight, cIdx) необходимо определить некоторую информацию о размере блока, такую как определение логарифмов log2ZoTbWidth и log2ZoTbHeight размера блока после нулевого вывода, где коэффициенты с горизонтальной координатой в диапазоне [0, (1& lt;<log2ZoTbWidth) -1] и вертикальной координатой в диапазоне [0, (1<<log2ZoTbHeight) -1] могут быть значимыми коэффициентами. В данном случае (1<<log2ZoTbWidth) представляет ширину блока преобразования после нулевого вывода, а (1<< log2ZoTbHeight) представляет высоту блока преобразования после нулевого вывода. Затем положение последнего значимого коэффициента определяют на основе last_sig_coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_suffix и т. д. Коэффициенты перед (предшествующим) последним значимым коэффициентом в порядке сканирования могут быть значимыми коэффициентами. Затем определяют значение remBinsPass1, т. е. определяют с использованием remBinsPass1=((1<<(log2TbWidth+log2TbHeight)) x 7)>>2. remBinsPass1 указывает количество элементов синтаксиса, которые кодируют с использованием контекстного режима в текущем блоке. В вариантах осуществления настоящего изобретения следует понимать, что remBinsPass1 означает оставшиеся двоичные файлы inpass1, то есть количество двоичных чисел, оставшихся в первом цикле. Коэффициенты перед последним значимым коэффициентом в порядке сканирования должны быть закодированы. Для подблоков, содержащих эти коэффициенты, определяют, нужно ли кодировать каждый текущий подблок, и если да, то способ устанавливает элементы синтаксиса, закодированные в контекстном режиме в подблоке в первом цикле, а элементы синтаксиса, закодированные в обходном режиме, позже. Для каждого коэффициента может потребоваться обработать не более 4 элементов синтаксиса, закодированных в контекстном режиме, т. е. один sig_coeff_flag, two abs_level_gtx_flag и один par_level_flag. В первом цикле remBinsPass1 уменьшается на 1 каждый раз, когда обрабатывают элемент синтаксиса, закодированный в контекстном режиме. Если коэффициент достаточно велик, оставшееся значение, т. е. abs_remainder, необходимо обработать после обработки элементов синтаксиса, закодированных в контекстном режиме в первом цикле. Если remBinsPass1 уже достаточно мал (не удовлетворяет remBinsPass1>=4), первый цикл заканчивается, и оставшиеся коэффициенты обрабатывают непосредственно в обходном режиме, т. е. dec_abs_ level.[97] After entering the residual_coding(x0, y0, log2TbWidth, log2TbHeight, cIdx) function, some information about the block size needs to be defined, such as defining the logarithms log2ZoTbWidth and log2ZoTbHeight of the block size after zero-output, where the coefficients with horizontal coordinate in the range [0, (1<<log2ZoTbWidth) - 1] and vertical coordinate in the range [0, (1<<log2ZoTbHeight) - 1] can be significant coefficients. In this case, (1<<log2ZoTbWidth) represents the width of the transform block after zero-output, and (1<< log2ZoTbHeight) represents the height of the transform block after zero-output. Then, the position of the last significant coefficient is determined based on last_sig_coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_suffix, etc. The coefficients before (preceding) the last significant coefficient in the scan order may be significant coefficients. Then, the value of remBinsPass1 is determined, i.e., determined using remBinsPass1=((1<<(log2TbWidth+log2TbHeight)) x 7)>>2. remBinsPass1 indicates the number of syntax elements that are encoded using the context mode in the current block. In embodiments of the present invention, it should be understood that remBinsPass1 means the remaining binaries of inpass1, that is, the number of binaries remaining in the first cycle. The coefficients before the last significant coefficient in the scan order must be encoded. For subblocks containing these coefficients, a determination is made whether each current subblock should be encoded. If so, the method sets the context-mode-encoded syntax elements in the subblock in the first round, and the bypass-mode-encoded syntax elements later. For each coefficient, a maximum of four context-mode-encoded syntax elements may need to be processed, i.e., one sig_coeff_flag, two abs_level_gtx_flags, and one par_level_flag. In the first round, remBinsPass1 is decremented by 1 each time a context-mode-encoded syntax element is processed. If the coefficient is large enough, the remaining value, i.e., abs_remainder, should be processed after the context-mode-encoded syntax elements in the first round. If remBinsPass1 is already small enough (does not satisfy remBinsPass1>=4), the first loop ends and the remaining coefficients are processed directly in bypass mode, i.e. dec_abs_ level.

[98] В другом конкретном примере конкретный синтаксис TSRC проиллюстрирован в таблице 2.[98] In another concrete example, the specific syntax of TSRC is illustrated in Table 2.

[99] После ввода функции residual_ts_coding (x0, y0, log2TbWidth, log2TbHeight, cIdx) необходимо определить некоторую информацию о размере блока. Затем значение RemCcbs определяют с использованием уравнения RemCcbs=((1<<(log2TbWidth+log2TbHeight))x7)>>2. RemCcbs указывает количество элементов синтаксиса в текущем блоке, которые кодируют с использованием контекстного режима. В вариантах осуществления настоящего изобретения следует понимать, что RemCcbs означает оставшиеся двоичные файлы с контекстным кодированием, то есть количество оставшихся двоичных чисел, закодированных в контекстном режиме. Для каждого подблока определяют, требуется ли кодирование текущего подблока. Если требуется кодирование, отличное от вышеописанного RRC, способ TSRC устанавливает элементы синтаксиса, закодированные в контекстном режиме, в подблоке в два цикла, причем для каждого коэффициента обрабатывают до четырех элементов синтаксиса, закодированных в контекстном режиме, в первом и втором циклах соответственно. Элементы синтаксиса, закодированные в обходном режиме, устанавливают позже. В первом и втором циклах remBinsPass1 уменьшается на 1 каждый раз, когда обрабатывают элемент синтаксиса, закодированный в контекстном режиме. Если коэффициент достаточно велик, оставшееся значение, т. е. abs_remainder, необходимо обработать после того, как элементы синтаксиса, закодированные в контекстном режиме, были обработаны в первом и втором циклах. Если remBinsPass1 достаточно мал (не удовлетворяет remBinsPass1>=4), первые два цикла будут закончены, а оставшиеся коэффициенты будут обработаны непосредственно в обходном режиме, в этом случае по-прежнему abs_remainder.[99] After entering the function residual_ts_coding(x0, y0, log2TbWidth, log2TbHeight, cIdx), it is necessary to determine some information about the block size. Then, the value of RemCcbs is determined using the equation RemCcbs=((1<<(log2TbWidth+log2TbHeight))x7)>>2. RemCcbs indicates the number of syntax elements in the current block that are encoded using the context mode. In embodiments of the present invention, it should be understood that RemCcbs means the remaining context-encoded binaries, that is, the number of remaining binaries encoded in the context mode. For each sub-block, it is determined whether encoding of the current sub-block is required. If a coding other than the above-described RRC is required, the TSRC method sets the context-mode-coded syntax elements in a sub-block in two rounds, with up to four context-mode-coded syntax elements being processed for each coefficient in the first and second rounds, respectively. Syntax elements encoded in the bypass mode are set later. In the first and second rounds, remBinsPass1 is decremented by 1 each time a context-mode-coded syntax element is processed. If the coefficient is large enough, the remaining value, i.e., abs_remainder, must be processed after the context-mode-coded syntax elements have been processed in the first and second rounds. If remBinsPass1 is small enough (does not satisfy remBinsPass1>=4), the first two rounds will be terminated, and the remaining coefficients will be processed directly in the bypass mode, in which case abs_remainder will still be used.

[100] Если коротко, текущий способ кодирования коэффициентов, доступный в известном уровне техники, обладает хорошей эффективностью сжатия для видео, которые обычно используют на сегодняшний день, таких как потребительское видео. Потребительское видео обычно имеет битовую глубину 8 или 10 бит на пиксель, а битовая скорость обычно не слишком высока, обычно несколько мегабит в секунду (МБ/с) или меньше. Однако существуют некоторые приложения, в которых для видео требуется более высокая битовая глубина, например, 12, 14 или 16 бит на пиксель или выше. Более высокая битовая глубина обычно приводит к более большим коэффициентам, более значимым коэффициентам и, следовательно, к более высокой битовой скорости. Существуют также приложения, где для видео требуется более высокое качество, что обычно приводит к более большим коэффициентам, более значимым коэффициентам и, следовательно, более высокой битовой скорости. Более высокая битовая скорость требует большей мощности для обработки данных декодера, таких как пропускная способность.[100] In short, the current coefficient coding method available in the prior art has good compression efficiency for videos that are commonly used today, such as consumer video. Consumer video typically has a bit depth of 8 or 10 bits per pixel, and the bit rate is usually not too high, typically a few megabits per second (MB/s) or less. However, there are some applications in which video requires a higher bit depth, such as 12, 14, or 16 bits per pixel or higher. A higher bit depth usually results in larger coefficients, more significant coefficients, and therefore a higher bit rate. There are also applications in which higher quality video is required, which usually results in larger coefficients, more significant coefficients, and therefore a higher bit rate. A higher bit rate requires more processing power for the decoder, such as bandwidth.

[101] Видео с высокой битовой глубиной, высоким качеством и высокой битовой скоростью (называемое «видео с тройной высокой четкостью») обычно требует кодирования большего количества коэффициентов, чем видео с низкой битовой глубиной, низким качеством и низкой битовой скоростью (называемое «обычным видео»). Например, для блока того же размера количество коэффициентов, которые необходимо закодировать в видео с тройной высокой четкостью, намного больше, чем в обычном видео. Это связано с тем, что для обычного видео многие коэффициенты в блоке после предсказания, преобразования и квантования становятся равными 0, в то время как для видео с тройной высокой четкостью многие коэффициенты в блоке после предсказания, преобразования и квантования по-прежнему являются значимыми коэффициентами. Для обычного видео, поскольку большой процент коэффициентов, подлежащих кодированию в блоке после предсказания, преобразования и квантования, равен 0, очень эффективно использовать положение последнего значимого коэффициента (LastSignificantCoeffX, LastSignificantCoeffY), чтобы различать области с коэффициентами, подлежащими или не подлежащими кодированию. Кроме того, большой процент коэффициентов перед положением последнего значимого коэффициента также равен нулю, и, таким образом, очень эффективно дополнительно различать, нуждается ли текущий подблок в кодировании или нет, используя sb_coded_flag, чтобы указать, закодирован ли подблок. Однако, когда в текущем блоке существует большее количество значимых коэффициентов, или даже большинство или все коэффициенты являются значимыми коэффициентами, использование положения последнего значимого коэффициента и флага, указывающего, закодирован ли подблок, как упомянуто выше, не может отфильтровать слишком много значимых коэффициентов. Кроме того, кодирование положений последнего значимого коэффициента и флаг, указывающий, закодирован ли подблок в битовом потоке, вызовет некоторое непроизводительное потребление ресурсов, что приведет к нерациональному их использованию.[101] Video with high bit depth, high quality, and high bit rate (called "triple HD video") typically requires encoding more coefficients than video with low bit depth, low quality, and low bit rate (called "normal video"). For example, for a block of the same size, the number of coefficients that need to be encoded in triple HD video is much larger than in normal video. This is because for normal video, many coefficients in the block become 0 after prediction, transform, and quantization, while for triple HD video, many coefficients in the block are still significant coefficients after prediction, transform, and quantization. For normal video, since a large percentage of the coefficients to be encoded in a block after prediction, transformation, and quantization are 0, it is very effective to use the position of the last significant coefficient (LastSignificantCoeffX, LastSignificantCoeffY) to distinguish between regions with coefficients to be encoded and those not to be encoded. Furthermore, a large percentage of the coefficients before the position of the last significant coefficient are also 0, and thus it is very effective to further distinguish whether the current subblock needs encoding or not by using sb_coded_flag to indicate whether the subblock is encoded. However, when there are a large number of significant coefficients in the current block, or even most or all of the coefficients are significant coefficients, using the position of the last significant coefficient and the flag indicating whether the subblock is encoded, as mentioned above, cannot filter out too many significant coefficients. In addition, encoding the positions of the last significant coefficient and the flag indicating whether the sub-block is encoded in the bitstream will cause some overhead, resulting in resource wastage.

[102] С другой стороны, положение последнего значимого коэффициента и флаг, указывающий, закодирован ли подблок, кодируют в контекстном режиме, который является более сложным, чем обходной режим. Обработка такой информации также влияет на скорость и пропускную способность кодирования программного обеспечения и аппаратного обеспечения.[102] On the other hand, the position of the last significant coefficient and the flag indicating whether the sub-block is encoded are encoded in the context mode, which is more complex than the bypass mode. Processing such information also affects the speed and throughput of software and hardware encoding.

[103] В другом аспекте текущий способ кодирования положения последнего значимого коэффициента (LastSignificantCoeffX, LastSignificantCoeffY) заключается в кодировании координат положения последнего значимого коэффициента. В обычном видео значения LastSignificantCoeffX и LastSignificantCoeffY обычно невелики, поскольку большинство из значимых коэффициентов сосредоточено в верхнем левом углу, в то время как большая область в правом нижнем углу имеет нулевые коэффициенты. Однако в видео с тройной высокой четкостью большое количество значимых коэффициентов также присутствует в правом нижнем углу, что обычно приводит к большим значениям LastSignificantCoeffX и LastSignificantCoeffY и, следовательно, к большему потреблению ресурсов при кодировании больших значений в битовом потоке. Кроме того, настоящий способ может быть использован при сжатии без потерь, где квантование не может быть использовано, и в этом случае коэффициенты обычно являются более многочисленными и большими. В этом случае использование существующих связанных схем может привести к увеличению потребления ресурсов и нерациональному их использованию, и даже повлиять на скорость и пропускную способность кодирования.[103] In another aspect, the current method for encoding the position of the last significant coefficient (LastSignificantCoeffX, LastSignificantCoeffY) is to encode the coordinates of the position of the last significant coefficient. In normal video, the values of LastSignificantCoeffX and LastSignificantCoeffY are usually small, since most of the significant coefficients are concentrated in the upper left corner, while a large area in the lower right corner has zero coefficients. However, in triple high definition video, a large number of significant coefficients are also present in the lower right corner, which usually leads to large values of LastSignificantCoeffX and LastSignificantCoeffY and, therefore, to greater resource consumption when encoding large values in the bitstream. Furthermore, the present method can be used in lossless compression, where quantization cannot be used, in which case the coefficients are usually more numerous and larger. In this case, using existing related schemes may lead to increased resource consumption and inefficient use of resources, and even affect the encoding speed and throughput.

[104] Варианты осуществления настоящего изобретения предусматривают способ декодирования коэффициента, который применяют к декодеру. Анализируют битовый поток с получением флага, относящегося к видео. Когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, битовый поток анализируют с получением флага обратного положения последнего значимого коэффициента и информации о координате последнего значимого коэффициента. Когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока, положение последнего значимого коэффициента определяют путем вычисления с использованием информации о координате последнего значимого коэффициента. Согласно заданному порядку сканирования все коэффициенты перед положением последнего значимого коэффициента декодируют для определения коэффициентов текущего блока.[104] Embodiments of the present invention provide a coefficient decoding method that is applied to a decoder. A bitstream is analyzed to obtain a flag related to the video. When the video-related flag indicates that the video satisfies a predetermined condition, the bitstream is analyzed to obtain a last significant coefficient position inversion flag and information on the coordinate of the last significant coefficient. When the last significant coefficient position inversion flag indicates that the position of the last significant coefficient is reversed for the current block, the position of the last significant coefficient is determined by calculation using the information on the coordinate of the last significant coefficient. According to a predetermined scanning order, all coefficients before the position of the last significant coefficient are decoded to determine the coefficients of the current block.

[105] Варианты осуществления настоящего изобретения дополнительно предусматривают способ кодирования коэффициентов, который применяют к кодеру. Определяют флаг, относящийся к видео, и положение последнего значимого коэффициента. Когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, определяют флаг обратного положения последнего значимого коэффициента. Информацию о координате последнего значимого коэффициента определяют согласно положению последнего значимого коэффициента и флагу обратного положения последнего значимого коэффициента. Все коэффициенты перед положением последнего значимого коэффициента кодируют согласно заданному порядку сканирования, а битовую информацию, полученную с помощью кодирования, флаг, относящийся к видео, и информацию о координате последнего значимого коэффициента передают в битовый поток.[105] Embodiments of the present invention further provide a method for encoding coefficients that is applied to an encoder. A flag related to the video and the position of the last significant coefficient are determined. When the flag related to the video indicates that the video satisfies a predetermined condition, a flag of the inverse position of the last significant coefficient is determined. Information on the coordinate of the last significant coefficient is determined according to the position of the last significant coefficient and the flag of the inverse position of the last significant coefficient. All coefficients before the position of the last significant coefficient are encoded according to a predetermined scanning order, and the bit information obtained by encoding, the flag related to the video, and the information on the coordinate of the last significant coefficient are transmitted to a bitstream.

[106] Таким образом, в сценариях кодирования видео с высокой битовой глубиной, высокой битовой скоростью, высоким качеством или сжатием без потерь, поскольку шаблон распределения коэффициентов отличается от такового в сценариях с обычным видео, во время кодирования коэффициентов за счет уменьшения или даже устранения количества элементов синтаксиса, закодированных в режиме контекста, таких как элементы синтаксиса о положении последнего значимого коэффициента, флаги кодированного подблока и т. д., или дополнительное выполнение преобразования координаты в случае, когда значения координат последнего значимого коэффициента слишком велики, может быть уменьшено потребление ресурсов, вызванное кодированием в битовом потоке, и, таким образом, могут быть улучшены пропускная способность и скорость кодирования коэффициентов. В дополнение эффективность сжатия также может быть повышена, поскольку уменьшенные или устраненные элементы синтаксиса оказывают меньшее влияние на кодирование видео при высокой битовой глубине, высокой битовой скорости, высоком качестве или сжатии без потерь.[106] Therefore, in high-bit-depth, high-bit-rate, high-quality, or lossless compression video coding scenarios, since the coefficient distribution pattern is different from that in conventional video scenarios, during coefficient coding, by reducing or even eliminating the number of syntax elements encoded in the context mode, such as syntax elements about the position of the last significant coefficient, coded sub-block flags, etc., or by additionally performing coordinate transformation in the case where the coordinate values of the last significant coefficient are too large, the resource consumption caused by coding in the bitstream can be reduced, and thus the throughput and coding speed of the coefficients can be improved. In addition, the compression efficiency can also be improved since the reduced or eliminated syntax elements have less impact on video coding in high-bit-depth, high-bit-rate, high-quality, or lossless compression scenarios.

[107] Варианты осуществления настоящего изобретения будут подробно описаны ниже в сочетании с прилагаемыми графическими материалами.[107] Embodiments of the present invention will be described in detail below in conjunction with the accompanying drawings.

[108] Как показано на фиг. 8A, на фиг. 8A проиллюстрирована примерная блок-схема состава системы кодера, представленного в вариантах осуществления настоящего изобретения. Как показано на фиг. 8A, кодер 100 может содержать узел 101 разбиения, узел 102 предсказания, первый сумматор 107, узел 108 преобразования, узел 109 квантования, узел 110 обратного квантования, узел 111 обратного преобразования, второй сумматор 112, узел 113 фильтрации, узел 114 буфера для декодированного изображения (DPB) и узел 115 кодирования энтропии. В данном случае входными данными кодера 100 могут быть видео, включающее серию изображений или неподвижное изображение, а выходными данными кодера 100 могут быть битовый поток, представляющий сжатую версию входного видео.[108] As shown in Fig. 8A, Fig. 8A illustrates an exemplary block diagram of the composition of an encoder system presented in embodiments of the present invention. As shown in Fig. 8A, the encoder 100 may comprise a partitioning unit 101, a prediction unit 102, a first adder 107, a transform unit 108, a quantization unit 109, an inverse quantization unit 110, an inverse transform unit 111, a second adder 112, a filtering unit 113, a decoded picture buffer (DPB) unit 114, and an entropy encoding unit 115. In this case, the input data of the encoder 100 may be a video including a series of images or a still image, and the output data of the encoder 100 may be a bitstream representing a compressed version of the input video.

[109] Узел 101 разбиения разбивает изображение во входном видео на один или более узлов кодового дерева (CTU). Узел 101 разбиения разбивает изображение на множество тайлов и может дополнительно разбивать один тайл на один или более пакетов, где тайл или пакет может включать один или более полных и/или частичных CTU. Кроме того, узел 101 разбиения может генерировать один или более слайсов, где один слайс может включать один или более тайлов в растровом порядке на изображении, или один или более тайлов, покрывающих прямоугольную область на изображении. Узел 101 разбиения может также генерировать один или более фрагментов изображения, где один фрагмент изображения может включать один или более слайсов, тайлов или пакетов.[109] The partitioning node 101 partitions an image in the input video into one or more coding tree units (CTUs). The partitioning node 101 partitions the image into a plurality of tiles and may further partition one tile into one or more packages, where a tile or package may include one or more full and/or partial CTUs. In addition, the partitioning node 101 may generate one or more slices, where one slice may include one or more tiles in raster order in the image, or one or more tiles covering a rectangular region in the image. The partitioning node 101 may also generate one or more image fragments, where one image fragment may include one or more slices, tiles, or packages.

[110] Во время процесса кодирования кодера 100 узел 101 разбиения передает CTU в узел 102 предсказания. Обычно узел 102 предсказания может включать узел 103 разбиения блоков, узел 104 оценки движения (ME), узел 105 компенсации движения (MC) и узел 106 внутреннего предсказания. В частности, узел 103 разбиения блоков дополнительно разбивает входной CTU на меньшие узлы кодирования (CU) путем итеративного использования разбиения на основе четверичного дерева, разбиения на основе двоичного дерева и разбиения на основе троичного дерева. Узел 102 предсказания может использовать узел 104 ME и узел 105 MC для получения промежуточного блока предсказания CU. Узел 106 внутреннего предсказания может получить блок внутреннего предсказания CU с использованием различных режимов внутреннего предсказания, включая режим MIP. В примерах, способ оценки движения, основанный на оптимизации уровня искажения (RDO) может быть вызван узлом 104 ME и узлом 105 MC для получения блока промежуточного предсказания, а способ определения режима, основанный на RDO, может быть вызван узлом 106 внутреннего предсказания для получения блока внутреннего предсказания.[110] During the encoding process of the encoder 100, the partitioning node 101 transmits the CTU to the prediction node 102. Typically, the prediction node 102 may include a block partitioning node 103, a motion estimation (ME) node 104, a motion compensation (MC) node 105, and an intra-prediction node 106. In particular, the block partitioning node 103 further partitions the input CTU into smaller coding units (CUs) by iteratively using a quaternary tree-based partition, a binary tree-based partition, and a ternary tree-based partition. The prediction node 102 may use the ME node 104 and the MC node 105 to obtain an intermediate prediction block of the CU. The intra-prediction node 106 may obtain the intra-prediction block of the CU using various intra-prediction modes, including the MIP mode. In examples, a motion estimation method based on distortion level optimization (RDO) may be called by the ME node 104 and the MC node 105 to obtain an intermediate prediction block, and a mode determination method based on RDO may be called by the intra prediction node 106 to obtain an intra prediction block.

[111] Узел 102 предсказания выводит блок предсказания CU, а первый сумматор 107 вычисляет разницу, т. е. остаточный CU, между CU, выводимым узлом 101 разбиения, и блоком предсказания CU. Узел 108 преобразования считывает остаточный CU и выполняет одно или более преобразований на остаточном CU для получения коэффициентов. Узел 109 квантования квантует коэффициенты и выводит квантованные коэффициенты (т. е. уровни). Узел 110 обратного квантования выполняет операции масштабирования на квантованных коэффициентах для вывода восстановленных коэффициентов. Узел 111 обратного преобразования выполняет одно или более обратных преобразований, соответствующих преобразованиям в узле 108 преобразования и выводит восстановленные остатки. Второй сумматор 112 вычисляет восстановленный CU путем суммирования восстановленных остатков и блока предсказания CU из узла 102 предсказания. Второй сумматор 112 также передает свой выход в узел 102 предсказания для использования в качестве эталона для внутреннего предсказания. После того, как все CU на изображении или фрагменте изображения будут восстановлены, узел 113 фильтрации выполняет контурную фильтрацию на восстановленном изображении или фрагменте изображения. В данном случае узел 113 фильтрации содержит один или более фильтров, например деблокирующий фильтр, адаптивный фильтр смещения дискретного значения (SAO), адаптивный контурный фильтр (ALF), фильтр отображения яркости с масштабированием цветности (LMCS), фильтр на основе нейронной сети и т. п. Альтернативно, если узел 113 фильтрации определяет, что CU не должен быть использован в качестве эталона для кодирования других CU, при этом узел 113 фильтрации выполняет контурную фильтрацию по одному или более целевым пикселям в CU.[111] The prediction unit 102 outputs a CU prediction block, and the first adder 107 calculates the difference, i.e., the residual CU, between the CU output by the partition unit 101 and the CU prediction block. The transform unit 108 reads the residual CU and performs one or more transforms on the residual CU to obtain coefficients. The quantization unit 109 quantizes the coefficients and outputs the quantized coefficients (i.e., levels). The inverse quantization unit 110 performs scaling operations on the quantized coefficients to output the reconstructed coefficients. The inverse transform unit 111 performs one or more inverse transforms corresponding to the transforms in the transform unit 108 and outputs the reconstructed residuals. The second adder 112 calculates the reconstructed CU by summing the reconstructed residuals and the CU prediction block from the prediction unit 102. The second adder 112 also transmits its output to the prediction unit 102 for use as a reference for intra prediction. After all CUs in the image or image sub-section have been reconstructed, the filtering unit 113 performs loop filtering on the reconstructed image or image sub-section. In this case, the filtering unit 113 comprises one or more filters, such as a deblocking filter, an adaptive discrete offset (SAO) filter, an adaptive loop filter (ALF), a luminance mapping filter with chroma scaling (LMCS), a neural network-based filter, etc. Alternatively, if the filtering unit 113 determines that the CU should not be used as a reference for coding other CUs, the filtering unit 113 performs loop filtering on one or more target pixels in the CU.

[112] Выходом узла 113 фильтрации является декодированные изображения или фрагменты изображения, которые буферизуются в узел 114 DPB. Узел 114 DPB выводит декодированные изображения или фрагменты изображения на основе информации о синхронизации и управлении. В данном случае изображения, хранящиеся в узле 114 DPB, также можно использовать в качестве эталона для узла 102 предсказания для выполнения промежуточного предсказания или внутреннего предсказания. Наконец, узел 115 кодирования энтропии преобразует параметры, необходимые для декодирования изображений (например, параметры управления и дополнительную информацию, и т. д.) из кодера 100 в двоичную форму, и передает сигналы такой двоичной формы в битовый поток согласно структуре синтаксиса каждого узла данных, т. е. кодер 100, наконец, выводит битовый поток.[112] The output of the filtering unit 113 is decoded images or sub-images, which are buffered in the DPB unit 114. The DPB unit 114 outputs the decoded images or sub-images based on the synchronization and control information. In this case, the images stored in the DPB unit 114 can also be used as a reference for the prediction unit 102 to perform intermediate prediction or intra prediction. Finally, the entropy encoding unit 115 converts the parameters necessary for decoding the images (for example, control parameters and additional information, etc.) from the encoder 100 into binary form, and transmits signals of such binary form into a bit stream according to the syntax structure of each data node, i.e., the encoder 100 finally outputs the bit stream.

[113] Кроме того, кодер 100 может содержать первый процессор и первое запоминающее устройство, которое записывает компьютерную программу. Когда первый процессор считывает и запускает компьютерную программу, кодер 100 считывает входное видео и генерирует соответствующий битовый поток. Альтернативно, кодер 100 может представлять собой вычислительное устройство, имеющее один или более чипов. Данные узлы, реализованные в виде интегральных микросхем на чипе, имеют функции подключения и обмена данными, аналогичные соответствующим узлам на фиг. 8A.[113] Furthermore, the encoder 100 may comprise a first processor and a first memory device that stores a computer program. When the first processor reads and runs the computer program, the encoder 100 reads the input video and generates a corresponding bitstream. Alternatively, the encoder 100 may be a computing device having one or more chips. These nodes, implemented as integrated circuits on a chip, have connection and data exchange functions similar to the corresponding nodes in Fig. 8A.

[114] Как показано на фиг. 8B, на фиг. 8B проиллюстрирована примерная блок-схема состава системы декодера, представленного в вариантах осуществления настоящего изобретения. Как показано на фиг. 8B, декодер 200 может содержать узел 201 анализа, узел 202 предсказания, узел 205 обратного квантования, узел 206 обратного преобразования, сумматор 207, узел 208 фильтрации и узел 209 DPB. В данном случае входными данными декодера 200 является битовый поток, представляющий сжатую версию видео или неподвижного изображения, а выходными данными декодера 200 может быть битовый поток, включающий декодированное видео, включающее серию изображений или декодированное неподвижное изображение.[114] As shown in Fig. 8B, Fig. 8B illustrates an exemplary block diagram of the composition of a decoder system presented in embodiments of the present invention. As shown in Fig. 8B, a decoder 200 may comprise an analysis unit 201, a prediction unit 202, an inverse quantization unit 205, an inverse transform unit 206, an adder 207, a filtering unit 208, and a DPB unit 209. In this case, the input of the decoder 200 is a bitstream representing a compressed version of a video or a still image, and the output of the decoder 200 may be a bitstream including decoded video including a series of images or a decoded still image.

[115] Входной битовый поток декодера 200 может быть битовым потоком, сгенерированным кодером 100. Узел 201 анализа анализирует входной битовый поток и получает значения элементов синтаксиса из входного битового потока. Узел 201 анализа преобразует двоичное представление элемента синтаксиса в числовое значение и отправляет числовое значение в узел в декодере 200 для получения одного или более декодированных изображений. Узел 201 анализа может также анализировать один или более элементов синтаксиса из входного битового потока для отображения декодированного изображения.[115] The input bitstream of the decoder 200 may be a bitstream generated by the encoder 100. The analysis unit 201 analyzes the input bitstream and obtains the values of the syntax elements from the input bitstream. The analysis unit 201 converts the binary representation of the syntax element into a numerical value and sends the numerical value to a node in the decoder 200 to obtain one or more decoded images. The analysis unit 201 may also analyze one or more syntax elements from the input bitstream to display the decoded image.

[116] Во время процесса декодирования декодера 200 узел 201 анализа отправляет в узел в декодере 200 значения элементов синтаксиса и одну или более переменных, установленных или определенных согласно значениям элементов синтаксиса для получения одного или более декодированных изображений.[116] During the decoding process of the decoder 200, the analysis node 201 sends to the node in the decoder 200 the values of the syntax elements and one or more variables set or determined according to the values of the syntax elements to obtain one or more decoded images.

[117] Узел 202 предсказания определяет блок прогнозирования для текущего блока декодирования (например, CU). В данном случае узел 202 предсказания может включать узел 203 компенсации движения и узел 204 внутреннего предсказания. В частности, когда для декодирования текущего блока декодирования указан режим промежуточного декодирования, узел 202 предсказания передает соответствующие параметры из узла 201 анализа в узел 203 компенсации движения для получения блока промежуточного предсказания. Когда режим внутреннего предсказания (включая режим MIP, обозначенный значением индекса MIP) указан для декодирования текущего блока декодирования, узел 202 предсказания передает соответствующие параметры из узла 201 анализа в узел 204 внутреннего предсказания для получения блока внутреннего предсказания.[117] The prediction unit 202 determines a prediction block for the current decoding block (e.g., CU). In this case, the prediction unit 202 may include a motion compensation unit 203 and an intra prediction unit 204. In particular, when an intermediate decoding mode is indicated for decoding the current decoding block, the prediction unit 202 transmits the corresponding parameters from the analysis unit 201 to the motion compensation unit 203 to obtain the intermediate prediction block. When an intra prediction mode (including the MIP mode indicated by the MIP index value) is indicated for decoding the current decoding block, the prediction unit 202 transmits the corresponding parameters from the analysis unit 201 to the intra prediction unit 204 to obtain the intra prediction block.

[118] Узел 205 обратного квантования имеет такую же функцию, что и узел 110 обратного квантования в кодере 100. Узел 205 обратного квантования выполняет операции масштабирования в отношении коэффициентов квантования (т. е. уровней) из узла 201 анализа для получения восстановленных коэффициентов.[118] The inverse quantization unit 205 has the same function as the inverse quantization unit 110 in the encoder 100. The inverse quantization unit 205 performs scaling operations on the quantization coefficients (i.e., levels) from the analysis unit 201 to obtain reconstructed coefficients.

[119] Узел 206 обратного преобразования имеет такую же функцию, что и узел 111 обратного преобразования в кодере 100. Узел 206 обратного преобразования выполняет одно или более преобразований (т. е. обратные операции одного или более преобразований, выполняемых узлом 111 обратного преобразования в кодере 100) для получения восстановленных остатков.[119] The inverse transform unit 206 has the same function as the inverse transform unit 111 in the encoder 100. The inverse transform unit 206 performs one or more transforms (i.e., the inverse operations of one or more transforms performed by the inverse transform unit 111 in the encoder 100) to obtain reconstructed residuals.

[120] Сумматор 207 выполняет операцию суммирования на своих входных данных (блок предсказания из узла 202 предсказания и восстановленные остатки из узла 206 обратного преобразования) для получения восстановленного блока текущего блока декодирования. Восстановленный блок также отправляется на узел 202 предсказания для использования в качестве эталона для других блоков, кодируемых в режиме внутреннего предсказания.[120] The adder 207 performs a summation operation on its input data (the prediction block from the prediction node 202 and the reconstructed residuals from the inverse transform node 206) to obtain a reconstructed block of the current decoding block. The reconstructed block is also sent to the prediction node 202 to be used as a reference for other blocks encoded in the intra-prediction mode.

[121] После того, как все CU на изображении или фрагменте изображения будут восстановлены, узел 208 фильтрации выполняет контурную фильтрацию на восстановленном изображении или фрагменте изображения. Узел 208 фильтрации содержит один или более фильтров, например деблокирующий фильтр, адаптивный компенсационный фильтр выборки, адаптивный контурный фильтр, фильтры отображения яркости и масштабирования цветности и фильтры на основе нейронной сети. Альтернативно, когда узел 208 фильтрации определяет, что восстановленный блок не должен быть использован в качестве эталона для декодирования других блоков, узел 208 фильтрации выполняет контурную фильтрацию по одному или более целевым пикселям в восстановленном блоке. В данном случае выходные данные узла 208 фильтрации представляют собой декодированное изображение или фрагмент изображения, и декодированное изображение или фрагмент изображения буферизуют в узел 209 DPB. Узел 209 DPB выводит декодированное изображение или фрагмент изображения на основе информации о синхронизации и управлении. Изображение, хранящееся в узле 209 DPB, может быть также использовано в качестве эталона для выполнения промежуточного предсказания или внутреннего предсказания узлом 202 предсказания.[121] After all CUs in the image or sub-image are reconstructed, the filtering unit 208 performs loop filtering on the reconstructed image or sub-image. The filtering unit 208 comprises one or more filters, such as a deblocking filter, an adaptive sample compensation filter, an adaptive loop filter, brightness mapping and color scaling filters, and neural network-based filters. Alternatively, when the filtering unit 208 determines that the reconstructed block should not be used as a reference for decoding other blocks, the filtering unit 208 performs loop filtering on one or more target pixels in the reconstructed block. In this case, the output of the filtering unit 208 is a decoded image or sub-image, and the decoded image or sub-image is buffered in the DPB unit 209. The DPB unit 209 outputs the decoded image or sub-image based on the synchronization and control information. The image stored in the DPB node 209 may also be used as a reference for performing intermediate prediction or intra prediction by the prediction node 202.

[122] Кроме того, декодер 200 может содержать второй процессор и второе запоминающее устройство, которое записывает компьютерную программу. Когда первый процессор считывает и запускает компьютерную программу, декодер 200 считывает входной битовый поток и генерирует соответствующее декодированное изображение. Альтернативно, декодер 200 может представлять собой вычислительное устройство, имеющее один или более чипов. Данные узлы, реализованные в виде интегральных микросхем на чипе, имеют функции подключения и обмена данными, аналогичные соответствующим узлам на фиг. 8B.[122] In addition, the decoder 200 may comprise a second processor and a second memory device that stores a computer program. When the first processor reads and runs the computer program, the decoder 200 reads the input bit stream and generates a corresponding decoded image. Alternatively, the decoder 200 may be a computing device having one or more chips. These nodes, implemented as integrated circuits on a chip, have connection and data exchange functions similar to the corresponding nodes in Fig. 8B.

[123] Также следует отметить, что когда варианты осуществления настоящего изобретения применяют к кодеру 100, «текущий блок» конкретно относится к текущему блоку, подлежащему кодированию в видеоизображении (который также может быть упомянут как «блок кодирования»). Когда варианты осуществления настоящего изобретения применяют к декодеру 200, «текущий блок» конкретно относится к текущему блоку, подлежащему декодированию в видеоизображении (который также может быть упомянут как «блок декодирования»).[123] It should also be noted that when embodiments of the present invention are applied to the encoder 100, the “current block” specifically refers to the current block to be encoded in the video image (which may also be referred to as a “coding block”). When embodiments of the present invention are applied to the decoder 200, the “current block” specifically refers to the current block to be decoded in the video image (which may also be referred to as a “decoding block”).

[124] В одном варианте осуществления настоящего изобретения, обращаясь к фиг. 9, на фиг. 9 проиллюстрирована схематическая блок-схема способа декодирования коэффициента, предоставленного в вариантах осуществления настоящего изобретения. Как показано на фиг. 9, способ может включать следующее.[124] In one embodiment of the present invention, referring to Fig. 9, Fig. 9 illustrates a schematic flow chart of a coefficient decoding method provided in embodiments of the present invention. As shown in Fig. 9, the method may include the following.

[125] На этапе S901 анализируют битовый поток с получением флага, относящегося к видео.[125] In step S901, the bit stream is analyzed to obtain a flag related to the video.

[126] Следует отметить, что способ декодирования коэффициента в вариантах осуществления настоящего изобретения применяют к декодеру. В частности, на основе структуры состава декодера 200, проиллюстрированной на фиг. 8B, способ декодирования коэффициентов в вариантах осуществления настоящего изобретения в основном применяют к «узлу 201 анализа» декодера 200. Узел 201 анализа может использовать режим адаптивного двоичного арифметического кодирования, основанный на контекстной модели, или обходной режим для декодирования значений связанных флагов (или элементов синтаксиса) и, таким образом, определения коэффициентов текущего блока.[126] It should be noted that the coefficient decoding method in the embodiments of the present invention is applied to a decoder. In particular, based on the composition structure of the decoder 200 illustrated in Fig. 8B, the coefficient decoding method in the embodiments of the present invention is mainly applied to the “analysis unit 201” of the decoder 200. The analysis unit 201 may use an adaptive binary arithmetic coding mode based on a context model or a bypass mode to decode the values of associated flags (or syntax elements) and thus determine the coefficients of the current block.

[127] Следует также отметить, что кодирование коэффициентов, как обычно упоминается в стандартах видео, может включать как кодирование, так и декодирование. Таким образом, кодирование коэффициентов включает способ кодирования коэффициентов на стороне кодера и способ декодирования коэффициентов на стороне декодера. Вариант осуществления настоящего изобретения описан в отношении способа декодирования коэффициентов на стороне декодера.[127] It should also be noted that coefficient coding, as commonly referred to in video standards, may include both encoding and decoding. Thus, coefficient coding includes a method for encoding coefficients on the encoder side and a method for decoding coefficients on the decoder side. An embodiment of the present invention is described with respect to a method for decoding coefficients on the decoder side.

[128] Как правило, например, для обычного видео, способ декодирования коэффициентов является таким же, как и способы, доступные в предшествующем уровне техники. Однако для определенного случая, такого как сценарий кодирования видео с высокой битовой глубиной, высоким качеством, высокой битовой скоростью или сжатием без потерь, варианты осуществления настоящего изобретения могут модифицировать способ получения положения последнего значимого коэффициента.[128] Typically, for example, for normal video, the method for decoding the coefficients is the same as the methods available in the prior art. However, for a specific case, such as a high bit depth, high quality, high bit rate, or lossless compression video coding scenario, embodiments of the present invention may modify the method for obtaining the position of the last significant coefficient.

[129] В вариантах осуществления настоящего изобретения, во-первых, необходимо определить, удовлетворяет ли текущее видео заданному условию, которое может быть представлено флагом, относящимся к видео. В некоторых вариантах осуществления битовый поток может быть проанализирован для получения флага, относящегося к видео, следующим образом.[129] In embodiments of the present invention, it is first necessary to determine whether the current video satisfies a given condition, which may be represented by a flag related to the video. In some embodiments, the bitstream may be analyzed to obtain the flag related to the video as follows.

[130] Если флаг, относящийся к видео, имеет первое значение, определяют, что флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию.[130] If the video-related flag has the first value, it is determined that the video-related flag indicates that the video satisfies the specified condition.

[131] Альтернативно, если флаг, относящийся к видео, имеет второе значение, определяют, что флаг, относящийся к видео, указывает на то, что видео не удовлетворяет заданному условию[131] Alternatively, if the video-related flag has a second value, it is determined that the video-related flag indicates that the video does not satisfy the specified condition

[132] В данном случае первое значение равно 1, а второе значение равно 0.[132] In this case, the first value is 1 and the second value is 0.

[133] Следует отметить, что в другом конкретном примере первое значение также может быть установлено в значение «истина», а второе значение также может быть установлено в значение «ложь». В еще одном конкретном примере первое значение также может быть установлено в значение 0, а второе значение также может быть установлено в значение 1. Необязательно первое значение также может быть установлено в значение «ложь», а второе значение также может быть установлено в значение «истина». Настоящее изобретение этим не ограничено.[133] It should be noted that in another specific example, the first value may also be set to the value "true" and the second value may also be set to the value "false." In yet another specific example, the first value may also be set to the value 0 and the second value may also be set to the value 1. Optionally, the first value may also be set to the value "false" and the second value may also be set to the value "true." The present invention is not limited thereto.

[134] Также следует отметить, что заданное условие включает по меньшей мере одно из: высокой битовой глубины, высокого качества, высокой битовой скорости, высокой кадровой частоты или сжатия без потерь.[134] It should also be noted that the specified condition includes at least one of: high bit depth, high quality, high bit rate, high frame rate, or lossless compression.

[135] То есть по сравнению с обычными видео, видео, описанное в вариантах осуществления настоящего изобретения, обладает характеристикой высокой битовой глубины, высокого качества, высокой битовой скорости, высокой частоты кадров или сжатия без потерь.[135] That is, compared with conventional videos, the videos described in the embodiments of the present invention have the characteristic of high bit depth, high quality, high bit rate, high frame rate, or lossless compression.

[136] Кроме того, флаг, относящийся к видео, может быть флагом уровня последовательности или даже флагом более высокого уровня, таким как информация об удобстве использования видео (VUI), информация для дополнительной оптимизации (SEI) и т. д. То, удовлетворяет ли видео заданному условию, можно определить, определив, удовлетворяет ли видео высокой глубине, или удовлетворяет ли видео высокой битовой скорости, или удовлетворяет ли видео высокому качеству, или удовлетворяет ли видео сжатию без потерь и т. д. Ниже в качестве примеров описывается каждый из этих четырех случаев.[136] Furthermore, the flag related to the video may be a sequence-level flag or even a higher-level flag such as video usability information (VUI), supplemental optimization information (SEI), etc. Whether a video satisfies a given condition can be determined by determining whether the video satisfies high bit depth, or whether the video satisfies high bit rate, or whether the video satisfies high quality, or whether the video satisfies lossless compression, etc. Each of these four cases is described below as examples.

[137] В некоторых вариантах осуществления, когда флаг, относящийся к видео, является флагом высокой битовой глубины, способ может дополнительно включать следующее.[137] In some embodiments, when the video-related flag is a high bit depth flag, the method may further include the following.

[138] Если флаг высокой битовой глубины указывает на то, что видео удовлетворяет высокой битовой глубине, определяют, что видео удовлетворяет заданному условию.[138] If the high bit depth flag indicates that the video satisfies the high bit depth, it is determined that the video satisfies the specified condition.

[139] В некоторых вариантах осуществления, когда флаг, относящийся к видео, является флагом высокой битовой скорости, способ может дополнительно включать следующее.[139] In some embodiments, when the video-related flag is a high bit rate flag, the method may further include the following.

[140] Если флаг высокой битовой скорости указывает на то, что видео удовлетворяет высокой битовой скорости, определяют, что видео удовлетворяет заданному условию.[140] If the high bit rate flag indicates that the video satisfies the high bit rate, it is determined that the video satisfies the specified condition.

[141] В некоторых вариантах осуществления, когда флаг, относящийся к видео, является флагом высокого качества, способ может дополнительно включать следующее.[141] In some embodiments, when the flag related to the video is a high quality flag, the method may further include the following.

[142] Если флаг высокого качества указывает на то, что видео удовлетворяет высокому качеству, определяют, что видео удовлетворяет заданному условию.[142] If the high quality flag indicates that the video meets the high quality, the video is determined to meet the specified condition.

[143] В некоторых вариантах осуществления, когда флаг, относящийся к видео, является флагом сжатия без потерь, способ может дополнительно включать следующее.[143] In some embodiments, when the video-related flag is a lossless compression flag, the method may further include the following.

[144] Если флаг сжатия без потерь указывает на то, что видео удовлетворяет сжатию без потерь, определяют, что видео удовлетворяет заданному условию.[144] If the lossless compression flag indicates that the video satisfies lossless compression, the video is determined to satisfy the specified condition.

[145] В качестве примера, взяв в качестве примера уровень последовательности, флаг, относящийся к видео, может быть флагом высокой битовой глубины (представленным sps_high_bit_depth_flag) для указания того, является ли текущая видеопоследовательность последовательностью с высокой битовой глубиной. Флаг, относящийся к видео, также может быть флагом высокой битовой скорости (представленным sps_high_bit_rate_flag) для указания того, является ли текущая видеопоследовательность последовательностью с высокой битовой скоростью. Флаг, относящийся к видео, также может быть другим флагом, указывающим на высокую битовую глубину, высокую битовую скорость, высокое качество или сжатие без потерь, что конкретно не ограничено в вариантах осуществления настоящего изобретения.[145] Taking the sequence level as an example, the video-related flag may be a high bit depth flag (represented by sps_high_bit_depth_flag) to indicate whether the current video sequence is a high bit depth sequence. The video-related flag may also be a high bit rate flag (represented by sps_high_bit_rate_flag) to indicate whether the current video sequence is a high bit rate sequence. The video-related flag may also be another flag indicating high bit depth, high bit rate, high quality, or lossless compression, which is not particularly limited in the embodiments of the present invention.

[146] На этапе S902, когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, битовый поток анализируют с получением флага обратного положения последнего значимого коэффициента и информации о координате последнего значимого коэффициента.[146] In step S902, when the flag related to the video indicates that the video satisfies a predetermined condition, the bit stream is analyzed to obtain a flag of the reverse position of the last significant coefficient and information about the coordinate of the last significant coefficient.

[147] Следует отметить, что когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, битовый поток может быть дополнительно проанализирован с получением флага обратного положения последнего значимого коэффициента и информации о координате последнего значимого коэффициента.[147] It should be noted that when a flag related to a video indicates that the video satisfies a given condition, the bitstream may be further analyzed to obtain a flag of the reverse position of the last significant coefficient and information about the coordinate of the last significant coefficient.

[148] Информация о координате последнего значимого коэффициента может быть определена из last_sig_coeff_x_ prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_prefix и last_sig_coeff_y_suffix. Таким образом, в некоторых вариантах осуществления битовый поток может быть проанализирован для получения информации о координате последнего значащего коэффициента следующим образом.[148] The coordinate information of the last significant coefficient may be determined from last_sig_coeff_x_prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_prefix, and last_sig_coeff_y_suffix. Thus, in some embodiments, the bitstream may be parsed to obtain the coordinate information of the last significant coefficient as follows.

[149] Битовый поток анализируют с получением информации о префиксе горизонтальной координаты последнего значимого коэффициента, информации о префиксе вертикальной координаты последнего значимого коэффициента, информации о суффиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента. Горизонтальную координату последнего значимого коэффициента определяют согласно информации о префиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе горизонтальной координаты последнего значимого коэффициента. Вертикальную координату последнего значимого коэффициента определяют согласно информации о префиксе вертикальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента. Информацию о координате последнего значимого коэффициента определяют согласно горизонтальной координате последнего значимого коэффициента и вертикальной координате последнего значимого коэффициента.[149] The bit stream is analyzed to obtain information about the prefix of the horizontal coordinate of the last significant coefficient, information about the prefix of the vertical coordinate of the last significant coefficient, information about the suffix of the horizontal coordinate of the last significant coefficient, and information about the suffix of the vertical coordinate of the last significant coefficient. The horizontal coordinate of the last significant coefficient is determined according to the information about the prefix of the horizontal coordinate of the last significant coefficient and the information about the suffix of the horizontal coordinate of the last significant coefficient. The vertical coordinate of the last significant coefficient is determined according to the prefix of the vertical coordinate of the last significant coefficient and the suffix of the vertical coordinate of the last significant coefficient. The information about the coordinate of the last significant coefficient is determined according to the horizontal coordinate of the last significant coefficient and the vertical coordinate of the last significant coefficient.

[150] Следует отметить, что информация о префиксе горизонтальной координаты последнего значимого коэффициента представлена last_sig_coeff_x_prefix, который указывает префикс горизонтальной координаты (или столбца) последнего значимого коэффициента в заданном порядке сканирования в текущем блоке. Информация о префиксе вертикальной координаты последнего значимого коэффициента представлена last_sig_coeff_y_prefix, который указывает префикс вертикальной координаты (или строки) последнего значимого коэффициента в заданном порядке сканирования в текущем блоке. Информация о суффиксе горизонтальной координаты последнего значимого коэффициента представлена last_sig_coeff_x_suffix, который указывает суффикс горизонтальной координаты (или столбца) последнего значимого коэффициента в заданном порядке сканирования в текущем блоке. Информация о суффиксе вертикальной координаты последнего значимого коэффициента представлена last_sig_coeff_y_suffix, который указывает суффикс вертикальной координаты (или строки) последнего значимого коэффициента в заданном порядке сканирования в текущем блоке.[150] It should be noted that the information about the prefix of the horizontal coordinate of the last significant coefficient is represented by last_sig_coeff_x_prefix, which indicates the prefix of the horizontal coordinate (or column) of the last significant coefficient in the given scan order in the current block. The information about the prefix of the vertical coordinate of the last significant coefficient is represented by last_sig_coeff_y_prefix, which indicates the prefix of the vertical coordinate (or row) of the last significant coefficient in the given scan order in the current block. The information about the suffix of the horizontal coordinate of the last significant coefficient is represented by last_sig_coeff_x_suffix, which indicates the suffix of the horizontal coordinate (or column) of the last significant coefficient in the given scan order in the current block. The information about the suffix of the vertical coordinate of the last significant coefficient is represented by last_sig_coeff_y_suffix, which indicates the suffix of the vertical coordinate (or row) of the last significant coefficient in the given scan order in the current block.

[151] Следует также отметить, что last_sig_coeff_x_prefix и last_sig_coeff_x_suffix указывают абсциссу (т. е. горизонтальную координату) последнего значимого коэффициента, а last_sig_coeff_y_prefix и last_sig_coeff_y_suffix указывают ординату (т. е. вертикальную координату) последнего значимого коэффициента. Таким образом, получают информацию о координате последнего значимого коэффициента.[151] It should also be noted that last_sig_coeff_x_prefix and last_sig_coeff_x_suffix indicate the abscissa (i.e., horizontal coordinate) of the last significant coefficient, and last_sig_coeff_y_prefix and last_sig_coeff_y_suffix indicate the ordinate (i.e., vertical coordinate) of the last significant coefficient. Thus, information about the coordinate of the last significant coefficient is obtained.

[152] флаг обратного положения последнего значимого коэффициента может быть представлен как reverse_last_sig_coeff_flag. В вариантах осуществления настоящего изобретения флаг обратного положения последнего значимого коэффициента может быть по меньшей мере флагом: уровня последовательности, уровня изображения, уровня слайса или уровня блока; или даже флагом более высокого уровня (например, VUI, SEI и т. д.), что не будет ограничено в настоящем описании.[152] The flag of the reverse position of the last significant coefficient may be represented as reverse_last_sig_coeff_flag. In embodiments of the present invention, the flag of the reverse position of the last significant coefficient may be at least a flag of the sequence level, the picture level, the slice level, or the block level; or even a flag of a higher level (e.g., VUI, SEI, etc.), which will not be limited in the present description.

[153] То есть, reverse_last_sig_coeff_flag может быть флагом уровня последовательности или более высокого уровня или может также быть флагом уровня изображения, флагом уровня слайса, флагом уровня блока и т.п. Дополнительно, флаг уровня блока может включать флаг уровня самого большого узла кодирования (LCU) или флаг уровня узла кодирования (CU), или другой флаг уровня блока, что не ограничено в вариантах осуществления настоящего изобретения.[153] That is, reverse_last_sig_coeff_flag may be a sequence level or higher level flag, or may also be a picture level flag, a slice level flag, a block level flag, etc. Additionally, the block level flag may include a largest coding unit (LCU) level flag or a coding unit (CU) level flag, or another block level flag, which is not limited in the embodiments of the present invention.

[154] В некоторых вариантах осуществления способ может дополнительно включать следующее.[154] In some embodiments, the method may further include the following.

[155] Если флаг обратного положения последнего значимого коэффициента имеет первое значение, определяют, что флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока. Если флаг обратного положения последнего значимого коэффициента имеет второе значение, определяют, что флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента не изменено на обратное для текущего блока.[155] If the last significant coefficient position reverse flag has the first value, it is determined that the last significant coefficient position reverse flag indicates that the position of the last significant coefficient has been reversed for the current block. If the last significant coefficient position reverse flag has the second value, it is determined that the last significant coefficient position reverse flag indicates that the position of the last significant coefficient has not been reversed for the current block.

[156] То есть в примере, где первое значение равно 1, а второе значение равно 0, если reverse_last_sig_coeff_flag имеет значение 1, тогда можно определить, что reverse_last_sig_coeff_flag указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока. Альтернативно, если reverse_last_sig_coeff_flag имеет значение 0, тогда можно определить, что reverse_last_sig_coeff_flag указывает на то, что положение последнего значимого коэффициента не изменено на обратное для текущего блока.[156] That is, in the example where the first value is 1 and the second value is 0, if reverse_last_sig_coeff_flag has the value 1, then it can be determined that reverse_last_sig_coeff_flag indicates that the position of the last significant coefficient is reversed for the current block. Alternatively, if reverse_last_sig_coeff_flag has the value 0, then it can be determined that reverse_last_sig_coeff_flag indicates that the position of the last significant coefficient is not reversed for the current block.

[157] На этапе S903, когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока, положение последнего значимого коэффициента определяют путем вычисления с использованием информации о координате последнего значимого коэффициента.[157] In step S903, when the last significant coefficient reverse position flag indicates that the position of the last significant coefficient is reversed for the current block, the position of the last significant coefficient is determined by calculation using the coordinate information of the last significant coefficient.

[158] На этапе S904 согласно заданному порядку сканирования все коэффициенты перед положением последнего значимого коэффициента декодируют для определения коэффициентов текущего блока.[158] In step S904, according to a predetermined scanning order, all coefficients before the position of the last significant coefficient are decoded to determine the coefficients of the current block.

[159] Следует отметить, что в вариантах осуществления настоящего изобретения, когда флаг обратного положения последнего значимого коэффициента указывает, что положение последнего значимого коэффициента изменено на обратное для текущего блока, информацию о координате последнего значимого коэффициента можно определить как расстояние по горизонтали и расстояние по вертикали от положения последнего значимого коэффициента до нижнего правого угла текущего блока.[159] It should be noted that in embodiments of the present invention, when the last significant coefficient position reverse flag indicates that the position of the last significant coefficient is reversed for the current block, the coordinate information of the last significant coefficient can be determined as a horizontal distance and a vertical distance from the position of the last significant coefficient to the lower right corner of the current block.

[160] В этом случае в некоторых вариантах осуществления положение последнего значимого коэффициента можно определить путем вычисления с помощью информации о координате последнего значимого коэффициента следующим образом:[160] In this case, in some embodiments, the position of the last significant coefficient may be determined by calculating using the coordinate information of the last significant coefficient as follows:

[161] Определяют ширину и высоту текущего блока. Получают горизонтальную координату последнего значимого коэффициента путем вычитания из ширины текущего блока расстояния по горизонтали от положения последнего значимого коэффициента до нижнего правого угла текущего блока. Получают вертикальную координату последнего значимого коэффициента путем вычитания из высоты текущего блока расстояния по вертикали от положения последнего значимого коэффициента до нижнего правого угла текущего блока. Определяют положение последнего значимого коэффициента согласно горизонтальной координате последнего значимого коэффициента и вертикальной координате последнего значимого коэффициента.[161] The width and height of the current block are determined. The horizontal coordinate of the last significant coefficient is obtained by subtracting the horizontal distance from the position of the last significant coefficient to the lower right corner of the current block from the width of the current block. The vertical coordinate of the last significant coefficient is obtained by subtracting the vertical distance from the position of the last significant coefficient to the lower right corner of the current block from the height of the current block. The position of the last significant coefficient is determined according to the horizontal coordinate of the last significant coefficient and the vertical coordinate of the last significant coefficient.

[162] Следует отметить, что информация о координате последнего значимого коэффициента обычно является расстоянием по горизонтали и расстоянием по вертикали между положением последнего значимого коэффициента и верхним левым углом текущего блока. Для обычного видео большинство из значимых коэффициентов сосредоточено в верхнем левом углу, и большая область в правом нижнем углу имеет коэффициенты, равные 0. Однако для кодирования видео с высокой битовой глубиной, высоким качеством или высокой битовой скоростью в правом нижнем углу также появляется большое количество значимых коэффициентов, так что информация о координате последнего значимого коэффициента обычно имеет большие значения. В этом случае, чтобы сэкономить ресурсы, преобразование координаты (которое может быть вычислением изменения координаты на обратную, то есть после изменения координаты на обратную информацией о координате последнего значимого коэффициента является расстояние по горизонтали и расстояние по вертикали между положением последнего значимого коэффициента и нижним правым углом текущего блока) необходимо во время кодирования коэффициента. В этом случае также необходим расчет изменения координаты на обратную во время декодирования коэффициента. После повторного изменения на обратную, информация о координате последнего значимого коэффициента может быть восстановлена как расстояния по горизонтали и по вертикали между положением последнего значимого коэффициента и верхним левым углом текущего блока. Таким образом, положение последнего значимого коэффициента может быть определено, а затем коэффициенты перед положением последнего значимого коэффициента в текущем блоке могут быть декодированы согласно заданному порядку сканирования.[162] It should be noted that the coordinate information of the last significant coefficient is usually the horizontal distance and the vertical distance between the position of the last significant coefficient and the upper left corner of the current block. For normal video, most of the significant coefficients are concentrated in the upper left corner, and a large area in the lower right corner has coefficients equal to 0. However, for coding video with high bit depth, high quality, or high bit rate, a large number of significant coefficients also appear in the lower right corner, so the coordinate information of the last significant coefficient usually has large values. In this case, in order to save resources, coordinate transformation (which can be a coordinate reversal calculation, that is, after coordinate reversal, the coordinate information of the last significant coefficient is the horizontal distance and the vertical distance between the position of the last significant coefficient and the lower right corner of the current block) is necessary during coefficient encoding. In this case, coordinate reversal calculation is also necessary during coefficient decoding. After reversing, the coordinate information of the last significant coefficient can be reconstructed as the horizontal and vertical distances between the position of the last significant coefficient and the upper-left corner of the current block. Thus, the position of the last significant coefficient can be determined, and then the coefficients before the position of the last significant coefficient in the current block can be decoded according to the specified scan order.

[163] Следует также отметить, что текущий блок здесь может быть блоком без преобразования нулевого вывода или блоком после преобразования нулевого вывода. Если взять в качестве примера блок после преобразования с нулевым выводом, ширина текущего блока равна 1<<log2ZoTbWidth, а высота текущего блока равна 1<<log2ZoTbHeight. Затем, в случае, когда reverse_last_sig_coeff_flag указывает, что положение последнего значимого коэффициента изменено на обратное для текущего блока (т. е. значение reverse_last_sig_coeff_flag равно 1):[163] It should also be noted that the current block here can be a block without zero-output transformation or a block after zero-output transformation. Taking a block after zero-output transformation as an example, the width of the current block is 1<<log2ZoTbWidth, and the height of the current block is 1<<log2ZoTbHeight. Then, in the case where reverse_last_sig_coeff_flag indicates that the position of the last significant coefficient is reversed for the current block (i.e., the value of reverse_last_sig_coeff_flag is 1):

LastSignificantCoeffX= (1<<log2ZoTbWidth) -1-LastSignificantCoeffX;LastSignificantCoeffX= (1<<log2ZoTbWidth) -1-LastSignificantCoeffX;

LastSignificantCoeffY= (1<<log2ZoTbHeight) -1-LastSignificantCoeffY.LastSignificantCoeffY= (1<<log2ZoTbHeight) -1-LastSignificantCoeffY.

[164] В приведенном выше примере (LastSignificantCoeffX, LastSignificantCoeffY) в правой части уравнения представляет собой информацию о координате последнего значимого коэффициента, полученную путем декодирования, а (LastSignificantCoeffX, LastSignificantCoeffY) в левой части уравнения представляет собой положение последнего значимого коэффициента (которое также можно рассматривать как информацию о целевой координате последнего значимого коэффициента).[164] In the above example, (LastSignificantCoeffX, LastSignificantCoeffY) on the right side of the equation represents the coordinate information of the last significant coefficient obtained by decoding, and (LastSignificantCoeffX, LastSignificantCoeffY) on the left side of the equation represents the position of the last significant coefficient (which can also be regarded as the target coordinate information of the last significant coefficient).

[165] В некоторых вариантах осуществления настоящего изобретения в случае, когда значение reverse_last_sig_coeff_flag равно 0, способ может дополнительно включать следующее.[165] In some embodiments of the present invention, in the case where the value of reverse_last_sig_coeff_flag is 0, the method may further include the following.

[166] Когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента не изменено на обратное для текущего блока, информацию о координате последнего значимого коэффициента определяют как расстояние по горизонтали и расстояние по вертикали от положения последнего значимого коэффициента до верхнего левого угла текущего блока. Положение последнего значимого коэффициента определяют согласно расстоянию по горизонтали и расстоянию по вертикали от положения последнего значимого коэффициента до верхнего левого угла текущего блока.[166] When the last significant coefficient position reverse flag indicates that the position of the last significant coefficient is not reversed for the current block, the coordinate information of the last significant coefficient is determined as the horizontal distance and the vertical distance from the position of the last significant coefficient to the upper left corner of the current block. The position of the last significant coefficient is determined according to the horizontal distance and the vertical distance from the position of the last significant coefficient to the upper left corner of the current block.

[167] Следует отметить, что если reverse_last_sig_coeff_flag указывает, что положение последнего значимого коэффициента не изменено на обратное для текущего блока, тогда информацию о координате последнего значимого коэффициента, полученную посредством декодирования, можно рассматривать как информацию о целевой координате последнего значимого коэффициента. В вариантах осуществления настоящего изобретения информация о целевой координате последнего значимого коэффициента является расстоянием по горизонтали и расстоянием по вертикали между положением последнего значимого коэффициента и верхним левым углом текущего блока.[167] It should be noted that if reverse_last_sig_coeff_flag indicates that the position of the last significant coefficient is not reversed for the current block, then the coordinate information of the last significant coefficient obtained through decoding can be regarded as the target coordinate information of the last significant coefficient. In embodiments of the present invention, the target coordinate information of the last significant coefficient is the horizontal distance and the vertical distance between the position of the last significant coefficient and the upper left corner of the current block.

[168] Кроме того, в некоторых вариантах осуществления способ может дополнительно включать следующее.[168] Furthermore, in some embodiments, the method may further include the following.

[169] Когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента не изменено на обратное для текущего блока, положение последнего значимого коэффициента определяют непосредственно согласно информации о координате последнего значимого коэффициента. Все коэффициенты перед положением последнего значимого коэффициента в заданном порядке сканирования декодируют для определения коэффициентов текущего блока.[169] When the last significant coefficient position reverse flag indicates that the position of the last significant coefficient is not reversed for the current block, the position of the last significant coefficient is determined directly according to the coordinate information of the last significant coefficient. All coefficients before the position of the last significant coefficient in the specified scan order are decoded to determine the coefficients of the current block.

[170] Следует отметить, что заданный порядок сканирования может быть диагональным порядком, зигзагообразным порядком, горизонтальным порядком, вертикальным порядком, порядком сканирования подблоков 44 или любым другим порядком сканирования, что не ограничено вариантами осуществления настоящего изобретения.[170] It should be noted that the given scanning order can be a diagonal order, a zigzag order, a horizontal order, a vertical order, a sub-block scanning order 4 4 or any other scanning order, which is not limited to the embodiments of the present invention.

[171] Следует также отметить, что после получения reverse_last_sig_coeff_flag, если значение reverse_last_sig_coeff_flag равно 1, т. е. положение последнего значимого коэффициента должно быть изменено на обратное, то после получения информации о координате последнего значимого коэффициента посредством декодирования необходимо выполнить дополнительное вычисление, используя информацию о координате последнего значимого коэффициента для определения положения последнего значимого коэффициента. Тогда все коэффициенты перед положением последнего значимого коэффициента декодируют согласно заданному порядку сканирования. Если значение reverse_last_sig_coeff_flag равно 0, т. е. нет необходимости изменять на обратное положение последнего значимого коэффициента, тогда после получения информации о координате последнего значимого коэффициента посредством декодирования, положение последнего значимого коэффициента можно определить непосредственно согласно информации о координате последнего значимого коэффициента. Тогда все коэффициенты перед положением последнего значимого коэффициента декодируют согласно заданному порядку сканирования.[171] It should also be noted that after receiving reverse_last_sig_coeff_flag, if the value of reverse_last_sig_coeff_flag is 1, i.e., the position of the last significant coefficient needs to be reversed, then after receiving the coordinate information of the last significant coefficient through decoding, it is necessary to perform an additional calculation using the coordinate information of the last significant coefficient to determine the position of the last significant coefficient. Then, all the coefficients before the position of the last significant coefficient are decoded according to the specified scan order. If the value of reverse_last_sig_coeff_flag is 0, i.e., there is no need to reverse the position of the last significant coefficient, then after receiving the coordinate information of the last significant coefficient through decoding, the position of the last significant coefficient can be determined directly according to the coordinate information of the last significant coefficient. Then, all the coefficients before the position of the last significant coefficient are decoded according to the specified scan order.

[172] Таким образом, для определенных случаев варианты осуществления настоящего изобретения предоставляют модифицированный способ определения положения последнего значимого коэффициента во время кодирования коэффициентов. То есть, в обычных случаях способ кодирования коэффициентов остается таким же, как и способ, доступный в предшествующем уровне техники. Например, определенные случаи могут относиться к видео с высокой битовой глубиной, высоким качеством или высокой битовой скоростью или к сжатию без потерь при кодировании видео. Обычно, как изображено на фиг. 10A, горизонтальную координату положения последнего значимого коэффициента, то есть расстояние по горизонтали относительно верхнего левого угла текущего блока, кодируют в last_sig_coeff_x_prefix и last_sig_coeff_x_suffix, а вертикальную координату положения последнего значимого коэффициента, то есть расстояние по вертикали относительно верхнего левого угла текущего блока, кодируют в last_sig_coeff_y_prefix и last_sig_coeff_y_suffix. Для сравнения, в случае высокой битовой глубины, высокого качества, высокой битовой скорости или сжатия без потерь при кодировании видео положение последнего значимого коэффициента обычно находится близко к правому нижнему углу области всех возможных значимых коэффициентов текущего блока. В этом случае, как проиллюстрировано на фиг. 10B расстояние по горизонтали положения последнего значимого коэффициента относительно правого нижнего угла области всех возможных значимых коэффициентов текущего блока кодируют в last_sig_coeff_x_prefix и last_sig_coeff_x_suffix, а расстояние по вертикали положения последнего значимого коэффициента относительно правого нижнего угла области всех возможных значимых коэффициентов текущего блока кодируют в last_sig_coeff_y_prefix, last_sig_coeff_y_suffix. Например, если область всех возможных значимых коэффициентов текущего блока представляет собой прямоугольную область от (0, 0) до ((1<<log2ZoTbWidth) -1, (1<<log2ZoTbHeight)-1), то last_sig_coeff_x_prefix и last_sig_coeff_x_suffix кодируют для представления расстояния по горизонтали положения последнего значимого коэффициента относительно текущего блока ((1<<log2ZoTbWidth) -1, (1<<log2ZoTbHeight) -1). last_sig_coeff_y_prefix и last_sig_coeff_y_suffix кодируют для представления расстояния по вертикали положения последнего значимого коэффициента относительно текущего блока ((1<<log2ZoTbWidth) -1, (1<<log2ZoTbHeight) -1).[172] Thus, for certain cases, embodiments of the present invention provide a modified method for determining the position of the last significant coefficient during coefficient encoding. That is, in normal cases, the method for encoding the coefficients remains the same as the method available in the prior art. For example, certain cases may relate to high bit depth, high quality, or high bit rate video, or to lossless compression in video encoding. Typically, as shown in FIG. 10A, the horizontal coordinate of the position of the last significant coefficient, that is, the horizontal distance relative to the upper left corner of the current block, is encoded in last_sig_coeff_x_prefix and last_sig_coeff_x_suffix, and the vertical coordinate of the position of the last significant coefficient, that is, the vertical distance relative to the upper left corner of the current block, is encoded in last_sig_coeff_y_prefix and last_sig_coeff_y_suffix. For comparison, in the case of high bit depth, high quality, high bit rate, or lossless compression in video coding, the position of the last significant coefficient is usually close to the lower right corner of the region of all possible significant coefficients of the current block. In this case, as illustrated in Fig. 10B, the horizontal distance of the position of the last significant coefficient relative to the lower right corner of the region of all possible significant coefficients of the current block is encoded in last_sig_coeff_x_prefix and last_sig_coeff_x_suffix, and the vertical distance of the position of the last significant coefficient relative to the lower right corner of the region of all possible significant coefficients of the current block is encoded in last_sig_coeff_y_prefix and last_sig_coeff_y_suffix. For example, if the region of all possible significant coefficients of the current block is a rectangular region from (0, 0) to ((1<<log2ZoTbWidth) - 1, (1<<log2ZoTbHeight) - 1), then last_sig_coeff_x_prefix and last_sig_coeff_x_suffix are encoded to represent the horizontal distance of the position of the last significant coefficient relative to the current block ((1<<log2ZoTbWidth) - 1, (1<<log2ZoTbHeight) - 1). last_sig_coeff_y_prefix and last_sig_coeff_y_suffix are encoded to represent the vertical distance of the position of the last significant coefficient relative to the current block ((1<<log2ZoTbWidth) - 1, (1<<log2ZoTbHeight) - 1).

[173] Изменения семантики заключаются в следующем.[173] The semantic changes are as follows.

[174] Значение LastSignificantCoeffX горизонтальной координаты (или столбца) последнего значимого коэффициента в заданном порядке сканирования в пределах текущего блока, выводят следующим образом:[174] The LastSignificantCoeffX value of the horizontal coordinate (or column) of the last significant coefficient in a given scan order within the current block is output as follows:

Если last_sig_coeff_x_suffix не присутствует, тогда:If last_sig_coeff_x_suffix is not present, then:

LastSignificantCoeffX = last_sig_coeff_x_prefix;LastSignificantCoeffX = last_sig_coeff_x_prefix;

В противном случае (last_sig_coeff_x_suffix присутствует):Otherwise (last_sig_coeff_x_suffix is present):

LastSignificantCoeffX = (1<<((last_sig_coeff_x_prefix>>1) -1)) * (2+(last_ sig_coeff_x_prefix&1)) + last_sig_coeff_x_suffix.LastSignificantCoeffX = (1<<((last_sig_coeff_x_prefix>>1) -1)) * (2+(last_ sig_coeff_x_prefix&1)) + last_sig_coeff_x_suffix.

Если reverse_last_sig_coeff_flag равен 1, тогда:If reverse_last_sig_coeff_flag is 1, then:

LastSignificantCoeffX = (1<<log2ZoTbWidth) -1-LastSignificantCoeffX.LastSignificantCoeffX = (1<<log2ZoTbWidth) -1-LastSignificantCoeffX.

[175] Значение LastSignificantCoeffY вертикальной координаты (или строки) последнего значимого коэффициента в заданном порядке сканирования в пределах текущего блока, выводят следующим образом:[175] The LastSignificantCoeffY value of the vertical coordinate (or row) of the last significant coefficient in a given scan order within the current block is output as follows:

Если last_sig_coeff_y_suffix не присутствует, тогда:If last_sig_coeff_y_suffix is not present, then:

LastSignificantCoeffY = last_sig_coeff_y_prefix;LastSignificantCoeffY = last_sig_coeff_y_prefix;

В противном случае (last_sig_coeff_y_suffix присутствует) применимо следующее:Otherwise (last_sig_coeff_y_suffix is present) the following applies:

LastSignificantCoeffY= (1<<((last_sig_coeff_y_prefix>>1) -1)) * (2+(last_sig_coeff_y_prefix&1)) + last_sig_coeff_y_suffix.LastSignificantCoeffY= (1<<((last_sig_coeff_y_prefix>>1) -1)) * (2+(last_sig_coeff_y_prefix&1)) + last_sig_coeff_y_suffix.

Если reverse_last_sig_coeff_flag равен 1, тогда:If reverse_last_sig_coeff_flag is 1, then:

LastSignificantCoeffY= (1<<log2ZoTbHeight) -1-LastSignificantCoeffY.LastSignificantCoeffY= (1<<log2ZoTbHeight) -1-LastSignificantCoeffY.

[176] В вышеприведенном примере reverse_last_sig_coeff_flag представляет собой флаг обратного положения последнего значимого коэффициента, который указывает, нужно ли изменить на обратное положение последнего значимого коэффициента или нет. Если значение reverse_last_sig_coeff_flag равно 1, это указывает на то, что положение последнего значимого коэффициента необходимо изменить на обратное; в противном случае это указывает на то, что положение последнего значащего коэффициента не нужно менять на обратное.[176] In the above example, reverse_last_sig_coeff_flag is the flag of the reverse position of the last significant coefficient, which indicates whether the position of the last significant coefficient should be reversed or not. If the value of reverse_last_sig_coeff_flag is 1, it indicates that the position of the last significant coefficient should be reversed; otherwise, it indicates that the position of the last significant coefficient should not be reversed.

[177] Следует также отметить, что reverse_last_sig_coeff_flag может быть флагом уровня последовательности или более высокого уровня или может также быть флагом уровня изображения, флагом уровня слайса, флагом уровня блока и т.п. Флаг уровня блока может включать флаг уровня LCU, флаг уровня CU или другой флаг уровня блока.[177] It should also be noted that reverse_last_sig_coeff_flag may be a sequence-level or higher-level flag, or may also be an image-level flag, a slice-level flag, a block-level flag, etc. The block-level flag may include an LCU-level flag, a CU-level flag, or another block-level flag.

[178] Кроме того, reverse_last_sig_coeff_flag может зависеть от некоторых других флагов, таких как флаг высокой битовой глубины или флаг высокой битовой скорости. То есть, когда значение флага высокой битовой глубины или флага высокой битовой скорости равно 1, необходимо декодировать reverse_last_sig_coeff_flag; в противном случае нет необходимости декодировать reverse_last_sig_coeff_flag.[178] In addition, reverse_last_sig_coeff_flag may depend on some other flags, such as the high bit depth flag or the high bit rate flag. That is, when the value of the high bit depth flag or the high bit rate flag is 1, it is necessary to decode reverse_last_sig_coeff_flag; otherwise, there is no need to decode reverse_last_sig_coeff_flag.

[179] В конкретном примере, взяв в качестве примера уровень последовательности, предположим, что существует флаг уровня последовательности sps_high_bit_length_flag, указывающий на то, является ли текущая видеопоследовательность последовательностью с высокой битовой глубиной. Если значение sps_high_bit_length_flag равно 1, это означает, что текущая видеопоследовательность представляет собой последовательность с высокой битовой глубиной; в противном случае это указывает на то, что текущая видеопоследовательность не является последовательностью с высокой битовой глубиной. На уровне последовательности, если значение sps_high_bit_length_flag равно 1, то необходимо декодировать sps_reverse_last_sig_coeff_flag. В данном случае sps_reverse_last_sig_coeff_flag - это флаг обратного положения последнего значимого коэффициента текущей последовательности. Если значение sps_reverse_last_sig_coeff_flag равно 1, то это указывает на то, что положение последнего значимого коэффициента изменено на обратное для блоков в текущей последовательности; в противном случае (т.е. значение sps_reverse_ last_sig_coeff_flag равно 0) это указывает на то, что положение последнего значимого коэффициента не изменено на обратное для блоков в текущей последовательности. reverse_last_sig_coeff_flag в приведенной выше таблице синтаксиса изменится на sps_reverse_last_sig_coeff_flag.[179] In a specific example, taking the sequence level as an example, assume that there is a sequence-level flag sps_high_bit_length_flag that indicates whether the current video sequence is a high-bit-depth sequence. If the value of sps_high_bit_length_flag is 1, it means that the current video sequence is a high-bit-depth sequence; otherwise, it indicates that the current video sequence is not a high-bit-depth sequence. At the sequence level, if the value of sps_high_bit_length_flag is 1, then sps_reverse_last_sig_coeff_flag needs to be decoded. In this case, sps_reverse_last_sig_coeff_flag is the flag of the reverse position of the last significant coefficient of the current sequence. If the value of sps_reverse_last_sig_coeff_flag is 1, it indicates that the position of the last significant coefficient is reversed for the blocks in the current sequence; otherwise (i.e., the value of sps_reverse_last_sig_coeff_flag is 0), it indicates that the position of the last significant coefficient is not reversed for the blocks in the current sequence. reverse_last_sig_coeff_flag in the syntax table above will change to sps_reverse_last_sig_coeff_flag.

[180] Элементы синтаксиса следующие (синтаксис RBSP набора параметров последовательности), см. Таблицу 3.[180] The syntax elements are as follows (the RBSP syntax of the sequence parameter set), see Table 3.

[181] В другом конкретном примере, взяв в качестве примера уровень слайса, предположим, что существует флаг уровня последовательности sps_high_bit_length_flag, указывающий на то, является ли текущая видеопоследовательность последовательностью с высокой битовой глубиной или нет. Если значение sps_high_bit_length_flag равно 1, это означает, что текущая видеопоследовательность представляет собой последовательность с высокой битовой глубиной; в противном случае это указывает на то, что текущая видеопоследовательность не является последовательностью с высокой битовой глубиной. На уровне слайса, если значение sps_high_bit_length_flag равно 1, то необходимо декодировать sh_reverse_last_sig_coeff_flag. В данном случае sh_reverse_last_sig_coeff_flag представляет собой флаг обратного положения последнего значимого коэффициента текущего слайса. Если значение sh_reverse_last_sig_coeff_flag равно 1, то это означает, что положение последнего значимого коэффициента изменено на обратное для блоков в текущем слайсе; в противном случае (т.е., значение sh_reverse_last_sig_coeff_flag равно 0) это означает, что положение последнего значимого коэффициента не изменено на обратное для блоков в текущем слайсе. reverse_last_sig_coeff_flag в приведенной выше таблице синтаксиса изменяется на sh_reverse_last_sig_coeff_flag.[181] In another specific example, taking the slice level as an example, assume that there is a sequence-level flag sps_high_bit_length_flag that indicates whether the current video sequence is a high-bit-depth sequence or not. If the value of sps_high_bit_length_flag is 1, it means that the current video sequence is a high-bit-depth sequence; otherwise, it indicates that the current video sequence is not a high-bit-depth sequence. At the slice level, if the value of sps_high_bit_length_flag is 1, then sh_reverse_last_sig_coeff_flag needs to be decoded. In this case, sh_reverse_last_sig_coeff_flag is the flag of the reverse position of the last significant coefficient of the current slice. If sh_reverse_last_sig_coeff_flag is 1, it means that the position of the last significant coefficient is reversed for blocks in the current slice; otherwise (i.e., sh_reverse_last_sig_coeff_flag is 0), it means that the position of the last significant coefficient is not reversed for blocks in the current slice. reverse_last_sig_coeff_flag in the syntax table above is changed to sh_reverse_last_sig_coeff_flag.

[182] Элементы синтаксиса следующие (Синтаксис заголовка слайса), см. Таблицу 4.[182] The syntax elements are as follows (Slice Header Syntax), see Table 4.

[183] Также следует понимать, что когда флаг, относящийся к видео, указывает, что видео удовлетворяет заданному условию, все коэффициенты, которые, возможно, потребуется кодировать, по умолчанию требуют кодирования. Другими словами, положение последнего значимого коэффициента больше не используется, а вместо этого все возможные значимые коэффициенты текущего блока сканируют в заданном порядке сканирования. Таким образом, варианты осуществления настоящего изобретения могут также вводить флаг, обусловленный последним коэффициентом, для определения того, используется ли положение последнего коэффициента для текущего блока.[183] It should also be understood that when a flag associated with a video indicates that the video satisfies a given condition, all coefficients that may need to be encoded are required to be encoded by default. In other words, the position of the last significant coefficient is no longer used, and instead, all possible significant coefficients of the current block are scanned in a given scanning order. Thus, embodiments of the present invention may also introduce a flag conditioned on the last coefficient to determine whether the position of the last coefficient is used for the current block.

[184] В некоторых вариантах осуществления, когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, способ может дополнительно включать следующее.[184] In some embodiments, when a flag related to a video indicates that the video satisfies a given condition, the method may further include the following.

[185] Анализируют битовый поток с получением флага, обусловленного последним коэффициентом. Когда флаг, обусловленный последним коэффициентом, указывает на то, что положение последнего коэффициента используется для текущего блока, все коэффициенты перед положением последнего коэффициента декодируют согласно заданному порядку сканирования для определения коэффициентов текущего блока.[185] The bit stream is analyzed to obtain a flag determined by the last coefficient. When the flag determined by the last coefficient indicates that the position of the last coefficient is used for the current block, all coefficients before the position of the last coefficient are decoded according to a specified scan order to determine the coefficients of the current block.

[186] Следует отметить, что флаг, обусловленный последним коэффициентом, может быть представлен как default_last_coeff_enabled_flag. В вариантах осуществления настоящего изобретения флаг, обусловленный последним коэффициентом, может быть по меньшей мере флагом одного из: уровня последовательности, уровня изображения, уровня слайса и уровня блока; или даже флагом более высокого уровня (например, VUI, SEI и т. д.), что не ограничено здесь.[186] It should be noted that the flag determined by the last coefficient may be represented as default_last_coeff_enabled_flag. In embodiments of the present invention, the flag determined by the last coefficient may be at least one of a sequence level, a picture level, a slice level, and a block level flag; or even a higher level flag (e.g., VUI, SEI, etc.), which is not limited here.

[187] То есть, default_last_coeff_enabled_flag может быть флагом уровня последовательности или более высокого уровня или может также быть флагом уровня изображения, флагом уровня слайса, флагом уровня блока и т.п. Дополнительно, флаг уровня блока может включать флаг уровня LCU, или флаг уровня CU, или другой флаг уровня блока, что в не ограничено здесь.[187] That is, default_last_coeff_enabled_flag may be a sequence-level or higher-level flag, or may also be a picture-level flag, a slice-level flag, a block-level flag, etc. Additionally, the block-level flag may include an LCU-level flag, or a CU-level flag, or another block-level flag, which is not limited here.

[188] В некоторых вариантах осуществления способ может дополнительно включать следующее.[188] In some embodiments, the method may further include the following.

[189] Когда флаг, обусловленный последним коэффициентом, имеет первое значение, определяют, что флаг, обусловленный последним коэффициентом, указывает на то, что положение последнего коэффициента используется для текущего блока. Когда флаг, обусловленный последним коэффициентом, имеет второе значение, определяют, что флаг, обусловленный последним коэффициентом, указывает на то, что положение последнего коэффициента не используется для текущего блока.[189] When the flag determined by the last coefficient has the first value, it is determined that the flag determined by the last coefficient indicates that the position of the last coefficient is used for the current block. When the flag determined by the last coefficient has the second value, it is determined that the flag determined by the last coefficient indicates that the position of the last coefficient is not used for the current block.

[190] В данном случае первое значение равно 1, а второе значение равно 0.[190] In this case, the first value is 1 and the second value is 0.

[191] Следует отметить, что в другом конкретном примере первое значение также может быть установлено в значение «истина», а второе значение также может быть установлено в значение «ложь». В еще одном конкретном примере первое значение также может быть установлено в значение 0, а второе значение также может быть установлено в значение 1. Необязательно первое значение также может быть установлено в значение «ложь», а второе значение также может быть установлено в значение «истина». Настоящее изобретение этим не ограничено.[191] It should be noted that in another specific example, the first value may also be set to the value "true" and the second value may also be set to the value "false." In yet another specific example, the first value may also be set to the value 0 and the second value may also be set to the value 1. Optionally, the first value may also be set to the value "false" and the second value may also be set to the value "true." The present invention is not limited thereto.

[192] Таким образом, в примере, где первое значение равно 1, а второе значение равно 0, если default_last_coeff_enabled_flag имеет значение 1, тогда можно определить, что default_last_coeff_enabled_flag указывает на то, что положение последнего коэффициента используется для текущего блока. Альтернативно, если default_last_coeff_enabled_flag имеет значение 0, тогда можно определить, что default_last_coeff_enabled_flag указывает на то, что положение последнего коэффициента не используется для текущего блока.[192] Thus, in the example where the first value is 1 and the second value is 0, if default_last_coeff_enabled_flag has the value 1, then it can be determined that default_last_coeff_enabled_flag indicates that the last coefficient position is used for the current block. Alternatively, if default_last_coeff_enabled_flag has the value 0, then it can be determined that default_last_coeff_enabled_flag indicates that the last coefficient position is not used for the current block.

[193] В случае, когда положение последнего коэффициента используется для текущего блока, все коэффициенты перед положением последнего коэффициента могут быть декодированы согласно заданному порядку сканирования, с определением таким образом коэффициентов текущего блока.[193] In the case where the position of the last coefficient is used for the current block, all coefficients before the position of the last coefficient may be decoded according to the specified scan order, thus determining the coefficients of the current block.

[194] Дополнительно, в случае когда положение последнего коэффициента не используется для текущего блока, т. е. флаг, обусловленный последним коэффициентом, имеет значение 0, в некоторых вариантах осуществления способ может дополнительно включать следующее.[194] Additionally, in the case where the position of the last coefficient is not used for the current block, i.e., the flag determined by the last coefficient has a value of 0, in some embodiments, the method may further include the following.

[195] Битовый поток анализируют с получением информации о префиксе горизонтальной координаты последнего значимого коэффициента, информации о префиксе вертикальной координаты последнего значимого коэффициента, информации о суффиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента. Положение последнего значимого коэффициента определяют согласно информации о префиксе горизонтальной координаты последнего значимого коэффициента, информации о префиксе вертикальной координаты последнего значимого коэффициента, информации о суффиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента. Все коэффициенты перед положением последнего значимого коэффициента декодируют в соответствии с заданным порядком сканирования, определяя таким образом коэффициенты текущего блока.[195] The bit stream is analyzed to obtain information about the prefix of the horizontal coordinate of the last significant coefficient, information about the prefix of the vertical coordinate of the last significant coefficient, information about the suffix of the horizontal coordinate of the last significant coefficient, and information about the suffix of the vertical coordinate of the last significant coefficient. The position of the last significant coefficient is determined according to the information about the prefix of the horizontal coordinate of the last significant coefficient, the information about the prefix of the vertical coordinate of the last significant coefficient, the information about the suffix of the horizontal coordinate of the last significant coefficient, and the information about the suffix of the vertical coordinate of the last significant coefficient. All coefficients before the position of the last significant coefficient are decoded in accordance with a given scanning order, thereby determining the coefficients of the current block.

[196] Следует отметить, что если положение последнего коэффициента не используется для текущего блока, тогда необходимо декодировать положение последнего значимого коэффициента. В частности, last_sig_coeff_x_prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_ prefix, и last_sig_coeff_y_suffix получают путем анализа битового потока, а затем местоположение последнего значимого коэффициента определяют на основе last_sig_coeff_x_ prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_prefix, and last_sig_coeff_y_suffix. В противном случае, если положение последнего коэффициента используют для текущего блока, нет необходимости определять положение последнего значимого коэффициента, и тогда больше нет необходимости получать last_sig_coeff_x_prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_ prefix и last_sig_coeff_y_suffix.[196] It should be noted that if the position of the last coefficient is not used for the current block, then it is necessary to decode the position of the last significant coefficient. Specifically, last_sig_coeff_x_prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_prefix, and last_sig_coeff_y_suffix are obtained by analyzing the bitstream, and then the location of the last significant coefficient is determined based on last_sig_coeff_x_prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_prefix, and last_sig_coeff_y_suffix. Otherwise, if the position of the last coefficient is used for the current block, there is no need to determine the position of the last significant coefficient, and then there is no longer any need to obtain last_sig_coeff_x_prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_prefix, and last_sig_coeff_y_suffix.

[197] Также следует отметить, что если положение последнего коэффициента не используется для текущего блока, тогда все коэффициенты перед положением последнего коэффициента могут быть декодированы согласно заданному порядку сканирования. Если положение последнего коэффициента не используется для текущего блока, тогда все коэффициенты перед положением последнего значимого коэффициента могут быть декодированы в заданном порядке сканирования. В данном случае заданный порядок сканирования может быть диагональным порядком, зигзагообразным порядком, горизонтальным порядком, вертикальным порядком, порядком сканирования подблоков 44 или любым другим порядком сканирования, что не ограничено в вариантах осуществления настоящего изобретения.[197] It should also be noted that if the position of the last coefficient is not used for the current block, then all coefficients before the position of the last coefficient can be decoded according to the specified scan order. If the position of the last coefficient is not used for the current block, then all coefficients before the position of the last significant coefficient can be decoded in the specified scan order. In this case, the specified scan order can be a diagonal order, a zigzag order, a horizontal order, a vertical order, or a sub-block scan order. 4 or any other scanning order, which is not limited in the embodiments of the present invention.

[198] Также, для положения последнего коэффициента в некоторых вариантах осуществления положение последнего коэффициента является положением в нижнем правом углу матрицы, образованной всеми возможными значимыми коэффициентами в текущем блоке. Альтернативно положение последнего коэффициента является последним положением при сканировании всех возможных значимых коэффициентов в текущем блоке согласно заданному порядку сканирования.[198] Also, for the position of the last coefficient, in some embodiments, the position of the last coefficient is the position in the lower right corner of the matrix formed by all possible significant coefficients in the current block. Alternatively, the position of the last coefficient is the last position when scanning all possible significant coefficients in the current block according to a given scanning order.

[199] Следует отметить, что в вариантах осуществления изобретения положение последнего коэффициента не представляет собой положение последнего значимого коэффициента. Это связано с тем, что коэффициент в положении последнего значимого коэффициента может быть равен 0, тогда как коэффициент в положении последнего значимого коэффициента не должен быть равен 0.[199] It should be noted that in embodiments of the invention, the position of the last coefficient does not represent the position of the last significant coefficient. This is because the coefficient at the position of the last significant coefficient may be equal to 0, while the coefficient at the position of the last significant coefficient does not have to be equal to 0.

[200] В конкретном примере способ может дополнительно включать установку положения последнего значимого коэффициента в качестве положения последнего коэффициента.[200] In a particular example, the method may further include setting the position of the last significant coefficient as the position of the last coefficient.

[201] То есть, в вариантах осуществления настоящего изобретения положение последнего значимого коэффициента все еще может использоваться, и в этом случае положение последнего значимого коэффициента должно быть установлено как последнее положение всех коэффициентов, которые могут не быть нулевыми в текущем блоке в заданном порядке сканирования.[201] That is, in embodiments of the present invention, the position of the last significant coefficient may still be used, in which case the position of the last significant coefficient should be set as the last position of all coefficients that may not be zero in the current block in the given scanning order.

[202] Дополнительно, положение последнего коэффициента может быть представлено (LastCoeffX, LastCoeffY), т.е., последнее положение всех возможных значимых коэффициентов в текущем блоке в заданном порядке сканирования. В некоторых вариантах осуществления способ может дополнительно включать следующее.[202] Additionally, the position of the last coefficient may be represented by (LastCoeffX, LastCoeffY), i.e., the last position of all possible significant coefficients in the current block in a given scan order. In some embodiments, the method may further include the following.

[203] Определяют ширину и высоту блока преобразования, полученные в заданной операции на текущем блоке. Информацию о координате нижнего правого угла блока преобразования получают посредством вычисления координаты согласно ширине и высоте блока преобразования. Положение последнего коэффициента определяют согласно информации о координате нижнего правого угла блока преобразования.[203] The width and height of the transformation block obtained in a given operation on the current block are determined. Information on the coordinate of the lower right corner of the transformation block is obtained by calculating the coordinate according to the width and height of the transformation block. The position of the last coefficient is determined according to the information on the coordinate of the lower right corner of the transformation block.

[204] В данном случае заданная операция включает по меньшей мере операцию нулевого вывода.[204] In this case, the specified operation includes at least the zero output operation.

[205] Следует отметить, что (LastCoeffX, LastCoeffY) представляет собой информацию о координате правого нижнего угла блока преобразования после нулевого вывода, где (LastCoeffX, LastCoeffY) получают следующим образом:[205] It should be noted that (LastCoeffX, LastCoeffY) is the coordinate information of the lower right corner of the transformation block after zero output, where (LastCoeffX, LastCoeffY) is obtained as follows:

LastCoeffX= (1<<log2ZoTbWidth) -1;LastCoeffX= (1<<log2ZoTbWidth) -1;

LastCoeffY= (1<<log2ZoTbHeight) -1.LastCoeffY= (1<<log2ZoTbHeight) -1.

[206] Таким образом, если default_last_coeff_enabled_flag имеет значение 1, то положение последнего коэффициента может быть определено на основе (LastCoeffX, LastCoeffY).[206] Thus, if default_last_coeff_enabled_flag is set to 1, then the position of the last coefficient can be determined based on (LastCoeffX, LastCoeffY).

[207] В конкретном примере положение последнего значимого коэффициента все еще используется, и в этом случае положение последнего значимого коэффициента может быть установлено как последнее положение всех возможных нулевых коэффициентов в текущий блок в заданном порядке сканирования. В некоторых вариантах осуществления способ может дополнительно включать следующее.[207] In a specific example, the position of the last significant coefficient is still used, and in this case, the position of the last significant coefficient may be set as the last position of all possible zero coefficients in the current block in a given scan order. In some embodiments, the method may further include the following.

[208] Когда положение последнего значимого коэффициента установлено как положение последнего коэффициента, положение последнего значимого коэффициента определяют согласно информации о координате нижнего правого угла блока преобразования.[208] When the position of the last significant coefficient is set as the position of the last coefficient, the position of the last significant coefficient is determined according to the coordinate information of the lower right corner of the transformation block.

[209] То есть, позиция последнего значимого коэффициента может быть представлена как (LastSignificantCoeffX, LastSignificantCoeffY), где (LastSignificantCoeffX, LastSignificantCoeffY) получают следующим образом:[209] That is, the position of the last significant coefficient can be represented as (LastSignificantCoeffX, LastSignificantCoeffY), where (LastSignificantCoeffX, LastSignificantCoeffY) is obtained as follows:

LastSignificantCoeffX= (1 << log2ZoTbWidth) -1;LastSignificantCoeffX= (1 << log2ZoTbWidth) -1;

LastSignificantCoeffY= (1 << log2ZoTbHeight) -1.LastSignificantCoeffY= (1 << log2ZoTbHeight) -1.

[210] Как указано выше, (LastSignificantCoeffX, LastSignificantCoeffY) представляет собой информацию о координате нижнего правого угла блока преобразования после нулевого вывода. Если значение default_last_coeff_enabled_flag равно 1, то положение последнего значимого коэффициента может быть определено на основе(LastSignificantCoeffX, LastSignificantCoeffY).[210] As stated above, (LastSignificantCoeffX, LastSignificantCoeffY) represents the coordinate information of the lower right corner of the transform block after zero output. If the value of default_last_coeff_enabled_flag is 1, then the position of the last significant coefficient can be determined based on (LastSignificantCoeffX, LastSignificantCoeffY).

[211] Таким образом, в некоторых случаях кодирование требуется по умолчанию для всех коэффициентов, которые, возможно, потребуется закодировать. То есть, в обычных случаях способ кодирования коэффициентов остается таким же, как и способ, доступный в предшествующем уровне техники. Например, определенные случаи могут относиться к видео с высокой битовой глубиной, высоким качеством или высокой битовой скоростью или к сжатию без потерь при кодировании видео. Кодирование требуется по умолчанию для всех коэффициентов, которые, возможно, потребуется закодировать, т. е. положение последнего значимого коэффициента больше не используется, и вместо этого все возможные значимые коэффициенты текущего блока сканируют в заданном порядке сканирования. Другими словами, последнее положение коэффициентов, которые необходимо закодировать, устанавливают как положение всех возможных значимых коэффициентов текущего блока в заданном порядке сканирования. Это положение обычно является положением в нижнем правом углу матрицы, образованной всеми возможными значимыми коэффициентами текущего блока. В данном случае вместо положения последнего значимого коэффициента используется положение последнего кодируемого коэффициента. Это связано с тем, что коэффициент в положении последнего значимого коэффициента, подлежащем кодированию, может быть равен 0, тогда как коэффициент в положении последнего значимого коэффициента не должен быть равен 0.[211] Thus, in some cases, encoding is required by default for all coefficients that may need to be encoded. That is, in normal cases, the encoding method for the coefficients remains the same as the method available in the prior art. For example, certain cases may relate to high bit depth, high quality, or high bit rate video, or to lossless compression in video encoding. Encoding is required by default for all coefficients that may need to be encoded, i.e., the position of the last significant coefficient is no longer used, and instead, all possible significant coefficients of the current block are scanned in a given scan order. In other words, the last position of the coefficients that need to be encoded is set as the position of all possible significant coefficients of the current block in a given scan order. This position is typically the position in the lower right corner of the matrix formed by all possible significant coefficients of the current block. In this case, the position of the last coefficient to be encoded is used instead of the position of the last significant coefficient. This is because the coefficient in the position of the last significant coefficient to be encoded may be 0, while the coefficient in the position of the last significant coefficient must not be 0.

[212] В отдельном случае положение последнего значимого коэффициента продолжает использоваться, и в этом случае положение последнего значимого коэффициента установлено как последнее положение всех возможных значимых коэффициентов текущего блока в заданном порядке сканирования.[212] In a particular case, the position of the last significant coefficient continues to be used, in which case the position of the last significant coefficient is set to the last position of all possible significant coefficients of the current block in the given scan order.

[213] Кроме того, здесь упоминаются все возможные значимые коэффициенты текущего блока в заданном порядке сканирования, поскольку, помимо последнего значимого коэффициента, некоторые коэффициенты устанавливают по умолчанию равными 0 с помощью некоторых других методов, например, нулевого вывода, как упомянуто выше.[213] Furthermore, all possible significant coefficients of the current block in the given scan order are mentioned here, since, besides the last significant coefficient, some coefficients are set to 0 by default using some other methods, such as zero-output, as mentioned above.

[214] Изменения семантики проиллюстрированы в Таблице 5.[214] The semantic changes are illustrated in Table 5.

[215] В вариантах осуществления настоящего изобретения условие может быть добавлено перед декодированием информации, необходимой для последнего значимого коэффициента. То есть, только когда default_last_coeff_enabled_flag является ложью (т. е., default_last_coeff_ enabled_flag равно 0), необходимо декодировать элементы синтаксиса, такие как last_sig_ coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix и last_sig_coeff_y_suffix. Если default_last_coeff_enabled_flag является истиной (т. е., default_last_coeff_ enabled_flag равно 1), тогда нет необходимости декодировать элементы синтаксиса, такие как last_sig_coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix и last_sig_coeff_y_suffix.[215] In embodiments of the present invention, a condition may be added before decoding the information needed for the last significant coefficient. That is, only when default_last_coeff_enabled_flag is false (i.e., default_last_coeff_enabled_flag is 0), is it necessary to decode syntax elements such as last_sig_coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix, and last_sig_coeff_y_suffix. If default_last_coeff_enabled_flag is true (i.e., default_last_coeff_enabled_flag is 1), then there is no need to decode syntax elements such as last_sig_coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix, and last_sig_coeff_y_suffix.

[216] В данном случае default_last_coeff_enabled_flag - это флаг, обусловленный последним коэффициентом, по умолчанию, который используется для указания, следует ли использовать последний коэффициент по умолчанию. Если значение default_last_coeff_enabled_flag равно 1, оно указывает на то, что используется положение последнего коэффициента по умолчанию, т. е. положение последнего коэффициента, подлежащего кодированию установлено как последнее положение всех возможных значимых коэффициентов в текущем блоке в заданном порядке сканирования. В противном случае это означает, что положение последнего коэффициента по умолчанию не используется.[216] In this case, default_last_coeff_enabled_flag is a flag associated with the default last coefficient, which is used to indicate whether the default last coefficient position should be used. If default_last_coeff_enabled_flag is 1, it indicates that the default last coefficient position is used, i.e., the position of the last coefficient to be encoded is set to the last position of all possible significant coefficients in the current block in the given scan order. Otherwise, it means that the default last coefficient position is not used.

[217] Если значение default_last_coeff_enabled_flag равно 1, тогда положение последнего коэффициента (LastCoeffX, LastCoeffY) по умолчанию установлено как последнее положение всех возможных значимых коэффициентов в текущем блоке в заданном порядке сканирования. Все коэффициенты перед (LastCoeffX, LastCoeffY) в заданном порядке сканирования должны быть отсканированы. В вариантах осуществления настоящего изобретения (LastCoeffX, LastCoeffY) получают следующим образом:[217] If the value of default_last_coeff_enabled_flag is 1, then the position of the last coefficient (LastCoeffX, LastCoeffY) is by default set to the last position of all possible significant coefficients in the current block in the given scan order. All coefficients before (LastCoeffX, LastCoeffY) in the given scan order must be scanned. In embodiments of the present invention, (LastCoeffX, LastCoeffY) is obtained as follows:

LastCoeffX= (1<<log2ZoTbWidth) -1;LastCoeffX= (1<<log2ZoTbWidth) -1;

LastCoeffY= (1<<log2ZoTbHeight) -1.LastCoeffY= (1<<log2ZoTbHeight) -1.

[218] (LastCoeffX, LastCoeffY) представляет собой информацию о координате нижнего правого угла блока преобразования после нулевого вывода.[218] (LastCoeffX, LastCoeffY) represents the coordinate information of the lower right corner of the transform block after zero output.

[219] Отдельный случай заключается в продолжении использования положения последнего значимого коэффициента, которое установлено как последнее положение всех возможных значимых коэффициентов в текущем блоке в заданном порядке сканирования. В вариантах реализации настоящего изобретения положение последнего значимого коэффициента (LastSignificantCoeffX, LastSignificantCoeffY) получают следующим образом:[219] A special case is to continue using the position of the last significant coefficient, which is set as the last position of all possible significant coefficients in the current block in a given scan order. In embodiments of the present invention, the position of the last significant coefficient (LastSignificantCoeffX, LastSignificantCoeffY) is obtained as follows:

LastSignificantCoeffX= (1<<log2ZoTbWidth) -1;LastSignificantCoeffX= (1<<log2ZoTbWidth) -1;

LastSignificantCoeffY= (1<<log2ZoTbHeight) -1.LastSignificantCoeffY= (1<<log2ZoTbHeight) -1.

[220] (LastSignificantCoeffX, LastSignificantCoeffY) представляет собой информацию о координате нижнего правого угла блока преобразования после нулевого вывода.[220] (LastSignificantCoeffX, LastSignificantCoeffY) represents the coordinate information of the lower right corner of the transform block after zero output.

[221] Следует также отметить, что default_last_coeff_enabled_flag может быть флагом уровня последовательности или более высокого уровня или может также быть флагом уровня изображения, флагом уровня слайса, флагом уровня блока и т.п. Дополнительно, флаг уровня блока может включать флаг уровня LCU, флаг уровня CU или другой флаг уровня блока.[221] It should also be noted that default_last_coeff_enabled_flag may be a sequence-level or higher-level flag, or may also be an image-level flag, a slice-level flag, a block-level flag, etc. Additionally, a block-level flag may include an LCU-level flag, a CU-level flag, or another block-level flag.

[222] Кроме того, default_last_coeff_enabled_flag может зависеть от некоторых других флагов, таких как флаг высокой битовой глубины или флаг высокой битовой скорости. То есть, когда значение флага высокой битовой глубины или флага высокой битовой скорости равно 1, необходимо декодировать default_last_ coeff_enabled_flag; в противном случае нет необходимости декодировать default_last_coeff_enabled_flag.[222] In addition, default_last_coeff_enabled_flag may depend on some other flags, such as the high bit depth flag or the high bit rate flag. That is, when the value of the high bit depth flag or the high bit rate flag is 1, it is necessary to decode default_last_coeff_enabled_flag; otherwise, there is no need to decode default_last_coeff_enabled_flag.

[223] В конкретном примере, взяв в качестве примера уровень последовательности, предположим, что существует флаг уровня последовательности sps_high_bit_length_flag, указывающий на то, является ли текущая видеопоследовательность последовательностью с высокой битовой глубиной. Если значение sps_high_bit_length_flag равно 1, это означает, что текущая видеопоследовательность представляет собой последовательность с высокой битовой глубиной; в противном случае это указывает на то, что текущая видеопоследовательность не является последовательностью с высокой битовой глубиной. На уровне последовательности, если значение sps_high_bit_depth_flag равно 1, то необходимо декодировать sps_default_last_coeff_enabled_flag. В данном случае sps_default_last_coeff_enabled_flag - это флаг, обусловленный последним коэффициентом, по умолчанию текущей последовательности. Если значение sps_default_last_coeff_enabled_flag равно 1, то это указывает на то, что последний коэффициент по умолчанию используется для блоков в текущей последовательности; в противном случае (т.е., значение sps_default_last_coeff_enabled_flag равно 0) это указывает на то, что последний коэффициент по умолчанию не используется для блоков в текущей последовательности. default_last_coeff_enabled_flag в приведенной выше таблице синтаксиса изменится на sps_default_last_coeff_enabled_flag.[223] In a specific example, taking the sequence level as an example, assume that there is a sequence-level flag sps_high_bit_length_flag that indicates whether the current video sequence is a high-bit-depth sequence. If the value of sps_high_bit_length_flag is 1, it means that the current video sequence is a high-bit-depth sequence; otherwise, it indicates that the current video sequence is not a high-bit-depth sequence. At the sequence level, if the value of sps_high_bit_depth_flag is 1, then sps_default_last_coeff_enabled_flag needs to be decoded. In this case, sps_default_last_coeff_enabled_flag is a flag determined by the default last coefficient of the current sequence. If sps_default_last_coeff_enabled_flag is 1, it indicates that the default last coefficient is used for blocks in the current sequence; otherwise (i.e., sps_default_last_coeff_enabled_flag is 0), it indicates that the default last coefficient is not used for blocks in the current sequence. default_last_coeff_enabled_flag in the syntax table above changes to sps_default_last_coeff_enabled_flag.

[224] Элементы синтаксиса следующие (синтаксис RBSP набора параметров последовательности), см. Таблицу 6.[224] The syntax elements are as follows (the RBSP syntax of the sequence parameter set), see Table 6.

[225] В другом конкретном примере, взяв в качестве примера уровень слайса, предположим, что существует флаг уровня последовательности sps_high_bit_length_flag, указывающий на то, является ли текущая видеопоследовательность последовательностью с высокой битовой глубиной или нет. Если значение sps_high_bit_length_flag равно 1, это означает, что текущая видеопоследовательность представляет собой последовательность с высокой битовой глубиной; в противном случае это указывает на то, что текущая видеопоследовательность не является последовательностью с высокой битовой глубиной. На уровне слайса, если значение sps_high_ bit_depth_flag равно 1, то необходимо декодировать sh_default_last_coeff_enabled_flag. В данном случае sh_default_last_coeff_enabled_flag - это флаг, обусловленный последним коэффициентом, по умолчанию последнего коэффициента текущего слайса. Если значение sh_default_last_coeff_enabled_flag равно 1, то это означает, что последний коэффициент по умолчанию используется для блоков в текущем слайсе; в противном случае (т.е., значение sh_default_last_coeff_enabled_flag равно 0) это означает, что последний коэффициент по умолчанию не используется для блоков в текущем слайсе. default_last_coeff_enabled_flag в приведенной выше таблице синтаксиса изменится на sh_default_last_coeff_enabled_flag.[225] In another specific example, taking the slice level as an example, assume that there is a sequence-level flag sps_high_bit_length_flag that indicates whether the current video sequence is a high-bit-depth sequence or not. If the value of sps_high_bit_length_flag is 1, it means that the current video sequence is a high-bit-depth sequence; otherwise, it indicates that the current video sequence is not a high-bit-depth sequence. At the slice level, if the value of sps_high_bit_depth_flag is 1, then sh_default_last_coeff_enabled_flag needs to be decoded. In this case, sh_default_last_coeff_enabled_flag is a flag determined by the last coefficient, by default the last coefficient of the current slice. If sh_default_last_coeff_enabled_flag is 1, it means the default last coefficient is used for blocks in the current slice; otherwise (i.e., sh_default_last_coeff_enabled_flag is 0), it means the default last coefficient is not used for blocks in the current slice. default_last_coeff_enabled_flag in the syntax table above changes to sh_default_last_coeff_enabled_flag.

[226] Элементы синтаксиса следующие (Синтаксис заголовка слайса), см. Таблицу 7.[226] The syntax elements are as follows (Slice Header Syntax), see Table 7.

[227] Также понятно, что когда флаг, относящийся к видео, указывает, что видео удовлетворяет заданному условию, кодирование может потребоваться по умолчанию для всех сканируемых подблоков. В этом случае нет необходимости передавать sb_coded_flag в битовом потоке, т.е. ни кодеру, ни декодеру не нужно обрабатывать этот флаг, что может ускорить кодирование. Следовательно, в вариантах осуществления настоящего изобретения вводится флаг кодированного по умолчанию подблока для определения того, использует ли подблок, подлежащий декодированию в текущем блоке, кодирование по умолчанию.[227] It is also understood that when a flag related to a video indicates that the video satisfies a given condition, encoding may be required by default for all scanned sub-blocks. In this case, there is no need to transmit sb_coded_flag in the bitstream, i.e., neither the encoder nor the decoder need to process this flag, which can speed up encoding. Therefore, in embodiments of the present invention, a default-coded sub-block flag is introduced to determine whether the sub-block to be decoded in the current block uses default encoding.

[228] В некоторых вариантах осуществления, когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, способ может дополнительно включать следующее.[228] In some embodiments, when a flag related to a video indicates that the video satisfies a given condition, the method may further include the following.

[229] Анализируют битовый поток с получением флага кодированного по умолчанию подблока. Когда флаг кодированного по умолчанию подблока указывает на то, что подблок, подлежащий кодированию, по умолчанию используется для кодирования, определяют, что флаг кодированного подблока имеет первое значение, и все коэффициенты в подблоке, подлежащем декодированию, в текущем блоке декодируются.[229] The bitstream is analyzed to obtain a flag of the default coded sub-block. When the flag of the default coded sub-block indicates that the sub-block to be coded is used for encoding by default, it is determined that the flag of the coded sub-block has the first value, and all coefficients in the sub-block to be decoded in the current block are decoded.

[230] Следует отметить, что флаг по умолчанию подблока может быть представлен как default_sb_coded_flag. В вариантах осуществления настоящего изобретения флаг кодированного по умолчанию подблока является по меньшей мере флагом одного из: уровня последовательности, уровня изображения, уровня слайса и уровня блока, или даже может быть флагом более высокого уровня (например, VUI, SEI и т. д.), что не ограничено в настоящем описании.[230] It should be noted that the default sub-block flag may be represented as default_sb_coded_flag. In embodiments of the present invention, the default sub-block coded flag is at least one of a sequence level, a picture level, a slice level, and a block level flag, or may even be a higher level flag (e.g., VUI, SEI, etc.), which is not limited in the present description.

[231] То есть, default_sb_coded_flag может быть флагом уровня последовательности или более высокого уровня или может также быть флагом уровня изображения, флагом уровня слайса, флагом уровня блока и т.п. Дополнительно, флаг уровня блока может включать флаг уровня LCU, или флаг уровня CU, или другой флаг уровня блока, что в не ограничено здесь.[231] That is, default_sb_coded_flag may be a sequence-level or higher-level flag, or may also be a picture-level flag, a slice-level flag, a block-level flag, etc. Additionally, the block-level flag may include an LCU-level flag, or a CU-level flag, or another block-level flag, which is not limited here.

[232] В некоторых вариантах осуществления способ может дополнительно включать следующее.[232] In some embodiments, the method may further include the following.

[233] Если флаг кодированного по умолчанию подблока имеет первое значение, определяют, что флаг кодированного по умолчанию подблока указывает на то, что подблок, подлежащий кодированию, по умолчанию используется для кодирования. Если флаг кодированного по умолчанию подблока имеет второе значение, определяют, что флаг кодированного по умолчанию подблока указывает на то, что подблок, подлежащий кодированию, по умолчанию не используется для кодирования.[233] If the default coded sub-unit flag has the first value, it is determined that the default coded sub-unit flag indicates that the sub-unit to be coded is used for encoding by default. If the default coded sub-unit flag has the second value, it is determined that the default coded sub-unit flag indicates that the sub-unit to be coded is not used for encoding by default.

[234] В данном случае первое значение равно 1, а второе значение равно 0.[234] In this case, the first value is 1 and the second value is 0.

[235] Следует отметить, что в другом конкретном примере первое значение также может быть установлено в значение «истина», а второе значение также может быть установлено в значение «ложь». В еще одном конкретном примере первое значение также может быть установлено в значение 0, а второе значение также может быть установлено в значение 1. Необязательно первое значение также может быть установлено в значение «ложь», а второе значение также может быть установлено в значение «истина». Настоящее изобретение этим не ограничено.[235] It should be noted that in another specific example, the first value may also be set to the value "true" and the second value may also be set to the value "false." In yet another specific example, the first value may also be set to the value 0 and the second value may also be set to the value 1. Optionally, the first value may also be set to the value "false" and the second value may also be set to the value "true." The present invention is not limited thereto.

[236] Таким образом, в примере, где первое значение равно 1, а второе значение равно 0, если default_sb_coded_flag имеет значение 1, тогда можно определить, что default_sb_coded_flag указывает на то, что подблок, подлежащий декодированию, по умолчанию требует кодирования. Альтернативно, если default_sb_coded_flag имеет значение 0, то можно определить, что default_sb_ coded_flag указывает на то, что подблок, подлежащий декодированию, по умолчанию не требует кодирования.[236] Thus, in the example where the first value is 1 and the second value is 0, if default_sb_coded_flag has the value 1, then it can be defined that default_sb_coded_flag indicates that the sub-block to be decoded requires encoding by default. Alternatively, if default_sb_coded_flag has the value 0, then it can be defined that default_sb_coded_flag indicates that the sub-block to be decoded does not require encoding by default.

[237] В случае, когда подблок, подлежащий декодированию, по умолчанию требует кодирования, значение default_sb_coded_flag равно 1, что означает. Что значение sb_coded_flag равно 1, т. е., нет необходимости декодировать sb_coded_flag. В этом случае по умолчанию требуется декодирование всех коэффициентов внутри подблока, подлежащего декодированию.[237] In the case where the sub-block to be decoded requires encoding by default, the value of default_sb_coded_flag is 1, which means that there is no need to decode sb_coded_flag. In this case, the default is to require decoding of all coefficients within the sub-block to be decoded.

[238] Дополнительно, в случае когда подблок, подлежащий декодированию, по умолчанию не требует кодирования, т.е. где значение default_sb_coded_flag равно 0, в некоторых вариантах осуществления способ может дополнительно включать следующее.[238] Additionally, in the case where the sub-block to be decoded does not require encoding by default, i.e. where the value of default_sb_coded_flag is 0, in some embodiments, the method may further include the following.

[239] Анализируют битовый поток с получением флага кодированного подблока. Все коэффициенты в подблоке, подлежащем декодированию, декодируют, когда флаг кодированного подблока имеет первое значение.[239] The bitstream is analyzed to obtain the coded sub-block flag. All coefficients in the sub-block to be decoded are decoded when the coded sub-block flag has the first value.

[240] Следует отметить, что если подблок, подлежащий декодированию, по умолчанию не требует кодирования, то необходимо декодировать флаг кодированного подблока, согласно которому определяется, декодировать ли все коэффициенты внутри подблока, подлежащего декодированию.[240] It should be noted that if the sub-block to be decoded does not require encoding by default, then it is necessary to decode the encoded sub-block flag, which determines whether to decode all coefficients within the sub-block to be decoded.

[241] Также, для флага кодированного подблока способ может дополнительно включать следующее.[241] Also, for the encoded sub-block flag, the method may further include the following.

[242] Если флаг кодированного подблока имеет первое значение, определяют, что необходимо кодировать все коэффициенты внутри подблока. Альтернативно, если флаг кодированного подблока имеет второе значение, определяют, что все коэффициенты внутри подблока, подлежащего декодированию, равны нулю.[242] If the coded sub-block flag has the first value, it is determined that all coefficients within the sub-block are to be coded. Alternatively, if the coded sub-block flag has the second value, it is determined that all coefficients within the sub-block to be decoded are equal to zero.

[243] В вариантах осуществления настоящего изобретения флаг кодированного подблока может быть представлен как sb_coded_flag. Взяв в качестве примера первое значение 1 и второе значение 0, если значение sb_coded_flag равно 1, тогда можно определить, что все коэффициенты внутри подблока, подлежащего декодированию, необходимо декодировать. Альтернативно, если значение sb_coded_flag равно 0, тогда может быть определено, что нет необходимости декодировать все коэффициенты внутри подблока, подлежащего декодированию, и в этом случае все коэффициенты внутри подблока, подлежащего декодированию, равны нулю.[243] In embodiments of the present invention, the coded sub-block flag may be represented as sb_coded_flag. Taking the first value of 1 and the second value of 0 as an example, if the value of sb_coded_flag is 1, then it can be determined that all coefficients within the sub-block to be decoded need to be decoded. Alternatively, if the value of sb_coded_flag is 0, then it can be determined that it is not necessary to decode all coefficients within the sub-block to be decoded, and in this case, all coefficients within the sub-block to be decoded are zero.

[244] Таким образом, в определенных случаях во время кодирования коэффициентов все сканируемые подблоки по умолчанию требуют кодирования, или все сканированные подблоки по умолчанию содержат значимые коэффициенты. То есть, в обычных случаях способ кодирования коэффициентов остается таким же, как и способ, доступный в предшествующем уровне техники. Например, определенные случаи могут относиться к видео с высокой битовой глубиной, высоким качеством или высокой битовой скоростью или к сжатию без потерь при кодировании видео. В этом случае имеется много значимых коэффициентов, и почти все сканируемые подблоки требуют кодирования, или, другими словами, почти все сканируемые подблоки содержат значимые коэффициенты. По существу, нет необходимости передавать sb_coded_flag в битовом потоке, а кодеру/декодеру не нужно обрабатывать этот флаг, что обеспечивает более высокую скорость кодирования. В этом случае также наблюдается небольшой прирост эффективности сжатия за счет удаления практически несуществующего флага.[244] Thus, in certain cases, during coefficient coding, all scanned sub-blocks by default require coding, or all scanned sub-blocks by default contain significant coefficients. That is, in normal cases, the coefficient coding method remains the same as the method available in the prior art. For example, certain cases may relate to high-bit-depth, high-quality, or high-bit-rate videos, or to lossless compression in video coding. In this case, there are many significant coefficients, and almost all scanned sub-blocks require coding, or, in other words, almost all scanned sub-blocks contain significant coefficients. As such, there is no need to transmit sb_coded_flag in the bitstream, and the encoder/decoder does not need to process this flag, which provides a higher coding rate. In this case, there is also a small gain in compression efficiency due to the removal of the practically non-existent flag.

[245] Изменения семантики показаны в Таблице 8.[245] The semantic changes are shown in Table 8.

[246] default_sb_coded_flag - это флаг, указывающий, используется ли по умолчанию подблок для кодирования. Если значение default_sb_coded_flag равно 1, то можно определить, что значение sb_coded_flag[xS][yS] равно 1, и в этом случае нет необходимости декодировать sb_coded_flag[xS][yS] из битового потока. В противном случае (значение default_sb_coded_flag равно 0) все равно необходимо декодировать sb_coded_flag[xS][yS] из битового потока.[246] default_sb_coded_flag is a flag indicating whether the subblock is used for encoding by default. If default_sb_coded_flag is 1, then sb_coded_flag[xS][yS] can be determined to be 1, in which case there is no need to decode sb_coded_flag[xS][yS] from the bitstream. Otherwise (default_sb_coded_flag is 0), sb_coded_flag[xS][yS] still needs to be decoded from the bitstream.

[247] Следует также отметить, что default_sb_coded_flag может быть флагом уровня последовательности или более высокого уровня или может также быть флагом уровня изображения, флагом уровня слайса, флагом уровня блока и т. п. Дополнительно, флаг уровня блока может включать флаг уровня LCU, флаг уровня CU или другой флаг уровня блока.[247] It should also be noted that default_sb_coded_flag may be a sequence-level or higher-level flag, or may also be a picture-level flag, a slice-level flag, a block-level flag, etc. Additionally, a block-level flag may include an LCU-level flag, a CU-level flag, or another block-level flag.

[248] Кроме того, default_sb_coded_flag может зависеть от некоторых других флагов, таких как флаг высокой битовой глубины или флаг высокой битовой скорости. То есть, когда значение флага высокой битовой глубины или флага высокой битовой скорости равно 1, необходимо декодировать default_sb_coded_flag; в противном случае нет необходимости декодировать default_sb_coded_flag.[248] In addition, default_sb_coded_flag may depend on some other flags, such as the high bit depth flag or the high bit rate flag. That is, when the value of the high bit depth flag or the high bit rate flag is 1, default_sb_coded_flag needs to be decoded; otherwise, there is no need to decode default_sb_coded_flag.

[249] В одном конкретном примере, взяв в качестве примера уровень последовательности, предположим, что существует флаг уровня последовательности sps_high_bit_length_flag, указывающий на то, является ли текущая видеопоследовательность последовательностью с высокой битовой глубиной. Если значение sps_high_bit_length_flag равно 1, это означает, что текущая видеопоследовательность представляет собой последовательность с высокой битовой глубиной; в противном случае это указывает на то, что текущая видеопоследовательность не является последовательностью с высокой битовой глубиной. На уровне последовательности, если значение sps_high_bit_length_flag равно 1, то необходимо декодировать sps_default_sb_coded_flag. В данном случае sps_default_sb_coded_flag - это флаг, указывающий, требуется ли кодирование по умолчанию для подблоков текущей последовательности. Если значение sps_default_sb_coded_flag равно 1, это означает, что подблоки блоков в текущей последовательности по умолчанию требуют кодирования; в противном случае (т. е. значение sps_default_sb_coded_flag равно 0) это означает, что подблоки блоков в текущей последовательности не требуют кодирования по умолчанию. default_sb_coded_flag в приведенной выше таблице синтаксиса изменится на sps_default_sb_coded_flag.[249] In one specific example, taking the sequence level as an example, assume that there is a sequence-level flag sps_high_bit_length_flag that indicates whether the current video sequence is a high-bit-depth sequence. If the value of sps_high_bit_length_flag is 1, it means that the current video sequence is a high-bit-depth sequence; otherwise, it indicates that the current video sequence is not a high-bit-depth sequence. At the sequence level, if the value of sps_high_bit_length_flag is 1, then sps_default_sb_coded_flag needs to be decoded. In this case, sps_default_sb_coded_flag is a flag that indicates whether default encoding is required for the sub-blocks of the current sequence. If the value of sps_default_sb_coded_flag is 1, it means that subblocks of blocks in the current sequence require encoding by default; otherwise (i.e., the value of sps_default_sb_coded_flag is 0), it means that subblocks of blocks in the current sequence do not require encoding by default. default_sb_coded_flag in the syntax table above will change to sps_default_sb_coded_flag.

[250] Элементы синтаксиса следующие (синтаксис RBSP набора параметров последовательности), см. Таблицу 9.[250] The syntax elements are as follows (the RBSP syntax of the sequence parameter set), see Table 9.

[251] В другом конкретном примере, взяв в качестве примера уровень слайса, предположим, что существует флаг уровня последовательности sps_high_bit_length_flag, указывающий на то, является ли текущая видеопоследовательность последовательностью с высокой битовой глубиной или нет. Если значение sps_high_bit_length_flag равно 1, это означает, что текущая видеопоследовательность представляет собой последовательность с высокой битовой глубиной; в противном случае это указывает на то, что текущая видеопоследовательность не является последовательностью с высокой битовой глубиной. На уровне слайса, если значение sps_high_ bit_depth_flag равно 1, то необходимо декодировать sh_default_sb_coded_flag. В данном случае sh_default_sb_coded_flag - это флаг, указывающий, требуется ли кодирование по умолчанию для подблоков для текущего слайса. Если значение sh_default_sb_coded_flag равно 1, то это означает, что подблоки блоков в текущем слайсе по умолчанию требуют кодирования; в противном случае (т. е. значение sh_default_sb_coded_flag равно 0) это означает, что подблоки блоков внутри текущего слайса по умолчанию не требуют кодирования. default_sb_coded_flag в приведенной выше таблице синтаксиса изменится на sh_default_sb_coded_flag.[251] In another specific example, taking the slice level as an example, assume that there is a sequence-level flag sps_high_bit_length_flag that indicates whether the current video sequence is a high-bit-depth sequence or not. If the value of sps_high_bit_length_flag is 1, it means that the current video sequence is a high-bit-depth sequence; otherwise, it indicates that the current video sequence is not a high-bit-depth sequence. At the slice level, if the value of sps_high_bit_depth_flag is 1, then sh_default_sb_coded_flag needs to be decoded. In this case, sh_default_sb_coded_flag is a flag that indicates whether default encoding is required for sub-blocks for the current slice. If the value of sh_default_sb_coded_flag is 1, it means that sub-blocks of blocks in the current slice require encoding by default; otherwise (i.e., the value of sh_default_sb_coded_flag is 0), it means that sub-blocks of blocks within the current slice do not require encoding by default. default_sb_coded_flag in the syntax table above changes to sh_default_sb_coded_flag.

[252] Элементы синтаксиса следующие (Синтаксис заголовка слайса), см. Таблицу 10.[252] The syntax elements are as follows (Slice Header Syntax), see Table 10.

[253] Понятно, что варианты осуществления настоящего изобретения относятся к трем способам оптимизации, а именно к следующим.[253] It is understood that embodiments of the present invention relate to three optimization methods, namely the following.

[254] Способ 1: для некоторых случаев, при кодировании коэффициента кодирование требуется по умолчанию для всех коэффициентов. То есть, в обычных случаях способ кодирования коэффициентов остается таким же, как и способ, доступный в предшествующем уровне техники. Например, определенные случаи могут относиться к видео с высокой битовой глубиной, высоким качеством или высокой битовой скоростью или к сжатию без потерь при кодировании видео. Кодирование требуется по умолчанию для всех коэффициентов, которые, возможно, потребуется закодировать, т. е. положение последнего значимого коэффициента больше не используется, и вместо этого все возможные значимые коэффициенты текущего блока сканируют в заданном порядке сканирования. Другими словами, последнее положение коэффициентов, которые необходимо закодировать, устанавливают как положение всех возможных значимых коэффициентов текущего блока в заданном порядке сканирования. В данном случае вместо положения последнего значимого коэффициента используется положение последнего кодируемого коэффициента. Это связано с тем, что коэффициент в положении последнего значимого коэффициента, подлежащем кодированию, может быть равен 0, тогда как коэффициент в положении последнего значимого коэффициента не должен быть равен 0.[254] Method 1: For some cases, when encoding a coefficient, encoding is required by default for all coefficients. That is, in normal cases, the encoding method for the coefficients remains the same as the method available in the prior art. For example, certain cases may relate to high bit depth, high quality, or high bit rate video, or to lossless compression in video encoding. Encoding is required by default for all coefficients that may need to be encoded, i.e., the position of the last significant coefficient is no longer used, and instead, all possible significant coefficients of the current block are scanned in a given scan order. In other words, the last position of the coefficients to be encoded is set as the position of all possible significant coefficients of the current block in a given scan order. In this case, the position of the last coefficient to be encoded is used instead of the position of the last significant coefficient. This is because the coefficient at the position of the last significant coefficient to be encoded may be equal to 0, while the coefficient at the position of the last significant coefficient does not have to be equal to 0.

[255] Также, в отдельном случае положение последнего значимого коэффициента все еще используется, и в этом случае положение последнего значимого коэффициента установлено как последнее положение всех возможных значимых коэффициентов текущего блока в заданном порядке сканирования.[255] Also, in a special case, the position of the last significant coefficient is still used, and in this case the position of the last significant coefficient is set to the last position of all possible significant coefficients of the current block in the given scan order.

[256] Способ 2: в определенных случаях при кодировании коэффициентов изменяется способ определения положения последнего значимого коэффициента. То есть, в обычных случаях способ кодирования коэффициентов остается таким же, как и способ, доступный в предшествующем уровне техники. Например, определенные случаи могут относиться к видео с высокой битовой глубиной, высоким качеством или высокой битовой скоростью или к сжатию без потерь при кодировании видео. Обычно горизонтальную координату положения последнего значимого коэффициента, то есть расстояние по горизонтали относительно верхнего левого угла текущего блока, кодируют в last_sig_coeff_x_prefix и Last_sig_coeff_x_suffix, а вертикальную координату положения последнего значимого коэффициента, то есть расстояние по вертикали относительно верхнего левого угла текущего блока, кодируют в last_sig_coeff_y_prefix и last_sig_coeff_y_suffix. Для сравнения, в случае высокой битовой глубины, высокого качества, высокой битовой скорости или сжатия без потерь при кодировании видео положение последнего значимого коэффициента обычно находится близко к правому нижнему углу области всех возможных значимых коэффициентов текущего блока. В этом случае расстояние по горизонтали положения последнего значимого коэффициента относительно правого нижнего угла области всех возможных значимых коэффициентов текущего блока кодируют в last_sig_coeff_x_prefix и last_sig_coeff_x_suffix, а расстояние по вертикали положения последнего значимого коэффициента относительно правого нижнего угла области всех возможных значимых коэффициентов текущего блока кодируют в last_sig_coeff_y_prefix, last_sig_coeff_y_suffix. Например, если область всех возможных значимых коэффициентов текущего блока представляет собой прямоугольную область от (0, 0) до ((1<<log2ZoTbWidth) -1, (1<<log2ZoTbHeight)-1), то last_sig_coeff_x_prefix и last_sig_coeff_x_suffix кодируют для представления расстояния по горизонтали положения последнего значимого коэффициента относительно текущего блока ((1<<log2ZoTbWidth) -1, (1<<log2ZoTbHeight) -1). last_sig_coeff_y_prefix и last_sig_coeff_y_suffix кодируют для представления расстояния по вертикали положения последнего значимого коэффициента относительно текущего блока ((1<<log2ZoTbWidth) -1, (1<<log2ZoTbHeight) -1).[256] Method 2: In certain cases, when encoding the coefficients, the method for determining the position of the last significant coefficient is changed. That is, in normal cases, the method for encoding the coefficients remains the same as the method available in the prior art. For example, certain cases may relate to high bit depth, high quality, or high bit rate video, or to lossless compression in video encoding. Typically, the horizontal coordinate of the position of the last significant coefficient, that is, the horizontal distance relative to the upper left corner of the current block, is encoded in last_sig_coeff_x_prefix and Last_sig_coeff_x_suffix, and the vertical coordinate of the position of the last significant coefficient, that is, the vertical distance relative to the upper left corner of the current block, is encoded in last_sig_coeff_y_prefix and last_sig_coeff_y_suffix. For comparison, in the case of high bit depth, high quality, high bit rate, or lossless compression in video coding, the position of the last significant coefficient is usually close to the lower right corner of the region of all possible significant coefficients of the current block. In this case, the horizontal distance of the position of the last significant coefficient relative to the lower right corner of the region of all possible significant coefficients of the current block is encoded as last_sig_coeff_x_prefix and last_sig_coeff_x_suffix, and the vertical distance of the position of the last significant coefficient relative to the lower right corner of the region of all possible significant coefficients of the current block is encoded as last_sig_coeff_y_prefix and last_sig_coeff_y_suffix. For example, if the region of all possible significant coefficients of the current block is a rectangular region from (0, 0) to ((1<<log2ZoTbWidth) - 1, (1<<log2ZoTbHeight) - 1), then last_sig_coeff_x_prefix and last_sig_coeff_x_suffix are encoded to represent the horizontal distance of the position of the last significant coefficient relative to the current block ((1<<log2ZoTbWidth) - 1, (1<<log2ZoTbHeight) - 1). last_sig_coeff_y_prefix and last_sig_coeff_y_suffix are encoded to represent the vertical distance of the position of the last significant coefficient relative to the current block ((1<<log2ZoTbWidth) - 1, (1<<log2ZoTbHeight) - 1).

[257] Способ 3: в определенных случаях во время кодирования коэффициентов все сканируемые подблоки по умолчанию требуют кодирования, или, иными словами, все сканированные подблоки по умолчанию содержат значимые коэффициенты. То есть, в обычных случаях способ кодирования коэффициентов остается таким же, как и способ, доступный в предшествующем уровне техники. Например, определенные случаи могут относиться к видео с высокой битовой глубиной, высоким качеством или высокой битовой скоростью или к сжатию без потерь при кодировании видео. В этом случае имеется много значимых коэффициентов, и почти все сканируемые подблоки требуют кодирования, или, другими словами, почти все сканируемые подблоки содержат значимые коэффициенты. По существу, нет необходимости передавать sb_coded_flag в битовом потоке, и кодеру/декодеру не нужно обрабатывать этот флаг.[257] Method 3: In certain cases, during coefficient encoding, all scanned sub-blocks by default require encoding, or in other words, all scanned sub-blocks by default contain significant coefficients. That is, in normal cases, the coefficient encoding method remains the same as the method available in the prior art. For example, certain cases may relate to high-bit-depth, high-quality, or high-bit-rate video, or to lossless compression in video encoding. In this case, there are many significant coefficients, and almost all scanned sub-blocks require encoding, or in other words, almost all scanned sub-blocks contain significant coefficients. As such, there is no need to transmit sb_coded_flag in the bitstream, and the encoder/decoder does not need to process this flag.

[258] Для трех вышеописанных способов в сценариях кодирования видео с высокой битовой глубиной, высокой битовой скоростью, высоким качеством или сжатием без потерь, поскольку шаблон распределения коэффициентов отличается от такового в сценариях с обычным видео, во время кодирования коэффициентов за счет уменьшения или даже устранения количества элементов синтаксиса, закодированных в режиме контекста, таких как элементы синтаксиса о положении последнего значимого коэффициента, флаги кодированного подблока и т. д., общая скорость и скорость кодирования могут быть улучшены для кодирования коэффициентов. Кроме того, поскольку эти флаги меньше используются при кодировании видео с высокой битовой глубиной, высокой битовой скоростью, высоким качеством или без потерь, удаление этих флагов не приведет к снижению эффективности сжатия, а вместо этого в некоторой степени улучшит эффективность сжатия.[258] For the above three methods, in high-bit-depth, high-bit-rate, high-quality, or lossless video coding scenarios, since the coefficient distribution pattern is different from that in normal video scenarios, during coefficient coding, by reducing or even eliminating the number of syntax elements encoded in the context mode, such as syntax elements about the position of the last significant coefficient, coded sub-block flags, etc., the overall coding speed and speed can be improved for coefficient coding. Furthermore, since these flags are used less in high-bit-depth, high-bit-rate, high-quality, or lossless video coding, removing these flags will not reduce the compression efficiency, but will instead improve the compression efficiency to some extent.

[259] Кроме того, в вариантах осуществления настоящего изобретения, взяв в качестве примера уровень последовательности, флаг уровня последовательности sps_high_bit_depth_flag, указывающий на то, является ли текущая видеопоследовательность последовательностью с высокой битовой глубиной, также может быть заменен флагом sps_high_bit_rate_flag, указывающим на то, является ли текущая видеопоследовательность последовательностью с высокой битовой скоростью или также может быть заменен другим флагом, указывающим на высокую битовую ширину, высокую битовую скорость, высокое качество или кодирование без потерь и т. д.[259] Furthermore, in embodiments of the present invention, taking the sequence level as an example, the sequence level flag sps_high_bit_depth_flag, which indicates whether the current video sequence is a high bit depth sequence, may also be replaced by the flag sps_high_bit_rate_flag, which indicates whether the current video sequence is a high bit rate sequence, or may also be replaced by another flag indicating high bit width, high bit rate, high quality, or lossless coding, etc.

[260] Следует также отметить, что способы декодирования коэффициентов по вариантам осуществления настоящего изобретения описываются на основе примера, в котором техническое решение используется для всех компонентов в видео, где все компоненты относятся, например, к R, G и B в видео формата RGB или Y, U и V (Y, Cb и Cr) в видео формата YUV и т. п. Необязательно, способ декодирования коэффициентов вариантов осуществления настоящего изобретения может использоваться только для определенного компонента, например, только для компонента Y формата YUV. Необязательно, способ декодирования коэффициентов вариантов осуществления настоящего изобретения может использоваться для каждого компонента отдельно, т. е., возможность использования для каждого компонента может контролироваться отдельно.[260] It should also be noted that the coefficient decoding methods of the embodiments of the present invention are described based on an example in which the technical solution is used for all components in a video, where all components refer to, for example, R, G and B in RGB video or Y, U and V (Y, Cb and Cr) in YUV video, etc. Optionally, the coefficient decoding method of the embodiments of the present invention may be used only for a specific component, for example, only for the Y component of the YUV format. Optionally, the coefficient decoding method of the embodiments of the present invention may be used for each component separately, i.e., the possibility of use for each component may be controlled separately.

[261] Настоящие варианты осуществления предусматривают способ декодирования коэффициента, применяемый к декодеру. Анализируют битовый поток с получением флага, относящегося к видео. Когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, битовый поток анализируют с получением флага обратного положения последнего значимого коэффициента и информации о координате последнего значимого коэффициента. Когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока, положение последнего значимого коэффициента определяют путем вычисления с использованием информации о координате последнего значимого коэффициента. Согласно заданному порядку сканирования все коэффициенты перед положением последнего значимого коэффициента декодируют для определения коэффициентов текущего блока. Таким образом, в сценариях кодирования видео с высокой битовой глубиной, высокой битовой скоростью, высоким качеством или сжатием без потерь, поскольку шаблон распределения коэффициентов отличается от такового в сценариях с обычным видео, во время кодирования коэффициентов за счет уменьшения или даже устранения количества элементов синтаксиса, закодированных в режиме контекста, таких как элементы синтаксиса о положении последнего значимого коэффициента, флаги кодированного подблока и т. д., или дополнительное выполнение преобразования координаты в случае, когда значения координат последнего значимого коэффициента слишком велики, может быть уменьшено потребление ресурсов, вызванное кодированием в битовом потоке, и, таким образом, может быть улучшена пропускная способность и скорость кодирования коэффициентов. В дополнение эффективность сжатия также может быть повышена, поскольку уменьшенные или устраненные элементы синтаксиса оказывают меньшее влияние на кодирование видео при высокой битовой глубине, высокой битовой скорости, высоком качестве или сжатии без потерь.[261] The present embodiments provide a coefficient decoding method applied to a decoder. A bitstream is analyzed to obtain a flag related to a video. When the video-related flag indicates that the video satisfies a predetermined condition, the bitstream is analyzed to obtain a last significant coefficient position inversion flag and information on the coordinate of the last significant coefficient. When the last significant coefficient position inversion flag indicates that the position of the last significant coefficient is reversed for the current block, the position of the last significant coefficient is determined by calculation using the information on the coordinate of the last significant coefficient. According to a predetermined scanning order, all coefficients before the position of the last significant coefficient are decoded to determine the coefficients of the current block. Therefore, in high-bit-depth, high-bit-rate, high-quality, or lossless video coding scenarios, since the coefficient distribution pattern differs from that in conventional video scenarios, during coefficient coding, by reducing or even eliminating the number of syntax elements encoded in the context mode, such as syntax elements about the position of the last significant coefficient, coded sub-block flags, etc., or by additionally performing coordinate transformation when the coordinate values of the last significant coefficient are too large, the resource consumption caused by coding in the bitstream can be reduced, thereby improving the throughput and speed of coefficient coding. Furthermore, compression efficiency can also be improved, since the reduced or eliminated syntax elements have less impact on video coding in high-bit-depth, high-bit-rate, high-quality, or lossless compression scenarios.

[262] В другом варианте осуществления настоящего изобретения на фиг. 11 проиллюстрирована схематическая блок-схема способа кодирования коэффициента, предоставленного в вариантах осуществления настоящего изобретения. Как показано на фиг. 11, способ может включать следующее.[262] In another embodiment of the present invention, Fig. 11 illustrates a schematic flow chart of a coefficient encoding method provided in embodiments of the present invention. As shown in Fig. 11, the method may include the following.

[263] На этапе S1101 определяют флаг, относящийся к видео, и положение последнего значимого коэффициента.[263] In step S1101, a flag related to the video and the position of the last significant coefficient are determined.

[264] На этапе S1102, когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, определяют флаг обратного положения последнего значимого коэффициента.[264] In step S1102, when the flag related to the video indicates that the video satisfies a predetermined condition, a flag of the reverse position of the last significant coefficient is determined.

[265] На этапе S1103 информацию о координате последнего значимого коэффициента определяют согласно положению последнего значимого коэффициента и флагу обратного положения последнего значимого коэффициента.[265] In step S1103, the coordinate information of the last significant coefficient is determined according to the position of the last significant coefficient and the reverse position flag of the last significant coefficient.

[266] На этапе S1104 все коэффициенты перед положением последнего значимого коэффициента кодируют согласно заданному порядку сканирования, а битовую информацию, полученную с помощью кодирования, флаг, относящийся к видео, и информацию о координате последнего значимого коэффициента передают в битовый поток.[266] In step S1104, all coefficients before the position of the last significant coefficient are encoded according to a predetermined scanning order, and bit information obtained by encoding, a flag related to the video, and information about the coordinate of the last significant coefficient are transmitted to a bit stream.

[267] Следует отметить, что способ кодирования коэффициента в вариантах осуществления настоящего изобретения применяют к кодеру. В частности, на основе структуры состава кодера 100, проиллюстрированной на фиг. 8A, способ кодирования коэффициентов в вариантах осуществления настоящего изобретения в основном применяется к «узлу 115 кодирования энтропии» кодера 100. Узел 115 кодирования энтропии может использовать режим адаптивного двоичного арифметического кодирования на основе контекстной модели или обходной режим для выполнения кодирования энтропии связанных флагов (или элементов синтаксиса) и затем передачи сигнала в битовый поток.[267] It should be noted that the coefficient encoding method in the embodiments of the present invention is applied to an encoder. In particular, based on the composition structure of the encoder 100 illustrated in Fig. 8A, the coefficient encoding method in the embodiments of the present invention is mainly applied to the “entropy encoding unit 115” of the encoder 100. The entropy encoding unit 115 may use an adaptive binary arithmetic encoding mode based on a context model or a bypass mode to perform entropy encoding of associated flags (or syntax elements) and then transmit a signal into a bitstream.

[268] Следует также отметить, что кодирование коэффициентов, как обычно упоминается в стандартах видео, может включать как кодирование, так и декодирование. Таким образом, кодирование коэффициентов включает способ кодирования коэффициентов на стороне кодера и способ декодирования коэффициентов на стороне декодера. Вариант осуществления настоящего изобретения описан в отношении способа кодирования коэффициентов на стороне кодера.[268] It should also be noted that coefficient coding, as commonly referred to in video standards, may include both encoding and decoding. Thus, coefficient coding includes a method for encoding coefficients on the encoder side and a method for decoding coefficients on the decoder side. An embodiment of the present invention is described with respect to a method for encoding coefficients on the encoder side.

[269] Обычно, например, для обычного видео, способ кодирования коэффициентов является таким же, как и способы, доступные в предшествующем уровне техники. Однако для определенного случая, такого как сценарий кодирования видео с высокой битовой глубиной, высоким качеством, высокой битовой скоростью или сжатием без потерь, варианты осуществления настоящего изобретения могут модифицировать способ получения положения последнего значимого коэффициента. В этом случае, в вариантах осуществления настоящего раскрытия, флаг, относящийся к видео, и флаг обратного положения последнего значимого коэффициента должны быть введены для определения положения последнего значимого коэффициента, а затем все коэффициенты перед положением последнего значимого коэффициента внутри текущего блока кодируют в соответствии с заданным порядком сканирования.[269] Typically, for example, for a normal video, the method for encoding coefficients is the same as the methods available in the prior art. However, for a specific case, such as a scenario of encoding video with a high bit depth, high quality, high bit rate, or lossless compression, embodiments of the present invention may modify the method for obtaining the position of the last significant coefficient. In this case, in the embodiments of the present disclosure, a video-related flag and a last significant coefficient reverse position flag should be introduced to determine the position of the last significant coefficient, and then all coefficients before the position of the last significant coefficient within the current block are encoded according to a given scanning order.

[270] В вариантах осуществления настоящего изобретения, во-первых, необходимо определить, удовлетворяет ли текущее видео заданному условию, которое может быть представлено флагом, относящимся к видео. В некоторых вариантах осуществления флаг, относящийся к видео, может быть определен следующим образом.[270] In embodiments of the present invention, it is first necessary to determine whether the current video satisfies a given condition, which may be represented by a flag related to the video. In some embodiments, the flag related to the video may be determined as follows.

[271] Когда видео удовлетворяет заданному условию, флаг, относящийся к видео, определяют как первое значение. Альтернативно, когда видео не удовлетворяет заданному условию, флаг, относящийся к видео, определяют как второе значение.[271] When a video satisfies a given condition, a flag related to the video is defined as the first value. Alternatively, when a video does not satisfy a given condition, a flag related to the video is defined as the second value.

[272] В данном случае первое значение равно 1, а второе значение равно 0.[272] In this case, the first value is 1 and the second value is 0.

[273] Следует отметить, что в другом конкретном примере первое значение также может быть установлено в значение «истина», а второе значение также может быть установлено в значение «ложь». В еще одном конкретном примере первое значение также может быть установлено в значение 0, а второе значение также может быть установлено в значение 1. Необязательно первое значение также может быть установлено в значение «ложь», а второе значение также может быть установлено в значение «истина». Настоящее изобретение этим не ограничено.[273] It should be noted that in another specific example, the first value may also be set to the value "true" and the second value may also be set to the value "false." In yet another specific example, the first value may also be set to the value 0 and the second value may also be set to the value 1. Optionally, the first value may also be set to the value "false" and the second value may also be set to the value "true." The present invention is not limited thereto.

[274] Также следует отметить, что заданное условие включает по меньшей мере одно из: высокой битовой глубины, высокого качества, высокой битовой скорости, высокой кадровой частоты или сжатия без потерь.[274] It should also be noted that the specified condition includes at least one of: high bit depth, high quality, high bit rate, high frame rate, or lossless compression.

[275] Кроме того, флаг, относящийся к видео, может быть флагом уровня последовательности или даже флагом более высокого уровня, таким как VUI, SEI и т. д. Удовлетворяет ли видео заданному условию, можно определить, определив, удовлетворяет ли видео высокой глубине, или удовлетворяет ли видео высокой битовой скорости, или удовлетворяет ли видео высокому качеству, или удовлетворяет ли видео сжатию без потерь и т. д. Ниже в качестве примеров описывается каждый из этих четырех случаев.[275] In addition, the video-related flag may be a sequence-level flag or even a higher-level flag such as VUI, SEI, etc. Whether a video satisfies a given condition can be determined by determining whether the video satisfies high bit depth, or whether the video satisfies high bit rate, or whether the video satisfies high quality, or whether the video satisfies lossless compression, etc. Each of these four cases is described below as examples.

[276] В некоторых вариантах осуществления, когда флаг, относящийся к видео, является флагом высокой битовой глубины, способ может дополнительно включать следующее.[276] In some embodiments, when the video-related flag is a high bit depth flag, the method may further include the following.

[277] Если видео удовлетворяет высокой битовой глубине, определяют, что флаг высокой битовой глубины указывает на то, что видео удовлетворяет заданному условию.[277] If the video satisfies the high bit depth, it is determined that the high bit depth flag indicates that the video satisfies the specified condition.

[278] В некоторых вариантах осуществления, когда флаг, относящийся к видео, является флагом высокой битовой скорости, способ может дополнительно включать следующее.[278] In some embodiments, when the video-related flag is a high bit rate flag, the method may further include the following.

[279] Если видео удовлетворяет высокой битовой скорости, определяют, что флаг высокой битовой скорости указывает на то, что видео удовлетворяет заданному условию.[279] If the video satisfies the high bit rate, it is determined that the high bit rate flag indicates that the video satisfies the specified condition.

[280] В некоторых вариантах осуществления, когда флаг, относящийся к видео, является флагом высокого качества, способ может дополнительно включать следующее.[280] In some embodiments, when the flag related to the video is a high quality flag, the method may further include the following.

[281] Если видео удовлетворяет высокоему качеству, определяют, что флаг высокого качества, указывает на то, что видео удовлетворяет заданному условию.[281] If the video satisfies the high quality, it is determined that the high quality flag indicates that the video satisfies the given condition.

[282] В некоторых вариантах осуществления, когда флаг, относящийся к видео, является флагом сжатия без потерь, способ может дополнительно включать следующее.[282] In some embodiments, when the video-related flag is a lossless compression flag, the method may further include the following.

[283] Если видео удовлетворяет сжатие без потерь, определяют, что флаг сжатия без потерь указывает на то, что видео удовлетворяет заданному условию.[283] If the video satisfies lossless compression, the lossless compression flag is determined to indicate that the video satisfies the specified condition.

[284] В качестве примера, взяв в качестве примера уровень последовательности, флаг, относящийся к видео, может быть флагом высокой битовой глубины (представленным sps_high_bit_depth_flag) для указания того, является ли текущая видеопоследовательность последовательностью с высокой битовой глубиной. Флаг, относящийся к видео, также может быть флагом высокой битовой скорости (представленным sps_high_bit_rate_flag) для указания того, является ли текущая видеопоследовательность последовательностью с высокой битовой скоростью. Флаг, относящийся к видео, также может быть другим флагом, указывающим на высокую битовую глубину, высокую битовую скорость, высокое качество или сжатие без потерь, что конкретно не ограничено в вариантах осуществления настоящего изобретения.[284] As an example, taking the sequence level as an example, the video-related flag may be a high bit depth flag (represented by sps_high_bit_depth_flag) to indicate whether the current video sequence is a high bit depth sequence. The video-related flag may also be a high bit rate flag (represented by sps_high_bit_rate_flag) to indicate whether the current video sequence is a high bit rate sequence. The video-related flag may also be another flag indicating high bit depth, high bit rate, high quality, or lossless compression, which is not particularly limited in the embodiments of the present invention.

[285] Кроме того, что касается флага обратного положения последнего значимого коэффициента, флаг обратного положения последнего значимого коэффициента может быть определен следующим образом.[285] Furthermore, with regard to the last significant coefficient reverse position flag, the last significant coefficient reverse position flag can be defined as follows.

[286] Если положение последнего значимого коэффициента изменено на обратное для текущего блока, флаг обратного положения последнего значимого коэффициента определяют как первое значение. Если положение последнего значимого коэффициента не изменено на обратное для текущего блока, флаг обратного положения последнего значимого коэффициента определяют как второе значение.[286] If the position of the last significant coefficient is reversed for the current block, the last significant coefficient position reverse flag is defined as the first value. If the position of the last significant coefficient is not reversed for the current block, the last significant coefficient position reverse flag is defined as the second value.

[287] В вариантах осуществления настоящего изобретения флаг обратного положения последнего значимого коэффициента может быть представлен как reverse_last_sig_coeff_flag. В данном случае флаг обратного положения последнего значимого коэффициента может быть по меньшей мере флагом: уровня последовательности, уровня изображения, уровня слайса или уровня блока; или даже флагом более высокого уровня (например, VUI, SEI и т. д.), что не будет ограничено здесь.[287] In embodiments of the present invention, the reverse last significant coefficient position flag may be represented as reverse_last_sig_coeff_flag. In this case, the reverse last significant coefficient position flag may be at least a sequence-level flag, a picture-level flag, a slice-level flag, or a block-level flag; or even a higher-level flag (e.g., VUI, SEI, etc.), which will not be limited here.

[288] То есть, reverse_last_sig_coeff_flag может быть флагом уровня последовательности или более высокого уровня или может также быть флагом уровня изображения, флагом уровня слайса, флагом уровня блока и т.п. Дополнительно, флаг уровня блока может включать флаг уровня LCU, флаг уровня CU, или другой флаг уровня блока, что не ограничено в вариантах осуществления настоящего изобретения.[288] That is, reverse_last_sig_coeff_flag may be a sequence level or higher level flag, or may also be a picture level flag, a slice level flag, a block level flag, etc. Additionally, the block level flag may include an LCU level flag, a CU level flag, or another block level flag, which is not limited in the embodiments of the present invention.

[289] Таким образом, в примере, где первое значение равно 1, а второе значение равно 0, если определено, что положение последнего значимого коэффициента изменено на обратное для текущего блока, тогда reverse_last_sig_coeff_flag имеет значение 1. Альтернативно, если определено, что положение последнего значимого коэффициента не изменено на обратное для текущего блока, тогда reverse_last_sig_coeff_flag имеет значение 0.[289] Thus, in the example where the first value is 1 and the second value is 0, if the position of the last significant coefficient is determined to be reversed for the current block, then reverse_last_sig_coeff_flag has the value 1. Alternatively, if the position of the last significant coefficient is determined to be not reversed for the current block, then reverse_last_sig_coeff_flag has the value 0.

[290] Дополнительно положение последнего значимого коэффициента может включать начальную горизонтальную координату и начальную вертикальную координату последнего значимого коэффициента. В случае, когда начальная горизонтальная координата представляет собой расстояние по горизонтали от положения последнего значимого коэффициента до верхнего левого угла текущего блока, а начальная вертикальная координата представляет собой расстояние по вертикали от положения последнего значимого коэффициента до верхнего левого угла текущего блока, информация о координатах последнего значимого коэффициента может быть определена в соответствии с положением последнего значимого коэффициента и флагом обратного положения последнего значимого коэффициента следующим образом.[290] Additionally, the position of the last significant coefficient may include a starting horizontal coordinate and a starting vertical coordinate of the last significant coefficient. In the case where the starting horizontal coordinate is the horizontal distance from the position of the last significant coefficient to the upper left corner of the current block, and the starting vertical coordinate is the vertical distance from the position of the last significant coefficient to the upper left corner of the current block, the coordinate information of the last significant coefficient may be determined in accordance with the position of the last significant coefficient and the reverse position flag of the last significant coefficient as follows.

[291] Если флаг обратного положения последнего значимого коэффициента имеет первое значение, определяют информацию о координате последнего значимого коэффициента посредством вычисления согласно начальной горизонтальной координате и начальной вертикальной координате последнего значимого коэффициента. Альтернативно, если флаг обратного положения последнего значимого коэффициента имеет второе значение, определяют информацию о координате последнего значимого коэффициента непосредственно согласно начальной горизонтальной координате и начальной вертикальной координате последнего значимого коэффициента.[291] If the last significant coefficient reverse position flag has the first value, the coordinate information of the last significant coefficient is determined by calculating according to the initial horizontal coordinate and the initial vertical coordinate of the last significant coefficient. Alternatively, if the last significant coefficient reverse position flag has the second value, the coordinate information of the last significant coefficient is determined directly according to the initial horizontal coordinate and the initial vertical coordinate of the last significant coefficient.

[292] Иными словами, в некоторых вариантах осуществления способ может дополнительно включать следующее.[292] In other words, in some embodiments, the method may further include the following.

[293] Если флаг обратного положения последнего значимого коэффициента имеет первое значение, определяют информацию о координате последнего значимого коэффициента как расстояние по горизонтали и расстояние по вертикали от положения последнего значимого коэффициента до нижнего правого угла текущего блока. Альтернативно, если флаг обратного положения последнего значимого коэффициента имеет второе значение, определяют информацию о координате последнего значимого коэффициента как расстояние по горизонтали и расстояние по вертикали от положения последнего значимого коэффициента до верхнего левого угла текущего блока.[293] If the last significant coefficient inverse position flag has the first value, the coordinate information of the last significant coefficient is determined as the horizontal distance and the vertical distance from the position of the last significant coefficient to the lower right corner of the current block. Alternatively, if the last significant coefficient inverse position flag has the second value, the coordinate information of the last significant coefficient is determined as the horizontal distance and the vertical distance from the position of the last significant coefficient to the upper left corner of the current block.

[294] Иными словами, информация о координате последнего значимого коэффициента обычно является расстоянием по горизонтали и расстоянием по вертикали между положением последнего значимого коэффициента и верхним левым углом текущего блока. Для обычного видео большинство из значимых коэффициентов сосредоточено в верхнем левом углу, и большая область в правом нижнем углу имеет коэффициенты, равные 0. Однако для кодирования видео с высокой битовой глубиной, высоким качеством или высокой битовой скоростью в правом нижнем углу также появляется большое количество значимых коэффициентов, так что информация о координате последнего значимого коэффициента обычно имеет большие значения. В этом случае, чтобы сэкономить ресурсы, преобразование координаты (которое может быть вычислением изменения координаты на обратную, то есть после изменения координаты на обратную информацией о координате последнего значимого коэффициента является расстояние по горизонтали и расстояние по вертикали между положением последнего значимого коэффициента и нижним правым углом текущего блока) необходимо во время кодирования коэффициента. В этом случае также необходим расчет изменения координаты на обратную во время декодирования коэффициента в декодере. После повторного изменения на обратную, информация о координате последнего значимого коэффициента может быть восстановлена как расстояния по горизонтали и по вертикали между положением последнего значимого коэффициента и верхним левым углом текущего блока. Таким образом может быть определено положение последнего значимого коэффициента.[294] In other words, the coordinate information of the last significant coefficient is usually the horizontal distance and the vertical distance between the position of the last significant coefficient and the upper left corner of the current block. For normal video, most of the significant coefficients are concentrated in the upper left corner, and a large area in the lower right corner has coefficients equal to 0. However, for coding video with high bit depth, high quality, or high bit rate, a large number of significant coefficients also appear in the lower right corner, so the coordinate information of the last significant coefficient usually has large values. In this case, in order to save resources, coordinate transformation (which can be a coordinate reversal calculation, that is, after coordinate reversal, the coordinate information of the last significant coefficient is the horizontal distance and the vertical distance between the position of the last significant coefficient and the lower right corner of the current block) is necessary during coefficient encoding. In this case, coordinate reversal calculation is also necessary during coefficient decoding in the decoder. After reversing, the coordinate information of the last significant coefficient can be reconstructed as the horizontal and vertical distances between the position of the last significant coefficient and the upper left corner of the current block. This allows the position of the last significant coefficient to be determined.

[295] Дополнительно, в некоторых вариантах осуществления информация о координате последнего значимого коэффициента может быть определена согласно начальной горизонтальной координате и начальной вертикальной координате последнего значимого коэффициента следующим образом.[295] Additionally, in some embodiments, the coordinate information of the last significant coefficient may be determined according to the initial horizontal coordinate and the initial vertical coordinate of the last significant coefficient as follows.

[296] Определяют ширину и высоту текущего блока. Горизонтальную координату последнего значимого коэффициента получают вычитанием начальной горизонтальной координаты последнего значимого коэффициента из ширины текущего блока. Вертикальную координату последнего значимого коэффициента получают вычитанием начальной вертикальной координаты последнего значимого коэффициента из высоты текущего блока. Информацию о координате последнего значимого коэффициента определяют согласно горизонтальной координате последнего значимого коэффициента и вертикальной координате последнего значимого коэффициента.[296] The width and height of the current block are determined. The horizontal coordinate of the last significant coefficient is obtained by subtracting the initial horizontal coordinate of the last significant coefficient from the width of the current block. The vertical coordinate of the last significant coefficient is obtained by subtracting the initial vertical coordinate of the last significant coefficient from the height of the current block. Information about the coordinate of the last significant coefficient is determined according to the horizontal coordinate of the last significant coefficient and the vertical coordinate of the last significant coefficient.

[297] Следует также отметить, что текущий блок здесь может быть блоком без преобразования нулевого вывода или блоком после преобразования нулевого вывода. Если взять в качестве примера блок после преобразования с нулевым выводом, ширина текущего блока равна 1<<log2ZoTbWidth, а высота текущего блока равна 1<<log2ZoTbHeight. Затем, в случае, когда reverse_last_sig_coeff_flag указывает, что положение последнего значимого коэффициента изменено на обратное (т. е. значение reverse_last_sig_coeff_flag равно 1):[297] It should also be noted that the current block here can be a block without zero-output transformation or a block after zero-output transformation. Taking the block after zero-output transformation as an example, the width of the current block is 1<<log2ZoTbWidth, and the height of the current block is 1<<log2ZoTbHeight. Then, in the case where reverse_last_sig_coeff_flag indicates that the position of the last significant coefficient is reversed (i.e., the value of reverse_last_sig_coeff_flag is 1):

LastSignificantCoeffX= (1<<log2ZoTbWidth) -1-LastSignificantCoeffX;LastSignificantCoeffX= (1<<log2ZoTbWidth) -1-LastSignificantCoeffX;

LastSignificantCoeffY= (1<<log2ZoTbHeight) -1-LastSignificantCoeffY.LastSignificantCoeffY= (1<<log2ZoTbHeight) -1-LastSignificantCoeffY.

[298] В приведенном выше примере (LastSignificantCoeffX, LastSignificantCoeffY) в правой части уравнения представляет собой информацию о координате последнего значимого коэффициента, полученной непосредственно (то есть, начальную горизонтальную координату и начальную вертикальную координату последнего значимого коэффициента), а (LastSignificantCoeffX, LastSignificantCoeffY) в левой части уравнения представляет собой информацию о координате последнего значимого коэффициента после изменения положения на обратное (то есть информацию о координате последнего значимого коэффициента, которая передается в битовый поток в случае, если положение последнего значимого коэффициента изменено на обратное для текущего блока).[298] In the above example, (LastSignificantCoeffX, LastSignificantCoeffY) on the right-hand side of the equation represents the coordinate information of the last significant coefficient obtained directly (i.e., the starting horizontal coordinate and the starting vertical coordinate of the last significant coefficient), and (LastSignificantCoeffX, LastSignificantCoeffY) on the left-hand side of the equation represents the coordinate information of the last significant coefficient after being reversed (i.e., the coordinate information of the last significant coefficient that is transmitted to the bitstream in case the position of the last significant coefficient is reversed for the current block).

[299] В некоторых вариантах осуществления информация о координате последнего значимого коэффициента может передаваться в битовый поток следующим образом.[299] In some embodiments, information about the coordinate of the last significant coefficient may be transmitted in the bitstream as follows.

[300] Информацию о префиксе горизонтальной координаты последнего значимого коэффициента, информацию о префиксе вертикальной координаты последнего значимого коэффициента, информацию о суффиксе горизонтальной координаты последнего значимого коэффициента и информацию о суффиксе вертикальной координаты последнего значимого коэффициента определяют согласно информации о координате последнего значимого коэффициента. Информацию о префиксе горизонтальной координаты последнего значимого коэффициента, информацию о префиксе вертикальной координаты последнего значимого коэффициента, информацию о суффиксе горизонтальной координаты последнего значимого коэффициента и информацию о суффиксе вертикальной координаты последнего значимого коэффициента передают в битовый поток.[300] Information about the prefix of the horizontal coordinate of the last significant coefficient, information about the prefix of the vertical coordinate of the last significant coefficient, information about the suffix of the horizontal coordinate of the last significant coefficient, and information about the suffix of the vertical coordinate of the last significant coefficient are determined according to the information about the coordinate of the last significant coefficient. Information about the prefix of the horizontal coordinate of the last significant coefficient, information about the prefix of the vertical coordinate of the last significant coefficient, information about the suffix of the horizontal coordinate of the last significant coefficient, and information about the suffix of the vertical coordinate of the last significant coefficient are transmitted in the bitstream.

[301] Следует отметить, что информация о префиксе горизонтальной координаты последнего значимого коэффициента представлена как last_sig_coeff_x_prefix. Информация о префиксе вертикальной координаты последнего значимого коэффициента представлена как last_sig_coeff_y_prefix. Информация о суффиксе горизонтальной координаты последнего значимого коэффициента представлена как last_sig_coeff_x_suffix. Информация о суффиксе вертикальной координаты последнего значимого коэффициента представлена как last_sig_coeff_y_suffix. Тогда last_sig_coeff_x_prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_prefix, и last_sig_coeff_y_suffix передаются в битовый поток, так что декодер может определить информацию о координате последнего значимого коэффициента путем анализа битового потока.[301] It should be noted that the information about the prefix of the horizontal coordinate of the last significant coefficient is represented as last_sig_coeff_x_prefix. The information about the prefix of the vertical coordinate of the last significant coefficient is represented as last_sig_coeff_y_prefix. The information about the suffix of the horizontal coordinate of the last significant coefficient is represented as last_sig_coeff_x_suffix. The information about the suffix of the vertical coordinate of the last significant coefficient is represented as last_sig_coeff_y_suffix. Then last_sig_coeff_x_prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_prefix, and last_sig_coeff_y_suffix are transmitted in the bitstream, so that the decoder can determine the coordinate information of the last significant coefficient by analyzing the bitstream.

[302] Таким образом, варианты осуществления настоящего изобретения предоставляют модифицированный способ определения положения последнего значимого коэффициента. То есть, в обычных случаях способ кодирования коэффициентов остается таким же, как и способ, доступный в предшествующем уровне техники. Например, определенные случаи могут относиться к видео с высокой битовой глубиной, высоким качеством или высокой битовой скоростью или к сжатию без потерь при кодировании видео. Обычно, как изображено на фиг. 10A, горизонтальную координату положения последнего значимого коэффициента, то есть расстояние по горизонтали относительно верхнего левого угла текущего блока, кодируют в last_sig_coeff_x_prefix и last_sig_coeff_x_suffix, а вертикальную координату положения последнего значимого коэффициента, то есть расстояние по вертикали относительно верхнего левого угла текущего блока, кодируют в last_sig_coeff_y_prefix и last_sig_coeff_y_suffix. Для сравнения, в случае высокой битовой глубины, высокого качества, высокой битовой скорости или сжатия без потерь при кодировании видео положение последнего значимого коэффициента обычно находится близко к правому нижнему углу области всех возможных значимых коэффициентов текущего блока. В этом случае, как проиллюстрировано на фиг. 10B расстояние по горизонтали положения последнего значимого коэффициента относительно правого нижнего угла области всех возможных значимых коэффициентов текущего блока кодируют в last_sig_coeff_x_prefix и last_sig_coeff_x_suffix, а расстояние по вертикали положения последнего значимого коэффициента относительно правого нижнего угла области всех возможных значимых коэффициентов текущего блока кодируют в last_sig_coeff_y_prefix, last_sig_coeff_y_suffix. Следовательно, в вариантах осуществления настоящего изобретения вводится reverse_last_sig_coeff_flag, чтобы можно было решить проблему большого потребления ресурсов, вызванных кодированием больших значений в битовом потоке.[302] Thus, embodiments of the present invention provide a modified method for determining the position of the last significant coefficient. That is, in general cases, the method for encoding the coefficients remains the same as the method available in the prior art. For example, certain cases may relate to high bit depth, high quality, or high bit rate video, or to lossless compression in video encoding. Generally, as shown in Fig. 10A, the horizontal coordinate of the position of the last significant coefficient, that is, the horizontal distance relative to the upper left corner of the current block, is encoded in last_sig_coeff_x_prefix and last_sig_coeff_x_suffix, and the vertical coordinate of the position of the last significant coefficient, that is, the vertical distance relative to the upper left corner of the current block, is encoded in last_sig_coeff_y_prefix and last_sig_coeff_y_suffix. For comparison, in the case of high bit depth, high quality, high bit rate, or lossless compression in video coding, the position of the last significant coefficient is usually close to the lower right corner of the region of all possible significant coefficients of the current block. In this case, as illustrated in Fig. 10B, the horizontal distance of the position of the last significant coefficient relative to the lower right corner of the region of all possible significant coefficients of the current block is encoded in last_sig_coeff_x_prefix and last_sig_coeff_x_suffix, and the vertical distance of the position of the last significant coefficient relative to the lower right corner of the region of all possible significant coefficients of the current block is encoded in last_sig_coeff_y_prefix, last_sig_coeff_y_suffix. Therefore, in the embodiments of the present invention, reverse_last_sig_coeff_flag is introduced so that the problem of large resource consumption caused by encoding large values in the bitstream can be solved.

[303] Также, когда флаг, относящийся к видео, указывает, что видео удовлетворяет заданному условию, все коэффициенты, которые, возможно, потребуется кодировать, могут потребовать кодирования по умолчанию. Другими словами, положение последнего значимого коэффициента больше не используется, а вместо этого все возможные значимые коэффициенты текущего блока сканируют в заданном порядке сканирования. Таким образом, варианты осуществления настоящего изобретения могут также вводить флаг, обусловленный последним коэффициентом, для определения того, используется ли положение последнего коэффициента для текущего блока.[303] Also, when a flag associated with a video indicates that the video satisfies a given condition, all coefficients that may need to be encoded may require default encoding. In other words, the position of the last significant coefficient is no longer used, and instead, all possible significant coefficients of the current block are scanned in a given scanning order. Thus, embodiments of the present invention may also introduce a flag conditioned on the last coefficient to determine whether the position of the last coefficient is used for the current block.

[304] В некоторых вариантах осуществления, когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, способ может дополнительно включать следующее.[304] In some embodiments, when a flag related to a video indicates that the video satisfies a given condition, the method may further include the following.

[305] Определяют флаг, обусловленный последним коэффициентом. Когда флаг, обусловленный последним коэффициентом, указывает на то, что положение последнего коэффициента используется для текущего блока, кодируют все коэффициенты перед положением последнего коэффициента согласно заданному порядку сканирования, и предоставляют битовую информацию, полученную с помощью кодирования, флаг, относящийся к видео, и флаг, обусловленный последним коэффициентом, в битовый поток.[305] A flag determined by the last coefficient is used. When the flag determined by the last coefficient indicates that the position of the last coefficient is used for the current block, all coefficients before the position of the last coefficient are encoded according to a specified scanning order, and the bit information obtained by encoding, the flag related to the video, and the flag determined by the last coefficient are provided in the bitstream.

[306] Следует отметить, что флаг, обусловленный последним коэффициентом, может быть представлен как default_last_coeff_enabled_flag. В вариантах осуществления настоящего изобретения флаг, обусловленный последним коэффициентом, может быть по меньшей мере флагом одного из: уровня последовательности, уровня изображения, уровня слайса и уровня блока; или даже флагом более высокого уровня (например, VUI, SEI и т. д.), что не ограничено здесь.[306] It should be noted that the flag determined by the last coefficient may be represented as default_last_coeff_enabled_flag. In embodiments of the present invention, the flag determined by the last coefficient may be at least one of a sequence level, a picture level, a slice level, and a block level flag; or even a higher level flag (e.g., VUI, SEI, etc.), which is not limited here.

[307] Следует отметить, что, что касается флага, обусловленного последним коэффициентом, в некоторых вариантах осуществления флаг, обусловленный последним коэффициентом, может определяться следующим образом. [307] It should be noted that, with respect to the flag determined by the last coefficient, in some embodiments, the flag determined by the last coefficient may be determined as follows.

[308] Когда положение последнего коэффициента используется для текущего блока, определяют флаг, обусловленный последним коэффициентом, как первое значение. Альтернативно, когда положение последнего коэффициента не используется для текущего блока, определяют флаг, обусловленный последним коэффициентом, как второе значение.[308] When the position of the last coefficient is used for the current block, the flag determined by the last coefficient is defined as the first value. Alternatively, when the position of the last coefficient is not used for the current block, the flag determined by the last coefficient is defined as the second value.

[309] Таким образом, в примере, где первое значение равно 1, а второе значение равно 0, если определено, что положение последнего коэффициента используется для текущего блока, тогда default_last_coeff_enabled_flag имеет значение 1. Альтернативно, если определено, что положение последнего коэффициента не используется для текущего блока, тогда default_last_coeff_enabled_flag имеет значение, равное 0.[309] Thus, in the example where the first value is 1 and the second value is 0, if it is determined that the last coefficient position is used for the current block, then default_last_coeff_enabled_flag has a value of 1. Alternatively, if it is determined that the last coefficient position is not used for the current block, then default_last_coeff_enabled_flag has a value of 0.

[310] Также, для положения последнего коэффициента в некоторых вариантах осуществления положение последнего коэффициента является положением в нижнем правом углу матрицы, образованной всеми возможными значимыми коэффициентами в текущем блоке. Альтернативно положение последнего коэффициента является последним положением при сканировании всех возможных значимых коэффициентов в текущем блоке согласно заданному порядку сканирования.[310] Also, for the position of the last coefficient, in some embodiments, the position of the last coefficient is the position in the lower right corner of the matrix formed by all possible significant coefficients in the current block. Alternatively, the position of the last coefficient is the last position when scanning all possible significant coefficients in the current block according to a given scanning order.

[311] Следует отметить, что в вариантах осуществления изобретения положение последнего коэффициента не представляет собой положение последнего значимого коэффициента. Это связано с тем, что коэффициент в положении последнего значимого коэффициента может быть равен 0, тогда как коэффициент в положении последнего значимого коэффициента не должен быть равен 0.[311] It should be noted that in embodiments of the invention, the position of the last coefficient does not represent the position of the last significant coefficient. This is because the coefficient at the position of the last significant coefficient may be equal to 0, whereas the coefficient at the position of the last significant coefficient does not have to be equal to 0.

[312] В конкретном примере способ может дополнительно включать установку положения последнего значимого коэффициента в качестве положения последнего коэффициента.[312] In a particular example, the method may further include setting the position of the last significant coefficient as the position of the last coefficient.

[313] То есть в вариантах осуществления настоящего изобретения положение последнего значимого коэффициента все еще может использоваться, и в этом случае положение последнего значимого коэффициента должно быть установлено как последнее положение всех коэффициентов, которые могут не быть нулевыми в текущем блоке в заданном порядке сканирования.[313] That is, in embodiments of the present invention, the position of the last significant coefficient may still be used, in which case the position of the last significant coefficient should be set as the last position of all coefficients that may not be zero in the current block in the given scan order.

[314] Дополнительно, положение последнего коэффициента может быть представлено (LastCoeffX, LastCoeffY), т.е., последнее положение всех возможных значимых коэффициентов в текущем блоке в заданном порядке сканирования. В некоторых вариантах осуществления способ может дополнительно включать следующее.[314] Additionally, the position of the last coefficient may be represented by (LastCoeffX, LastCoeffY), i.e., the last position of all possible significant coefficients in the current block in a given scan order. In some embodiments, the method may further include the following.

[315] Определяют ширину и высоту блока преобразования, полученные в заданной операции на текущем блоке. Информацию о координате нижнего правого угла блока преобразования получают посредством вычисления координаты согласно ширине и высоте блока преобразования. Положение последнего коэффициента определяют согласно информации о координате нижнего правого угла блока преобразования.[315] The width and height of the transformation block obtained in a given operation on the current block are determined. Information on the coordinate of the lower right corner of the transformation block is obtained by calculating the coordinate according to the width and height of the transformation block. The position of the last coefficient is determined according to the information on the coordinate of the lower right corner of the transformation block.

[316] В данном случае заданная операция включает по меньшей мере операцию нулевого вывода.[316] In this case, the specified operation includes at least the zero output operation.

[317] Следует отметить, что (LastCoeffX, LastCoeffY) представляет собой информацию о координате правого нижнего угла блока преобразования после нулевого вывода, где (LastCoeffX, LastCoeffY) получают следующим образом:[317] It should be noted that (LastCoeffX, LastCoeffY) is the coordinate information of the lower right corner of the transformation block after zero output, where (LastCoeffX, LastCoeffY) is obtained as follows:

LastCoeffX= (1<<log2ZoTbWidth) -1;LastCoeffX= (1<<log2ZoTbWidth) -1;

LastCoeffY= (1<<log2ZoTbHeight) -1.LastCoeffY= (1<<log2ZoTbHeight) -1.

[318] Таким образом, если default_last_coeff_enabled_flag имеет значение 1, то положение последнего коэффициента может быть определено на основе (LastCoeffX, LastCoeffY).[318] Thus, if default_last_coeff_enabled_flag is set to 1, then the position of the last coefficient can be determined based on (LastCoeffX, LastCoeffY).

[319] В конкретном примере положение последнего значимого коэффициента все еще используется, и в этом случае положение последнего значимого коэффициента может быть установлено как последнее положение всех возможных нулевых коэффициентов в текущий блок в заданном порядке сканирования. В некоторых вариантах осуществления способ может дополнительно включать следующее.[319] In a specific example, the position of the last significant coefficient is still used, and in this case, the position of the last significant coefficient may be set as the last position of all possible zero coefficients in the current block in a given scan order. In some embodiments, the method may further include the following.

[320] Когда положение последнего значимого коэффициента установлено как положение последнего коэффициента, положение последнего значимого коэффициента определяют согласно информации о координате нижнего правого угла блока преобразования.[320] When the position of the last significant coefficient is set as the position of the last coefficient, the position of the last significant coefficient is determined according to the coordinate information of the lower right corner of the transformation block.

[321] То есть, позиция последнего значимого коэффициента может быть представлена как (LastSignificantCoeffX, LastSignificantCoeffY), где (LastSignificantCoeffX, LastSignificantCoeffY) получают следующим образом:[321] That is, the position of the last significant coefficient can be represented as (LastSignificantCoeffX, LastSignificantCoeffY), where (LastSignificantCoeffX, LastSignificantCoeffY) is obtained as follows:

LastSignificantCoeffX= (1 << log2ZoTbWidth) -1;LastSignificantCoeffX= (1 << log2ZoTbWidth) -1;

LastSignificantCoeffY= (1 << log2ZoTbHeight) -1.LastSignificantCoeffY= (1 << log2ZoTbHeight) -1.

[322] Как указано выше, (LastSignificantCoeffX, LastSignificantCoeffY) представляет собой информацию о координате нижнего правого угла блока преобразования после нулевого вывода. Если значение default_last_coeff_enabled_flag равно 1, то положение последнего значимого коэффициента может быть определено на основе(LastSignificantCoeffX, LastSignificantCoeffY).[322] As stated above, (LastSignificantCoeffX, LastSignificantCoeffY) represents the coordinate information of the lower right corner of the transform block after zero output. If the value of default_last_coeff_enabled_flag is 1, then the position of the last significant coefficient can be determined based on (LastSignificantCoeffX, LastSignificantCoeffY).

[323] Дополнительно, в случае когда положение последнего коэффициента не используется для текущего блока, способ может дополнительно включать следующее.[323] Additionally, in the case where the position of the last coefficient is not used for the current block, the method may further include the following.

[324] Определяют информацию о префиксе горизонтальной координаты последнего значимого коэффициента, информацию о префиксе вертикальной координаты последнего значимого коэффициента и информацию о суффиксе вертикальной координаты последнего значимого коэффициента. Положение последнего значимого коэффициента определяют согласно информации о префиксе горизонтальной координаты последнего значимого коэффициента, информации о префиксе вертикальной координаты последнего значимого коэффициента, информации о суффиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента. Все коэффициенты перед положением последнего значимого коэффициента кодируют согласно заданному порядку сканирования и передают сигнальную информацию о префиксе горизонтальной координаты последнего значимого коэффициента, информацию о префиксе вертикальной координаты последнего значимого коэффициента, информацию о суффиксе горизонтальной координаты последнего значимого коэффициента и информацию о суффиксе вертикальной координаты последнего значимого коэффициента в битовый поток.[324] Information about the prefix of the horizontal coordinate of the last significant coefficient, information about the prefix of the vertical coordinate of the last significant coefficient and information about the suffix of the vertical coordinate of the last significant coefficient are determined. The position of the last significant coefficient is determined according to the information about the prefix of the horizontal coordinate of the last significant coefficient, the information about the prefix of the vertical coordinate of the last significant coefficient, the information about the suffix of the horizontal coordinate of the last significant coefficient and the information about the suffix of the vertical coordinate of the last significant coefficient. All coefficients before the position of the last significant coefficient are encoded according to a given scanning order and signal information about the prefix of the horizontal coordinate of the last significant coefficient, the prefix of the vertical coordinate of the last significant coefficient, the information about the suffix of the horizontal coordinate of the last significant coefficient and the suffix of the vertical coordinate of the last significant coefficient are transmitted into a bit stream.

[325] Следует отметить, что если положение последнего коэффициента не используется для текущего блока, необходимо определить положение последнего значимого коэффициента. В частности, last_sig_coeff_x_prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_ prefix, и last_sig_coeff_y_suffix не требуют определения. Тогда last_sig_coeff_x_prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_ prefix, и last_sig_coeff_y_suffix передаются в битовый поток.[325] It should be noted that if the position of the last coefficient is not used for the current block, the position of the last significant coefficient must be determined. In particular, last_sig_coeff_x_prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_prefix, and last_sig_coeff_y_suffix do not need to be determined. Then last_sig_coeff_x_prefix, last_sig_coeff_x_suffix, last_sig_coeff_y_prefix, and last_sig_coeff_y_suffix are transmitted in the bitstream.

[326] Таким образом, при кодировании коэффициента кодирование требуется по умолчанию для всех коэффициентов, которые, возможно, потребуется закодировать. То есть, в обычных случаях способ кодирования коэффициентов остается таким же, как и способ, доступный в предшествующем уровне техники. Например, определенные случаи могут относиться к видео с высокой битовой глубиной, высоким качеством или высокой битовой скоростью или к сжатию без потерь при кодировании видео. Кодирование требуется по умолчанию для всех коэффициентов, которые, возможно, потребуется закодировать, т. е. положение последнего значимого коэффициента больше не используется, и вместо этого все возможные значимые коэффициенты текущего блока сканируют в заданном порядке сканирования. Другими словами, последнее положение коэффициентов, которые необходимо закодировать, устанавливают как положение всех возможных значимых коэффициентов текущего блока в заданном порядке сканирования. Это положение обычно является положением в нижнем правом углу матрицы, образованной всеми возможными значимыми коэффициентами текущего блока. Следовательно, в вариантах осуществления настоящего раскрытия может быть введен default_last_coeff_enabled_flag, так что синтаксические элементы, относящиеся к положению последнего значимого коэффициента, могут быть уменьшены или даже исключены, что может уменьшить потребление ресурсов и исключить нерациональное их использование.[326] Thus, when encoding a coefficient, encoding is required by default for all coefficients that may need to be encoded. That is, in normal cases, the method for encoding the coefficients remains the same as the method available in the prior art. For example, certain cases may relate to high-bit-depth, high-quality, or high-bit-rate video, or to lossless compression in video encoding. Encoding is required by default for all coefficients that may need to be encoded, i.e., the position of the last significant coefficient is no longer used, and instead, all possible significant coefficients of the current block are scanned in a given scan order. In other words, the last position of the coefficients that need to be encoded is set as the position of all possible significant coefficients of the current block in a given scan order. This position is typically the position in the lower right corner of the matrix formed by all possible significant coefficients of the current block. Therefore, in embodiments of the present disclosure, a default_last_coeff_enabled_flag may be introduced so that syntax elements related to the position of the last significant coefficient may be reduced or even eliminated, which may reduce resource consumption and avoid wasteful use of resources.

[327] Также, когда флаг, относящийся к видео, указывает, что видео удовлетворяет заданному условию, кодирование может потребоваться по умолчанию для всех сканируемых подблоков. В этом случае нет необходимости передавать sb_coded_flag в битовом потоке, т.е. ни кодеру, ни декодеру не нужно обрабатывать этот флаг, что может ускорить кодирование. Следовательно, в вариантах осуществления настоящего изобретения вводится флаг кодированного по умолчанию подблока для определения того, использует ли подблок, подлежащий декодированию в текущем блоке, кодирование по умолчанию.[327] Also, when a flag related to a video indicates that the video satisfies a given condition, encoding may be required by default for all scanned sub-blocks. In this case, there is no need to transmit sb_coded_flag in the bitstream, i.e., neither the encoder nor the decoder need to process this flag, which can speed up encoding. Therefore, in embodiments of the present invention, a default-coded sub-block flag is introduced to determine whether the sub-block to be decoded in the current block uses default encoding.

[328] В некоторых вариантах осуществления, когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, способ может дополнительно включать следующее.[328] In some embodiments, when a flag related to a video indicates that the video satisfies a given condition, the method may further include the following.

[329] Определяют флаг кодированного по умолчанию подблока для подблока, подлежащего кодированию в текущем блоке. Когда флаг кодированного по умолчанию подблока указывает на то, что подблок, подлежащий кодированию, по умолчанию используется для кодирования, кодируют все коэффициенты в подблоке, подлежащем кодированию, и предоставляют битовую информацию, полученную с помощью кодирования, и флаг кодированного по умолчанию подблока в битовый поток.[329] A default sub-block flag is determined for a sub-block to be encoded in the current block. When the default sub-block flag indicates that the sub-block to be encoded is used for encoding by default, all coefficients in the sub-block to be encoded are encoded and the bit information obtained by encoding and the default sub-block flag are provided in the bitstream.

[330] Следует отметить, что флаг по умолчанию подблока может быть представлен как default_sb_coded_flag. В вариантах осуществления настоящего изобретения флаг кодированного по умолчанию подблока является по меньшей мере флагом одного из: уровня последовательности, уровня изображения, уровня слайса и уровня блока, или даже может быть флагом более высокого уровня (например, VUI, SEI и т. д.), что не ограничено в настоящем описании.[330] It should be noted that the default sub-block flag may be represented as default_sb_coded_flag. In embodiments of the present invention, the default sub-block coded flag is at least one of a sequence level, a picture level, a slice level, and a block level flag, or may even be a higher level flag (e.g., VUI, SEI, etc.), which is not limited in the present description.

[331] Также отмечается, что для флага по умолчанию подблока в некоторых вариантах осуществления флаг кодированного по умолчанию подблока для подблока, подлежащего кодированию, может быть определен следующим образом.[331] It is also noted that for a default sub-block flag, in some embodiments, a default coded sub-block flag for a sub-block to be coded may be determined as follows.

[332] Если подблок, подлежащий кодированию, по умолчанию использует кодирование, флаг кодированного по умолчанию подблока определяют как первое значение. Альтернативно, если подблок, подлежащий кодированию, по умолчанию не использует кодирование, флаг кодированного по умолчанию подблока определяют как второе значение.[332] If the sub-unit to be encoded uses encoding by default, the default sub-unit flag is defined as the first value. Alternatively, if the sub-unit to be encoded does not use encoding by default, the default sub-unit flag is defined as the second value.

[333] Таким образом, в примере, где первое значение равно 1, а второе значение равно 0, если определено, что подблок, подлежащий кодированию, по умолчанию требует кодирования, тогда default_sb_coded_flag имеет значение 1. Альтернативно, если определено, что подблок, подлежащий кодированию, по умолчанию не требует кодирования, тогда default_sb_coded_flag имеет значение 0.[333] Thus, in the example where the first value is 1 and the second value is 0, if it is determined that the sub-block to be encoded by default requires encoding, then default_sb_coded_flag has the value 1. Alternatively, if it is determined that the sub-block to be encoded by default does not require encoding, then default_sb_coded_flag has the value 0.

[334] В случае когда подблок, подлежащий кодированию, по умолчанию требует кодирования, значение default_sb_coded_flag равно 1, что означает, что значение sb_coded_flag равно 1, т. е., нет необходимости кодировать sb_coded_flag. Однако в случае если подблок, подлежащий кодированию, по умолчанию не требует кодирования, то есть флаг кодированного по умолчанию подблока указывает, что подблок, подлежащий кодированию, не требует кодирования по умолчанию, в некоторых вариантах осуществления способ может дополнительно включать определение флага кодированного подблока для подблока, подлежащего кодированию, и передачу флага кодированного подблока в битовый поток.[334] In the case where the sub-block to be coded requires encoding by default, the value of default_sb_coded_flag is 1, which means that the value of sb_coded_flag is 1, i.e., there is no need to encode sb_coded_flag. However, in the case where the sub-block to be coded does not require encoding by default, i.e., the default coded sub-block flag indicates that the sub-block to be coded does not require encoding by default, in some embodiments, the method may further include determining a coded sub-block flag for the sub-block to be coded, and transmitting the coded sub-block flag to the bitstream.

[335] Также в некоторых вариантах осуществления флаг кодированного по умолчанию подблока для подблока, подлежащего кодированию, может быть определен следующим образом.[335] Also, in some embodiments, a default coded sub-block flag for a sub-block to be coded may be determined as follows.

[336] Если кодирование требуется для подблока, подлежащего кодированию, флаг кодированного по умолчанию подблока определяют как первое значение. Альтернативно, если все коэффициенты в подблоке равны 0, флаг кодированного по умолчанию подблока определяют как второе значение.[336] If encoding is required for the sub-block to be encoded, the default-coded sub-block flag is defined as the first value. Alternatively, if all coefficients in the sub-block are 0, the default-coded sub-block flag is defined as the second value.

[337] В вариантах осуществления настоящего изобретения флаг кодированного подблока может быть представлен как sb_coded_flag. Взяв в качестве примера первое значение 1 и второе значение 0, если определено, что подблок, подлежащий кодированию, должен быть закодирован, это означает, что подблок, подлежащий кодированию, содержит ненулевые коэффициенты для кодирования, тогда sb_coded_flag имеет значение 1. Альтернативно, если определено, что подблок, подлежащий кодированию, не должен быть закодирован, что означает, что все коэффициенты внутри кодируемого подблока равны 0, тогда sb_coded_flag имеет значение 0.[337] In embodiments of the present invention, the coded sub-block flag may be represented as sb_coded_flag. Taking the first value of 1 and the second value of 0 as an example, if it is determined that the sub-block to be coded should be coded, this means that the sub-block to be coded contains non-zero coefficients to be coded, then sb_coded_flag has a value of 1. Alternatively, if it is determined that the sub-block to be coded should not be coded, which means that all coefficients within the sub-block to be coded are 0, then sb_coded_flag has a value of 0.

[338] Таким образом, в определенных случаях во время кодирования коэффициентов все сканируемые подблоки по умолчанию требуют кодирования, или все сканированные подблоки по умолчанию содержат значимые коэффициенты. То есть, в обычных случаях способ кодирования коэффициентов остается таким же, как и способ, доступный в предшествующем уровне техники. Например, определенные случаи могут относиться к видео с высокой битовой глубиной, высоким качеством или высокой битовой скоростью или к сжатию без потерь при кодировании видео. В этом случае имеется много значимых коэффициентов, и почти все сканируемые подблоки требуют кодирования, или, другими словами, почти все сканируемые подблоки содержат значимые коэффициенты. По существу, нет необходимости передавать sb_coded_flag в битовом потоке, а кодеру/декодеру не нужно обрабатывать этот флаг, что обеспечивает более высокую скорость кодирования. В этом случае также наблюдается небольшой прирост эффективности сжатия за счет удаления практически несуществующего флага.[338] Thus, in certain cases, during coefficient coding, all scanned sub-blocks by default require coding, or all scanned sub-blocks by default contain significant coefficients. That is, in normal cases, the coefficient coding method remains the same as the method available in the prior art. For example, certain cases may relate to high bit depth, high quality, or high bit rate video, or to lossless compression in video coding. In this case, there are many significant coefficients, and almost all scanned sub-blocks require coding, or, in other words, almost all scanned sub-blocks contain significant coefficients. As such, there is no need to transmit sb_coded_flag in the bitstream, and the encoder/decoder does not need to process this flag, which provides a higher coding rate. In this case, there is also a small gain in compression efficiency due to the removal of the practically non-existent flag.

[339] Настоящие варианты осуществления дополнительно предусматривают способ кодирования коэффициента, применяемый к кодеру. Определяют флаг, относящийся к видео, и положение последнего значимого коэффициента. Когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, определяют флаг обратного положения последнего значимого коэффициента. Информацию о координате последнего значимого коэффициента определяют согласно положению последнего значимого коэффициента и флагу обратного положения последнего значимого коэффициента. Все коэффициенты перед положением последнего значимого коэффициента кодируют согласно заданному порядку сканирования, а битовую информацию, полученную с помощью кодирования, флаг, относящийся к видео, и информацию о координате последнего значимого коэффициента передают в битовый поток. Таким образом, в сценариях кодирования видео с высокой битовой глубиной, высокой битовой скоростью, высоким качеством или сжатием без потерь, поскольку шаблон распределения коэффициентов отличается от такового в сценариях с обычным видео, во время кодирования коэффициентов за счет уменьшения или даже устранения количества элементов синтаксиса, закодированных в режиме контекста, таких как элементы синтаксиса о положении последнего значимого коэффициента, флаги кодированного подблока и т. д., или дополнительное выполнение преобразования координаты в случае, когда значения координат последнего значимого коэффициента слишком велики, может быть уменьшено потребление ресурсов, вызванное кодированием в битовом потоке, и, таким образом, может быть улучшена пропускная способность и скорость кодирования коэффициентов. В дополнение эффективность сжатия также может быть повышена, поскольку уменьшенные или устраненные элементы синтаксиса оказывают меньшее влияние на кодирование видео при высокой битовой глубине, высокой битовой скорости, высоком качестве или сжатии без потерь.[339] The present embodiments further provide a coefficient encoding method applied to an encoder. A flag related to the video and the position of the last significant coefficient are determined. When the flag related to the video indicates that the video satisfies a predetermined condition, a flag of the inverse position of the last significant coefficient is determined. Information on the coordinate of the last significant coefficient is determined according to the position of the last significant coefficient and the flag of the inverse position of the last significant coefficient. All coefficients before the position of the last significant coefficient are encoded according to a predetermined scanning order, and the bit information obtained by encoding, the flag related to the video, and the information on the coordinate of the last significant coefficient are transmitted to a bitstream. Therefore, in high-bit-depth, high-bit-rate, high-quality, or lossless video coding scenarios, since the coefficient distribution pattern differs from that in conventional video scenarios, during coefficient coding, by reducing or even eliminating the number of syntax elements encoded in the context mode, such as syntax elements about the position of the last significant coefficient, coded sub-block flags, etc., or by additionally performing coordinate transformation when the coordinate values of the last significant coefficient are too large, the resource consumption caused by coding in the bitstream can be reduced, thereby improving the throughput and speed of coefficient coding. Furthermore, compression efficiency can also be improved, since the reduced or eliminated syntax elements have less impact on video coding in high-bit-depth, high-bit-rate, high-quality, or lossless compression scenarios.

[340] В другом варианте осуществления настоящего изобретения, на основе той же идеи, что и в предыдущих вариантах осуществления, на фиг. 12 проиллюстрирована структурная схема кодера 120, предоставленного в вариантах осуществления настоящего изобретения. Как показано на фиг. 12, кодер 120 может содержать первый узел 1201 определения и узел 1202 кодирования.[340] In another embodiment of the present invention, based on the same idea as in the previous embodiments, Fig. 12 illustrates a block diagram of an encoder 120 provided in the embodiments of the present invention. As shown in Fig. 12, the encoder 120 may include a first determining unit 1201 and an encoding unit 1202.

[341] Первый узел 1201 определения выполнен с возможностью определения флага, относящегося к видео, и положения последнего значимого коэффициента и определения флага обратного положения последнего значимого коэффициента, когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию.[341] The first determining unit 1201 is configured to determine a flag related to the video and a position of the last significant coefficient and determine a flag of the reverse position of the last significant coefficient when the flag related to the video indicates that the video satisfies a predetermined condition.

[342] Первый узел 1201 определения дополнительно выполнен с возможностью определения информации о координате последнего значимого коэффициента согласно положению последнего значимого коэффициента и флагу обратного положения последнего значимого коэффициента.[342] The first determining unit 1201 is further configured to determine information about the coordinate of the last significant coefficient according to the position of the last significant coefficient and the reverse position flag of the last significant coefficient.

[343] Узел 1202 кодирования выполнен с возможностью кодирования всех коэффициентов перед положением последнего значимого коэффициента согласно заданному порядку сканирования и передачи битовой информации, полученной с помощью кодирования, флага, относящегося к видео, и информации о координате последнего значимого коэффициента в битовый поток.[343] The encoding unit 1202 is configured to encode all coefficients before the position of the last significant coefficient according to a given scanning order and transmit bit information obtained by encoding, a flag related to the video, and information about the coordinate of the last significant coefficient into a bit stream.

[344] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью определения флага, относящегося к видео, как первого значения, когда видео удовлетворяет заданному условию, или определения флага, относящегося к видео, как второго значения, когда видео не удовлетворяет заданному условию.[344] In some embodiments, the first determining unit 1201 is further configured to determine a flag related to the video as a first value when the video satisfies a predetermined condition, or to determine a flag related to the video as a second value when the video does not satisfy the predetermined condition.

[345] В некоторых вариантах осуществления заданное условие включает по меньшей мере одно из: высокой битовой глубины, высокого качества, высокой битовой скорости, высокой кадровой частоты или сжатия без потерь.[345] In some embodiments, the specified condition includes at least one of: high bit depth, high quality, high bit rate, high frame rate, or lossless compression.

[346] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью определения флага обратного положения последнего значимого коэффициента как первого значения, когда положение последнего значимого коэффициента изменено на обратное для текущего блока, или определения флага обратного положения последнего значимого коэффициента как второго значения, когда положение последнего значимого коэффициента не изменено на обратное для текущего блока.[346] In some embodiments, the first determining unit 1201 is further configured to determine the last significant coefficient position reversal flag as a first value when the position of the last significant coefficient is reversed for the current block, or to determine the last significant coefficient position reversal flag as a second value when the position of the last significant coefficient is not reversed for the current block.

[347] В некоторых вариантах осуществления положение последнего значимого коэффициента включает начальную горизонтальную координату и начальную вертикальную координату последнего значимого коэффициента, где начальная горизонтальная координата представляет собой расстояние по горизонтали от положения последнего значимого коэффициента до верхнего левого угла текущего блока, и начальная вертикальная координата представляет собой расстояние по вертикали от положения последнего значимого коэффициента до левого верхнего угла текущего блока.[347] In some embodiments, the position of the last significant coefficient includes an initial horizontal coordinate and an initial vertical coordinate of the last significant coefficient, where the initial horizontal coordinate is the horizontal distance from the position of the last significant coefficient to the upper left corner of the current block, and the initial vertical coordinate is the vertical distance from the position of the last significant coefficient to the upper left corner of the current block.

[348] Соответственно, первый узел 1201 определения дополнительно выполнен с возможностью: когда флаг обратного положения последнего значимого коэффициента имеет первое значение, определения информации о координате последнего значимого коэффициента путем вычисления в соответствии с начальной горизонтальной координатой и начальной вертикальной координатой последнего значимого коэффициента, или когда флаг обратного положения последнего значимого коэффициента имеет второе значение, определения информации о координате последнего значимого коэффициента непосредственно в соответствии с начальной горизонтальной координатой и начальной вертикальной координатой последнего значимого коэффициента.[348] Accordingly, the first determining unit 1201 is further configured to: when the last significant coefficient reverse position flag has a first value, determine the coordinate information of the last significant coefficient by calculating in accordance with the initial horizontal coordinate and the initial vertical coordinate of the last significant coefficient, or when the last significant coefficient reverse position flag has a second value, determine the coordinate information of the last significant coefficient directly in accordance with the initial horizontal coordinate and the initial vertical coordinate of the last significant coefficient.

[349] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью: определения ширины и высоты текущего блока; получения горизонтальной координаты последнего значимого коэффициента вычитанием начальной горизонтальной координаты последнего значимого коэффициента из ширины текущего блока; получения вертикальной координаты последнего значимого коэффициента вычитанием начальной вертикальной координаты последнего значимого коэффициента из высоты текущего блока; и определения информации о координате последнего значимого коэффициента согласно горизонтальной координате последнего значимого коэффициента и вертикальной координате последнего значимого коэффициента.[349] In some embodiments, the first determining unit 1201 is further configured to: determine a width and a height of a current block; obtain a horizontal coordinate of the last significant coefficient by subtracting an initial horizontal coordinate of the last significant coefficient from the width of the current block; obtain a vertical coordinate of the last significant coefficient by subtracting an initial vertical coordinate of the last significant coefficient from the height of the current block; and determine information about the coordinate of the last significant coefficient according to the horizontal coordinate of the last significant coefficient and the vertical coordinate of the last significant coefficient.

[350] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью: когда флаг обратного положения последнего значимого коэффициента имеет первое значение, определения информации о координате последнего значимого коэффициента как расстояния по горизонтали и расстояния по вертикали от положения последнего значимого коэффициента до нижнего правого угла текущего блока; или когда флаг обратного положения последнего значимого коэффициента имеет второе значение, определения информации о координате последнего значимого коэффициента как расстояния по горизонтали и расстояния по вертикали от положения последнего значимого коэффициента до верхнего левого угла текущего блока.[350] In some embodiments, the first determining unit 1201 is further configured to: when the last significant coefficient inverse position flag has a first value, determine the coordinate information of the last significant coefficient as a horizontal distance and a vertical distance from the position of the last significant coefficient to the lower right corner of the current block; or when the last significant coefficient inverse position flag has a second value, determine the coordinate information of the last significant coefficient as a horizontal distance and a vertical distance from the position of the last significant coefficient to the upper left corner of the current block.

[351] В некоторых вариантах осуществления узел 1202 кодирования дополнительно выполнен с возможностью определения информации о префиксе горизонтальной координаты последнего значимого коэффициента, информации о префиксе вертикальной координаты последнего значимого коэффициента, информации о суффиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента в соответствии с информацией о координате последнего значимого коэффициента, и передачи информации о префиксе горизонтальной координаты последнего значимого коэффициента, информации о префиксе вертикальной координаты последнего значимого коэффициента, информации о суффиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента в битовый поток.[351] In some embodiments, the encoding unit 1202 is further configured to determine information about a prefix of a horizontal coordinate of the last significant coefficient, information about a prefix of a vertical coordinate of the last significant coefficient, information about a suffix of a horizontal coordinate of the last significant coefficient, and information about a suffix of a vertical coordinate of the last significant coefficient in accordance with the information about the coordinate of the last significant coefficient, and transmit the information about the prefix of a horizontal coordinate of the last significant coefficient, the prefix of a vertical coordinate of the last significant coefficient, the suffix of a horizontal coordinate of the last significant coefficient, and the suffix of a vertical coordinate of the last significant coefficient to a bitstream.

[352] В некоторых вариантах осуществления флаг обратного положения последнего значимого коэффициента является по меньшей мере флагом одного из: уровня последовательности, уровня изображения, уровня слайса или уровня блока.[352] In some embodiments, the last significant coefficient reverse position flag is at least one of a sequence level, a picture level, a slice level, or a block level flag.

[353] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью определения флага, обусловленного последним коэффициентом, когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию.[353] In some embodiments, the first determining unit 1201 is further configured to determine a flag determined by the last coefficient when the flag related to the video indicates that the video satisfies a predetermined condition.

[354] Узел 1202 кодирования дополнительно выполнен с возможностью: когда флаг, обусловленный последним коэффициентом, указывает на то, что положение последнего коэффициента используется для текущего блока, кодирования всех коэффициентов перед положением последнего коэффициента согласно заданному порядку сканирования, и предоставления битовой информации, полученной с помощью кодирования, флага, относящегося к видео и флага, обусловленного последним коэффициентом, в битовый поток.[354] The encoding unit 1202 is further configured to: when the flag associated with the last coefficient indicates that the position of the last coefficient is used for the current block, encode all coefficients before the position of the last coefficient according to a given scanning order, and provide bit information obtained by encoding the flag related to the video and the flag associated with the last coefficient into a bit stream.

[355] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью: когда положение последнего коэффициента используется для текущего блока, определения флага, обусловленного последним коэффициентом, как первого значения; или когда положение последнего коэффициента не используется для текущего блока, определения флага, обусловленного последним коэффициентом, как второго значения.[355] In some embodiments, the first determining unit 1201 is further configured to: when the position of the last coefficient is used for the current block, determine the flag determined by the last coefficient as a first value; or when the position of the last coefficient is not used for the current block, determine the flag determined by the last coefficient as a second value.

[356] В некоторых вариантах осуществления положение последнего коэффициента является положением в нижнем правом углу матрицы, образованной всеми возможными значимыми коэффициентами в текущем блоке; или положение последнего коэффициента является последним положением при сканировании всех возможных значимых коэффициентов в текущем блоке согласно заданному порядку сканирования.[356] In some embodiments, the position of the last coefficient is a position in the lower right corner of a matrix formed by all possible significant coefficients in the current block; or the position of the last coefficient is the last position when scanning all possible significant coefficients in the current block according to a given scanning order.

[357] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью установки положения последнего значимого коэффициента в качестве положения последнего коэффициента.[357] In some embodiments, the first determining unit 1201 is further configured to set the position of the last significant coefficient as the position of the last coefficient.

[358] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью определения ширины и высоты блока преобразования, полученных в заданной операции на текущем блоке, получение информации о координате нижнего правого угла блока преобразования посредством вычисления координаты согласно ширине и высоте блока преобразования; и определение положения последнего коэффициента согласно информации о координате нижнего правого угла блока преобразования.[358] In some embodiments, the first determining unit 1201 is further configured to determine the width and height of the transformation block obtained in a given operation on the current block, obtain information about the coordinate of the lower right corner of the transformation block by calculating the coordinate according to the width and height of the transformation block; and determine the position of the last coefficient according to the information about the coordinate of the lower right corner of the transformation block.

[359] В некоторых вариантах осуществления заданная операция по меньшей мере включает операцию нулевого вывода.[359] In some embodiments, the specified operation at least includes a zero output operation.

[360] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью определения положения последнего значимого коэффициента согласно информации о координате нижнего правого угла блока преобразования, когда положение последнего значимого коэффициента задано как положение последнего коэффициента.[360] In some embodiments, the first determining unit 1201 is further configured to determine the position of the last significant coefficient according to the coordinate information of the lower right corner of the transform block when the position of the last significant coefficient is set as the position of the last coefficient.

[361] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью: когда положение последнего коэффициента не используется для текущего блока, определения информации о префиксе горизонтальной координаты последнего значимого коэффициента, информации о префиксе вертикальной координаты последнего значимого коэффициента, информации о суффиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента, а также определения положения последнего значимого коэффициента в соответствии с информацией о префиксе горизонтальной координаты последнего значимого коэффициента, информации о префиксе вертикальной координаты последнего значимого коэффициента, информации о суффиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента.[361] In some embodiments, the first determining unit 1201 is further configured to: when the position of the last coefficient is not used for the current block, determine information about the prefix of the horizontal coordinate of the last significant coefficient, information about the prefix of the vertical coordinate of the last significant coefficient, information about the suffix of the horizontal coordinate of the last significant coefficient, and information about the suffix of the vertical coordinate of the last significant coefficient, and determine the position of the last significant coefficient in accordance with the information about the prefix of the horizontal coordinate of the last significant coefficient, the prefix of the vertical coordinate of the last significant coefficient, the suffix of the horizontal coordinate of the last significant coefficient, and the suffix of the vertical coordinate of the last significant coefficient.

[362] В некоторых вариантах осуществления узел 1202 кодирования дополнительно выполнен с возможностью кодирования всех коэффициентов перед положением последнего значимого коэффициента согласно заданному порядку сканирования и предоставлении информации о префиксе горизонтальной координаты последнего значимого коэффициента, информации о префиксе вертикальной координаты последнего значимого коэффициента, информации о суффиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента в битовый поток.[362] In some embodiments, the encoding unit 1202 is further configured to encode all coefficients before the position of the last significant coefficient according to a given scanning order and provide information about a prefix of a horizontal coordinate of the last significant coefficient, information about a prefix of a vertical coordinate of the last significant coefficient, information about a suffix of a horizontal coordinate of the last significant coefficient, and information about a suffix of a vertical coordinate of the last significant coefficient into the bitstream.

[363] В некоторых вариантах осуществления флаг, обусловленный последним коэффициентом, является по меньшей мере флагом одного из: уровня последовательности, уровня изображения, уровня слайса или уровня блока.[363] In some embodiments, the flag determined by the last coefficient is at least one of a sequence level, a picture level, a slice level, or a block level flag.

[364] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью: когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, определения флага кодированного по умолчанию подблока для подблока, подлежащего кодированию, в текущем блоке.[364] In some embodiments, the first determining unit 1201 is further configured to: when the flag related to the video indicates that the video satisfies a given condition, determine a flag of a default coded sub-block for a sub-block to be coded in the current block.

[365] Узел 1202 кодирования дополнительно выполнен с возможностью: когда флаг кодированного по умолчанию подблока указывает на то, что подблок, подлежащий кодированию, по умолчанию используется для кодирования, кодирования всех коэффициентов в подблоке, подлежащем декодированию, и предоставления битовой информации, полученной с помощью кодирования, и флага, кодированного по умолчанию, подблока в битовый поток.[365] The encoding unit 1202 is further configured to: when the default-coded flag of the sub-block indicates that the sub-block to be encoded is by default used for encoding, encode all coefficients in the sub-block to be decoded, and provide bit information obtained by encoding and the default-coded flag of the sub-block to the bitstream.

[366] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью: когда флаг кодированного по умолчанию подблока указывает на то, что подблок, подлежащий кодированию, по умолчанию не используется для кодирования, определения флага кодированного подблока для подблока, подлежащего кодированию, и предоставления флага кодированного подблока в битовый поток.[366] In some embodiments, the first determining unit 1201 is further configured to: when the default coded sub-block flag indicates that the sub-block to be coded is not used for encoding by default, determine a coded sub-block flag for the sub-block to be coded, and provide the coded sub-block flag to the bitstream.

[367] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью определения флага кодированного по умолчанию подблока как первого значения, когда подблок, подлежащий кодированию, по умолчанию использует кодирование, или для определения флага кодированного по умолчанию подблока как второго значения, когда подблок, подлежащий кодированию, по умолчанию не использует кодирование.[367] In some embodiments, the first determining unit 1201 is further configured to determine the default-coded sub-block flag as a first value when the sub-block to be encoded uses the default encoding, or to determine the default-coded sub-block flag as a second value when the sub-block to be encoded does not use the default encoding.

[368] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью определения флага кодированного подблока как первого значения, когда для подблока требуется кодирование, или для определения флага кодированного подблока как второго значения, когда все коэффициенты в подблоке равны 0.[368] In some embodiments, the first determining unit 1201 is further configured to determine the coded sub-block flag as a first value when the sub-block requires encoding, or to determine the coded sub-block flag as a second value when all coefficients in the sub-block are equal to 0.

[369] В некоторых вариантах осуществления флаг кодированного по умолчанию подблока является по меньшей мере флагом одного из: уровня последовательности, уровня изображения, уровня слайса или уровня блока.[369] In some embodiments, the default coded sub-block flag is at least one of a sequence level, a picture level, a slice level, or a block level flag.

[370] В некоторых вариантах осуществления первое значение равно 1, а второе значение равно 0.[370] In some embodiments, the first value is 1 and the second value is 0.

[371] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью: когда флаг, относящийся к видео, является флагом высокой битовой глубины, определения того, что флаг высокой битовой глубины указывает, что видео удовлетворяет заданному условию, если видео удовлетворяет высокой битовой глубине.[371] In some embodiments, the first determining unit 1201 is further configured to: when the flag related to the video is a high bit depth flag, determine that the high bit depth flag indicates that the video satisfies a predetermined condition if the video satisfies a high bit depth.

[372] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью: когда флаг, относящийся к видео, является флагом высокой битовой скорости, определения того, что флаг высокой битовой скорости указывает на то, что видео удовлетворяет заданному условию, если видео удовлетворяет высокой битовой скорости.[372] In some embodiments, the first determining unit 1201 is further configured to: when the flag related to the video is a high bit rate flag, determine that the high bit rate flag indicates that the video satisfies a predetermined condition if the video satisfies a high bit rate.

[373] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью: когда флаг, относящийся к видео, является флагом высокого качества, определения того, что флаг высокого качества указывает на то, что видео удовлетворяет заданному условию, если видео удовлетворяет высокому качеству.[373] In some embodiments, the first determining unit 1201 is further configured to: when the flag related to the video is a high quality flag, determine that the high quality flag indicates that the video satisfies a predetermined condition if the video satisfies the high quality.

[374] В некоторых вариантах осуществления первый узел 1201 определения дополнительно выполнен с возможностью: когда флаг, относящийся к видео, является флагом сжатия без потерь, определения того, что флаг сжатия без потерь указывает, что видео удовлетворяет заданному условию, если видео удовлетворяет сжатию без потерь.[374] In some embodiments, the first determining unit 1201 is further configured to: when the flag related to the video is a lossless compression flag, determine that the lossless compression flag indicates that the video satisfies a predetermined condition if the video satisfies lossless compression.

[375] Следует понимать, что в вариантах осуществления настоящего изобретения «узел» может быть частью схемы, частью процессора, частью программы или программного обеспечения и т. п., и он также может быть модулем или может быть немодульным. В дополнение к этому различные компоненты в вариантах осуществления могут быть интегрированы в один обрабатывающий узел, или каждый узел может существовать физически отдельно, или два или более узлов могут быть объединены в один узел. Вышеупомянутые интегрированные узлы могут быть реализованы в форме аппаратных средств или программных функциональных модулей.[375] It should be understood that in the embodiments of the present invention, a "node" may be a part of a circuit, a part of a processor, a part of a program or software, etc., and it may also be a module or may be non-modular. In addition, various components in the embodiments may be integrated into a single processing node, or each node may exist physically separately, or two or more nodes may be combined into a single node. The aforementioned integrated nodes may be implemented in the form of hardware or software functional modules.

[376] Объединенный узел при реализации в виде программного функционального модуля, а не поставке или использовании как самостоятельного продукта, может храниться на машиночитаемом носителе данных. На основе такого понимания техническое решение настоящего изобретения в целом или в части, или в части, вносящей существенный вклад в уровень техники, могут быть реализованы в форме программного продукта. Компьютерный программный продукт хранится на носителе данных и включает ряд команд для того, чтобы дать возможность компьютерному устройству (которое может быть персональным компьютером, сервером или сетевым устройством и т. д.) или процессору выполнять все или некоторые из операций способа согласно настоящему изобретению. Вышеупомянутый носитель данных содержит: флеш-накопители USB, съемные жесткие диски, постоянное запоминающее устройство (ROM), запоминающее устройство с произвольным доступом (RAM), диски или CD-ROM и другие носители, на которых можно хранить программные коды.[376] When implemented as a software functional module and not supplied or used as a stand-alone product, the integrated unit may be stored on a machine-readable storage medium. Based on this understanding, the technical solution of the present invention in whole or in part, or in a part that makes a significant contribution to the state of the art, may be implemented in the form of a software product. The computer program product is stored on a storage medium and includes a number of instructions to enable a computing device (which may be a personal computer, a server or a network device, etc.) or a processor to perform all or some of the operations of the method according to the present invention. The aforementioned storage medium comprises: USB flash drives, removable hard drives, read-only memory (ROM), random access memory (RAM), disks or CD-ROMs and other media on which program codes can be stored.

[377] Таким образом, варианты осуществления настоящего изобретения обеспечивают компьютерный носитель данных применительно к кодеру 120. Компьютерный носитель данных хранит компьютерную программу, которая при ее выполнении первым процессором реализует способ, описанный в любом из вышеописанных вариантов осуществления.[377] Thus, embodiments of the present invention provide a computer storage medium in conjunction with the encoder 120. The computer storage medium stores a computer program that, when executed by a first processor, implements the method described in any of the above-described embodiments.

[378] На основе состава вышеупомянутого кодера 120 и компьютерного носителя данных, обращаясь к фиг. 13, фиг. 13 представлено схематическое изображение конкретной структуры аппаратного обеспечения кодера 120, предоставленного в варианте осуществления настоящего изобретения. Как показано на фиг. 13, кодер 120 может содержать первый интерфейс 1301 связи, первое запоминающее устройство 1302 и первый процессор 1303. Компоненты взаимосвязаны посредством первой системы 1304 шин. Можно понять, что первая система 1304 шин выполнена с возможностью реализации соединения связи между этими компонентами. В дополнение к шине данных, первая система 1304 шин также содержит шину питания управления и шину сигнала статуса. Однако для ясности объяснения различные шины обозначены как первая система 1304 шин на фиг. 13.[378] Based on the composition of the above-mentioned encoder 120 and the computer storage medium, referring to Fig. 13, Fig. 13 is a schematic diagram of a specific hardware structure of the encoder 120 provided in an embodiment of the present invention. As shown in Fig. 13, the encoder 120 may include a first communication interface 1301, a first memory 1302, and a first processor 1303. The components are interconnected via a first bus system 1304. It can be understood that the first bus system 1304 is configured to implement a communication connection between these components. In addition to the data bus, the first bus system 1304 also includes a control power bus and a status signal bus. However, for clarity of explanation, various buses are designated as the first bus system 1304 in Fig. 13.

[379] Первый интерфейс 1301 связи выполнен с возможностью приема и отправки сигналов во время процесса отправки и приема информации с помощью других внешних сетевых элементов.[379] The first communication interface 1301 is configured to receive and send signals during the process of sending and receiving information using other external network elements.

[380] Первое запоминающее устройство 1302 выполнено с возможностью хранения компьютерной программы, которая может быть выполнена на первом процессоре 1303.[380] The first memory device 1302 is configured to store a computer program that can be executed on the first processor 1303.

[381] Первый процессор 1303 выполнен с возможностью выполнения следующих операций при выполнении компьютерной программы.[381] The first processor 1303 is configured to perform the following operations when executing the computer program.

[382] Определяют флаг, относящийся к видео, и положение последнего значимого коэффициента. Когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, определяют флаг обратного положения последнего значимого коэффициента. Информацию о координате последнего значимого коэффициента определяют согласно положению последнего значимого коэффициента и флагу обратного положения последнего значимого коэффициента. Все коэффициенты перед положением последнего значимого коэффициента кодируют согласно заданному порядку сканирования, а битовую информацию, полученную с помощью кодирования, флаг, относящийся к видео, и информацию о координате последнего значимого коэффициента передают в битовый поток.[382] A flag related to the video and the position of the last significant coefficient are determined. When the flag related to the video indicates that the video satisfies a predetermined condition, a flag of the inverse position of the last significant coefficient is determined. Information on the coordinate of the last significant coefficient is determined according to the position of the last significant coefficient and the flag of the inverse position of the last significant coefficient. All coefficients before the position of the last significant coefficient are encoded according to a predetermined scanning order, and the bit information obtained by encoding, the flag related to the video, and the information on the coordinate of the last significant coefficient are transmitted in a bitstream.

[383] Следует понимать, что первое запоминающее устройство 1302 в вариантах осуществления настоящего изобретения может представлять собой энергозависимое запоминающее устройство или энергонезависимое запоминающее устройство или может включать как энергозависимое, так и энергонезависимое запоминающие устройства. Энергонезависимое запоминающее устройство может представлять собой постоянное запоминающее устройство (ROM), программируемое постоянное запоминающее устройство (PROM), стираемое программируемое постоянное запоминающее устройство (EPROM), электрически стираемое программируемое постоянное запоминающее устройство (EEPROM), или электрическое EPROM, EEPROM), или флеш-память. Энергозависимое запоминающее устройство может представлять собой запоминающее устройство с произвольным доступом (RAM), которое используется в качестве внешней кэш-памяти. В качестве иллюстрации доступны многие типы RAM, такие как статическое RAM (SRAM), динамическое RAM (DRAM), синхронное DRAM (SDRAM), SDRAM (ESDRAM) с удвоенной скоростью передачи данных и флеш-память. DRAM, синхронное DRAM (SDRAM), SDRAM (DDRSDRAM) с удвоенной скоростью передачи данных, улучшенное синхронное SDRAM (ESDRAM), DRAM (SLDRAM) типа Synchlink и RAM (DRRAM) с шиной прямого резидентного доступа. Первое запоминающее устройство 1302 описанных в данном изобретении систем и способов предназначено для включения, но без ограничения, этих и любых других подходящих типов запоминающих устройств.[383] It should be understood that the first memory device 1302 in embodiments of the present invention may be a volatile memory device or a non-volatile memory device, or may include both volatile and non-volatile memory devices. The non-volatile memory device may be a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), or an electrical EPROM, EEPROM), or flash memory. The volatile memory device may be a random access memory (RAM), which is used as an external cache memory. By way of illustration, many types of RAM are available, such as static RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double data rate SDRAM (ESDRAM), and flash memory. DRAM, synchronous DRAM (SDRAM), double data rate SDRAM (DDRSDRAM), enhanced synchronous SDRAM (ESDRAM), Synchlink type DRAM (SLDRAM), and direct resident access bus RAM (DRRAM). The first memory device 1302 of the systems and methods described in this invention is intended to include, but is not limited to, these and any other suitable types of memory devices.

[384] Кроме того, первый процессор 1303 может представлять собой кристалл c интегральными схемами с функциональной возможностью обработки сигналов. Во время реализации операции вышеописанных способов могут быть выполнены посредством интегральной логической схемы в форме аппаратного обеспечения в первом процессоре 1003 или команды в форме программного обеспечения. Первый процессор 1303 может представлять собой процессор общего назначения, процессор цифровой обработки сигналов (DSP), интегральную схему специального применения (ASIC), программируемую пользователем вентильную матрицу (FPGA) или другое программируемое логическое устройство, дискретный логический элемент, или транзисторное логическое устройство, или дискретный аппаратный компонент, или подобное. Способы, операции и логические блок-схемы, раскрытые в вариантах осуществления настоящего изобретения, могут быть реализованы или выполнены первым процессором. Процессор общего назначения может представлять собой микропроцессор, или процессор может представлять собой любой традиционный процессор или т. п. Операции способов, раскрытые в сочетании с вариантами осуществления настоящей заявки, могут быть непосредственно осуществлены для исполнения и выполнены аппаратным декодирующим процессором или исполнены и выполнены посредством сочетания аппаратного обеспечения в декодирующем процессоре и программных модулей. Программный модуль может быть расположен на хорошо известном в данной области техники носителе данных, таком как RAM, флеш-память, ROM, PROM, EEPROM, регистр и т.п. Носитель данных расположен в первом запоминающем устройстве 1302, и первый процессор 1303 считывает информацию в первом запоминающем устройстве 1302 и выполняет операции вышеуказанных способов в сочетании со своим аппаратным обеспечением.[384] Furthermore, the first processor 1303 may be a chip with integrated circuits with signal processing functionality. During implementation, the operations of the above-described methods may be performed by an integrated logic circuit in the form of hardware in the first processor 1003 or an instruction in the form of software. The first processor 1303 may be a general-purpose processor, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA) or other programmable logic device, a discrete logic element, or a transistor logic device, or a discrete hardware component, or the like. The methods, operations, and logical flow charts disclosed in the embodiments of the present invention may be implemented or executed by the first processor. The general-purpose processor may be a microprocessor, or the processor may be any conventional processor or the like. The operations of the methods disclosed in conjunction with the embodiments of the present application may be directly implemented for execution and performed by a hardware decoding processor or executed and performed by a combination of hardware in the decoding processor and software modules. The software module may be located on a storage medium well known in the art, such as RAM, flash memory, ROM, PROM, EEPROM, a register, and the like. The storage medium is located in the first memory device 1302, and the first processor 1303 reads information in the first memory device 1302 and performs the operations of the above methods in conjunction with its hardware.

[385] Следует понимать, что эти варианты осуществления, описанные в настоящем изобретении, могут быть реализованы посредством аппаратного обеспечения, программного обеспечения, программно-аппаратного обеспечения, межплатформенного программного обеспечения, микрокода или их комбинации. Для реализации на основе аппаратного обеспечения узел обработки может быть реализован в одном или более ASIC, DSP, устройстве DSP (DSPD), программируемом логическом устройстве (PLD), FPGA, процессоре общего назначения, контроллере, микроконтроллере, микропроцессоре, других электронных узлах, выполненных с возможностью выполнения функций, описанных в настоящем изобретении, или их комбинации. Для реализации на основе программного обеспечения технологии, описанные в настоящем изобретении, могут быть реализованы посредством модулей (например, процессов, функций и т.п.), выполняющих функции, описанные в настоящем изобретении. Программные коды могут храниться в запоминающем устройстве и выполняться процессором. Запоминающее устройство может быть реализовано в процессоре или вне процессора.[385] It should be understood that the embodiments described in the present invention may be implemented using hardware, software, firmware, middleware, microcode, or a combination thereof. For a hardware-based implementation, the processing unit may be implemented in one or more ASICs, DSPs, DSP devices (DSPDs), programmable logic devices (PLDs), FPGAs, general-purpose processors, controllers, microcontrollers, microprocessors, other electronic units configured to perform the functions described in the present invention, or a combination thereof. For a software-based implementation, the technologies described in the present invention may be implemented by modules (e.g., processes, functions, etc.) that perform the functions described in the present invention. The software codes may be stored in a memory device and executed by a processor. The memory device may be implemented within the processor or outside the processor.

[386] Необязательно, в другом варианте осуществления первый процессор 1303 дополнительно выполнен с возможностью выполнения способа согласно любому из приведенных выше вариантов осуществления при выполнении компьютерной программы.[386] Optionally, in another embodiment, the first processor 1303 is further configured to perform the method according to any of the above embodiments when executing the computer program.

[387] Варианты осуществления обеспечивают кодер, который содержит первый узел определения и узел кодирования. Таким образом, в сценариях кодирования видео с высокой битовой глубиной, высокой битовой скоростью, высоким качеством или сжатием без потерь, поскольку шаблон распределения коэффициентов отличается от такового в сценариях с обычным видео, во время кодирования коэффициентов за счет уменьшения или даже устранения количества элементов синтаксиса, закодированных в режиме контекста, может быть уменьшено потребление ресурсов, вызванное кодированием в битовом потоке, и, таким образом, может быть улучшена пропускная способность и скорость кодирования коэффициентов. В дополнение эффективность сжатия также может быть повышена, поскольку уменьшенные или устраненные элементы синтаксиса оказывают меньшее влияние на кодирование видео при высокой битовой глубине, высокой битовой скорости, высоком качестве или сжатии без потерь.[387] Embodiments provide an encoder that comprises a first determining unit and an encoding unit. Thus, in high-bit-depth, high-bit-rate, high-quality, or lossless-compression video encoding scenarios, since the coefficient distribution pattern differs from that in conventional video scenarios, during coefficient encoding, by reducing or even eliminating the number of syntax elements encoded in the context mode, the resource consumption caused by encoding in the bitstream can be reduced, and thus the throughput and encoding speed of the coefficients can be improved. In addition, compression efficiency can also be improved since the reduced or eliminated syntax elements have less impact on video encoding at high bit-depth, high bit-rate, high-quality, or lossless compression.

[388] В другом варианте осуществления настоящего изобретения, на основе той же идеи, что и в предыдущих вариантах осуществления, на фиг. 14 проиллюстрирована структурная схема декодера 140, предоставленного в вариантах осуществления настоящего изобретения. Как показано на фиг. 14, декодер 140 может содержать узел 1401 анализа и второй узел 1402 определения.[388] In another embodiment of the present invention, based on the same idea as in the previous embodiments, a block diagram of a decoder 140 provided in the embodiments of the present invention is illustrated in Fig. 14. As shown in Fig. 14, the decoder 140 may comprise an analysis unit 1401 and a second determination unit 1402.

[389] Узел 1401 анализа выполнен с возможностью анализа битового потока с получением флага, относящегося к видео, и анализа битового потока с получением флага обратного положения последнего значимого коэффициента и информации о координате последнего значимого коэффициента, когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию.[389] The analysis unit 1401 is configured to analyze the bit stream to obtain a flag related to the video and to analyze the bit stream to obtain a flag of the inverse position of the last significant coefficient and information about the coordinate of the last significant coefficient when the flag related to the video indicates that the video satisfies a predetermined condition.

[390] Второй узел 1402 определения выполнен с возможностью определения положения последнего значимого коэффициента путем вычисления с помощью информации о координате последнего значимого коэффициента, когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока.[390] The second determining unit 1402 is configured to determine the position of the last significant coefficient by calculating using the coordinate information of the last significant coefficient when the last significant coefficient position reversal flag indicates that the position of the last significant coefficient is reversed for the current block.

[391] Узел 1401 анализа дополнительно выполнен с возможностью декодирования согласно заданному порядку сканирования всех коэффициентов перед положением последнего значимого коэффициента для определения коэффициентов текущего блока.[391] The analysis unit 1401 is further configured to decode, according to a given scanning order, all coefficients before the position of the last significant coefficient to determine the coefficients of the current block.

[392] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью определения положения последнего значимого коэффициента непосредственно согласно информации о координате последнего значимого коэффициента, когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента не изменено на обратное для текущего блока.[392] In some embodiments, the second determining unit 1402 is further configured to determine the position of the last significant coefficient directly according to the coordinate information of the last significant coefficient when the last significant coefficient position reversal flag indicates that the position of the last significant coefficient is not reversed for the current block.

[393] Узел 1402 анализа дополнительно выполнен с возможностью декодирования согласно заданному порядку сканирования всех коэффициентов перед положением последнего значимого коэффициента для определения коэффициентов текущего блока.[393] The analysis unit 1402 is further configured to decode, according to a given scanning order, all coefficients before the position of the last significant coefficient to determine the coefficients of the current block.

[394] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью: когда флаг, относящийся к видео, имеет первое значение, определения того, что флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, или когда флаг, относящийся к видео, имеет второе значение, определения того, что флаг, относящийся к видео, указывает на то, что видео не удовлетворяет заданному условию.[394] In some embodiments, the second determining unit 1402 is further configured to: when the flag related to the video has a first value, determine that the flag related to the video indicates that the video satisfies a predetermined condition, or when the flag related to the video has a second value, determine that the flag related to the video indicates that the video does not satisfy a predetermined condition.

[395] В некоторых вариантах осуществления заданное условие включает по меньшей мере одно из: высокой битовой глубины, высокого качества, высокой битовой скорости, высокой кадровой частоты или сжатия без потерь.[395] In some embodiments, the specified condition includes at least one of: high bit depth, high quality, high bit rate, high frame rate, or lossless compression.

[396] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью: когда флаг обратного положения последнего значимого коэффициента имеет первое значение, определения того, что флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента коэффициент изменено на обратное для текущего блока, или когда флаг обратного положения последнего значимого коэффициента имеет второе значение, определения того, что флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента не изменено на обратное для текущего блока.[396] In some embodiments, the second determining unit 1402 is further configured to: when the last significant coefficient position reverse flag has a first value, determine that the last significant coefficient position reverse flag indicates that the last significant coefficient position has been reversed for the current block, or when the last significant coefficient position reverse flag has a second value, determine that the last significant coefficient position reverse flag indicates that the last significant coefficient position has not been reversed for the current block.

[397] В некоторых вариантах осуществления узел 1401 анализа дополнительно выполнен с возможностью анализа битового потока для получения информации о префиксе горизонтальной координаты последнего значимого коэффициента, информации о префиксе вертикальной координаты последнего значимого коэффициента, информации о суффиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента.[397] In some embodiments, the analysis unit 1401 is further configured to analyze the bitstream to obtain information about a prefix of a horizontal coordinate of the last significant coefficient, information about a prefix of a vertical coordinate of the last significant coefficient, information about a suffix of a horizontal coordinate of the last significant coefficient, and information about a suffix of a vertical coordinate of the last significant coefficient.

[398] Второй узел 1402 определения дополнительно выполнен с возможностью определения горизонтальной координаты последнего значимого коэффициента согласно информации о префиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе горизонтальной координаты последнего значимого коэффициента, определения вертикальной координаты последнего значимого коэффициента согласно информации о префиксе вертикальной координаты последнего значащего коэффициента и информации о суффиксе вертикальной координаты последнего значащего коэффициента, и определения информации о координате последнего значимого коэффициента согласно горизонтальной координате последнего значимого коэффициента и вертикальной координате последнего значимого коэффициента.[398] The second determining unit 1402 is further configured to determine the horizontal coordinate of the last significant coefficient according to the information about the prefix of the horizontal coordinate of the last significant coefficient and the information about the suffix of the horizontal coordinate of the last significant coefficient, determine the vertical coordinate of the last significant coefficient according to the information about the prefix of the vertical coordinate of the last significant coefficient and the information about the suffix of the vertical coordinate of the last significant coefficient, and determine the information about the coordinate of the last significant coefficient according to the horizontal coordinate of the last significant coefficient and the vertical coordinate of the last significant coefficient.

[399] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью определения информации о координате последнего значимого коэффициента как расстояния по горизонтали и расстояния по вертикали от положения последнего значимого коэффициента до нижнего правого угла текущего блока, когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока.[399] In some embodiments, the second determining unit 1402 is further configured to determine the coordinate information of the last significant coefficient as a horizontal distance and a vertical distance from the position of the last significant coefficient to the lower right corner of the current block, when the last significant coefficient position reverse flag indicates that the position of the last significant coefficient is reversed for the current block.

[400] Также, второй узел 1402 определения дополнительно выполнен с возможностью определения ширины и высоты текущего блока; получения горизонтальной координаты последнего значимого коэффициента вычитанием из ширины текущего блока расстояния по горизонтали от положения последнего значимого коэффициента до правого нижнего угла текущего блока; получения вертикальной координаты последнего значимого коэффициента вычитанием из высоты текущего блока расстояния по вертикали от положения последнего значимого коэффициента до правого нижнего угла текущего блока; и определения положения последнего значимого коэффициента согласно горизонтальной координате последнего значимого коэффициента и вертикальной координате последнего значимого коэффициента.[400] Also, the second determining unit 1402 is further configured to determine the width and the height of the current block; obtain a horizontal coordinate of the last significant coefficient by subtracting from the width of the current block a horizontal distance from the position of the last significant coefficient to the lower right corner of the current block; obtain a vertical coordinate of the last significant coefficient by subtracting from the height of the current block a vertical distance from the position of the last significant coefficient to the lower right corner of the current block; and determine the position of the last significant coefficient according to the horizontal coordinate of the last significant coefficient and the vertical coordinate of the last significant coefficient.

[401] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью определения информации о координате последнего значимого коэффициента как расстояния по горизонтали и расстояния по вертикали от положения последнего значимого коэффициента до верхнего левого угла текущего блока, когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента не изменено на обратное для текущего блока, и с возможностью определения положения последнего значимого коэффициента согласно расстоянию по горизонтали и расстоянию по вертикали от положения последнего значимого коэффициента до верхнего левого угла текущего блока.[401] In some embodiments, the second determining unit 1402 is further configured to determine the coordinate information of the last significant coefficient as a horizontal distance and a vertical distance from the position of the last significant coefficient to the upper left corner of the current block, when the last significant coefficient position reversal flag indicates that the position of the last significant coefficient is not reversed for the current block, and to determine the position of the last significant coefficient according to the horizontal distance and the vertical distance from the position of the last significant coefficient to the upper left corner of the current block.

[402] В некоторых вариантах осуществления флаг обратного положения последнего значимого коэффициента является по меньшей мере флагом одного из: уровня последовательности, уровня изображения, уровня слайса или уровня блока.[402] In some embodiments, the last significant coefficient reverse position flag is at least one of a sequence level, a picture level, a slice level, or a block level flag.

[403] В некоторых вариантах осуществления первый узел 1401 анализа дополнительно выполнен с возможностью анализа битового потока с получением флага, обусловленного последним коэффициентом, и декодирования согласно заданному порядку сканирования всех коэффициентов перед положением последнего значимого коэффициента для определения коэффициентов текущего блока, когда флаг, обусловленный последним коэффициентом, указывает на то, что положение последнего коэффициента используется для текущего блока.[403] In some embodiments, the first analysis unit 1401 is further configured to analyze the bit stream to obtain a flag determined by the last coefficient and to decode, according to a given scanning order, all coefficients before the position of the last significant coefficient to determine the coefficients of the current block when the flag determined by the last coefficient indicates that the position of the last coefficient is used for the current block.

[404] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью: когда флаг, обусловленный последним коэффициентом, имеет первое значение, определения того, что флаг, обусловленный последним коэффициентом, указывает на то, что положение последнего коэффициента используется для текущего блока, или когда флаг, обусловленный последним коэффициентом, имеет второе значение, определения того, что флаг, обусловленный последним коэффициентом, указывает на то, что положение последнего коэффициента не используется для текущего блока.[404] In some embodiments, the second determining unit 1402 is further configured to: when the flag determined by the last coefficient has a first value, determine that the flag determined by the last coefficient indicates that the position of the last coefficient is used for the current block, or when the flag determined by the last coefficient has a second value, determine that the flag determined by the last coefficient indicates that the position of the last coefficient is not used for the current block.

[405] В некоторых вариантах осуществления узел 1401 анализа дополнительно выполнен с возможностью анализа битового потока для получения информации о префиксе горизонтальной координаты последнего значимого коэффициента, информации о префиксе вертикальной координаты последнего значимого коэффициента, информации о суффиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента.[405] In some embodiments, the analysis unit 1401 is further configured to analyze the bitstream to obtain information about a prefix of a horizontal coordinate of the last significant coefficient, information about a prefix of a vertical coordinate of the last significant coefficient, information about a suffix of a horizontal coordinate of the last significant coefficient, and information about a suffix of a vertical coordinate of the last significant coefficient.

[406] Второй узел 1402 определения дополнительно выполнен с возможностью определения положения последнего значимого коэффициента согласно информации о префиксе горизонтальной координаты последнего значимого коэффициента, информации о префиксе вертикальной координаты последнего значимого коэффициента, информации о суффиксе горизонтальной координаты последнего значимого коэффициента и информации о суффиксе вертикальной координаты последнего значимого коэффициента; и декодирования согласно заданному порядку сканирования всех коэффициентов перед положением последнего значимого коэффициента для определения коэффициентов текущего блока.[406] The second determining unit 1402 is further configured to determine the position of the last significant coefficient according to the information about the prefix of the horizontal coordinate of the last significant coefficient, the information about the prefix of the vertical coordinate of the last significant coefficient, the information about the suffix of the horizontal coordinate of the last significant coefficient, and the information about the suffix of the vertical coordinate of the last significant coefficient; and to decode according to a predetermined scanning order all the coefficients before the position of the last significant coefficient to determine the coefficients of the current block.

[407] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью определения того, что положение последнего коэффициента является положением в нижнем правом углу матрицы, образованной всеми возможными значимыми коэффициентами в текущем блоке; или положение последнего коэффициента является последним положением при сканировании всех возможных значимых коэффициентов в текущем блоке согласно заданному порядку сканирования.[407] In some embodiments, the second determining unit 1402 is further configured to determine that the position of the last coefficient is a position in the lower right corner of a matrix formed by all possible significant coefficients in the current block; or the position of the last coefficient is the last position when scanning all possible significant coefficients in the current block according to a given scanning order.

[408] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью установки положения последнего значимого коэффициента в качестве положения последнего коэффициента.[408] In some embodiments, the second determining unit 1402 is further configured to set the position of the last significant coefficient as the position of the last coefficient.

[409] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью определения ширины и высоты блока преобразования, полученных в заданной операции на текущем блоке, получение информации о координате нижнего правого угла блока преобразования посредством вычисления координаты согласно ширине и высоте блока преобразования; и определение положения последнего коэффициента согласно информации о координате нижнего правого угла блока преобразования.[409] In some embodiments, the second determining unit 1402 is further configured to determine the width and height of the transformation block obtained in a given operation on the current block, obtain information about the coordinate of the lower right corner of the transformation block by calculating the coordinate according to the width and height of the transformation block; and determine the position of the last coefficient according to the information about the coordinate of the lower right corner of the transformation block.

[410] В некоторых вариантах осуществления заданная операция по меньшей мере включает операцию нулевого вывода.[410] In some embodiments, the specified operation at least includes a zero output operation.

[411] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью определения положения последнего значимого коэффициента согласно информации о координате нижнего правого угла блока преобразования, когда положение последнего значимого коэффициента задано как положение последнего коэффициента.[411] In some embodiments, the second determining unit 1402 is further configured to determine the position of the last significant coefficient according to the information about the coordinate of the lower right corner of the transform block, when the position of the last significant coefficient is set as the position of the last coefficient.

[412] В некоторых вариантах осуществления флаг, обусловленный последним коэффициентом, является по меньшей мере флагом одного из: уровня последовательности, уровня изображения, уровня слайса или уровня блока.[412] In some embodiments, the flag determined by the last coefficient is at least a flag of one of: a sequence level, a picture level, a slice level, or a block level.

[413] В некоторых вариантах осуществления первый узел 1401 анализа дополнительно выполнен с возможностью: когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, анализа битового потока с получением флага кодированного по умолчанию подблока; и определения того, что флаг кодированного подблока имеет первое значение, и декодирования всех коэффициентов в подблоке, подлежащем декодированию в текущем блоке, когда флаг кодированного по умолчанию подблока указывает на то, что подблок, подлежащий декодированию, по умолчанию используется для кодирования.[413] In some embodiments, the first analyzing unit 1401 is further configured to: when a flag related to the video indicates that the video satisfies a given condition, analyze the bitstream to obtain a flag of a default coded sub-block; and determine that the flag of the coded sub-block has a first value, and decode all coefficients in the sub-block to be decoded in the current block, when the flag of the default coded sub-block indicates that the sub-block to be decoded is used for encoding by default.

[414] В некоторых вариантах осуществления узел 1401 анализа дополнительно выполнен с возможностью: когда флаг кодированного по умолчанию подблока указывает на то, что подблок, подлежащий декодированию, по умолчанию не используется для кодирования, анализа битового потока с получением флага кодированного подблока, и декодирования всех коэффициентов в подблоке, когда флаг кодированного подблока имеет первое значение.[414] In some embodiments, the analysis unit 1401 is further configured to: when the default coded sub-block flag indicates that the sub-block to be decoded is not used for encoding by default, analyze the bitstream to obtain the coded sub-block flag, and decode all coefficients in the sub-block when the coded sub-block flag has a first value.

[415] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью: когда флаг кодированного по умолчанию подблока имеет первое значение, определения того, что флаг кодированного по умолчанию подблока указывает на то, что подблок, подлежащий декодированию, по умолчанию использует кодирование; или когда флаг кодированного по умолчанию подблока имеет второе значение, определения того, что флаг кодированного по умолчанию подблока указывает на то, что подблок, подлежащий декодированию, по умолчанию не использует кодирование.[415] In some embodiments, the second determining unit 1402 is further configured to: when the default-coded sub-block flag has a first value, determine that the default-coded sub-block flag indicates that the sub-block to be decoded uses encoding by default; or when the default-coded sub-block flag has a second value, determine that the default-coded sub-block flag indicates that the sub-block to be decoded does not use encoding by default.

[416] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью: определения необходимости декодирования всех коэффициентов в подблоке, подлежащем декодированию, когда флаг кодированного подблока имеет первое значение; или определения всех коэффициентов в подблоке, подлежащем декодированию, как равных 0, когда флаг кодированного подблока имеет второе значение.[416] In some embodiments, the second determining unit 1402 is further configured to: determine whether to decode all coefficients in the sub-block to be decoded when the coded sub-block flag has a first value; or determine all coefficients in the sub-block to be decoded as equal to 0 when the coded sub-block flag has a second value.

[417] В некоторых вариантах осуществления флаг кодированного по умолчанию подблока является по меньшей мере флагом одного из: уровня последовательности, уровня изображения, уровня слайса или уровня блока.[417] In some embodiments, the default coded sub-block flag is at least one of a sequence level, a picture level, a slice level, or a block level flag.

[418] В некоторых вариантах осуществления первое значение равно 1, а второе значение равно 0.[418] In some embodiments, the first value is 1 and the second value is 0.

[419] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью: когда флаг, относящийся к видео, является флагом высокой битовой глубины, определения того, что видео удовлетворяет заданному условию, когда флаг высокой битовой глубины указывает на то, что видео удовлетворяет высокой битовой глубине.[419] In some embodiments, the second determining unit 1402 is further configured to: when the flag related to the video is a high bit depth flag, determine that the video satisfies a predetermined condition, when the high bit depth flag indicates that the video satisfies a high bit depth.

[420] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью: когда флаг, относящийся к видео, является флагом высокой битовой скорости, определения того, что видео удовлетворяет заданному условию, когда флаг высокой битовой скорости указывает на то, что видео удовлетворяет высокой битовой скорости.[420] In some embodiments, the second determining unit 1402 is further configured to: when the flag related to the video is a high bit rate flag, determine that the video satisfies a predetermined condition, when the high bit rate flag indicates that the video satisfies a high bit rate.

[421] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью: когда флаг, относящийся к видео, является флагом высокого качества, определения того, что видео удовлетворяет заданному условию, когда флаг высокого качества указывает на то, что видео удовлетворяет высокому качеству.[421] In some embodiments, the second determining unit 1402 is further configured to: when the flag related to the video is a high quality flag, determine that the video satisfies a predetermined condition, when the high quality flag indicates that the video satisfies high quality.

[422] В некоторых вариантах осуществления второй узел 1402 определения дополнительно выполнен с возможностью: когда флаг, относящийся к видео, является флагом сжатия без потерь, определения того, что видео удовлетворяет заданному условию, когда флаг сжатия без потерь указывает на то, что видео удовлетворяет сжатию без потерь.[422] In some embodiments, the second determining unit 1402 is further configured to: when the flag related to the video is a lossless compression flag, determine that the video satisfies a predetermined condition, when the lossless compression flag indicates that the video satisfies lossless compression.

[423] Следует понимать, что в вариантах осуществления настоящего изобретения «узел» может быть частью схемы, частью процессора, частью программы или программного обеспечения и т. п., и он также может быть модулем или может быть немодульным. В дополнение к этому различные компоненты в вариантах осуществления могут быть интегрированы в один обрабатывающий узел, или каждый узел может существовать физически отдельно, или два или более узлов могут быть объединены в один узел. Вышеупомянутые интегрированные узлы могут быть реализованы в форме аппаратных средств или программных функциональных модулей.[423] It should be understood that in the embodiments of the present invention, a "node" may be a part of a circuit, a part of a processor, a part of a program or software, etc., and it may also be a module or may be non-modular. In addition, various components in the embodiments may be integrated into a single processing node, or each node may exist physically separately, or two or more nodes may be combined into a single node. The aforementioned integrated nodes may be implemented in the form of hardware or software functional modules.

[424] Объединенный узел при реализации в виде программного функционального модуля, а не поставке или использовании как самостоятельного продукта, может храниться на машиночитаемом носителе данных. На основе такого понимания техническое решение настоящего изобретения в целом или в части, или в части, вносящей существенный вклад в уровень техники, могут быть реализованы в форме программного продукта. Компьютерный программный продукт хранится на носителе данных и включает ряд команд для того, чтобы дать возможность компьютерному устройству (которое может быть персональным компьютером, сервером или сетевым устройством и т. д.) или процессору выполнять все или некоторые из операций способа согласно настоящему изобретению. Вышеупомянутый носитель данных содержит: флеш-накопители USB, съемные жесткие диски, ROM, RAM, диски или CD-ROM и другие носители, на которых можно хранить программные коды.[424] When implemented as a software functional module, rather than supplied or used as a stand-alone product, the integrated unit may be stored on a machine-readable storage medium. Based on this understanding, the technical solution of the present invention, in whole or in part, or in a part that makes a significant contribution to the state of the art, may be implemented in the form of a software product. The computer program product is stored on a storage medium and includes a number of instructions to enable a computing device (which may be a personal computer, a server, or a network device, etc.) or a processor to perform all or some of the operations of the method according to the present invention. The aforementioned storage medium comprises: USB flash drives, removable hard drives, ROM, RAM, disks or CD-ROMs and other media on which program codes can be stored.

[425] Таким образом, варианты осуществления настоящего изобретения обеспечивают компьютерный носитель данных применительно к декодеру 140. Компьютерный носитель данных хранит компьютерную программу, которая при ее выполнении вторым процессором реализует способ, описанный в любом из вышеописанных вариантов осуществления.[425] Thus, embodiments of the present invention provide a computer storage medium in connection with a decoder 140. The computer storage medium stores a computer program that, when executed by a second processor, implements the method described in any of the above-described embodiments.

[426] На основе состава вышеупомянутого декодера 140 и компьютерного носителя данных, обращаясь к фиг. 15, на фиг. 15 представлено схематическое изображение конкретной структуры аппаратного обеспечения декодера 140, предоставленного в варианте осуществления настоящего изобретения. Как показано на фиг. 15, декодер 140 может содержать второй интерфейс 1501 связи, второе запоминающее устройство 1502 и второй процессор 1503. Компоненты взаимосвязаны посредством второй системы 1504 шин. Можно понять, что вторая система 1504 шин выполнена с возможностью реализации соединения связи между этими компонентами. В дополнение к шине данных, вторая система 1504 шин также содержит шину питания управления и шину сигнала статуса. Однако для ясности объяснения различные шины обозначены как вторая система 1504 шин на фиг. 15.[426] Based on the composition of the above-mentioned decoder 140 and the computer storage medium, referring to Fig. 15, Fig. 15 is a schematic diagram of a specific hardware structure of the decoder 140 provided in an embodiment of the present invention. As shown in Fig. 15, the decoder 140 may include a second communication interface 1501, a second memory 1502, and a second processor 1503. The components are interconnected via a second bus system 1504. It can be understood that the second bus system 1504 is configured to implement a communication connection between these components. In addition to the data bus, the second bus system 1504 also includes a control power bus and a status signal bus. However, for clarity of explanation, various buses are designated as the second bus system 1504 in Fig. 15.

[427] Второй интерфейс 1501 связи выполнен с возможностью приема и отправки сигналов во время процесса отправки и приема информации с помощью других внешних сетевых элементов.[427] The second communication interface 1501 is configured to receive and send signals during the process of sending and receiving information using other external network elements.

[428] Второе запоминающее устройство 1502 выполнено с возможностью хранения компьютерной программы, которая может быть выполнена на втором процессоре 1503.[428] The second memory device 1502 is configured to store a computer program that can be executed on the second processor 1503.

[429] Второй процессор 1503 выполнен с возможностью выполнения следующих операций при выполнении компьютерной программы.[429] The second processor 1503 is configured to perform the following operations when executing the computer program.

[430] Анализируют битовый поток с получением флага, относящегося к видео. Когда флаг, относящийся к видео, указывает на то, что видео удовлетворяет заданному условию, битовый поток анализируют с получением флага обратного положения последнего значимого коэффициента и информации о координате последнего значимого коэффициента. Когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока, положение последнего значимого коэффициента определяют путем вычисления с использованием информации о координате последнего значимого коэффициента. Согласно заданному порядку сканирования все коэффициенты перед положением последнего значимого коэффициента декодируют для определения коэффициентов текущего блока.[430] The bitstream is analyzed to obtain a flag related to the video. When the flag related to the video indicates that the video satisfies a predetermined condition, the bitstream is analyzed to obtain a last significant coefficient position inversion flag and information on the coordinate of the last significant coefficient. When the last significant coefficient position inversion flag indicates that the position of the last significant coefficient is reversed for the current block, the position of the last significant coefficient is determined by calculation using the information on the coordinate of the last significant coefficient. According to a predetermined scanning order, all coefficients before the position of the last significant coefficient are decoded to determine the coefficients of the current block.

[431] Необязательно, в другом варианте осуществления второй процессор 1503 дополнительно выполнен с возможностью выполнения способа согласно любому из приведенных выше вариантов осуществления при выполнении компьютерной программы.[431] Optionally, in another embodiment, the second processor 1503 is further configured to perform the method according to any of the above embodiments when executing the computer program.

[432] Следует понимать, что аппаратные функции второго запоминающего устройства 1502 и первого запоминающего устройства 1302 являются схожими, и аппаратные функции второго процессора 1503 и первого процессора 1303 являются схожими, что не будет описано подробно в данном документе.[432] It should be understood that the hardware functions of the second memory device 1502 and the first memory device 1302 are similar, and the hardware functions of the second processor 1503 and the first processor 1303 are similar, which will not be described in detail in this document.

[433] Варианты осуществления предоставляют декодер, содержащий узел анализа, и второй узел определения. Таким образом, в сценариях кодирования видео с высокой битовой глубиной, высокой битовой скоростью, высоким качеством или сжатием без потерь, поскольку шаблон распределения коэффициентов отличается от такового в сценариях с обычным видео, во время кодирования коэффициентов за счет уменьшения или даже устранения количества элементов синтаксиса, закодированных в режиме контекста, может быть уменьшено потребление ресурсов, вызванное кодированием в битовом потоке, и, таким образом, может быть улучшена пропускная способность и скорость кодирования коэффициентов. В дополнение эффективность сжатия также может быть повышена, поскольку уменьшенные или устраненные элементы синтаксиса оказывают меньшее влияние на кодирование видео при высокой битовой глубине, высокой битовой скорости, высоком качестве или сжатии без потерь.[433] Embodiments provide a decoder comprising an analysis unit and a second determination unit. Thus, in high-bit-depth, high-bit-rate, high-quality, or lossless-compression video coding scenarios, since the coefficient distribution pattern differs from that in conventional video scenarios, during coefficient coding, by reducing or even eliminating the number of syntax elements encoded in the context mode, the resource consumption caused by coding in the bitstream can be reduced, and thus the throughput and coding speed of the coefficients can be improved. In addition, compression efficiency can also be improved since the reduced or eliminated syntax elements have less impact on video coding in high-bit-depth, high-bit-rate, high-quality, or lossless-compression scenarios.

[434] Следует понимать, что в данном изобретении термины «включающий», «содержащий» или любые другие их варианты предназначены для охвата неисключительного включения, так что процесс, способ, изделие или устройство, содержащие ряд элементов, не только включают эти элементы, а также включают другие элементы, не перечисленные в явном виде или присущие такому процессу, способу, изделию или устройству. В отсутствие дополнительного ограничения элемент, определенный утверждением «содержащий», не исключает присутствия дополнительных аналогичных элементов в процессе, способе, изделии или устройстве, содержащем данный элемент.[434] It should be understood that in this invention, the terms "including," "comprising," or any other variation thereof are intended to encompass a non-exclusive inclusion, such that a process, method, article, or device comprising a number of elements not only includes those elements but also includes other elements not expressly listed or inherent in such process, method, article, or device. Unless further limited, an element identified by the statement "comprising" does not exclude the presence of additional similar elements in a process, method, article, or device comprising that element.

[435] Приведенные выше серийные номера вариантов осуществления настоящего изобретения приведены только для описания и не представляют преимуществ и недостатков вариантов осуществления.[435] The above serial numbers of the embodiments of the present invention are for description only and do not represent the advantages and disadvantages of the embodiments.

[436] Способы, раскрытые в нескольких вариантах осуществления способа, предоставленных в данном изобретении, можно произвольно объединять без противоречия для получения новых вариантов осуществления способа.[436] The methods disclosed in several embodiments of the method provided in this invention can be arbitrarily combined without contradiction to obtain new embodiments of the method.

[437] Характеристики, раскрытые в нескольких вариантах осуществления продукта, предоставленных в данном изобретении, можно произвольно объединять без противоречия для получения новых вариантов осуществления продукта.[437] The characteristics disclosed in several embodiments of the product provided in this invention may be arbitrarily combined without contradiction to obtain new embodiments of the product.

[438] Характеристики, раскрытые в нескольких вариантах осуществления способа или устройства, предоставленных в данном изобретении, можно произвольно объединять без противоречия для получения новых вариантов осуществления способа или вариантов осуществления устройства.[438] The characteristics disclosed in several embodiments of the method or device provided in the present invention can be arbitrarily combined without contradiction to obtain new embodiments of the method or embodiments of the device.

[439] Вышеприведенные описания являются только конкретными вариантами осуществления настоящего изобретения, но объем правовой охраны настоящего изобретения ими не ограничивается. Любые изменения или замены, которые специалист в данной области техники может легко представить в пределах технического объема, раскрытого в этой изобретении, должны быть включены в объем правовой охраны этого изобретения. Следовательно, объем правовой охраны этого изобретения следует определять по объему правовой охраны формулы изобретения.[439] The above descriptions are only specific embodiments of the present invention, but the scope of protection of the present invention is not limited thereto. Any changes or substitutions that a person skilled in the art can easily imagine within the technical scope disclosed in this invention should be included in the scope of protection of this invention. Therefore, the scope of protection of this invention should be determined by the scope of protection of the claims.

ПромышленнаяIndustrial применимостьapplicability

[440] В некоторых вариантах осуществления настоящего изобретения, как для кодера, так и для декодера, в сценариях кодирования видео с высокой битовой глубиной, высокой битовой скоростью, высоким качеством или сжатием без потерь, поскольку шаблон распределения коэффициентов отличается от такового в сценариях с обычным видео, во время кодирования коэффициентов за счет уменьшения или даже устранения количества элементов синтаксиса, закодированных в режиме контекста, таких как элементы синтаксиса о положении последнего значимого коэффициента, флаги кодированного подблока и т. д., или дополнительное выполнение преобразования координаты в случае, когда значения координат последнего значимого коэффициента слишком велики, может быть уменьшено потребление ресурсов, вызванное кодированием в битовом потоке, и, таким образом, может быть улучшена пропускная способность и скорость кодирования коэффициентов. В дополнение эффективность сжатия также может быть повышена, поскольку уменьшенные или устраненные элементы синтаксиса оказывают меньшее влияние на кодирование видео при высокой битовой глубине, высокой битовой скорости, высоком качестве или сжатии без потерь.[440] In some embodiments of the present invention, for both the encoder and the decoder, in high-bit-depth, high-bit-rate, high-quality, or lossless-compression video coding scenarios, since the coefficient distribution pattern differs from that in conventional video scenarios, during the coding of the coefficients, by reducing or even eliminating the number of syntax elements encoded in the context mode, such as syntax elements about the position of the last significant coefficient, coded sub-block flags, etc., or by additionally performing a coordinate transformation in the case where the coordinate values of the last significant coefficient are too large, the resource consumption caused by coding in the bitstream can be reduced, and thus the throughput and coding speed of the coefficients can be improved. In addition, the compression efficiency can also be improved since the reduced or eliminated syntax elements have less impact on the coding of video in high-bit-depth, high-bit-rate, high-quality, or lossless compression.

Claims (34)

1. Способ декодирования коэффициента, применяемый к декодеру и включающий:1. A coefficient decoding method applied to a decoder and comprising: анализ битового потока с получением флага уровня последовательности;bit stream analysis to obtain sequence level flag; анализ битового потока с получением флага обратного положения последнего значимого коэффициента и информации о координатах последнего значимого коэффициента, когда флаг уровня последовательности указывает на то, что видео удовлетворяет заданному условию;analyzing the bit stream to obtain a flag of the reverse position of the last significant coefficient and information about the coordinates of the last significant coefficient when the sequence level flag indicates that the video satisfies a given condition; когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока, определение положения последнего значимого коэффициента путем вычисления при помощи информации о координатах последнего значимого коэффициента, при этом информация о координатах последнего значимого коэффициента представляет собой расстояние по горизонтали и расстояние по вертикали от положения последнего значимого коэффициента до нижнего правого угла текущего блока; иwhen the last significant coefficient position reversal flag indicates that the position of the last significant coefficient is reversed for the current block, determining the position of the last significant coefficient by calculating using the coordinate information of the last significant coefficient, wherein the coordinate information of the last significant coefficient is a horizontal distance and a vertical distance from the position of the last significant coefficient to the lower right corner of the current block; and декодирование согласно заданному порядку сканирования всех коэффициентов перед положением последнего значимого коэффициента для определения коэффициентов текущего блока.decoding according to a given scanning order of all coefficients before the position of the last significant coefficient to determine the coefficients of the current block. 2. Способ по п. 1, отличающийся тем, что дополнительно включает:2. The method according to paragraph 1, characterized in that it additionally includes: определение положения последнего значимого коэффициента непосредственно согласно информации о координатах последнего значимого коэффициента, когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента не изменено на обратное для текущего блока; иdetermining the position of the last significant coefficient directly according to the coordinate information of the last significant coefficient, when the last significant coefficient position reversal flag indicates that the position of the last significant coefficient is not reversed for the current block; and декодирование, согласно заданному порядку сканирования, всех коэффициентов перед положением последнего значимого коэффициента для определения коэффициентов текущего блока.decoding, according to a given scanning order, all coefficients before the position of the last significant coefficient to determine the coefficients of the current block. 3. Способ по п. 1, отличающийся тем, что дополнительно включает:3. The method according to paragraph 1, characterized in that it additionally includes: когда флаг уровня последовательности имеет первое значение, определение того, что флаг уровня последовательности указывает на то, что видео удовлетворяет заданному условию; или,when the sequence level flag has the first value, determining that the sequence level flag indicates that the video satisfies the specified condition; or, когда флаг уровня последовательности имеет второе значение, определение того, что флаг уровня последовательности указывает на то, что видео не удовлетворяет заданному условию.when the sequence level flag has a second value, determining that the sequence level flag indicates that the video does not satisfy the specified condition. 4. Способ по п. 3, отличающийся тем, что заданное условие включает по меньшей мере одно из: высокой битовой глубины, высокого качества, высокой битовой скорости, высокой кадровой частоты или сжатия без потерь.4. The method of claim 3, wherein the specified condition includes at least one of: high bit depth, high quality, high bit rate, high frame rate, or lossless compression. 5. Способ по п. 1, отличающийся тем, что дополнительно включает:5. The method according to paragraph 1, characterized in that it additionally includes: когда флаг обратного положения последнего значимого коэффициента имеет первое значение, определение того, что флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока; или,when the last significant coefficient position reverse flag has the first value, determining that the last significant coefficient position reverse flag indicates that the position of the last significant coefficient has been reversed for the current block; or, когда флаг обратного положения последнего значимого коэффициента имеет второе значение, определение того, что флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента не изменено на обратное для текущего блока.when the last significant coefficient position reverse flag has the second value, determining that the last significant coefficient position reverse flag indicates that the position of the last significant coefficient is not reversed for the current block. 6. Способ по п. 1, отличающийся тем, что определение положения последнего значимого коэффициента путем вычисления с помощью информации о координатах последнего значимого коэффициента включает:6. The method according to paragraph 1, characterized in that determining the position of the last significant coefficient by calculation using information about the coordinates of the last significant coefficient includes: определение ширины и высоты текущего блока;defining the width and height of the current block; получение горизонтальной координаты последнего значимого коэффициента путем вычитания из ширины текущего блока расстояния по горизонтали от положения последнего значимого коэффициента до нижнего правого угла текущего блока;obtaining the horizontal coordinate of the last significant coefficient by subtracting from the width of the current block the horizontal distance from the position of the last significant coefficient to the lower right corner of the current block; получение вертикальной координаты последнего значимого коэффициента путем вычитания из высоты текущего блока расстояния по вертикали от положения последнего значимого коэффициента до нижнего правого угла текущего блока; иobtaining the vertical coordinate of the last significant coefficient by subtracting from the height of the current block the vertical distance from the position of the last significant coefficient to the lower right corner of the current block; and определение положения последнего значимого коэффициента согласно горизонтальной координате последнего значимого коэффициента и вертикальной координате последнего значимого коэффициента.determining the position of the last significant coefficient according to the horizontal coordinate of the last significant coefficient and the vertical coordinate of the last significant coefficient. 7. Способ кодирования коэффициента, применяемый к кодеру и включающий:7. A method of encoding a coefficient applied to the encoder and comprising: определение флага уровня последовательности и положения последнего значимого коэффициента;determination of the sequence level flag and the position of the last significant coefficient; определение флага обратного положения последнего значимого коэффициента, когда флаг уровня последовательности указывает на то, что видео удовлетворяет заданному условию;determining the flag of the reverse position of the last significant coefficient when the sequence level flag indicates that the video satisfies the specified condition; определение информации о координатах последнего значимого коэффициента согласно положению последнего значимого коэффициента и флага обратного положения последнего значимого коэффициента, при этом информацию о координатах последнего значимого коэффициента определяют как расстояние по горизонтали и расстояние по вертикали от положения последнего значимого коэффициента до нижнего правого угла текущего блока, когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока; иdetermining the coordinate information of the last significant coefficient according to the position of the last significant coefficient and the last significant coefficient reverse position flag, wherein the coordinate information of the last significant coefficient is determined as a horizontal distance and a vertical distance from the position of the last significant coefficient to the lower right corner of the current block, when the last significant coefficient reverse position flag indicates that the position of the last significant coefficient is reversed for the current block; and кодирование всех коэффициентов перед положением последнего значимого коэффициента согласно заданному порядку сканирования, и предоставление битовой информации, полученной с помощью кодирования, флага уровня последовательности и информации о координате последнего значимого коэффициента, в битовый поток.encoding all coefficients before the position of the last significant coefficient according to a given scanning order, and providing bit information obtained by encoding, a sequence level flag and information about the coordinate of the last significant coefficient, to a bit stream. 8. Кодер, содержащий первый узел определения и узел кодирования, при этом8. An encoder comprising a first detection node and an encoding node, wherein первый узел определения выполнен с возможностью определения флага уровня последовательности и положения последнего значимого коэффициента и определения флага обратного положения последнего значимого коэффициента, когда флаг уровня последовательности указывает на то, что видео удовлетворяет заданному условию;the first determining unit is configured to determine a sequence level flag and a position of the last significant coefficient and to determine a flag of the reverse position of the last significant coefficient when the sequence level flag indicates that the video satisfies a given condition; первый узел определения дополнительно выполнен с возможностью определения информации о координатах последнего значимого коэффициента согласно положению последнего значимого коэффициента и флага обратного положения последнего значимого коэффициента, при этом информацию о координатах последнего значимого коэффициента определяют как расстояние по горизонтали и расстояние по вертикали от положения последнего значимого коэффициента до нижнего правого угла текущего блока, когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока; иthe first determining unit is further configured to determine information about the coordinates of the last significant coefficient according to the position of the last significant coefficient and the flag of the reverse position of the last significant coefficient, wherein the information about the coordinates of the last significant coefficient is determined as a horizontal distance and a vertical distance from the position of the last significant coefficient to the lower right corner of the current block, when the flag of the reverse position of the last significant coefficient indicates that the position of the last significant coefficient is reversed for the current block; and узел кодирования выполнен с возможностью кодирования всех коэффициентов перед положением последнего значимого коэффициента согласно заданному порядку сканирования и передачи битовой информации, полученной с помощью кодирования, флага уровня последовательности и информации о координате последнего значимого коэффициента в битовый поток.the coding unit is configured to encode all coefficients before the position of the last significant coefficient according to a given scanning order and transmitting the bit information obtained by coding, the sequence level flag and the information about the coordinate of the last significant coefficient into the bit stream. 9. Декодер, содержащий узел анализа и второй узел определения, при этом9. A decoder comprising an analysis node and a second determination node, wherein узел анализа выполнен с возможностью анализа битового потока с получением флага уровня последовательности и анализа битового потока с получением флага обратного положения последнего значимого коэффициента и информации о координате последнего значимого коэффициента, когда флаг уровня последовательности указывает на то, что видео удовлетворяет заданному условию;the analysis unit is configured to analyze the bit stream to obtain a sequence level flag and analyze the bit stream to obtain a flag of the reverse position of the last significant coefficient and information about the coordinate of the last significant coefficient when the sequence level flag indicates that the video satisfies a given condition; второй узел определения выполнен с возможностью определения, когда флаг обратного положения последнего значимого коэффициента указывает на то, что положение последнего значимого коэффициента изменено на обратное для текущего блока, положения последнего значимого коэффициента путем вычисления при помощи информации о координате последнего значимого коэффициента, при этом информация о координате последнего значимого коэффициента представляет собой расстояние по горизонтали и расстояние по вертикали от положения последнего значимого коэффициента до нижнего правого угла текущего блока; иthe second determining unit is configured to determine, when the last significant coefficient position reversal flag indicates that the position of the last significant coefficient is reversed for the current block, the position of the last significant coefficient by calculating using the information about the coordinate of the last significant coefficient, wherein the information about the coordinate of the last significant coefficient represents a horizontal distance and a vertical distance from the position of the last significant coefficient to the lower right corner of the current block; and узел анализа дополнительно выполнен с возможностью декодирования согласно заданному порядку сканирования всех коэффициентов перед положением последнего значимого коэффициента для определения коэффициентов текущего блока.the analysis unit is additionally configured to decode, according to a given scanning order, all coefficients before the position of the last significant coefficient to determine the coefficients of the current block. 10. Компьютерный носитель данных, на котором хранится компьютерная программа, которая при исполнении на процессоре реализует способ по любому из пп. 1–6 или способ по п. 7.10. A computer storage medium on which is stored a computer program that, when executed on a processor, implements the method according to any of paragraphs 1–6 or the method according to paragraph 7.
RU2025111703A 2025-05-05 Method for encoding coefficients, encoder and decoder RU2850055C1 (en)

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
RU2024134903A Division RU2840718C1 (en) 2024-11-21 Method of encoding coefficients, encoder and decoder

Publications (1)

Publication Number Publication Date
RU2850055C1 true RU2850055C1 (en) 2025-11-05

Family

ID=

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2609750C1 (en) * 2013-01-04 2017-02-02 Самсунг Электроникс Ко., Лтд. Method of entropy encoding slice segment and device therefor and method of entropy decoding segment slice and device therefor
US9565435B2 (en) * 2012-02-04 2017-02-07 Google Technology Holdings LLC Devices and methods for context reduction in last significant coefficient position coding
US9794591B2 (en) * 2012-10-01 2017-10-17 Telefonaktiebolaget Lm Ericsson (Publ) Coding and decoding of transform skipped blocks
CN104093020B (en) * 2011-03-10 2017-11-17 华为技术有限公司 The coding method of conversion coefficient, the coding/decoding method of conversion coefficient, and device
WO2019027200A1 (en) * 2017-07-31 2019-02-07 에스케이텔레콤 주식회사 Method and device for expressing locations of non-zero coefficients
US10523968B2 (en) * 2017-09-18 2019-12-31 Google Llc Coding of last significant coefficient flags
US20200396488A1 (en) * 2017-04-13 2020-12-17 Lg Electronics Inc. Method and device for entropy encoding, decoding video signal

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104093020B (en) * 2011-03-10 2017-11-17 华为技术有限公司 The coding method of conversion coefficient, the coding/decoding method of conversion coefficient, and device
US9565435B2 (en) * 2012-02-04 2017-02-07 Google Technology Holdings LLC Devices and methods for context reduction in last significant coefficient position coding
US9794591B2 (en) * 2012-10-01 2017-10-17 Telefonaktiebolaget Lm Ericsson (Publ) Coding and decoding of transform skipped blocks
RU2609750C1 (en) * 2013-01-04 2017-02-02 Самсунг Электроникс Ко., Лтд. Method of entropy encoding slice segment and device therefor and method of entropy decoding segment slice and device therefor
US20200396488A1 (en) * 2017-04-13 2020-12-17 Lg Electronics Inc. Method and device for entropy encoding, decoding video signal
WO2019027200A1 (en) * 2017-07-31 2019-02-07 에스케이텔레콤 주식회사 Method and device for expressing locations of non-zero coefficients
US10523968B2 (en) * 2017-09-18 2019-12-31 Google Llc Coding of last significant coefficient flags

Similar Documents

Publication Publication Date Title
KR20230062630A (en) Residual and Coefficient Coding for Video Coding
US12407847B2 (en) Coefficient coding method, encoder, and decoder
JP2025134888A (en) Residual and coefficient coding for video coding - Patents.com
CN116982317A (en) Encoding and decoding method for coefficient, encoder, decoder and computer storage medium
US20240056585A1 (en) Coding method, encoder, and decoder
RU2850055C1 (en) Method for encoding coefficients, encoder and decoder
RU2840718C1 (en) Method of encoding coefficients, encoder and decoder
RU2831992C2 (en) Method of encoding coefficients, encoder, decoder and computer data medium
JP2024529313A (en) Sequence-level and slice-level syntax representation in video codecs
WO2022256451A1 (en) Quantization level binarization in video coding
CN116998149A (en) Coefficient encoding and decoding method, encoder, decoder and computer storage medium
RU2845936C1 (en) Method of encoding and decoding, an encoder and a decoder
RU2836841C2 (en) Encoding and decoding method, encoder and decoder
JP7729920B2 (en) Codec method, codestream, encoding device, decoding device, and computer storage medium