Способ и устройство для синхронизации сильно сжатых данных улучшающего слоя

Иллюстрации

Показать все

Изобретение относится к форматам данных мультимедийных приложений, которые используют иерархические слои данных. Техническим результатом является обеспечение возможности обнаружения потери синхронизации между данными улучшающего слоя и данными основного слоя во время декодирования, в то время как количество синхронизирующей информации и контрольной информации в потоке данных улучшающего слоя удерживается низким. Способ кодирования аудио- или видеосигнала, имеет поток битов основного слоя и поток битов улучшающего слоя, относящийся к потоку битов основного слоя. Данные основного слоя и данные улучшающего слоя структурированы в пакеты, и пакеты потока битов основного слоя имеют соответствующие пакеты потока битов улучшающего слоя. Согласно способу осуществляют вычисление контрольной суммы пакета потока битов основного слоя и соответствующего пакета потока битов улучшающего слоя. А также энтропийно кодируют пакет потока битов основного слоя, получая энтропийно кодированный выровненный по байтам пакет основного слоя, начинающийся с синхронизационного слова. 4 н. и 9 з.п. ф-лы, 7 ил.

Реферат

Область техники, к которой относится изобретение

Это изобретение относится к способу и устройству для кодирования с сильным сжатием данных улучшающего слоя, относящихся к данным основного слоя, и к способу и устройству для соответствующего декодирования сильно сжатых данных улучшающего слоя, в котором определяется синхронизация между данными улучшающего слоя и соответствующими данными основного слоя.

Уровень техники

Некоторые форматы данных мультимедийных приложений используют иерархические слои данных с основным слоем (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 имеют переменные зависящие от содержания длины пакетов.

Кроме того, следует отметить, что количество значений в пакете (т.е. в информации) одинаково до и после энтропийного кодирования, в то время как количество битов или байтов обычно различно.

В одном варианте осуществления каждый пакет потока данных основного слоя (BL) имеет один соответствующий пакет потока битов улучшающего слоя (EL), а каждое значение данных в пакете основного слоя имеет соответствующее значение улучшающих данных в пакете улучшающего слоя. Например, если пакет основного слоя имеет определенное количество XB значений, соответствующий пакет улучшающего слоя имеет столько же улучшающих значений, одно улучшающее значение для каждого из соответствующих значений основного слоя.

В другом варианте осуществления, в котором каждый пакет потока данных основного слоя имеет один соответствующий пакет потока битов улучшающего слоя, каждое значение данных только определенного типа (типов) в пакете основного слоя имеет соответствующее значение улучшающих данных в пакете улучшающего слоя. Например, если пакет основного слоя имеет XB1 значений первого типа и XB2 значений второго типа, соответствующий пакет улучшающего слоя может иметь такое же количество XB1 улучшающих значений, относящихся только к значениям основного слоя первого типа.

В одном варианте осуществления данные основного слоя и данные улучшающего слоя расположены последовательно, например хранятся в одном файле, а данные улучшающего слоя содержат не более одного синхронизационного слова.

В соответствии с другим аспектом изобретения кодированный сигнал мультимедиа состоит из первой и второй частей, первая часть содержит выровненные по байтам энтропийно кодированные пакеты аудиопотока битов основного слоя, а вторая часть содержит выровненные по байтам энтропийно кодированные пакеты улучшающего слоя, содержащие данные улучшающего слоя переменной длины, причем пакеты основного слоя содержат синхронизационную информацию, а пакеты улучшающего слоя не содержат синхронизационную информацию (по меньшей мере нет заголовков пакетов) и пакеты улучшающего слоя содержат кодированные параметры, подходящие для улучшенного декодирования соответствующих пакетов основного слоя, последний байт пакета улучшающего слоя содержит индивидуальное переменное количество 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. Используются следующие термины:

Xmp3(k)=частично декодированное значение формата mp3;

Xext(k)=частично декодированное значение расширения;

Hpadding=считанные биты заполнения;

Npadding=количество используемых битов заполнения;

Hframe= ∑ К Х m p 3 ( k ) + ∑ K X e x t ( k ) = ∧ хэш-значение, вычисленное из частично декодированных значений.

В примере в декодере рассчитывается 16-битная контрольная сумма Hframe по значениям Xmp3(k) частично декодированного кадра основного слоя и значениям Xext(k) соответствующего ему кадра улучшающего слоя. Четыре бита обнаруживаются как биты заполнения в последнем байте принятого кадра улучшающего слоя, и переданная 4-битная контрольная сумма Hpadding извлекается из этих битов заполнения. Для выявления правильной синхронизации извлеченные биты заполнения Hpadding должны быть равны битам LSB вычисленной контрольной суммы Hframe. Если они отличаются, это означает, что кадры не синхронизованы (или произошла ошибка в разрядах, что таким образом также может быть проверено).

Один из аспектов изобретения состоит в том, что не требуется вставлять никаких дополнительных байтов данных в поток улучшающего слоя. Следовательно, в отличие от других известных способов обнаружения ошибок количество битов заполнения меняется от нуля до семи битов, поэтому вероятность обнаружения ошибок также меняется. Поэтому потеря синхронизации может быть обнаружена не сразу на первом неверном кадре. Однако каждый последующий кадр увеличивает вероятность обнаружения ошибки, поскольку последующие хэш-значения также будут неверными. Таким образом, предложенный способ достаточно хорош для обнаружения ситуаций потери синхронизации по меньшей мере в пределах нескольких кадров. В вариантах осуществления, относящихся к аудио, такие ситуации будут обнаружены достаточно быстро для предотвращения значительного неудобства слушателя, принимая во внимание, что 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 одно начальное синхронизационное слово. Это может быть полезным в тех