Кодер и декодер
Иллюстрации
Показать всеГруппа изобретений относится к области кодирования. Техническим результатом является повышение эффективности сжатия данных. Способ кодирования входных данных (D1) включает определение по существу повторяющихся блоков данных и/или пакетов данных по меньшей мере в одном из фрагментов входных данных (D1), при этом блоки данных и/или пакеты данных включают соответствующее множество элементов, где элементы включают множество битов; определение, являются ли элементы неизменными внутри по существу повторяющихся блоков данных и/или пакетов данных, и/или определение, что элементы внутри по существу повторяющихся блоков данных и/или пакетов данных изменяются; кодирование неизменных элементов в кодированные данные (Е2) с использованием по меньшей мере одного соответствующего символа или по меньшей мере одного соответствующего бита, указывающего на отсутствие изменений в неизменных элементах по сравнению с соответствующими им элементами в опорном блоке данных и/или пакете данных; и кодирование измененных элементов в кодированные данные (Е2). 6 н. и 28 з.п. ф-лы, 8 ил.
Реферат
Область техники
Настоящее изобретение относится, в общем, к сжатию данных, а именно, к кодерам для кодирования входных данных (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).
Альтернативно и опционально, опорный блок данных и/или пакет данных меняют на основе некоторого критерия, в соответствии с последующим более подробным описанием. В одном из примеров, когда количество измененных элементов внутри заданного блока данных и/или пакета данных по сравнению с другим блоком данных и/или пакетом данных меньше заранее заданного порогового количества, этот задан