ПЕРЕКЛЮЧЕНИЕ МЕЖДУ РЕЖИМАМИ КОДИРОВАНИЯ КОЭФФИЦИЕНТОВ ДИСКРЕТНОГО КОСИНУСНОГО ПРЕОБРАЗОВАНИЯ
SWITCHING BETWEEN DISCRETE COSINE TRANSFORM COEFFICIENT CODING MODES

ОБЛАСТЬ ТЕХНИКИ
Настоящее изобретение относится к кодированию и декодированию цифровых видеосигналов и изображений. Более конкретно, настоящее изобретение относится к эффективному кодированию и декодированию коэффициентов преобразования в процессе кодирования видеосигналов и изображений.
ПРЕДПОСЫЛКИ ИЗОБРЕТЕНИЯ
Этот раздел предназначен для предоставления информации о предпосылках или контексте настоящего изобретения, изложенного в формуле изобретения. Представленное здесь описание может содержать концепции, которые могут быть реализованы, но не обязательно были рассмотрены или реализованы ранее. Таким образом, если не указано иное, рассмотренная в этом разделе информация не является описанием известного уровня техники в отношении описания и формулы изобретения, содержащихся в этой заявке, и не предполагается, что она относится к уровню техники вследствие включения в этот раздел.
Видеокодер преобразует входной видеосигнал в сжатое представление, пригодное для хранения и/или передачи. Видеодекодер распаковывает сжатое представление видеосигнала в форму, пригодную для просмотра. Обычно кодер отбрасывает некоторую информацию исходной видеопоследовательности, для того чтобы представить видеосигнал в более компактном виде, то есть с более низкой битовой скоростью.
Стандартные гибридные видеокодеки, соответствующие, например, стандартам ITU-T H.263 и Н.264, для кодирования видеоинформации используют две фазы. В первую фазу выполняется предсказание значений пикселей в определенной области изображения или "блоке" пикселей. Эти значения пикселей могут быть предсказаны, например, с помощью механизмов компенсации движения, которые включают процессы обнаружения и индикации области в одном из ранее кодированных видеокадров, которая наиболее точно соответствует кодируемому блоку. Альтернативно, значения пикселей могут быть предсказаны с помощью пространственных механизмов, которые включают использование значений пикселей вокруг блока для оценки значений пикселей внутри блока. Вторая фаза включает кодирование ошибки предсказания или остатка предсказания, то есть разности между предсказанным блоком пикселей и исходным блоком пикселей. Эта процедура обычно выполняется посредством преобразования разности значений пикселей с использованием заданного способа преобразования (например, дискретного косинусного преобразования (DCT, Discrete Cosine Transform) или его вариантов), квантования коэффициентов преобразования и энтропийного кодирования этих квантованных коэффициентов. Путем изменения точности процесса квантования кодер может управлять балансом между точностью представления пикселей (то есть качеством изображения) и размером результирующего закодированного видеопредставления (то есть размером файла или битовой скоростью передачи). Следует отметить, что при сжатии видеосигнала и/или изображения возможно осуществлять преобразование блоков фактического изображения и/или видеокадра без применения предсказания.
В способах энтропийного кодирования, таких как кодирование методом Хаффмана (Huffman), арифметическое кодирование, используются статистические вероятности значений символов, представляющих квантованные коэффициенты преобразования, для назначения более коротких кодовых слов более вероятным сигналам. Кроме того, для использования корреляции между коэффициентами преобразования могут быть энтропийно закодированы пары коэффициентов преобразования. Дополнительно, адаптивные способы энтропийного кодирования обычно позволяют достичь эффективного сжатия в широком диапазоне контента, связанного с видеосигналами и изображениями. Эффективное кодирование коэффициентов преобразования является важной составляющей кодеков кодирования видеосигналов и изображений для достижения более высоких характеристик процесса сжатия.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
В соответствии с одним из вариантов осуществления настоящего изобретения кодируется позиция и значение последнего ненулевого коэффициента блока, после чего кодируется следующая группа коэффициентов, например пара (длина серии, уровень). Если накопленная сумма амплитуд (за исключением последнего коэффициента), которые больше единицы, меньше заранее заданного постоянного значения и позиция последнего ненулевого коэффициента в блоке меньше определенного порогового значения местоположения, то кодируется следующая пара. Эти процессы повторяются до тех пор, пока накопленная сумма амплитуд (за исключением последнего коэффициента), которые больше единицы, станет не меньше указанного заранее заданного постоянного значения и/или позиция последнего ненулевого коэффициента в блоке станет не меньше определенного порогового значения местоположения. После этого оставшиеся коэффициенты кодируются в режиме кодирования уровней.
В соответствии с другим вариантом осуществления настоящего изобретения кодируется позиция и значение последнего ненулевого коэффициента блока, после чего кодируется следующая группа коэффициентов, например пара (длина серии, уровень). Если амплитуда текущего уровня больше единицы, в битовом потоке указывается, должен ли кодер продолжать кодирование в режиме кодирования серий или ему следует переключиться в режим кодирования уровней. Если указан режим кодирования серий, то процесс продолжается и кодируется следующая пара. В противном случае оставшиеся коэффициенты кодируются в режиме кодирования уровней.
Различные описываемые варианты осуществления настоящего изобретения улучшают предшествующие решения, связанные с кодированием коэффициентов преобразования, путем более точного определения позиции, в которой происходит переключение из одного режима кодирования в другой. Это, в свою очередь, повышает эффективность кодирования. Сигнализация позиции переключения также определенно повышает эффективность благодаря непосредственному уведомлению кодера о том, когда переключать режимы кодирования.
Эти и другие преимущества и признаки настоящего изобретения, совместно с организацией и способом его функционирования, станут понятны из последующего подробного описания, представленного совместно с прилагаемыми чертежами, при этом на нескольких описываемых ниже чертежах одинаковым элементам соответствуют одинаковые цифровые обозначения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Различные варианты осуществления настоящего изобретения описываются со ссылкой на прилагаемые чертежи, на которых:
на фиг.1 показана блок-схема обычного видеокодера;
на фиг.2 показана блок-схема обычного видеодекодера;
на фиг.3 показан пример порядка выполнения преобразования и кодирования коэффициентов;
на фиг.4 показан алгоритм, иллюстрирующий различные процессы, выполняемые для кодирования коэффициентов DCT в соответствии с одним из вариантов осуществления настоящего изобретения;
на фиг.5 показан алгоритм, иллюстрирующий различные процессы, выполняемые для кодирования коэффициентов DCT в соответствии с другим вариантом осуществления настоящего изобретения;
на фиг.6 показано представление общей системы мультимедийной связи, подходящей для использования в соответствии с различными вариантами осуществления настоящего изобретения;
на фиг.7 показан общий вид электронного устройства, которое может использоваться совместно с различными вариантами осуществления настоящего изобретения; и
на фиг.8 показано схематическое представление блоков, которые могут быть включены в электронное устройство, показанное на фиг.7.
ПОДРОБНОЕ ОПИСАНИЕ РАЗЛИЧНЫХ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯ
Различные варианты осуществления настоящего изобретения направлены на реализацию способа повышения эффективности энтропийного кодирования блока квантованных коэффициентов преобразования (например, коэффициентов DCT) при кодировании видеосигнала и/или изображений. Квантованные коэффициенты кодируются в двух отдельных режимах кодирования: в режиме кодирования серий (run mode) и в режиме кодирования уровней (level mode). Также предлагаются "правила" переключения между этими двумя режимами, при этом различные варианты осуществления настоящего изобретения реализуются путем предоставления энтропийному кодеру возможности адаптивно принимать решение, когда осуществлять переключение между двумя режимами кодирования, на основе контекстной информации и правил и/или посредством явной сигнализации позиции переключения (например, явного информирования энтропийного кодера о том, следует ли ему осуществлять переключение режимов кодирования).
На фиг.1 показана блок-схема обычного видеокодера. Более конкретно, на фиг.1 показано, как для изображения 100, которое необходимо кодировать, выполняется предсказание 102 пикселей и кодирование 103 ошибки предсказания. Для выполнения предсказания 102 пикселей к изображению 100 применяется либо процесс 106 межкадрового предсказания, либо процесс 108 внутрикадрового предсказания, либо оба этих процесса. Селектор 110 режима для получения предсказанного блока 112 выбирает либо процесс межкадрового предсказания, либо процесс внутрикадрового предсказания. Предсказанный блок 112 затем вычитается из исходного изображения 100, в результате чего вычисляется ошибка предсказания, также называемая остатком 120 предсказания. В случае внутрикадрового предсказания 108 ранее восстановленные части одного и того же изображения 100, сохраненные в памяти 114 кадров, используются для предсказания текущего блока. При межкадровом предсказании 106 для предсказания текущего блока используются ранее закодированные изображения, сохраненные в памяти 114 кадров. При кодировании 103 ошибки предсказания ошибка 120 предсказания/остаток предсказания вначале преобразуется с помощью операции 122 преобразования. Результирующие коэффициенты преобразования затем квантуются в блоке 124.
Квантованные коэффициенты преобразования из блока 124 энтропийно кодируются в блоке 126. То есть данные, описывающие ошибку предсказания и предсказанное представление блока 112 (например, векторы движения, информацию о режиме и квантованные коэффициенты преобразования), передают в блок 126 энтропийного кодирования. Кодер обычно содержит блок 130 обратного преобразования и блок 128 обратного квантования, позволяющие локально получить восстановленную версию закодированного изображения. Вначале в блоке 128 выполняется обратное квантование квантованных коэффициентов, а затем применяется операция 130 обратного преобразования для получения закодированной, а затем декодированной версии ошибки предсказания. Этот результат затем добавляется к предсказанию 112 для получения закодированной и декодированной версии блока изображения. Затем к восстановленному блоку изображения может применяться операция 116 фильтрации для создания окончательно восстановленного изображения 140, которое передается в память 114 опорных кадров. Фильтрация может выполняться один раз для всех обрабатываемых блоков изображения.
На фиг.2 показана блок-схема обычного видеодекодера. Как показано на фиг.2, после энтропийного декодирования 200 выполняются процессы декодирования 202 ошибки предсказания и предсказания 204 пикселей. В процессе декодирования 202 ошибки предсказания используется обратное квантование 206 и обратное преобразование 208, в результате чего, в конечном счете, восстанавливается сигнал 210 ошибки предсказания. Для предсказания 204 пикселей в блоке 212 выполняется или внутрикадровое, или межкадровое предсказание для создания предсказанного представления блока 214 изображения. Предсказанное представление блока 214 изображения используется совместно с восстановленным сигналом 210 ошибки предсказания для создания предварительно восстановленного изображения 216, которое, в свою очередь, может использоваться для внутрикадрового или межкадрового предсказания, выполняемого в блоке 212. Фильтрация 218 может применяться либо после восстановления каждого блока, либо один раз для всех обрабатываемых блоков. Отфильтрованное изображение может либо выводиться в виде окончательно восстановленного изображения 220, либо сохраняться в памяти 222 опорных кадров с целью последующего использования в процессе предсказания 212.
Декодер восстанавливает выходной видеосигнал путем применения механизмов предсказания, сходных с теми, которые используются кодером для формирования предсказанного представления блоков пикселей (с использованием информации о движении или пространственной информации, созданной кодером и сохраненной в сжатом виде). Кроме того, декодер использует декодирование ошибки предсказания (операцию, обратную кодированию ошибки предсказания, восстанавливающую квантованный сигнал ошибки предсказания в пространственной области пикселей). После применения процессов предсказания и декодирования ошибки предсказания декодер суммирует сигналы предсказания и ошибки предсказания (то есть значения пикселей) для формирования выходного видеокадра. Декодер (и кодер) может также выполнять дополнительные процессы фильтрации, для того чтобы повысить качество выходного видеосигнала перед выводом его для отображения и/или сохранением в качестве опорного сигнала предсказания для последующих кадров в видеопоследовательности.
В обычных видеокодеках информация о движении указывается векторами движения, связанными с каждым блоком изображения с компенсацией движения. Каждый из этих векторов движения представляет смещение блока изображения в изображении, которое должно быть кодировано (на стороне кодера) или декодировано (на стороне декодера), относительно исходного блока предсказания в одном из ранее закодированных или декодированных изображений. Для эффективного представления векторов движения эти векторы обычно кодируются дифференциально с учетом предсказанных векторов движения, специфичных для блока. В обычном видеокодеке предсказанные векторы движения создаются заранее заданным образом, например, путем вычисления средней величины кодированных или декодированных векторов движения смежных блоков.
На фиг.3 показан блок 300 коэффициентов преобразования размером 8×8. Коэффициенты преобразования блока размером 8×8 получают путем преобразования пикселей или значений остатков предсказания. На фиг.3 показан процесс зигзагообразного сканирования блока 300 коэффициентов преобразования размером 8×8. Процесс упорядочения коэффициентов преобразования может начинаться в верхнем левом углу блока (с коэффициентами с наименьшей частотой) и продолжаться, например, зигзагообразным способом до нижнего правого угла блока (с коэффициентами с наибольшей частотой). Двумерный массив коэффициентов может быть, таким образом, просканирован (следуя зигзагообразному образцу) для формирования одномерного массива. Эти коэффициенты могут быть затем закодированы в обратном порядке, например от последнего к первому, при этом последний коэффициент имеет значение индекса, равное 0. Следует отметить, что возможны другие типы преобразования, размер преобразования и/или порядок сканирования, а также способ чередования коэффициентов. После выполнения зигзагообразного сканирования каждый ненулевой коэффициент представлен парой (длина серии, уровень), в которой значение серии указывает количество последовательных нулевых значений, а значение уровня указывает значение ненулевого коэффициента.
В соответствии с различными вариантами осуществления предполагается, что в блоке имеется по меньшей мере один ненулевой коэффициент, который должен быть кодирован. Коэффициенты обычно кодируются в порядке от последнего коэффициента к первому, при этом вначале кодируются коэффициенты с большей частотой. Однако возможен и другой порядок кодирования. Если в любой точке во время процесса кодирования в блоке отсутствуют коэффициенты, которые должны быть кодированы, то при необходимости сигнализируется о достижении конца блока, и кодирование текущего блока завершается.
В одном из способов энтропийного кодирования задействовано адаптивное кодирование коэффициентов преобразования с использованием двух различных режимов. В первом режиме, называемом режимом "кодирования серий", коэффициенты кодируются в виде пар (длина серии, уровень). То есть сочетание "серия-уровень" обозначает длину серии нулей, за которой следует ненулевой уровень, при этом квантование коэффициентов преобразования обычно приводит к тому, что коэффициенты более высокого порядка квантуются в нулевое значение. Если амплитуда следующего ненулевого коэффициента больше 1, то кодек переключается в режим "кодирования уровней". В режиме кодирования уровней оставшиеся коэффициенты поочередно кодируются как отдельные значения, то есть в этом режиме не указываются значения длины серии.
Например, квантованные коэффициенты DCT блока размером 8×8 могут иметь следующие значения:
2
0
0
1
0
0
0
0
-2
1
0
0
0
0
0
0
0
0
0
-1
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Квантованные коэффициенты DCT упорядочивают в одномерную таблицу, как это показано на фиг.3, в виде следующего списка коэффициентов:
2 0 -2 0 1 0 1 0 0 1 0 1 0 0 0 0 0 -1 0 … 0
Упорядоченные коэффициенты кодируют в обратном порядке, начиная с последнего ненулевого коэффициента. Вначале кодируется позиция и значение (-1) последнего ненулевого коэффициента. Затем кодируются следующие коэффициенты в режиме кодирования серий, в результате чего формируется следующие последовательности закодированных пар (длина серии, уровень):
000001
(длина серии = 5, уровень = 1)
01
(длина серии = 1, уровень = 1)
001
(длина серии = 2, уровень = 1)
01
(длина серии = 1, уровень = 1)
0-2
(длина серии = 1, уровень = -2)
Поскольку амплитуда последнего закодированного коэффициента больше 1, кодер переключается в режим кодирования уровней. В режиме кодирования уровней оставшиеся коэффициенты (0 и 2) кодируются по очереди, после чего кодирование блока заканчивается.
Такая схема кодирования часто приводит к переключению в режим кодирования уровней даже в том случае, если бы предпочтительней было продолжать работу в режиме кодирования серий (например, количество битов, формируемых кодеком, было бы меньше в случае продолжения работы в режиме кодирования серий). Это происходит потому, что кодирование серий основано на информации о кодировании, связанной с сериями идентичных значений, а не с кодированием самих значений. Переключение между режимами может произойти в фиксированной позиции или в любой явно определенной точке.
В одном из вариантов осуществления изобретения кодируется позиция и значение последнего ненулевого коэффициента блока. Если амплитуда последнего коэффициента больше 1, то осуществляется переход в режим кодирования уровней. В противном случае кодируется следующая пара (длина серии, уровень). Если амплитуда текущего уровня равна 1, процесс кодирования возвращается к предыдущей операции и кодируется следующая пара. В завершение оставшиеся коэффициенты кодируют в режиме кодирования уровней.
На фиг.4 в соответствии с одним из вариантов осуществления настоящего изобретения показан другой пример способа кодирования, позволяющий добиться большей эффективности по сравнению с вышеописанным способом кодирования. В блоке 400 осуществляется запуск операции кодирования в соответствии с одним из вариантов осуществления настоящего изобретения. В блоке 410 кодируется позиция и значение последнего ненулевого коэффициента блока. Следует отметить, что эта конкретная операция кодирования последнего ненулевого коэффициента блока выполняется в режиме, отличном от режимов кодирования серий или уровней. В блоке 420 определяется, остались ли ненулевые коэффициенты, которые должны быть кодированы. Если коэффициенты, которые необходимо кодировать, отсутствуют, то в блоке 425 кодируется завершение (завершающая серия) или конец блока, и операция завершается в блоке 480. Если коэффициенты имеются, то в блоке 430 кодируется следующая пара (длина серии, уровень). В блоке 440 определяется, равна ли 1 амплитуда текущего уровня, если да, операция возвращается к блоку 420, и в блоке 430 кодируется следующая пара. Следует отметить, что в блоке 440 и в последующих процессах может использоваться минимальное пороговое значение амплитуды, отличное от "1". Если амплитуда текущего уровня не равна 1, то в блоке 450 определяется накопленная сумма амплитуд (за исключением амплитуды последнего коэффициента) для тех коэффициентов, амплитуда которых больше 1. В блоке 460 определяется, не меньше ли накопленная сумма амплитуд (за исключением амплитуды последнего коэффициента), которые больше 1, порогового значения L для накопленной суммы (например, 3), и не меньше ли позиция последнего ненулевого коэффициента в блоке, чем значение К, и если это так, то операция повторяется путем возврата к блоку 420 и кодирования следующей пары в блоке 430. Если в блоке 460 определяется, что накопленная сумма амплитуд (за исключением амплитуды последнего коэффициента), которые больше 1, не меньше порогового значения L для накопленной суммы и/или позиция последнего ненулевого коэффициента в блоке не меньше значения К, то оставшиеся коэффициенты кодируют в режиме кодирования уровней в блоке 470. После кодирования всех коэффициентов операция завершается в блоке 480. Следует отметить, что условию, проверяемому в блоке 460 (больше ли накопленная сумма амплитуд ранее закодированных ненулевых коэффициентов, чем минимальное пороговое значение амплитуды), может удовлетворять текущий уровень, амплитуда которого больше 2. Кроме того, это условие может удовлетворяться по меньшей мере в случае максимального количества появлений любого значения амплитуды одного из ранее закодированных ненулевых коэффициентов. Например, если имеются два коэффициента, амплитуда каждого из которых равна 2, то результирующая накопленная сумма амплитуд (за исключением последнего коэффициента), которые больше 1, превышает пороговое значение для накопленной суммы, равное 3. То есть в общем случае переключение между режимами кодирования может быть основано на позиции и накопленной сумме амплитуд или на позиции и появлениях амплитуд, причем максимальное количество появлений амплитуд задается индивидуально для каждого уровня амплитуды.
В различных вариантах осуществления настоящего изобретения используется множество коэффициентов для принятия решения о необходимости переключения между режимами кодирования серий и уровней. Кроме того, в различных вариантах осуществления настоящего изобретения позиция коэффициентов рассматривается как часть критерия переключения. Следует отметить, что значение 3 для порогового значения для накопленной суммы выбрано на основе эмпирических тестов. Однако могут использоваться другие значения, например, когда пороговое значение L для накопленной суммы выбирается таким образом, чтобы оно зависело от значения параметра квантования (QP, quantization parameter) для отражения изменяющейся статистики различных уровней качества. Таким же образом может изменяться пороговое значение К местоположения (например, на основе QP, используемого при кодировании блока, режима кодирования блока или изображения. Кроме того, хотя здесь описываются режимы кодирования серий и уровней, могут использоваться два любых режима кодирования.
Как описано выше, различные варианты осуществления настоящего изобретения позволяют адаптивно принимать решение о том, когда осуществлять переключение, например, из режима кодирования серий в режим кодирования уровней, на основе явного сигнала, указывающего, следует ли осуществлять переключение режимов. На фиг.5 показаны процессы, выполняемые в соответствии с другим вариантом осуществления настоящего изобретения, в котором явно сигнализируется позиция переключения путем передачи в битовом потоке синтаксического элемента, который указывает, должен ли кодер продолжать работу в режиме кодирования серий или переключиться в режим кодирования уровней. В блоке 500 осуществляется запуск операции кодирования. В блоке 510 кодируется позиция и значение последнего ненулевого коэффициента блока. Следует отметить, что эта конкретная операция кодирования последнего ненулевого коэффициента блока выполняется в режиме, отличном от режима кодирования серий или уровней. В блоке 520 определяется, остались ли ненулевые коэффициенты, которые должны быть закодированы. Если коэффициенты, которые необходимо кодировать, отсутствуют, то в блоке 525 алгоритма кодируется завершение (завершающая серия) или конец блока, и операция завершается в блоке 570. Если коэффициенты существуют, то в блоке 530 кодируется следующая группа, например пара (длина серии, уровень). В блоке 540 определяется, равна ли 1 амплитуда текущего уровня, если да, то операция возвращается к блоку 520, и в блоке 530 кодируется следующая пара. В блоке 540 и в последующих процессах может использоваться пороговое значение амплитуды, отличное от "1". Если амплитуда текущего уровня не равна 1, то в блоке 550 определяется, превышает ли 1 амплитуда текущего уровня. Если амплитуда текущего уровня больше 1, то в битовом потоке указывается, должен ли кодер продолжать работать в режиме кодирования серий или ему следует переключиться в режим кодирования уровней. Если указан режим кодирования серий, то операция возвращается к блоку 530, и кодируется следующая пара. В противном случае оставшиеся коэффициенты кодируют в режиме кодирования уровней в блоке 560. Если коэффициентов, которые необходимо кодировать, больше нет, операция завершается в блоке 570.
В соответствии с различными вариантами осуществления настоящего изобретения существуют различные способы кодирования индикации переключения в битовом потоке. Например, индикация может осуществляться с помощью одного бита, сохраняемого в битовом потоке. Альтернативно, индикация может объединяться с одним или более другими элементами кодирования.
Различные описываемые варианты осуществления настоящего изобретения улучшают предшествующие решения, связанные с кодированием коэффициентов преобразования, путем более точного задания позиции, в которой происходит переключение из одного режима кодирования в другой. Это, в свою очередь, повышает эффективность кодирования. Явная сигнализация позиции переключения также способствует повышению эффективности кодирования благодаря непосредственному уведомлению кодера о том, когда осуществлять переключение режимов кодирования.
На фиг.6 показано графическое представление общей системы мультимедийной связи, в рамках которой могут быть реализованы различные варианты осуществления настоящего изобретения. Как показано на фиг.6, источник 600 данных формирует исходный сигнал в аналоговом, несжатом цифровом или в сжатом цифровом формате, или с использованием любой комбинации этих форматов. Кодер 610 кодирует исходный сигнал, преобразуя его в закодированный битовый поток. Следует отметить, что битовый поток, которые необходимо декодировать, может приниматься непосредственно или опосредованно из удаленного устройства, расположенного в виртуальной сети или в сети любого другого типа. Кроме того, битовый поток может приниматься из локальной аппаратной или программной среды. Кодер 610 может выполнять кодирование медиаданных нескольких типов, например, звуковых сигналов, видеосигналов, либо для кодирования различных типов медиаданных исходного сигнала может потребоваться несколько кодеров 610. Кодер 610 может также воспринимать искусственно сформированные входные данные, например графику и текст, или формировать закодированные битовые потоки искусственно сформированных мультимедийных данных. Для простоты изложения далее рассматривается один закодированный битовый поток медиаданных одного типа. Однако следует отметить, что типичные услуги широковещательной передачи в реальном времени включают несколько потоков (обычно по меньшей мере один поток звуковых данных, видеоданных и текстовых субтитров). Следует также отметить, что система может включать множество кодеров, однако для простоты описания на фиг.6 показан только один кодер 610. Кроме того, следует также понимать, что, хотя в тексте и приведенных примерах может описываться процесс кодирования, специалисту в этой области техники очевидно, что те же концепции и принципы также применимы к соответствующему процессу декодирования, и наоборот.
Закодированный битовый поток медиаданных передается в память 620. Память 620 может включать устройства массовой памяти любого типа, предназначенные для хранения закодированного битового потока медиаданных. Формат закодированного битового потока медиаданных в памяти 620 может представлять собой элементарный автономный формат битового потока, либо один или более закодированных битовых потоков медиаданных могут быть инкапсулированы в файл контейнера. Некоторые системы работают в режиме реального времени, то есть, минуя память, передают закодированный битовый поток медиаданных из кодера 610 непосредственно в передатчик 630. Затем закодированный битовый поток медиаданных при необходимости пересылается в передатчик 630, также называемый сервером. Формат, используемый при передаче, может представлять собой элементарный автономный формат битового потока, формат пакетного потока, либо один или более закодированных битовых потоков медиаданных могут быть инкапсулированы в файл контейнера. Кодер 610, память 620 и сервер 630 могут располагаться в одном физическом устройстве или быть включены в разные устройства. Кодер 610 и сервер 630 могут работать с контентом в режиме реального времени, в котором обычно закодированный битовый поток медиаданных не сохраняется постоянно, а вместо этого буферизируется в течение короткого периода времени в кодере 610 контента и/или в сервере 630, для того чтобы сгладить отклонения в задержке при обработке, задержке при передаче и в битовой скорости передачи закодированного потока медиаданных.
Сервер 630 передает закодированный битовый поток медиданных с использованием стека протокола связи. Стек может включать, но не ограничивается перечисленным, транспортный протокол реального времени (RTP, Real-Time Transport Protocol), протокол дейтаграмм пользователя (UDP, User Datagram Protocol) и Интернет-протокол (IP, Internet Protocol). Если стек протокола связи ориентирован на передачу пакетных данных, то сервер 630 инкапсулирует в пакетах закодированный битовый поток медиаданных. Например, если используется протокол RTP, сервер 630 инкапсулирует в пакетах RTP закодированный битовый поток медиаданных согласно формату полезной нагрузки RTP. Обычно каждому типу медиаданных соответствует специальный формат полезной нагрузки RTP. Следует также отметить, что система может содержать несколько серверов 630, но для простоты далее в описании рассматривается только один сервер 630.
Сервер 630 может подключаться, или не подключаться, к шлюзу 640 через сеть связи. Шлюз 640 может выполнять различные функции, например, трансляцию потока пакетных данных в соответствии с одним из стеков протоколов связи в другой стек протоколов связи, объединение и разветвление потоков данных и обработку потока данных в соответствии с возможностями нисходящей линии связи и/или приемника, например, управление битовой скоростью передаваемого потока согласно предпочтительным условиям в нисходящей сети. Примеры шлюзов 640 включают устройства MCU, шлюзы между сетями видеотелефонии с коммутацией каналов и коммутацией пакетов, серверы с функцией полудуплексной связи в сотовой сети (РоС, Push-to-talk over Cellular), IP-инкапсуляторы в системах цифрового телевизионного вещания для портативных устройств (DVB-H, digital video broadcasting-handheld) или телевизионные абонентские приставки, которые в широковещательном режиме локально передают данные в домашние беспроводные сети. Если используется протокол RTP, шлюз 640 называется RTP-смесителем или RTP-транслятором и обычно функционирует в качестве конечной точки RTF-соединения.
Система содержит один или более приемников 650, которые обычно выполняют прием, демодуляцию и декапсулирование переданного сигнала, преобразуя его в закодированный битовый поток медиданных. Закодированный битовый поток медиаданных передается в запоминающее устройство 655. Запоминающее устройство 655 может включать массовую память любого типа, предназначенную для хранения закодированного битового потока медиаданных. Запоминающее устройство 655 может альтернативно или дополнительно содержать оперативную память, например память с произвольным доступом. Формат закодированного битового потока медиаданных в запоминающем устройстве 655 может представлять собой элементарный автономный формат битового потока, либо один или более закодированных битовых потоков медиаданных могут быть инкапсулированы в файл контейнера. Если имеются несколько закодированных битовых потоков медиаданных, таких как потоки звуковых и видеоданных, связанных друг с другом, обычно используется файл контейнера, и приемник 650 содержит (или подключается) генератор файла контейнера, который формирует файл контейнера из входных потоков. Некоторые системы работают в режиме реального времени, то есть, минуя запоминающее устройство 655, непосредственно передают закодированный битовый поток медиаданных из приемника 650 в декодер 660. В некоторых системах в запоминающем устройстве 655 хранится только самый последний фрагмент записанного потока, например последний 10-минутный фрагмент, в то время как любые записанные ранее данные удаляются из запоминающего устройства 655.
Закодированный битовый поток медиаданных передается из запоминающего устройства 655 в декодер 660. Если имеется несколько закодированных битовых потоков медиаданных, таких как потоки звуковых и видеоданных, связанных друг с другом и инкапсулированных в файле контейнера, для декапсуляции каждого из закодированных битовых потоков медиаданных из файла контейнера используется анализатор файлов (не показан на чертеже). Запоминающее устройство 655 или декодер 660 могут содержать анализатор файлов либо он подключается к запоминающему устройству 655 или декодеру 660.
Закодированный битовый поток медиаданных обычно далее обрабатывается декодером 660, который выводит один или более распакованных потоков медиаданных. В завершение устройство 670 рендеринга может воспроизводить распакованные потоки медиаданных с помощью, например, громкоговорителя или дисплея. Приемник 650, запоминающее устройство 655, декодер 660 и устройство 670 рендеринга могут располагаться в одном и том же физическом устройстве или могут быть включены в отдельные устройства.
Передатчик 630 в соответствии с различными вариантами осуществления настоящего изобретения может быть конфигурирован с возможностью выбора уровней передачи для различных ситуаций, например, для ответа на запросы приемника 650 или для реагирования на преобладающие условия в сети, по которой передается битовый поток. Запрос от приемника может быть, например, запросом на изменение уровней для отображения или выбора устройства рендеринга, имеющего возможности, отличающиеся от возможностей предшествующего устройства.
На фиг.7 и 8 показано типовое электронное устройство 12, с помощью которого может быть реализовано настоящее изобретение. Однако следует понимать, что возможности реализации настоящего изобретения не ограничены устройством одного конкретного типа. Электронное устройство 12, показанное на фиг.7 и 8, содержит корпус 30, дисплей 32, выполненный в виде жидко-кристаллического дисплея, клавиатуру 34, микрофон 36, динамик 38, батарею 40, инфракрасный порт 42, антенну 44, смарт-карту 46 в виде UICC согласно одному из вариантов осуществления, устройство 48 считывания карт, схему 52 радиоинтерфейса, схему 54 кодека, контроллер 56 и память 58. Все типы отдельных схем и элементов хорошо известны в этой области техники.
Различные варианты осуществления настоящего изобретения описаны в общем контексте шагов способа или процессов, которые в одном из вариантов осуществления могут быть реализованы с помощью компьютерного программного продукта, выполненного в виде машиночитаемого носителя, содержащего исполняемые компьютером инструкции, такие как программный код, выполняемый компьютерами в сетевой среде. Машиночитаемый носитель может включать съемные и несъемные запоминающие устройства, включая, но не ограничиваясь перечисленным, постоянную память (ROM, Read Only Memory), оперативную память (RAM, Random Access Memory), компакт-диски (CD, compact disc), цифровые универсальные диски (DVD, digital versatile disc) и т.д. В общем случае программные модули могут содержать подпрограммы, программы, объекты, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Исполняемые компьютером инструкции, связанные с ними структуры данных и программные модули представляют примеры программного кода для выполнения шагов способов, раскрытых в этом описании. Конкретная последовательность таких исполняемых инструкций или связанных с ними структур данных представляет примеры соответствующих действий для реализации функций, описанных в рамках таких шагов или процессов.
Варианты осуществления настоящего изобретения могут быть реализованы в виде программного обеспечения, аппаратных средств, прикладной логики или комбинации программного обеспечения, аппаратных средств и прикладной логики. Программное обеспечение, прикладная логика и/или аппаратные средства могут располагаться, например, в микросхеме, мобильном устройстве, настольном компьютере, портативном компьютере или на сервере. Программное обеспечение и различные веб-реализации вариантов осуществления настоящего изобретения могут быть выполнены с помощью стандартных программных технологий с основанной на правилах логикой и другими вариантами логики для выполнения различных шагов или процессов поиска в базе данных, шагов или процессов корреляции, сравнения данных и принятия решений. Различные варианты осуществления настоящего изобретения могут быть также полностью или частично реализованы в сетевых элементах или модулях. Следует отметить, что термины "компонент" и "модуль", используемые в этом описании и в последующей формуле изобретения, предназначаются для схватывания вариантов осуществления настоящего изобретения с использованием одной или более строк программного кода и/или аппаратных реализаций, и/или оборудования для приема данных, введенных вручную.
Отдельные специфические структуры, описанные в приведенных примерах, следует рассматривать как типовые структуры средств для выполнения специфических функций, описанных в последующей формуле изобретения, хотя ограничения в пунктах формулы изобретения не должны интерпретироваться как ограничения вида "средства плюс функция" в том случае, если в них отсутствует термин "средства". Кроме того, использование термина "шаг" в приведенном описании не должно использоваться для толкования любого специфического ограничения в формуле изобретения как образующего ограничение вида "шаг плюс функция". Отдельные ссылки, включая выданные патенты, заявки на патент и непатентные публикации, описанные или упомянутые в этом описании, не предназначены для ограничения объема прилагаемой формулы изобретения и не должны интерпретироваться подобным образом.
Приведенное выше описание вариантов осуществления настоящего изобретения представлено с целью иллюстрации и описания изобретения. Приведенное выше описание не является исчерпывающим и не предназначено для ограничения осуществления настоящего изобретения в точности теми вариантами, которые раскрыты в описании, поэтому в свете изложенных идей возможны модификации и изменения, которые также могут быть найдены в процессе практического применения различных вариантов осуществления настоящего изобретения. Рассмотренные варианты осуществления были выбраны и описаны для объяснения принципов и характера вариантов осуществления настоящего изобретения и их практического применения, чтобы позволить специалисту в этой области техники использовать настоящее изобретение в различных вариантах осуществления и с различными модификациями, подходящими для конкретного предполагаемого использования. Признаки описанных вариантов осуществления настоящего изобретения могут объединяться с использованием всех возможных комбинаций способов, устройств, модулей, систем и компьютерных программных продуктов.