СТРУКТУРА ДЕКОДЕРА ДЛЯ ОПТИМИЗИРОВАННОГО УПРАВЛЕНИЯ ОБРАБОТКОЙ ОШИБОК В ПОТОКОВОЙ ПЕРЕДАЧЕ МУЛЬТИМЕДИЙНЫХ ДАННЫХ
STRUCTURE OF DECODER FOR OPTIMISED CONTROL OF ERROR PROCESSING IN MULTIMEDIA DATA STREAMING

Описание
По настоящей заявке на патент испрашивается приоритет в соответствии с предварительной заявкой на патент № 60/660.681, названной «Method and apparatus for error recovery in video communications», поданной 10 марта 2005 года, предварительной заявкой на патент № 60/660.923, названной «Method and apparatus for video decoding», поданной 10 марта 2005 года, и предварительной заявкой на патент № 60/660.867, названной «Method of error recovery for a decoder», поданной 10 марта 2005 года, каждая из которых принадлежит заявителю настоящей заявки и включена в настоящее описание посредством ссылки.
Область техники, к которой относится изобретение
Настоящее изобретение относится к способам и устройству для декодирования потоковой передачи мультимедийных данных в реальном времени на портативных устройствах.
Уровень техники
Вследствие высокого роста и большого успеха сети Интернет и беспроводной связи, а также увеличенного спроса на услуги мультимедиа, потоковая передача мультимедийных данных по сети Интернет и каналам мобильной/беспроводной связи привлекает огромное внимание. В неоднородной IP-сети видеоданные предоставляются сервером, но также могут быть предоставлены одним или несколькими клиентами. Проводные соединения включают в себя связь по телефонной линии, по цифровой сети с комплексными услугами (ISDN), по кабельной линии, по протоколам цифровой абонентской линии (совместно названные xDSL), по волоконно-оптическому кабелю, по локальным сетям (LAN), по глобальным сетям (WAN) и др. Режим передачи может быть либо одноадресным, либо многоадресным (групповым).
Мобильная/беспроводная связь подобна связи по неоднородной IP-сети. Транспортировка мультимедиа-контента (содержания) по каналам мобильной/беспроводной связи является довольно затруднительной в связи с тем, что качество этих каналов зачастую значительно ухудшается из-за замираний, связанных с многолучевым распространением, затенения, межсимвольной интерференции и шумовых помех (мешающего шума). Некоторые иные причины, такие как мобильность и конкурирующий трафик, также приводят к изменениям пропускной способности и потерям. Шумы канала и количество обслуживаемых пользователей определяют изменяемое во времени свойство сред канала.
Потребности в более высоких скоростях передачи данных и более высоком качестве обслуживания как в неоднородных IP- сетях, так и в системах мобильной связи быстро растут. Однако факторы, такие как ограниченное время задержки (запаздывание), ограниченная мощность передачи, ограниченная пропускная способность и замирания, связанные с многолучевым распространением, продолжают ограничивать скорость передачи данных применяемой на практике системы. При передаче мультимедийных данных, в частности, в средах, подверженных ошибкам, устойчивость к ошибкам передающихся мультимедийных данных является критической при обеспечении желаемого качества обслуживания, в связи с тем что ошибки, даже в отдельном декодированном значении, могут привести к декодированию артефактов (искажений изображения), распространяющихся в пространственном и временном отношениях. Для минимизации ошибок используются различные параметры кодирования, поддерживающие необходимую скорость передачи данных, однако все эти методы страдают от проблем, связанных с ошибками, достигающими стороны декодера.
Данные сжимаются с помощью кодера источника, передающего максимальное количество информации с расходом минимального количества битов, следующего за канальным кодером, имеющим тенденцию максимизировать пропускную способность канала для заданной вероятности ошибки при приеме этих битов.
Канальное кодирование, такое как кодирование Рида-Соломона, используется для повышения надежности данных, закодированных кодером источника. Методы совместного кодирования каналов используются для предоставления изменяющихся уровней защиты от ошибок данным, закодированным кодером источника, с изменяющимися уровнями важности или для предоставления возможности адаптации скорости передачи закодированных видеоданных к доступной пропускной способности сети посредством деления и отказа от пакетов. Это происходит в связи с тем, что обычные транспортные протоколы не поставляют поврежденные данные декодеру источника.
Методы кодирования источника, например реверсивное кодирование с кодами переменной длины (например, в стандарте MPEG-4), использовались для устранения ошибок посредством декодирования пакета в обратном порядке при фактическом приеме поврежденных пакетов. Существует компромисс в эффективности кодирования с помощью методов кодирования источника, который сохраняет качество декодированных видеоданных на заданной скорости передачи данных.
Стандарты гибридного кодирования, такие как MPEG-1, MPEG-2, MPEG-4 (совместно названные MPEG-x), H.261, H.262, H.263 и H.264 (совместно названные H.26x), используют точки повторной синхронизации в битовом потоке в качестве основного способа обработки ошибок в декодере.
Другая причина, которая может вызвать потерю данных, превышающую начальное искажение, происходит из-за эмуляции неверного ключевого слова. Идентификация начальной позиции битовой ошибки не является тривиальной задачей и, как правило, невозможна без специальной структуры, поддерживающей идентификацию позиций битовых ошибок на MAC-уровне или компоненте физического уровня. Следовательно, после обнаружения повреждения битового потока декодеру, вероятно, придется остановить декодирование и продвинуться по битовому потоку для поиска следующей точки повторной синхронизации, в процессе чего неизбежно пропускается большое количество потенциально полезных данных. Несмотря на эмуляцию другого ключевого слова, которое имеет длину, аналогичную оригиналу, то есть верную, ключевое слово может показаться меньшей проблемой по сравнению с последовательностью вышеописанных событий, фактически она не является примером. Существует множество способов, в которых подобный тип ошибки может привести к ошибкам при расшифровке верного битового потока декодера. Например, в самых современных кодеках (кодерах-декодерах) в битовом потоке присутствуют объекты (параметры, связанные со сжатием), значения которых влияют на порядок следующей части битового потока. Следовательно, неверное значение такого объекта может привести к расшифровке неверного битового потока.
В связи с тем что обычные транспортные протоколы не доставляют декодеру поврежденные данные (например, применение видео- или аудиодекодера), декодер имеет ограниченную способность обработки битовых ошибок, используя отказ от пакетов и повторную синхронизацию, что является самым распространенным решением. Необходим улучшенный способ обработки битовых ошибок, которые приводят к распространению ошибок, а также к потере данных из-за проблем, таких как потеря синхронизации и эмуляция неверного ключевого слова.
Сущность изобретения
В одном аспекте способ и устройство для многоуровневой интеграции, используемой для устранения ошибок, содержат способ или средство для обнаружения ошибки в мультимедийных данных на основе протокола первого уровня и маскировки обнаруженной в мультимедийных данных ошибки на основе протокола второго уровня. В другом аспекте устройство для многоуровневой интеграции, используемой для устранения ошибок, содержит средство обнаружения для обнаружения ошибки в мультимедийных данных на основе протокола первого уровня и средство маскировки для маскировки обнаруженной в мультимедийных данных ошибки на основе протокола второго уровня. В способе и устройстве для многоуровневой интеграции первый уровень может включать в себя уровень связи. Уровень связи может включать в себя один элемент из множества, содержащего физический уровень, MAC-уровень и транспортный уровень или же комбинацию этих элементов. Кроме того, способ и устройство могут дополнительно содержать способ или средство для контроля обнаруженной ошибки на основе протокола транспортного уровня. Этап контроля обнаруженной ошибки может содержать этап ограничения распространения обнаруженной ошибки. Способ и устройство также могут дополнительно включать в себя способ или средство для определения распределения обнаруженной ошибки на основе протокола уровня синхронизации. Второй уровень может включать в себя прикладной уровень.
В другом аспекте способ и устройство для многоуровневой интеграции, используемой для устранения ошибок, включают в себя способ или средство для обнаружения ошибки в мультимедийных данных на основе протокола уровня связи, контроля обнаруженной ошибки на основе протокола транспортного уровня, определения распределения контролируемой ошибки на основе протокола уровня синхронизации и маскировки обнаруженной в мультимедийных данных ошибки на основе протокола прикладного уровня. В другом аспекте способ и устройство, используемые для обработки мультимедийных данных, включают в себя способ или средство для выполнения устранения ошибок закодированных мультимедийных данных и поддержки масштабируемости закодированных мультимедийных данных. Еще в одном аспекте устройство, используемое для обработки мультимедийных данных, включает в себя компонент устранения ошибок для выполнения устранения ошибок закодированных мультимедийных данных и компонент масштабирования для поддержки масштабируемости закодированных мультимедийных данных. В способе и устройстве, используемых в обработке мультимедийных данных, масштабируемость может являться либо пространственной, либо временной, либо и той и другой. Этап устранения ошибок может содержать либо этап временной маскировки ошибок, либо этап пространственной маскировки ошибок, либо этап преобразования частоты кадров, либо комбинацию этих этапов.
В другом аспекте способ и устройство, используемые для обработки мультимедиа-потока, включают в себя способ или средство для приема множества потоков закодированных мультимедийных данных, выполнения устранения ошибок в ошибочной части потока и восстановления мультимедийных данных из множества потоков. В другом аспекте устройство, используемое для обработки мультимедиа-потока, включает в себя приемник для приема множества потоков закодированных мультимедийных данных, компонент устранения ошибок для выполнения устранения ошибок в ошибочной части потока и блок восстановления для восстановления мультимедийных данных из множества потоков. В способе и устройстве, используемых для обработки мультимедиа-потока, этап устранения ошибок может содержать либо этап временной маскировки ошибок, либо этап пространственной маскировки ошибок, либо этап преобразования частоты кадров, либо комбинацию этих этапов.
Следует отметить, что вышеупомянутый способ и устройство могут быть осуществлены с помощью машиночитаемой среды и/или процессора, выполненного с возможностью выполнения способа или операции устройства.
Краткое описание чертежей
Фиг.1A изображает блок-схему примера системы связи для доставки потоковой передачи мультимедийных данных.
Фиг.1B изображает блок-схему примера многоуровневой системы связи для доставки потоковой передачи мультимедийных данных.
Фиг.1С изображает блок-схему другого примера многоуровневой системы связи для доставки потоковой передачи мультимедийных данных.
Фиг.2A изображает блок-схему примера структуры декодирующего устройства для декодирования потоковой передачи мультимедийных данных.
Фиг.2B изображает диаграмму стека протоколов интегрированной многоуровневой системы управления, включающей в себя передатчик, и другое представление изображенной на Фиг.2A структуры декодирующего устройства.
Фиг.3 изображает пример мультимедиа-символов, упорядоченных для каскадного кодирования со стиранием ошибок Рида-Соломона и турбокодирования.
Фиг.4 изображает схему последовательности операций примера способа декодирования потоковой передачи мультимедийных данных.
Фиг.5 изображает структуру информационного турбопакета для видеоданных.
Фиг.6 изображает блок-схему иллюстративной системы компонентов, которая может являться частью мультимедиа-приемника 24, изображенного на Фиг.1.
Фиг.7 изображает блок-схему процесса устранения ошибок.
Подробное описание
Описывается способ и устройство для обеспечения расширенных возможностей устранения ошибок в мультимедиа-декодере. Обеспечиваются интегрированные возможности устранения ошибок, такие как обнаружение ошибки в потоке мультимедийных данных на верхнем уровне (например, на уровне связи) и выполнение устранения ошибок относительно обнаруженной ошибки на прикладном уровне (например, видео- или аудиодекодер). В одном примере представлена структура декодера, обеспечивающая информацию, маркирующую поврежденные биты, для компонентов прикладного уровня, используемую для создания обоснованных решений при выполнении различных типов методов устранения ошибок. Методы устранения ошибок используются для замены поврежденных символов предполагаемыми символами, полученными из информации, доступной для компонента прикладного уровня, такой как предварительно декодированные видеоданные, аудиоданные, текстовая и графическая информация. Для обеспечения полного понимания вариантов осуществления в следующем описании приведены характерные элементы. Однако специалистам в данной области техники будет понятно, что варианты осуществления могут быть осуществлены без этих характерных элементов. Например, на блок-схемах могут быть изображены электрические компоненты для того, чтобы не затенять варианты осуществления ненужными элементами. В других случаях подобные компоненты, другие структуры и методы можно изобразить подробно для дополнительного разъяснения вариантов осуществления. Также специалистам в данной области техники понято, что электрические компоненты, изображенные в качестве отдельных блоков, могут быть перестроены и/или объединены в один компонент.
Также следует отметить, что некоторые варианты осуществления могут быть описаны в качестве процесса, изображенного в виде блок-схемы, схемы последовательности операций, структурной схемы или принципиальной схемы. Несмотря на то что блок-схема может описывать операции в качестве многоэтапного процесса, многие из операций могут быть выполнены параллельно или одновременно, а процесс может быть повторен. Кроме того, порядок операций может быть перестроен. Процесс завершается в случае, если его операции завершены. Процесс может соответствовать способу, функции, процедуре, подпрограмме, части программы и т.д. Если процесс соответствует функции, то его завершение соответствует возврату функции к вызывающей функции или же к главной функции.
Фиг.1A изображает блок-схему примера системы связи для доставки потоковой передачи мультимедийных данных. Система 20 включает в себя передатчик 22 и мультимедиа-декодер 24 приемника. Передатчик 22 содержит сжатые мультимедийные данные различных форм, включающие в себя, в числе прочего, видеоданные, аудиоданные, графическую информацию, текстовую информацию и изображения. Данные могут являться сжатыми видеоданными и аудиоданными, как в стандартах MPEG-x и H.26x, сжатыми аудиоданными, как в стандартах сжатия речи или видео MPEG-4 AAC, MP3, AMR и G.723, или же любым другим видом цифровых данных.
Передатчик 22 получает данные из различных источников, включающих в себя внешнюю память, сеть Интернет и оперативную подачу аудиоданных и/или видеоданных. Передатчик 22 также выполняет передачу (Tx) полученных данных по сети. Сеть может являться проводной сетью 28, например телефонной, кабельной или оптоволоконной, или же беспроводной сетью 26. В отношении системы беспроводной связи сеть 26 может содержать, например, часть системы связи с множественным доступом с кодовым разделением каналов (CDMA или CDMA2000) или поочередно система может являться системой множественного доступа с частотным разделением (FDMA), системой множественного доступа на основе ортогонального частотного разделения (OFDMA), системой множественного доступа с временным разделением (TDMA), как технология мобильной связи для индустрии обслуживания GSM/GPRS (система пакетной радиосвязи общего пользования) / EDGE (улучшенный GSM для передачи данных) или TETRA (магистральная наземная радиосвязь), широкополосного множественного доступа с кодовым разделением каналов (WCDMA), системой высокоскоростной передачи данных (1xEV-DO или 1xEV-DO Gold Multicast) или же вообще любой системой беспроводной связи, использующей комбинации методов.
Декодер 24 содержит средство, такое как радиочастотная антенна или сетевое подключение, для приема данных по беспроводной сети 26 и/или проводной сети 28. Декодер 24 может включать в себя множество процессоров, содержащих различную комбинацию предварительных процессоров (например, любой тип центрального процессора (CPU), например, ARM), цифровой сигнальный процессор (DSP), программное обеспечение, встроенное программное обеспечение и аппаратные средства, такие как мультимедийный процессор VideoCore, для распределения демодуляции и декодирования задач, связанных с принятыми данными. Декодер 24 также содержит компоненты памяти для сохранения принятых данных и промежуточных данных на различных этапах процесса демодуляции/декодирования. В некоторых вариантах осуществления предварительный процессор ARM выполняет менее сложные задачи, включающие в себя распаковку (удаление побочной информации, такой как заголовки и сообщения) и демультиплексирование множества битовых потоков, включающих в себя аудиоданные, видеоданные и другое. Предварительный процессор ARM также выполняет разбор битового потока, обнаружение ошибок, маскировку и декодирование энтропии переменной длины. В некоторых таких вариантах осуществления цифровой сигнальный процессор (DSP) выполняет расширение ключевых слов VLC (с кодом переменной длины), обратное зигзагообразное сканирование видеоданных для пространственного определения параметров пикселя, обратное предсказание переменного тока/постоянного тока параметров пикселя для видеоданных стандарта MPEG-4 (не является особенностью стандарта H.264 из-за контекстного адаптивного кодирования энтропии) и декодирование аудиоданных (например, MPEG-4 AAC, MP3, AMR или G.723). Мультимедийный процессор VideoCore может выполнить более сложные в вычислительном отношении задачи декодирования видеоданных, содержащие деквантование, обратное преобразование, предсказание с компенсацией движения и разблокировку (форма фильтрации для сокращения краевых искажений изображения (артефактов) между краями блока пикселей). В системе 20 связи один или несколько элементов могут быть добавлены, перестроены или же объединены. В отношении системы проводной связи сеть 26 может включать в себя, например, часть системы связи, базирующейся на межсетевом протоколе (IP), с транспортными протоколами, такими как транспортный протокол реального времени (RTP) или универсальный протокол передачи дейтаграмм (UDP).
Фиг.1B изображает блок-схему многоуровневого стека протоколов, используемого для задач деления, выполняемых на передатчике 22 и декодере 24. Компоненты 205 и 210 верхнего уровня, находящиеся в передатчике 22 и декодере 24 соответственно, могут включать в себя множество приложений, таких как, например, видео- или аудиокодеры и/или декодеры. Некоторые варианты осуществления могут включать в себя множество потоков информации, которые предназначены для одновременного декодирования. В этих случаях задачи синхронизации множества потоков также могут быть выполнены в компонентах 205 и 210 верхнего уровня. Компонент 205 верхнего уровня может обеспечить закодированную информацию о синхронизации в битовом потоке, передающемся по беспроводной сети 26 и/или проводной сети 28. Компонент 210 верхнего уровня 210 может разобрать множество потоков информации из условия, чтобы связанные приложения декодировали их приблизительно в то же самое время.
Компоненты 215 нижнего уровня, находящиеся в передатчике 22, могут включать в себя различные схемы для обеспечения устойчивости к ошибкам. Подверженные ошибкам каналы, например беспроводная сеть 26 и/или проводная сеть 28, могут ввести ошибки в битовый поток, принимаемый декодером 24. Такие схемы устойчивости к ошибкам, обеспеченные в компонентах 215 нижнего уровня, могут включать в себя одну или несколько схем помехоустойчивого кодирования (с контролем ошибок), схем чередования и других известных специалистам в данной области техники схем. Компоненты 220 нижнего уровня, находящиеся в декодере 22, могут включать в себя соответствующие компоненты декодирования ошибок, которые допускают обнаружение и коррекцию ошибок. Некоторые ошибки, введенные по беспроводной сети 26 и/или проводной сети 28, могут являться некорректируемыми с помощью компонентов 220 нижнего уровня. Для некорректируемых ошибок решения, такие как компоненты 220 нижнего уровня, запрашивающие повторную передачу поврежденных компонентов посредством компонентов 215 нижнего уровня передатчика 22, могут быть невыполнимы в некоторых ситуациях, например, при передаче мультимедийных данных в реальном времени, например, при потоковой передаче приложений. В некоторых вариантах осуществления компоненты 215 и 220 нижнего уровня содержат компоненты уровня связи. Один или несколько элементов могут быть добавлены, перестроены или объединены в передатчике 22 или декодере 24, изображенных на Фиг.1B.
Фиг.1С изображает блок-схему более подробного примера многоуровневого стека протоколов, используемого для задач деления в передатчике 22 и декодере 24. Компоненты 205 верхнего уровня, находящиеся в передатчике 22, распределяются либо в один уровень из множества, содержащего прикладной уровень 206 и уровень 207 синхронизации, либо в несколько уровней. Компоненты 215 нижнего уровня, находящиеся в передатчике 22, распределяются либо в один уровень из множества, содержащего транспортный уровень 216, уровень 217 управления доступом к среде передачи (MAC)/потоковый уровень 217 и физический уровень 218, либо в несколько уровней. Подобным образом компоненты 210 верхнего уровня, находящиеся в декодере 24, распределяются либо в один уровень из множества, содержащего прикладной уровень 211 и уровень 207 синхронизации, либо в несколько уровней. Компоненты 220 нижнего уровня, находящиеся в декодере 24, распределяются либо в один уровень из множества, содержащего транспортный уровень 221, уровень 222 управления доступом к среде передачи (МАС)/потоковый уровень 222 и физический уровень 223, либо в несколько уровней. Специалистам в данной области техники известны эти уровни, а также они знакомы с распределением различных задач среди них. Далее обсуждается пример структуры, объединяющей различные уровни декодирующего устройства 24, как обсуждалось выше, для использования в своих интересах устойчивости к ошибкам, обеспеченную в передатчике 22. Один или несколько элементов могут быть добавлены, перестроены или объединены в передатчике 22 или декодере 24, изображенных на Фиг.1С.
Фиг.2A изображает блок-схему примера структуры декодирующего устройства для декодирования потоковой передачи мультимедийных данных. Фиг.2B изображает диаграмму стека протоколов примера интегрированной многоуровневой системы управления, содержащей передатчик 22, и представление стека протоколов изображенной на Фиг.2A структуры декодирующего устройства. Как показано на Фиг.2A и 2B, мультимедиа-декодер 30 содержит компонент 32 физического уровня, компонент 34 МАС-уровня, блок 39 разбора транспортного уровня (TSP) и уровня синхронизации и компонент 50 прикладного уровня. Мультимедиа-декодер 30 принимает входной битовый поток (В), содержащий схему каскадной коррекции ошибок, например, схему каскадного кодирования турбо/Рида-Соломона. Компонент 32 физического уровня может выполнять задачи демодуляции, в числе прочего, включающие в себя прием, помехоустойчивое декодирование, например декодирование с использованием турбокода, и взаимодействие с МАС-уровнем (уровнем управления доступом к среде передачи). Компонент 34 МАС-уровня может выполнять помехоустойчивое декодирование, например, обнаружение ошибок Рида-Соломона, коррекцию ошибок и маркировку некорректируемых поврежденных данных, например, группы, состоящей из одного или нескольких битов. Компонент 34 МАС-уровня взаимодействует с компонентом 39 разбора транспортного уровня и уровня синхронизации (TSP).
Компонент 39 TSP может дополнительно содержать компонент 36 демультиплексирования транспортного уровня и компонент 38 разбора уровня синхронизации. Компонент 36 демультиплексирования транспортного уровня может принять битовый поток, передающийся от компонента 34 МАС-уровня, содержащий как верные, так и поврежденные биты, и информацию, маркирующую поврежденные группы битов. Поврежденные группы битов и соответствующая маркирующая информация содержат информацию, соответствующую ошибкам 33 в контрольной циклической сумме (CRC) турбодекодера и ошибкам 35 Рида-Соломона. (В некоторых стеках протоколов компонент 36 демультиплексирования транспортного уровня также известен как подуровень потокового уровня, где подуровень МАС-уровня и подуровень потокового уровня являются подуровнями транспортного уровня.) Компонент 36 демультиплексирования транспортного уровня может демультиплексировать (de-mux) или разобрать принятый битовый поток на множество битовых потоков. Разобранные битовые потоки могут содержать битовые потоки, предназначенные для различных приложений, таких как видеодекодер, аудиодекодер, и различных комбинаций текстовых, графических приложений и приложений отображения. Компонент демультиплексирования транспортного уровня также может разобрать один битовый поток, предназначенный для отдельного приложения, такой как битовый поток видеоданных, например, на два или несколько отдельных уровней (например, используя масштабируемое кодирование), например, на основной уровень и уровень улучшения. Затем эти уровни могут быть использованы для обеспечения масштабируемости, такой как временная и/или SNR масштабируемость. Один пример масштабируемого кодирования делит кадры с внутренним кодированием (такие как I-кадры) и другие кадры с взаимным кодированием (например, P-кадры или В-кадры, полученные при использовании, например, предсказания с компенсацией движения) на различные уровни в битовом потоке. I-кадры могут быть закодированы на основном уровне, а P-кадры и/или В-кадры могут быть закодированы на уровне улучшения. Масштабируемое кодирование является полезным в динамических каналах, где масштабируемые битовые потоки могут быть адаптированы к соответствию колебаниям в пропускной способности сети. В подверженных ошибкам каналах масштабируемое кодирование может увеличить надежность с помощью защиты от неравных ошибок основного уровня и уровня улучшения. Лучшая защита от ошибок может быть применена к более важному уровню.
Компонент 38 разбора уровня синхронизации дополнительно выполняет разбор битового потока на битовые субпотоки, связанные друг с другом на основе временной синхронизации. Мультимедийный битовый поток видеоданных может быть разобран на битовый поток видеоданных, битовый поток аудиоданных и битовый поток с соответствующей текстовой информацией скрытых титров. Компонент 38 разбора уровня синхронизации передает разобранные битовые потоки связанному приложению декодера наряду с информацией временной синхронизации. Это предоставляет связанным аудиоданным, видеоданным и текстовой информации возможность отображения и воспроизведения в соответствующее время.
В дополнение к обсуждаемому выше разбору компонент 36 демультиплексирования транспортного уровня может разобрать и переслать информацию, маркирующую повреждение (например, информацию 33 об ошибке CRC и информацию 35 об ошибке Рида-Соломона), которую он принял от компонента 34 МАС-уровня и компонента 32 физического уровня, компоненту 38 разбора уровня синхронизации и/или соответствующему процессу прикладного уровня (например, видеодекодеру или аудиодекодеру). Компонент 38 разбора уровня синхронизации может передать информацию, маркирующую повреждение, в виде информации 37 о распределении ошибок. Компонент 38 разбора уровня синхронизации также может передать рекомендованную информацию 41 о стратегии контроля ошибок. Затем процесс прикладного уровня может использовать информацию 37, маркирующую повреждение, и информацию 41 о стратегии контроля для обработки ошибок.
Компонент 50 прикладного уровня может содержать один или несколько компонентов, таких как, например, компонент 40 устранения ошибок, компонент 42 масштабирования, компонент 44 преобразования частоты кадров (FRUC), компонент 46 декодирования базового приложения и компонент 48 последующей обработки. Компонент 50 прикладного уровня использует переданную информацию 37, маркирующую повреждение, и информацию 41 о стратегии контроля для принятия решения, касающуюся способа использования компонентов устранения ошибок, масштабирования и преобразования частоты кадров (FRUC) для управления поврежденными данными, таким образом предлагая более высокое качество декодирования с использованием компонента 46 декодирования базового приложения. Например, касаемо временной масштабируемости, где некоторые мультимедийные данные принимаются на одном уровне, содержащем важную информацию, а остальная часть мультимедийных данных - на другом уровне, компонент преобразования частоты кадров (FRUC) может быть использован для восстановления недостающих мультимедийных данных в случае, если второй уровень не был принят, потерян или поврежден. После декодирования компонент 48 последующей обработки выполняет любые необходимые определенные модификации аппаратных средств для предоставления возможности отображения, воспроизведения или рендеринга видео- и аудиовыхода на устройстве отображения или динамиках соответственно. Компонент 48 последующей обработки также может выполнить операции улучшения или восстановления прежде, чем мультимедийные данные будут воспроизведены или представлены.
Компонент 46 декодирования базового приложения может содержать видеодекодер(ы), аудиодекодер(ы), а также текстовые и графические приложения. Посредством выполнения обработки устранения ошибок, масштабирования и преобразования частоты кадров (FRUC) битовых потоков различных приложений перед или в течение декодирования с использованием компонента 46 декодирования базового приложения могут быть сделаны улучшения для повышения качества битового потока низкого качества (закодированного с низким качеством, либо принятого с низким качеством из-за ошибок). Например, компоненты 40, 42 и 44 могут предложить улучшения стандартного исходного, совместимого со стандартом H.264, битового потока видеоданных (базовый профиль является очень простым профилем, который был спроектирован для маломощного устройства), и обеспечить некоторые элементы других профилей стандарта H.264, такие как B-кадры и разделение послойных данных, которые обязаны выполнять масштабирование, обнаружение и устойчивость к ошибкам для потока видеоданных. Элементы процессов, использующих компоненты мультимедиа-декодера 30, представлены ниже. Один или несколько элементов могут быть добавлены, перестроены или объединены в передатчике 22 или декодере 30, изображенных на Фиг.2A и 2B.
Далее представлено краткое обсуждение процесса обнаружения ошибок и коррекции ошибок. Один пример схемы обнаружения и коррекции ошибок использует каскадный код, содержащий как внутренний (канальный) код, так и внешний (канальный) код. Каскадные канальные коды состоят из турбо (внутреннего) кода на физическом уровне и корректирующего кода (внешнего) стирания ошибок Рида-Соломона, установленного на МАС-уровне. Фиг.3 изображает пример мультимедиа-символов, упорядоченных для каскадного кодирования со стиранием ошибок Рида-Соломона и турбокодирования. Что касается кодирующей стороны, то вывод символов из информационного источника, вывод двойных ключевых слов из кодера склеивается в байты 102. Каждый байт 102 считается символом в конечном поле, известном как «поле Галуа (256)», для целей внешнего (N, K) кода Рида-Соломона (RS) по полю Галуа (256) (GF). N и К соответственно обозначают размеры всего ключевого слова 104 Рида-Соломона (RS) и его исходных данных 106, содержащих в числе символов систематическую часть. Таким образом, N минус К представляет собой количество символов 108 паритета, включенных в каждое ключевое слово 104. Код Рида-Соломона (RS) (N, K) поддается исправлению N минус К стиранию ошибок.
К верхних строк 106, по существу, содержат символы, выведенные из информационного источника, и эти символы могут быть отсканированы из К строк или изначально сканируемых строк или столбцов. Чередование достигается посредством сканирования начальных столбцов и приводит к значительно меньшим группам поврежденных битов в случае, если данная строка 112 информационного турбопакета повреждена. Длина каждой группы поврежденных битов из-за стирания ошибок информационного турбопакета может быть равна 1 байту для изначально сканируемых столбцов в отличие от длины, равной (L-1) байт, для изначально сканируемой строки. В декодере маркировка этих поврежденных групп битов, как обсуждается ниже, может требоваться для идентификации размера и позиции (в битовом потоке) этих групп битов. После этого начального этапа размещения данных источника каждый из L столбцов 104 (К байт) кодируется с помощью RS в N байт посредством добавления N-K байтов паритета и, следовательно, формируются K+1,…,N изображенных на Фиг.3 строк 108. К верхних строк состоят из данных 106 источника, упоминаемых как информационный блок RS, а целый набор N строк упоминается как блок, закодированный с помощью RS, или же просто закодированный блок 110.
К каждой строке 112 добавлена контрольная циклическая сумма (CRC) и некоторые замыкающие биты, необходимые для правильной работы турбокодера. Из-за добавления контрольной суммы к каждой строке 112 эти строки не смогут удовлетворить свои соответствующие контрольные суммы после того, как турбодекодирование может быть объявлено стертым. Каждый кодовый блок 110 за один раз вводит одну строку 112 в турбокодер и, следовательно, каждая строка упоминается как информационный турбопакет.
Процесс турбодекодирования представляет четкие данные процессу декодирования Рида-Соломона, который затем сокращает коэффициент остаточных ошибок. Способность успешной коррекции для стирания зависит от общего количества стираний внутри кодового блока и количества (N минус K) символов паритета, используемых в ключевом слове RS.
В структуре канального кодирования, предназначенного для мультимедиа-декодера 30, изображенного на Фиг.2, в случае, если кодовый блок Рида-Соломона (RS) имеет стирания вне корректирующей способности, то соответствующий информационный блок RS (Фиг.3) может быть передан компонентам на транспортном уровне, уровне синхронизации или же на прикладном уровне с уведомлением, маркирующим то, какие из числа К информационных турбопакетов 112 (Фиг.3) являются поврежденными. Систематическая структура внешнего (N, K) кода Рида-Соломона (RS) по полю Галуа (256) допускает прямое использование безошибочно принятых информационных турбопакетов (не поврежденных).
Фиг.4 изображает схему последовательности операций примера способа декодирования потоковой передачи мультимедийных данных. Модулированные ошибочные данные (IN) принимаются и вводятся в процесс 60 декодирования и демодулируются (этап 62). Данные могут быть приняты по проводным или беспроводным сетям, например, по беспроводной сети 26 и проводной сети 28, изображенным на Фиг.1. На этапе 62 компонент 32 физического уровня, изображенный на Фиг.2, выполняет демодуляцию принятых ошибочных данных. Затем демодулированные данные передаются на этап 64, где ошибки могут быть обнаружены и откорректированы. На этапе 64 компонент 32 физического уровня, изображенный на Фиг.2, может выполнить турбодекодирование, в то время как компонент 34 МАС-уровня, изображенный на Фиг.2, может выполнить коррекцию ошибок Рида-Соломона.
После того как на этапе 64 турбодекодирование и декодирование Рида-Соломона обнаружило и откорректировало все корректируемые ошибки, информационные турбопакеты и/или поврежденные байты идентифицируются на этапе 66, например, посредством маркировки. Перед передачей битового потока для выполнения разбора на этапе 68 от контрольных циклических сумм (CRC), замыкающих битов в каждом информационном турбопакете, а также от строк 108 паритета (Фиг.3) отказываются. Безошибочно принятые, принятые с ошибками, но откорректированные и помеченные поврежденные данные наряду с маркирующей информацией, идентифицирующей поврежденные данные, совместно передаются на этап 68 для разбора битового потока. На этапе 66 компонент 32 физического уровня и/или компонент 34 МАС-уровня (Фиг.2) могут выполнить идентификацию (например, посредством маркировки) поврежденных данных.
Как обсуждалось выше, компонент 36 демультиплексирования транспортного уровня и компонент 38 разбора уровня синхронизации разбирают битовый поток на множество битовых потоков, предназначенных для множества процессов прикладного уровня. В изображенном на Фиг.4 примере битовый поток разбирается (на этапе 68) на битовый поток 70 видеоданных, битовый поток 72 аудиоданных и битовый поток 74 текстовой и/или графической информации. Каждый битовый поток 70, 72 и 74 может содержать данные, идентифицирующие поврежденные группы битов в отдельных битовых потоках. Кроме того, если отдельные битовые потоки должны быть синхронными во временном отношении, то битовые потоки могут содержать информацию о синхронизации.
После разбора отдельных битовых потоков выполняется обработка ошибок на прикладном уровне, где на этапах 78, 82 и 86 заменяются поврежденные биты с использованием одного из нескольких методов устранения ошибок или маскировки. Компонент 40 устранения ошибок, компонент 42 масштабирования и компонент 44 преобразования частоты кадров (FRUC) компонента 50 прикладного уровня (Фиг.2) могут выполнить замену на этапах 78, 82 и 86. После замены поврежденных символов отдельные потоки видеоданных, аудиоданных и текстовой/графической информации могут быть декодированы на этапах 80, 84 и 88 соответственно. Компонент 46 декодирования базового приложения компонента 50 прикладного уровня (Фиг.2) может выполнить декодирование на этапах 80, 84 и 88. Компонент 46 декодирования базового приложения компонента 50 прикладного уровня (Фиг.2) также может заменить поврежденные биты на этапах 78, 82 и/или 86, которые могут быть помечены компонентом нижнего уровня. Один или несколько элементов могут быть добавлены, перестроены или объединены для процесса 60 обработки, изображенного на Фиг.4.
Далее детально обсуждается пример идентификации поврежденных битов (этап 66) посредством маркировки поврежденных данных, как изображено на Фиг.4. Фиг.5 изображает структуру информационного турбопакета для видеоданных. Блок 140 представляет набор информационных турбопакетов, например К строк информационных турбопакетов 106, составляющих изображенный на Фиг.3 информационный блок RS. Кадр видеоданных может требовать кодирования нескольких информационных турбопакетов данных. Например, первый кадр (F1) берет начало в строке 142A информационного блока 148A. Оставшиеся в кадре F1 данные расположены в строках 142B, 142C, 142-D, а также в первой части строки 142E. Строка 142A также содержит заголовок 146A уровня синхронизации (SH), который содержит информацию, такую как идентификация потока, время синхронизации, идентификацию кадра (количество кадров, количество доступных уровней, в случае присутствия базового уровня и уровня улучшения) и другую информацию. Заголовок 146А уровня синхронизации служит для идентификации блока разбора уровня синхронизации (ссылочный номер 38 на Фиг.2), который (приложения которого) посылает данные, содержащиеся в следующих информационных блоках, представляющих кадр F1. В конце каждой строки присутствует контрольная циклическая сумма (CRC), как обсуждалось выше, которая используется совместно с декодированием Рида-Соломона для идентификации стертых (поврежденных) пакетов.
В начале каждой строки информационного турбопакета присутствует заголовок 144 транспортного уровня (TH). Каждый заголовок 144 транспортного уровня (TH) содержит поля «Last_Flag» и «Offset_Pointer». Пометка поврежденного информационного турбопакета, выполняемая на изображенном на Фиг.4 этапе 66, может быть выполнена непосредственно с помощью значения поля «Offset_Pointer». Установка неправильного значения в поле «Offset_Pointer» может обозначить пакет в качестве поврежденного. Альтернативно, поле «Error_Flag» может быть использовано в заголовке транспортного уровня (TH). Маркировка может быть достигнута посредством установки значения поля «Error_Flag», равного единице (Error_Flag=1) в соответствующем заголовке транспортного уровня (TH). Например, если строка 142C повреждена, то значение заголовка транспортного уровня (TH) строки 142C может быть установлено равным единице. Поле «Last_Flag» используется для указания того, что текущая строка является последней строкой кадра (например, посредством установки его значения, равного единице), и если она является последней строкой, то поле «Offset_Pointer» используется для указания того, где в строке информационного турбопакета находится начало следующего кадра (в числе байтов). Например, в строке 142E значение заголовка 144В транспортного уровня (TH) может быть равным единице (значение поля «Last_Flag» равно единице), и значение поля «Offset_Pointer» может быть равным количеству байтов, содержащихся в строке до начала заголовка 144С транспортного уровня (TH) (начало кадра F3). Заголовок 146В уровня синхронизации может содержать данные, указывающие на поле «Frame_ID» и битовый поток, как обсуждалось выше. Информационный блок 148C содержит видеоданные, представляющие кадр F3. Если строка 142E была определена в качестве поврежденной, то декодер может не определить, где кончается кадр F1 и где начинается кадр F3.
В добавление к (или вместо) включению поля «Error_Flag» в заголовок транспортного уровня, как обсуждалось выше, таблица данных может быть создана и передана прикладному уровню с информацией, перечисленной в Таблице 1 для каждого видеокадра.
Выборочная информация, содержащаяся в таблице ошибок битового потока видеоданных
Таблица 1
Выборочная информация, содержащаяся в таблице ошибок битового потока видеоданных
- Количество кадров - целое число, ограниченное набором кадров, например, 30 кадров, где после наибольшего числа нумерация возобновляется с единицы.- B/E - указывает количество базовых уровней или уровней улучшения кадра в случае присутствия множества уровней масштабирования.- Frame_Length - длина видеокадра в байтах.- RAP_Flag - индикатор, указывающий на то, является ли кадр случайной точкой доступа, например, целым I-кадром с внутренним кодированием. Такой индикатор также может служить точкой повторной синхронизации при столкновении с ошибками.- Метка времени отображения (PTS) - время в последовательности кадров, в течение которого кадр должен быть отображен.- Кадров в секунду (FPS)Количество информационных турбопакетов, занимаемых кадром (и полностью и частично)- Error_Bit_Pattern - переменная, указывающая на то, какие информационные турбопакеты являются поврежденными (пять битов «00100» будут указывать на то, что третий из пяти информационных турбопакетов поврежден).- Error_Ratio - переменная, указывающая коэффициент поврежденных информационных турбопакетов для корректирования пакетов (1/5 будет указывать на то, что один из пяти пакетов поврежден).
Также могут быть сформированы другие таблицы ошибок битового потока, подобные Таблице 1. Информация, маркирующая ошибки, содержащаяся в заголовках транспортного уровня и/или таблицах ошибок, подобных Таблице 1, может использоваться компонентами прикладного уровня, такими как компоненты 40, 42 и 44 (Фиг.2), для идентификации поврежденных символов в разобранных битовых потоках 70, 72 и 74, а также для их замены на этапах 78, 82 и 86 (Фиг.4) соответственно. Как обсуждалось выше, от пакетов стирания из кодирования Рида-Соломона (RS) не отказываются, они передаются на прикладной уровень, например видеодекодеру. Это защищает целостные пакеты, потенциально длиной в 122 байта или более для пакетов видеоданных, от потери.
Замена поврежденных символов на этапах 78, 82 и 86 (Фиг.4) может принять две основные формы, а именно: коррекция ошибок и маскировка ошибок. Операции коррекции и маскировки ошибок на уровне битового потока выполняются на стираниях и пакетных ошибках. Ошибки декодирования (из-за ошибок в байтах) корректируются посредством использования критерия MAP (максимума апостериорной вероятности) до возможной степени. Ошибки, которые не могут быть откорректированы, маскируются посредством использования пространственной и/или временной информации из соседних макроблоков (макроблок представляет собой область пикселей, размером 16×16, которая, как правило, оперирует со стандартами сжатия видеоизображения, а также могут быть использованы меньшие по размеру субмакроблоки, например 8×8, 8×16 и другие). Временная маскировка может быть использована, например, если изображение статично свыше одного кадра. Если поврежденный маскируемый макроблок находится в области, которая осталась относительно постоянной в предыдущих кадрах, то он вероятно будет присутствовать в поврежденном кадре, а области прошедшего кадра могут быть использованы в качестве оценки для поврежденной области. Пространственная маскировка может использовать в своих интересах границы или объекты, которые существуют в соседних макроблоках одного кадра.
Как обсуждалось выше, может быть принято множество уровней закодированных данных, представляющих один битовый поток. Уровни могут включать в себя базовый уровень и один или несколько уровней улучшения, где уровень(ни) улучшения может обеспечить дополнительные кадры, которые недоступны в базовом уровне (например, предсказанные двунаправленные B-кадры), или же он может обеспечить дифференциальные усовершенствования более высокого качества для параметров пикселя базового уровня. Что касается дифференциальных усовершенствований для параметров базового уровня, если базовый уровень поврежден, то уровень улучшения может быть бесполезен, поскольку он был получен на основании значений пикселей базового уровня. Таким образом, уровень улучшения может быть освобожден от декодирования в случае, если данные базового уровня повреждены. Этот процесс называют выборочным декодированием, и он также может быть использован под сценариями малой мощности. Например, если устройство, содержащее декодер, работает в режиме малой мощности или работает от аккумулятора, декодироваться может только базовый уровень, опуская уровень улучшения, таким образом, сохраняя циклы вычисления и, в свою очередь, потребляемую мощность. Способы пространственной и/или временной маскировки могут быть использованы для замены данных объединенных уровней (базового уровня и уровня усовершенствования).
Уровень улучшения (иногда трактуемый как уровень низкого приоритета) может быть передан на малой мощности в отличие от базового уровня (или уровня высокого приоритета). Это увеличивает вероятность ошибки на уровне улучшения по базовому уровню. Следовательно, если принятый базовый уровень содержит высокий процент ошибок, то уровень улучшения потенциально может быть пропущен.
Предсказанные двунаправленные кадры (B-кадры) предсказываются как из предыдущего кадра, так и из последующего кадра, используя предсказание с компенсацией движения. B-кадры предлагают очень высокие степени сжатия и крайне желательны для сохранения пропускной способности. B-кадры также желательны для их характеристик временной масштабируемости. Совместимые со стандартами B-кадры не используются для предсказания любых других кадров, и в связи с этим они могут быть пропущены, не затрагивая другие кадры. B-кадры также наиболее восприимчивы к распространению ошибок из-за ошибок в кадрах, от которых они зависят. В связи с этим B-кадры с наибольшей вероятностью будут находиться на уровне улучшения (или низкого приоритета). Если уровень улучшения передается на малой мощности, то B-кадры еще более восприимчивы к ошибкам.
Если B-кадр (или любой другой тип кадра) полностью поврежден или имеет процент содержания ошибок выше порога, делающего временную или пространственную маскировку ошибок невыполнимой, то может быть использовано преобразование частоты кадров (компонент 44 FRUC, изображенный на Фиг.2). Преобразование частоты кадров (FRUC) используется для восстановления потерянного кадра. Преобразование частоты кадров (FRUC) также может быть использовано для восстановления кадра, который был освобожден от декодирования в целях, например, экономии энергии. Методы преобразования частоты кадров (FRUC) используют вектор движения и информацию пикселя из предыдущего и последующего кадров для интерполяции значений для векторов движения и пикселей. Соответствующие методы преобразования частоты кадров (FRUC) не включены в контекст настоящего обсуждения. Методы преобразования частоты кадров (FRUC) включают в себя форму «только кодер» и «только декодер». Метод преобразования частоты кадров (FRUC) «только декодер» выполняет псевдоинтерполяцию данных кадра без другой информации. Метод преобразования частоты кадров (FRUC) «только кодер» использует стороннюю информацию, переданную в сообщениях дополнительной информации улучшения (SEI) стандарта H.264 или в сообщении пользовательских данных стандарта MPEG-2.
Фиг.6 изображает блок-схему примера системы компонентов, которая может являться частью мультимедиа-приемника, например, приемника 24, изображенного на Фиг.1. Система 600 является системой многоуровневой интеграции, используемой для устранения ошибок. Фиг.7 изображает блок-схему процесса устранения ошибок, который может быть использован системой 600. Что касается Фиг.6 и 7, процесс 700 на этапе 705 принимает один или несколько потоков мультимедийных данных. Потоки данных могут включать в себя видеоданные, аудиоданные и/или текстовую информацию скрытых титров и др. Принятые один или несколько потоков могут содержать закодированные данные. Закодированные данные могут являться преобразованными данными, квантованными данными, сжатыми данными или их комбинациями. Средство приема, такое как изображенный на Фиг.1А приемник 24, на этапе 705 может принять один или несколько потоков. В дополнение к приему множества потоков мультимедийных данных каждый принятый поток может содержать множество уровней, таких как базовый уровень и уровень улучшения. Приемник 24 может являться проводным или беспроводным приемником или их комбинацией.
Ошибки, оставшиеся в битовом потоке, обнаруживаются на этапе 710. Обнаруженные ошибки могут содержать ошибки, оставшиеся после коррекции ошибок на нижнем уровне, и протоколы обнаружения, содержащие некоторые из откорректированных ошибок, которые были введены посредством передачи по каналу, такому как беспроводный канал 26 или проводной канал 28 (Фиг.1A). Как обсуждалось выше, не все ошибки являются корректируемыми, и любой из протоколов нижнего уровня может пометить поврежденные данные и/или группы данных, которые содержат ошибки. Протоколы нижнего уровня, используемые на этапе 710 для обнаружения ошибок, могут быть осуществлены на уровне связи, как обсуждалось выше. Уровни связи могут являться одним элементом из множества, содержащего физический уровень, МАС-уровень (или потоковый уровень) и транспортный уровень, или комбинацией этих элементов. Средство обнаружения, такое как изображенный на Фиг.6 блок 605 обнаружения ошибок, на этапе 710 может выполнить обнаружение ошибок. Блок 605 обнаружения ошибок может использовать различные схемы обнаружения, известные специалистам в данной области техники, например, схемы кода Рида-Соломона и/или турбо, как обсуждалось выше. Обнаружение ошибок может произойти из-за повреждения контрольной циклической суммы (CRC) в турбодекодере. Обнаружение ошибок может произойти из-за сбоя декодера Рида-Соломона.
Над обнаруженными ошибками можно осуществлять контроль (на этапе 715) посредством нескольких способов. Этап 715 контроля может содержать этап маркировки (или пометки) поврежденных данных, как обсуждалось выше. Этап 715 контроля может содержать этап ограничения распространения ошибок посредством идентификации групп данных, например, пакетов, блоков, частей, кадров, макроблоков, субмакроблоков, которые содержат обнаруженные ошибки. Этап 715 контроля может быть основан на протоколе транспортного уровня. Такой протокол может пометить ошибки, оставшиеся после кодирования одного или нескольких битов в заголовке транспортного уровня, для использования верхними уровнями (Фиг.1B и 1С). Верхние уровни могут использовать индикаторы ошибок заголовка транспортного уровня для дополнительной идентификации и/или ограничения распространения пакетов верхнего уровня, состоящих из одного или нескольких поврежденных пакетов транспортного уровня, таким образом дополнительно ограничивая распространение ошибок в битовых потоках верхнего уровня. Средство контроля, такое как изображенный на Фиг.6 блок 610 контроля ошибок, может выполнить задачи контроля ошибок.
На этапе 720 определяется распределение ошибок. В одном аспекте распределение ошибок определяется на основе протокола уровня синхронизации. Один или несколько битовых потоков, которые были приняты на этапе 705, могут быть разобраны на уровне синхронизации. Если уровень синхронизации принимает от одного из нижних уровней, например, от уровня связи, информацию, маркирующую поврежденные данные, то она может идентифицировать поврежденные части битовых потоков. Наличие такой информации может предоставить протоколу уровня синхронизации возможность планирования маскировки ошибок на верхнем уровне (например, прикладном уровне) и/или стратегии устранения ошибок. В зависимости от размера поврежденных данных могут быть применены другие стратегии. Пакеты транспортного уровня, которые могут быть помечены как поврежденные, могут быть объединены в пакеты уровня синхронизации, которые будут переданы различным компонентам прикладного уровня, в зависимости от того, частью какого битового потока они являются. Пакеты транспортного уровня могут иметь неизменную длину, а пакеты уровня синхронизации - переменную. Уровень синхронизации может идентифицировать распределение ошибок посредством вставки данных для идентификации того, какая часть пакета синхронизации переменной длины содержит поврежденный пакет транспортного уровня. В дополнение к использованию информации о контроле ошибок (этап 715) протокол уровня синхронизации может включать в себя дополнительные способы обнаружения ошибок. Эти способы обнаружения ошибок могут включать в себя проверяющую контрольную циклическую сумму (CRC) пакетов уровня синхронизации. Определенное распределение ошибок может быть дополнительно передано компонентам прикладного уровня посредством вставки маркировок ошибок в разобранные пакеты данных. Средство определения, такое как блок 615 определения распределения ошибок, может определить распределение ошибок (этап 720).
На этапе 725 может быть выполнено устранение ошибок в частях одного или нескольких закодированных потоков мультимедийных данных. Устранение ошибок может быть основано на протоколах прикладного уровня. Компоненты прикладного уровня могут выполнить устранение ошибок. Компоненты прикладного уровня могут определить, какой тип устранения ошибок использовать на основе информации, принятой от уровня синхронизации, как обсуждалось выше. Устранение ошибок может включать один элемент из множества, содержащего временную маскировку ошибок, пространственную маскировку ошибок, частоту преобразования кадров (FRUC) или комбинацию этих элементов, как обсуждалось выше, а также другие способы. Маскировка обнаруженных ошибок в одном или нескольких потоках мультимедийных данных может быть основана на протоколе прикладного уровня. Устранение ошибок также может поддерживать масштабируемость одного или нескольких потоков данных. Масштабируемость может включать в себя либо пространственную, либо временную масштабируемость, либо обе, как обсуждалось выше. Средство устранения ошибок, такое как изображенный на Фиг.2А компонент 40 устранения ошибок, может выполнить устранение ошибок на этапе 725. Средство маскировки ошибок, такое как блок 620 маскировки ошибок, может выполнить маскировку ошибок. Средство масштабирования, такое как изображенные на Фиг.2А и 6 компоненты 42 и 620 масштабирования, может поддерживать масштабируемость при выполнении устранения ошибок на этапе 725.
Процесс 700 может включать в себя этап 730 восстановления одного или нескольких битовых потоков. Этап 730 восстановления может содержать этап объединения безошибочно принятых данных с маскированными данными. Этап восстановления может включать в себя этап сокращения частоты кадров (форма временной масштабируемости), количество которых превышает порог ошибок в кадре. Этап восстановления может содержать принятие решения не декодировать, маскировать или корректировать уровень улучшения (форма масштабируемости SNR). Протоколы прикладного уровня могут являться базисом для этапа 730 восстановления. Средство восстановления, такое как блок 630 восстановления потока данных, может выполнить восстановление на этапе 725. Один или несколько элементов могут быть добавлены, перестроены или объединены в системе 600. Один или несколько элементов могут быть добавлены, перестроены или объединены для процесса 700.
Примеры вышеописанных способов и устройства включают в себя нижеследующее.
Способ декодирования мультимедийных данных, включающий в себя этапы приема битового потока, выполнения декодирования с контролем ошибок принятого битового потока, причем этап декодирования с контролем ошибок содержит этап идентификации поврежденных битов, которые не были откорректированы, передачи битового потока, декодированного с контролем ошибок, содержащего идентифицированные поврежденные биты декодеру, замены, по меньшей мере, одного из идентифицированных битов, и декодирования битового потока, декодированного с контролем ошибок, содержащего замененные биты. В одном аспекте способ дополнительно включает в себя этап разбора битового потока, декодированного с контролем ошибок, на один или несколько символов, а также этап разбора информации, идентифицирующей поврежденные биты, из условия, чтобы любые символы, содержащие поврежденные биты, были идентифицированы в качестве поврежденных. В другом аспекте способ дополнительно включает в себя этап построения таблицы ошибок, содержащей разобранную информацию, идентифицирующую поврежденные биты, где таблица ошибок содержит информацию, маркирующую идентифицированные биты для позиций в последовательности видеокадров. В другом аспекте способ дополнительно включает в себя этап разбора битового потока, закодированного с контролем ошибок, на первый разобранный битовый поток и второй разобранный битовый поток, где первый разобранный битовый поток является битовым потоком базового уровня, а второй разобранный битовый поток является битовым потоком уровня улучшения.
Способ декодирования мультимедийных данных, включающий в себя этапы приема битового потока, выполнения декодирования с контролем ошибок принятого битового потока, где этап декодирования с контролем ошибок содержит этап идентификации поврежденных битов, которые не были откорректированы, передачи битового потока, декодированного с контролем ошибок, содержащего идентифицированные поврежденные биты, декодеру, замены, по меньшей мере, одного из идентифицированных битов, посредством выполнения преобразования частоты кадров между первым кадром и вторым кадром, и декодирования битового потока, декодированного с контролем ошибок.
Специалистам в данной области техники должно быть понятно, что информация и сигналы могут быть представлены, используя любое разнообразие различных технологий и методов. Например, данные, инструкции, команды, информация, сигналы, биты, символы и элементарные сигналы, на которые можно сослаться всюду по вышеупомянутому описанию, могут быть представлены посредством напряжений, токов, электромагнитных волн, магнитных полей или частиц, оптических полей или частиц или любой их комбинацией.
Специалистам в данной области техники также должно быть понятно, что различные иллюстративные логические блоки, модули и этапы алгоритма, описанные со ссылкой на раскрытые в настоящем документе примеры, могут быть осуществлены в качестве электронных аппаратных средств, встроенного программного обеспечения, программного обеспечения, микропрограммных средств, микропрограмм или их комбинации. Для четкой иллюстрации этой взаимозаменяемости аппаратных средств и программного обеспечения различные иллюстративные компоненты, блоки, модули, схемы и этапы были описаны выше, в целом, на основе их функциональных возможностей. Осуществлены ли такие функциональные возможности в качестве аппаратных средств или программного обеспечения зависит от конкретной цели и ограничений структуры, наложенных на всю систему. Специалисты могут осуществить описанные функциональные возможности различными способами для каждой конкретной цели, но такие решения осуществления не должны интерпретироваться в качестве отступления от объема раскрытых способов.
Различные иллюстративные логические блоки, компоненты, модули и схемы, описанные со ссылкой на раскрытые примеры, которые в настоящем документе могут быть осуществлены или выполнены с помощью универсального процессора, цифрового сигнального процессора (DSP), специализированной интегральной схемы (ASIC), вентильной матрицы с эксплуатационным программированием (FPGA) или другого программируемого логического устройства, логического элемента на дискретных компонентах или транзисторной логики, дискретных компонентов аппаратных средств или любой их комбинации, предназначены для выполнения описанных в настоящем документе функций. Универсальный процессор может являться микропроцессором, но альтернативно, процессор может являться любым обычным процессором, контроллером, микроконтроллером или конечным автоматом. Процессор также может быть осуществлен в качестве комбинации вычислительных устройств, например, комбинации цифрового сигнального процессора (DSP) и микропроцессора, множества микропроцессоров, одного или нескольких микропроцессоров совместно с ядром цифрового сигнального процессора (DSP) или любой другой подобной конфигурации.
Этапы способа или алгоритма, описанные со ссылкой на раскрытые в настоящем описании примеры, могут быть воплощены непосредственно в аппаратных средствах, в программном модуле, выполняемом с помощью процессора, или в их комбинации. Программный модуль может постоянно находиться в памяти оперативного запоминающего устройства (RAM), флэш-памяти, памяти постоянного запоминающего устройства (ROM), памяти стираемого программируемого запоминающего устройства (EPROM), памяти электрически стираемого программируемого запоминающего устройства (EEPROM), регистрах, на жестком диске, на съемном диске, компакт-дисковом запоминающем устройстве (CD-ROM) или в любой другой форме, известной в уровне техники носителей данных. Иллюстративный носитель данных соединяется с процессором из условия, чтобы процессор мог считывать и записывать информацию на носитель данных. Альтернативно носитель данных может являться неотъемлемой частью процессора. Процессор и носитель данных могут постоянно находиться в специализированной интегральной схеме (ASIC). Специализированная интегральная схема (ASIC) может постоянно находиться в беспроводном модеме. Альтернативно, процессор и носитель данных могут постоянно находиться в качестве дискретных компонентов в беспроводном модеме.
Предшествующее описание раскрытых примеров обеспечено с целью предоставления любому специалисту в данной области техники возможности создания или использования раскрытых способов и устройств. Различные модификации этих примеров будут очевидны специалистам в данной области техники, кроме того, определенные в настоящем описании принципы могут быть применены к другим примерам, а также могут быть добавлены дополнительные элементы.
Таким образом, были описаны способы и устройство для декодирования потоковой передачи мультимедийных данных в реальном времени с использованием информации, маркирующей поврежденные биты и поврежденные данные, в приложении декодера для выполнения интеллектуальной маскировки ошибок и коррекции ошибок поврежденных данных.