RU2818891C1 - Способ и устройство, вычислительное устройство и носитель данных для кодирования видео - Google Patents

Способ и устройство, вычислительное устройство и носитель данных для кодирования видео Download PDF

Info

Publication number
RU2818891C1
RU2818891C1 RU2023114829A RU2023114829A RU2818891C1 RU 2818891 C1 RU2818891 C1 RU 2818891C1 RU 2023114829 A RU2023114829 A RU 2023114829A RU 2023114829 A RU2023114829 A RU 2023114829A RU 2818891 C1 RU2818891 C1 RU 2818891C1
Authority
RU
Russia
Prior art keywords
encoding
current
video frame
macroblocks
rate
Prior art date
Application number
RU2023114829A
Other languages
English (en)
Inventor
Цзяцзин БАО
Original Assignee
Биго Текнолоджи Пте. Лтд.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Биго Текнолоджи Пте. Лтд. filed Critical Биго Текнолоджи Пте. Лтд.
Application granted granted Critical
Publication of RU2818891C1 publication Critical patent/RU2818891C1/ru

Links

Abstract

Группа изобретений относится к области кодирования видео. Технический результат заключается в повышении эффективности кодирования видеоданных. Такой результат достигается за счёт предсказания скорости предварительного кодирования текущего подмножества макроблоков после кодирования текущего подмножества макроблоков в текущем видеокадре, получения целевого параметра квантования для кодирования текущего подмножества макроблоков в текущем видеокадре с помощью регулировки фактического параметра квантования для кодирования текущего подмножества макроблоков в предыдущем видеокадре, на основании разности скоростей кодирования между скоростью предварительного кодирования и заранее назначенной скоростью кодирования текущего видеокадра при текущей ширине полосы пропускания сети, и последовательного кодирования каждого макроблока текущего подмножества макроблоков с помощью целевого параметра квантования для кодирования. 4 н. и 10 з.п. ф-лы, 8 ил.

Description

