КОДЕР И ДЕКОДЕР
CODER AND DECODER

Область техники
Настоящее изобретение относится, в общем, к сжатию данных, а именно, к кодерам для кодирования входных данных (D1) с целью формирования соответствующих кодированных данных (Е2), и декодерам для декодирования кодированных данных (Е2) с целью формирования соответствующих декодированных данных (D3). Также настоящее изобретение относится к способам кодирования входных данных (D1) с целью формирования соответствующих кодированных данных (Е2) и к способам декодирования кодированных данных (Е2) с целью формирования соответствующих декодированных данных (D3). Также настоящее изобретение относится к компьютерным программным продуктам, включающим машиночитаемый носитель, на котором хранят машиночитаемые инструкции, при этом машиночитаемые инструкции могут быть исполнены на компьютеризованном устройстве, включающем процессорную аппаратуру для исполнения упомянутых выше способов. Настоящее изобретение относится также к кодекам, включающим по меньшей мере один упомянутый выше кодер и по меньшей мере один упомянутый выше декодер.
Предпосылки создания изобретения
На сегодняшней день общепринятой практикой является сжатие данных в целях сокращения расхода ресурсов, например, при хранении и передаче данных. При передаче данных последовательность блоков, или пакетов, данных передают из одного устройства в другое устройство. Блоки данных или пакеты данных, расположенные позднее в порядке передачи, часто отличаются по сравнению с блоками, или пакетами, данных, переданными ранее. Однако изменения отдельных элементов внутри этих отличающихся блоков, или пакетов, данных, значительно меньше, чем все исходное содержимое блоков, или пакетов, данных. Другими словами, большинство элементов внутри отличающихся блоков остаются неизменными, то есть такими же, как в более ранних блоках данных или пакетах данных. Когда такую последовательность блоков данных или пакетов данных сжимают при помощи традиционных кодеров, как правило, достижима лишь невысокая степень сжатия.
Один из кодеров-декодеров (далее в настоящем документе называемых «кодеками»), известных на существующем уровне техники, описан в заявке на патент США №20120219065 А1, озаглавленной «Обработка изображений». Традиционные кодеки обрабатывают блоки данных изображения, или последовательности данных, целиком, и сравнивают целые блоки данных с предыдущими блоками. Традиционные кодеки кодируют неизменные блоки данных заранее заданным значением цвета или значением данных, а измененные блоки данных кодируют как есть. Это означает, что кодируют все исходные значения данных измененного блока данных, и поэтому показатель эффективности сжатия, обеспечиваемый традиционными кодерами-декодерами, не является максимально достижимым.
В заявке на патент США №2013/0315307А1 описан кодер, в котором применяют бит «изменено/неизменно» для указания на то, был ли изменен соответствующий блок данных, например, блок данных в кадре изображения, или нет. Такой подход позволяет решить стоящую задачу, однако представляется возможным существенно повысить его эффективность.
В других кодеках, известных на существующем уровне техники, для обработки данных применяют дельта-кодирование (http://en.wikipedia.org/wiki/Delta_encoding). При дельта-кодировании записывают или передают разность (а именно, дельта-значение) между текущим элементом данных и предыдущим элементом данных. Однако такие дельта-значения зачастую порождают новые значения данных, которые ранее отсутствовали в данных, или иным образом увеличивают динамический диапазон значений данных, и соответственно, может повышаться энтропия этих данных.
Следовательно, необходим кодек для сжатия данных, который был бы более эффективным, по сравнению с известными кодеками.
Сущность изобретения
Цель настоящее изобретения - предложить усовершенствованный кодер для кодирования данных (D1) с целью формирования соответствующих кодированных данных (Е2).
Также цель настоящего изобретения - предложить усовершенствованный декодер для декодирования кодированных данных (Е2) с целью формирования соответствующих декодированных данных (D3).
Еще одна цель настоящего изобретения - предложить усовершенствованный способ кодирования входных данных (D1) с целью формирования соответствующих кодированных данных (Е2).
Еще одна цель настоящего изобретения - предложить усовершенствованный способ декодирования кодированных данных (Е2) с целью формирования соответствующих декодированных данных (D3).
В первом аспекте настоящего изобретения предложен кодер, включающий процессорную аппаратуру для кодирования входных данных (D1) с целью формирования соответствующих кодированных данных (Е2). Процессорная аппаратура выполнена с возможностью обработки входных данных (D1) как блоков данных и/или пакетов данных. Опционально, входные данные (D1) имеют форму по меньшей мере одного из следующего: текстовые данные, данные изображений, видеоданные, аудиоданные, двоичные данные, данные датчиков, данные измерений, графические данные, геномные данные, многомерные данные и/или одномерные данные, без ограничения перечисленным.
Процессорная аппаратура выполнена с возможностью определения по существу повторяющихся блоков данных и/или пакетов данных по меньшей мере в одном из фрагментов входных данных (D1). После этого процессорная аппаратура выполнена с возможностью определения, в отношении отдельных элементов, являются ли эти элементы неизменными внутри по существу повторяющихся блоков данных и/или пакетов данных, и/или определения, что элементы внутри по существу повторяющихся блоков данных и/или пакетов данных изменяются.
Полезный результат настоящего изобретения заключается в том, что эффективность кодирования может быть значительно повышена за счет выявления и кодирования частичных изменений внутри блоков данных и/или пакетов данных.
Нужно понимать, что упомянутым элементом может, опционально, быть одно из следующего: байт, слово, целое число, символ, значение пикселя, амплитуда звукового отсчета в монофонических или стереофонических аудиоданных, без ограничения перечисленным. Другими словами, элементом, как правило, является одиночное значение, однако в некоторых случаях им может быть, например, пиксель, а именно, тип элемента визуальных данных, который может содержать несколько значений данных, отличающихся друг от друга, аналогично стереофонической информации в случае аудиоданных. При этом элемент, в соответствии с настоящим изобретением, является либо одиночным значением, либо содержит несколько значений, и когда обнаружено изменение, в любом случае эти значения должны быть обработаны или совместно, или по отдельности. На практике, значение пикселя, например, его составляющие R (красный цвет), G (зеленый цвет) и В (синий цвет), могут быть либо изменены, либо оставаться неизменными, однако возможно также, что изменено будет (или останется неизменным) только значение R пикселя. Однако элемент при этом не может содержать два соответствующих значения из одного источника, а именно, два значения R (красного цвета), например, Rs1 и Rs2 (где "s" обозначает пространственную точку) в случае изображения, или At1 и At2 (где "t" обозначает момент времени) в случае аудиоданных. Таким образом, элемент должен быть задан в пространстве или во времени, однако не может быть привязан к некоторому одному источнику, например, датчику красного цвета (R), датчику синего цвета (В) или первому микрофону для значений Am1 аудиоданных и второму микрофону для значения Am2 аудиоданных, или к первой и второй камерам. Говоря иначе, для различных структур момент во времени всегда должен быть одним и тем же, и позиция в пространстве для различных структур всегда одна и также, однако их источники могут меняться; невозможен прием в один и тот же момент времени из множества различных позиций в пространстве, как и невозможен прием для одной и той же позиции в пространстве в множество различных моментов времени.
Нужно понимать, что помимо пикселей, упомянутым элементом может также быть, например, воксел, то есть, пиксель в трехмерном пространстве, и тогда, очевидно, их значения могут регистрироваться двумя камерами. Также элементом может быть тексел, элемент, аналогичный пикселю и являющийся элементом текстуры, или пикселем текстуры; он является основополагающей единицей пространства текстуры, применяемой в компьютерной графике для построения изображений в двухмерном или трехмерном пространстве с использованием графического процессора (Graphics Processor Unit, GPU). Также упомянутым элементом может быть, например, ресел, понятие, используемое в анализе изображений. Он описывает фактическое пространственное разрешение изображения или объема. При этом многие сигналы, такие, например, как аудиосигналы, могут иметь несколько каналов данных и т.п. Другие примеры элементов могут включать, например, базовые пары ДНК или РНК в геномных данных.
Следовательно, процессорная аппаратура выполнена с возможностью кодирования неизменных элементов в кодированных данных (Е2) с использованием по меньшей мере одного соответствующего символа или по меньшей мере одного соответствующего бита, например, одиночного бита, указывающего на отсутствие изменений в неизменных элементах по сравнению с соответствующими им элементами в опорном блоке данных и/или пакете данных. Опционально, опорный блок данных и/или пакет данных является предыдущим блоком данных и/или пакетом данных; блоком данных и/или пакетом данных в аналогичной позиции в предыдущем кадре, ракурсе или канале; блоком данных и/или пакетом данных, описанным вектором движения (а именно, полученным с помощью метода компенсации движения); блоком данных и/или пакетом данных, описанным символом (а именно, полученным с помощью метода дедупликации); блоком данных и/или пакетом данных, закодированным при помощи некоторого метода кодирования (например, с использованием таких методов кодирования, как дифференциальное кодирование, многоуровневое кодирование, скользящее кодирование, линейное кодирование, кодирование с дискретным косинусным преобразованием (discrete cosine transform, DCT), кодирование с использованием базы данных, кодирование с векторным квантованием, кодирование с палитрой, интерполяционное кодирование, экстраполяционное кодирование). Опционально, упомянутый по меньшей мере один соответствующий символ представлен заранее заданным значением данных. Опционально, упомянутое заранее заданное значение данных реализовано в виде нулевого значения данных. Опционально, неизменное значение, к примеру, когда значение упомянутого соответствующего бита равно 0, и измененное значение, к примеру, когда значение упомянутого соответствующего бита равно 1, описывают при помощи битов в отдельном потоке данных, а в основной поток данных кодируют только измененные входные значения данных.
При этом процессорная аппаратура выполнена с возможностью кодирования измененных элементов в кодированные данные (Е2). Опционально, процессорная аппаратура выполнена с возможностью кодирования по меньшей мере части измененных элементов в кодированные данные (Е2) с квантованием. Квантование позволяет обеспечить повышенную степень сжатия данных.
Когда все элементы в заданном блоке данных или пакете данных неизменны по сравнению с опорным блоком данных или пакетом данных, то, опционально, этот блок данных или пакет данных считают неизменным, и тогда нет необходимости передачи какой-либо дополнительной информации для этого блока данных или пакета данных. Опционально, блоки данных и пакеты данных, в которых все значения изменены, также отделяют от частично измененных блоков данных или пакетов данных.
Способ, описанный в настоящем документе, используют, предпочтительно, для кодирования частично измененных блоков данных и/или пакетов данных, при помощи кодирования информации о том, присутствуют ли изменения в одном или более элементах внутри частично измененных блоков данных или пакетов данных. Частично измененные блоки данных или пакеты данных содержат как измененные, так и неизменные значения данных. Опционально, способ также применим для кодирования измененных блоков данных или пакетов данных. Опционально, способ также выполнен с возможностью кодирования неизменных блоков данных или пакетов данных.
При этом опционально, процессорная аппаратура выполнена с возможностью применения алгоритма сжатия, например, диапазонного кодирования, SRLE-кодирования (split run length encoding, расщепленное кодирование длин серий) (например, описанного в патенте GB2507603B1, а также в заявке РСТ/ЕР2014/000530), дельта-кодирования, О-дельта-кодирования (например, описанного в патенте GB2511355 В, а также в заявке РСТ/ЕР2014/00510), модификатора энтропии (entropy modifying encoding, EM) (например, описанного в заявке на патент GB2511493A, а также в заявке РСТ/ЕР2014/000529), арифметического кодирования, кодирования Хаффмана, но без ограничения перечисленным, с целью сжатия кодированных данных (Е2) и формирования сжатых данных (С4), которые включают в кодированные выходные данные (Е2). Любое дополнительное сжатие, обеспечиваемое при помощи алгоритма сжатия, позволяет еще более повысить степень сжатия кодированных данных (Е2) по сравнению с входными данными (D1).
Во втором аспекте вариантов осуществления настоящего изобретения предложен декодер, включающий процессорную аппаратуру для декодирования кодированных данных (Е2) с целью формирования соответствующих декодированных данных (D3). Процессорная аппаратура выполнена с возможностью обработки кодированных данных (Е2) в форме блоков данных и/или пакетов данных.
Процессорная аппаратура выполнена с возможностью декодирования кодированных данных (Е2) с формированием данных для элементов, которые изменяются (и далее называются «измененными элементами»), внутри по существу повторяющихся блоков данных и/или пакетов данных в кодированных данных (Е2). Опционально, процессорная аппаратура выполнена с возможностью декодирования по меньшей мере части измененных элементов в декодированные данные (Е3) с квантованием.
Процессорная аппаратура выполнена с возможностью декодирования кодированных данных (Е2) с формированием данных для элементов, которые остались неизменными (и далее называются «неизменными элементами»), внутри по существу повторяющихся блоков данных и/или пакетов данных в кодированных данных (Е2). В кодированных данных (Е2) неизменные элементы представлены по меньшей мере одним соответствующим символом или по меньшей мере одним соответствующим битом, например, одиночным битом, указывающим на отсутствие изменений в неизменных элементах по сравнению с соответствующими им элементами в опорном блоке данных и/или пакете данных.
Опционально, процессорная аппаратура выполнена с возможностью применения алгоритма распаковки для распаковки сжатых данных (С4) и формирования кодированных данных (Е2) с целью декодирования кодированных данных (Е2), в результате чего формируют данные для измененных и неизменных элементов.
При этом процессорная аппаратура выполнена с возможностью сборки данных, сформированных для измененных и неизменных элементов, в блоки данных и/или пакеты данных, с формированием декодированных данных (D3).
Опционально, декодированные данные (D3) имеют форму по меньшей мере одного из следующего: текстовые данные, данные изображений, видеоданные, аудиоданные, двоичные данные, данные датчиков, данные измерений, графические данные, геномные данные (например, последовательности РНК или ДНК), многомерные данные и/или одномерные данные, без ограничения перечисленным.
В третьем аспекте вариантов осуществления настоящего изобретения предложен кодек, включающий упомянутый кодер и упомянутый декодер. Опционально, кодек имеет форму по меньшей мере одного из следующего: видеокодек, аудиокодек, кодек изображений и/или кодек данных, но без ограничения перечисленным.
При этом, опционально, кодер и декодер выполнены с возможностью реализации кодирования для передачи чанков (порций данных) для протокола передачи гипертекста (Hypertext Transfer Protocol, HTTP) и/или протокола передачи сообщений в реальном времени (Real-Time Messaging Protocol, RTMP). Опционально, в протоколах HTTP и/или RTMP, внутри запросов и ответов на запросы, используют блоки данных и/или пакеты данных фиксированного размера.
В четвертом аспекте вариантов осуществления настоящего изобретения предложен способ кодирования входных данных (D1) с целью формирования соответствующих кодированных данных (Е2).
В пятом аспекте вариантов осуществления настоящего изобретения предложен компьютерный программный продукт, включающий машиночитаемый носитель, на котором хранят машиночитаемые инструкции, при этом машиночитаемые инструкции могут быть исполнены на компьютеризованном устройстве, включающем процессорную аппаратуру для исполнения упомянутого способа.
В шестом аспекте вариантов осуществления настоящего изобретения предложен способ декодирования кодированных данных (D2) с целью формирования соответствующих декодированных данных (Е3).
В седьмом аспекте вариантов осуществления настоящего изобретения предложен компьютерный программный продукт, включающий машиночитаемый носитель, на котором хранят машиночитаемые инструкции, при этом машиночитаемые инструкции могут быть исполнены на компьютеризованном устройстве, включающем процессорную аппаратуру для исполнения упомянутого способа.
Варианты осуществления настоящего изобретения позволяют по существу устранить, или по меньшей мере частично решишь, описанные выше недостатки существующего уровня техники, и обеспечивают возможность сжатия, без потерь или практически без потерь, одномерных или многомерных данных изображений, видеоданных, аудиоданных или данных любого другого типа с высоким коэффициентом сжатия.
Для уяснения дополнительных аспектов, преимуществ, отличительных признаков и целей настоящего изобретения следует обратиться к чертежам и подробному описанию примеров его осуществления, которые следует рассматривать в сочетании с приложенной формулой изобретения.
Нужно понимать, что отличительные признаки настоящего изобретения в пределах объема настоящего изобретения, заданного приложенной формулой изобретения, могут комбинироваться произвольным образом.
Описание чертежей
Краткое описание изобретения, приведенное выше, а также приведенное ниже подробное описание примеров осуществления настоящего изобретения, могут быть поняты более детально при его прочтении в сочетании с приложенными чертежами. В целях иллюстрации настоящего изобретения на чертежах показаны различные примеры. Однако настоящее изобретение не ограничено конкретными способами и устройствами, описанными в данном документе. При этом специалисты в данной области техники должны понимать, что чертежи выполнены не в масштабе. Там, где это возможно, аналогичные элементы обозначены аналогичными числовыми обозначениями.
Далее, исключительно в качестве примера и со ссылками на приложенные чертежи, будут описаны примеры осуществления настоящего изобретения, где:
на фиг. 1 представлена эскизная иллюстрация примера сетевого окружения, походящего для практического применения вариантов осуществления настоящего изобретения;
фиг. 2 представляет собой пример потока данных в соответствии с одним из вариантов осуществления настоящего изобретения;
на фиг. 3 проиллюстрированы шаги способа кодирования входных данных (D1) с целью формирования соответствующих кодированных данных (Е2) в соответствии с одним из вариантов осуществления настоящего изобретения;
фиг. 4А и фиг. 4В совместно представляют собой иллюстрацию шагов процедуры кодирования в соответствии с одним из вариантов осуществления настоящего изобретения;
на фиг. 5 проиллюстрированы шаги способа декодирования кодированных данных (Е2) с целью формирования соответствующих декодированных данных (D3) в соответствии с одним из вариантов осуществления настоящего изобретения; и
фиг. 6А и фиг. 6В совместно представляют собой иллюстрацию шагов процедуры декодирования в соответствии с одним из вариантов осуществления настоящего изобретения.
На приложенных чертежах числа, выделенные подчеркиванием, используются для обозначения элементов, над которыми находится подчеркнутое число, или рядом с которыми оно расположено. Неподчеркнутые числовые обозначения относятся к объектам, указанным линией, которая соединяет неподчеркнутое число и объект. Если число не выделено подчеркиванием и сопровождается связанной с ним стрелкой, это неподчеркнутое число используется для обозначения общего элемента, на который указывает стрелка.
Подробное описание вариантов осуществления изобретения
В приведенном ниже подробном описании рассмотрены варианты осуществления настоящего изобретения и способы, которыми они могут быть реализованы. В настоящем документе описан вариант осуществления настоящего изобретения, который представляется авторам наилучшим, однако специалисты в данной области техники должны понимать, что возможны также другие варианты осуществления или практического применения настоящего изобретения.
В вариантах осуществления настоящего изобретения предложен кодер, включающий процессорную аппаратуру для кодирования входных данных (D1) с целью формирования соответствующих кодированных данных (Е2). Процессорная аппаратура выполнена с возможностью обработки входных данных (D1) в форме блоков данных и/или пакетов данных. Опционально, входные данные (D1) имеют форму по меньшей мере одного из следующего: текстовые данные, данные изображений, видеоданные, аудиоданные, двоичные данные, данные датчиков, данные измерений, графические данные, геномные данные, многомерные данные и/или одномерные данные, без ограничения перечисленным.
Процессорная аппаратура выполнена с возможностью определения по существу повторяющихся блоков данных и/или пакетов данных во входных данных (D1). После этого процессорная аппаратура выполнена с возможностью определения, остались ли неизменными элементы внутри по существу повторяющихся блоков данных и/или пакетов данных, и/или определения того, что элементы внутри по существу повторяющихся блоков данных и/или пакетов данных изменяются.
Также процессорная аппаратура выполнена с возможностью кодирования неизменных элементов в кодированных данных (Е2) с использованием по меньшей мере одного соответствующего символа или по меньшей мере одного соответствующего бита, например, одиночного бита, указывающего на отсутствие изменений в неизменных элементах по сравнению с соответствующими им элементами в опорном блоке данных и/или пакете данных. Опционально, упомянутый по меньшей мере один соответствующий символ представлен заранее заданным значением данных. Опционально, упомянутое заранее заданное значение данных реализовано в виде нулевого значения данных. Опционально, неизменное значение, к примеру, когда значение упомянутого соответствующего бита равно 0, и измененное значение, к примеру, когда значение упомянутого соответствующего бита равно 1, описывают при помощи битов в отдельном потоке данных, а в основной поток данных кодируют только измененные входные значения данных. Под «каналом» понимается по меньшей мере одно из следующего: фрагмент кодированных данных (Е2), определенный как канал, отдельный поток данных, определенный как канал, отдельный файл данных, определенный как канал.
При этом процессорная аппаратура выполнена с возможностью кодирования измененных элементов в кодированные данные (Е2). Опционально, процессорная аппаратура выполнена с возможностью кодирования по меньшей мере части измененных элементов в кодированные данные (Е2) с квантованием.
При этом, опционально, процессорная аппаратура выполнена с возможностью применения алгоритма сжатия, например, диапазонного кодирования, SRLE-кодирования, дельта-кодирования, О-дельта-кодирования, модификатора энтропии (ЕМ), арифметического кодирования, кодирования Хаффмана, но без ограничения перечисленным, с целью сжатия кодированных данных (Е2) и формирования сжатых данных (С4), которые включают в кодированные выходные данные (Е2).
Также в вариантах осуществления настоящего изобретения предложен декодер, включающий процессорную аппаратуру для декодирования кодированных данных (Е2) с целью формирования соответствующих декодированных данных (D3). Процессорная аппаратура выполнена с возможностью обработки кодированных данных (Е2) в форме блоков данных и/или пакетов данных.
Процессорная аппаратура выполнена с возможностью декодирования кодированных данных (Е2) с формированием данных для элементов, которые изменяются (и далее называются «измененными элементами»), внутри по существу повторяющихся блоков данных и/или пакетов данных в кодированных данных (Е2). Опционально, процессорная аппаратура выполнена с возможностью декодирования по меньшей мере части измененных элементов в декодированные данные (Е3) с квантованием. «Декодирование с квантованием» означает, что измененные элементы декодируют с получением данных, при этом декодированные данные выбирают из конечного набора возможных значений данных, то есть, декодированные данные не могут изменяться непрерывно.
Процессорная аппаратура выполнена с возможностью декодирования кодированных данных (Е2) с формированием данных для элементов, которые остались неизменными (и далее называются «неизменными элементами»), внутри по существу повторяющихся блоков данных и/или пакетов данных в кодированных данных (Е2). В кодированных данных (Е2) неизменные элементы представлены по меньшей мере одним соответствующим символом или по меньшей мере одним соответствующим битом, например, одиночным битом, указывающим на отсутствие изменений в неизменных элементах по сравнению с соответствующими им элементами в опорном блоке данных и/или пакете данных.
Опционально, процессорная аппаратура выполнена с возможностью применения алгоритма распаковки для распаковки сжатых данных (С4), содержащихся в кодированных данных (Е2), с целью использования при декодировании кодированных данных (Е2) в результате чего формируют данные для измененных и неизменных элементов.
При этом процессорная аппаратура выполнена с возможностью сборки данных, сформированных для измененных и неизменных элементов, в блоки данных и/или пакеты данных, с формированием декодированных данных (D3).
Опционально, декодированные данные (D3) имеют форму по меньшей мере одного из следующего: текстовые данные, данные изображений, видеоданные, аудиоданные, двоичные данные, данные датчиков, данные измерений, графические данные, геномные данные, многомерные данные и/или одномерные данные, без ограничения перечисленным.
Также в вариантах осуществления настоящего изобретения предложен кодек, включающий упомянутый кодер и упомянутый декодер. Опционально, кодек имеет форму по меньшей мере одного из следующего: видеокодек, аудиокодек, кодек изображений и/или кодек данных, но без ограничения перечисленным.
При этом, опционально, кодер и декодер выполнены с возможностью реализации кодирования для передачи чанков (порций данных) для протокола передачи гипертекста (HTTP) и/или протокола передачи сообщений в реальном времени (RTMP). Опционально, в протоколах HTTP и/или RTMP, внутри запросов и ответов на запросы, используют блоки данных и/или пакеты данных фиксированного размера.
Обратимся к чертежам, используя, в частности, приведенные на них числовые обозначения. На фиг. 1 представлена эскизная иллюстрация примера сетевого окружения 100, подходящего для практического применения вариантов осуществления настоящего изобретения. Сетевое окружение 100 включает кодер 102 и одно или более электронных устройств, которые на фиг. 1 проиллюстрированы электронным устройством 104. Сетевое окружение 100 дополнительно включает сеть 106 связи, а также один или более серверов и/или хранилищ данных, и одну или более баз данных, которые проиллюстрированы на фиг. 1 как сервер и/или хранилище 108 данных и база 110 данных. Также сетевое окружение 100 включает декодер 112 и одно или более компьютеризованных устройство, которые проиллюстрированы на фиг. 1 как компьютеризованное устройство 114. Опционально, сетевое окружение 100 может включать одну или более баз данных и/или одно или более локальных запоминающих устройств (116, 118), расположенных локально по отношению к устройствам в сетевом окружении 100.
Сетевое окружение 100, опционально, может быть реализовано множеством различных способов, в зависимости от различных потенциальных сценариев применения. В одном из таких сценариев сетевое окружение 100, опционально, реализуют при помощи пространственно совместного размещения сервера и/или хранилища 108 данных и базы 110 данных, соединенных друг с другом, с возможностью связи, при помощи непосредственного соединения, как это показано на фиг. 1. В другом сценарии применения сетевое окружение 100, опционально, реализуют при помощи пространственно распределенного размещения сервера и/или хранилища 108 данных и базы 110 данных, соединенных друг с другом, с возможность связи, через сеть связи, например, сеть 106 связи. В еще одном возможном сценарии применения сервер и/или хранилище 108 и базу 110 данных, опционально, реализуют при помощи сервисов облачных вычислений. Опционально, сетевое окружение 100 реализуют распределенно при помощи технологий связи «точка-точка» (peer-to-peer, Р2Р).
Сервер и/или хранилище 108 данных соединены, с возможностью связи, с кодером 102 и декодером 112 через сеть 106 связи или при помощи прямого соединения. При этом кодер 102 соединен с декодером 112, с возможностью связи, через сеть 106 связи или при помощи прямого соединения.
Сеть 106 связи, опционально, представляет собой набор отдельных сетей, взаимно соединенных друг с другом и функционирующих в качестве единой более крупной сети. Такие отдельные сети, опционально, могут быть проводными, беспроводными или смешанного типа. Примеры таких отдельных сетей включают, без ограничения перечисленным, локальные вычислительные сети (Local Area Network, LAN), региональные вычислительные сети (Wide Area Network, WAN), общегородские вычислительные сети (Metropolitan Area Networks, MAN), беспроводные локальные сети (Wireless LAN, WLAN), беспроводные региональные сети (Wireless WAN, WWAN), беспроводные общегородские сети (Wireless MAN, WMAN), Интернет, телекоммуникационные сети второго поколения (2G), телекоммуникационные сети третьего поколения (3G), телекоммуникационные сети четвертого поколения (4G), а также сети по технологии глобальной совместимости для микроволнового доступа (Worldwide Interoperability for Microwave Access, WiMAX).
Электронное устройство 104 предоставляет кодер 102, либо напрямую, либо через сеть 106 связи, и этот кодер получает на свой вход входные данные (D1). Опционально, входные данные (D1) имеют форму по меньшей мере одного из следующего: текстовые данные, данные изображений, видеоданные, аудиоданные, двоичные данные, данные датчиков, данные измерений, графические данные, геномные данные, многомерные данные и/или одномерные данные, без ограничения перечисленным. Входные данные (D1), опционально, являются модифицированными данными, частью целой последовательности данных или комбинацией данных различных типов. Опционально, входные данные (D1) принимают в форме потока или в форме файла.
Кодер 102 имеет в своем составе процессорную аппаратуру, которая выполнена с возможностью исполнения машиночитаемых инструкций, хранимых на машиночитаемом носителе, для кодирования входных данных (D1) с целью формирования соответствующих кодированных данных (Е2). Альтернативно или в дополнение, процессорная аппаратура является жестко запрограммированной, например, реализованной при помощи заказной интегральной схемы (application-specific integrated circuit, ASIC), автомата с переменными состояниями и т.п.
Опционально, кодер 102 может быть реализован как часть электронного устройства 104. В таком случае процессорная аппаратура кодера 102 входит в состав электронного устройства 104. В одном из примеров электронное устройство 104 представляет собой устройство для захвата изображений и/или видеоинформации, которое при своей работе формирует значительные объемы данных изображений и/или видеоданных, и в котором может быть необходимо применение сжатия без потерь для сохранения информации мелких деталей в изображении и/или видеоданных, и обеспечения в то же время объемов данных изображений и/или видеоданных, позволяющих хранить эти данные. Примеры подобных устройств захвата изображений и/или видеоданных включают, без ограничения перечисленным, камеры видеонаблюдения, видеорегистраторы, рентгенологические устройства, сканеры магнитно-резонансной томографии (Magnetic Resonance Imaging, MRI) и ультразвуковые сканеры. Электронное устройство 104, предпочтительно, реализуют с использованием процессоров с сокращенным набором команд (Reduced Instruction Set Computing, RISC), позволяющих обеспечить высокоэффективную обработку данных, связанных со способами настоящего изобретения, оставаясь при этом в высокой степени энергоэкономичными устройствами.
Альтернативно и опционально, кодер 102 может быть реализован независимо, например, с использованием компьютеризованного устройства, которое имеет в своем составе процессорную аппаратуру кодера 102.
После приема входных данных (D1) процессорная аппаратура кодера 102 может выполнять обработку входных данных (D1), имеющих форму блоков данных и/или пакетов данных. Опционально, эти блоки данных и/или пакеты данных могут иметь фиксированный размер. Альтернативно, блоки данных и/или пакеты данных могут иметь переменный размер; опционально, их переменный размер может зависеть от содержимого и/или формата входных данных (D1). Опционально, содержимое анализируют с использованием комбинации из пространственного анализа Фурье и временного анализа Фурье, в результате чего вычисляют один или более параметров, определяющих переменный размер блоков данных и/или пакетов данных. Преобразования Фурье, например, быстрое преобразование Фурье (Fast Fourier Transform, FFT), которые известны любому специалисту в данной области техники, опционально, могут быть реализованы рекурсивно, например, с использованием одного или более RISC-процессоров.
Процессорная аппаратура кодера 102 выполнена с возможностью определения по существу повторяющихся блоков данных и/или пакетов данных во входных данных (D1), а именно, по существу аналогичных блоков данных и/или пакетов данных во входных данных (D1). После этого процессорная аппаратура кодера 102 может определять, остались ли элементы неизменными внутри по существу повторяющихся блоков данных и/или пакетов данных, и/или определять, что элементы внутри по существу повторяющихся блоков данных и/или пакетов данных изменяются.
Также процессорная аппаратура кодера 102 может кодировать, в кодированные данные (Е2), неизмененные элементы в каждом из блоков данных и/или пакетов данных с использованием по меньшей мере одного соответствующего символа или одного или более соответствующих бит, например, одиночного бита, который указывает на отсутствие изменений в неизмененных элементах внутри блока данных и/или пакета данных по сравнению с соответствующими элементами внутри соответствующего ему опорного блока данных и/или пакета данных. В этом отношении, опционально, с целью сравнения элементов заданного блока данных и/или пакета данных с элементами опорного блока данных и/или пакета данных используют функциональность "MemoryCompare" («сравнение в памяти»).
Опционально, опорный блок данных и/или пакет данных является фиксированным. В одном из примеров опорный блок данных и/или пакет данных аналогичен всем блокам данных и/или пакетам данных во входных данных (D1). В другом примере опорный блок данных и/или пакет данных аналогичен по меньшей мере подмножеству блоков данных и/или пакетов данных во входных данных (D1).
Альтернативно и опционально, опорный блок данных и/или пакет данных меняют на основе некоторого критерия, в соответствии с последующим более подробным описанием. В одном из примеров, когда количество измененных элементов внутри заданного блока данных и/или пакета данных по сравнению с другим блоком данных и/или пакетом данных меньше заранее заданного порогового количества, этот заданный блок данных и/или пакет данных может быть выбран в качестве опорного блока данных и/или пакета данных для всех блоков данных и/или пакетов данных во входных данных (D1). В другом примере в качестве опорного блока данных и/или пакета данных выбирают блок данных и/или пакет данных, предшествующий текущему блоку данных и/или пакету данных во входных данных (D1). Опционально, этот предшествующий блок данных и/или пакет данных является блоком данных и/или потоком данных, за которым непосредственно следует текущий блок данных. Альтернативно и опционально, этот предшествующий блок данных и/или пакет данных является блоком данных и/или пакетом данных, который присутствовал в предыдущем кадре, ракурсе или канале. Еще в одном из альтернативных примеров, опционально, этот предшествующий блок данных и/или пакет данных является блоком данных и/или пакетом данных, который был известен или выбран предварительно. Еще в одном из альтернативных примеров, опционально, информацию о выбранном предыдущем блоке данных и/или пакете данных доставляют с использованием описывающего его символа или числового обозначения, например, вектора движения, описывающего выбранный блок данных и/или пакет данных.
Опционально, упомянутый по меньшей мере один соответствующий символ представлен заранее заданным значением данных. Опционально, это заранее заданное значение данных определяют на основе анализа значений данных измененных элементов в блоках данных и/или пакетах данных из входных данных (D1); такой анализ выполняют, например, при помощи статистического анализа значений элементов внутри блоков данных, содержащихся во входных данных (D1); при помощи такого анализа выполняют шаг «определения» в настоящем изобретении. Опционально, упомянутое заранее заданное значение данных реализовано в виде нулевого значения данных. Альтернативно и опционально, для описания измененных и неизменных значений данных внутри блока данных и/или пакета данных, используют биты, которые передают в другом потоке, и в таком случае в поток данных, опционально, кодируют только измененные значения данных.
Также процессорная аппаратура кодера выполнена с возможностью кодирования измененных элементов в кодированные данные (Е2). Опционально, в режиме сжатия без потерь, процессорная аппаратура кодера 102 выполнена с возможностью кодирования, в кодированные данные (Е2), измененных элементов в их исходной форме. Альтернативно и опционально, в режиме сжатия с потерями, процессорная аппаратура кодера 102 выполнена с возможностью кодирования по меньшей мере части измененных элементов в кодированные данные (Е2) с квантованием.
В еще одном из альтернативных примеров, опционально, в режиме сжатия с ограниченными потерями, процессорная аппаратура кодера 102 выполнена с возможностью кодирования по меньшей мере некоторой части измененных элементов в кодированные данные (Е2) с квантованием. С этой целью процессорная аппаратура кодера 102, опционально, выполнена с возможностью квантования только некоторой части измененных элементов, на основе анализа содержимого, типа и/или композиции входных данных (D1); такой анализ позволяет, например, определить присутствие областей интереса во входных данных (D1), которые, предпочтительно, кодируют с более высоким или менее высоким качеством, по сравнению с другими областями интереса. Опционально, если входные данными являются медицинские, военные, двоичные, текстовые или аналогичные данные, их, предпочтительно, кодируют без потерь, однако если входными данными являются аудио-, видеоданные, данные статичных изображений или аналогичные данные, то, предпочтительно, применяют также и кодирование с потерями. Очевидно, что во входных данных (D1) могут присутствовать области интереса, которые желательно кодировать с более высоким или менее высоким качеством, по сравнению с остальными областями интереса. Следовательно, кодер 102 может быть способен адаптивно менять степень сжатия данных, кодируемых с потерями, регулируя квантование при преобразовании входных данных (D1) в кодированные данные (Е2).
Также, опционально, процессорная аппаратура кодера 102 может быть выполнена с возможностью применения алгоритмов сжатия для сжатия кодированных данных (Е2), с формированием сжатых данных (С4). С этой целью, кодер 102, предпочтительно, кодер 102 может применяться в комбинации с любым из известных на существующем уровне техники энтропийных кодеров; к примеру, кодеров, в которых применяют диапазонное кодирование, SRLE-кодирование, дельта-кодирование, О-дельта-кодирование, модификатор энтропии (ЕМ), арифметическое кодирование, кодирование Хаффмана.
Также кодер 102 выполнен с возможностью передачи кодированных данных (Е2) в сервер и/или хранилище 108 с целью сохранения в базе 110 данных. Сервер и/или хранилище 108, в целях обеспечения последующей возможности декодирования кодированных данных (Е2), сконфигурированы так, чтобы быть доступными для декодера 112, либо через сеть связи, или по прямому соединению, которые, предпочтительно, совместимыми с кодером 102. В одном из примеров, когда для сжатия кодированных данных (Е2) применяют алгоритм сжатия, в результате чего получают сжатые данные (С4), кодер 102 передает сжатые данные (С4) в составе кодированных данных (Е2) в сервер и/или хранилище 108 либо при помощи сети связи, либо по прямому соединению, для хранения в базе данных 110.
В некоторых из примеров декодер 112, опционально, выполнен с возможностью доступа к кодированным данным (Е2) или сжатым данным (С4), находящимся на сервере и/или в хранилище 108. В альтернативных примерах кодер 102, опционально, выполнен с возможностью потоковой передачи кодированных данных (Е2) или сжатых данных (С4) в декодер 112, либо при помощи сети 106 связи, либо по прямому соединению. Также, опционально, в качестве выходных данных кодера 102 может быть создан файл данных, который используют в качестве входных данных декодера 112. Нужно понимать при этом, что устройство, оснащенное аппаратным или программным кодером, может также осуществлять связь напрямую с другим устройством, также оснащенным аппаратным или программным кодером. В еще одном из альтернативных примеров кодер 112, опционально, реализуют таким образом, чтобы он извлекал кодированные данные (Е2) или сжатые данные (С4) с машиночитаемого носителя, например, с жесткого диска или с твердотельного диска (Solid-State Drive, SSD).
Декодер 112 имеет в своем составе процессорную аппаратуру, которая выполнена с возможностью исполнения машиночитаемых инструкций, хранимых на машиночитаемом носителе, для декодирования входных данных (D2) с целью формирования соответствующих декодированных данных (Е3).
Опционально, декодер 112 может быть реализован как часть компьютеризованного устройства 114. В таком случае процессорная аппаратура декодера 112 входит в состав компьютеризованного устройства 114. Примеры компьютеризованного устройства 114 включают, без ограничения перечисленным, мобильный телефон, смартфон, мобильное интернет-устройство (Mobile Internet Device, MID), планшетный компьютер, ультрамобильный персональный компьютер (Ultra-Mobile Mobile Personal Computer, UMPC), телефон-планшет, карманный персональный компьютер (Personal Digital Assistant, PDA), веб-блокнот, персональный компьютер (Personal Computer, PC), наладонный персональный компьютер, портативный компьютер, настольный компьютер, крупноформатный сенсорный экран со встроенным персональным компьютером или интерактивное устройство для развлечения, такое как, игровая приставка, видеопроигрыватель, телевизор (TV) или телевизионная приставка (Set-Top Box, STB).
Альтернативно и опционально, декодер 112 может быть реализован независимо, например, с использованием другого компьютеризованного устройства, которое имеет в своем составе процессорную аппаратуру декодера 112.
При необходимости процессорная аппаратура декодера 112 может быть выполнена с возможностью декодирования кодированных данных (Е2) с целью формирования соответствующих декодированных данных (D3). Для этого процессорная аппаратура декодера 112 может быть выполнена с возможностью обработки кодированных данных (Е2) в форме блоков данных и/или пакетов данных.
Процессорная аппаратура декодера 112 может быть выполнена с возможностью декодирования кодированных данных (Е2) с формированием данных для элементов внутри по существу повторяющихся блоков данных и/или пакетов данных в кодированных данных (Е2). Опционально, в режиме сжатия без потерь, процессорная аппаратура декодера 112 выполнена с возможностью декодирования, в декодированные данные (D3), измененных элементов в их исходную форму. Альтернативно и опционально, в режиме сжатия с потерями, процессорная аппаратура кодера 112 выполнена с возможностью декодирования по меньшей мере части измененных элементов в декодированные данные (D3) с квантованием; опционально, квантование при декодировании может быть изменяемым, например, в зависимости от формата или типа данных, содержащихся в кодированных данных (Е2), при этом переменное квантование позволяет снизить энергопотребление в декодере, что важно для маломощных портативных устройств, например, устройств, питаемых от аккумулятора. В еще одном из альтернативных вариантов, в режиме сжатия с ограниченными потерями, процессорная аппаратура декодера 112 выполнена с возможностью декодирования по меньшей мере некоторой части измененных элементов в декодированные данные (D3) с квантованием.
При этом процессорная аппаратура декодера 112 может быть выполнена с возможностью декодирования кодированных данных (Е2) с формированием данных для неизменных элементов внутри по существу повторяющихся блоков данных и/или пакетов данных в кодированных данных (Е2). В кодированных данных (Е2) неизменные элементы представлены по меньшей мере одним соответствующим символом или по меньшей мере одним соответствующим битом, например, одиночным битом, указывающим на отсутствие изменений в неизменных элементах относительно соответствующих им элементов в опорном блоке данных и/или пакете данных, в соответствии с предшествующим описанием. Следовательно, опционально, процессорная аппаратура декодера 112 выполнена с возможностью определения, встречается ли упомянутый по меньшей мере один соответствующий символ или по меньшей мере один соответствующий бит, например, одиночный бит, в заданном блоке данных и/или пакете данных, в кодированных данных (Е2), и для замены этого по меньшей мере одного соответствующего символа, или альтернативно, для назначения по меньшей мере одного значения данных в позицию этого соответствующего бита в блоке данных и/или пакете данных, с использованием соответствующих элементов в опорном блоке данных и/или пакете данных.
В одном из примеров, когда в декодер 112 подают сжатые данные (С4), процессорная аппаратура декодера 112 выполнена с возможностью применения алгоритма распаковки для распаковки сжатых данных (С4) с целью формирования кодированных данных (Е2), в результате чего кодированные данные (Е2) могут быть декодированы, и могут быть сформированы данные для измененных и неизменных элементов.
При этом процессорная аппаратура декодера 112 выполнена с возможностью сборки данных, сформированных для измененных и неизменных элементов, в блоки данных и/или пакеты данных, с формированием декодированных данных (D3). Опционально, декодированные данные (D3) сформированы так, что имеют форму по меньшей мере одного из следующего: текстовые данные, данные изображений, видеоданные, аудиоданные, двоичные данные, данные датчиков, данные измерений, графические данные, геномные данные, многомерные данные и/или одномерные данные, без ограничения перечисленным.
Также, опционально, декодер 112 выполнен с возможностью передачи декодированных данных (D3) в компьютеризованное устройство 114.
Также, опционально, кодер 102 и декодер 112 допускают реализацию в составе кодека. Опционально, кодек имеет форму по меньшей мере одного из следующего: видеокодек, аудиокодек, кодек изображений и/или кодек данных, но без ограничения перечисленным. Кодек, опционально, применяют в таких портативных электронных устройствах, как цифровые камеры, мобильные телефоны, смартфоны, оборудование для видеонаблюдения и т.п.
При этом, опционально, кодер 102 и декодер 112 выполнены с возможностью реализации кодирования для передачи чанков (порций данных) для протокола передачи гипертекста (HTTP) и/или протокола передачи сообщений в реальном времени (RTMP). Опционально, в протоколах HTTP и/или RTMP, внутри запросов и ответов на запросы, используют блоки данных и/или пакеты данных фиксированного размера. Как правило, в протоколе RTMP выполняется периодический сброс размера блоков данных и/или пакетов данных в течение сеанса связи, в зависимости от времени отклика и пропускной способности сети связи.
На фиг. 1 показан лишь один из примеров, который никоим образом не ограничивает объем настоящего изобретения, заданный в приложенной формуле изобретения. Нужно понимать, что конкретная проиллюстрированная структура сетевого окружения 100 приведена исключительно в качестве примера и не должна рассматриваться как ограничивающая сетевое окружение 100 конкретным количеством, типом или схемой размещения кодеров, электронных устройств, декодеров, компьютеризованных устройств серверов и/или хранилищ данных, баз данных и сетей связи. Специалистам в данной области техники могут быть очевидны множество вариаций, альтернатив и изменений в вариантах осуществления настоящего изобретения.
Фиг. 2 представляет собой пример потока данных в соответствии с одним из вариантов осуществления настоящего изобретения. Для иллюстрации будет рассмотрен пример, в котором электронное устройство 104 является IP-камерой (Internet Protocol, Протокол интернета), установленной на некотором объекте с целью реализации системы удаленного видеонаблюдения, например, для обнаружения незаконного проникновения и/или для обнаружения опасных событий, таких как пожар, затопление и т.п.
IP-камера выполнена с возможностью предоставления, в кодер 102, данных датчиков, зарегистрированных одним или более датчиков изображений IP-камеры. В этом примере данные датчиков включают одномерные данные изображений или многомерные данные изображений, и/или видеоданные, и/или данные других типов.
При функционировании системы видеоданные, захваченные электронным устройством 104, передают в виде потока в компьютеризованное устройство 114, и затем они могут быть просмотрены соответствующим пользователем.
В проиллюстрированном примере потока данных входные данные (D1) представляют собой исходные видеоданные, захваченные IP-камерой. Входные данные (D1), как правило, обладают значительным объемом, и соответственно, для их хранения в базе 110 данных необходим большой объем памяти, а также требуется высокая пропускная способность сети для их передачи по сети 106 связи или по прямому соединению.
Для кодирования входных данных (D1) в кодированные данные (Е2) процессорная аппаратура кодера 102 выполнена с возможностью анализа содержимого, типа и/или состава входных данных (D1). На основе такого анализа процессорная аппаратура 102 может разбивать входные кадры, ракурсы или каналы видеоданных на множество блоков данных. Анализ, предпочтительно, включает, например, вычисление диапазона изменений во входных данных (D1), например, диапазона скоростей изменений во входных данных (D1) во времени, а также анализ пространственных фрагментов во временных последовательностях изображений и их соответствующих скоростей изменений во входных данных (D1). Предпочтительно, анализ позволяет выявить периодичность в данных, а именно, найти повторяющиеся конфигурации данных, и когда такая периодичность выявлена, предпочтительно, выполняют разделение данных на блоки, или пакеты, на основе выявленной периодичности.
Опционально, все кадры, ракурсы или каналы изображений разбивают на блоки данных одинаковым образом. В частности, это является предпочтительным, когда необходима возможность выбора опорных блоков данных из предыдущих кадров, ракурсов или каналов.
Этот способ, опционально, применяют в комбинации со способом дедупликации или блочным кодером (к примеру, описанном в патенте GB 2503295B) и соответствующим блочным декодером (например, описанном в заявке на патент GB 1214400.2), которые выполнены с возможностью обнаружения повторения, то есть, выбора подходящего опорного блока, а также хранения и обновления опорных блоков данных и/или пакетов данных. Эти способы позволяют также разбивать данные на соответствующие блоки данных и/или пакеты данных и вновь объединять блоки данных и/или пакеты данных, получая декодированные данные (D3). Опционально, блочный кодер используют для формирования потоков данных, которые затем кодируют при помощи способа дедупликации, например, в соответствии с предшествующим описанием.
Опционально, эти блоки представляют собой прямоугольники, размер которых зависит от размеров кадров данных, представленных этими блоками данных, например, их размер может быть равен 64×64 элементов, 32×16 элементов, 4×20 элементов, 10×4 элементов, 1×4 элементов, 3×1 элементов, 8×8 элементов, 1×1 элемент и т.п. Однако нужно понимать, что альтернативно могут применяться блоки данных и другой формы, например, треугольные, шестиугольные, эллиптические и круглые. В одном из примеров входные данные (D1) соответствуют изображению колеблющегося дыма или пламени, или потока воды с завихрениями, содержащих множество криволинейных составляющих изображения, для которых представление прямоугольными блоками данных неэффективно, но хорошо отображается на эллиптические или круглые блоки данных, что позволяет потенциально получить более высокую степень сжатия. При этом, опционально, в настоящем документе под «блоком данных» понимаются как собственно блоки данных, так и фрагменты данных внутри блока данных.
Опционально, блоки данных имеют заранее заданный размер. Заранее заданный размер, опционально, задан пользователем или задан в системе по умолчанию. Опционально, заранее заданный размер может быть определен кодером 102 на основе анализа содержимого, типа и/или состава входных данных (D1), в соответствии с предшествующим описанием. Опционально, блоки данных имеют фиксированный размер. В таком случае размер блоков данных либо известен в декодере 112, либо должен быть передан в декодер 112 лишь однократно. Когда блоки данных имеют фиксированный размер, информацию заголовка, описывающую размер блоков данных, не требуется записывать и передавать, что позволяет получить более высокую степень сжатия данных.
При этом опционально, процессорная аппаратура кодера 102 выполнена с возможностью определения опорных блоков данных в опорном кадре как соответствующих блокам данных первого кадра изображения, блока данных или пакета данных в видеоданных. С этой целью процессорная аппаратура кодера 102 может быть выполнена с возможностью сброса значений данных элементов в опорных блоках данных или пакетах данных в их заранее заданные значения данных. Опционально, упомянутое заранее заданное значение данных реализовано в виде нулевого значения данных.
Альтернативно и опционально, процессорная аппаратура кодера 102 выполнена с возможностью записи или передачи первого кадра изображения или блока данных, или пакета данных, в необработанном виде, и затем - назначения блоков данных первого кадра изображения в качестве опорных блоков данных для следующего кадра изображения. В одном из примеров для заданного блока данных в текущем кадре изображения в качестве опорного блока данных выбирают блок, который в предыдущем блоке кадров расположен в той же позиции, что и заданный блок данных в текущем кадре изображения. В этом примере значения данных предыдущего кадра изображения должны храниться в памяти, в качестве значений данных опорного блока данных.
Для заданного блока данных процессорная аппаратура кодера 102 выполнена с возможностью обработки всех значений данных всех элементов заданного блока данных и для сравнения значений данных элементов заданного блока данных со значениями данных соответствующих элементов в соответствующем ему опорном блоке данных.
Опционально, в режиме сжатия без потерь, значения данных считывают без квантования. Если значение данных некоторого элемента в заданном блоке данных отличается от значения данных соответствующего ему элемента в опорном элементе данных, то делают вывод, что упомянутый некоторый элемент был изменен. В противном случае, если значение данных некоторого элемента в заданном блоке данных идентично, или опционально, по существу идентичны, значению данных в соответствующем ему элементе опорного блока данных, то делают вывод о том, что упомянутый некоторый элемент остался неизменным.
Альтернативно и опционально, в режиме сжатия с потерями, перед сравнением значения данных квантуют. Если разность между квантованным значением данных некоторого элемента в заданном блоке данных и квантованным значением данных соответствующего ему элемента в опорном элементе данных превышает заранее заданное пороговое значение, то делают вывод о том, что упомянутый некоторый элемент был изменен. В противном случае, если разность между квантованными значениями данных меньше или равна заранее заданному пороговому значению, то делают вывод о том, что упомянутый некоторый элемент остался неизменным. Опционально, заранее заданное пороговое значение зависит от уровня качества, выбранного для режима сжатия с потерями. Чем выше требуемое качество, тем меньшее пороговое значение применяют. В случае сжатия без потерь это заранее заданное пороговое значение равно нулю.
Также процессорная аппаратура кодера 102 выполнена с возможностью кодирования, в кодированные данные (Е2), неизменных элементов заданного блока данных с использованием по меньшей мере одного соответствующего символа или по меньшей мере одного соответствующего бита, например, одиночного бита, в соответствии с предшествующим описанием. При этом процессорная аппаратура кодера выполнена с возможностью кодирования измененных элементов в кодированные данные (Е2), в соответствии с предшествующим описанием.
В дополнение, опционально, процессорная аппаратура кодера 102 выполнена с возможностью записи значений данных измененных элементов в текущий или новый опорный блок данных. То есть, опционально, этот опорный блок данных может использоваться также для следующего блока данных или следующих блоков данных.
Таким образом, процессорная аппаратура кодера 102 выполнена с возможностью кодирования блоков данных из входных данных (D1) в кодированные данные (Е2). Затем кодер 102 передает кодированные данные (Е2) в декодер 112, в соответствии с иллюстрацией фиг. 2.
Также, для декодирования кодированных данных (Е2) с целью формирования соответствующих декодированных данных (D3), процессорная аппаратура декодера 112 выполнена с возможностью определения присутствия по меньшей мере одного соответствующего символа или по меньшей мере одного соответствующего бита, например в заданном блоке данных, содержащемся в кодированных данных (Е2), и для замены этого по меньшей мере одного соответствующего символа или для назначения по меньшей мере одного значения данных в позицию этого соответствующего бита в блоке данных и/или пакете данных, с использованием соответствующих элементов в опорном блоке данных и/или пакете данных.
Также процессорная аппаратура декодера 112 выполнена с возможностью сборки данных, сформированных для измененных и неизменных элементов, в блоки данных и/или пакеты данных, с формированием декодированных данных (D3).
После этого декодер 112 передает кодированные данные (Е2) в компьютеризованное устройство 114. Если продолжить рассмотренный выше пример потока данных, в котором входные данные (D1) представляют собой исходные видеоданные, то затем пользователю отображают эти видеоданные на экране дисплея компьютеризованного устройства 114.
Опционально, кодер 102 выполняет потоковую передачу кодированных данных (Е2) в декодер 112, кодируя при этом входные данные (D1) в реальном времени. Это особенно эффективно в ситуации, когда входные данные кодируют на мультимедийном сервере в реальном времени для потоковой передачи пользователям, например, в мультимедийных сервисах, предоставляемых по сети Интернет.
На фиг. 2 показан лишь один из примеров, который никоим образом не ограничивает объем настоящего изобретения, заданный в приложенной формуле изобретения. Специалистам в данной области техники могут быть очевидны множество вариаций, альтернатив и изменений в вариантах осуществления настоящего изобретения.
В другом примере кодер 102 и/или декодер 112 реализуют аналогичным образом с целью кодирования аудиоданных, которые могут быть разбиты на множество блоков данных и/или пакетов данных. Выражение «пакет данных и/или фрагмент данных» является синонимом «блока данных и/или пакета данных» и используется, когда вместо данных изображений и/или видеоданных речь идет об аудиоданных. Опционально, процессорная аппаратура кодера 102 выполнена с возможностью одновременного кодирования аудиоданных вместе с данными изображений и/или видеоданными. Когда аудиосигналы включают тоны, звучащие в течение многих циклов аудиосигнала, и/или когда музыка ритмична и имеет по существу повторяющуюся ритмическую структуру, такие аудиосигналы могут быть эффективно сжаты при помощи способов, предложенных в настоящем изобретении. Современная популярная музыка имеет преимущественно повторяющийся ритмический характер.
Однако нужно понимать, что кодер 102 может также применяться для кодирования других типов данных аналогичным образом, например, данных, включающих по меньшей мере одно из следующего: экономические данные, данные измерений, сейсмографические данные, данные, преобразованные из аналоговой в цифровую форму, данные текстуры, календарные данные, математические данные, геномные данные и двоичные данные, однако без ограничения перечисленным.
Кодер 102 и декодера 112 подходят для различных типов данных, поскольку большинство обрабатываемых или кодируемых данных получают на машинном языке при помощи вычислительных машин, и следовательно, могут быть разбиты на блоки данных и/или пакеты данных.
При этом основная часть трафика в сетях связи представляет собой запросы на передачу и ответы на такие запросы. Это означает, что байты данных передают в двух направлениях. Такие байты данных, чаще всего, содержат частично или полностью совпадающие данные IP-пакетов. Соответственно, кодер 102 и декодер 112 хорошо подходят для протоколов связи, применяемых для передачи пакетов данных.
Исключительно в целях иллюстрации ниже будет рассмотрен пример, в котором входные данные (D1) содержат пять кадров протокола управления передачи / протокола Интернета (Transmission Control Protocol/Internet Protocol, TCP/IP), имеющие следующий вид:
В данном примере пять кадров протокола TCP/IP были выбраны случайным образом среди номеров №185-№198. Для передачи этих TCP/IP-кадров по сети связи в целом необходимо 270 байтов (=2160 бит).
При функционировании системы процессорная аппаратура кодера 102 обрабатывает эти TCP/IP-кадры как отдельные блоки данных и кодирует их в кодированные данные (Е2), имеющие следующий вид:
В данном примере значение '00' представляет собой по меньшей мере один соответствующий символ, который указывает на отсутствие изменений в неизменных элементах по сравнению с соответствующими элементами в опорном блоке данных. Значение данных '00' присутствует также и во входных данных (D1), однако в данном примере это не является проблемой, поскольку никакие измененные значения данных не могут быть представлены значением '00'. Во многих случаях для неизменных элементов данных нужно использовать символ, отсутствующий во входных данных (D1). Опционально, биты, указывающие на изменение или отсутствие изменений, могут предоставляться совместно с измененными значениями данных, вместо предоставления заранее заданных символов для неизменных и измененных значений данных.
Очевидно, кодированные данные (Е2) обладают меньшей энтропией, чем входные данные (D1). После энтропийного кодирования кодированных данных (Е2) при помощи метода усовершенствованного диапазонного кодирования, который основан на арифметическом сжатии, для передачи полученных таким образом сжатых данных (С4) по сети связи необходимо только 113 байт (=904 бит). Соответственно, когда аналогичным образом кодируют входные данные (D1), полученные после этого данные имеют размер 253 байт (=2024 бит). Таким образом, объем данных, передаваемых по сети связи, снижен на 140 байт (253-113), то есть, на 55,3%. Исходный объем входных данных (D1) без сжатия составляет 270 байт.
В другом примере два первых кадра из предыдущего примера обрабатывают с использованием квантования и битов, определяющих присутствие или отсутствие изменений. Квантование выполняют с использованием делителя, равного 2, а деквантование - с использованием множителя, равного 2. Пороговое значение изменения равно 1, при этом измененные значения помечают битом, равным 1, а неизменные значения - битом, равным 0. Исходные кадры данных имеют следующий вид:
Квантование применяют до выполнения способа, а именно, во время обнаружения повторений, в соответствии с предшествующим описанием.
Значения первого кадра после квантования имеют следующий вид:
Эти значения передают для первого кадра и назначают их в качестве буферных предыдущих данных для предсказания следующего кадра.
Значения входных данных для второго кадра после квантования имеют следующий вид:
Затем может быть сформирован поток битов, указывающих на измененные/неизменные данные, который имеет следующий вид:
Он содержит 54 бита (7 единиц и 47 нулей) и может быть эффективно сжат позднее при помощи энтропийного кодера. К примеру, RLE-кодер формирует поток данных: 19, 1, 5, 1, 18, 2, 3, 3, 2, который может быть передан, например, при помощи девяти пятибитных значений (=9*5=45 бит). Для передачи этих битов может также применяться диапазонное кодирование с вероятностями, равными 0,13 и 0,87.
Семь измененных значений для второго кадра имеют в этом случае такой вид:
06 28 64 66 01 57 66
Эти семь измененных значений, опционально, сжимают с использованием значений (54) из первого кадра, например, при помощи диапазонного кодирования. Без энтропийного кодирования для их представления нужны 61*7=428 битов. Когда кадры закодированы, впоследствии, после деквантования, значения двух кадров будут иметь следующий вид:
На фиг. 3 проиллюстрированы шаги способа кодирования входных данных (D1) с целью формирования соответствующих кодированных данных (Е2) в соответствии с одним из вариантов осуществления настоящего изобретения. Способ проиллюстрирован в виде набора шагов на блок-схеме алгоритма, последовательность шагов которого может быть реализована в виде аппаратного обеспечения, программного обеспечения или их комбинации.
Опционально, на шаге 308 во входных данных (D1) выявляют по существу повторяющиеся блоки данных и/или пакеты данных, то есть, повторы. Опционально, шаг 302 реализуют при помощи способа дедупликации или при помощи блочного кодера. Как правило, шаг 302 включает также разбиение входных данных (D1) на новые блоки данных или пакеты данных. Альтернативно, разбиение данных уже выполнено до шага 302. Предпочтительно, для кодирования на шаге 304 предоставляют только частично измененные блоки данных и/или пакеты данных, при этом измененные блоки данных и/или пакеты данных или неизменные блоки данных и/или пакеты данных кодируют различными методами, в соответствии с предшествующим описанием. Опционально, измененные блоки данных и/или пакеты данных и/или неизменные блоки данных и/или пакеты данных также предоставляют на шаге 304 для кодирования.
Нужно понимать, что если применяют некоторый опорный блок данных и/или пакет данных, это не требует передачи каких-либо дополнительных данных. Однако в некоторых ситуациях должна быть также передана информация о выборе опорного блока данных и/или пакета данных, чтобы декодер 112 был осведомлен об опорном блоке данных и/или пакете данных, который необходимо использовать. Соответственно, когда кодируют частично измененные блоки данных и/или пакеты данных, если часть блоков данных и/или пакетов данных не предоставлена в способ, то сетевом окружении 100 должен быть доступна информация о способе выбора, которая также должна быть предоставлена в декодер 112. Опционально, как отмечалось выше, за предоставление этой информации отвечает блочный кодер или алгоритм дедупликации, а в противном случае - все блоки данных и/или пакеты данных обрабатывают способом, предложенным в настоящем изобретении.
На шаге 304 определяют, остались ли элементы неизменными внутри по существу повторяющихся блоков данных и/или пакетов данных, и/или определяют, что элементы внутри по существу повторяющихся блоков данных и/или пакетов данных изменяются.
Затем, на шаге 306, измененные и неизменные элементы кодируют в кодированные данные (Е2), в виде единого потока данных. Опционально, обрабатывают два потока данных, один из которых содержит биты, определяющие измененные и неизменные данные, а второй - значения измененных данных, которые должны быть использованы.
В соответствии с шагом 306 неизменные элементы кодируют в кодированные данные (Е2) с использованием по меньшей мере одного соответствующего символа или по меньшей мере одного соответствующего бита, например, одиночного бита, указывающего на отсутствие изменений в неизменных элементах по сравнению с соответствующими им элементами в опорном блоке данных и/или пакете данных. Опционально, упомянутый по меньшей мере один соответствующий символ представлен заранее заданным значением данных, которое, опционально реализовано нулевым значением данных.
Опционально, в режиме сжатия без потерь, измененные элементы кодируют, в кодированные данные (Е2), в их исходной форме. Альтернативно и опционально, в режиме сжатия с потерями, по меньшей мере часть измененных элементов кодируют в кодированные данные (Е2) с квантованием. В еще одном из альтернативных примеров, опционально, в режиме сжатия с ограниченными потерями, по меньшей мере часть измененных элементов кодируют в кодированные данные (Е2) с квантованием.
Шаги 304 и 306, предпочтительно, выполняют для частично измененных блоков данных и/или пакетов данных. Опционально, шаги 304 и 306 выполняют для каждого блока данных и/или пакета данных во входных данных (D1). Кодирование данных на шагах 304 и 306 описано на примере фиг. 4А и 4В.
Опционально, способ включает дополнительный шаг 308, на котором применяют алгоритм сжатия для сжатия кодированных данных (Е2), в результате чего получают сжатые данные (С4). Сжатые данные (С4) имеют меньший объем, по сравнению со входными данными (D1); и соответственно, требуют меньшего объема памяти для хранения и меньшей пропускной способности при передачи по сети связи или по прямому соединению. На шаге 308, предпочтительно, применяют общепринятые методы энтропийного кодирования, такие как диапазонное кодирование, SRLE-кодирование, энтропийный модификатор, О-дельта-кодирование и т.п. Шаг 308 выполняют, как правило, с использованием способа дедупликации или с использованием блочного кодера.
Нужно понимать, что сжатие является опциональным, однако если его выполняют, то либо всегда используют конкретный метод сжатия, или, альтернативно, из кодера 102 в декодер 112 должна быть предоставлена информация, указывающая на выбранный способ сжатия. Как правило, выбор способа сжатия входит в зону ответственности блочного кодера или способа дедупликации, однако, если необходимо, способ, предложенный в настоящем изобретении, позволяет формировать и передавать информацию, указывающую на выбранный способ сжатия, а в противном случае всегда используют конкретный способ сжатия, например, заданный по умолчанию.
Также, должен быть обновлен используемый опорный блок данных и/или пакет данных, или должен быть сформирован новый опорный блок данных и/или пакет данных. Этот шаг так же, как правило, реализуют при помощи способа дедупликации или при помощи блочного кодера, однако, опционально, обновление опорного блока данных и/или пакета данных выполняют с помощью шагов 304 и 306, с целью сокращения объема копируемых данных.
При этом объем фоновой памяти, выделяемой для обработки данных при кодировании, должен быть равен только количеству элементов в текущем блоке данных и/или пакете данных, умноженному на количество различных опорных блоков данных и/или пакетов данных. Если используют только один опорный блок данных и/или пакет данных, то необходимый объем фоновой памяти равен размеру этого блока данных и/или пакета данных. При этом результат кодирования, а именно, кодированные данные (Е2), опционально, записывают или передают непосредственно в исходную память. Это означает, что не требуется отдельной памяти для передачи. Поэтому способ может функционировать как полностью локальная операция (in situ) и является экономичным в реализации.
Шаги 302-308 являются исключительно примерами, и соответственно, в пределах объема настоящего изобретения могут быть предложены также различные альтернативы, в которых добавлены один или более шагов, один или более шагов опущены, или один или более шагов выполняют в другой последовательности.
Фиг. 4А и фиг. 4В совместно представляют собой иллюстрацию шагов обработки данных при кодировании в соответствии с одним из вариантов осуществления настоящего изобретения. На шаге 402 считывают блок данных и/или пакет данных, а также считывают опорный блок данных и/или пакет данных.
На шаге 404 считывают значение данных элемента заданного блока данных и/или пакета данных во входных данных (D1), а также считывают значение данных элемента в заданном опорном блоке данных и/или пакете данных.
Затем на шаге 406 определяют, изменилось ли значение данных элемента по сравнению со значением данных соответствующего элемента в опорном блоке данных и/или пакете данных. Предпочтительно, при таком определении делают вывод, что значение изменилось, когда абсолютная разность между значениями больше, чем пороговое значение. Опционально, для определения изменения значений данных могут применяться и другие методы.
Если на шаге 406 определено, что значение данных элемента не изменилось, выполняют шаг 408. На шаге 408 для указания на отсутствие изменений в кодированные данные (Е2) записывают заранее заданное значение данных, а в другом варианте в отдельный поток записывают бит выбора, указывающий на то, что значение данных элемента не изменилось.
В противном случае, если определено, что значение данных элемента изменилось, выполняют шаг 410. На шаге 410 значение данных элемента записывают в кодированные данные (Е2), опционально, с квантованием или без него, и в дополнение, опционально, в отдельный поток записывают также бит выбора, указывающий на то, что значение данных элемента изменилось. Опциональное квантование выполняют при этом во время обнаружения повторов.
Опционально, на шагах 406-408 значение данных элемента записывают также в новый опорный блок данных и/или пакет данных. Альтернативно и опционально, измененное значение данных на шаге 408 обновляют также в текущем блоке данных и/или пакете данных с использованием исходного измененного значения в режиме сжатия без потерь, и предпочтительно, декодированного измененного значения в режиме сжатия с потерями. Альтернативно, опорные значения формируют или обновляют при помощи метода дедупликации или при помощи блочного кодера. Обновленный блок данных и/или пакет данных, опционально, используют для следующих блоков данных и/или пакетов данных.
Далее, на шаге 412, определяют, присутствует ли следующий элемент в заданном блоке данных и/или пакете данных. Если определено, что следующий элемент присутствует, процедуру кодирования перезапускают с шага 404. В противном случае, если определено, что следующего элемента в заданном блоке данных и/или пакете данных нет, выполняют шаг 414.
На шаге 414 определяют, присутствует ли следующий блок данных и/или пакет данных во входных данных (D1). Если определено, что следующий блок данных и/или пакет данных присутствует, процедуру кодирования перезапускают с шага 402. В противном случае, если определено, что следующего блока данных и/или пакета данных нет, процедуру кодирования прекращают.
Шаги 402-414 являются исключительно примерами, и соответственно, в пределах объема настоящего изобретения могут быть предложены также различные альтернативы, в которых добавлены один или более шагов, один или более шагов опущены, или один или более шагов выполняют в другой последовательности.
В вариантах осуществления настоящего изобретения предложен компьютерный программный продукт, включающий машиночитаемый носитель, на котором хранят машиночитаемые инструкции, при этом машиночитаемые инструкции могут быть исполнены на компьютеризованном устройстве, что обеспечивает исполнение способа, описанного в связи с фиг. 3, фиг. 4А и фиг. 4В. Опционально, машиночитаемые инструкции могут быть загружены в компьютеризованное устройство 114 из магазина программных приложений, например, "Арр store".
На фиг. 5 проиллюстрированы шаги способа декодирования кодированных данных (Е2) с целью формирования соответствующих декодированных данных (D3) в соответствии с одним из вариантов осуществления настоящего изобретения. Способ проиллюстрирован в виде набора шагов на блок-схеме алгоритма, последовательность шагов которого может быть реализована в виде аппаратного обеспечения, программного обеспечения или их комбинации.
Опционально, на шаге 502, выполняют декодирование потоков данных, закодированных энтропийным кодером, в результате чего из сжатых данных (С4) получают кодированные данные (Е2). На шаге 502, опционально, применяют также общепринятые способы энтропийного кодирования, такие как диапазонное кодирование, SRLE-кодирование, модификатор энтропии (ЕМ), О-дельта-кодирование и т.п. Шаг 502, как правило, выполняют с применением способа дедупликации или с применением блочного декодера.
На шаге 504 выполняют поиск по кодированным данным (Е2) для определения измененных и неизменных элементов в по существу повторяющихся блоках данных и/или пакетах данных, содержащихся в кодированных данных (Е2).
На шаге 506 кодированные данные (Е2) декодируют, в результате чего формируют данные для измененных и неизменных элементов в по существу повторяющихся блоках данных и/или пакетах данных, содержащихся в кодированных данных (Е2). В соответствии с шагом 504 определяют наличие по меньшей мере одного соответствующего символа или по меньшей мере одного соответствующего бита, указывающих на отсутствие изменений, и заменяют их на соответствующий символ, или, выполняют присваивание, значению данных в позиции соответствующего бита, с использованием соответствующих элементов в опорном блоке данных и/или пакете данных. Для измененных блоков отсутствие изменений не определяют, а используют кодированные значения. Опционально, в режиме сжатия без потерь, измененные элементы декодируют в декодированные данные (D3) в их исходной форме. Альтернативно и опционально, в режиме сжатия с потерями, по меньшей мере часть измененных элементов декодируют в декодированные данные (D3) с квантованием, а именно, выполняют деквантование. В еще одном из альтернативных примеров, опционально, в режиме сжатия с ограниченными потерями, по меньшей мере часть измененных элементов декодируют в декодированные данные (Е3) с квантованием.
Шаги 504 и 506 выполняют для частично измененных блоков данных и/или пакетов данных. Опционально, шаги 504 и 506 выполняют для каждого блока данных и/или пакета данных в кодированных данных (Е2). Процедура декодирования, включающая шаги 504 и 506, описана на примере фиг. 6А и 6В.
Опционально, на шаге 508 данные, сформированные для измененных и неизменных элементов, собирают из блоков данных и/или пакетов данных и формируют декодированные данные (D3). На шаге 508, как правило, применяют способ дедупликации или блочный декодер.
При этом должен быть обновлен используемый опорный блок данных и/или пакет данных, или должен быть сформирован новый опорный блок данных и/или пакет данных. Этот шаг также, как правило, реализуют при помощи способа дедупликации или при помощи блочного кодера, однако, опционально, обновление опорного блока данных и/или пакета данных выполняют с помощью шагов 504 и 506, с целью снижения объема копируемых данных в процедуре декодирования.
Шаги 502-508 являются исключительно примерами, и соответственно, в пределах объема настоящего изобретения могут быть предложены также различные альтернативы, в которых добавлены один или более шагов, один или более шагов опущены, или один или более шагов выполняют в другой последовательности.
фиг. 6А и фиг. 6В совместно представляют собой иллюстрацию шагов процедуры декодирования в соответствии с одним из вариантов осуществления настоящего изобретения.
На шаге 602 принимают поток значений данных заданного блока данных и/или пакета данных, содержащихся в кодированных данных (Е2). Опционально, принимают также поток битов, указывающих на неизменные и измененные элементы в блоке данных и/или пакете данных. Также, на шаге 602 считывают опорный блок данных и/или пакет данных.
Затем, на шаге 604, считывают элемент заданного блока данных и/или пакета данных. Альтернативно, считывают бит выбора, указывающий на присутствие или отсутствие изменений. Также, на шаге 604 считывают элемент опорного блока данных и/или пакета данных.
Затем, на шаге 606, определяют, остался ли заданный элемент неизменным. Если присутствует заранее заданное значение данных, то определяют, что элемент остался неизменным. Альтернативно, определяют, что элемент остался неизменным, если бит выбора указывает на отсутствие изменений.
Если на шаге 606 определено, что элемент остался неизменным, выполняют шаг 608. На шаге 608 значение данных соответствующего элемента в опорном блоке данных и/или пакете данных записывают в декодированные данные (D3).
В противном случае, если определено, что значение данных элемента изменилось, выполняют шаг 610. На шаге 610 значение данных элемента записывают в декодированные данные (D3), опционально, с деквантованием или без деквантования. Если вывод о том, что значение было изменено, сделан на основе бита выбора, указывающего на изменение, то на этом шаге сначала должно быть считано кодированное значение, и только затем оно может быть записано в декодированные данные (D3). Опционально квантование может выполняться также во время сборки данных.
Опционально, на шагах 608-610 значение данных элемента записывают также в новый опорный блок данных и/или пакет данных. Альтернативно и опционально, измененное значение данных на шаге 610 обновляют также в текущем опорном блоке данных и/или пакете данных с использованием декодированного измененного значения, как в режиме сжатия без потерь, так и в режиме сжатия с потерями. Альтернативно, опорные значения формируют или обновляют при помощи метода дедупликации или при помощи блочного декодера, например, в соответствии с предшествующим описанием. Обновленный блок данных и/или пакет данных, опционально, используют для следующих блоков данных и/или пакетов данных.
Далее, на шаге 612, определяют, присутствует ли следующий элемент в заданном блоке данных и/или пакете данных. Если определено, что следующий элемент присутствует, процедуру декодирования перезапускают с шага 604. В противном случае, если определено, что следующего элемента в заданном блоке данных и/или пакете данных нет, выполняют шаг 614.
На шаге 614 определяют, присутствует ли следующий блок данных и/или пакет данных в кодированных данных (Е2). Если определено, что следующий блок данных и/или пакет данных присутствует, процедуру декодирования перезапускают с шага 602. В противном случае, если определено, что следующего блока данных и/или пакета данных в кодированных данных (Е2) нет, процедуру декодирования прекращают.
Шаги 602-614 являются исключительно примерами, и соответственно, в пределах объема настоящего изобретения могут быть предложены также различные альтернативы, в которых добавлены один или более шагов, один или более шагов опущены, или один или более шагов выполняют в другой последовательности.
В вариантах осуществления настоящего изобретения предложен компьютерный программный продукт, включающий машиночитаемый носитель, на котором хранят машиночитаемые инструкции, при этом машиночитаемые инструкции могут быть исполнены на компьютеризованном устройстве, что обеспечивает исполнение способа, описанного в связи с фиг. 5, фиг. 6А и фиг. 6В. Опционально, машиночитаемые инструкции могут быть загружены в компьютеризованное устройство, например, в компьютеризованное устройство 114, из магазина программных приложений, например, "Арр store".
Также в вариантах осуществления настоящего изобретения предложен кодек, включающий по меньшей мере один кодер, описанный в связи с фиг. 3, фиг. 4А и фиг. 4В, а также по меньшей мере один декодер, описанный в связи с фиг. 5, фиг. 6А и фиг. 6В.
Варианты осуществления настоящего изобретения допускают применение в различных целях, включая, без ограничения перечисленным, обеспечение сжатия, без потерь или с ограниченными потерями, одномерных данных изображений или многомерных данных изображений, видеоданных, аудиоданных и любых других типов данных с повышенной степенью сжатия, по сравнению с традиционными кодеками.
В пределах сущности и объема, заданных приложенной формулой изобретения, допускаются различные изменения вариантов осуществления настоящего изобретения, приведенных в предшествующем описании. Такие выражения, как «включающий», «содержащий», «охватывающий», «состоящий из», «имеющий», «представляющий собой», которые использованы в описании и в формуле настоящего изобретения, должны пониматься как неисключающие, то есть как допускающие также присутствие объектов, компонентов или элементов, явно не упомянутых. Использование единственного числа должно пониматься как относящееся также к множественному числу.