СПОСОБ И УСТРОЙСТВО ДЛЯ СИНХРОНИЗАЦИИ СИЛЬНО СЖАТЫХ ДАННЫХ УЛУЧШАЮЩЕГО СЛОЯ
METHOD AND APPARATUS FOR SYNCHRONISING HIGHLY COMPRESSED ENHANCEMENT LAYER DATA

Область техники, к которой относится изобретение
Это изобретение относится к способу и устройству для кодирования с сильным сжатием данных улучшающего слоя, относящихся к данным основного слоя, и к способу и устройству для соответствующего декодирования сильно сжатых данных улучшающего слоя, в котором определяется синхронизация между данными улучшающего слоя и соответствующими данными основного слоя.
Уровень техники
Некоторые форматы данных мультимедийных приложений используют иерархические слои данных с основным слоем (BL) и одним или более улучшающими слоями (EL) данных. Данные в слое зачастую пакетизированы, т.е. организованы в виде пакетов или кадров, в то время как сам по себе сигнал основного слоя можно декодировать для получения воспроизводимых мультимедийных данных, и он включает в себя всю информацию для базового декодирования, сигнал улучшающего слоя включает в себя дополнительную информацию, которая не может быть декодирована сама по себе для получения полезных мультимедийных данных. Вместо этого данные улучшающего слоя тесно связаны с данными основного слоя и представляют ценность только совместно с ними. Обычно данные основного слоя и улучшающего слоя складываются или совмещаются друг с другом либо для совместного декодирования, либо после их индивидуального декодирования. В любом из этих случаев необходимо синхронизовать данные улучшающего слоя и основного слоя, иначе данные улучшающего слоя не будут содержать никакой полезной информации.
Общепринято проверять целостность каждого подпотока битов индивидуально, т.е. посредством механизмов индивидуальных контрольных сумм CRC или прямого исправления ошибок (FEC). Обычно такие схемы CRC или FEC применяются для отдельных блоков или сигнальных кадров подпотоков битов. Если декодирование начинается с синхронизованных позиций в подпотоках битов и если к тому же ни для одного из подпотоков битов не обнаружены ошибки передачи, декодер будет полагать, что иерархические потоки битов синхронизованы. Однако, поскольку этот метод обеспечивает достоверность приема только индивидуально защищенных блоков потока битов, все еще могут оставаться необнаруженными ошибки, например, если один из защищенных блоков подпотока битов полностью утерян.
Кроме того, желательно удерживать скорость передачи данных настолько низкой, насколько это возможно, что ведет к сложным методам сжатия данных. Недостаток подходов CRC и FEC состоит в том, что обычно для каждого блока потока битов должен передаваться значительный объем дополнительных данных. Поэтому для неравномерно распределенных слов данных часто используется кодирование с переменной длиной. При кодировании с переменной длиной (VLC) слова данных, которые встречаются чаще, т.е. с более высокой вероятностью, кодируются в более короткие кодовые слова, тогда как слова данных, которые встречаются с более низкой вероятностью, кодируются в более длинные кодовые слова. Таким образом, среднее количество битов в кодированных сообщениях меньше, чем при использовании постоянной длины кодовых слов. Однако методы сильного сжатия, такие как кодирование VLC, более чувствительны к ошибкам в разрядах, которые могут привести к полной потере данных. Например, для кодирования VLC бывает невозможно определить, какие биты являются частью кодового слова, если синхронизация утеряна. Поэтому общепринятым решением для ограничения возможной потери данных является вставка уникальных синхронизационных слов, которые могут быть распознаны с очень высокой вероятностью. Однако синхронизационные слова увеличивают скорость передачи данных, и чем больше используется синхронизационных слов, тем выше скорость передачи данных. Более того, дополнительное неудобство применения методов CRC или FEC к блокам подпотоков битов состоит в большой сложности обработки блоков, которые имеют различные длины и не имеют заголовков, как при кодировании VBR.
Чтобы сделать возможным обнаружение ошибок в разрядах при передаче или сохранении данных, общепринятым способом является вычисление контрольных сумм кодированных данных и передача или сохранение также этих контрольных сумм. Известны различные типы контрольных сумм для обнаружения или для корректировки определенных ошибок в разрядах. Однако, чем выше количество информации в контрольной сумме, тем больше требуется битов. Таким образом, чем более полезна контрольная сумма, тем больше она увеличивает скорость передачи данных.
Раскрытие изобретения
С учетом описанного выше проблема, которую решает настоящее изобретение, состоит в обеспечении способа и формата кодирования для потока сильно сжатых данных улучшающего слоя, который имеет отношение к пакетизированному потоку данных основного слоя, с тем чтобы было возможно по меньшей мере обнаруживать потерю синхронизации между данными улучшающего слоя и данными основного слоя во время декодирования, в то время как количество синхронизирующей (sync) информации и контрольной информации в потоке данных улучшающего слоя удерживается низким.
Кроме того, еще одной проблемой, решаемой посредством настоящего изобретения, является обеспечение соответствующего способа и устройства декодирования. В частности, способ и устройство декодирования должны быть в состоянии по меньшей мере обнаруживать потерю синхронизации между данными улучшающего слоя и данными основного слоя во время декодирования. После такого обнаружения они должны быть в состоянии по меньшей мере способствовать снижению нарушений.
Настоящее изобретение обеспечивает следующие решения для описанных выше проблем.
В принципе, изобретение основано на признании того факта, что пакеты, которые содержат кодированные данные переменной длины, обычно имеют свободное пространство в своих битах заполнения, которое может быть использовано для добавления контрольной суммы, и что контрольная сумма также может использоваться для обнаружения потери синхронизации или для других синхронизационных целей. По этой причине контрольная сумма относится как к пакетным данным декодированного основного слоя, так и к декодированным данным улучшающего слоя. Хотя свободные биты заполнения имеют не все пакеты, но по меньшей мере большинство из них, в среднем каждый пакет имеет (n-1)/2 битов заполнения в предположении, что n битов составляют байт. Хотя это переменное количество битов в пакете может быть недостаточным для исправления ошибок с высокой сложностью, было установлено, что оно является достаточным для упомянутых целей, связанных с синхронизацией. Это позволяет, например, с успехом обнаруживать потери синхронизации после нескольких пакетов, даже если кодирование улучшающего слоя предоставляет очень ограниченную служебную информацию, например, без заголовков пакетов и без синхронизационных слов пакетов.
В одном аспекте настоящее изобретение обеспечивает способ кодирования потока данных основного слоя и соответствующего потока данных улучшающего слоя, содержащий этапы, на которых
вычисляют общую контрольную сумму потока данных основного слоя и потока данных улучшающего слоя,
кодируют данные основного слоя в пакетах основного слоя индивидуальной длины, причем слова данных в пакете имеют постоянную длину (например, байт-ориентированную структуру), а каждый пакет имеет часть, являющуюся заголовком, который содержит по меньшей мере синхронизационное слово и показатель индивидуальной длины пакета,
кодируют данные улучшающего слоя в пакетах улучшающего слоя индивидуальной длины, причем каждый пакет улучшающего слоя соответствует конкретному пакету основного слоя, а слова данных в пакете улучшающего слоя имеют переменную длину (т.е. не байт-ориентированную структуру) и пакеты не содержат ни заголовка, ни начального синхронизационного слова пакета, ни показателя длины пакета, а количество слов данных улучшающего слоя, закодированных в пакет, зависит от количества слов данных основного слоя, закодированных в соответствующий пакет основного слоя,
отображают закодированные пакеты улучшающего слоя на байт-ориентированную структуру, в которой байт содержит n битов, и некоторое количество битов заполнения в последнем байте пакета остается неиспользованным, количество может составлять от нуля до n-1, определяют количество битов заполнения для пакета улучшающего слоя,
извлекают некоторое количество младших значащих битов (LSB) из контрольной суммы, относящейся к упомянутому пакету улучшающего слоя и его соответствующему пакету основного слоя, количество равно упомянутому определенному количеству битов заполнения, и вставляют извлеченные биты LSB контрольной суммы в упомянутые биты заполнения.
Длина отдельных пакетов основного слоя может быть определена посредством их содержимого в соответствии с использованным форматом мультимедийного приложения. Например, формат кодирования звука MP3 (MPEG-I Layer III) или формат кодирования изображения AVC имеют переменные зависящие от содержания длины пакетов.
Кроме того, следует отметить, что количество значений в пакете (т.е. в информации) одинаково до и после энтропийного кодирования, в то время как количество битов или байтов обычно различно.
B
В одном варианте осуществления каждый пакет потока данных основного слоя (BL) имеет один соответствующий пакет потока битов улучшающего слоя (EL), а каждое значение данных в пакете основного слоя имеет соответствующее значение улучшающих данных в пакете улучшающего слоя. Например, если пакет основного слоя имеет определенное количество X значений, соответствующий пакет улучшающего слоя имеет столько же улучшающих значений, одно улучшающее значение для каждого из соответствующих значений основного слоя.
B1
B2
B1
В другом варианте осуществления, в котором каждый пакет потока данных основного слоя имеет один соответствующий пакет потока битов улучшающего слоя, каждое значение данных только определенного типа (типов) в пакете основного слоя имеет соответствующее значение улучшающих данных в пакете улучшающего слоя. Например, если пакет основного слоя имеет X значений первого типа и X значений второго типа, соответствующий пакет улучшающего слоя может иметь такое же количество X улучшающих значений, относящихся только к значениям основного слоя первого типа.
В одном варианте осуществления данные основного слоя и данные улучшающего слоя расположены последовательно, например хранятся в одном файле, а данные улучшающего слоя содержат не более одного синхронизационного слова.
В соответствии с другим аспектом изобретения кодированный сигнал мультимедиа состоит из первой и второй частей, первая часть содержит выровненные по байтам энтропийно кодированные пакеты аудиопотока битов основного слоя, а вторая часть содержит выровненные по байтам энтропийно кодированные пакеты улучшающего слоя, содержащие данные улучшающего слоя переменной длины, причем пакеты основного слоя содержат синхронизационную информацию, а пакеты улучшающего слоя не содержат синхронизационную информацию (по меньшей мере нет заголовков пакетов) и пакеты улучшающего слоя содержат кодированные параметры, подходящие для улучшенного декодирования соответствующих пакетов основного слоя, последний байт пакета улучшающего слоя содержит индивидуальное переменное количество N битов заполнения (т.е. разные пакеты улучшающего слоя могут иметь различное индивидуальное количество битов заполнения). Биты заполнения содержат N битов LSB контрольной суммы двух пакетов, а именно пакета улучшающего слоя из второй части аудиосигнала и соответствующего пакета основного слоя из первой части аудиосигнала. Контрольная сумма была вычислена до энтропийного кодирования, т.е. она относится не к полученным данным, а к энтропийно декодированным данным.
В соответствии с еще одним аспектом изобретения метод декодирования потока битов основного слоя и соответствующего потока битов улучшающего слоя, причем поток битов улучшающего слоя содержит улучшающие данные переменной длины для улучшенного декодирования потока битов основного слоя, содержит этапы, на которых энтропийно декодируют части потока битов основного слоя, получая первый энтропийно декодированный пакет основного слоя, энтропийно декодируют части потока битов улучшающего слоя, получая улучшающие данные для улучшенного декодирования части потока битов основного слоя, определяют количество N битов заполнения в последнем байте потока битов улучшающего слоя и извлекают и/или сохраняют биты заполнения, вычисляют контрольную сумму первого декодированного пакета основного слоя и упомянутых улучшающих данных из энтропийно декодированной части потока битов улучшающего слоя, извлекают N младших значащих битов (LSB) вычисленной контрольной суммы, где N равно определенному количеству битов заполнения, сравнивают извлеченные N младших значащих битов вычисленной контрольной суммы с N извлеченными битами заполнения, и если они равны, декодируют поток битов основного слоя с использованием упомянутых улучшающих данных и данных потока битов основного слоя, в противном случае декодируют поток битов основного слоя с использованием упрощенного декодирования, в котором данные из потока битов улучшающего слоя не используются или игнорируются.
Длина пакета основного слоя (до или после декодирования) может являться предопределенной или указанной в его заголовке, в то время как длина (в битах) пакета улучшающего слоя не указывается и должна быть получена во время процесса декодирования, например, с использованием информации из соответствующего пакета основного слоя. В одном варианте осуществления количество кодированных значений в пакете улучшающего слоя равно количеству предопределенных типов значений в соответствующем пакете основного слоя и декодирование содержит этапы, на которых определяют на основе пакета основного слоя количество значений, подлежащих декодированию из пакета улучшающего слоя, и декодируют из данных улучшающего слоя определенное количество значений. В другом варианте осуществления количество значений в пакете улучшающего слоя является предопределенным.
Предпочтительные варианты осуществления изобретения раскрыты в зависимых пунктах формулы изобретения, последующем описании и фигурах.
Краткое описание чертежей
Иллюстративные варианты осуществления изобретения описаны со ссылкой на сопровождающие чертежи.
Фиг.1 - структура формата потока с основным слоем и улучшающим слоем;
Фиг.2 - структура пакетизированного основного слоя;
Фиг.3 - структура пакетизированного улучшающего слоя, включающего в себя биты заполнения;
Фиг.4 - сравнение иллюстративного принятого и вычисленного синхронизационных слов для обнаружения потери синхронизации;
Фиг.5 - блок-схема аудиокодера для создания данных формата MP3 основного слоя и аудиоданных улучшающего слоя;
Фиг.6 - блок-схема декодера для данных формата MP3 основного слоя и аудиоданных улучшающего слоя; и
Фиг.7 - подробная блок-схема замены битов заполнения в аудиокодере.
Осуществление изобретения
Фиг.1 показывает поток данных, содержащий основной слой 10 и улучшающий слой 11. Улучшающий слой называется здесь также слоем расширения. Поскольку поток данных ограничен, он также упоминается как блок данных. Слой расширения в описанном и изображенном варианте осуществления следует за основным слоем, так что они оба могут последовательно использовать один и тот же канал для передачи или сохранения. В другом варианте осуществления оба слоя могут использовать отдельные каналы, так что они могут одновременно быть переданы, приняты, сохранены или считаны из запоминающего устройства.
В этом примере основной слой 10 содержит аудиоданные формата MP3, как показано на фиг.2, а улучшающий слой 11 содержит данные для улучшенного декодирования аудиоданных. Блок данных основного слоя разделяется на кадры 12, 21, 22. Начало кадра основного слоя, например MP3-кадр, обозначено уникальным синхронизационным словом 23. Соответствующий декодер, например MP3-декодер, анализирует поток данных в поисках синхронизационного слова 23 до тех пор, пока не найдет начало MP3-кадра, и декодирует спектральные значения найденного MP3-кадра. Если существует ошибка в разрядах в данных кадра, то декодированные данные являются ошибочными и кадр 21 отбрасывается. Однако следующий кадр 22 может быть найден по следующему синхронизационному слову и декодирование может продолжаться, так что никаких дополнительных кадров потеряно не будет.
Изобретение объясняется на основе формата и процесса декодирования, используемого для аудиоданных усовершенствованного формата MP3. Декодер называется декодером "hd3", а соответствующий кодер - кодером "hd3". В качестве альтернативы он может быть назван "mp3HD". Так называемый формат "hd3" потока битов включает в себя слой формата MP3 в качестве основного слоя 10 и по меньшей мере один дополнительный улучшающий слой или слой 11 расширения. MP3-кадры 12 формируют один связный блок 10 данных из hd3-файла, а слой 11 расширения формирует последующий связный блок улучшающих данных. В одном варианте осуществления основной слой 10 и слой 11 расширения образуют полную звуковую дорожку (или нечто подобное). В другом варианте осуществления для исключительно длинных дорожек возможно, что связный блок данных основного слоя и последующий связный блок данных улучшающего слоя формируют только часть дорожки, а полная звуковая дорожка состоит из двух или более пар блоков данных.
Блок 11 данных слоя расширения также структурирован в виде кадров, как показано на фиг.3. Однако для снижения пропускной способности он очень сильно сжат. Поэтому значения улучшающего слоя кодируются с помощью кодирования с переменной длиной, а кадры слоя расширения не начинаются с синхронизационного слова. Вместо этого кадры просто добавляются последовательно. Кроме того, кодовые слова в кадрах улучшающего слоя просто добавляются последовательно независимо от байтовых структур. Таким образом, границы кадров слоя расширения не обнаруживаются непосредственно, а должны быть найдены в соответствии с определенным алгоритмом декодирования, который содержит декодирование определенного количества значений в каждом кадре.
Из-за кодирования с переменной длиной ошибка в разрядах будет не только нарушать текущее значение, но она также будет приводить к неизвестной длине текущего значения, так что начало всех последующих значений в кадре является неопределенным. Кроме того, из-за отсутствующих синхронизационных слов кадров будет невозможно определить обычным путем дальнейшие кадры в блоке данных улучшающего слоя.
Например, код Голомба (Golomb) может быть использован в качестве кода с переменной длиной. Код Голомба может быть использован для представления ограниченного диапазона неотрицательных целых чисел, что является достаточным, например, для данных формата MP3 и улучшающих данных формата MP3. В принципе, этот код также может быть использован для других мультимедийных данных. Кодовое слово строится из частного и остатка деления, частное имеет унарное представление, остаток имеет бинарное представление и оба относятся к одному и тому же делителю. Например, если делитель равен восьми, значение двадцать один представляется как "11 0 101": первые биты "11" представляют собой частное деления (два) в унарном представлении, следующий ноль является разделителем и последние биты "101" представляют собой остаток, равный пяти. Так как количество битов в остатке зависит от предопределенного делителя, то он является фиксированным. Однако, если начальный унарный код или разделитель искажены вследствие ошибки в разрядах, то невозможно определить длину кодового слова. Таким образом, и последующие кодовые слова не могут быть обнаружены. Эта проблема одинаковым образом касается всех кодов с переменной длиной, так что это изобретение полезно также для других кодов с переменной длиной.
Как описано выше, проблема, возникающая в результате кодирования, состоит в том, что после ошибки в разрядах последующие части потока данных улучшающего слоя не могут быть использованы с помощью способов предшествующего уровня техники. Другой еще худшей проблемой является то, что эта ошибка не обнаруживается с помощью способов предшествующего уровня техники, поэтому при декодировании будут использоваться неверные данные улучшающего слоя. Это будет, например, в случае аудиоданных искажать воспроизведение звука, так что декодированный аудиосигнал, полученный из данных основного слоя и не синхронизированных данных улучшающего слоя, будет еще хуже, чем правильно декодированные данные только основного слоя. В общем случае использование неправильно синхронизированных данных улучшающего слоя нарушает использование в противном случае правильных данных основного слоя.
Согласно настоящему изобретению представлено следующее решение этой проблемы: вследствие переменной длины кодирования данных улучшающего слоя в пределах кадра и вследствие того, что данные, кодированные с переменной длиной, отображаются на байтовую структуру для последующей обработки, последний байт кадра улучшающего слоя может содержать биты заполнения. Они, как правило, устанавливаются равными нулю и игнорируются. Кроме того, количество битов заполнения меняется от кадра к кадру, так как кадры могут иметь разную длину в битах вследствие переменной длины кода. Настоящее изобретение содержит перед энтропийным кодированием вычисление общей контрольной суммы кадра основного слоя и соответствующего кадра улучшающего слоя и запись как можно большего количества битов, предпочтительно битов LSB, контрольной суммы в биты заполнения, которые остаются после энтропийного кодирования. Хотя обычные декодеры не будут в состоянии использовать эту информацию и, следовательно, будут ее игнорировать, декодер в соответствии с аспектом декодирования настоящего изобретения использует эту информацию по меньшей мере для обнаружения, синхронизированы ли кадр основного слоя и кадр улучшающего слоя.
Согласно одному аспекту изобретения декодер декодирует определенное количество значений из данных улучшающего слоя для каждого пакета, начиная с определенной начальной позиции. Затем декодер считывает оставшиеся лишние биты за последним байтом текущего кадра улучшающего слоя, которые обычно устанавливаются равными нулю. Однако в кадре улучшающего слоя в соответствии с изобретением эти биты содержат биты LSB контрольной суммы. Поэтому декодер извлекает/сохраняет эти биты, вычисляет контрольную сумму декодированного кадра основного слоя и текущего декодированного кадра улучшающего слоя и сравнивает извлеченную/сохраненную контрольную сумму с соответствующим количеством битов LSB вычисленной контрольной суммы. Если оба значения контрольных сумм равны, то предполагается, что кадр основного слоя и кадр улучшающего слоя были декодированы правильно и принадлежат друг другу, т.е. потоки синхронны.
В улучшенном варианте осуществления также может быть предусмотрена возможность восстановления синхронизации после того, как была обнаружена ошибка синхронизации. Это было бы возможно, например, посредством декодирования после потери синхронизации последующего кадра основного слоя, декодирования определенного количества значений из кадра улучшающего слоя, извлечения из последнего байта кадра улучшающего слоя оставшихся битов, вычисления контрольной суммы декодированных кадров основного и улучшающего слоев и сравнения контрольной суммы с извлеченными битами заполнения. В случае несоответствия стартовая позиция в улучшающем слое побитно смещается и процедура для улучшающего слоя повторяется. Если в соответствующих кадрах основного и улучшающего слоев нет ошибок в разрядах, то с помощью этого метода можно найти эти кадры в потоке и таким образом выполнить повторную синхронизацию. В одном варианте осуществления описанный процесс используется для восстановления поврежденного потока улучшающего слоя на этапе постобработки. Для этого ошибка в разрядах в пакете улучшающего слоя обнаруживается, как описано ранее, следующий правильный пакет улучшающего слоя определяется, как описано выше, и ошибочный пакет улучшающего слоя изменяется таким образом, чтобы выполнить требования формата. В другом варианте осуществления, в котором кадры улучшающего слоя являются более надежными, чем кадры основного слоя (например, без ошибок вследствие более высокого качества условий приема), может определяться или восстанавливаться соответствующий пакет основного слоя для заданного пакета улучшающего слоя.
Как описано выше, правильное декодирование данных улучшающего слоя гарантирует, что основной слой и улучшающий слой могут быть синхронизированы. В описанном ниже варианте осуществления, относящемся к формату MP3, декодер представляет собой частичный декодер слоя расширения. Декодирование улучшающего слоя начинается с определенной позиции в блоке данных или файле, а именно после последнего кадра данных основного слоя. Начало данных улучшающего слоя может быть простым для нахождения, например, если он находится в отдельном файле или потоке. В случае одного файла или канала для основного и улучшающего слоев указатель на эту позицию может быть предоставлен в заголовке файла. Дополнительная возможность заключается в том, что блок 11 улучшающего слоя начинается со специального указателя (например, конкретного синхронизационного слова). Однако улучшающий слой не имеет дальнейших дополнительных байт для целей синхронизации.
В варианте осуществления, представляющем, например, кодек hd3, используется алгоритм точного побитового энтропийного кодирования. Этот алгоритм использует переменные длины кодового слова, изменяя длину кодового слова в соответствии с энтропийной частой появления символа. Поэтому длина каждого из кадров в битах является переменной и кадр не заканчивается непосредственно на границе байта. Чтобы позволить побайтовую нарезку слоя расширения или переходы к началам конкретных кадров расширения (которые могут быть известны, например, из таблицы, хранимой в заголовке файла), длина кадра всегда округляется до границы следующего байта с использованием битов заполнения. Таким образом получается среднее значение, равное 3,5 битов заполнения на кадр (при условии, что каждый байт состоит из восьми битов), и они могут быть использованы в соответствии с изобретением. В общем случае, если байт содержит k битов, это будет (k-1)/2 битов.
Как отмечалось выше, проблема для такого рода потоков битов состоит в том, что ошибка в потоке битов будет не только приводить к ошибкам в текущем кадре, но также будет нарушать синхронизацию. Кроме того, в описанных выше иерархических форматах MP3 потоков битов слой расширения должен быть синхронизирован с основным слоем, поскольку кадр слоя расширения требует частично декодированных значений его специфического MP3-кадра для восстановления кодированного сигнала. Поэтому для поддержания синхронизации слоя расширения должно быть гарантировано, что MP3-кадры и кадры слоя расширения синхронизированы и что частичное декодирование слоя расширения является правильным.
Одним из преимуществ изобретения является то, что оно решает обе проблемы синхронизации без использования каких-либо дополнительных битов или байтов, т.е. без увеличения объема данных.
В качестве примера ниже описана реализация обнаружения потери синхронизации в декодере hd3. Во-первых, для гарантии того, что декодированные данные формата MP3 (спектральные значения формата MP3) верны, вычисляется целочисленная сумма частично декодированных значений формата MP3. Во-вторых, для проверки правильности декодирования данных слоя расширения вычисляется целочисленная сумма частично декодированных данных слоя расширения и добавляется к целочисленной сумме частично декодированных значений формата MP3.
Результат в принципе является хэш-значением двух соответствующих кадров hd3. Хэш-значение побитно тождественно на каждом кодирующем и декодирующем устройстве независимо от фактического устройства и независимо от фактического способа энтропийного кодирования, так как оно было вычислено до энтропийного кодирования. Посредством приема хэш-значения в потоке битов декодеры могут обнаруживать ошибки синхронизации и реагировать на них. Хотя различные методы энтропийного кодирования могут приводить к различной длине кадра улучшающего слоя и, следовательно, к различному количеству битов заполнения, контрольная сумма остается той же. Кроме того, декодер по-прежнему в состоянии обнаружить потерю синхронизации, так как количество битов для сравнения определяется в самом декодере.
Одним из аспектов изобретения является использование только битов LSB хэш-значения и сохранение этих битов в битах заполнения каждого кадра слоя расширения. Декодер может затем после частичного (т.е. энтропийного) декодирования обоих слоев извлечь биты заполнения и вычислить хэш-значение из частично декодированных значений. Если биты LSB хэш-значения не равны битам заполнения, значит произошла ошибка в процессах частичного декодирования и слой расширения может потерять синхронизацию в ходе дальнейшего декодирования. Как следствие, декодер может в одном из вариантов осуществления остановить весь процесс декодирования. Однако в другом варианте осуществления декодер переключается на отдельное декодирование кадров основного слоя, так как декодирование блока основного слоя по-прежнему возможно. Затем он может продолжить декодирование только основного слоя и может либо прекратить декодирование улучшающего слоя, либо попытаться восстановить синхронизацию улучшающего слоя, как описано выше. Особое преимущество этой процедуры состоит в том, что неправильно синхронизированные данные улучшающего слоя могут быть обнаружены и отключены и поэтому не нарушают воспроизведение данных основного слоя.
Далее описывается сравнение иллюстративных принятых и вычисленных синхронизационных слов, как показано на фиг.4. Используются следующие термины:
mp3
X(k)=частично декодированное значение формата mp3;
ext
X(k)=частично декодированное значение расширения;
padding
H=считанные биты заполнения;
padding
N=количество используемых битов заполнения;
frame
<mrow><mstyle displaystyle="true"><munder><mo>∑</mo><mi>К</mi></munder><mrow><msub><mi>Х</mi><mrow><mi>m</mi><mi>p</mi><mn>3</mn></mrow></msub></mrow></mstyle><mo stretchy="false">(</mo><mi>k</mi><mo stretchy="false">)</mo><mo>+</mo><mstyle displaystyle="true"><munder><mo>∑</mo><mi>K</mi></munder><mrow><msub><mi>X</mi><mrow><mi>e</mi><mi>x</mi><mi>t</mi></mrow></msub></mrow></mstyle><mo stretchy="false">(</mo><mi>k</mi><mo stretchy="false">)</mo><mover><mo>=</mo><mo>∧</mo></mover></mrow>
H=
хэш-значение, вычисленное из частично декодированных значений.
frame
mp3
ext
padding
padding
frame
В примере в декодере рассчитывается 16-битная контрольная сумма H по значениям X(k) частично декодированного кадра основного слоя и значениям X(k) соответствующего ему кадра улучшающего слоя. Четыре бита обнаруживаются как биты заполнения в последнем байте принятого кадра улучшающего слоя, и переданная 4-битная контрольная сумма H извлекается из этих битов заполнения. Для выявления правильной синхронизации извлеченные биты заполнения H должны быть равны битам LSB вычисленной контрольной суммы H. Если они отличаются, это означает, что кадры не синхронизованы (или произошла ошибка в разрядах, что таким образом также может быть проверено).
Один из аспектов изобретения состоит в том, что не требуется вставлять никаких дополнительных байтов данных в поток улучшающего слоя. Следовательно, в отличие от других известных способов обнаружения ошибок количество битов заполнения меняется от нуля до семи битов, поэтому вероятность обнаружения ошибок также меняется. Поэтому потеря синхронизации может быть обнаружена не сразу на первом неверном кадре. Однако каждый последующий кадр увеличивает вероятность обнаружения ошибки, поскольку последующие хэш-значения также будут неверными. Таким образом, предложенный способ достаточно хорош для обнаружения ситуаций потери синхронизации по меньшей мере в пределах нескольких кадров. В вариантах осуществления, относящихся к аудио, такие ситуации будут обнаружены достаточно быстро для предотвращения значительного неудобства слушателя, принимая во внимание, что MP3-кадры, как правило, представляют несколько миллисекунд звука. Поэтому предлагаемое обнаружение потери синхронизации особенно выгодно при аудиокодировании.
В дальнейших вариантах осуществления изобретения описанный механизм обнаружения потери синхронизации реализуется в основанном на формате MP3 иерархическом аудиокодеке без потерь, как показано на фиг.5 и 6.
Фиг.5 показывает пример аудиокодера для создания данных основного слоя и аудиоданных улучшающего слоя формата MP3. Входной сигнал 200 подается на традиционный блок фильтров MP3 и блок 203 квантования, а также на блок 240 вычисления целочисленного модифицированного дискретного косинусного преобразования (MDCT). Блок фильтров MP3 выдает элементы 215 MP3, которые энтропийно кодируются 220 и затем представляют обычный аудиосигнал 225 формата MP3, т.е. поток битов формата MP3, который представляет собой выходные данные. Сигнал улучшающего слоя получается посредством отображения 230 ячеек MP3 на целочисленные значения преобразования MDCT. Они сравниваются 250 с выходными данными фактического целочисленного преобразования MDCT 240, причем вычисляется 250 остаточная разность 255. Разность 255 энтропийно кодируется 270, причем используется кодирование с переменной длиной, как описано выше и показано на фиг.3. Фиг.7 показывает более подробно, что пакет 273, закодированный с переменной длиной, отображается 271 на байты. Большинство таких кодированных пакетов 275 будет иметь замыкающие биты заполнения, как описано выше, которые могут быть временно установлены равными нулю. Желательно здесь же определить 272 количество N битов заполнения.
В блоке 260 вычисления вычисляется хэш-значение 265 по элементам 215 MP3 кадра основного слоя и разности 255 соответствующего кадра улучшающего слоя. Эти два соответствующих кадра были оба сформированы из одной и той же части входного сигнала и поэтому они оба должны быть объединены в улучшенном декодере в одну и ту же часть выходного сигнала. Однако традиционные декодеры могут игнорировать сигнал улучшающего слоя и декодировать только сигнал основного слоя в традиционный аудиосигнал с качеством формата MP3. Также декодеры, которые способны декодировать сигнал улучшающего слоя, не обязательно выполняют обнаружение нарушения синхронизации и они могут игнорировать хэш-значение. Эти декодеры, однако, рискуют не суметь обнаружить ситуации нарушения синхронизации и таким образом могут обеспечить худшее качество выходного сигнала, чем декодер в соответствии с изобретением.
Хэш-значение 265 вычисляется 260 на основе целочисленного спектра в элементах 215 MP3 и целочисленных разностей 255, как оно будет позже вычислено в декодере на основе декодированного целочисленного спектра. Хэш-значение 265 может представлять собой простую контрольную сумму этих целочисленных значений и во время своего расчета, как правило, будет иметь фиксированную ширину M битов (M≥N). В принципе, установленное количество N 274 имеющихся битов заполнения в конце кадра улучшающего слоя выдается блоку 261 усечения, который извлекает или обрезает N младших значащих битов из М-битного хэш-значения 265. Полученное усеченное N-битное хэш-значение 263 затем вставляется 280 в биты заполнения кадра 275 улучшающего слоя, посредством чего получается энтропийно закодированный сигнал 285 улучшающего слоя в соответствии с одним из аспектов изобретения. Поток битов улучшающего слоя также называется здесь потоком битов "слоя CD", так как он позволяет без потерь реконструировать исходное качество (как с компакт-диска CD) из сигнала формата MP3 с уменьшенным качеством.
В одном варианте осуществления к потоку 295 битов улучшающего слоя добавляется 290 одно начальное синхронизационное слово. Это может быть полезным в тех случаях, когда начало этого потока трудно найти: например, если оба слоя хранятся в одном файле, как на фиг.1, и указатель в заголовке файла указывает на первый пакет улучшающего слоя, то ошибка в разрядах в этом указателе приведет к тому, что улучшающий слой не будет найден. С помощью такого одного начального синхронизационного слова возможно проанализировать поток в поисках начала улучшающего слоя. Однако это обеспечивает только начальную синхронизацию и не подходит для обнаружения более поздней потери синхронизации между слоями.
Ясно, что в реализациях несколько из описанных логических этапов могут быть выполнены одновременно, так что промежуточные результаты физически могут быть недоступны.
Фиг.6 показывает соответствующий декодер для декодирования кадров основного слоя и кадров улучшающего слоя с выполнением обнаружения потери синхронизации. Декодер получает два отдельных потока битов, например поток 101 битов формата MP3 и поток 102 битов улучшающего слоя. Оба потока битов затем частично декодируются 110, 120, т.е. энтропийно декодируются. Термин "частичное" декодирование указывает на тот факт, что результат этого декодирования не является окончательным аудиосигналом. Вместо этого результатами частичного декодирования являются соответственно декодированные элементы 115 MP3 для потока битов формата MP3 и декодированные элементы 125 с целочисленными разностями преобразования MDCT для улучшающего слоя. Элементы 125 с целочисленными разностями преобразования MDCT могут быть использованы для улучшения ячеек MP3 таким образом, что получаются исходные аудиозначения, какими они были до MP3 кодирования (с потерями). Таким образом, с помощью данных улучшающего слоя можно получить кодирование аудиоданных без потерь на основе данных формата MP3 с потерями.
Оба частично декодированных потока битов 115, 125 представлены в виде целых значений. Для обнаружения 160 ошибок синхронизации вычисляется 140 одно хэш-значение 145 на основе результатов 115, 125 двух частичных декодеров 110, 120. В данном примере хэш-значение 145 вычисляется посредством простого сложения целочисленных сумм всех частотных элементов из спектра формата MP3 плюс суммы всех частотных элементов из целочисленного спектра разностей преобразования MDCT. Если спектр сигнала отличен от нуля, как это обычно бывает, усеченное хэш-значение в нескольких младших значащих битах (LSBs) этой суммы представляет собой псевдослучайное значение, которое в достаточной степени не коррелировано от кадра к кадру. В других вариантах осуществления могут использоваться другие способы вычисления хэша, например посредством суммирования только некоторых значений или с использованием способов, аналогичных CRC, на основе линейных регистров сдвига с обратными связями.
Параллельно извлекаются 150 биты заполнения, которые завершают кодированный подпоток битов улучшающего слоя. Наряду с извлеченными битами 152 заполнения количество 151 обнаруженных битов заполнения передается на следующий этап обработки.
Фактическая проверка на ошибки выполняется посредством сравнения 160 битов LSB хэш-значения 152, взятого из подпотока 102 битов улучшающего слоя, с соответствующими битами LSB хэш-значения 145, вычисленного на основе локально декодированных спектров 115, 125. Если сравнение показывает разницу, поднимается флаг 165 индикации ошибки для того, чтобы сообщить блоку 130 финального декодирования о потере синхронизации.
Оставшееся финальное декодирование 130 объединяет два частично декодированных спектра сигнала, т.е. элементы 115 MP3 и разности 125 преобразования MDCT, и генерирует выходной аудиосигнал 135 декодера. Если флаг 165 индикации ошибки был поднят, как описано выше, декодер принимает соответствующие меры для разрешения ситуации потери синхронизации. Например, процесс декодирования может быть полностью прекращен или декодер может перейти в режим декодирования только основного слоя, тем самым пренебрегая несинхронизированной информацией из улучшающего слоя.
Предпочтительно изобретение относится к иерархическому или масштабируемому аудиосжатию. В частности, изобретение является выгодным для форматов потоков битов, в которых различные слои иерархического потока битов передаются через разные транспортные каналы или хранятся в физически разных местах. Например, изобретение является полезным, если по меньшей мере большая часть подпотоков битов иерархически кодированного аудиосигнала хранится в разных местах в файле, или в тех случаях, когда во время транспортировки или извлечения из запоминающего устройства разные подпотоки битов могут потерять синхронизацию из-за ошибок передачи или запоминающего устройства. Изобретение делает возможным гарантированное обнаружение такой ситуации в течение короткого времени и дает возможность принятия соответствующих мер.
Настоящее изобретение имеет преимущества по сравнению с другими известными решениями проблемы синхронизации. Например, не нужно постоянно отправлять синхрогруппы или временные метки с блоками подпотока битов улучшающего слоя, поэтому нет необходимости в передаче каких-либо дополнительных данных.
Однако для основного слоя может быть необходимо отправлять синхрогруппы с каждым блоком или сигнальным кадром потока битов, как, например, в формате MPEG-1 Layer III (MP3), в котором заголовок каждого кадра начинается с фиксированной комбинации из двенадцати единиц. Эта комбинация наряду с проверкой достоверности последующей информации в заголовке позволяет сохранять декодер синхронизованным с одним потоком битов. Однако синхронизация разных подпотоков битов не может быть достигнута с помощью фиксированной синхрогруппы. Изобретение решает эту проблему в общем случае посредством вычисления CRC или хэш-значения на основе соответствующих по времени кадров верхнего слоя и нижних слоев. Тем самым устанавливается тесная связь между упомянутым верхним слоем и всеми нижними слоями, вносящими вклад в общее декодирование.
Еще одним преимуществом изобретения является то, что CRC или хэш-значение вычисляется по отдельной частично декодированной информации, поступающей из подпотоков битов, в отличие от традиционного способа вычисления/проверки значения CRC кодированного потока битов. Это отражает другой образ мышления: как правило, CRC применяются для защиты передачи/хранения битов, в то время как здесь мы применяем CRC/хэш-значения для защиты точной побитовой передачи/хранения/декодирования целочисленных параметров. Еще одним преимуществом изобретения является то, что дополнительная информация, необходимая для передачи упомянутого CRC/хэш-значения, сохраняется в битах заполнения, которые добавляются на границе каждого кадра, чтобы начать следующий кадр на границе байта. Хотя количество доступных битов заполнения является переменным и непредсказуемым, оно достаточно для обеспечения в среднем короткого времени реакции на обнаружение потери синхронизации.
Еще одним преимуществом является то, что проверка на ошибки включает в себя части процесса декодирования. То есть в дополнение к простой проверке, что потоки битов выровнены, она также проверяет, что процессы частичного декодирования являются побитно точными, т.е. синхронными на уровне битов.
Изобретение имеет также следующие преимущества.
Оно может применяться со схемами с переменной битовой скоростью кодирования без необходимости в синхрогруппах. Таким образом, оно достигает очень высокой эффективности сжатия.
Не требуется дополнительной скорости передачи в связи с тем, что CRC/хэш информация хранится в битах заполнения для каждого кадра.
С помощью этого изобретения не требуется постоянно отслеживать синхронизацию или правильный прием всех подпотоков битов. Проверка на ошибки может быть вычислена независимо для каждого кадра сигнала.
Хотя приведенные выше примеры относятся к аудиосигналам, общая идея изобретения применима в общем случае для иерархических потоков битов, представляющих различные виды сигналов, например видео. Кроме того, можно применить изобретение для добавочных потоков улучшающего слоя, которые должны быть синхронизированы либо с потоком основного слоя, либо с другими потоками улучшающего слоя (например, второй поток улучшающего слоя может быть синхронизирован с первым потоком улучшающего слоя или каждый из них может быть синхронизирован с потоком основного слоя). Кроме того, можно применить изобретение для обнаружения синхронизации между тремя или более потоками одновременно.
В одном аспекте изобретения устройство для кодирования аудио- или видеосигнала, имеющего поток битов основного слоя и поток битов улучшающего слоя, связанного с потоком битов основного слоя, причем данные основного слоя и данные улучшающего слоя структурированы в пакеты, а пакеты потока битов основного слоя имеют соответствующие пакеты потока битов улучшающего слоя, содержит средство вычисления для вычисления контрольной суммы пакета потока битов основного слоя и соответствующего пакета потока битов улучшающего слоя, энтропийный кодер основного слоя для энтропийного кодирования пакета потока битов основного слоя, в котором генерируется энтропийно кодированный выровненный по байтам пакет основного слоя, начинающийся с синхронизационного слова, энтропийный кодер улучшающего слоя для энтропийного кодирования пакета потока битов улучшающего слоя с использованием способа кодирования с переменной длиной, в котором генерируются энтропийно кодированный пакет улучшающего слоя, который не имеет заголовка и не начинается с синхронизационного слова, средство отображения для отображения кодированного пакета улучшающего слоя на байты, каждый байт имеет фиксированное количество битов, причем в последнем байте кодированного пакета улучшающего слоя N битов являются битами заполнения, средство определения для определения количества N битов заполнения в последнем байте кодированного пакета улучшающего слоя, средство извлечения для извлечения N младших значащих битов упомянутой вычисленной контрольной суммы, где N равно определенному количеству битов заполнения, средство вставки для вставки извлеченных N младших значащих битов вычисленной контрольной суммы в биты заполнения в конце кодированного пакета и средство для обеспечения или вывода кодированного пакета улучшающего слоя, включающего в себя вставленные биты контрольной суммы, и кодированного пакета основного слоя.
В одном аспекте изобретения устройство для кодирования дополнительно содержит средство для хранения кодированного потока битов основного слоя и кодированного потока битов улучшающего слоя в файле, причем пакеты основного слоя хранятся смежными друг с другом в первой части файла, а пакеты улучшающего слоя хранятся смежными друг с другом в последующей второй части файла.
В другом аспекте изобретения устройство для декодирования аудио- или видеосигнала, имеющего поток битов основного слоя и соответствующий поток битов улучшающего слоя, в котором поток битов улучшающего слоя содержит кодированные параметры переменной длины для улучшенного декодирования потока битов основного слоя, содержит частичный декодер основного слоя для частичного декодирования части потока битов основного слоя, в котором генерируется первый декодированный пакет основного слоя, частичный декодер улучшающего слоя для частичного декодирования части потока битов улучшающего слоя, в котором генерируются параметры декодирования для улучшенного декодирования потока битов основного слоя, средство для определения количества N битов заполнения в упомянутой части потока битов улучшающего слоя и средство для извлечения и/или сохранения битов заполнения, средство вычисления для вычисления контрольной суммы первого декодированного пакета основного слоя и упомянутых параметров декодирования из частично декодированной части потока битов улучшающего слоя, средство сравнения для сравнения извлеченных N младших значащих битов вычисленной контрольной суммы, где N равно определенному количеству битов заполнения, с N извлеченными битами заполнения, а также для обеспечения показателя ошибки, если они не равны, и средство декодирования для декодирования частично декодированного потока битов основного слоя, если извлеченные N младших значащих битов вычисленной контрольной суммы и N извлеченных битов заполнения равны в соответствии с упомянутым показателем ошибки, в котором используются упомянутые параметры декодирования для улучшенного декодирования потока битов основного слоя и в противном случае для декодирования частично декодированного потока битов основного слоя с использованием упрощенного декодирования, при котором данные из потока битов улучшающего слоя не используются.
Следует понимать, что настоящее изобретение описано исключительно посредством примеров и возможны модификации деталей, не выводящие за рамки объема изобретения.
Каждый отличительный признак, представленный в описании, и (при необходимости) в формуле изобретения и чертежах может быть обеспечен независимо или в любом подходящем сочетании. Где это уместно, отличительные признаки могут быть реализованы в аппаратном оборудовании, в программном обеспечении или в их комбинации. В случае необходимости соединения могут быть реализованы в виде беспроводных соединений и проводных соединений, не обязательно прямых или выделенных. Номера ссылочных позиций указаны в формуле изобретения только в качестве иллюстрации и не должны оказывать ограничивающего эффекта на объем формулы изобретения.