Ссылка на родственные заявки
[0001] Настоящая заявка является национальной фазой в России международной заявки №PCT/CN2021/129185, поданной 8 ноября 2021 г., согласно которой испрашивается приоритет в соответствии с предварительной заявкой на выдачу патента Китая №202011360060.6, поданной 27 ноября 2020 г. в патентное ведомство Китая, которая ссылкой полностью включена в настоящий документ.
Область техники, к которой относится настоящее изобретение
[0002] Варианты осуществления настоящего раскрытия связаны с областью технологий передачи видео, в частности, связаны со способом и устройством, вычислительным устройством и носителем данных для кодирования видео.
Предшествующий уровень техники настоящего изобретения
[0003] В связи с быстрым развитием технологий Интернета и возрастания потребностей пользователей в видеороликах высокой четности количество интерактивных видеоданных из мультимедийных ресурсов также увеличивается. Во время передачи видео для эффективного устранения в видеоданных избыточной информации обычно используются технологии сжатия и кодирования, для того, чтобы добиться быстрой передачи и автономного хранения видеоданных из Интернета. Для адаптации к ширине полосы пропускания и к особенностям различных устройств передачи данных пользователей, исходные видеоданные кодируются с учетом скорости передачи данных в бит/сек. При кодировании видеоданных в связанных областях техники в случаях повышения сложности кодирования улучшается качества кодирования, но при этом увеличивается время кодирования и чрезмерное время кодирования приводит к тому, что пользователь сталкивается с задержками при воспроизведении видео. Следовательно, при обеспечении высококачественного кодирования также необходимо повысить скорость кодирования для снижения времени кодирования в процессе передачи видеоданных.
Краткое раскрытие настоящего изобретения
[0004] Согласно вариантам осуществления настоящего раскрытия предложены способ и устройство для кодирования видео, вычислительное устройство и носитель данных.
[0005] Согласно некоторым вариантам осуществления настоящего раскрытия предложен способ для кодирования видео. В способе предусмотрены следующие стадии:
[0006] предсказание скорости предварительного кодирования текущего подмножества макроблоков после кодирования текущего подмножества макроблоков в текущем видеокадре, на основании фактического весового множителя кодирования каждого подмножества макроблоков текущего видеокадра в предыдущем видеокадре, и фактической скорости кодирования каждого закодированного подмножества макроблоков в текущем видеокадре; и
[0007] получение целевого параметра квантования для кодирования текущего подмножества макроблоков в текущем видеокадре с помощью регулировки фактического параметра квантования для кодирования текущего подмножества макроблоков в предыдущем видеокадре, на основании разности скоростей кодирования между скоростью предварительного кодирования и заранее назначенной скоростью кодирования текущего видеокадра при текущей ширине полосы пропускания сети.
[0008] Согласно некоторым вариантам осуществления настоящего раскрытия, предложено устройство для кодирования видео. Устройство содержит в своем составе:
[0009] модуль предсказания скорости кодирования, выполненный с возможностью предсказывать скорость предварительного кодирования текущего подмножества макроблоков после кодирования текущего подмножества макроблоков в текущем видеокадре, на основании фактического весового множителя кодирования каждого текущего подмножества макроблоков текущего видеокадра в предыдущем видеокадре, и фактической скорости кодирования каждого закодированного подмножества макроблоков в текущем видеокадре; и
[0010] модуль квантования для кодирования, выполненный с возможностью получать целевой параметр квантования для кодирования текущего подмножества макроблоков в текущем видеокадре с помощью регулировки фактического параметра квантования для кодирования текущего подмножества макроблоков в предыдущем видеокадре, на основании разности скоростей кодирования между скоростью предварительного кодирования и заранее назначенной скоростью кодирования текущего видеокадра при текущей ширине полосы пропускания сети.
[0011] Согласно некоторым вариантам осуществления настоящего раскрытия предложено вычислительное устройство для кодирования видео. Вычислительное устройство содержит в своем составе:
[0012] по меньшей мере, один процессор; и
[0013] запоминающее устройство, выполненное с возможностью хранить, по меньшей мере, одну программу.
[0014] Причем, по меньшей мере, один процессор после загрузки и выполнения, по меньшей мере, одной программы заставлен выполнять способ кодирования видеоданных, как определено согласно любому варианту осуществления настоящего раскрытия.
[0015] Согласно некоторым вариантам осуществления настоящего раскрытия предложен энергонезависимый машиночитаемый носитель данных для кодирования видео. На энергонезависимом машиночитаемом носителе данных хранится программа для компьютера, причем программа для компьютера, будучи загруженной в процессор и выполняемой им, заставляет процессор выполнять способ для кодирования видеоданных, как определено согласно любому из вариантов осуществления настоящего раскрытия.
Краткое описание фигур
[0016] На фиг.1А показана блок-схема алгоритма способа для кодирования видеоданных согласно некоторым вариантам осуществления настоящего раскрытия;
[0017] На фиг.1В показана упрощенная схема процесса кодирования видеоданных согласно некоторым вариантам осуществления настоящего раскрытия;
[0018] На фиг.2А показана блок-схема алгоритма другого способа для кодирования видеоданных согласно некоторым вариантам осуществления настоящего раскрытия;
[0019] На фиг.2В показана упрощенная схема другого процесса кодирования видеоданных согласно некоторым вариантам осуществления настоящего раскрытия;
[0020] На фиг.3А показана блок-схема алгоритма еще одного другого способа для кодирования видеоданных согласно некоторым вариантам осуществления настоящего раскрытия;
[0021] На фиг.3В показана упрощенная схема еще одного другого процесса кодирования видеоданных согласно некоторым вариантам осуществления настоящего М;
[0022] На фиг.4 показана упрощенная блок-схема устройства для кодирования видеоданных согласно некоторым вариантам осуществления настоящего раскрытия; и
[0023] На фиг.5 показана упрощенная блок-схема вычислительного устройства согласно некоторым вариантам осуществления настоящего раскрытия.
Подробное раскрытие настоящего изобретения
[0024] Настоящее раскрытие подробно описано далее в настоящем документе со ссылками на прилагаемые фигуры и варианты осуществления. Следует понимать, что описанные далее в настоящем документе конкретные варианты осуществлений являются только иллюстративными, а никак не ограничительными. Следует также отметить, что для упрощения описания на фигурах показаны только некоторые, а не все структуры, связанные с настоящим раскрытием. Более того, варианты осуществления настоящего раскрытия и признаки в вариантах осуществления настоящего изобретения можно комбинировать друг с другом без какого-либо конфликта.
[0025] В настоящее время большинство режимов быстрого кодирования видеоданных в связанных областях техники основано на модификации самого кодировщика и перехода от кодирования на уровне кадра к кодированию на уровне блоков, с учетом ожидаемой ширины полосы пропускания сети, при этом сложность изображения множества видеокадров непрерывно анализируется с помощью большого количества рекурсивных алгоритмов, адаптированных для принятия решения о кодировании, и затем вычисляется скорость кодирования данных для каждого кодируемого блока в видеокадрах. Таким образом, затраты на кодирование каждого кодируемого блока при каждой глубине рекурсии необходимо вычислять с помощью анализа сложности изображения, что приводит к большому объему вычислений и увеличивает непроизводительные затраты в процессе передачи видеоданных.
[0026] На фиг.1А показана блок-схема алгоритма способа для кодирования видеоданных согласно некоторым вариантам осуществления настоящего раскрытия. Вариант осуществления применим в сценарии, когда имеется требование передачи любых видеоданных. Способ для кодирования видеоданных согласно варианту осуществления настоящего раскрытия выполняется с помощью устройства для кодирования видеоданных согласно некоторым вариантам осуществления настоящего раскрытия. Устройство реализовано с помощью программных и/или аппаратных средств, и встроено в вычислительное устройство для выполнения этого способа. Вычислительное устройство является устройством, участвующим во взаимодействии с видеоданными.
[0027] Как показано на фиг.1А, в способе предусмотрены следующие стадии.
[0028] На стадии S110 выполняется предсказание скорости предварительного кодирования текущего подмножества макроблоков после кодирования текущего подмножества макроблоков в текущем видеокадре, на основании фактического весового множителя кодирования каждого подмножества макроблоков текущего видеокадра в предыдущем видеокадре, и фактической скорости кодирования каждого закодированного подмножества макроблоков в текущем видеокадре.
[0029] Для обеспечения высокой эффективности передачи и точности хранения видеоданных во время быстрой передачи видеоданных между оборудованием различных пользователей, подлежащие передаче видеоданные необходимо сначала сжать и закодировать, и сжатые и закодированные видеоданные должны соответствовать возможности изменения ширины полосы пропускания сети, чтобы избежать задержки воспроизведения видео, вызванной медленной передачей по сети. В настоящее время, когда любые видеоданные кодируются и сжимаются, видеоданные сначала декапсулируются для получения последовательности множества видеокадров, а затем множество видеокадров последовательно кодируется. Более того, поскольку видеоданные в двух соседних кадрах обычно очень похожи, и в процессе кодирования видеоданных согласно варианту осуществления нужно адаптироваться только к изменениям ширины полосы пропускания сети, для эффективного выбора режима кодирования текущего видеокадра используется фактический режим кодирования предыдущего видеокадра совместно с учетом текущей ширины полосы пропускания сети, вследствие чего улучшается стабильность качества кодирования видеоданных благодаря тому, что при кодировании видеокадров учитываются возможные изменения ширины полосы пропускания сети.
[0030] Таким образом, согласно технологиям кодирования видеоданных в связанных областях техники, каждый видеокадр обычно делится на некоторое число макроблоков, и затем каждый макроблок видеокадра кодируется отдельно, и при кодировании один макроблок рассматривается как отдельный набор данных, именно таким образом реализовано кодирование видеокадра. Размер макроблоков для кодирования задается заранее, обычно это 16*16. Более того, поскольку макроблоки в двух соседних кадрах одного потока видеоданных имеют одинаковые размер и положение, режимы кодирования одинаковых макроблоков в двух соседних кадрах будут в значительной степени подобными. Вследствие этого, согласно одному варианту осуществления, фактический режим кодирования каждого макроблока в предыдущем видеокадре используется, чтобы выбрать режим кодирования такого же макроблока в текущем видеокадре. Поскольку соседние макроблоки в том же самом видеокадре имеют подобную сложность видеоизображения, некоторое количество макроблоков кодируется с использованием того же самого параметра квантования для кодирования. Следовательно, для улучшения эффективности кодирования видеоданных, в случае, когда кодируется каждый видеокадр, все макроблоки в каждом из видеокадров группируются в некоторое количество подмножеств макроблоков на основании требований кодирования согласно варианту осуществления. Затем тот же самый параметр квантования для кодирования настраивается для каждого из подмножеств макроблоков, так что каждый из макроблоков внутри подмножеств макроблоков кодируется с помощью того же самого параметра квантования для кодирования.
[0031] Следует отметить, что согласно варианту осуществления, каждое подмножество макроблоков состоит только из одного макроблока, или оно составлено из некоторого количества макроблоков. Например, некоторое количество макроблоков в одной строке в текущем видеокадре составляет подмножество макроблоков, и согласно варианту осуществления, количество макроблоков в каждом подмножестве макроблоков никак не ограничивается. Количество макроблоков в каждом подмножестве макроблоков должно быть настолько мало, насколько это возможно, с тем, чтобы режим кодирования каждого макроблока непосредственно анализировался для улучшения качества кодирования каждого макроблока.
[0032] Согласно варианту осуществления, в случае кодирования подмножества макроблоков в текущем видеокадре текущий видеокадр сначала разделяется на некоторое количество макроблоков для достижения эффективного выбора режима кодирования для текущего видеокадра с помощью фактического режима кодирования предыдущего видеокадра, как показано на фиг.1В. Все макроблоки в текущем видеокадре объединяются в некоторое количество подмножеств макроблоков согласно размеру подмножества макроблоков, назначенному для кодирования. Например, некоторое количество макроблоков в каждой строке в текущем видеокадре составляет одно подмножество макроблоков. Затем после фактического кодирования предыдущего видеокадра анализируется фактический объем кодирования для каждого подмножества макроблоков, и фактический весовой множитель кодирования для каждого подмножества макроблоков в предыдущем видеокадре вычисляется на основании отношения фактического объема кодирования каждого подмножества макроблоков в предыдущем видеокадре к общему фактическому объему кодирования предыдущего видеокадра. В данном случае, фактический весовой множитель кодирования представляет собой разницу качества кодирования между подмножествами макроблоков. Поскольку каждое подмножество макроблоков кодируется в порядке следования подмножеств макроблоков в каждом видеокадре, перед кодированием текущего подмножества макроблоков в текущем видеокадре уже было закодировано некоторое количество подмножеств макроблоков, расположенных перед текущим подмножеством макроблоков в текущем видеокадре. С помощью анализа ситуации с кодированием каждого подмножества макроблоков в текущем видеокадре, некоторое количество закодированных подмножеств макроблоков обнаруживается в текущем видеокадре, и определяется фактическая скорость кодирования каждого закодированного подмножества макроблоков, для того, чтобы предсказать скорость предварительного кодирования текущего подмножества макроблоков после кодирования текущего подмножества макроблоков в текущем видеокадре с учетом фактического кодирования предыдущего видеокадра.
[0033] На основании фактического весового множителя кодирования каждого подмножества макроблоков предыдущего видеокадра в текущем видеокадре, вычисляются отношения весовых множителей кодирования закодированных подмножеств макроблоков к весовым множителям кодирования подмножеств макроблоков. Фактические скорости кодирования закодированных подмножеств макроблоков вычисляются с помощью фактических скоростей кодирования каждого закодированного подмножества макроблоков, и затем скорости кодирования подмножеств макроблоков в текущем видеокадре, то есть скорости предварительного кодирования текущих подмножеств макроблоков после кодирования текущих подмножеств макроблоков в текущем видеокадре для кодирования текущих подмножеств макроблоков в текущем видеокадре, предсказываются на основании отношений весовых множителей кодирования и фактических скоростей кодирования закодированных подмножеств макроблоков. Скорость предварительного кодирования текущего видеокадра предсказывается на основании качества кодирования, представленного фактическим весовым множителем кодирования каждого подмножества макроблоков предыдущего видеокадра совместно с фактическими скоростями кодирования закодированных подмножеств макроблоков в текущем видеокадре, что может обеспечить согласованность качества кодирования между предыдущим видеокадром и текущим видеокадром.
[0034] Следует отметить, что поскольку подмножества макроблоков в текущем видеокадре закодированы в порядке согласно варианту осуществления, скорость предварительного кодирования текущего видеокадра предсказывается после кодирования каждого подмножества макроблоков в текущем видеокадре на основании фактического весового множителя кодирования каждого подмножества макроблоков в предыдущем видеокадре и фактической скорости кодирования каждого закодированного подмножества макроблоков в текущем видеокадре, для того, чтобы обеспечить стабильность качества кодирования каждого подмножества макроблоков в текущем видеокадре.
[0035] На стадии S120 выполняется получение целевого параметра квантования для кодирования текущего подмножества макроблоков в текущем видеокадре с помощью регулировки фактического параметра квантования для кодирования текущего подмножества макроблоков в предыдущем видеокадре, на основании разности скоростей кодирования между скоростью предварительного кодирования и заранее назначенной скоростью кодирования текущего видеокадра при текущей ширине полосы пропускания сети.
[0036] Например, в случае, когда скорость предварительного кодирования текущего видеокадра для кодирования текущего подмножества макроблоков предсказана, скорость предварительного кодирования может обеспечить только согласованность качества кодирования между предыдущим видеокадром и текущим видеокадром, но при этом не учитывается возможность изменения ширины полосы пропускания сети. Следовательно, согласно варианту осуществления, при кодировании текущего видеокадра необходимо проанализировать текущую ширину полосы пропускания сети для текущего видеокадра. Как показано на фиг.1В, скорость кодирования может обеспечить передачу видеоданных без задержек при текущей ширине полосы пропускания сети, то есть, согласно варианту осуществления, предварительно назначенную скорость кодирования необходимо назначить для текущего видеокадра. В таком случае, скорость предварительного кодирования может обеспечить стабильность качества кодирования между предыдущим видеокадром и текущим видеокадром, а предварительно назначенная скорость может удовлетворить требованию о передаче видеоданных без задержек при текущей ширине полосы пропускания сети. Следовательно, согласно варианту осуществления, необходимо проанализировать разность скоростей между скоростью предварительного кодирования и заранее назначенной скоростью кодирования, и фактический параметр квантования (QP) для кодирования для подлежащего кодированию текущего подмножества макроблоков в текущем видеокадре и в предыдущем видеокадре соответственно регулируется для получения целевого параметра квантования для кодирования для текущего подмножества макроблоков в текущем видеокадре, при этом не вычисляются затраты на кодирование каждого кодируемого блока при каждой глубине рекурсии с помощью анализа сложности изображения, что существенно снижает затраты на кодирование и сложность кодирования в процессе кодирования видеоданных, и улучшает эффективность кодирования видеоданных. Можно достичь баланса кодирования между требованием стабильного качества видео и требованием о передаче видеоданных без задержек при изменениях ширины полосы пропускания сети между соседними кадрами, так что целевой параметр квантования для кодирования текущего подмножества макроблоков в текущем видеокадре может улучшить стабильность качества кодирования видео при условии обеспечения передачи видеоданных без задержек при изменениях ширины полосы пропускания сети.
[0037] В дополнение к этому, поскольку ширина полосы пропускания сети постоянно изменяется в процессе кодирования видео, имеется соответствующий механизм потери кадра для обеспечения соблюдения требования о передаче видеоданных без задержек при изменениях ширины полосы пропускания сети. В таком случае возможна ситуация, когда при кодировании текущего видеокадра кодирование предыдущего видеокадра не завершено из-за пропущенного кадра. В том случае, когда предыдущий видеокадр не закодирован, соответствующий параметр квантования конкретно настраивается для текущего видеокадра с помощью анализа сложности изображения в текущем видеокадре, и каждый макроблок в текущем видеокадре кодируется на основании параметра квантования.
[0038] Вместе с тем, принимая во внимание свойство постоянного изменения полосы пропускания сети в процессе кодирования видео, согласно варианту осуществления, с целью обеспечения точности кодирования текущего видеокадра, проводится оценка текущей необходимой ширины полосы пропускания сети, соответствующей видеокадру, на основании запроса на кодирование каждого видеокадра в подлежащем кодированию видео. Другими словами, в случае, когда запрашивается кодирование видеокадра, проводится новая оценка текущего состояния сети для получения текущей ширины полосы пропускания сети, соответствующей подлежащему кодированию текущему видеокадру, так что параметр квантования для кодирования для каждого подмножества макроблоков в текущем видеокадре способен удовлетворить требованию использования текущей ширины полосы пропускания сети.
[0039] Согласно техническому решению варианта осуществления, так как текущий видеокадр кодируется только после кодирования предыдущего видеокадра, и некоторое количество подмножеств макроблоков в текущем видеокадре также кодируется последовательно, каждое подмножество макроблоков в текущем видеокадре имеет режим кодирования, соответствующий предыдущему видеокадру. В результате кодирования текущего подмножества макроблоков в текущем видеокадре в этом текущем видеокадре имеются закодированные подмножества макроблоков и незакодированные подмножества макроблоков. Скорость предварительного кодирования текущего подмножества макроблоков текущего кодируемого видеокадра предсказывается с использованием фактического весового множителя кодирования каждого подмножества макроблоков текущего видеокадра в предыдущем видеокадре и фактической скорости кодирования каждого закодированного подмножества макроблоков в текущем видеокадре. Фактический параметр квантования для кодирования текущего подмножества макроблоков в предыдущем видеокадре регулируется с помощью анализа разности скоростей между скоростью предварительного кодирования и заранее назначенной скоростью кодирования текущего видеокадра при текущей ширине полосы пропускания сети, для того, чтобы получить целевой параметр квантования для кодирования для текущего подмножества макроблоков в текущем видеокадре и реализовать точное кодирование текущего видеокадра без вычисления затрат на кодирование каждого кодируемого блока при каждой глубине рекурсии с помощью анализа сложности изображения, что существенно снижает затраты на кодирование и сложность кодирования в процессе кодирования видеоданных, и улучшает эффективность кодирования видеоданных. Соответствующая регулировка выполняется на основании текущей ширины полосы пропускания сети с помощью прямого использования фактического режима кодирования каждого подмножества макроблоков в предыдущем видеокадре, для того, чтобы выполнить выбор режима кодирования и отрегулировать его для текущего видеокадра с помощью использования режима кодирования предыдущего видеокадра в условиях изменения текущей ширины пропускания сети, и улучшить стабильность качества кодирования видеоданных в результате обеспечения передачи видеоданных без задержек при изменениях ширины полосы пропускания сети.
[0040] На фиг.2А показана блок-схема алгоритма способа для кодирования видеоданных согласно другому варианту осуществления настоящего раскрытия. На фиг.2В показана упрощенная схема процесса кодирования видеоданных согласно другому варианту осуществления настоящего изобретения; Этот вариант осуществления является усовершенствованием описанного выше варианта осуществления. Как показано на фиг.2А, для этого варианта осуществления приведено подробное описание конкретного процесса кодирования при последовательном кодировании некоторого количества подмножеств макроблоков внутри текущего видеокадра.
[0041] Например, как показано на фиг.2А, в варианте осуществления способа предусмотрены следующие стадии.
[0042] На стадии S201 определяется, присутствуют ли закодированные подмножества макроблоков в текущем видеокадре, стадия S203 выполняется в случае, когда закодированные подмножества макроблоков присутствуют в текущем видеокадре, а стадия S202 выполняется в случае, когда закодированные подмножества макроблоков не присутствуют в текущем видеокадре.
[0043] Например, перед кодированием текущего видеокадра в подлежащем кодированию видеокадре, текущий видеокадр предварительно разделяется на некоторое количество макроблоков, и макроблоки объединяются для получения некоторого количества подмножеств макроблоков. В дальнейшем, для каждого подмножества макроблоков настраивается соответствующий параметр квантования для кодирования, и каждое подмножество макроблоков кодируется, как это требуется. Однако, параметр квантования для кодирования необходимо вычислить с учетом фактических режимов кодирования для закодированных подмножеств макроблоков в текущем видеокадре. Вследствие этого, при выполнении кодирования определенного подмножества макроблоков в текущем видеокадре, прежде всего, необходимо определить, присутствует ли закодированное подмножество макроблоков в текущем видеокадре, то есть, нужно определить, является ли подлежащее кодированию текущее подмножество макроблоков в текущем видеокадре первым подлежащим кодированию подмножеством макроблоков в текущем видеокадре. Так как предсказание кодирования нельзя выполнить с помощью учета фактических режимов кодирования других подмножеств макроблоков во время кодирования первого подмножества макроблоков в текущем видеокадре, на основании присутствия или отсутствия закодированных подмножеств макроблоков в текущем видеокадре, необходимо использовать другие способы для вычисления параметра квантования для кодирования подлежащего кодированию текущего подмножества макроблоков в текущем видеокадре, для того, чтобы обеспечить точность кодирования текущего подмножества макроблоков.
[0044] На стадии S202 фактический параметр квантования для кодирования текущего подмножества макроблоков в предыдущем видеокадре определяется в качестве целевого параметра квантования для кодирования текущего подмножества макроблоков в текущем видеокадре.
[0045] Например, в случае, когда закодированное подмножество макроблоков не присутствует в текущем видеокадре, то это указывает, что подлежащее кодированию текущее подмножество макроблоков в текущем видеокадре является первым подлежащим кодированию подмножеством макроблоков в текущем видеокадре, и текущий режим кодирования нельзя оценить с помощью использования фактических режимов кодирования для других подмножеств макроблоков в текущем видеокадре. В этом случае фактический режим кодирования текущего подмножества макроблоков в предыдущем видеокадре также в некоторой степени применим для кодирования текущего подмножества макроблоков в текущем видеокадре, так как видеоизображения того же самого подмножества макроблоков в двух соседних кадрах являются в значительной степени одинаковым. Вследствие этого, согласно варианту осуществления, для того, чтобы улучшить высокую эффективность кодирования видеоданных, фактический параметр квантования для кодирования текущего подмножества макроблоков в предыдущем видеокадре определяется в качестве целевого параметра квантования для кодирования текущего подмножества макроблоков в текущем видеокадре, и каждый макроблок в текущем подмножестве макроблоков кодируется на основании целевого параметра квантования для кодирования, для того, чтобы в некоторой степени обеспечить стабильность качества кодирования видеоданных.
[0046] На стадии S203 вычисляются фактическая скорость кодирования каждого закодированного подмножества макроблоков, и отношения весовых множителей незакодированных подмножеств макроблоков и закодированных подмножеств макроблоков в текущем видеокадре.
[0047] Например, в случае, когда закодированные подмножества макроблоков присутствуют в текущем видеокадре, то это указывает, что подлежащее кодированию текущее подмножество макроблоков в текущем видеокадре не является первым подмножеством макроблоков в текущем видеокадре, и благодаря этому текущий режим кодирования можно оценить с помощью использования фактических режимов кодирования для некоторого количества закодированных подмножеств макроблоков в текущем видеокадре, для того, чтобы дополнительно улучшить точность кодирования текущего подмножества макроблоков.
[0048] В таком случае, прежде всего, каждое закодированное подмножество макроблоков находится в текущем видеокадре для получения некоторого количества закодированных подмножеств макроблоков. Затем анализируется фактическая ситуация кодирования для каждого закодированного подмножества макроблоков, как показано на фиг.2 В, для того, чтобы определить фактическую скорость кодирования каждого закодированного подмножества макроблоков в текущем видеокадре. В то же самое время вычисляется фактический объем кодирования для каждого подмножества макроблоков в предыдущем видеокадре с помощью анализа фактической ситуации кодирования для каждого подмножества макроблоков в предыдущем видеокадре. Затем на основании отношения фактического объема кодирования для каждого подмножества макроблоков в предыдущем видеокадре к общему объему кодирования в предыдущем видеокадре вычисляется фактический весовой множитель кодирования для каждого подмножества макроблоков. Вследствие этого, вычисляются отношения весовых множителей незакодированных подмножеств макроблоков к весовым множителям закодированных подмножеств макроблоков в текущем видеокадре, так что скорость кодирования незакодированного подмножества макроблоков в текущем видеокадре предсказывается на основании фактических скоростей кодирования закодированных подмножеств макроблоков в текущем видеокадре, для того, чтобы предсказать скорость предварительного кодирования текущего видеокадра.
[0049] На стадии S204 после кодирования текущего подмножества макроблоков в текущем видеокадре определяется скорость предварительного кодирования текущего подмножества макроблоков с помощью оценки скоростей кодирования незакодированных подмножеств макроблоков в текущем видеокадре, на основании фактических скоростей кодирования и отношений весовых множителей.
[0050] Согласно варианту осуществления, фактические скорости кодирования закодированных подмножеств макроблоков в текущем видеокадре суммируются для получения общей скорости кодирования закодированных подмножеств макроблоков в текущем видеокадре. На основании произведения отношений весовых множителей незакодированных подмножеств макроблоков к весовым множителям закодированных подмножеств макроблоков в текущем видеокадре и общей скорости кодирования оцениваются скорости кодирования подлежащих кодированию незакодированных подмножеств макроблоков в текущем видеокадре. Скорость предварительного кодирования текущего видеокадра для кодирования текущего подмножество макроблоков предсказывается с помощью суммирования общей скорости кодирования закодированных подмножеств макроблоков в текущем видеокадре и скорости кодирования подлежащих кодированию макроблоков, для того чтобы обеспечить стабильность качества кодирования видеоданных.
[0051] Например, формула предсказания для скорости предварительного кодирования текущего видеокадра для кодирования текущего подмножеством макроблоков имеет вид: где predframesize - это скорость предварительного кодирования текущего видеокадра для кодирования текущего подмножеством макроблоков, realsize - это фактическая скорость кодирования закодированных подмножеств макроблоков в текущем видеокадре, weightleft - это фактические весовые множители кодирования незакодированных подмножеств макроблоков из текущего видеокадра в предыдущем видеокадре, a weightused - это фактические весовые множители кодирования закодированных подмножеств макроблоков из текущего видеокадра в предыдущем видеокадре.
[0052] На стадии S205 определяется, превышает ли разность между скоростью предварительного кодирования и заранее назначенной скоростью кодирования текущего видеокадра при текущей ширине полосы пропускания сети величину заранее настроенного диапазона изменений скорости передачи, и если разность между скоростью предварительного кодирования и заранее назначенной скоростью кодирования текущего видеокадра при текущей ширине полосы пропускания сети превышает величину заранее настроенного диапазона изменений скорости передачи, то выполняется стадия S207, а если разность между скоростью предварительного кодирования и заранее назначенной скоростью кодирования текущего видеокадра при текущей ширине полосы пропускания сети не превышает величину заранее настроенного диапазона изменений скорости передачи, то выполняется стадия S206.
[0053] Например, в случае, когда предсказана скорость предварительного кодирования текущего видеокадра для кодирования текущего подмножества макроблоков, так как скорость предварительного кодирования предсказана с помощью анализа фактической ситуации кодирования предыдущего видеокадра, может быть обеспечена только стабильность качества кодирования видеоданных, в то время как нельзя обеспечить передачу видеоданных без задержек при текущей ширине полосы пропускания сети. Таким образом, согласно варианту осуществления надлежащая скорость назначается текущему видеокадру согласно текущей ширине полосы пропускания сети, то есть это заранее назначенная скорость. В таком случае, если определено, что разность скоростей между скоростью предварительного кодирования и заранее назначенной скоростью кодирования превышает величину заранее настроенного диапазона изменений скорости передачи, то выполняется анализ, пригоден ли фактический параметр квантования для кодирования для текущего подмножества макроблоков в предыдущем видеокадре для кодирования текущего подмножества макроблоков в текущем видеокадре, так что кодирование текущего подмножества макроблоков в текущем видеокадре может обеспечить не только стабильность качества кодирования видеоданных, но также обеспечить выполнение требования о передаче видеоданных без задержек при текущей ширине полосы пропускания сети.
[0054] На стадии S206 фактический параметр квантования для кодирования текущего подмножества макроблоков в предыдущем видеокадре определяется в качестве целевого параметра квантования для кодирования текущего подмножества макроблоков в текущем видеокадре.
[0055] В случае, когда разность скоростей между скоростью предварительного кодирования и заранее назначенной скоростью кодирования не превышает величины заранее настроенного диапазона изменений скорости передачи, это указывает, что скорость предварительного кодирования также удовлетворяет требованию выполнения передачи видеоданных без задержек при текущей ширине полосы пропускания сети с определенным диапазоном погрешности. В таком случае, так как скорость предварительного кодирования предсказана с помощью анализа фактической ситуации кодирования в предыдущем видеокадре, фактический параметр квантования для кодирования текущего подмножества макроблоков в предыдущем видеокадре непосредственно определяется в качестве целевого параметра квантования для кодирования текущего подмножества макроблоков в текущем видеокадре, для того, чтобы обеспечить стабильность качества кодирования видеоданных при обеспечении выполнения требования передачи видеоданных без задержек при текущей ширине полосы пропускания сети.
[0056] На стадии S207 определяется, превышает ли скорость предварительного кодирования заранее назначенную скорость кодирования, и если скорость предварительного кодирования больше заранее назначенной скорости кодирования, то выполняется стадия S208, а если скорость предварительного кодирования меньше заранее назначенной скорости кодирования, то выполняется стадия S209.
[0057] Например, в случае, когда разность скоростей между скоростью предварительного кодирования и заранее назначенной скоростью кодирования превышает величину заранее настроенного диапазона изменений скорости передачи, то имеются два случая: 1) скорость предварительного кодирования больше заранее назначенной скорости кодирования; и 2) скорость предварительного кодирования меньше заранее назначенной скорости кодирования. В разных случаях применяются различные методы регулировки параметра квантования. Таким образом, в случае, когда определено, что разность скоростей между скоростью предварительного кодирования и заранее назначенной скоростью кодирования превышает величину заранее настроенного диапазона изменений скорости передачи, то необходимо также дополнительно определить, превышает ли скорость предварительного кодирования заранее назначенную скорость кодирования, для того чтобы реализовать соответствующий метод регулировки параметра квантования для текущего подмножества макроблоков с целью обеспечения точности кодирования текущего подмножества макроблоков в текущем видеокадре.
[0058] На стадии S208 целевой параметр квантования для кодирования текущего подмножества макроблоков в предыдущем видеокадре получается с помощью увеличения фактического параметра квантования для кодирования текущего подмножества макроблоков в предыдущем видеокадре.
[0059] Например, в случае, когда определено, что скорость предварительного кодирования больше заранее назначенной скорости кодирования, то это означает, что скорость предварительного кодирования превышает заранее настроенный диапазон изменений скорости передачи по сравнению с заранее назначенной скоростью передачи, и нельзя выполнить требование о передаче видеоданных без задержек при текущей ширине полосы пропускания сети, и скорость предварительного кодирования предсказывается на основании фактической ситуации кодирования в предыдущем видеокадре. Таким образом, с помощью анализа разности скоростей между скоростью предварительного кодирования и заранее назначенной скоростью кодирования, на основании отношения, связанного с разностью скоростей, увеличивается фактический параметр квантования для кодирования текущего подмножества макроблоков в предыдущем видеокадре, для того чтобы получить целевой параметр квантования для кодирования текущего подмножества макроблоков в текущем видеокадре. В таком случае, увеличение параметра квантования для кодирования может снизить пространственную детализацию кодирования текущего подмножества макроблоков, так как скорость предварительного кодирования снижена, чтобы стать ближе к заранее назначенной скорости кодирования, тем самым обеспечивается стабильность качества кодирования видеоданных при обеспечении выполнения требования выполнения передачи видеоданных без задержек при текущей ширине полосы пропускания сети.
[0060] На стадии S209 целевой параметр квантования для кодирования текущего подмножества макроблоков в предыдущем видеокадре получается с помощью уменьшения фактического параметра квантования для кодирования текущего подмножества макроблоков в предыдущем видеокадре.
[0061] Например, в случае, когда определено, что скорость предварительного кодирования меньше заранее назначенной скорости кодирования, то это означает, что скорость предварительного кодирования находится внутри заранее настроенного диапазона изменений скорости передачи по сравнению с заранее назначенной скоростью передачи, и нельзя выполнить требование о передаче видеоданных без задержек при текущей ширине полосы пропускания сети, и скорость предварительного кодирования предсказывается на основании фактической ситуации кодирования в предыдущем видеокадре. Таким образом, с помощью анализа разности скоростей между скоростью предварительного кодирования и заранее назначенной скоростью кодирования, на основании отношения, связанного с разностью скоростей, уменьшается фактический параметр квантования для кодирования текущего подмножества макроблоков в предыдущем видеокадре, для того чтобы получить целевой параметр квантования для кодирования текущего подмножества макроблоков в текущем видеокадре. В таком случае, уменьшение параметра квантования для кодирования увеличивает объем пространственных деталей кодирования текущего подмножества макроблоков, так как скорость предварительного кодирования увеличена, чтобы стать ближе к заранее назначенной скорости кодирования, тем самым обеспечивается стабильность качества кодирования видеоданных при обеспечении выполнения требования о передаче видеоданных без задержек при текущей ширине полосы пропускания сети.
[0062] На стадии S210 каждый макроблок текущего подмножества макроблоков последовательно кодируется с помощью целевого параметра квантования для кодирования.
[0063] Согласно варианту осуществления, в случае, когда получен целевой параметр квантования для кодирования текущего подмножества макроблоков в текущем видеокадре, целевой параметр квантования для кодирования непосредственно используется для последовательного кодирования каждого макроблока в текущем подмножестве макроблоков, затем вычисляется целевой параметр квантования для кодирования следующего подмножества макроблоков в текущем видеокадре, и этот процесс последовательно повторяется, пока не будет завершено кодирование каждого подмножества макроблоков в текущем видеокадре, для того, чтобы реализовать точное кодирование текущего видеокадра и продолжить кодирование следующего видеокадра.
[0064] На стадии S211 после завершения кодирования каждого подмножества макроблоков в текущем видеокадре, на основании фактической скорости кодирования каждого подмножества макроблоков в текущем видеокадре и фактической скорости кодирования текущего видеокадра вычисляется фактический весовой множитель кодирования каждого подмножества макроблоков в текущем видеокадре.
[0065] Например, в случае, когда завершено кодирование каждого подмножества макроблоков в текущем видеокадре, то есть завершено кодирование текущего видеокадра, для упрощения точного кодирования каждого подмножества макроблоков в следующем видеокадре необходимо вычислить фактический весовой множитель кодирования каждого подмножества макроблоков в текущем видеокадре. Сначала на основании фактической ситуации кодирования каждого подмножества макроблоков в текущем видеокадре вычисляются фактическая скорость кодирования каждого подмножества макроблоков в текущем видеокадре и общая фактическая скорость кодирования текущего видеокадра. Затем определяется отношение фактической скорости кодирования каждого подмножества макроблоков к общей фактической скорости кодирования текущего видеокадра, и оно используется в качестве фактического весового множителя кодирования подмножества макроблоков в текущем видеокадре.
[0066] Например, согласно варианту осуществления, формула предсказания фактического весового множителя кодирования каждого подмножества макроблоков в текущем видеокадре имеет вид: где curweight - это фактический весовой множитель кодирования каждого подмножества макроблоков, curbits - это фактическая скорость кодирования каждого подмножества макроблоков в текущем видеокадре, a framecize - это фактическая скорость кодирования текущего видеокадра.
[0067] Что касается технического решения согласно варианту осуществления, скорость предварительного кодирования текущего подмножества макроблоков текущего кодируемого видеокадра предсказывается с использованием фактического весового множителя кодирования каждого подмножества макроблоков текущего видеокадра в предыдущем видеокадре, и фактической скорости кодирования каждого закодированного подмножества макроблоков в текущем видеокадре. Фактический параметр квантования для кодирования текущего подмножества макроблоков в предыдущем видеокадре регулируется с помощью анализа разности скоростей между скоростью предварительного кодирования и заранее назначенной скоростью кодирования текущего видеокадра при текущей ширине полосы пропускания сети, для того, чтобы получить целевой параметр квантования для кодирования для текущего подмножества макроблоков в текущем видеокадре и реализовать точное кодирование текущего видеокадра без вычисления затрат на кодирование каждого кодируемого блока при каждой глубине рекурсии с помощью анализа сложности изображения, что существенно снижает затраты на кодирование и сложность кодирования в процессе кодирования видеоданных, и улучшает эффективность кодирования видеоданных. Соответствующая регулировка выполняется на основании текущей ширины полосы пропускания сети с помощью прямого использования фактического режима кодирования каждого подмножества макроблоков в предыдущем видеокадре, для того, чтобы выполнить выбор режима кодирования и отрегулировать его для текущего видеокадра с помощью использования режима кодирования предыдущего видеокадра в условиях изменения текущей ширины пропускания сети, и улучшить стабильность качества кодирования видеоданных в результате обеспечения передачи видеоданных без задержек при изменениях ширины полосы пропускания сети.
[0068] На фиг.3А показана блок-схема алгоритма способа для кодирования видеоданных согласно еще одному другому варианту осуществления настоящего раскрытия. На фиг.3В показана упрощенная схема процесса кодирования видеоданных согласно еще одному другому варианту осуществления настоящего раскрытия. Этот вариант осуществления является усовершенствованием описанного выше варианта осуществления. Как показано на фиг.3А, для этого варианта осуществления приведено подробное описание конкретного процесса реализации стратегии потери кадра в процессе кодирования видео.
[0069] Например, как показано на фиг.3А, в варианте осуществления способа предусмотрены следующие стадии.
[0070] На стадии S310 на основании заранее назначенной скорости передачи текущего видеокадра при текущей ширине полосы пропускания сети и нижнего предела скорости кодирования ассоциированных видеокадров оценивается объем предварительного буфера видео при текущей ширине полосы пропускания сети.
[0071] Например, требование обеспечения передачи видеоданных без задержек при текущей ширине полосы пропускания сети не выполняется в случае, когда каждый видеокадр кодируется и передается и, следовательно, с учетом того, что видеоизображения в соседних кадрах приблизительно одинаковые, согласно варианту осуществления настроен механизм потери кадра для соблюдения требования обеспечения передачи видеоданных без задержек при текущей ширине полосы пропускания сети, то есть в случае нарушения требования обеспечения передачи видеоданных без задержек при текущей ширине полосы пропускания сети, кодирование некоторого видеокадра надлежащим образом отменяется для устранения затруднений при передаче видеоданных при текущей ширине полосы пропускания сети.
[0072] Согласно варианту осуществления, виртуальный буфер видеоданных заранее настроен с целью точного анализа, может ли кодирование видеоданных удовлетворить требование обеспечения передачи видеоданных без задержек при текущей ширине полосы пропускания сети, при этом видеокадр, который закодирован, но не был успешно передан, запоминается в виртуальном буфере видеоданных, и в это время определяется полный объем виртуального буфера видеоданных для анализа заранее назначенной скорости передачи, которая применяется при текущей ширине полосы пропускания сети и назначена для текущего видеокадра с учетом наличия виртуального буфера видеоданных. Так как виртуальный буфер видеоданных при передаче текущего видеокадра при текущей ширине полосы пропускания сети хранит в себе некоторое количество последовательных ассоциированных видеокадров, также необходимо учесть наличие последовательных ассоциированных видеокадров, когда требуется, чтобы скорость кодирования текущего видеокадра удовлетворяла требованию обеспечения передачи видеоданных без задержек при текущей ширине полосы пропускания сети. Следует отметить, что согласно варианту осуществления, ассоциированными видеокадрами являются восемь последовательных кадров после текущего видеокадра, и количество ассоциированных видеокадров ничем не ограничено.
[0073] Таким образом, согласно варианту осуществления, можно определить скорость кодирования в реальном времени в виртуальном буфере видеоданных для текущего видеокадра и ассоциированных видеокадров с помощью анализа заранее назначенной скорости передачи текущего видеокадра при текущей ширине полосы пропускания сети и нижнего предела скорости кодирования ассоциированных видеокадров. Анализируется скорость передачи видеоданных в виртуальном буфере видеоданных при текущей ширине полосы пропускания сети, и емкость буфера во время передачи видеоданных при текущей ширине полосы пропускания сети оценивается на основании текущей фактической степени заполнения виртуального буфера видеоданных совместно с разностью между скоростью кодирования в реальном времени и скоростью передачи в реальном времени.
[0074] Например, с целью улучшения точности оценки объема предварительного буфера видеоданных, как показано на фиг.3В, оценка объема предварительного буфера во время передачи видеоданных при текущей ширине полосы пропускания сети, которая основана на заранее назначенной скорости передачи текущего видеокадра и на нижнем пределе скорости кодирования ассоциированных видеокадров согласно варианту осуществления, предусматривает следующие стадии: получение заранее назначенной скорости передачи текущего видеокадра и скорости передачи во время передачи видеоданных при текущей ширине полосы пропускания сети с помощью регулировки текущей ширины полосы пропускания сети на основании фактического объема буфера видеоданных, емкости буфера и коэффициента свободного объема буфера после фактического кодирования предыдущего видеокадра; и получение объема предварительного буфера видеоданных во время передачи видеоданных при текущей ширине полосы пропускания сети с помощью регулировки фактического объема буфера видеоданных благодаря разности скоростей между заранее назначенной скоростью передачи текущего видеокадра и скоростью передачи, а также разности скоростей между нижним пределом скорости кодирования ассоциированных видеокадров и скоростью передачи.
[0075] В случае, когда закодирован предыдущий видеокадр, фактический объем виртуального буфера видеоданных после фактического кодирования предыдущего видеокадра вычисляется на основании фактической ситуации с буфером, и затем с помощью анализа отношения фактического объема буфера видеоданных к емкости виртуального буфера видеоданных определяется объем занятого пространства в виртуальном буфере видеоданных. Так как объем занятого пространства в виртуальном буфере видеоданных слишком большой, возникают некоторые трудности при передаче и кодировании видеоданных при текущей ширине полосы пропускания сети. Чем больше время ожидания в виртуальном буфере видеоданных, тем проще выполняется передача и кодирование видеоданных при текущей ширине полосы пропускания сети. Согласно варианту осуществления, коэффициент свободного объема буфера настроен для устранения затруднений при передаче и кодировании видеоданных при текущей ширине полосы пропускания сети. Скорость передачи при текущей ширине полосы пропускания сети для текущего видеокадра при текущей частоте кадров соответственно регулируется с учетом затруднений, создаваемых занятым объемом в буфере, и устранения затруднений, создаваемых коэффициентом свободного объема буфера, для того чтобы получить заранее назначенную скорость передачи текущего видеокадра и скорость передачи видеоданных при текущей ширине полосы пропускания сети. Заранее назначенная скорость передачи и скорость передачи связаны с текущей шириной полосы пропускания сети, они вычисляются по следующей формуле:
где sendbits - это скорость передачи видеоданных при текущей ширине полосы пропускания сети, framebits - это заранее назначенная скорость передачи текущего видеокадра, bitwidth - это текущая ширина полосы пропускания сети, fps - это текущая частота кадров, 1.05 - это регулировочный множитель, возникающий при свободном виртуальном буфере видеоданных, 0.2 - это множитель быстрого сжатия, возникающий при заполненном виртуальном видеоданных, bufferfill - это фактический объем буфера после фактического buffersize кодирования предыдущего видеокадра, buffersize - это емкость буфера, а const_zero_factor - это коэффициент свободного объема буфера.
[0076] Например, в случае, когда вычислены заранее назначенная скорость передачи текущего видеокадра и скорость передачи видеоданных при текущей ширине полосы пропускания сети, динамическое изменение скорости в виртуальном буфере видеоданных определяется с помощью анализа разности скоростей между заранее назначенной скоростью передачи текущего видеокадра и скоростью передачи, а также разности скоростей между нижним пределом скорости кодирования ассоциированных видеокадров, а затем текущий фактический объем буфера видеоданных регулируется на основании динамического изменения скорости, для того чтобы получить объем предварительного буфера видеоданных во время передачи видео при текущей ширине полосы пропускания сети. Например, формула вычисления объема предварительного буфера видеоданных может иметь вид:
buffer. где - это объем предварительного буфера видеоданных во время передачи видеоданных при текущей ширине полосы пропускания сети, buffer - это фактический объем буфера видеоданных, framebits - это заранее назначенная скорость передачи текущего видеокадра, sendbits - это скорость передачи видеоданных при текущей ширине полосы пропускания сети, a curframebitsn - это нижний предел скорости кодирования n-ого кадра из ассоциированных видеокадров.
[0077] Следует отметить, что согласно варианту осуществления, для обеспечения точности кодирования текущего видеокадра нижний предел скорости кодирования видеокадра также анализируется, чтобы скорость кодирования была не меньше нижнего предела скорости кодирования. Следовательно, в случае, когда заранее назначенная скорость меньше нижнего предела скорости кодирования текущего видеокадра, необходимо обновить заранее назначенную скорость, чтобы она стала нижним пределом скорости кодирования текущего видеокадра, для того чтобы использовать нижний предел скорости кодирования текущего видеокадра для выполнения анализа скорости текущего видеокадра с целью улучшения точности кодирования текущего видеокадра.
[0078] На стадии S320 определяется, не превышает ли объем предварительного буфера видеоданных заранее настроенное пороговое значение для кодирования, и если объем предварительного буфера видеоданных превышает заранее настроенное пороговое значение для кодирования, то выполняется стадия S330, а если объем предварительного буфера видеоданных не превышает заранее настроенное пороговое значение для кодирования, то выполняется стадия S340.
[0079] Например, для выполнения точного анализа, может ли текущая ширина полосы пропускания сети поддержать кодирование текущего видеокадра, то есть, может ли кодирование текущего видеокадра создать затруднения для передачи видеоданных при текущей ширине полосы пропускания сети, согласно варианту осуществления, задается настроенное пороговое значение для кодирования. В случае, если объем предварительного буфера видеоданных после анализа кодирования текущего видеокадра превышает заранее настроенное пороговое значение для кодирования, то это указывает, что создаются затруднения для передачи видеоданных при текущей ширине полосы пропускания сети. Согласно варианту осуществления, заранее настроенное пороговое значение для кодирования задается как 0,1*buffersize, где buffersize - это емкость буфера.
[0080] На стадии S330 исключается текущий видеокадр.
[0081] Например, в случае, если объем предварительного буфера видеоданных превышает заранее настроенное пороговое значение для кодирования, текущий видеокадр не кодируется, а исключается, чтобы устранить затруднения для передачи видеоданных при текущей ширине полосы пропускания сети. Однако в случае, если объем предварительного буфера видеоданных не превышает заранее настроенное пороговое значение для кодирования, то это указывает, что кодирование текущего видеокадра не создает затруднений для передачи видеоданных при текущей ширине полосы пропускания сети, и затем для реализации точного кодирования текущего видеокадра необходимо точно оценить целевое значение параметра квантования для кодирования для каждого подмножества макроблоков в текущем видеокадре.
[0082] На стадии S340 выполняется предсказание скорости предварительного кодирования текущего подмножества макроблоков после кодирования текущего подмножества макроблоков в текущем видеокадре, на основании фактического весового множителя кодирования каждого подмножества макроблоков текущего видеокадра в предыдущем видеокадре, и фактической скорости кодирования каждого подмножества закодированных макроблоков в текущем видеокадре.
[0083] На стадии S350 выполняется получение целевого параметра квантования для кодирования текущего подмножества макроблоков в текущем видеокадре с помощью регулировки фактического параметра квантования для кодирования текущего подмножества макроблоков в предыдущем видеокадре, на основании разности скоростей кодирования между скоростью предварительного кодирования и заранее назначенной скоростью кодирования текущего видеокадра при текущей ширине полосы пропускания сети.
[0084] На стадии S360 соответствующий фактический объем буфера видеоданных обновляется на основании фактического объема кодирования текущего видеокадра.
[0085] Например, в случае если кодирование текущего видеокадра выполнено, с целью обеспечения точного анализа объема предварительного буфера видеоданных для кодирования следующего видеокадра, согласно варианту осуществления, анализируется фактический объем кодирования текущего видеокадра, и затем текущий фактический объем видеоданных обновляется с учетом фактической ситуации с передачей и фактического объема кодирования, для того чтобы улучшить анализ кодирования следующего видеокадра.
[0086] Согласно техническому решению варианта осуществления, перед кодированием текущего видео кадра сначала с помощью оценки объема предварительного буфера видеоданных во время передачи видео данных при текущей ширине полосы пропускания сети определяется, будут ли возникать затруднения для передачи при текущей ширине полосы пропускания сети, для того чтобы настроить соответствующий механизм потери кадра с целью улучшения точности и эффективности кодирования видеоданных при условии обеспечения соблюдения требования о передаче видеоданных без задержек при текущей ширине полосы пропускания сети.
[0087] На фиг.4 показана упрощенная блок-схема устройства для кодирования видеоданных согласно некоторым вариантам осуществления настоящего раскрытия. Как показано на фиг.4, устройство включает в себя:
[0088] модуль 410 предсказания скорости кодирования, выполненный с возможностью предсказывать скорость предварительного кодирования текущего подмножества макроблоков после кодирования текущего подмножества макроблоков в текущем видеокадре, на основании фактического весового множителя кодирования каждого текущего подмножества макроблоков текущего видеокадра в предыдущем видеокадре, и фактической скорости кодирования каждого закодированного подмножества макроблоков в текущем видеокадре; и
[0089] модуль 420 квантования для кодирования, выполненный с возможностью получать целевой параметр квантования для кодирования текущего подмножества макроблоков в текущем видеокадре с помощью регулировки фактического параметра квантования для кодирования текущего подмножества макроблоков в предыдущем видеокадре, на основании разности скоростей кодирования между скоростью предварительного кодирования и заранее назначенной скоростью кодирования текущего видеокадра при текущей ширине полосы пропускания сети.
[0090] Согласно техническому решению варианта осуществления, так как текущий видеокадр кодируется только после кодирования предыдущего видеокадра, и некоторое количество подмножеств макроблоков в текущем видеокадре также кодируется последовательно, каждое подмножество макроблоков в текущем видеокадре имеет режим кодирования, соответствующий предыдущему видеокадру. В результате кодирования текущего подмножества макроблоков в текущем видеокадре в этом текущем видеокадре имеются закодированные подмножества макроблоков и незакодированные подмножества макроблоков. Скорость предварительного кодирования текущего подмножества макроблоков текущего кодируемого видеокадра предсказывается с использованием фактического весового множителя кодирования каждого подмножества макроблоков текущего видеокадра в предыдущем видеокадре и фактической скорости кодирования каждого закодированного подмножества макроблоков в текущем видеокадре. Фактический параметр квантования для кодирования текущего подмножества макроблоков в предыдущем видеокадре регулируется с помощью анализа разности скоростей между скоростью предварительного кодирования и заранее назначенной скоростью кодирования текущего видеокадра при текущей ширине полосы пропускания сети, для того, чтобы получить целевой параметр квантования для кодирования для текущего подмножества макроблоков в текущем видеокадре и реализовать точное кодирование текущего видеокадра без вычисления затрат на кодирование каждого кодируемого блока при каждой глубине рекурсии с помощью анализа сложности изображения, что существенно снижает затраты на кодирование и сложность кодирования в процессе кодирования видеоданных, и улучшает эффективность кодирования видеоданных. Соответствующая регулировка выполняется на основании текущей ширины полосы пропускания сети с помощью прямого использования фактического режима кодирования каждого подмножества макроблоков в предыдущем видеокадре, для того, чтобы выполнить выбор режима кодирования и отрегулировать его для текущего видеокадра с помощью использования режима кодирования предыдущего видеокадра в условиях изменения текущей ширины пропускания сети, и улучшить стабильность качества кодирования видеоданных в результате обеспечения передачи видеоданных без задержек при изменениях ширины полосы пропускания сети.
[0091] Устройство для кодирования видеоданных согласно варианту осуществления настоящего раскрытия реализует способ кодирования видеоданных согласно любому из описанных выше вариантов осуществления, и имеет соответствующие функции и преимущества.
[0092] На фиг.5 показана упрощенная блок-схема вычислительного устройства согласно некоторым вариантам осуществления настоящего раскрытия; Как показано на фиг.5, сервер содержит один или несколько процессоров 50 (например, на фиг.5 показан один процессор 50), запоминающее устройство 51 и устройство связи 52. Процессор 50, запоминающее устройство 51 и устройство связи 52 в вычислительном устройстве соединены друг с другом с помощью шины или другими средствами (например, на фиг.5 показана шина).
[0093] Согласно варианту осуществления, вычислительное устройство выполнено с возможностью реализовать способ кодирования видеоданных согласно любому из описанных выше вариантов осуществления, и имеет соответствующие функции и преимущества.
[0094] Согласно варианту осуществления настоящего раскрытия, дополнительно предложен машиночитаемый носитель данных, на машиночитаемом носителе данных хранится программа для компьютера, причем программа для компьютера, будучи загруженной в процессор и выполняемой им, заставляет процессор выполнить способ для кодирования видеоданных согласно любому из описанных выше вариантов осуществления. В способе предусмотрены следующие стадии:
[0095] предсказание скорости предварительного кодирования текущего подмножества макроблоков после кодирования текущего подмножества макроблоков в текущем видеокадре, на основании фактического весового множителя кодирования каждого подмножества макроблоков текущего видеокадра в предыдущем видеокадре, и фактической скорости кодирования каждого закодированного подмножества макроблоков в текущем видеокадре; и
[0096] получение целевого параметра квантования для кодирования текущего подмножества макроблоков в текущем видеокадре с помощью регулировки фактического параметра квантования для кодирования текущего подмножества макроблоков в предыдущем видеокадре, на основании разности скоростей кодирования между скоростью предварительного кодирования и заранее назначенной скоростью кодирования текущего видеокадра при текущей ширине полосы пропускания сети.
[0097] Согласно некоторым вариантам осуществления настоящего раскрытия, хранящиеся на носителе данных выполняемые компьютером инструкции не ограничены выполнением вышеупомянутого способа, и также выполняют сопутствующие операции, относящиеся к способу для кодирования видео согласно любому варианту осуществления настоящего раскрытия.
[0098] С помощью описанных выше вариантов осуществления специалисты в этой области техники могут четко понять, что настоящее раскрытие может быть реализовано с помощью программного обеспечения и необходимой общей аппаратной платформы, и, конечно, его можно реализовать аппаратными средствами. На основании такого понимания техническое решение настоящего раскрытия, вносящее существенный или частичный вклад в известный уровень технических решений, может быть реализовано в виде программного продукта. Программный продукт для компьютера может храниться на машиночитаемом носителе данных, например, на гибкой дискете, в постоянном запоминающем устройстве (ПЗУ), в оперативном запоминающем устройстве (ОЗУ), во флеш-памяти, на жестком диске или на оптическом диске компьютера, и может содержать в себе некоторое количество инструкций, которые используются для предоставления вычислительному устройству (например, персональному компьютеру, серверу или сетевому устройству) возможности выполнять способы согласно вариантам осуществления настоящего раскрытия.
[0099] Следует отметить, что согласно варианту осуществления вышеупомянутого устройства для кодирования видео, включенные в устройство для кодирования видео блоки и модули сгруппированы только согласно функциональной логике, но они не ограничены вышеупомянутым разделением, и все, что требуется от разделения, заключается только в реализации соответствующих функций. Кроме того, конкретные названия многофункциональных блоков указаны только для удобного различения их друг от друга, и они не предназначены для ограничения объема правовой охраны настоящего раскрытия. Машиночитаемый носитель данных может быть энергонезависимым машиночитаемым носителем данных.

