ES2983936T3 - Compresión y descompresión de estructuras de datos de longitud fija - Google Patents
Compresión y descompresión de estructuras de datos de longitud fija Download PDFInfo
- Publication number
- ES2983936T3 ES2983936T3 ES19158412T ES19158412T ES2983936T3 ES 2983936 T3 ES2983936 T3 ES 2983936T3 ES 19158412 T ES19158412 T ES 19158412T ES 19158412 T ES19158412 T ES 19158412T ES 2983936 T3 ES2983936 T3 ES 2983936T3
- Authority
- ES
- Spain
- Prior art keywords
- bit string
- bits
- bit
- mask
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000007906 compression Methods 0.000 title description 23
- 230000006835 compression Effects 0.000 title description 23
- 230000006837 decompression Effects 0.000 title description 11
- 238000000034 method Methods 0.000 claims abstract description 84
- 230000007704 transition Effects 0.000 claims description 18
- 230000015654 memory Effects 0.000 claims description 8
- 238000012544 monitoring process Methods 0.000 claims description 3
- 230000001419 dependent effect Effects 0.000 claims description 2
- 230000008859 change Effects 0.000 description 16
- 230000000737 periodic effect Effects 0.000 description 10
- 239000000872 buffer Substances 0.000 description 6
- 238000012423 maintenance Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000000605 extraction Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000006978 adaptation Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 239000012190 activator Substances 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3066—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction by means of a mask or a bit-map
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6011—Encoder aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
Esta solicitud se refiere a un método de codificación de cadenas de bits de datos de longitud fija. El método comprende recibir una secuencia de cadenas de bits de datos y codificar secuencialmente las cadenas de bits de datos. La codificación secuencial de las cadenas de bits de datos comprende actualizar periódicamente una cadena de bits de máscara y una cadena de bits de seguimiento. La cadena de bits de máscara es indicativa de qué bits de las cadenas de bits de datos son predecibles y qué bits de las cadenas de bits de datos no son predecibles, y la cadena de bits de seguimiento es indicativa de qué bits de la cadena de bits de máscara han cambiado recientemente. La codificación secuencial de las cadenas de bits de datos comprende además, para una cadena de bits de datos entre la secuencia de cadenas de bits de datos: obtener la cadena de bits de máscara y la cadena de bits de seguimiento, obtener una cadena de bits de referencia para la cadena de bits de datos, comparar la cadena de bits de datos con la cadena de bits de referencia para identificar bits en la cadena de bits de datos que difieren de los bits correspondientes en la cadena de bits de referencia, generar una secuencia de indicadores de posición, indicando cada indicador de posición una posición de bit de un bit respectivo entre los bits identificados con respecto a una posición de bit indicada por el indicador de posición precedente en la secuencia de indicadores de posición, en donde los indicadores de posición que indican posiciones de bit de bits respectivos entre los bits identificados que están indicados por la cadena de bits de seguimiento codifican la posición de bit con referencia a la cadena de bits de seguimiento, determinar, como bits impredecibles, todos aquellos bits en la cadena de bits de datos que están indicados como no predecibles por la cadena de bits de máscara y que no están en posiciones de bit indicadas por la cadena de bits de seguimiento, y generar un paquete de datos codificado para la cadena de bits de datos, en donde el paquete de datos codificado incluye una representación de valores de los bits impredecibles y una representación de la secuencia de indicadores de posición. La solicitud se refiere además a un método correspondiente para decodificar secuencialmente una pluralidad de paquetes de datos codificados en cadenas de bits de datos de longitud fija decodificadas correspondientes. (Traducción automática con Google Translate, sin valor legal)
Description
DESCRIPCIÓN
Compresión y descompresión de estructuras de datos de longitud fija
Campo técnico
Esta solicitud se refiere a la codificación (por ejemplo, compresión) y decodificación (por ejemplo, descompresión) de secuencias de estructuras de datos de longitud fija. Las estructuras de datos de longitud fija pueden ser elementos de datos de datos de series temporales, tales como datos de telemetría desde un sistema remoto, por ejemplo. El sistema remoto puede ser una nave espacial, tal como un satélite, o un sistema a bordo de una nave espacial, por ejemplo.
Antecedentes de la invención
La solicitud de propiedad conjunta WO 2018/145730 A1 se refiere a la compresión y descompresión de estructuras de datos de longitud fija repetidas (por ejemplo, paquetes de mantenimiento/telemetría o línea de una imagen). Esto describe un proceso automático que categoriza todos los bits en cualquier estructura de datos de longitud fija repetitiva ya sea de manera predecible o no predecible. El sentido de ser predecible aquí es que esos bits tienen una alta probabilidad de estar en el mismo estado que aquellos en un conjunto de datos de referencia. Este conjunto de datos de referencia se actualiza a su vez automáticamente. Los bits no predecibles se enmascaran de la estructura de datos utilizando una máscara de bits y la estructura de datos se somete a la operación XOR con el conjunto de datos de referencia para identificar cualquier bit donde la indicación fuera errónea. Siempre que una predicción predecible de bits sea errónea, su bit correspondiente se añade a la máscara de bits (denominada actualización negativa de la máscara de bits). Por otra parte, si un bit no predecible no cambia de estado durante un cierto número de ciclos, a continuación, su posición de bit correspondiente se elimina de la máscara de bits (denominada actualización positiva de la máscara de bits). El paquete comprimido comprende indicaciones de las actualizaciones positiva y negativa de la máscara de bits más los estados de los bits no predecibles, que se envían en claro.
Sin embargo, la técnica anterior no funciona bien para secuencias de estructuras de datos de longitud fija en donde ciertos bits pasan frecuentemente de predecible a no predecible, y viceversa, lo que conduce a una eficiencia de compresión reducida. Además, la velocidad de datos para tales secuencias de longitud fija puede presentar picos bastante prominentes, lo que puede ser indeseable.
Por lo tanto, existe la necesidad de una técnica mejorada para comprimir y descomprimir secuencias de estructuras de datos de longitud fija. Existe una necesidad particular de tal técnica que mejore la eficiencia de compresión y/o iguale la velocidad de datos.
El documento WO 2018/145730 A1 da a conocer un método que comprende recibir una pluralidad de paquetes de datos de datos de series temporales y codificar secuencialmente la pluralidad de paquetes de datos. Codificar secuencialmente la pluralidad de paquetes de datos comprende, para un paquete de datos entre la pluralidad de paquetes de datos, obtener un paquete de datos de referencia para el paquete de datos, obtener un paquete de máscara indicativo de cuáles de los bits en el paquete de datos son predecibles y cuáles de los bits en el paquete de datos no son predecibles, obtener datos de historial de cambios indicativos de bits previamente cambiados del paquete de máscara, determinar un paquete de máscara actualizado basado en el paquete de máscara, el paquete de datos y el paquete de datos de referencia, determinar datos de historial de cambios actualizados basados en los datos de historial de cambios, el paquete de máscara y el paquete de máscara actualizado, determinar, como bits impredecibles, todos aquellos bits del paquete de datos que se indican como no predecibles por el paquete de máscara actualizado, y generar un paquete de datos codificado que incluye una representación de los datos de historial de cambios actualizados y una representación de valores de los bits impredecibles del paquete de datos.
El documento WO 2013/029646 A1 describe un método para comprimir datos de series temporales y un dispositivo y sistema para procesar datos telemétricos de series temporales. Basándose en datos históricos de series temporales, se determina la previsibilidad del estado de cada bit en un paquete de datos. Un paquete de máscara está provisto de bits en un estado UNO para todas las posiciones predecibles de bits del paquete de datos y de bits en un estado CERO para todas las posiciones impredecibles de bits. Las operaciones de bit se llevan a cabo en un nuevo paquete de datos para llevar todas las posiciones de bit predecibles del nuevo paquete de datos a un estado CERO si un estado de bit real coincide con el estado de bit predicho y a un estado UNO si el estado de bit real no coincide con el estado de bit predicho. Se genera un paquete procesado aplicando una operación AND entre el nuevo paquete de datos en donde se han llevado a cabo las operaciones de bits y el paquete de máscara para cambiar todos los bits impredecibles a un estado CERO. Se proporciona una serie de contadores calculando el número de bits en el paquete procesado entre el primer bit y el primer bit con un estado UNO; y entre los siguientes bits con un estado UNO y a continuación, entre el último bit con un estado UNO y el último bit en el paquete procesado. La serie de contadores prevista se escribe en un paquete de datos de salida que se almacena o transmite.
Compendio
En vista de algunas o todas estas necesidades, la presente descripción propone un método de codificación de cadenas de bits de datos de longitud fija, un método de decodificación de cadenas de bits de datos de longitud fija codificadas y el aparato correspondiente y medios de almacenamiento legibles por ordenador, que tienen las características de las reivindicaciones independientes respectivas. Las reivindicaciones dependientes se refieren a realizaciones preferidas.
Breve descripción de las figuras
A continuación se explican ejemplos de realizaciones de la descripción con referencia a los dibujos adjuntos, en donde la Fig. 1 ilustra, en forma de diagrama de flujo, un ejemplo de método de codificación de cadenas de bits de datos de longitud fija según realizaciones de la descripción,
la Fig. 2 ilustra, en forma de diagrama de flujo, un ejemplo de implementación del procedimiento de la Fig. 1, la Fig. 3 ilustra, en forma de diagrama de flujo, ejemplos de etapas adicionales del método de la Fig. 1, la Fig. 4 ilustra esquemáticamente un diagrama de bloques de una infraestructura ejemplar para realizar métodos de codificación de cadenas de bits de datos de longitud fija según realizaciones de la descripción,
la Fig. 5 ilustra esquemáticamente un ejemplo de un bloque lógico en el diagrama de bloques de la Fig. 4, la Fig. 6 ilustra esquemáticamente ejemplos de transiciones entre clasificaciones para bits en una cadena de bits de datos de longitud fija según realizaciones de la descripción,
la Fig. 7 ilustra, en forma de diagrama de flujo, un ejemplo de un método de decodificación de una pluralidad de paquetes de datos codificados en cadenas de bits de datos de longitud fija correspondientes según realizaciones de la descripción,
la Fig. 8 ilustra, en forma de diagrama de flujo, ejemplos de etapas adicionales del método de la Fig. 7, la Fig. 9 ilustra, en forma de diagrama de flujo, otros ejemplos de etapas adicionales del método de la Fig. 7, la Fig. 10 ilustra, en forma de diagrama de flujo, otros ejemplos más de etapas adicionales del método de la Fig. 7, y la Fig. 11 ilustra esquemáticamente un ejemplo de un método de desplazamiento de una cadena de bits de datos de longitud fija según un conjunto de indicadores de posición según realizaciones de la descripción.
Descripción detallada
A continuación, se describirán realizaciones ejemplares de la descripción con referencia a las figuras adjuntas. Los elementos idénticos en las figuras pueden ser indicados por números de referencia idénticos, y puede omitirse una descripción repetida de los mismos.
En términos generales, esta descripción describe un método de compresión y descompresión sin pérdidas repitiendo estructuras de datos de longitud fija (por ejemplo, paquetes de datos de series temporales) utilizando muy poca potencia de CPU y de manera individual. Es decir, cada instancia de una estructura de datos se comprime y descomprime por sí sola en lugar de tener que esperar a que esté disponible un grupo completo de tales estructuras. Por lo tanto, estos métodos son aplicables a la compresión y descompresión de datos en tiempo real, así como a la del objetivo de datos almacenados más tradicional, es decir, se puede utilizar el mismo proceso para cualquiera. Puesto que utiliza muy poca CPU, puede desplegarse en procesadores de baja potencia tales como los utilizados en naves espaciales, por ejemplo, u otros sistemas remotos.
Una característica técnica importante de los métodos según las realizaciones de la descripción es una adaptación importante de la técnica dada a conocer en el documento WO 2018/145730 A1. A saber, la presente descripción introduce la idea de un tercer estado/clasificación (aparte de enmascarado/no predecible y desenmascarado/predecible), denominado "transición reciente". Este tercer estado se aplica a los bits en las estructuras de datos de longitud fija que han pasado de predecible a no predecible (o viceversa) en un rango de historial configurable (por ejemplo, denominado periodo/ciclo).
Según las realizaciones de la descripción, un proceso automático determina los bits que han hecho la transición recientemente. Estos se eliminan a continuación de los procedimientos normales en el documento WO 2018/145730 A1 para las actualizaciones de máscara negativa o la extracción de los estados de bit no predecibles (bits NP). El paquete comprimido consiste, por lo tanto, ahora en el resultado codificado por longitud de ejecución de la operación XOR de los bits de transición reciente con el paquete de referencia seguido de otras actualizaciones positivas o negativas a la máscara más los estados de los bits no predecibles que no han hecho la transición recientemente. En el lado de descompresión, una memoria temporal adicional sigue los bits de transición reciente. En el paquete no comprimido, el resultado codificado por longitud de ejecución para esta memoria temporal se utiliza para escribir el estado inverso en comparación con los datos de referencia para aquellos bits que están establecidos y el mismo estado para aquellos que no lo están. El resultado se utiliza, a continuación, para actualizar la máscara de tierra (es decir, la máscara de bits en el lado del decodificador) que se utiliza, a continuación, para asignar el resto de bits no predecibles a su estado correcto en el paquete no comprimido. Todas las ventajas del documento WO 2018/145730 A1 se mantienen en términos de robustez.
La introducción de este concepto mejora el rendimiento de compresión del documento WO 2018/145730 A1 (especialmente para paquetes que no se comprimen bien). Más importante es que hace que el rendimiento de compresión sea mucho más predecible para todos los paquetes, reduciendo significativamente parámetros importantes tales como la peor tasa de compresión y la desviación estándar.
Para algunos sistemas esto puede no ser importante porque estadísticamente el rendimiento de compresión se ha mostrado que es muy constante en varios escenarios (por ejemplo, en modo seguro) y tiempo (por ejemplo, años). La técnica conocida muestra, sin embargo, ocasionalmente grandes desviaciones en el rendimiento. Estos casos no son estadísticamente importantes, pero podrían serlo si uno confía en que el ancho de banda adicional esté disponible en todo momento. A este respecto, los métodos según las realizaciones de esta descripción hacen que el ancho de banda disponible sea mucho más predecible y suave cualquier variación salvaje ocasional en el rendimiento de compresión que pueda experimentarse cuando se utiliza la técnica conocida.
Como se describirá a continuación, existen etapas adicionales, en comparación con la técnica conocida, implicadas en las fases de compresión y descompresión. Estos no son importantes (especialmente para la compresión), pero pueden implicar que los métodos según las realizaciones de la descripción se ejecuten algo más lentos que la técnica conocida en ciertas circunstancias limitadas. Además, existe la necesidad de almacenar la nueva clase de bits que han hecho una transición recientemente en una memoria temporal adicional. Además, en algunas implementaciones, es necesario almacenar una máscara guardada. Las memorias temporales que son adecuadas para estos fines pueden almacenarse en matrices de palabras. Suponiendo un procesador de 32 bits, esto significa que se requieren memorias temporales adicionales que igualen a entre un cuarto y la mitad de la asignación del paquete entrante.
La Fig. 1 ilustra, en forma de diagrama de flujo, un procedimiento 100 de codificación de cadenas de bits de datos de longitud fija según realizaciones de la descripción. El método 100 puede ser un método de codificación de datos de series temporales, por ejemplo (por ejemplo, datos de mantenimiento/telemetría) de un sistema remoto (sistema monitorizado).
En la etapa S110, se recibe una secuencia de cadenas de bits de datos. Estas cadenas de bits de datos pueden ser cadenas de bits de datos de telemetría, por ejemplo. Las cadenas de bits de datos pueden ser cadenas de bits de datos de longitud fija, es decir, pueden tener igual longitud (incluir el mismo número de bits). La longitud de las cadenas de bits de datos (en términos de un número de bits) también determina las longitudes de una cadena de bits de referencia, una cadena de bits de máscara, una cadena de bits de actualización de máscara y una cadena de bits de seguimiento como se define a continuación. Por consiguiente, para cada bit (posición de bit) en una cadena de bits de datos dada, hay un bit correspondiente en cada una de la cadena de bits de referencia, la cadena de bits de máscara, la cadena de bits de actualización de máscara y la cadena de bits de seguimiento. Por bits correspondientes en dos cadenas de bits se comprenden bits que se encuentran en la misma posición de bits en cadenas de bits respectivas.
En la etapa S120, las cadenas de bits de datos se codifican secuencialmente. Codificar secuencialmente las cadenas de bits de datos puede comprender actualizar periódicamente la cadena de bits de máscara y la cadena de bits de seguimiento. La cadena de bits de máscara y la cadena de bits de seguimiento pueden actualizarse de manera sincrónica (conjuntamente), es decir, durante el procesamiento de la misma cadena de bits de datos en la secuencia de cadenas de bits de datos. Tal actualización de la cadena de bits de máscara y la cadena de bits de seguimiento puede denominarse actualización de seguimiento. Una actualización de seguimiento puede realizarse periódicamente, como se ha observado anteriormente, pero también puede realizarse a petición o a la aparición de un activador apropiado. El intervalo de tiempo (intervalo) entre dos actualizaciones de seguimiento puede denominarse periodo/ciclo.
La cadena de bits de máscara es indicativa de qué bits en las cadenas de bits de datos son predecibles y qué bits en la cadena de bits de datos no son predecibles. Los bits predecibles son aquellos bits que se espera que sean idénticos (mismo valor "0" o "1") a sus bits correspondientes en la cadena de bits de referencia para la cadena de bits de datos respectiva y los bits no predecibles son aquellos bits que se espera que no sean idénticos a sus bits correspondientes en la cadena de bits de referencia para la cadena de bits de datos respectiva. Por ejemplo, los bits (posiciones de bits) que no son predecibles pueden indicarse mediante la cadena de bits de máscara, por ejemplo, mediante un bit establecido en la posición de bits respectiva de la cadena de bits de máscara. La cadena de bits de seguimiento es indicativa de qué bits en la cadena de bits de máscara han cambiado recientemente. Por ejemplo, la cadena de bits de seguimiento puede indicar bits (posiciones de bits) para los que ha habido un cambio en la cadena de bits de máscara durante el último periodo completo (por ejemplo, al final del último periodo completo). Se comprende que los bits indicados por la cadena de bits de seguimiento son aquellos bits cuyas posiciones de bits se indican por la cadena de bits de seguimiento, por ejemplo, posiciones de bits para las que la cadena de bits de seguimiento tiene un bit establecido.
La Fig. 2 ilustra, en forma de diagrama de flujo, un método 200 que puede incluirse en la etapa S120 del método 100, es decir, que puede ser parte de codificar secuencialmente las cadenas de bits de datos. Las etapas S210 a S260 se realizan para una cadena de bits de datos entre la secuencia de cadenas de bits de datos que se ha de codificar (por ejemplo, para cada cadena de bits de datos entre la secuencia de cadenas de bits de datos).
En la etapa S210, se obtienen (por ejemplo, se leen) la cadena de bits de máscara y la cadena de bits de seguimiento. La cadena de bits de máscara y la cadena de bits de seguimiento obtenidas en esta etapa para una cadena de bits de datos dada son cadenas de bits respectivas como las presentes al final del procesamiento/decodificación de la cadena de bits de datos anterior.
En la etapa S220, se obtiene (por ejemplo, se lee) una cadena de bits de referencia para la cadena de bits de datos. La cadena de bits de referencia para la cadena de bits de datos en cuestión es la cadena de bits de datos inmediatamente anterior en la secuencia de cadenas de bits de datos (es decir, la cadena de bits de datos que se ha procesado/codificado en último lugar).
En la etapa S230, se identifican los bits en la cadena de bits de datos que difieren de los bits correspondientes en la cadena de bits de referencia. Esto puede implicar la comparación de la cadena de bits de datos con la cadena de bits de referencia. Por ejemplo, los diferentes bits pueden identificarse realizando una operación XOR de la cadena de bits de datos y la cadena de bits de referencia.
En la etapa S240, todos aquellos bits en la cadena de bits de datos que se indican como no predecibles por la cadena de bits de máscara y que no están en las posiciones de bits indicadas por la cadena de bits de seguimiento se determinan como bits impredecibles (bits NP). Esto implica que el método propuesto distingue entre bits predecibles, bits no predecibles y bits que recientemente han pasado de predecible a no predecible o viceversa. Sólo los bits que se habían indicado como no predecibles durante un cierto intervalo de tiempo se determinan como bits impredecibles. Los valores (por ejemplo, "0" o "1") para los bits impredecibles pueden incluirse en el paquete de datos codificado en claro (por ejemplo, en un campo de bits NP del paquete de datos).
En la etapa S250, se genera una secuencia de indicadores de posición para aquellos bits entre los bits identificados (bits identificados en la etapa S230) que no están entre los bits impredecibles. Cada indicador de posición indica una posición de bit de un bit respectivo con respecto a una posición de bit indicada por el indicador de posición anterior en la secuencia de indicadores de posición. Un primer indicador de posición en la secuencia de indicadores de posición puede indicar la posición de bit con respecto a una posición de bit inicial, en un orden de exploración predeterminado, en la cadena de bits de datos (por ejemplo, con respecto a la posición de LSB). Los indicadores de posición que indican posiciones de bits de los bits respectivos que se indican por la cadena de bits de seguimiento codifican la posición de bit con referencia a la cadena de bits de seguimiento. Por ejemplo, cada uno de estos indicadores de posición puede dar una indicación de un número de bits establecidos en la cadena de bits de seguimiento entre la posición de bit indicada por el indicador de posición actual de este tipo y la posición de bit indicada por el indicador de posición anterior (independientemente del tipo de ese indicador de posición).
Por consiguiente, la secuencia de indicadores de posición puede incluir indicadores de posición de primer tipo e indicadores de posición de segundo tipo (posiblemente además de otros tipos de indicadores de posición). Los indicadores de posición de primer tipo pueden referirse a los bits entre los bits identificados que se indican mediante la cadena de bits de seguimiento. Los indicadores de posición de segundo tipo pueden referirse a bits entre los bits identificados que no se indican por la cadena de bits de seguimiento. Como se ha indicado anteriormente, los indicadores de posición de primer tipo pueden indicar posiciones de bit respectivas en términos de un número de bits establecidos en la cadena de bits de seguimiento situada entre la posición de bit indicada por el indicador de posición precedente en la secuencia de indicadores de posición y la posición de bit respectiva. El número de bits establecidos en la cadena de bits de seguimiento puede incluir el bit establecido en la posición de bit indicada por el respectivo indicador de posición de primer tipo. Para este fin, los indicadores de posición pueden incluir cada uno un contador respectivo (valor de contador). Para cada indicador de posición de primer tipo, el valor de contador puede indicar el número de bits establecidos en la cadena de bits de seguimiento situada entre la posición de bit indicada por el indicador de posición anterior en la secuencia de indicadores de posición y la posición de bit indicada por el indicador de posición de primer tipo presente. Para cada indicador de posición de segundo tipo, el valor de contador puede indicar el número de posiciones de bit situadas entre la posición de bit indicada por el indicador de posición anterior en la secuencia de indicadores de posición y la posición de bit indicada por el indicador de posición de primer tipo presente. Para poder distinguir entre diferentes tipos de indicadores de posición, cada indicador de posición puede incluir una etiqueta que identifica el indicador de posición respectivo para que sea o bien un indicador de posición de primer tipo o bien no sea un indicador de posición de primer tipo. Por ejemplo, un bit de ajuste (bandera) en una posición predefinida de un indicador de posición puede indicar que el indicador de posición es un indicador de posición de primer tipo.
En la etapa S260, se genera un paquete de datos codificado para la cadena de bits de datos. El paquete de datos codificado incluye una representación de valores de los bits impredecibles (bits NP, por ejemplo, en un primer campo de datos (campo de bits NP)) y una representación de la secuencia de indicadores de posición (contadores, por ejemplo, en un segundo campo de datos (campo de contador)).
La Fig. 3 ilustra, en forma de diagrama de flujo, un método 300 que puede incluirse además en la etapa S120 del método 100, es decir, que puede ser parte de codificar secuencialmente las cadenas de bits de datos. Las etapas S320 y S330 pueden realizarse cuando se realiza una actualización (periódica) de la cadena de bits de máscara. La etapa S340 puede realizarse cuando se realiza una actualización (periódica) de la cadena de bits de seguimiento. Particularmente, la cadena de bits de máscara y la cadena de bits de seguimiento se actualizan preferentemente de manera simultánea, es decir, durante/después del procesamiento de la misma cadena de bits de datos. Como tal, las etapas S320 a S340 pueden realizarse durante una actualización de seguimiento.
Como se ha observado anteriormente, el intervalo de tiempo entre dos actualizaciones periódicas de la cadena de bits de máscara y la cadena de bits de seguimiento puede denominarse periodo (o periodo de seguimiento) en el contexto de esta descripción. La cadena de bits de máscara también puede actualizarse a petición, además de las actualizaciones periódicas. Al producirse dicha actualización solicitada, la cadena de bits de seguimiento también se actualiza. Aunque no es totalmente apropiado, el intervalo de tiempo entre dos actualizaciones de la cadena de bits de máscara también puede denominarse periodo (periodo de seguimiento), por razones de concisión.
En la etapa S310, se mantiene una cadena de bits de actualización de máscara. La cadena de bits de actualización de máscara indica, durante un periodo actual, todos los bits en las cadenas de bits de datos codificadas durante ese periodo que se han identificado como bits que difieren de los bits correspondientes en sus cadenas de bits de referencia respectivas. Es decir, la cadena de bits de actualización de máscara añade todos aquellos bits (posiciones de bits) para los que ha habido un cambio de la cadena de bits de referencia a la cadena de bits de datos respectiva (por ejemplo, un cambio de una cadena de bits de datos a la siguiente cadena de bits de datos en la secuencia) durante el periodo actual. Por consiguiente, para cada cadena de bits de datos, las posiciones de bits de cualquier bit que difiera de los bits correspondientes respectivos en la cadena de bits de referencia para esa cadena de bits de datos pueden establecerse en la cadena de bits de actualización de máscara. Esto puede conseguirse realizando una operación OR de una cadena de bits de actualización de máscara anterior con una cadena de bits que indica cualquier bit de diferencia para la cadena de bits de datos actual. No es necesario decir, que la longitud de la cadena de bits de actualización de máscara es la misma que la longitud (en términos de un número de bits) de las cadenas de bits de datos, las cadenas de bits de referencia, la cadena de bits de máscara y la cadena de bits de seguimiento.
En la etapa S320, se generan uno o varios indicadores de posición de tercer tipo como parte de la secuencia de indicadores de posición. Cada indicador de posición de tercer tipo indica un bit respectivo (posición de bit) dentro de la cadena de bits de datos que se indica por la cadena de bits de máscara y que no se indica por ninguna de la cadena de bits de actualización de máscara o la cadena de bits de seguimiento. Los indicadores de posición de tercer tipo pueden distinguirse de los indicadores de posición de segundo tipo observando que los indicadores de posición de tercer tipo son los indicadores de posición que no están etiquetados como indicadores de posición de primer tipo y que indican una posición de bit que también se indica por la cadena de bits de máscara (por ejemplo, la cadena de bits de máscara que se mantiene en el lado del decodificador). Los indicadores de posición de tercer tipo pueden notificar al lado del decodificador cualquier actualización positiva de la cadena de bits de máscara que debería realizarse en el lado del decodificador.
En la etapa S330, la cadena de bits de máscara se establece en la cadena de bits de actualización de máscara. Como se ha observado anteriormente, esta etapa se realiza (solo) cuando la cadena de bits de máscara necesita actualizarse (por ejemplo, al final de un periodo).
En la etapa S340, la cadena de bits de seguimiento se establece para indicar todos aquellos bits que se indican por la cadena de bits de máscara pero no se indican por la cadena de bits de actualización de máscara, y para indicar todos aquellos bits que se indican por la cadena de bits de actualización de máscara pero no se indican por la cadena de bits de máscara. Como se ha observado anteriormente, esta etapa se realiza (solo) cuando la cadena de bits de seguimiento necesita actualizarse (por ejemplo, al final de un periodo).
Cuando se han realizado todas las actualizaciones, la cadena de bits de actualización de máscara se restablece (por ejemplo, a todo ceros).
En algunas realizaciones, la etapa S120 puede comprender además, para la cadena de bits de datos entre la secuencia de cadenas de bits de datos, actualizar la cadena de bits de seguimiento para indicar también posiciones de bits de los bits identificados en la cadena de bits de datos que difieren de los bits correspondientes en la cadena de bits de referencia y que no se indican por la cadena de bits de máscara. Es decir, la cadena de bits de seguimiento puede añadir, durante un periodo dado, todos aquellos bits (posiciones de bits) para los que ha habido un cambio de una cadena de bits de datos a la siguiente cadena de bits de datos en la secuencia durante ese periodo y que se han clasificado previamente como predecibles. Esta actualización continua de la cadena de bits de seguimiento puede anticipar algunas de las actualizaciones de la cadena de bits de seguimiento descrita anteriormente con referencia a la etapa S340.
A continuación, se proporcionará el pseudocódigo que ilustra el procesamiento anterior durante la codificación. El procesamiento requiere un número de memorias temporales que tienen todas la misma longitud (es decir, la longitud de las cadenas de bits de datos que se van a comprimir). Todas estas memorias temporales se inicializan a cero antes de que se reciba la primera cadena de bits de datos entre la secuencia de cadenas de bits de datos que se van a comprimir. Estas memorias temporales se indican como sigue:
nuevo:cadena de bits de datos entrante que se ha de comprimir
ref:cadena de bits de referencia para la cadena de bits de datos entrante, es decir, la cadena de bits de datos inmediatamente anterior
máscara:cadena de bits de máscara actual
actualizar:cadena de bits de actualización de máscara (construida durante el periodo actual (periodo de seguimiento))
seguimiento:cadena de bits de seguimiento (detalles de los bits que han hecho la transición dentro y fuera de la cadena de bits de máscara durante el último periodo de seguimiento)
Las cadenas de bits de datos pueden procesarse en unidades de palabras (que corresponden a una longitud unitaria procesable por un procesador que realiza la compresión). Alternativamente, las cadenas de bits de datos pueden procesarse como un todo de una sola vez, dependiendo de las implementaciones. En este último caso, la longitud de palabra tendría que fijarse a la longitud de las cadenas de bits de datos en el pseudocódigo. A continuación, se supone que las cadenas de bits de datos se procesan de una sola vez, en la comprensión de que el experto en la técnica podría implementar fácilmente un procesamiento basado en palabras de las cadenas de bits de datos si fuera necesario.
El paquete de datos comprimido que ha de emitirse puede comprender un primer campo de datos (por ejemplo, campo NP o campo de bits NP) para almacenar una representación de los bits impredecibles (bits NP) y un segundo campo de datos (por ejemplo, campo de contador) para almacenar una representación de la secuencia de contadores (indicadores de posición). En el ejemplo siguiente, sin limitación prevista, el paquete de datos comprimido comprende además uno o ambos de un primer bit indicador que indica si se ha producido o no una actualización de seguimiento (actualización de la cadena de bits de máscara y la cadena de bits de seguimiento) en el lado del codificador (y por tanto también es necesario en el lado del decodificador) y un segundo bit indicador que indica si se incluye o no una secuencia de contadores (indicadores de posición) en el paquete comprimido (es decir, en el segundo campo de datos, o campo de contador).
La inicialización para la compresión de una cadena de bits de datos puede proceder como sigue:
//establece la posición íncial al final
(LSB) de la cadena de bis de datos
Set the NP field o f compressed packet to all zeros
Set first indicator bit of compressed packet to zero // requerido para indicar si ha ocurrido
o no una actualización de seguimiento
Set second indicator bit of compressed packet to zero // requerido para indicar que recuentos se han producido. Se reiniciará a uno si no hay ninguno
tracking_update_counter = 0; // establece el contador que emite una actualización de seguimiento a un número predeterminado de ejecuciones a cero
tracking_count = 0; //establece el recuento de seguimiento que cuenta el número de bits establecidos en la cadena de bits de seguimiento a medida que la cadena de bits se recorre hasta cero
La anterior inicialización se realiza para cada cadena de bits de datos que necesita comprimirse. Después de la inicialización, la cadena de bits de datos que ha de comprimirse (por ejemplo, la cadena de bits de datos actual en la secuencia de cadenas de bits de datos) se procesa en una dirección de procesamiento dada. Por ejemplo, sin limitación prevista, la cadena de bits de datos puede procesarse trabajando hacia atrás, desde el bit menos significativo (LSB) al bit más significativo (MSB). En implementaciones alternativas, la dirección de procesamiento puede ser desde el MSB al LSB. Este procesamiento procede como se describe por el pseudocódigo que sigue, en donde A indica una operación XOR, | indica una operación OR, e ~ indica la inversa (inv) de una cadena de bits.
I!xor es el XOR de la cadena de bits de datos antigua (ref) y la cadena de bits de datos de entrada nueva [nueva), cf. etapa 230
update = update|xor II<añade nuevos bits que han cambiado para>actualizar (cadena de bits de actualización de máscara), cf etapa S310
ref = new,IIred (antigua) se actualiza con la nueva cadena de bits de datas de entrada nueva, cf. etapa S220
trigger= tmcking \ mask \ xor. Hcombinar los tres activadores de bits a un nuevo activador de cadena de bits
Whiletrigger!= O {IIiterar has que no existan más bits establecidos en el activador
x = trigger & - trigger, IImecanismo para encontrar una cadena
de bits x en la que se establece solo el
LSB que está establecido en el activador
IF(x & tracking){IIestablecer el bit en el activador está
cubierto por la cadena de bits de
seguimiento
tracking_count++; // incrementar el contador de seguimiento
que cuenta el número de bits establecidos en la cadena de bits de seguimiento a
medida que se recorre la cadena de bits
IF(x &xor){i/establecer el bit en el activador está
cubierto por la cadena de bits se
seguimiento y se ha cambiado de su
estado anterior
Calcúlate oíd bit position; // calcular la posición de bits absoluta
(posición de bits en la cadena de bits de datos) y establecer la posición de bits
antigua a esta posición de bits
write tracking_count to counter field; // escribir el recuento de seguimiento para emitir el paquete (por ejemplo, indicador de recuento de primer tipo contador
para pequeñas distancias), cf etapa
S250, indicador de posición de primer tipo
tracking_count = 0; // reiniciar contador de seguimiento a cero
}
)ELSE{ // bit establecido en activador no está
cubierto por la cadena de bits de
seguimiento
IF (x &mask){ // e| establecido en el activador está enmascarado, es decir, cubierto por la cadena de bits de máscara
IF(tracking update)&(x& ¡nv(update)){
// el bit establecido en el activador está cubierto por la cadena de bits de máscara, no ha cambiado de una cadena de bits de datos a la siguiente durante el último período, y es necesaria una actualización de seguimiento. Por lo tanto, debería realizarse una actualización positiva de la cadena de bits de máscaraCalcúlate new bit position; // calcular la posición de bit absoluta (posición de bit en la cadena de la cadena de bits de datos) y establecer la nueva posición de bit a esta posición de bit
delta = oíd bit position - new bit position;
II calcular delta (contador delta) para utilizar como un contador (valor de recuento)
oíd bit position = new bit position; // actualizar posición de bit antigua
write delta count to counter field; // escribir el contador delta para emitir paquetes como el indicador de posición (tercer tipo) (por ejemplo, bit indicador delta contador para grandes distancias), cf. etapa S320
trackingcount = 0; II reiniciar contador de seguimiento a cero
) E L S E { // bit establecido en activador está cubierto por la cadena de bits de máscara per no por la cadena de bits de seguimiento, se trta como un bit impredecible (NP), cf. etapa S240
IF (x&ref) { // si el valor de bit del nuevo paquete entrante en esa posición es '1'
set next bit in NP field; // escribir un '1' al campo NP en el paquete emitido
) ELSE{ // si no el valor de bit del nuevo paquete entrante en esa posición es '0'
mover NP write pointer; // solo mover el puntero de escritura NP en el paquete emitido (este es el mismo que la configuración del bit correspondiente en el campo NP a cero)
lracking_count = 0; // reinicia contador de seguimiento a cero
tracking = tracking | x, // establece el bit actual en la cadena de bits de seguimiento
)
}
// mecanismo para eliminar el LSB en el Irígger = trigger- x, activador
}// finaliza el procesamiento individual de la cadena de bits
IF (tracking update) { H si se requiere una actualización de seguimiento (es decir, cuaando tracking update counter ha alcanzado un valor predefinido), reinicia la cadena de bits de máscara, la cadena de bits de seguimiento, y la cadena de bits de actualización de máscara
tracking = ((-mask & update & tracking) \ ( -update & mask]));
// calcula la nueva cadena de bits de seguimiento (actualizaciones negativas hacen OR con actualizaciones positivas), cf. etapa S340
mask=update; // actualiza la cadena de bits de máscara para que sea la misma que la cadena de bits de actualización de máscara, cf. etapa S330
update =0 ; // reinicia la cadena de bits de actualización de máscara a cero (es decir, todos a cero)
}
} // finaliza el procesamiento de la cadena de bits
if (absolute counters required) {
process and append absolute counters // escribe información para emitir el paquete que permite reconstruir la cadena de bits de máscara y la cadena de bits de seguimiento sin Información anterior
}
If (no counters) { // el tamaño del contador es cero bits, es decir, no se han escrito contadores (indicadores de posición) al paquete emitido
sets second bit of compressed packet to one // establece un indicador para indicar que no hay campo contador
} ELSE{
Add zero counter // dicho contador (indicador de posición) indica que los contadores han finalizado; cualquier otra indicación de que no hay contadores adicionales (indicadores de posición) también es factible
}
IF (trackíng update) { // s¡ 3e ha realizado actualización de seguimiento, comunicarlo al lado del decodificador y reiniciar contador
Resets first indlcator bit of compressed packet to T //establece un indicador (o cualquier otro indicador adecuado) para Indicar que ha habido una actualización de seguimiento en el lado del codificador
tracking_update_counter= 0; // reinicia el contador de actualización de seguimiento
} ELSE{
tracking_update_counter++; // incrementa el contador de
actualización de seguimiento
}
output compressed packet // el paquete comprimido puede incluir el campo NP y el campo contador que
incluye contadores (opcionalmente
seguido por una indicación de que no
hay más contadores), opcionalmente
con el primer y segundo bits indicadores y relleno de bits opcional
}
La Fig. 4 ilustra esquemáticamente un diagrama de bloques de una infraestructura 400 para realizar métodos de codificación de cadenas de bits de datos de longitud fija según realizaciones de la descripción, tales como los métodos 100, 200 y/o 300.
Los datos 410 de entrada (por ejemplo, datos de series de tiempo, tales como datos de mantenimiento/telemetría) se introducen en un empaquetador 420, que proporciona una cadena 430 de bits de datos (matriz de bits). La cadena 430 de bits de datos es procesada por un bloque 440 lógico. El bloque 440 lógico puede realizar los métodos descritos anteriormente y proporcionar una representación de los bits 450 impredecibles (bits NP) y una representación 460 de contadores (indicadores de posición). En algunas implementaciones, la representación de los bits NP 450 y la representación de los contadores 460 se escriben en una cadena 470 de bits de salida (matriz de bytes), que se empaqueta por el empaquetador 420 para formar datos 480 de salida, tales como paquetes de datos codificados. En cualquier caso, la representación de los bits 450 NP y la representación de los contadores 460 se incluyen en un paquete de salida para los datos 410 de entrada.
La Fig. 5 ilustra esquemáticamente la implementación 500 del bloque 440 lógico en el diagrama de bloques de la Fig. 4. Las flechas continuas indican el procesamiento que se realiza para cada cadena de bits de datos, mientras que las flechas discontinuas indican el procesamiento que se realiza solo cuando se produce una actualización de seguimiento.
Una cadena 510 de bits de datos de entrada ("Nueva") se introduce en un primer bloque 520 XOR que se somete a una operación XOR con una cadena 515 de bits de referencia ("Ref"). La salida del primer bloque 520 XOR (es decir, una indicación de los bits de diferencia entre la cadena de bits de datos de entrada y la cadena de bits de referencia, o los bits de diferencia para abreviar) se proporciona a un segundo bloque 525 XOR, un primer bloque 535 OR, un segundo bloque 585 OR y un bloque 530 de extracción de bits NP.
El bloque 530 de extracción de bits NP también recibe la cadena 515 de bits de referencia, la cadena 540 de bits de máscara ("Máscara") y la cadena 575 de bits de seguimiento ("Seguimiento"). El bloque 530 de extracción de bits NP extrae/genera los bits 450 impredecibles (bits NP) de la manera descrita anteriormente (por ejemplo, con referencia a la etapa S240).
El segundo bloque 525 XOR realiza una operación XOR de la cadena de bits de referencia y la salida del primer bloque 520 XOR (es decir, los bits de diferencia) y escribe un resultado de la misma en la cadena de bits de referencia (después de que la cadena de bits de referencia se haya proporcionado al bloque de extracción 530 de bits NP). Esto corresponde a la actualización (es decir, sobrescritura) de la cadena 515 de bits de referencia con la cadena 510 de bits de datos de entrada.
El primer bloque 535 OR realiza una operación OR de la salida del primer bloque 520 XOR (es decir, los bits de diferencia) y la cadena 540 de bits de máscara. El resultado de ello (es decir, la cadena 540 de bits de máscara con los bits en las posiciones de bits de los bits de diferencia que se establecen adicionalmente) se compara con la cadena 540 de bits de máscara en un tercer bloque 545 XOR. Por ejemplo, dicho resultado puede realizar la operación XOR con la cadena 540 de bits de máscara en el tercer bloque 545 XOR. La salida del tercer bloque 545 XOR, es decir, los bits de diferencia desenmascarados ("Nuevo*") se proporciona a un bloque 580 de generación de contador junto con la cadena 575 de bits de seguimiento. El bloque 580 de generación de contador genera los contadores (indicadores de posición) 460 para la cadena 470 de bits de salida (es decir, para el paquete de datos de salida codificado) de la manera descrita anteriormente (por ejemplo, con referencia a la etapa S250 y/o a la etapa S320).
En el segundo bloque 585 OR, la salida del primer bloque 520 OR se somete a una operación OR con la cadena 590 de bits de actualización de máscara ("Positiva"), y un resultado de la misma se utiliza para actualizar (es decir, sobrescribir) la cadena 590 de bits de actualización de máscara. De este modo, la cadena 590 de bits de actualización de máscara acumula cualquier bit que haya cambiado de una cadena de bits de datos de entrada a la siguiente.
El bloque lógico de la Fig. 5 además describe las siguientes implementaciones alternativas de actualizaciones de la cadena de bits de máscara y la cadena de bits de seguimiento, que pueden diferir de las descritas anteriormente con referencia a los diagramas de flujo.
En algunas implementaciones, los bits 550 de diferencia desenmascarados se someten opcionalmente a la operación XOR con la cadena 540 de bits de máscara en un cuarto bloque 560 XOR, y una salida de la misma se utiliza para actualizar (es decir, sobrescribir) la cadena 540 de bits de máscara.
En algunas implementaciones, al producirse una actualización de seguimiento, la cadena 540 de bits de máscara se somete a una operación XOR con una cadena 565 de bits de máscara de referencia ("máscara guardada") en un quinto bloque 570 XOR, y el resultado de la misma se utiliza como la nueva cadena 575 de bits de seguimiento (es decir, se utiliza para actualizar/sobrescribir la cadena 575 de bits de seguimiento). Posteriormente, la cadena 565 de bits de máscara de referencia se actualiza/sobrescribe con la cadena 540 de bits de máscara. Además, al producirse una actualización de seguimiento, la cadena 540 de bits de máscara es actualizada/sobrescrita por la cadena 590 de bits de actualización de máscara, que es posteriormente restablecida (por ejemplo, a todo ceros). Actualizar la cadena 540 de bits de máscara puede implicar un sexto bloque 595 XOR.
No hace falta decir que los bloques respectivos que implementan operaciones lógicas de bits (tales como OR, XOR, por ejemplo) pueden implementarse mediante un único bloque para cada operación, por ejemplo, un único bloque XOR que posteriormente se proporciona con entradas apropiadas.
La Fig. 6 ilustra esquemáticamente transiciones entre diferentes clasificaciones/estados para clasificar bits en una cadena de bits de datos de longitud fija según realizaciones de la descripción. Es decir, los bits en la cadena de bits de datos pueden desenmascararse (es decir, no estar cubiertos por la cadena de bits de máscara) y no estar cubiertos por la cadena de bits de seguimiento (estado "desenmascarado"), pueden desenmascararse pero estar cubiertos por la cadena de bits de seguimiento (estado "seguimiento"), y pueden enmascararse (es decir, estar cubiertos por la cadena de bits de máscara, estado "enmascarado)). Un bit que está enmascarado se indica como no predecible.
Dados estos estados, un bit pasa del estado "desenmascarado" al estado "seguimiento" cuando no está cubierto por la cadena de bits de máscara, pero se encuentra que difiere del bit correspondiente (misma posición de bit) en la cadena de bits de referencia (flecha 610 continua). Esta transición puede ocurrir en cualquier momento durante un periodo/ciclo (periodo/ciclo de seguimiento).
Las transiciones restantes (flechas 620, 630, 640 discontinuas) pueden producirse solo cuando ocurre una actualización de seguimiento, es decir, al inicio de un periodo/ciclo. Por consiguiente, un bit pasa del estado "seguimiento" al estado "desenmascarado" si estaba cubierto por la cadena de bits de seguimiento al inicio de un periodo y no ha cambiado (es decir, difiere del bit correspondiente respectivo en la cadena de bits de referencia respectiva) durante ese periodo (flecha 620). Un bit pasa del estado "seguimiento" al estado "enmascarado" si estaba cubierto por la cadena de bits de seguimiento al inicio de un periodo y ha cambiado durante ese periodo (flecha 630). Finalmente, un bit pasa del estado "enmascarado" al estado "seguimiento" si estaba cubierto por la cadena de bits de máscara al inicio de un periodo y no ha cambiado durante ese periodo (flecha 640).
A continuación, se describirá la decodificación/descompresión de paquetes de datos codificados con referencia desde la Fig. 7 a la Fig. 11. En el lado del decodificador (por ejemplo, en tierra), se pueden mantener las mismas cadenas de bits que en el lado del codificador. Estas cadenas de bits se actualizan constantemente (para cada paquete de datos) o se actualizan al final de cada periodo/ciclo (por ejemplo, según un bit indicador en un paquete de datos respectivo para hacerlo) para retraer los cambios correspondientes en estas cadenas de bits en el lado del codificador. Como puede verse a partir de las explicaciones siguientes, la información incluida en los paquetes de datos es suficiente para hacerlo.
En resumen, la descompresión de un paquete de datos actual procede como sigue cuando no es necesaria una actualización de seguimiento para este paquete de datos (por ejemplo, cuando no se ha realizado ninguna actualización de seguimiento para este paquete de datos en el lado del codificador). En primer lugar, la última cadena de bits de datos decodificada se copia en una memoria temporal. Para los bits en esta memoria temporal, los bits indicados por los indicadores de posición en el paquete de datos actual se invierten (es decir, se voltean de '1' a '0' y viceversa). A continuación, los bits impredecibles en el paquete de datos actual se encajan secuencialmente en posiciones que se indican por la cadena de bits de máscara en el lado del decodificador pero no se indican por la cadena de bits de seguimiento en el lado del decodificador. Después de esta etapa, la cadena de bits de máscara en el lado del decodificador se actualiza para indicar también los bits indicados por los indicadores de posición en el paquete de datos actual, y la cadena de bits de seguimiento en el lado del decodificador se actualiza para indicar también los bits indicados por los indicadores de posición de segundo tipo en el paquete de datos actual. El contenido resultante de la memoria temporal representa la cadena de bits de datos decodificada para el paquete de datos actual.
Por otra parte, si se ha realizado una actualización de seguimiento para el paquete de datos actual en el lado del codificador, la descompresión del mismo procede como sigue.
Los bits que se indican mediante un indicador de posición y que se indican al mismo tiempo mediante la cadena de bits de máscara (el indicador de posición en este caso es un indicador de posición de tercer tipo) se establecen en el mismo valor que los bits correspondientes en la última cadena de bits de datos decodificada. Los otros indicadores de posición (es decir, indicadores de posición que no se refieren a bits cubiertos por la cadena de bits de máscara) se procesan de la misma manera que cuando no se ha realizado ninguna actualización de seguimiento para este paquete de datos en el lado del codificador, véase más arriba. La cadena de bits de máscara en el lado del decodificador se actualiza entonces eliminando esos bits de la cadena de bits de máscara (por ejemplo, al configurarlos a '0') que se indican mediante un indicador de posición y que se indican al mismo tiempo mediante la cadena de bits de máscara (actualización positiva de la cadena de bits de máscara). Además, aquellos bits que están cubiertos por la cadena de bits de seguimiento y que no han cambiado durante el último periodo (es decir, no ha habido diferencia entre la cadena de bits de datos y la cadena de bits de referencia para ese bit durante el periodo) también se eliminan de la cadena de bits de máscara. Posteriormente, la nueva cadena de bits de seguimiento se genera para indicar aquellos bits que difieren entre la cadena de bits de máscara y una versión guardada de la cadena de bits de máscara (guardada en el momento de la última actualización de seguimiento). Por ejemplo, la nueva cadena de bits de seguimiento puede generarse sometiendo a la operación XOR a la cadena de bits de máscara con la versión guardada de la cadena de bits de máscara. Finalmente, la cadena de bits de máscara actualizada se guarda como la versión guardada de la cadena de bits de máscara para la siguiente actualización de seguimiento.
La Fig. 7 ilustra, en forma de diagrama de flujo, un método 700 de decodificación/descompresión de paquetes de datos codificados según realizaciones de la descripción. El método 700 puede ser un método de decodificación de datos de series temporales decodificando secuencialmente una pluralidad de paquetes de datos codificados de datos de series temporales en cadenas de bits de datos decodificados correspondientes de datos de series temporales, por ejemplo (por ejemplo, datos de mantenimiento/telemetría). En este caso, decodificar secuencialmente los paquetes de datos codificados comprende actualizar periódicamente una cadena de bits de máscara y actualizar periódicamente una cadena de bits de seguimiento. La cadena de bits de máscara también puede actualizarse continuamente en algunas implementaciones. La cadena de bits de máscara es indicativa de qué bits en las cadenas de bits de datos son predecibles y qué bits en la cadena de bits de datos no son predecibles (por ejemplo, los bits indicados por la cadena de bits de máscara (bits establecidos en la cadena de bits de máscara) pueden no ser predecibles). La cadena de bits de seguimiento es indicativa de qué bits en la cadena de bits de máscara han cambiado recientemente. Se supone que cada paquete de datos codificado incluye una representación de valores de bits impredecibles (bits NP) en la cadena de bits de datos respectiva y una representación de una secuencia de indicadores de posición. Los bits impredecibles son todos aquellos bits en la cadena de bits de datos respectiva que se indican como no predecibles por la cadena de bits de máscara y que no están en posiciones de bits indicadas por la cadena de bits de seguimiento. Los indicadores de posición indican posiciones de bits de bits de diferencia en la cadena de bits de datos respectiva que difieren de los bits correspondientes en una cadena de bits de referencia para la cadena de bits de datos respectiva. Cada indicador de posición indica una posición de bit de un bit de diferencia respectivo con respecto a una posición de bit indicada por el indicador de posición anterior en la secuencia de indicadores de posición. Los indicadores de posición que indican posiciones de bits de los bits de diferencia respectivos que se indican por la cadena de bits de seguimiento codifican la posición de bits con referencia a la cadena de bits de seguimiento.
Decodificar secuencialmente los paquetes de datos codificados comprende además las etapas S710 a S780 para un paquete de datos codificado (por ejemplo, para cada paquete de datos codificado).
En la etapa S710, se obtienen (por ejemplo, se leen) la cadena de bits de referencia, la cadena de bits de máscara y la cadena de bits de seguimiento para el paquete de datos codificado. La cadena de bits de referencia para la cadena de bits de datos dada puede ser la última cadena de bits de datos que se ha procesado/decodificado antes de decodificar la cadena de bits de datos dada. La cadena de bits de máscara y la cadena de bits de seguimiento obtenidas en esta etapa para una cadena de bits de datos dada pueden ser cadenas de bits respectivas como las presentes al final del procesamiento/decodificación de la cadena de bits de datos anterior.
En la etapa S720, la secuencia de indicadores de posición se obtiene (por ejemplo, se extrae, decodifica) del paquete de datos codificado. Por ejemplo, la secuencia de indicadores de posición puede extraerse del segundo campo de datos (campo de contador) del paquete de datos.
En la etapa S730, los valores de los bits impredecibles se obtienen (por ejemplo, se extraen, decodifican) del paquete de datos codificado. Por ejemplo, los valores de los bits impredecibles pueden extraerse del primer campo de datos (campo NP) del paquete de datos.
En la etapa S740, la cadena de bits de datos se establece para que sea idéntica a la cadena de bits de referencia. La cadena de bits de datos reconstruida real se obtendrá modificando ciertos bits en esta versión inicial de la cadena de bits de datos.
En la etapa S750, todos esos bits en la cadena de bits de datos que se indican mediante los indicadores de posición en la secuencia de indicadores de posición pero no se indican mediante ninguna cadena de bits de máscara o la cadena de bits de seguimiento se invierten (es decir, se voltean de "1" a "0" y viceversa).
En la etapa S760, todos esos bits en la cadena de bits de datos que se indican mediante los indicadores de posición en la secuencia de indicadores de posición e indicados mediante la cadena de bits de seguimiento se invierten (es decir, se voltean de "1" a "0" y viceversa).
Por consiguiente, los bits en la cadena de bits de datos se invierten si se indican mediante indicadores de posición de primer tipo o indicadores de posición de segundo tipo, pero no si se indican mediante indicadores de posición de tercer tipo.
En la etapa S770, los valores de los bits impredecibles (bits NP) se insertan en secuencia en la cadena de bits de datos en posiciones de bits respectivas indicadas por la cadena de bits de máscara pero no indicadas por la cadena de bits de seguimiento, a menos que estas posiciones de bits se indiquen por indicadores de posición en la secuencia de indicadores de posición. En este caso, los bits en las posiciones de bits respectivas de la cadena de bits de datos se sustituyen por los valores de los bits impredecibles respectivos. Esto implica que se utiliza la misma dirección de exploración (dirección de procesamiento) para atravesar la cadena de bits que en el lado del codificador.
Etapa S780, se emite la cadena de bits de datos (decodificada/reconstruida). No es necesario decir que la cadena de bits de datos reconstruida de salida es idéntica a la cadena de bits de datos en el lado del codificador que ha llevado a la generación del paquete de datos codificado en cuestión.
Aunque no se muestra en la Fig. 7, El procedimiento 700 puede incluir además actualizar continuamente la cadena de bits de seguimiento para indicar también las posiciones de los bits de diferencia en la cadena de bits de datos que difieren de los bits correspondientes en la cadena de bits de referencia. Es decir, se puede decir que la cadena de bits de seguimiento añade, durante un periodo/ciclo dado, todos aquellos bits (posiciones de bits) para los que ha habido un cambio de una cadena de bits de datos a la siguiente cadena de bits de datos en la secuencia de cadenas de bits de datos durante ese periodo. En términos de indicadores de posición, esto equivale a actualizar (continuamente) la cadena de bits de seguimiento para indicar además todos aquellos bits cuyas posiciones de bits se indican mediante aquellos indicadores de posición que no codifican la posición de bits con referencia a la cadena de bits de seguimiento (indicadores de posición de segundo tipo). Como se ha indicado anteriormente, estos indicadores de posición pueden indicar simplemente un número total de bits entre su posición de bit respectiva y la posición de bit indicada por el indicador de posición anterior.
Como se ha descrito anteriormente en el contexto del procedimiento de codificación correspondiente, la secuencia de indicadores de posición incluye indicadores de posición de primer tipo e indicadores de posición de segundo tipo (posiblemente además de otros tipos de indicadores de posición, tales como indicadores de posición de tercer tipo). Cada indicador de posición puede incluir una etiqueta que identifica el indicador de posición respectivo para que sea o bien un indicador de posición de primer tipo o bien no un indicador de posición de primer tipo. Los indicadores de posición de primer tipo se refieren a los bits entre los bits de diferencia que se indican mediante la cadena de bits de seguimiento. Los indicadores de posición de segundo tipo se refieren a bits entre los bits de diferencia que no se indican por la cadena de bits de seguimiento. Los indicadores de posición de primer tipo indican posiciones de bit respectivas en términos de un número de bits establecidos en la cadena de bits de seguimiento situada entre la posición de bit indicada por el indicador de posición precedente en la secuencia de indicadores de posición y la posición de bit respectiva. El número de bits establecidos en la cadena de bits de seguimiento puede incluir el bit establecido en la posición de bit indicada por el respectivo indicador de posición de primer tipo.
Si la cadena de bits de máscara se actualiza continuamente en el lado del decodificador, el método puede comprender además (no mostrado en la Fig. 7), actualizar la cadena de bits de máscara para indicar además, como no predecible, todos aquellos bits cuyas posiciones de bits se indican por los indicadores de posición de primer tipo y segundo tipo.
Alternativamente, la cadena de bits de máscara podría actualizarse al final de cada periodo/ciclo mediante el procedimiento 800, que se ilustra, en forma de diagrama de flujo, en la Fig. 8.
En la etapa S810, se mantiene una cadena de bits de actualización de máscara (por ejemplo, actualizada a lo largo del procesamiento secuencial de paquetes de datos). La etapa S810 puede realizarse durante el procesamiento de cada paquete de datos, es decir, la cadena de bits de actualización de máscara puede actualizarse con cualquier bit de diferencia para cada cadena de bits de datos que se decodifica. La cadena de bits de actualización de máscara indica, durante un periodo actual, todos los bits en las cadenas de bits de datos decodificadas durante ese periodo que se han identificado como bits que difieren de los bits correspondientes en las cadenas de bits de referencia respectivas. Por consiguiente, puede decirse que la cadena de bits de actualización de máscara añade todos aquellos bits (posiciones de bits) para los que ha habido un cambio desde la cadena de bits de referencia a la cadena de bits de datos respectiva (por ejemplo, un cambio desde una cadena de bits de datos a la siguiente cadena de bits de datos en la secuencia).
La etapa S820 se realiza cuando se requiere una actualización (actualización de seguimiento, por ejemplo, actualización periódica) de la cadena de bits de máscara (en general, si un bit indicador respectivo en el paquete de datos actual indica que tal actualización se ha realizado para ese paquete de datos en el lado del codificador). En esta etapa, la cadena de bits de máscara se establece en la cadena de bits de actualización de máscara. Al mismo tiempo, la cadena de bits de actualización de máscara puede restablecerse (por ejemplo, a todo ceros).
Procedimiento 900, que se ilustra en forma de diagrama de flujo en la Fig. 9, muestra etapas adicionales que pueden realizarse en una actualización de seguimiento. Se supone que la secuencia de indicadores de posición comprende además uno o más indicadores de posición de tercer tipo. Cada indicador de posición de tercer tipo indica una posición de bit respectiva que también se indica por la cadena de bits de máscara pero no se indica por la cadena de bits de seguimiento. En el lado del decodificador, los indicadores de posición de tercer tipo pueden distinguirse de los indicadores de posición de segundo tipo observando que los indicadores de posición de tercer tipo son aquellos indicadores de posición que no están etiquetados como indicadores de posición de primer tipo y que indican una posición de bit que también se indica mediante la cadena de bits de máscara (posiblemente actualizada constantemente) en el lado del decodificador.
En la etapa S910, la cadena de bits máscara se actualiza para indicar todos aquellos bits como predecibles que se indican mediante los indicadores de posición de tercer tipo (actualización positiva). Esto puede implicar eliminar estos bits de la cadena de bits de máscara (por ejemplo, desconfigurarlos, es decir, establecerlos a cero).
En la etapa S920, la cadena de bits de máscara se actualiza para indicar que todos esos bits no son predecibles (actualización negativa) que están en posiciones de bits indicadas por cualquier indicador de posición de primer tipo o indicador de posición de segundo tipo que se han decodificado desde la última actualización de seguimiento (por ejemplo, actualización periódica) de la cadena de bits de máscara.
En la etapa S930, la cadena de bits de máscara se actualiza para indicar todos aquellos bits como predecibles que están en posiciones de bits indicadas por cualquier indicador de posición de tercer tipo que se haya decodificado desde la última actualización periódica de la cadena de bits de máscara (si la hay).
En la etapa S940, la cadena de bits de máscara se actualiza para indicar todos esos bits como predecibles (actualización positiva) que están en las posiciones de bits indicadas en la cadena de bits de seguimiento pero no indicadas por ningún indicador de posición de primer tipo o indicador de posición de segundo tipo que se han decodificado desde la última actualización periódica de la cadena de bits de máscara.
En la etapa S950, la cadena de bits de seguimiento se establece para indicar todos aquellos bits que se indican por la cadena de bits de máscara pero no se indican por la cadena de bits de actualización de máscara, y para indicar todos aquellos bits que se indican por la cadena de bits de actualización de máscara pero no se indican por la cadena de bits de máscara.
Como alternativa a la etapa S950, la cadena de bits de seguimiento puede actualizarse, tras la ocurrencia de una actualización de seguimiento, mediante el método 1000 como se ilustra, en forma de diagrama de flujo, en la Fig. 10.
Etapa S1010, antes de actualizar la cadena de bits de máscara en el caso de que se produzca una actualización de seguimiento (por ejemplo, actualización periódica), la cadena de bits de máscara actual se guarda como una cadena de bits de máscara de referencia (versión guardada de la cadena de bits de máscara).
Etapa S1020, cuando se actualiza la cadena de bits de seguimiento en el caso de que se produzca una actualización de seguimiento (por ejemplo, actualización periódica), la cadena de bits de máscara actualizada se compara con la cadena de bits de máscara de referencia. Esto puede implicar realizar una operación XOR de la cadena de bits de máscara actualizada y la cadena de bits de máscara de referencia. La cadena de bits de seguimiento actualizada se genera para indicar aquellos bits en la cadena de bits de máscara actualizada que difieren de los bits correspondientes en la cadena de bits de máscara de referencia como bits en la cadena de bits de máscara que han cambiado recientemente. Por ejemplo, la cadena de bits de seguimiento actualizada puede ser la operación XOR de la cadena de bits de máscara actualizada y la cadena de bits de máscara de referencia.
La Fig. 11 Ilustra esquemáticamente un ejemplo de método de desplazamiento de posiciones de bits en una cadena de bits de datos de longitud fija según un conjunto de indicadores de posición según realizaciones de la descripción. La cadena 1110 de bits superior indica la cadena de bits de seguimiento, mientras que la cadena 1120 de bits inferior indica la cadena de bits de referencia (o la cadena de bits de datos que se ha inicializado a la cadena de bits de referencia, por ejemplo, en la etapa S740). El ejemplo de la Fig. 11 supone una secuencia de un indicador de posición de primer tipo con un valor de contador de 2, un indicador de posición de segundo tipo con un valor de contador de 13, y de nuevo un indicador de posición de primer tipo con un valor de contador de 1. Esta secuencia puede ir seguida de una indicación de que el indicador de posición anterior es el último indicador de posición en la secuencia, tal como un indicador de posición de primer tipo con un valor de contador de "0", por ejemplo.
El indicador de posición de primer tipo con un valor de contador de "2" significa que la posición de bit codificada está en la posición de bit del segundo bit establecido en la cadena 1110 de bits de seguimiento, comenzando desde la posición de bit codificada por el indicador de posición anterior (que sería el bit de inicio, por ejemplo, LSB, en este caso, ya que el indicador de posición de primer tipo es el primer indicador de posición en la secuencia de indicadores de posición). Por lo tanto, este indicador de posición de primer tipo corresponde a la distancia de bits 1131. El siguiente indicador de posición en la secuencia, es decir, el indicador de posición de segundo tipo con valor de contador de "13" significa que la posición de bit codificada elimina 13 bits (en la dirección de exploración) de la posición de bit codificada por el indicador de posición precedente. Por lo tanto, este indicador de posición de segundo tipo corresponde a la distancia de bits 1132. El siguiente indicador de posición en la secuencia, es decir, el indicador de posición de primer tipo con valor de contador de "1" significa que la posición de bit codificada está en la posición de bit del primer bit establecido en la cadena 1110 de bits de seguimiento, comenzando desde la posición de bit codificada por el indicador de posición anterior. Por lo tanto, este indicador de posición de primer tipo corresponde a la distancia de bits 1133.
Como puede verse en este ejemplo, los indicadores de posición de primer tipo pueden indicar grandes distancias en términos de bits con números muy pequeños. Por ejemplo, el indicador de posición de primer tipo con valor de contador (pequeño) de "2" se refiere a la distancia de bits (grande) de 28.
A continuación, se describirá la razón fundamental que subyace a la técnica propuesta para codificar y decodificar estructuras de datos de longitud fija según realizaciones de la descripción.
La cadena de bits de seguimiento captura las transiciones recientes entre bits predecibles y no predecibles (es decir, los cambios correspondientes en la cadena de bits de máscara). Es más probable que estos bits realicen la transición de regreso a su estado original a corto plazo. Por ejemplo, un bit que no ha cambiado de una cadena de bits de datos a la siguiente durante un periodo de tiempo extendido, pero que después ha cambiado una vez es probable que vuelva a cambiar y después de nuevo no cambie durante un periodo de tiempo extendido. Por otro lado, un bit que ha cambiado frecuentemente de una cadena de bits de datos a la siguiente no ha cambiado de una cadena de bits de datos dada a la siguiente es probable que continúe cambiando entre estados en el futuro. Es importante observar que típicamente (especialmente para datos de series de tiempo, por ejemplo, datos de mantenimiento/telemetría) no hay muchos de estos "bits de transición" en comparación con toda la cadena de bits de datos de entrada en cualquier momento. Esto significa que la cadena de bits de seguimiento es dispersa. Así, agrupar estos bits significa que pueden comprimirse eficazmente incluso si tienen una probabilidad de establecerse más alta que las otras.
Esto se consigue mediante el uso de un contador diferente (indicador de posición de primer tipo) para codificar las posiciones de bit de los "bits de transición". Dado que sus posiciones están codificadas con respecto a la cadena de bits de seguimiento, es decir, en términos de un número de bits establecidos en la cadena de bits de seguimiento entre posiciones respectivas, pueden codificarse mediante números significativamente más pequeños que los contadores para los bits restantes (indicadores de posición de segundo tipo). Puesto que todos los contadores se generan en una pasada sobre la cadena de bits de datos, las distancias entre posiciones de bits indicadas respectivamente son comparativamente cortas, lo que mejora adicionalmente la eficiencia de compresión.
Finalmente, las actualizaciones positivas de la cadena de bits de seguimiento en el lado del decodificador no tienen que señalizarse explícitamente, ya que están implícitas en los indicadores de posición de primer tipo, lo que mejora aún más la eficiencia de compresión.
A continuación se describen las ventajas de las técnicas propuestas para la codificación y decodificación. Comparado con la técnica descrita en el documento WO 2018/145730 A1 una única pasada sobre una cadena de bits de datos entrante es suficiente cuando se aplican métodos según la presente descripción. Todos los indicadores de posición necesarios (por ejemplo, primer tipo, segundo tipo y posiblemente tercer tipo), así como los valores de los bits impredecibles (bits NP) se generan durante la única pasada. Esto da como resultado un mejor rendimiento (en términos de velocidad de procesamiento).
Además, es suficiente un único campo de contador en el paquete de datos comprimido. No es necesario prever campos separados para contadores positivos, negativos y absolutos. Esto da como resultado una compresión más eficiente.
Además, se requieren menos indicadores de bit (banderas). En una implementación, solo se requieren dos indicadores de bit: uno para indicar que es necesaria una actualización de seguimiento, y uno para indicar que están presentes contadores (indicadores de posición) en el campo de contador del paquete de datos comprimido. Esto también contribuye a una compresión más eficiente.
En general, la técnica propuesta permite lograr una mejor eficiencia de compresión. En este caso, el aumento de rendimiento se concentra cuando se necesita, es decir, los peores casos de compresión muestran mejores aumentos de rendimiento que los buenos. De este modo, se pueden evitar picos en la velocidad de datos.
También ha de observarse que, en virtud de seguir también el seguimiento de actualizaciones recientes en la cadena de bits de máscara, la técnica propuesta maneja transiciones de bits a corto plazo mejor que la técnica descrita en el documento WO 2018/145730 A1. Por lo tanto, hay menos fluctuación en la eficiencia de compresión. Además, se puede utilizar un periodo de seguimiento más corto, lo que permite una adaptación más rápida a los datos de entrada cambiantes.
Debería observarse que las características del método descritas anteriormente pueden corresponder a características del aparato respectivas que pueden no describirse explícitamente, por razones de concisión, y viceversa. La descripción del presente documento se considera que se extiende también a tal aparato y viceversa. Por consiguiente, la presente descripción también se refiere a un aparato que comprende un procesador y una memoria acoplada al procesador, en donde el procesador está configurado (por ejemplo, cuando ejecuta instrucciones almacenadas en la memoria) para realizar uno cualquiera de los métodos de codificación o decodificación descritos a lo largo de la descripción. Además, la presente descripción también se refiere a un medio de almacenamiento legible por ordenador que contiene instrucciones para su ejecución por un procesador que hace que el procesador realice uno cualquiera de los métodos de codificación o decodificación descritos a lo largo de la descripción.
Claims (19)
- REIVINDICACIONES1 Un método para codificar cadenas de bits de datos de longitud fija, comprendiendo el método:recibir una secuencia de cadenas de bits de datos de longitud fija; ycodificar secuencialmente las cadenas de bits de datos,en donde codificar secuencialmente las cadenas de bits de datos comprende, para una cadena de bits de datos inmediatamente después de una cadena de bits de datos anterior en la secuencia de cadenas de bits de datos: obtener una cadena de bits de referencia para la cadena de bits de datos, en donde la cadena de bits de referencia corresponde a dicha cadena de bits de datos anterior;obtener una cadena de bits de máscara y una cadena de bits de seguimiento como presentes al final de una codificación previa de la cadena de bits de datos anterior, en donde la cadena de bits de máscara es indicativa de qué bits en las cadenas de bits de datos son predecibles, y qué bits en la cadena de bits de datos no son predecibles, en el sentido de que se espera que los bits predecibles en la cadena de bits de datos inmediatamente después de la cadena de bits de datos anterior sean idénticos a los de la cadena de bits de referencia, y en donde la cadena de bits de seguimiento es indicativa de qué bits en la cadena de bits de máscara han pasado de predecibles a no predecibles o viceversa en un periodo de seguimiento configurable; identificar bits en la cadena de bits de datos que difieren de los bits correspondientes en la cadena de bits de referencia;determinar, como bits impredecibles, todos aquellos bits en la cadena de bits de datos que se indican como no predecibles por la cadena de bits de máscara y que al mismo tiempo no están en posiciones de bits de transición indicadas por la cadena de bits de seguimiento;generar, para aquellos bits entre los bits identificados que no están entre los bits impredecibles, una secuencia de indicadores de posición, indicando cada indicador de posición una posición de bit de un bit respectivo con respecto a una posición de bit indicada por el indicador de posición anterior en la secuencia de indicadores de posición, en donde los indicadores de posición que indican posiciones de bit de bits respectivos que se indican por la cadena de bits de seguimiento codifican la posición de bit con referencia a la cadena de bits de seguimiento;generar un paquete de datos codificado para la cadena de bits de datos, en donde el paquete de datos codificado incluye una representación de valores de los bits impredecibles y una representación de la secuencia de indicadores de posición; yperiódicamente, según el periodo de seguimiento, actualizar la cadena de bits de máscara y la cadena de bits de seguimiento.
- 2. - El método según la reivindicación 1,en donde la secuencia de indicadores de posición incluye indicadores de posición de primer tipo relacionados con los bits entre los bits identificados que se indican por la cadena de bits de seguimiento e indicadores de posición de segundo tipo relacionados con los bits entre los bits identificados que no se indican por la cadena de bits de seguimiento, y en donde los indicadores de posición de primer tipo indican posiciones de bits respectivas en términos de un número de bits establecidos en la cadena de bits de seguimiento ubicados entre la posición de bits indicada por el indicador de posición anterior en la secuencia de indicadores de posición y la posición de bits respectiva.
- 3. - El método según una cualquiera de las reivindicaciones anteriores, que comprende además:mantener una cadena de bits de actualización de máscara que indica, durante un periodo actual, todos los bits en las cadenas de bits de datos codificados durante ese periodo que se han identificado como bits que difieren de los bits correspondientes en las cadenas de bits de referencia respectivas.
- 4. - El método según la reivindicación 3, que comprende además, cuando se actualiza la cadena de bits de máscara: generar, como parte de la secuencia de indicadores de posición, uno o más indicadores de posición de tercer tipo, en donde cada indicador de posición de tercer tipo indica un bit respectivo dentro de la cadena de bits de datos que se indica por la cadena de bits de máscara y que no se indica por ninguna de la cadena de bits de actualización de máscara o la cadena de bits de seguimiento; yestablecer la cadena de bits de máscara para la cadena de bits de actualización de máscara.
- 5. - El método según la reivindicación 3 o 4, que comprende además, cuando se actualiza la cadena de bits de seguimiento:establecer la cadena de bits de seguimiento para indicar todos los bits que se indican por la cadena de bits de máscara pero no se indican por la cadena de bits de actualización de máscara, y para indicar todos los bits que se indican por la cadena de bits de actualización de máscara pero no se indican por la cadena de bits de máscara.
- 6. - El método según una cualquiera de las reivindicaciones anteriores, que comprende además:actualizar la cadena de bits de seguimiento para indicar también posiciones de bits de los bits identificados en la cadena de bits de datos que difieren de los bits correspondientes en la cadena de bits de referencia y no se indican por la cadena de bits de máscara.
- 7. - Un método para decodificar secuencialmente una pluralidad de paquetes de datos codificados en cadenas de bits de datos de longitud fija decodificadas correspondientes,en donde cada paquete de datos codificado corresponde a una cadena de bits de datos que sigue inmediatamente a una cadena de bits de datos anterior en una secuencia de cadenas de bits de datos e incluye una representación de valores de bits impredecibles en la cadena de bits de datos respectiva y una representación de una secuencia de indicadores de posición; yen donde decodificar secuencialmente paquetes de datos codificados comprende, para un paquete de datos codificado:obtener una cadena de bits de referencia para la cadena de bits de datos correspondiente, en donde la cadena de bits de referencia corresponde a dicha cadena de bits de datos anterior,obtener una cadena de bits de máscara, y una cadena de bits de seguimiento para el paquete de datos codificado como presente al final de una decodificación previa de la cadena de bits de datos anterior, en donde la cadena de bits de máscara es indicativa de qué bits en las cadenas de bits de datos son predecibles, y qué bits en la cadena de bits de datos no son predecibles, en el sentido de que se espera que los bits predecibles en la cadena de bits de datos inmediatamente después de la cadena de bits de datos anterior sean idénticos a los de la cadena de bits de referencia, y en donde la cadena de bits de seguimiento es indicativa de qué bits en la cadena de bits de máscara han pasado de predecible a no predecible o viceversa en un periodo de seguimiento configurable;decodificar la secuencia de indicadores de posición a partir del paquete de datos codificado, en donde los indicadores de posición indican posiciones de bits de diferencia en la cadena de bits de datos respectiva que difieren de los bits correspondientes en una cadena de bits de referencia para la cadena de bits de datos respectiva, y en donde cada indicador de posición indica una posición de bits de un bit de diferencia respectivo con respecto a una posición de bits indicada por el indicador de posición anterior en la secuencia de indicadores de posición, en donde los indicadores de posición que indican posiciones de bits de bits de diferencia respectivos que se indican por la cadena de bits de seguimiento codifican la posición de bits con referencia a la cadena de bits de seguimiento;decodificar los valores de los bits impredecibles del paquete de datos codificado, en donde los bits impredecibles son todos aquellos bits en la respectiva cadena de bits de datos que se indican como no predecibles por la cadena de bits de máscara y al mismo tiempo que no están en posiciones de bits de transición indicadas por la cadena de bits de seguimiento;establecer la cadena de bits de datos para que sea idéntica a la cadena de bits de referencia;invertir todos esos bits en la cadena de bits de datos que se indican mediante los indicadores de posición en la secuencia de indicadores de posición pero no se indican mediante ninguna de la cadena de bits de máscara o la cadena de bits de seguimiento;invertir todos estos bits de la cadena de bits de datos que se indican por los indicadores de posición de la secuencia de indicadores de posición e indicados por la cadena de bits de seguimiento;insertar los valores de los bits impredecibles en secuencia en la cadena de bits de datos en posiciones de bits respectivas indicadas por la cadena de bits de máscara pero no indicadas por la cadena de bits de seguimiento, a menos que estas posiciones de bits se indiquen por indicadores de posición en la secuencia de indicadores de posición, en donde los bits en posiciones de bits respectivas de la cadena de bits de datos se sustituyen por los valores de bits impredecibles respectivos;la salida de la cadena de bits de datos; yperiódicamente, según el periodo de seguimiento, actualizar la cadena de bits de máscara y la cadena de bits de seguimiento.
- 8. - El método según la reivindicación 7,en donde la secuencia de indicadores de posición incluye indicadores de posición de primer tipo relacionados con los bits entre los bits de diferencia que se indican por la cadena de bits de seguimiento e indicadores de posición de segundo tipo relacionados con los bits entre los bits de diferencia que no se indican por la cadena de bits de seguimiento, y en donde los indicadores de posición de primer tipo indican posiciones de bits respectivas en términos de un número de bits establecidos en la cadena de bits de seguimiento ubicados entre la posición de bits indicada por el indicador de posición anterior en la secuencia de indicadores de posición y la posición de bits respectiva.
- 9. - El método según la reivindicación 7 u 8, que comprende además:actualizar la cadena de bits de máscara para indicar además, como no predecibles, todos aquellos bits cuyas posiciones de bits se indican por el primer y segundo indicador de posición de tipo.
- 10. - El método según una cualquiera de las reivindicaciones 7 a 9, que comprende además:mantener una cadena de bits de actualización de máscara que indica, durante un periodo actual, todos los bits en las cadenas de bits de datos decodificados durante ese periodo que se han identificado como bits que difieren de los bits correspondientes en las cadenas de bits de referencia respectivas.
- 11. - El método según la reivindicación 10, que comprende además, cuando se actualiza la cadena de bits de máscara: fijar la cadena de bits de máscara a la cadena de bits de actualización de máscara.
- 12. - Procedimiento según una de las reivindicaciones 7 a 11,en donde la secuencia de indicadores de posición comprende además, cuando debe realizarse una actualización de la cadena de bits de máscara, uno o más indicadores de posición de tercer tipo, en donde cada indicador de posición de tercer tipo indica una posición de bits respectiva que también se indica por la cadena de bits de máscara pero no se indica por la cadena de bits de seguimiento; y el método comprende además actualizar la cadena de bits de máscara para indicar todos aquellos bits como predecibles que se indican mediante los indicadores de posición de tercer tipo.
- 13. - El método según la reivindicación 12, que comprende además, cuando se debería realizar una actualización de la cadena de bits de máscara:actualizar la cadena de bits de máscara para indicar que todos aquellos bits no son predecibles que están en posiciones de bits indicadas por cualquier indicador de posición de primer tipo o indicador de posición de segundo tipo que se han decodificado desde la última actualización de la cadena de bits de máscara;actualizar la cadena de bits de máscara para indicar todos aquellos bits como predecibles que están en posiciones de bits indicadas por cualquier indicador de posición de tercer tipo que se haya decodificado desde la última actualización de la cadena de bits de máscara; yactualizar la cadena de bits de máscara para indicar todos aquellos bits como predecibles que están en posiciones de bits indicadas en la cadena de bits de seguimiento pero no indicadas por ningún indicador de posición de primer tipo o indicador de posición de segundo tipo que se han decodificado desde la última actualización de la cadena de bits de máscara.
- 14. - El método según la reivindicación 11 o la reivindicación 12 o 13 cuando depende de la reivindicación 11, que comprende además, cuando se actualiza la cadena de bits de seguimiento:establecer la cadena de bits de seguimiento para indicar todos los bits que se indican por la cadena de bits de máscara pero no se indican por la cadena de bits de actualización de máscara, y para indicar todos los bits que se indican por la cadena de bits de actualización de máscara pero no se indican por la cadena de bits de máscara.
- 15. - El método según una cualquiera de las reivindicaciones 7 a 13, que comprende además:antes de actualizar la cadena de bits de máscara, guardar la cadena de bits de máscara actual como una cadena de bits de máscara de referencia;cuando se actualiza la cadena de bits de seguimiento, se compara la cadena de bits de máscara actualizada con la cadena de bits de máscara de referencia y se genera la cadena de bits de seguimiento actualizada para indicar aquellos bits en la cadena de bits de máscara actualizada que difieren de los bits correspondientes en la cadena de bits de máscara de referencia como bits en la cadena de bits de máscara que han cambiado recientemente.
- 16. - El método según una cualquiera de las reivindicaciones 7 a 15, que comprende además:actualizar la cadena de bits de seguimiento para indicar también posiciones de bits de los bits de diferencia en la cadena de bits de datos que difieren de los bits correspondientes en la cadena de bits de referencia.
- 17. El método según una cualquiera de las reivindicaciones 7 a 16, que comprende además:actualizar la cadena de bits de seguimiento para indicar además todos aquellos bits cuyas posiciones de bits se indican mediante aquellos indicadores de posición que no codifican la posición de bits con referencia a la cadena de bits de seguimiento.
- 18-. Un aparato que comprende un procesador y una memoria acoplada al procesador, estando configurado el procesador para realizar el método de una cualquiera de las reivindicaciones anteriores.
- 19.- Un medio de almacenamiento legible por ordenador que contiene instrucciones para su ejecución por un procesador que hacen que el procesador realice el método de una cualquiera de las reivindicaciones 1 a 17.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| EP19158412.7A EP3700093B1 (en) | 2019-02-20 | 2019-02-20 | Compression and decompression of fixed length data structures |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2983936T3 true ES2983936T3 (es) | 2024-10-28 |
Family
ID=65529453
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES19158412T Active ES2983936T3 (es) | 2019-02-20 | 2019-02-20 | Compresión y descompresión de estructuras de datos de longitud fija |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US10958286B2 (es) |
| EP (1) | EP3700093B1 (es) |
| ES (1) | ES2983936T3 (es) |
Families Citing this family (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11190206B2 (en) * | 2017-02-07 | 2021-11-30 | European Space Agency | Compression and decompression of time series data |
| US12250290B2 (en) | 2022-02-08 | 2025-03-11 | Samsung Display Co., Ltd. | System and method for efficient transition encoding |
| US12086121B2 (en) | 2022-08-02 | 2024-09-10 | Microsoft Technology Licensing, Llc | Using geometric filters to facilitate searches with minimum spanning trees |
| US20240056569A1 (en) * | 2022-08-02 | 2024-02-15 | Microsoft Technology Licensing, Llc | Geometric Filters |
| TW202529405A (zh) * | 2023-09-01 | 2025-07-16 | 南韓商Lx半導體科技有限公司 | 資料處理裝置及資料驅動裝置 |
| US20250117499A1 (en) * | 2023-10-09 | 2025-04-10 | Stmicroelectronics International N.V. | Methods, systems, and apparatuses for improving data encryption |
Family Cites Families (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE2508706C2 (de) * | 1974-05-02 | 1984-10-11 | International Business Machines Corp., Armonk, N.Y. | Schaltungsanordnung zur Codierung von Datenbitfolgen |
| US6788224B2 (en) * | 2000-06-26 | 2004-09-07 | Atop Innovations S.P.A. | Method for numeric compression and decompression of binary data |
| WO2007139969A2 (en) * | 2006-05-26 | 2007-12-06 | Symbol Technologies, Inc. | Data format for efficient encoding and access of multiple data items in rfid tags |
| US8392174B2 (en) * | 2006-08-07 | 2013-03-05 | International Characters, Inc. | Method and apparatus for lexical analysis using parallel bit streams |
| EP2748929B1 (en) * | 2011-08-26 | 2016-06-08 | European Space Agency | Method, device and system for compressing time series data |
| US8799559B2 (en) * | 2011-10-24 | 2014-08-05 | Sandisk Technologies Inc. | Endurance enhancement coding of compressible data in flash memories |
| WO2013070174A1 (en) * | 2011-11-09 | 2013-05-16 | Agency For Science, Technology And Research | Compression devices, decompression devices, compression methods, and decompression methods |
| WO2014150056A1 (en) * | 2013-03-15 | 2014-09-25 | Numbergun Llc | Improvements for base64 encoding and decoding |
| US11190206B2 (en) | 2017-02-07 | 2021-11-30 | European Space Agency | Compression and decompression of time series data |
-
2019
- 2019-02-20 ES ES19158412T patent/ES2983936T3/es active Active
- 2019-02-20 EP EP19158412.7A patent/EP3700093B1/en active Active
-
2020
- 2020-02-19 US US16/794,975 patent/US10958286B2/en active Active
Also Published As
| Publication number | Publication date |
|---|---|
| US10958286B2 (en) | 2021-03-23 |
| US20200266829A1 (en) | 2020-08-20 |
| EP3700093B1 (en) | 2024-07-03 |
| EP3700093C0 (en) | 2024-07-03 |
| EP3700093A1 (en) | 2020-08-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP3700093B1 (en) | Compression and decompression of fixed length data structures | |
| CN111294053B (zh) | 硬件友好的数据压缩方法、系统及装置 | |
| CN113574805A (zh) | 用于在熵编码中处理等概率符号的方法和设备 | |
| US7164370B1 (en) | System and method for decoding data compressed in accordance with dictionary-based compression schemes | |
| US8824569B2 (en) | High bandwidth decompression of variable length encoded data streams | |
| US7215259B2 (en) | Data compression with selective encoding of short matches | |
| US6744388B1 (en) | Hardware-friendly general purpose data compression/decompression algorithm | |
| KR101737451B1 (ko) | 데이터 압축 동안의 대안적 인코딩 솔루션들 평가 | |
| US12080384B2 (en) | Method for compressing genomic data | |
| US6563439B1 (en) | Method of performing Huffman decoding | |
| TWI531971B (zh) | 用以加速壓縮及解壓縮操作之設備與方法 | |
| CN111819806B (zh) | 使用线性反馈移位寄存器的紧凑时间戳系统以及相关系统和方法 | |
| CN113890540B (zh) | 一种并行加速lz77解码方法及装置 | |
| CN103746704B (zh) | 基于双游程交替编码的芯片测试数据传输方法 | |
| CN114390293A (zh) | 并行解码技术 | |
| JP2006092725A (ja) | 圧縮システム及び方法 | |
| ES2826425T3 (es) | Instrucción de codificación aritmética dedicada | |
| US6819272B2 (en) | System, method and computer readable medium for compressing a data sequence for partial decompressing | |
| CN103369311A (zh) | 一种用于防止起始码冲突的方法 | |
| ES2367747T3 (es) | Método de codificación aritmética distribuida. | |
| Vasanthi et al. | Implementation of Robust Compression Technique Using LZ77 Algorithm on Tensilica's Xtensa Processor | |
| KR101714009B1 (ko) | 최소화된 복호 지연 시간을 갖는 역추적 장치 및 방법 | |
| CN108155969B (zh) | 一种针对变长编码数据的解码电路 | |
| CN107896136A (zh) | 一种雷达航迹报文编码方法 | |
| EP2757695A1 (en) | Method and apparatus for encoding and decoding a data stream |