Claims (36)

1. Способ кодирования видео, предусматривающий стадии:
предсказание скорости предварительного кодирования текущего подмножества макроблоков после кодирования текущего подмножества макроблоков в текущем видеокадре, на основании фактического весового множителя кодирования каждого подмножества макроблоков текущего видеокадра в предыдущем видеокадре, и фактической скорости кодирования каждого закодированного подмножества макроблоков в текущем видеокадре, причем видеокадр содержит некоторое количество макроблоков, некоторое количество макроблоков сгруппировано в некоторое количество подмножеств макроблоков, и подмножества макроблоков содержат, по меньшей мере, одно закодированное подмножество макроблоков; и
получение целевого параметра квантования для кодирования текущего подмножества макроблоков в текущем видеокадре с помощью регулировки фактического параметра квантования для кодирования текущего подмножества макроблоков в предыдущем видеокадре, на основании разности скоростей кодирования между скоростью предварительного кодирования и заранее назначенной скоростью кодирования текущего видеокадра при текущей ширине полосы пропускания сети,
последовательное кодирование каждого макроблока текущего подмножества макроблоков с помощью целевого параметра квантования для кодирования.
2. Способ по п. 1, в котором подмножества макроблоков содержат незакодированное подмножество макроблоков, и предсказание скорости предварительного кодирования текущего подмножества макроблоков после кодирования текущего подмножества макроблоков в текущем видеокадре, на основании фактического весового множителя кодирования каждого подмножества макроблоков текущего видеокадра в предыдущем видеокадре и фактической скорости кодирования каждого подмножества закодированных макроблоков в текущем видеокадре, предусматривает стадии:
после определения, что в текущем видеокадре присутствует, по меньшей мере, одно закодированное подмножество макроблоков, вычисляются фактическая скорость кодирования каждого закодированного подмножества макроблоков в текущем видеокадре, и отношения весовых множителей незакодированных подмножеств макроблоков к весовым множителям, по меньшей мере, одного закодированного подмножества макроблоков в текущем видеокадре; и
после кодирования текущего подмножества макроблоков в текущем видеокадре определяется скорость предварительного кодирования текущего подмножества макроблоков с помощью оценки скоростей кодирования незакодированных подмножеств макроблоков в текущем видеокадре, на основании фактических скоростей кодирования и отношений весовых множителей.
3. Способ по п. 2, дополнительно предусматривающий стадию:
после определения, что в текущем видеокадре не присутствует закодированное подмножество макроблоков, фактический параметр квантования для кодирования текущего подмножества макроблоков в предыдущем видеокадре определяется в качестве целевого параметра квантования для кодирования текущего подмножества макроблоков в текущем видеокадре.
4. Способ по п. 1, в котором получение целевого параметра квантования для кодирования текущего подмножества макроблоков текущего видеокадра с помощью регулировки фактического параметра квантования для кодирования текущего подмножества макроблоков в предыдущем видеокадре, на основании разности скоростей кодирования между скоростью предварительного кодирования и заранее назначенной скоростью кодирования текущего видеокадра при текущей ширине полосы пропускания сети, предусматривает:
после определения, что разность скоростей между скоростью предварительного кодирования и заранее назначенной скоростью кодирования не превышает величину заранее настроенного диапазона изменений скорости передачи, определение фактического параметра квантования для кодирования текущего подмножества макроблоков в предыдущем видеокадре в качестве целевого параметра квантования для кодирования текущего подмножества макроблоков в текущем видеокадре;
после определения, что разность скоростей между скоростью предварительного кодирования и заранее назначенной скоростью кодирования превышает величину заранее настроенного диапазона изменений скорости передачи, и что скорость предварительного кодирования больше заранее назначенной скорости кодирования, получение фактического параметра квантования для кодирования текущего подмножества макроблоков в текущем видеокадре с помощью увеличения фактического параметра квантования для кодирования текущего подмножества макроблоков в предыдущем видеокадре; и
после определения, что разность скоростей между скоростью предварительного кодирования и заранее назначенной скоростью кодирования превышает величину заранее настроенного диапазона изменений скорости передачи, и что скорость предварительного кодирования меньше заранее назначенной скорости кодирования, получение фактического параметра квантования для кодирования текущего подмножества макроблоков в текущем видеокадре с помощью уменьшения фактического параметра квантования для кодирования текущего подмножества макроблоков в предыдущем видеокадре.
5. Способ по п. 1, в котором после последовательного кодирования макроблоков в текущем подмножестве макроблоков с помощью целевого параметра квантования для кодирования, в способе дополнительно предусмотрена стадия:
после определения, что кодирование каждого подмножества макроблоков в текущем видеокадре завершено, на основании фактической скорости кодирования каждого подмножества макроблоков в текущем видеокадре и фактической скорости кодирования текущего видеокадра вычисляется фактический весовой множитель кодирования каждого подмножества макроблоков в текущем видеокадре.
6. Способ по любому из пп. 1-5, в котором перед предсказанием скорости предварительного кодирования текущего подмножества макроблоков после кодирования текущего подмножества макроблоков в текущем видеокадре в способе дополнительно предусмотрена стадия:
оценка объема предварительного буфера видеоданных во время передачи видеоданных при текущей ширине полосы пропускания сети на основании заранее назначенной скорости передачи текущего видеокадра при текущей ширине полосы пропускания сети и нижнего предела скорости кодирования ассоциированных видеокадров, и кодирование текущего видеокадра при условии, что объем предварительного буфера видеоданных не превышает заранее настроенное пороговое значение для кодирования.
7. Способ по п. 6, в котором оценка объема предварительного буфера видеоданных во время передачи видеоданных при текущей ширине полосы пропускания сети на основании заранее назначенной скорости передачи текущего видеокадра при текущей ширине полосы пропускания сети и нижнего предела скорости кодирования ассоциированных видеокадров предусматривает следующие стадии:
получение заранее назначенной скорости передачи текущего видеокадра и скорости передачи во время передачи видеоданных при текущей ширине полосы пропускания сети с помощью регулировки текущей ширины полосы пропускания сети на основании фактического объема буфера видеоданных, емкости буфера и коэффициента свободного объема буфера после фактического кодирования предыдущего видеокадра; и
получение объема предварительного буфера видеоданных во время передачи видеоданных при текущей ширине полосы пропускания сети с помощью регулировки фактического объема буфера видеоданных на основании разности скоростей между заранее назначенной скоростью передачи текущего видеокадра и скоростью передачи, а также разности скоростей между нижним пределом скорости кодирования ассоциированных видеокадров и скоростью передачи.
8. Способ по п. 7, в котором после получения объема предварительного буфера видеоданных во время передачи видеоданных при текущей ширине полосы пропускания сети с помощью регулировки текущей ширины полосы пропускания сети на основании фактического объема буфера видеоданных, емкости буфера и коэффициента свободного объема буфера после фактического кодирования предыдущего видеокадра, в способе дополнительно предусмотрена стадия:
после определения, что заранее назначенная скорость кодирования меньше нижнего предела скорости кодирования текущего видеокадра, обновление заранее назначенной скорости кодирования до величины нижнего предела скорости кодирования текущего видеокадра.
9. Способ по п. 6, в котором после оценки объема предварительного буфера видеоданных во время передачи видеоданных при текущей ширине полосы пропускания сети, в способе дополнительно предусмотрена стадия:
после определения, что объем предварительного буфера видеоданных превышает заранее настроенное пороговое значение для кодирования, исключение текущего видеокадра.
10. Способ по п. 6, в котором после получения целевого параметра квантования для кодирования текущего подмножества макроблоков в текущем видеокадре в способе дополнительно предусмотрена стадия:
обновление фактического объема буфера видеоданных, соответствующего текущему видеокадру, на основании фактического объема кодирования текущего видеокадра после фактического кодирования.
11. Способ по любому из пп. 1-5, в котором подлежащее кодированию видео содержит некоторое количество видеокадров, и перед предсказанием скорости предварительного кодирования текущего подмножества макроблоков после кодирования текущего подмножества макроблоков в текущем видеокадре в способе дополнительно предусмотрена стадия:
оценка текущей ширины полосы пропускания сети, соответствующей каждому видеокадру в подлежащем кодированию видео на основании запроса на кодирование видеокадра.
12. Устройство кодирования видео, включающее в себя:
модуль предсказания скорости кодирования, выполненный с возможностью предсказывать скорость предварительного кодирования текущего подмножества макроблоков после кодирования текущего подмножества макроблоков в текущем видеокадре, на основании фактического весового множителя кодирования каждого текущего подмножества макроблоков текущего видеокадра в предыдущем видеокадре, и фактической скорости кодирования каждого закодированного подмножества макроблоков в текущем видеокадре; и
модуль квантования для кодирования, выполненный с возможностью получать целевой параметр квантования для кодирования текущего подмножества макроблоков в текущем видеокадре с помощью регулировки фактического параметра квантования для кодирования текущего подмножества макроблоков в предыдущем видеокадре, на основании разности скоростей кодирования между скоростью предварительного кодирования и заранее назначенной скоростью кодирования текущего видеокадра при текущей ширине полосы пропускания сети,
причем устройство выполнено с возможностью осуществлять последовательное кодирование каждого макроблока текущего подмножества макроблоков с помощью целевого параметра квантования для кодирования.
13. Вычислительное устройство для кодирования видео, включающее в себя: по меньшей мере, один процессор; и
запоминающее устройство, выполненное с возможностью хранить, по меньшей мере, одну программу,
причем, по меньшей мере, один процессор после загрузки и выполнения, по меньшей мере, одной программы заставлен выполнять способ кодирования видео, как определено согласно любому из пп. 1-11.
14. Энергонезависимый машиночитаемый носитель данных для кодирования видео, в котором в энергонезависимом машиночитаемом носителе данных хранится программа для компьютера, причем программа для компьютера, будучи загруженной в процессор и выполняемой им, заставляет процессор выполнять способ для кодирования видеоданных, как определено согласно любому из пп. 1-11.
RU2023114829A 2020-11-27 2021-11-08 Способ и устройство, вычислительное устройство и носитель данных для кодирования видео RU2818891C1 (ru)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011360060.6 2020-11-27

Publications (1)

Publication Number Publication Date
RU2818891C1 true RU2818891C1 (ru) 2024-05-07

Family

ID=

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070025441A1 (en) * 2005-07-28 2007-02-01 Nokia Corporation Method, module, device and system for rate control provision for video encoders capable of variable bit rate encoding
CN101795415B (zh) * 2010-04-22 2012-02-08 杭州华三通信技术有限公司 一种视频编码中的码率控制方法及其装置
RU2498523C2 (ru) * 2008-02-22 2013-11-10 Квэлкомм Инкорпорейтед Быстрое принятие решения о дельте параметра квантования макроблока
CN103841418B (zh) * 2012-11-22 2016-12-21 中国科学院声学研究所 一种3g网络中视频监控器码率控制的优化方法及系统
CN110049321A (zh) * 2018-01-16 2019-07-23 腾讯科技(深圳)有限公司 视频编码方法、装置、设备及存储介质
CN111200734A (zh) * 2018-11-19 2020-05-26 浙江宇视科技有限公司 视频编码方法及装置
CN111385576A (zh) * 2018-12-28 2020-07-07 北京字节跳动网络技术有限公司 视频编码方法、装置、移动终端及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070025441A1 (en) * 2005-07-28 2007-02-01 Nokia Corporation Method, module, device and system for rate control provision for video encoders capable of variable bit rate encoding
RU2498523C2 (ru) * 2008-02-22 2013-11-10 Квэлкомм Инкорпорейтед Быстрое принятие решения о дельте параметра квантования макроблока
CN101795415B (zh) * 2010-04-22 2012-02-08 杭州华三通信技术有限公司 一种视频编码中的码率控制方法及其装置
CN103841418B (zh) * 2012-11-22 2016-12-21 中国科学院声学研究所 一种3g网络中视频监控器码率控制的优化方法及系统
CN110049321A (zh) * 2018-01-16 2019-07-23 腾讯科技(深圳)有限公司 视频编码方法、装置、设备及存储介质
CN111200734A (zh) * 2018-11-19 2020-05-26 浙江宇视科技有限公司 视频编码方法及装置
CN111385576A (zh) * 2018-12-28 2020-07-07 北京字节跳动网络技术有限公司 视频编码方法、装置、移动终端及存储介质

Similar Documents

Publication Publication Date Title
US10298969B2 (en) Architecture and method for high performance on demand video transcoding
US10735740B2 (en) Bit rate control method and device
JP7012747B2 (ja) ビデオフレーム符号化方法、端末、および記憶媒体
WO2022111258A1 (zh) 视频编码的方法、装置、设备和存储介质
CN108012163B (zh) 视频编码的码率控制方法及装置
US20090274212A1 (en) Semiconductor Device Having Moving Image Transcoder and Transcoding Method Therefor
JP4358215B2 (ja) 動画像符号化装置及びその方法
JP2016526336A (ja) 適応ビットレートストリーミングのための適応量子化を用いて複数のビデオストリームをエンコードするシステムおよび方法
WO2021129007A1 (zh) 视频码率的确定方法、装置、计算机设备及存储介质
US11277619B2 (en) Rate control for video splicing applications
US20180184089A1 (en) Target bit allocation for video coding
US10536696B2 (en) Image encoding device and image encoding method
US20080013628A1 (en) Computation Scheduling and Allocation for Visual Communication
WO2021092821A1 (en) Adaptively encoding video frames using content and network analysis
CN111617466A (zh) 编码格式的确定方法、装置及云游戏的实现方法
RU2818891C1 (ru) Способ и устройство, вычислительное устройство и носитель данных для кодирования видео
CN112243129B (zh) 视频数据处理方法、装置、计算机设备及存储介质
US11825088B2 (en) Adaptively encoding video frames based on complexity
US11039132B2 (en) Code amount estimation device, code amount estimation method, and code amount estimation program
CN115190309B (zh) 视频帧处理方法、训练方法、装置、设备及存储介质
US20230196207A1 (en) Method and system for adaptively streaming artificial intelligence model file
CN118317089A (zh) 图像处理方法、系统、装置及存储介质
CN115037701A (zh) 视频处理方法、装置、服务器及介质
CN118590722A (zh) 基于多连接的流媒体传输方法、装置及电子设备
CN118573870A (zh) 一种视频编码方法、装置、设备以及存储介质