ES2297083T3 - Codificacion entropica por adaptacion de la codificacion entre modos por longitud de ejecucion y por nivel. - Google Patents
Codificacion entropica por adaptacion de la codificacion entre modos por longitud de ejecucion y por nivel. Download PDFInfo
- Publication number
- ES2297083T3 ES2297083T3 ES03020015T ES03020015T ES2297083T3 ES 2297083 T3 ES2297083 T3 ES 2297083T3 ES 03020015 T ES03020015 T ES 03020015T ES 03020015 T ES03020015 T ES 03020015T ES 2297083 T3 ES2297083 T3 ES 2297083T3
- Authority
- ES
- Spain
- Prior art keywords
- huffman
- vector
- code
- coding
- decoding
- 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.)
- Expired - Lifetime
Links
- 230000006978 adaptation Effects 0.000 title description 2
- 238000000034 method Methods 0.000 claims abstract description 170
- 239000013598 vector Substances 0.000 claims description 255
- 230000008569 process Effects 0.000 claims description 20
- 230000008859 change Effects 0.000 claims description 12
- 230000003068 static effect Effects 0.000 claims description 10
- 230000011664 signaling Effects 0.000 claims description 3
- 238000012423 maintenance Methods 0.000 claims 2
- 230000003044 adaptive effect Effects 0.000 description 41
- 238000007906 compression Methods 0.000 description 29
- 230000006835 compression Effects 0.000 description 29
- 238000011002 quantification Methods 0.000 description 23
- 238000009826 distribution Methods 0.000 description 19
- 230000009466 transformation Effects 0.000 description 18
- 230000000875 corresponding effect Effects 0.000 description 14
- 238000012545 processing Methods 0.000 description 12
- 230000015654 memory Effects 0.000 description 10
- 230000008447 perception Effects 0.000 description 9
- 230000002441 reversible effect Effects 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 8
- PXXLQQDIFVPNMP-UHFFFAOYSA-N 3-(diethylcarbamoyl)benzoic acid Chemical compound CCN(CC)C(=O)C1=CC=CC(C(O)=O)=C1 PXXLQQDIFVPNMP-UHFFFAOYSA-N 0.000 description 7
- 230000006837 decompression Effects 0.000 description 7
- 230000005236 sound signal Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000005070 sampling Methods 0.000 description 5
- 230000008520 organization Effects 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 3
- 238000000844 transformation Methods 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000001771 impaired effect Effects 0.000 description 2
- 230000002427 irreversible effect Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 230000003595 spectral effect Effects 0.000 description 2
- BSYNRYMUTXBXSQ-UHFFFAOYSA-N Aspirin Chemical compound CC(=O)OC1=CC=CC=C1C(O)=O BSYNRYMUTXBXSQ-UHFFFAOYSA-N 0.000 description 1
- 108091026890 Coding region Proteins 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000005284 excitation Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 239000000543 intermediate Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000003908 quality control method Methods 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 238000005303 weighing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/02—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using spectral analysis, e.g. transform vocoders or subband vocoders
- G10L19/032—Quantisation or dequantisation of spectral components
-
- 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/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- 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/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4006—Conversion to or from arithmetic code
-
- 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/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4093—Variable length to variable length coding
-
- 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/46—Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Spectroscopy & Molecular Physics (AREA)
- Computational Linguistics (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Human Computer Interaction (AREA)
- Acoustics & Sound (AREA)
- Multimedia (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
Un procedimiento de codificación de datos de audio en un sistema de ordenador, comprendiendo el procedimiento: codificar una primera porción de una secuencia de datos de audio en un modo de codificación vectorial directa de Huffman de dimensión variable (960); conmutar (980) a un modo de codificación de nivel de ejecución en un punto de conmutación, y codificar una segunda porción de la secuencia de datos de audio en el modo de codificación de nivel de ejecución.
Description
Codificación entrópica por adaptación de la
codificación entre modos por longitud de ejecución y por nivel.
La presente invención se refiere a codificación
entrópica adaptativa de datos de audio. Por ejemplo, un codificador
de audio conmuta entre codificación de Huffman de niveles directos
de datos de audio cuantificados y codificación aritmética de
longitudes y niveles de cadencia de datos de audio
cuantificados.
Las solicitudes de Patentes U.S. que se
mencionan a continuación, depositadas simultáneamente, están
relacionadas con la presente solicitud: 1) Solicitud de Patente
Provisional U.S. Serie núm. 60/408.517, titulada "Arquitectura y
Técnicas para Codificación y Descodificación de Audio",
depositada el 4 de Septiembre de 2002, y 2) Solicitud de Patente
Provisional U.S. Serie núm. 60/408.432, titulada "Compresión de
Audio Unificada con Pérdidas y sin Pérdidas", depositada el 4 de
Septiembre de 2002.
Con la introducción de los discos compactos, las
redes de telefonía inalámbrica digital y el suministro de audio por
Internet, el audio digital se ha convertido en algo trivial. Los
ingenieros hacen uso de una diversidad de técnicas para procesar
eficazmente el audio digital mientras que a la vez mantienen la
calidad del audio digital. El hecho de entender estas técnicas,
ayuda a entender cómo se representa y se procesa la información de
audio en un ordenador.
Un ordenador procesa la información de audio
como una serie de números que representan la información de audio.
Por ejemplo, un número simple puede representar una muestra de
audio, que tenga un valor de amplitud (es decir, una intensidad de
sonido) en un instante particular. Diversos factores afectan a la
calidad de la información de audio, incluyendo profundidad de
muestra, frecuencia de muestreo, y modo canal.
La profundidad de muestra (o precisión) indica
la gama de números utilizados para representar una muestra. A mayor
número de valores posibles para la muestra, más alta es la calidad
debido a que el número puede capturar más variaciones leves de
amplitud. Por ejemplo, una muestra de 8 bits tiene 256 valores
posibles, mientras que una muestra de 16 bits tiene 65.536 valores
posibles.
La frecuencia de muestreo (medida normalmente
como el número de muestras por segundo), también afecta a la
calidad. Cuanto más elevada sea la frecuencia de muestreo, más alta
es la calidad debido a que se pueden representar más frecuencias de
sonido. Algunas frecuencias de muestreo habituales son 8.000,
11.025, 22.050, 32.000, 44.100, 48.000 y 96.000
muestras/segundo.
La Tabla 1 muestra varios formatos de audio con
diferentes niveles de calidad, junto con los costes correspondientes
de velocidad de bit bruta.
Según muestra la Tabla 1, el coste de la
información de audio de alta calidad tal como el audio de CD, es
una alta velocidad de bit. La información de audio de alta calidad
consume grandes cantidades de capacidad de almacenamiento en
ordenador y de transmisión. Las compañías y los consumidores
dependen sin embargo crecientemente de los ordenadores, para crear,
distribuir y reproducir contenidos de audio de alta calidad.
Muchos ordenadores y redes de ordenadores
carecen de recursos para procesar el audio digital en bruto. La
compresión (conocida también como codificación), reduce el coste del
almacenaje y la transmisión de información de audio al convertir la
información a una forma de velocidad de bit más baja. La compresión
puede ser sin pérdidas (en la que no se ve perjudicada la calidad)
o con pérdidas (en la que se ve perjudicada la calidad, pero la
reducción de velocidad de bit mediante la compresión sin pérdidas es
más drástica). La descompresión (también llamada descodificación)
extrae una versión reconstruida de la información original a partir
de la forma comprimida.
En general, el objetivo de la compresión de
audio consiste en representar digitalmente las señales de audio
para proporcionar una máxima calidad de señal con la menor cantidad
de bits posible. Un sistema convencional de
codificador/descodificador ("códec") de audio utiliza
codificación de sub-banda/transformación,
cuantificación, control de velocidad, y codificación de longitud
variable, para conseguir su compresión. La cuantificación y otras
técnicas de compresión con pérdidas introducen ruido potencialmente
audible en la señal de audio. La audibilidad del ruido depende de
cuánto ruido exista y de cuánto de ese ruido perciba el oyente. El
primer factor se refiere principalmente a la calidad objetiva,
mientras que el segundo factor depende de la percepción humana del
sonido. La codificación de audio convencional comprime entonces sin
pérdidas los datos cuantificados utilizando codificación de
longitud variable para reducir aún más la velocidad de bit.
Convencionalmente, un codificador de audio
utiliza una diversidad de técnicas diferentes de compresión con
pérdidas. Estas técnicas de compresión con pérdidas incluyen
típicamente transformaciones de frecuencia, modelación/ponderación
perceptual, y cuantificación. La descompresión correspondiente
incluye cuantificación inversa, ponderación inversa, y
transformaciones inversas de frecuencia.
Las técnicas de transformación de frecuencia
convierten datos en una forma que hace que sea más fácil separar la
información perceptualmente importante de la información
perceptualmente no importante. La información menos importante
puede ser sometida entonces a compresión con más pérdidas, mientras
que la información más importante se reserva, con el fin de
proporcionar la calidad mejor percibida para una velocidad de bit
dada. Un transformador de frecuencia recibe típicamente las
muestras de audio y las convierte en datos en el dominio de la
frecuencia, denominados a veces coeficientes de frecuencia o
coeficientes espectrales.
La mayor parte de la energía de los sonidos
naturales tales como la palabra y la música, se concentra en la
gama de baja frecuencia. Esto significa que, estadísticamente, las
gamas de frecuencias más altas tendrán más coeficientes de
frecuencia que sean cero o próximos a cero, reflejando la falta de
energía en las gamas de frecuencias más
altas.
altas.
La modelación perceptual incluye procesar datos
de audio de acuerdo con un modelo del sistema auditivo humano para
mejorar la calidad percibida de la señal de audio reconstruida para
una velocidad de bit dada. Por ejemplo, un modelo auditivo
considera típicamente la gama de bandas críticas y de audición
humanas. Utilizando los resultados de la modelación perceptual, un
codificador configura el ruido (por ejemplo, el ruido de
cuantificación) de los datos de audio con el objetivo de minimizar
la audibilidad del ruido para una velocidad de bit dada. Mientras
que el codificador debe introducir ruido a veces (por ejemplo, ruido
de cuantificación) para reducir la velocidad de bit, la ponderación
permite que el codificador ponga más ruido en las bandas en las que
es menos audible, y viceversa.
La cuantificación mapea las gamas de valores de
entrada en los valores simples, introduciendo pérdidas irreversibles
de información o de ruido de cuantificación, así como permitiendo
también que un codificador regule la calidad y la velocidad de bit
de la salida. A veces, el codificador realiza la cuantificación
junto con un controlador de velocidad que ajusta la cuantificación
para regular la velocidad de bit y/o la calidad. Existen varias
clases de cuantificación, incluyendo la adaptativa y la no
adaptativa, la escalar y la vectorial, la uniforme y la no
uniforme. La ponderación perceptual puede ser considerada como una
forma de cuantificación no uniforme.
La cuantificación inversa y la ponderación
inversa reconstruyen los datos de coeficientes de frecuencia
cuantificados, ponderados, en una aproximación de los datos de
coeficientes de frecuencia originales. El transformador de
frecuencia inversa convierte a continuación los datos de
coeficientes de frecuencia en muestras de audio reconstruidas en el
dominio del tiempo.
Convencionalmente, el codificador de audio
utiliza una o más de una diversidad de técnicas diferentes de
compresión sin pérdidas. En general, las técnicas de compresión sin
pérdidas incluyen codificación de longitud de ejecución,
codificación de Huffman, y codificación aritmética. Las técnicas de
descompresión correspondientes incluyen descodificación de longitud
de ejecución, descodificación de Huffman, y descodificación
aritmética.
La codificación de longitud de ejecución es una
técnica de compresión simple, bien conocida, utilizada para
videocámaras, texto, y otros tipos de contenidos. En general, la
codificación de longitud de ejecución sustituye una secuencia (es
decir, una ejecución) de símbolos consecutivos que tienen el mismo
valor, por el valor y la longitud de la secuencia. En la
descodificación de longitud de ejecución, la secuencia de símbolos
consecutivos es reconstruida a partir del valor de ejecución y de
la longitud de ejecución. Se han desarrollado numerosas variaciones
de codificación/descodificación de longitud de ejecución. Para una
información adicional en torno a la codificación/descodificación de
longitud de ejecución y algunas de sus variaciones, véase, por
ejemplo, Bell et al., Compresión de Texto, Prentice Hall
PTR, páginas 105-107, 1990; Gibson et al.,
Compresión Digital para Multimedia, Morgan Kaufmann, páginas 17.62,
1998; Patente U.S. núm. 6.304.928 de Mairs, et al.; Patente
U.S. núm. 5.883.633 de Gill et al., y Patente U.S. núm.
6.233.071 de Chaddha.
La codificación de nivel de ejecución es similar
a la codificación de longitud de ejecución en el sentido de que
secuencias de símbolos consecutivos que tienen el mismo valor, son
sustituidos por longitudes de secuencias. El valor de las
secuencias es el valor predominante (por ejemplo, 0) en los datos, y
las secuencias están separadas por uno o más niveles que tienen un
valor diferente (por ejemplo, un valor que no es cero).
Los resultados de la codificación de longitud de
secuencia (por ejemplo, los valores de secuencia y las longitudes
de secuencia) o de la codificación de nivel de secuencia, pueden ser
codificados en Huffman para reducir aún más la velocidad de bit. Si
es así, los datos codificados de Huffman son descodificados en
Huffman con anterioridad a la descodificación de longitud de
secuencia.
La codificación de Huffman es otra técnica de
compresión bien conocida que se utiliza para videocámaras, texto y
otros tipos de contenidos. En general, una tabla de códigos de
Huffman asocia códigos de Huffman de longitud variable con valores
únicos de símbolo (o combinaciones únicas de valores). Los códigos
más cortos son asignados a valores de símbolo más probables, y los
códigos más largos son asignados a valores de símbolo menos
probables. Las probabilidades son calculadas para ejemplos típicos
de alguna clase de contenido. O, las probabilidades son calculadas
para datos recién codificados o datos que van a ser codificados, en
cuyo caso los códigos de Huffman se adaptan a las probabilidades de
cambio para los valores únicos de símbolo. En comparación con la
codificación de Huffman, la codificación de Huffman adaptativa
reduce normalmente la velocidad de bit de los datos comprimidos al
incorporar probabilidades más precisas para los datos, pero también
puede que se necesite transmitir información extra que especifique
los códigos de Huffman.
Para codificar símbolos, el codificador de
Huffman sustituye valores de símbolo por códigos de Huffman de
longitud variable asociados a los valores de símbolo en la tabla de
códigos de Huffman. Para descodificar, el descodificador de Huffman
sustituye los códigos de Huffman por los valores de código asociados
a los códigos de Huffman.
En la codificación escalar de Huffman, una tabla
de códigos de Huffman asocia un código de Huffman único a un valor,
por ejemplo, un nivel directo de un valor de dato cuantificado. En
la codificación vectorial de Huffman, una tabla de códigos de
Huffman asocia un código de Huffman único a una combinación de
valores, por ejemplo, un grupo de niveles directos de valores de
datos cuantificados en un orden particular. La codificación
vectorial de Huffman puede conducir a una mejor reducción de la
velocidad de bit que la codificación escalar de Huffman (por
ejemplo, permitiendo que el codificador aproveche fraccionalmente
las probabilidades de los códigos binarios de Huffman). Por otra
parte, el código de cifrado y descifrado para la codificación
vectorial de Huffman puede ser extremadamente grande cuando los
códigos simples representan grandes grupos de símbolos o los
símbolos tienen grandes gamas de valores potenciales (debido al gran
número de combinaciones potenciales). Por ejemplo, si el tamaño del
alfabeto es de 256 (para valores de 0 a 255 por símbolo), y el
número de símbolos por vector es de 4, el número de combinaciones
potenciales es de 256^{4} = 4.294.967.296. Esto consume memoria y
recursos de procesamiento al calcular el código de cifrado y
descifrado y hallar los códigos de Huffman, y consume recursos de
transmisión al transmitir el código de cifrado y descifrado.
Se han desarrollado numerosas variaciones de
codificación/descodificación de Huffman. Para una información
adicional acerca de la codificación/descodificación de Huffman y de
algunas de sus variaciones, véase, por ejemplo, Bell et al.,
Compresión de Texto, Prentice Hall PTR, páginas
105-107, 1990; Gibson et al., Compresión
Digital para Multimedia, Morgan Kaufmann, páginas
17-62, 1998.
La Patente U.S. núm. 6.223.162 de Chen et
al., describe codificación multi-nivel de
longitud de secuencia de datos de audio. Una transformación de
frecuencia produce una serie de valores de coeficientes de
frecuencia. Para porciones de un espectro de frecuencia en el que
el valor predominante sea cero, un codificador
multi-nivel de longitud de secuencia correlaciona
las secuencias de valores cero con valores distintos de cero, y
asigna palabras de código de longitud variable. Un codificador
utiliza un código de cifrado y descifrado especializado, con
respecto a la probabilidad de recibir una secuencia de entrada de
coeficientes espectrales de valor cero, seguido de un coeficiente
de valor distinto de cero. Un descodificador correspondiente asocia
una palabra de código de longitud variable con una secuencia de
coeficientes de valor cero y de coeficientes adyacentes de valor
distinto de cero.
La Patente U.S. núm. 6.377.930 de Chen et
al., describe codificación variable respecto a longitud variable
de datos de audio. Un codificador asigna un código de longitud
variable a un grupo de tamaño variable de valores de coeficientes
de frecuencia.
La Patente U.S. núm. 6.300.888 de Chen et
al., describe conmutación de modo de codificación entrópica para
codificar audio en el dominio de la frecuencia. Un codificador de
audio en el dominio de la frecuencia, realiza una selección entre
diferentes modos de codificación entrópica de acuerdo con las
características de una corriente de entrada. En particular, la
corriente de entrada se divide en gamas de frecuencia de acuerdo con
criterios estadísticos derivados del análisis estadístico de una
entrada típica o real que va a ser codificada. A cada gama se
asigna un codificador de entropía optimizado para codificar el tipo
de datos de la gama. Durante la codificación y la descodificación,
un selector de modo aplica el procedimiento correcto a las
diferentes gamas de frecuencia. Los contornos de la partición
pueden estar decididos por anticipado, permitiendo que el
descodificador conozca implícitamente qué procedimiento de
descodificación debe aplicar a los datos codificados. O, se pueden
utilizar disposiciones adaptativas, en las que los contornos estén
señalizados en la corriente de salida para indicar un cambio de
modo de codificación para los datos posteriores. Por ejemplo, un
contorno de partición separa principalmente coeficientes de
frecuencia cuantificados en cero de principalmente coeficientes
cuantificados como no cero, y a continuación aplica codificadores
optimizados para tales datos.
Para detalles adicionales acerca de las patentes
de Chen, véanse las propias patentes.
La codificación aritmética es otra técnica de
compresión bien conocida utilizada para videocámaras y otros tipos
de contenidos. La codificación aritmética se utiliza a veces en
aplicaciones en las que el número óptimo de bits para codificar un
símbolo de entrada dado, es un número fraccionario de bits, y en
casos en los que existe una correlación estadística entre ciertos
símbolos de entrada individuales. La codificación aritmética
incluye generalmente representar una secuencia de entrada como un
número único dentro de una gama dada. Típicamente, el número es un
número fraccionario entre 0 y 1. Los símbolos de la secuencia de
entrada están asociados a gamas que ocupan porciones del espacio
entre el 0 y el 1. Las gamas se calculan en base a la probabilidad
de que ocurra el símbolo particular en la secuencia de entrada. El
número fraccionario utilizado para representar la secuencia de
entrada se construye con referencia a las gamas. Por lo tanto, las
distribuciones de probabilidad para los símbolos de entrada son
importantes en los esquemas de codificación aritmética.
En codificación aritmética basada en contexto,
las diferentes distribuciones de probabilidad para los símbolos de
entrada están asociadas a diferentes contextos. La distribución de
probabilidad utilizada para codificar la secuencia de entrada,
cambia cuando cambia el contexto. El contexto puede ser calculado
midiendo diferentes factores que se espera que afecten a la
probabilidad de que aparezca un símbolo de entrada particular en una
secuencia de entrada. Para información adicional acerca de la
codificación/descodificación aritmética y de algunas de sus
variaciones, véase Nelson, El Libro de Compresión de Datos, "Lo
Mejor de Huffman: Codificación Aritmética", Capítulo 5, pp.
123-65 (1992).
Diversos estándares y sistemas códec utilizan
compresión y descompresión sin pérdidas, incluyendo versiones del
codificador y descodificador de Windows Media Audio ["WMA"] de
Microsoft Corporation. Otros sistemas códec han sido proporcionados
o especificados por el estándar Audio Layer 3 ["MP3"], de
Motion Picture Experts Group, el estándar Advanced Audio Coding
["AAC"], de Motion Picture Experts Group 2, y Dolby AC3. Para
información adicional, véanse los estándares respectivos o las
publicaciones técnicas.
El artículo "ASPEC Coding" de K.
Arandenburg, 10º Proc. AES Publ. Conference,
pp-71-80, describe codificación de
transformación combinada con codificación entrópica.
En cualquier caso, las ventajas de las técnicas
y sistemas anteriores para la compresión sin pérdidas de datos de
audio, no tienen las ventajas de la presente invención.
En resumen, la descripción detallada va dirigida
a diversas técnicas y herramientas para la codificación y
descodificación entrópica adaptativa de datos de audio. Las diversas
técnicas y herramientas pueden ser utilizadas de forma combinada o
independiente. El alcance de la invención se encuentra definido en
las reivindicaciones independientes 1, 17, 19, 32, 34 y 41.
En un aspecto, un codificador codifica una
primera porción de una secuencia de datos de audio en un modo de
codificación de Huffman vectorial directa de dimensión variable,
conmuta a un modo de codificación de nivel de secuencia en un punto
de conmutación, y codifica una segunda porción en el modo de
codificación de nivel de secuencia (por ejemplo, codificación
aritmética basada en contexto, codificación de Huffman, codificación
vectorial de Huffman). Por ejemplo, la primera porción consiste
principalmente en coeficientes de audio cuantificados distintos de
cero, y la segunda porción consiste principalmente en coeficientes
de audio cuantificados de valor cero. El punto de conmutación puede
ser predeterminado (por ejemplo, comprobando la eficacia de
codificar la secuencia utilizando el punto de conmutación) o
determinado adaptativamente. El codificador puede enviar una señal
indicativa del punto de conmutación en una corriente de bits
codificados.
En otro aspecto, un descodificador descodifica
una primera porción de una secuencia codificada en un modo de
descodificación de Huffman vectorial directa de dimensión variable,
conmuta a un modo de descodificación de nivel de secuencia en un
punto de conmutación, y descodifica una segunda porción en el modo
de descodificación de nivel de secuencia (por ejemplo,
descodificación aritmética basada en contexto, descodificación de
Huffman, descodificación vectorial de Huffman). Con anterioridad al
a la conmutación, el descodificador puede recibir una señal
indicativa del punto de conmutación.
En otro aspecto, un codificador o un
descodificador, codifica o descodifica una primera porción de una
secuencia en un modo aritmético directo basado en contexto, conmuta
a un modo de nivel de secuencia en un punto de conmutación, y
codifica o descodifica una segunda porción en el modo de nivel de
secuencia. El modo de nivel de secuencia puede ser el modo
aritmético basado en contexto.
En otro aspecto, un codificador selecciona una
primera tabla de códigos a partir de un conjunto de tablas de
códigos plurales en base al número de símbolos de un primer vector,
y representa el primer vector con un código a partir de la primera
tabla de códigos. La primera tabla de códigos puede incluir códigos
para representar vectores probables que tengan un número de
símbolos, y un código de escape para los vectores menos probables.
El codificador también codifica un segundo vector que tiene un
número diferente de símbolos. Por ejemplo, el primer vector tiene
un número de símbolos mayor que el segundo vector, y tiene una
probabilidad de ocurrencia más alta que el segundo vector. Para
codificar el segundo vector, el codificador puede elegir una segunda
tabla de códigos, diferente, basada en el número de símbolos del
segundo vector. Si el segundo vector tiene un símbolo, el
codificador puede representar el segundo vector utilizando una
técnica de codificación sin-tabla.
En otro aspecto, un descodificador descodifica
un primer vector al recibir un primer código, y busca el primer
código en una primera tabla de códigos. Si el primer código es un
código de escape, el descodificador recibe y descodifica un segundo
código que no está en la primera tabla. Si el primer código no es un
código de escape, el descodificador busca símbolos para el primer
vector en la primera tabla de códigos, y los incluye en una
corriente de datos descodificados. El número de símbolos del primer
vector constituye la base de si el primer código es un código de
escape. El descodificador puede descodificar el segundo código
buscándolo en una segunda tabla. Si el segundo código es un código
de escape, el descodificador recibe y descodifica un tercer código
que representa el primer vector que no esté en la segunda tabla. Si
el segundo código no es un código de escape, el descodificador
busca símbolos para el primer vector en la segunda tabla e incluye
los símbolos en la corriente de datos descodificados.
En otro aspecto, un codificador codifica
coeficientes de datos de audio utilizando una técnica de
codificación sin-tabla. Si un coeficiente está
dentro de una primera gama de valores, el codificador codifica el
coeficiente con un código de un bit seguido de un valor codificado
de 8 bits. Para otras gamas de valores, el codificador codifica el
coeficiente con un código de dos bits seguido de un valor codificado
de 16 bits, un código de tres bits seguido de un valor codificado
de 24 bits, o un código diferente de tres bits seguido de un valor
codificado de 31 bits.
En otro aspecto, en un esquema de codificación
vectorial de Huffman, un codificador determina un código de Huffman
a partir de un grupo de tales códigos para su utilización en la
codificación de un vector, y codifica el vector utilizando el
código de Huffman. La determinación del código se basa en la suma de
valores de los símbolos de datos de audio del vector. Si el código
de Huffman es un código de escape, ello indica que se debe
codificar un vector n-dimensional como x vectores
x/n-dimensionales utilizando al menos una tabla de
código diferente. El codificador puede comparar la suma con un
umbral que depende del número de símbolos del vector. Por ejemplo,
el umbral es 6 para 4 símbolos, 16 para 2 símbolos, o 100 para 1
símbolo.
En otro aspecto, un codificador recibe una
secuencia de datos de audio y codifica al menos parte de la
secuencia utilizando codificación aritmética basada en contexto. Un
descodificador recibe una secuencia codificada de coeficientes de
datos de audio y descodifica al menos parte de la secuencia
codificada utilizando descodificación aritmética basada en
contexto.
En otro aspecto, un codificador codifica
coeficientes de datos de audio utilizando codificación aritmética
basada en contexto. Uno o más contextos tienen distribuciones de
probabilidad asociadas que representan probabilidades de
coeficientes. El codificador determina adaptativamente un contexto
para un coeficiente actual basado, al menos en parte, en un modo de
representación del coeficiente actual, y codifica el coeficiente
actual utilizando el contexto. Por ejemplo, si el modo de
representación es directo, el codificador determina adaptativamente
el contexto en base, al menos en parte, a los niveles directos de
coeficientes anteriores (por ejemplo, los dos coeficientes
inmediatamente anteriores al coeficiente actual). Si el modo de
representación es el nivel de secuencia, el codificador determina
adaptativamente el contexto en base, al menos en parte, al
porcentaje de coeficientes de valor cero, y a la longitud de
secuencia previa de coeficientes de valor cero en la secuencia de
audio de entrada. Si el modo de representación es el nivel de
secuencia, el codificador determina adaptativamente el contexto en
base, al menos en parte, a la longitud de secuencia actual de
coeficientes de valor cero, a la longitud de secuencia previa de
coeficientes de valor cero, y a los niveles directos de coeficientes
previos.
En otro aspecto, un codificador o un
descodificador codifica o descodifica una primera porción de datos
de audio utilizando codificación o descodificación directas,
manteniendo un conteo de coeficientes consecutivos iguales a un
valor predominante (por ejemplo, 0). Si el conteo excede de un
umbral, el codificador o el descodificador codifica o descodifica
una segunda porción de los datos de audio utilizando codificación o
descodificación de nivel de secuencia. El umbral puede ser estático
o ser determinado adaptativamente. El umbral puede depender del
tamaño del bloque de coeficientes. Por ejemplo, el umbral puede ser
4 para un bloque de 256 coeficientes, u 8 para un bloque de 512
coeficientes.
En otro aspecto, un codificador o un
descodificador codifica o descodifica una primera porción de una
secuencia utilizando una primera tabla de código, y una segunda
porción de la secuencia utilizando una segunda tabla de código. La
primera tabla se utiliza cuando las secuencias más largas de
coeficientes consecutivos iguales a un valor predominante (por
ejemplo, 0) son las más probables, y la segunda tabla se utiliza
cuando las secuencias más cortas de coeficientes consecutivos de
igual valor son las más probables. La tabla que se utilice puede
estar indicada por un bit de señal.
Las características y ventajas de las técnicas
de codificación y descodificación entrópicas adaptativas, se
pondrán de manifiesto a partir de la descripción detallada que sigue
de varias realizaciones, realizada con referencia a los dibujos que
se acompañan.
La Figura 1 es un diagrama de bloques de un
entorno de computación adecuado en el que pueden ser implementadas
las realizaciones descritas;
la Figura 2 es un diagrama de bloques de un
codificador de audio en el que pueden ser implementadas las
realizaciones descritas;
la Figura 3 es un diagrama de bloques de un
descodificador de audio en el que pueden ser implementadas las
realizaciones descritas;
la Figura 4 es un diagrama de flujo que muestra
una técnica de codificación de audio generalizada
multi-modo;
la Figura 5 es un diagrama de flujo que muestra
una técnica de codificación de audio multi-modo con
cálculo de punto de conmutación adaptativo;
la Figura 6 es un diagrama de flujo que muestra
una técnica de descodificación de audio generalizada
multi-modo;
la Figura 7 es un diagrama de flujo que muestra
una técnica de codificación vectorial de Huffman generalizada de
dimensión variable;
la Figura 8 es un diagrama de flujo que muestra
una técnica detallada para la codificación de datos de audio
utilizando codificación vectorial de Huffman de dimensión
variable;
la Figura 9 es un diagrama de flujo que muestra
una técnica para codificación vectorial de Huffman de dimensión
variable de niveles de señal directa, donde el codificador determina
adaptativamente un punto de conmutación para cambiar a codificación
de longitudes de secuencia y de niveles de señal;
la Figura 10 es un diagrama de flujo que muestra
una técnica de descodificación vectorial de Huffman generalizada de
dimensión variable;
la Figura 11 es un diagrama de flujo que muestra
una técnica detallada para descodificar vectores codificados
utilizando codificación vectorial de Huffman de dimensión
variable;
la Figura 12 es un diagrama de flujo que muestra
una técnica para la descodificación vectorial de Huffman, de
dimensión variable, de niveles de señal directa donde el
descodificador determina adaptativamente un punto de conmutación
para cambiar a descodificación de longitudes de secuencia y de
niveles de señal;
las Figuras 13A - 13D son distribuciones de
probabilidad para niveles de longitud de no secuencia, en un esquema
de codificación aritmética basada en contexto;
las Figuras 14A - 14H son distribuciones de
probabilidad para diferentes longitudes de secuencia en un esquema
de codificación aritmética basada en contexto;
las Figuras 15A - 15H son distribuciones de
probabilidad para niveles codificados de longitud de secuencia en
un esquema de codificación aritmética basada en contexto;
la Figura 16 es un diagrama de flujo que muestra
una técnica para la codificación aritmética directa, basada en
contexto, de coeficientes, donde el codificador determina un punto
de conmutación para cambiar a codificación de longitudes y niveles
de secuencia, y
la Figura 17 es un diagrama de flujo que muestra
una técnica de descodificación aritmética basada en contexto, donde
el descodificador determina adaptativamente un punto de conmutación
para cambiar a descodificación de longitudes de secuencia y de
niveles de señal.
En las realizaciones descritas, un codificador
de audio realiza varias técnicas de codificación entrópica
adaptativa. Las técnicas de codificación entrópica adaptativa
mejoran el comportamiento del codificador, reduciendo la velocidad
de bit y/o mejorando la calidad. Un descodificador ejecuta las
técnicas de descodificación entrópica correspondientes. Mientras
que aquí se han descrito las técnicas como parte de un único sistema
integrado, las técnicas pueden ser aplicadas por separado,
potencialmente en combinación con otras técnicas.
El codificador y el descodificador de audio,
procesan señales de audio discretas. En las realizaciones descritas,
las señales de audio son coeficientes cuantificados a partir de
señales de audio transformadas en frecuencia. Alternativamente, el
codificador y el descodificador procesan otra clase de señal de
audio discreta o de señal discreta que representa vídeo u otra
clase de información.
En algunas realizaciones, un codificador de
audio conmuta adaptativamente entre codificación de niveles de
señal directa y codificación de longitudes de secuencia y niveles de
señal. El codificador codifica los niveles de señal directa
utilizando códigos escalares de Huffman, códigos vectoriales de
Huffman, codificación aritmética, u otra técnica. En la
codificación de longitud/nivel de secuencia (también conocida como
codificación de secuencia-nivel), cada longitud de
secuencia representa una secuencia de cero o más ceros, y cada nivel
de señal representa un valor distinto de cero. En el espacio de
evento de señal de secuencia, el codificador codifica longitudes y
niveles de secuencia en ese espacio de evento, utilizando códigos de
Huffman, codificación aritmética, u otra técnica. Un descodificador
realiza una conmutación adaptativa correspondiente durante la
descodificación. La conmutación adaptativa ocurre cuando se alcanza
un número de umbral de niveles de valor cero. Alternativamente, el
codificador y el descodificador conmutan en base a criterios
adicionales o diferentes.
En algunas realizaciones, un codificador de
audio hace uso de codificación vectorial de Huffman de dimensión
variable. La codificación vectorial de Huffman de dimensión variable
permite que el codificador utilice códigos de Huffman para
representar combinaciones más probables de símbolos que utilizan
vectores de mayor dimensión, y combinaciones menos probables de
símbolos que utilizan vectores o escalares de dimensión más pequeña.
Un descodificador realiza la correspondiente descodificación de
Huffman de dimensión variable.
En algunas realizaciones, un codificador de
audio utiliza codificación aritmética basada en contexto. Los
contextos utilizados por el codificador permiten una compresión
eficaz de diferentes tipos de datos de audio. Un descodificador
realiza la correspondiente descodificación aritmética basada en
contexto.
En las realizaciones descritas, el codificador y
el descodificador de audio ejecutan varias técnicas. Aunque las
operaciones relativas a estas técnicas se describen típicamente en
un orden secuencial, particular, por motivos de presentación, se
comprenderá que esta manera de descripción abarca reordenamientos
menos importantes en cuanto al orden de operaciones. Además, por
motivos de simplicidad, los diagramas de flujo no muestran
típicamente las diversas formas en que pueden ser usadas las
técnicas particulares conjuntamente con otras técnicas.
La Figura 1 ilustra un ejemplo generalizado de
un entorno (100) de computación adecuado en el que pueden ser
implementadas las realizaciones descritas. No se pretende que el
entorno (100) de computación sugiera ninguna limitación en cuanto
al uso o la funcionalidad de la invención, puesto que la presente
invención puede ser implementada en entornos muy diversos de
propósito general o de propósito especial.
Con referencia a la Figura 1, el entorno (100)
de computación incluye al menos una unidad (110) de procesamiento,
y memoria (120). En la Figura 1, la configuración (130) más básica
ha sido incluida dentro de una línea de puntos. La unidad (110) de
procesamiento ejecuta instrucciones ejecutables con ordenador, y
puede ser un procesador real o virtual. En un sistema
multi-procesamiento, múltiples unidades de
procesamiento ejecutan instrucciones ejecutables con ordenador para
incrementar la potencia de procesamiento. La memoria (120) puede ser
memoria volátil (por ejemplo, registros, caché, RAM), memoria no
volátil (por ejemplo, ROM, EEPROM, memoria flash, etc.), o
cualquier combinación de las dos. La memoria (120) almacena software
(180) que implementa un codificador/descodificador de audio que
realiza codificación/descodificación entrópica adaptativa de datos
de
audio.
audio.
Un entorno de computación puede tener
características adicionales. Por ejemplo, el entorno (100) de
computación incluye un dispositivo de almacenaje (140), uno o más
dispositivos (160) de entrada, y una o más conexiones (170) de
comunicación. Un mecanismo de interconexión (no representado), tal
como un bus, un controlador, o una red, interconecta los
componentes del entorno (100) de computación. Típicamente, el
software del sistema operativo (no representado) proporciona un
entorno operativo para otra ejecución de software en el entorno
(100) de computación, y coordina las actividades de los componentes
del entorno (100) de computación.
El almacenaje (140) puede ser extraíble o no
extraíble, e incluye discos los magnéticos, cintas o casetes
magnéticos, CD-ROMs, CD-RWs, DVDs o
cualquier otro medio que pueda ser utilizado para almacenar
información y al que se pueda acceder dentro del entorno (100)
computacional. El almacenaje (140) almacena instrucciones para el
software (180) que implementa el codificador/descodificador de audio
que realiza la codificación/descodificación entrópica de datos de
audio. El(los) dispositivo(s) de entrada(150)
puede(n) ser un dispositivo táctil de entrada tal como un
teclado, un ratón, un lápiz o una bola de seguimiento, un
dispositivo de entrada por voz, un dispositivo de escaneo, un
adaptador de red, u otro dispositivo que proporcione entrada al
entorno (100) de computación. Para el audio, el(los)
dispositivo(s) (150) de entrada puede(n) ser una
tarjeta de sonido o un dispositivo similar que acepte una entrada
de audio en forma analógica o digital, o un lector de
CD-ROM que proporcione muestras de audio al entorno
de computación. El(los) dispositivo(s) (160) de salida
puede(n) ser una pantalla de visualización, una impresora,
un altavoz, un transcriptor de CD/DVD, un adaptador de red, u otro
dispositivo que proporcione una salida desde el entorno (100) de
computación.
La(s) conexión(es) (170) de
comunicación permite(n) la comunicación mediante un medio de
comunicación con otra entidad de computación. El medio de
comunicación transporta información tal como instrucciones
ejecutables con ordenador, información de audio comprimido, u otros
datos en una señal de datos modulada. Una señal de datos modulada
es una señal que tiene una o más de sus características dispuestas o
cambiadas para codificar información en la señal. A título de
ejemplo, y sin limitación alguna, los medios de comunicación
incluyen técnicas alámbricas o inalámbricas implementadas con un
portador eléctrico, óptico, de RF, de infrarrojos, acústico, o de
otro tipo.
La invención puede ser descrita en el contexto
general de los medios susceptibles de lectura con ordenador. Los
medios legibles con ordenador consisten en cualquier medio
disponible al que se pueda acceder con un entorno de computación. A
título de ejemplo, y sin limitación, dentro del entorno (100) de
computación, los medios legibles con ordenador incluyen memoria
(120), medios de almacenaje (140), medios de comunicación, y
combinaciones de cualesquiera de ellos.
La invención puede ser descrita en el contexto
general de las instrucciones ejecutables con ordenador, tales como
las incluidas en módulos de programa, que son ejecutadas en un
entorno de computación sobre un procesador objetivo real o virtual.
En general, los módulos de programa incluyen rutinas, programas,
librerías, objetos, clases, componentes, estructuras de datos,
etc., que realizan tareas particulares o que implementan tipos
particulares de datos abstractos. La funcionalidad de los módulos de
programa puede ser combinada o dividida en módulos de programa
según se desee, en diversas realizaciones. Las instrucciones
ejecutables con ordenador para módulos de programa pueden ser
ejecutadas dentro de un entorno de computación local o
distribuido.
Por motivos de presentación, la descripción
detallada utiliza términos tales como "analizar",
"enviar", "comparar" y "comprobar" para describir
operaciones de ordenador en un entorno de computación. Estos
términos son abstracciones de alto nivel para operaciones
realizadas por un ordenador, y no deben ser confundidos con los
actos llevados a cabo por un ser humano. Las operaciones reales de
ordenador que corresponden a esos términos, varían dependiendo de
la implementación.
La Figura 2 es un diagrama de bloques de un
codificador (200) de audio generalizado en el que pueden ser
implementadas las realizaciones descritas. El codificador (200)
realiza codificación entrópica adaptativa de datos de audio. La
Figura 3 es un diagrama de bloques de un descodificador (300) de
audio generalizado en el que pueden ser implementadas la
realizaciones descritas. El descodificador (300) descodifica datos
de audio codificados.
Las relaciones mostradas entre módulos del
interior del codificador y del descodificador indican un flujo de
información en un ejemplo de codificador y de descodificador; no se
muestran otras relaciones por motivos de simplicidad. Dependiendo
de la implementación y del tipo de compresión que se desee, módulos
de codificador o de descodificador pueden ser añadidos, omitidos,
divididos en múltiples módulos, combinados con otros módulos, y/o
sustituidos por módulos similares. En realizaciones alternativas,
codificadores o descodificadores con diferentes módulos y/o con
otras configuraciones realizan codificación y descodificación
entrópica adaptativa de datos de audio.
El codificador (200) de audio generalizado
incluye un selector (208), un pre-procesador (210)
multi-canal, un divisor/configurador (200) de
mosaico, un transformador (230) de frecuencia, un modelador (240) de
percepción, un ponderador (242), un transformador (250)
multi-canal, un cuantificador (260), un codificador
(260) de entropía, un controlador (280), un codificador (272) sin
pérdidas mezclado/puro y un codificador (274) de entropía asociado,
y un multiplexor (290) de corriente de bits ["MUX"]. A
continuación se realiza la descripción de algunos de los módulos
del codificador (200). Para la descripción de otros módulos del
codificador (200) de algunas realizaciones, véanse las aplicaciones
referenciadas en la sección de Datos de Aplicación Relacionados.
El codificador (200) recibe una serie en el
tiempo de muestras (205) de audio de entrada a una profundidad y
frecuencia de muestreo en formato modulado de código de pulso
["PCM"]. Las muestras (205) de audio de entrada pueden ser
audio multi-canal (por ejemplo, modo estéreo,
envolvente) o mono. El codificador (200) comprime las muestras
(205) de audio y multiplexa la información producida por los
diversos módulos del codificador (200) para presentar a la salida
una corriente de bits (295) en un formato tal como un formato
Windows Media Audio ["WMA"] o Advanced
Streaming Format ["ASF"]. Alternativamente, el codificador (200) trabaja con otros formatos de entrada y/o de salida.
Streaming Format ["ASF"]. Alternativamente, el codificador (200) trabaja con otros formatos de entrada y/o de salida.
Inicialmente, el selector (208) elige entre los
múltiples modos de codificación para las muestras (205) de audio.
En la Figura 2, el selector (208) conmuta entre dos modos: un modo
de codificación sin pérdidas mezclada/pura y un modo de codificación
con pérdidas. El modo de codificación sin pérdidas incluye el
codificador (272) sin pérdidas mezclado/puro, y se utiliza
típicamente para compresión de alta calidad (y de alta velocidad de
bit). El modo de codificación con pérdidas incluye componentes tales
como el ponderador (242) y el cuantificador (260), y se utiliza
típicamente para compresión de calidad ajustable (y velocidad de bit
controlada). La decisión de selección en el selector (208) depende
de la entrada de usuario (por ejemplo, un usuario que selecciona
codificación sin pérdidas para realizar copias de audio de alta
calidad) o de otros criterios. En otras circunstancias (por
ejemplo, cuando la compresión con pérdidas falla en cuanto a la
entrega de la calidad adecuada o sobre-produce
bits), el codificador (200) puede conmutar desde codificación con
pérdidas a codificación sin pérdidas mezclada/pura para un cuadro o
un conjunto de cuadros.
El transformador (230) de frecuencia recibe las
muestras (205) de audio y las convierte en datos en el dominio de
la frecuencia. El transformador (230) de frecuencia presenta a la
salida bloques de datos de coeficientes de frecuencia para el
ponderador (242), y presenta a la salida información colateral tal
como tamaños de bloque para el MUX (290). El transformador (230) de
frecuencia presenta a la salida los coeficientes de frecuencia y la
información colateral para el modelador (240) de percepción.
El modelador (240) de percepción modela
propiedades del sistema auditivo humano para mejorar la calidad
percibida de la señal de audio reconstruida para una cierta
velocidad de bit. En general, el modelador (240) de percepción
procesa los datos de audio de acuerdo con un modelo auditivo, y a
continuación proporciona información al ponderador (242) que puede
ser utilizada para generar factores de ponderación para los datos de
audio. El modelador (240) de percepción utiliza uno cualquiera de
diversos modelos auditivos y pasa información patrón de excitación
u otra información al ponderador (242).
Como ponderador de banda de cuantificación, el
ponderador (242) genera factores de ponderación para una matriz de
cuantificación basada en la información recibida desde el modelador
(240) de percepción, y aplica los factores de ponderación a los
datos recibidos desde el transformador (230) de frecuencia. El
ponderador (242) presenta a la salida información colateral tal
como el conjunto de factores de ponderación para el MUX (290). Como
ponderador de canal, el ponderador (242) genera a continuación
factores de ponderación específicos del canal, en base a la
información recibida desde el modelador (240) de percepción, y
también en base a la calidad de la señal localmente reconstruida.
Estas ponderaciones escalares permiten que los canales reconstruidos
tengan una calidad aproximadamente uniforme. El ponderador (242)
presenta a la salida bloques ponderados de datos de coeficiente
para el transformador (250) multi-canal, y presenta
a la salida información colateral tal como el conjunto de factores
de ponderación de canal para el MUX (290). Alternativamente, el
codificador (200) utiliza otra forma de ponderación o de
ponderación no continua.
Para datos de audio multi-canal,
los múltiples canales de datos de coeficientes de frecuencia
conformados con ruido producidos por el ponderador (242), están
muchas veces correlacionados. Para aprovechar esta correlación, el
transformador (250) multi-canal puede aplicar una
transformación multi-canal a los datos de audio. El
transformador (250) multi-canal produce información
colateral para el MUX (290) que indican, por ejemplo, las
transformaciones multi-canal utilizadas y las
partes de los cuadros transformadas multi-canal.
El cuantificador (260) cuantifica la salida del
transformador (250) multi-canal, produciendo datos
de coeficiente cuantificados para el codificador (270) de entropía
e información colateral que incluye tamaños de escalón de
cuantificación para el MUX (290). La cuantificación introduce
pérdidas de información irreversibles, pero también permite que el
codificador (200) regule la calidad y la velocidad de bit de la
corriente de bits (295) de salida junto con el controlador (280).
En algunas realizaciones, el cuantificador (260) es un cuantificador
escalar, uniforme, adaptativo. En realizaciones alternativas, el
cuantificador es un cuantificador no uniforme, un cuantificador
vectorial, y/o un cuantificador no adaptativo, o utiliza una forma
diferente de cuantificación escalar, uniforme, adaptativa.
El codificador (270) de entropía comprime de
manera sin pérdidas, datos de coeficiente cuantificados recibidos
desde el cuantificador (260). En algunas realizaciones, el
codificador (270) de entropía utiliza codificación entrópica
adaptativa según se describe en la sección que sigue. El codificador
(270) de entropía puede calcular el número de bits gastados en la
codificación de la información de audio y pasar esta información al
controlador (280) de velocidad/calidad.
El controlador (280) trabaja con el
cuantificador (260) para regular la velocidad de bit y/o la calidad
de la salida del codificador (200). El controlador (280) recibe
información desde otros módulos del codificador (200) y procesa la
información recibida para determinar condiciones actuales dadas de
los factores de cuantificación deseados. El controlador (280)
presenta a la salida los factores de cuantificación para el
cuantificador (260) con el objetivo de satisfacer exigencias de
calidad y/o de velocidad de bit.
El codificador (272) mezclado sin pérdidas/puro
sin pérdidas, y el codificador (274) de entropía asociado,
comprimen datos de audio para el modo de codificación sin pérdidas
mezclado/puro. El codificador (200) utiliza el modo de codificación
sin pérdidas mezclado/puro para una secuencia completa, o conmuta
entre modos de codificación sobre una base de
cuadro-a-cuadro o sobre otra
base.
El MUX (290) multiplexa la información colateral
recibida desde los otros módulos del codificador (200) de audio
junto con los datos codificados de entropía recibidos desde el
codificador (270) de entropía. El MUX (290) presenta a la salida la
información en un formato WMA o en otro formato que sea reconocido
por un descodificador de audio. El MUX (290) incluye una memoria
intermedia virtual que almacena la corriente de bits (295) que va a
ser presentada a la salida por el codificador (200). La cantidad de
llenado actual de la memoria intermedia, la velocidad de cambio de
la cantidad de llenado de la memoria intermedia, y otras
características de la memoria intermedia, pueden ser utilizadas por
el controlador (280) para regular la calidad y/o la velocidad de bit
para las diferentes aplicaciones (por ejemplo, a calidad
constante/velocidad de bit variable, o a baja velocidad de bit
constante/calidad variable).
Con referencia a la Figura 3, el descodificador
(300) de audio generalizado incluye un desmultiplexor (310) de
corriente de bit ["DEMUX"], uno o más descodificadores (320) de
entropía, un descodificador (322) sin pérdidas mezclado/puro, un
descodificador (330) de configuración, un transformador (340)
multi-canal inverso, un cuantificador/ponderador
(340) inverso, un transformador (360) de frecuencia inverso, un
solapador/sumador (370), y un post-procesador (380)
multi-canal. El descodificador (300) es a veces más
simple que el codificador (300) debido a que el descodificador
(300) no incluye módulos para control de velocidad/calidad o para
modelación de percepción. A continuación se realiza la descripción
de algunos de los módulos del descodificador (300). Para una
descripción acerca de otros módulos del descodificador (300) de
alguna de las realizaciones, véanse las aplicaciones referenciadas
en la sección Datos de Aplicación Relacionada.
El descodificador (300) recibe una corriente de
bits (305) de información de audio comprimida en un formato WMA o
en otro formato. La corriente de bits (305) incluye datos
codificados de entropía, así como también información colateral a
partir de la cual el descodificador (300) reconstruye las muestras
(395) de audio.
El DEMUX (310) analiza la información de la
corriente de bits (305) y envía información a los módulos del
descodificador (300). El DEMUX (310) incluye una o más memorias
intermedias para compensar las variaciones a corto plazo de la
velocidad de bits debidas a las fluctuaciones en la complejidad del
audio, a las fluctuaciones de la red, y/o a otros factores.
El, o los, descodificador(es) (320) de
entropía descomprime(n) sin pérdidas códigos de entropía
recibidos desde el DEMUX (310). Por motivos de simplicidad, un
módulo descodificador de entropía ha sido representado en la Figura
3, aunque se pueden utilizar diferentes descodificadores de entropía
para los modos de codificación con pérdidas y sin pérdidas, o
incluso dentro de los modos. También, por motivos de simplicidad, la
Figura 3 no muestra la lógica de selección de modo. El
descodificador (320) de entropía aplica típicamente la inversa de
la técnica de codificación de entropía utilizada en el codificador
(200). Cuando se descodifican datos comprimidos en modo de
codificación con pérdidas, el descodificador (320) de entropía
produce datos de coeficiente de frecuencia cuantificados.
El descodificador (322) sin pérdidas
mezclado/puro y el(los) descodificador(es) (320) de
entropía asociado(s), descomprimen datos de audio
codificados sin pérdidas para el modo de codificación sin pérdidas
mezclado/puro. El descodificador (300) utiliza un modo de
descodificación particular para una secuencia completa, o conmuta
modos de descodificación sobre una base de
cuadro-a-cuadro o sobre otra
base.
El transformador (340)
multi-canal inverso recibe los datos de coeficiente
de frecuencia cuantificados descodificados de entropía desde
el(los) descodificador(es) (320) de entropía, así como
también información colateral desde el DEMUX (310) que indica, por
ejemplo, la transformación multi-canal utilizada y
las partes o cuadros transformados.
El cuantificador/ponderador (350) inverso recibe
factores de cuantificación, así como también matrices de
cuantificación desde el DEMUX (310), y recibe datos de coeficiente
de frecuencia cuantificados desde el transformador (340)
multi-canal. El cuantificador/ponderador (350)
inverso descomprime el factor de cuantificación/información de
matriz que se ha recibido según sea necesario, y a continuación
realiza la cuantificación y ponderación inversas.
El transformador (360) de frecuencia inverso
recibe los datos de coeficiente de frecuencia presentados a la
salida por el cuantificador/ponderador (350) inverso, así como
también toda la información colateral procedente del DEMUX (310).
El transformador (360) de frecuencia inverso, aplica la inversa de
la transformación de frecuencia utilizada en el codificador, y
presenta a la salida bloques para el solapador/sumador (370).
El solapador/sumador (370) recibe información
descodificada desde el transformador (360) de frecuencia inverso
y/o desde el descodificador (322) sin pérdidas mezclado/puro. El
solapador/sumador (370) solapa y suma datos de audio según sea
necesario, e intercala cuadros u otras secuencias de datos de audio
codificados en diferentes modos.
Los métodos de codificación de nivel de
secuencia son frecuentemente más eficaces que la codificación
directa de niveles cuando una secuencia de entrada contiene muchas
ocurrencias de un valor simple (por ejemplo, 0). Sin embargo,
puesto que los coeficientes de transformación cuantificados
no-cero son comunes en secuencias de entrada de
datos de audio, especialmente a las frecuencias más bajas, la
codificación de nivel de secuencia no es eficaz a través de la gama
de frecuencias completa. Además, en audio de calidad más alta, los
coeficientes de transformación cuantificados
no-cero resultan más comunes incluso a frecuencias
más altas. (En audio de calidad más alta, los niveles de
cuantificación son típicamente más pequeños). Por lo tanto, en
algunas realizaciones, un codificador tal como el codificador (200)
de la Figura 2, realiza una técnica de codificación
multi-modo que puede hacer uso de codificación de
nivel de secuencia para una porción de la secuencia de entrada de
datos de audio, y codificación directa de niveles para otra porción
de la secuencia. Un descodificador, tal como el descodificador
(300) de la Figura 3, ejecuta una técnica de descodificación
multi-modo correspondiente.
Con referencia a la Figura 4, en una técnica 400
de codificación multi-modo, el codificador realiza
en primer lugar la codificación de niveles de señal en una
corriente de entrada (410) directamente. Por ejemplo, el
codificador realiza codificación de Huffman de dimensión variable,
codificación aritmética basada en contexto, u otra técnica de
codificación entrópica directamente sobre los niveles de señal.
En un punto de conmutación durante la
codificación, el codificador cambia el esquema (420) de
codificación. El codificador puede cambiar el esquema de
codificación en un punto de conmutación predeterminado, o el
codificador puede analizar los datos de entrada para determinar un
punto apropiado para cambiar los esquemas de codificación. Por
ejemplo, el codificador puede analizar una secuencia de entrada para
hallar el mejor punto en el que conmutar a codificación de nivel de
secuencia, enviando el punto de conmutación al descodificador en la
corriente de bits de salida. O, el codificador puede calcular el
punto de conmutación adaptativamente contando ceros consecutivos (o
alternativamente, otro valor predominante) en los datos de entrada,
y conmutar a codificación de nivel de secuencia cuando se ha
contado un número de umbral particular de ceros consecutivos. El
descodificador puede calcular el punto de conmutación de la misma
manera, de modo que el punto de conmutación no necesita ser
incluido en la corriente de bits. O, el codificador y el
descodificador utilizan algún otro criterio para determinar el
punto de conmutación.
Tras el punto de conmutación, el codificador
codifica los niveles de señal restantes utilizando codificación
(430) de nivel de secuencia. Por ejemplo, el codificador realiza
codificación de Huffman, codificación aritmética basada en
contexto, u otra técnica de codificación de entropía sobre
longitudes de secuencia y niveles de señal. El codificador puede
usar la misma técnica (por ejemplo, codificación aritmética basada
en contexto) antes y después del punto de conmutación, o el
codificador puede usar técnicas diferentes.
Además, aunque la Figura 4 y otras varias
Figuras de la aplicación muestran un sólo punto de conmutación, se
pueden utilizar puntos de conmutación adicionales para dividir los
datos de entrada en más de dos porciones. Por ejemplo, se pueden
establecer puntos adicionales de conmutación adaptativa para
umbrales incrementados de ceros consecutivos. A continuación se
pueden aplicar diferentes esquemas de codificación a las diferentes
porciones. O, el codificador puede experimentar con diferentes
puntos de segmentación en la secuencia, ponderando las eficiencias
de codificación para las diferentes configuraciones de segmentación
junto con los costes de señalizar las diferentes configuraciones
para el descodificador.
La Figura 5 muestra una técnica (500) de
codificación multi-modo con cálculo de punto de
conmutación adaptativa de acuerdo con una implementación. El punto
de conmutación adaptativa depende de un conteo de coeficientes de
valor cero consecutivos. Los datos de entrada son niveles de señal
para coeficientes de transformación cuantificados, que se
incrementan a partir del coeficiente de frecuencia más baja hasta el
coeficiente de frecuencia más alta. En la práctica, la posición del
punto de conmutación depende de la señal que se está comprimiendo y
de la velocidad de bits/calidad de la codificación.
Alternativamente, los datos de entrada son otra forma y/u otra
organización de datos de audio.
Para empezar, el codificador inicializa varias
variables. Específicamente, el codificador establece una variable
de conteo de secuencia en 0 (510) y establece una variable de estado
de configuración en "directa" (512).
El codificador recibe el siguiente coeficiente
QC como entrada (520). El codificador comprueba (530) a continuación
si el coeficiente QC es cero. Si el coeficiente QC no es cero, el
codificador resetea el conteo de secuencia (538). En otro caso (es
decir, si el coeficiente QC es cero), el codificador incrementa la
variable de conteo de secuencia (532), y comprueba si el conteo
actual de secuencia supera el umbral de conteo de secuencia (534).
El umbral de conteo de secuencia puede ser estático o puede depender
de un factor tal como el tamaño de un bloque de coeficientes (por
ejemplo, un umbral de conteo de secuencia de 4 para una secuencia de
256 coeficientes, 8 para una secuencia de 512 coeficientes, etc.),
o puede ser adaptativo de alguna otra manera. Si el conteo de
secuencia excede el umbral, el codificador cambia el estado de
codificación a codificación de nivel de secuencia ["RLE"]
(536).
El codificador codifica a continuación el
coeficiente QC si es apropiado (540). (En algunos casos, se
codifican conjuntamente grupos de coeficientes utilizando una
técnica tal como codificación vectorial de Huffman. En esos casos,
el codificador puede retrasar la codificación del coeficiente
QC).
El codificador comprueba a continuación (550) si
el codificador debe conmutar los modos de codificación. En
particular, el codificador comprueba el estado de codificación. Si
el estado de codificación ya no es directo (por ejemplo, si el
codificador ha cambiado el estado de codificación a RLE como
resultado de haber alcanzado un número de umbral de coeficientes
cero), el codificador empieza la codificación de nivel de secuencia
de los coeficientes (560). (De nuevo, en casos en los que se
codifican conjuntamente grupos de coeficientes, el codificador
puede retrasar la decisión de conmutación hasta alcanzar un punto de
interrupción conveniente para un grupo de coeficientes).
Si el codificador no conmuta los modos de
codificación, el codificador comprueba si ha acabado la codificación
de los coeficientes (570). Si es así, el codificador sale. En otro
caso, el codificador introduce el siguiente coeficiente (520) para
que continúe el proceso de codificación.
Con referencia a la Figura 6, en una técnica
(600) de descodificación multi-modo, el
descodificador descodifica directamente niveles (610) de señal
codificados. Por ejemplo, el descodificador ejecuta descodificación
de Huffman de dimensión variable, descodificación aritmética basada
en contexto, u otra técnica de descodificación de entropía sobre
niveles de señal codificados directamente.
En un punto de conmutación durante la
descodificación, el descodificador cambia el esquema de
descodificación (620). Si el punto de conmutación está
predeterminado, el descodificador puede recibir, en forma de
banderola o de otro mecanismo de notificación, datos que indican
explícitamente al descodificador cuándo cambiar los esquemas de
descodificación. O, el descodificador puede calcular adaptativamente
cuándo cambiar los esquemas de descodificación en base a los datos
de entrada que reciba. Si el descodificador calcula el punto de
conmutación, el descodificador utiliza la misma técnica de cálculo
utilizada por el codificador para asegurar que el esquema de
descodificación cambia en un punto correcto. Por ejemplo, el
descodificador cuenta ceros consecutivos (o alternativamente, otro
valor predominante) para determinar el punto de conmutación
adaptativamente. En una implementación, el descodificador utiliza
una técnica correspondiente a la técnica de codificación mostrada
en la Figura 5. O, el descodificador utiliza algún otro criterio
para determinar el punto de conmutación.
Después del punto de conmutación, el
descodificador descodifica los restantes niveles de señal
codificados en nivel de secuencia (630). Por ejemplo, el
decodificador realiza descodificación de Huffman, descodificación
aritmética basada en contexto, u otra técnica de descodificación de
entropía sobre longitudes de secuencia y niveles de señal
codificados. El descodificador puede usar la misma técnica (por
ejemplo, descodificación aritmética basada en contexto), antes y
después del punto de conmutación, o el descodificador puede usar
técnicas diferentes.
Mientras que símbolos tales como niveles de
señal directa, pueden ser codificados utilizando codificación
escalar de Huffman, esa alternativa está limitada cuando el número
óptimo de bits para codificar un símbolo es un número fraccionario.
La codificación escalar de Huffman está también limitada por la
incapacidad de los códigos escalares de Huffman para responder de
la correlación estadística entre símbolos. La codificación
vectorial de Huffman produce una mejor reducción de velocidad de bit
que la codificación escalar de Huffman (por ejemplo, permitiendo
que el codificador aproveche probabilidades fraccionalmente en
códigos binarios de Huffman). Y, en general, los vectores de
dimensión más alta producen mejor reducción de velocidad de bit que
los vectores de dimensión más pequeña. Sin embargo, si se asigna un
código a cada combinación de símbolo posible, el tamaño del código
de cifrado y descifrado se incrementa exponencialmente según se
incrementa la dimensión del vector. Por ejemplo, en un sistema de
32 bits, el número de combinaciones posibles para un vector de 4
dimensiones es de (2^{32})^{4}. El tiempo de búsqueda
para emparejar un vector y hallar un código de Huffman, también se
incrementa drásticamente según se incrementa el tamaño del código de
cifrado y descifrado.
En algunas realizaciones, para reducir el tamaño
del código de cifrado y descifrado, un codificador tal como el
codificador (200) de la Figura 2, utiliza una técnica de
codificación vectorial de Huffman de dimensión variable. En vez de
asignar un código de cifrado y descifrado a cada combinación
n-dimensional posible, se asignan códigos a un
número limitado de vectores n-dimensionales más
probables. Si no se asigna un código a un vector
n-dimensional particular, el vector
n-dimensional es en ese caso codificado en forma de
vectores de dimensión más pequeña (por ejemplo, dos vectores de
dimensión n/2), como escalares con códigos de Huffman, o como
escalares utilizando la técnica de sin-tabla para
representar valores discretos. Un descodificador tal como el
descodificador (300) de la Figura 3, reconstruye un vector hallando
el(los) código(s) para el vector y hallando los
valores
asociados.
asociados.
Por ejemplo, en el caso de vectores de 4
dimensiones con 256 valores posibles por símbolo, el codificador
codifica los 500 vectores de 4 dimensiones más probables con códigos
de Huffman, y utiliza un código de escape para indicar otros
vectores. El codificador codifica los 500 vectores de 2 dimensiones
más probables con códigos de Huffman y utiliza un código de escape
para indicar otros vectores, que son divididos y codificados con
códigos escalares de Huffman. De ese modo, el codificador utiliza
501 + 501 + 256 códigos.
En términos de determinar qué vectores o
escalares se representan con códigos de Huffman en una tabla, y en
términos de asignar los códigos de Huffman propios para la tabla, la
construcción de código de cifrado y descifrado puede ser estática,
adaptativa para los datos previamente codificados, o adaptativa para
los datos que van a ser codificados.
Con referencia a la Figura 7, un codificador
utiliza una técnica (700) de codificación vectorial de Huffman de
dimensión variable ["VDVH"]. Por ejemplo, el codificador
utiliza la técnica (700) para codificar directamente niveles de
señal para coeficientes de frecuencia de datos de audio.
Alternativamente, el codificador utiliza la técnica (700) para
codificar otra forma de datos de audio. Por motivos de simplicidad,
la Figura 7 no muestra la construcción del código de cifrado y
descifrado. La construcción del código de cifrado y descifrado puede
ser estática, adaptativa para los datos previamente codificados, o
adaptativa para los datos que van a ser codificados.
El codificador obtiene (710) el siguiente vector
de n símbolos. Por ejemplo, el codificador obtiene los siguientes 4
símbolos en serie.
El codificador comprueba (720) si el código de
cifrado y descifrado incluye un código para el vector. Si es así,
el codificador utiliza (730) un código de Huffman simple para
codificar el vector. Por ejemplo, para determinar cómo codificar un
vector de n dimensiones, el codificador comprueba una tabla de
códigos de vector n-dimensional para un código
asociado al vector. Puesto que los vectores de mayor dimensión
producen normalmente ahorros de velocidad de bits, el codificador
utiliza códigos de Huffman para los vectores
n-dimensionales más probables. Pero, para limitar
el tamaño de la tabla, solamente algunos de los vectores
n-dimensionales tienen códigos asociados.
Si el código de cifrado y descifrado no incluye
un código para el vector, el codificador divide (740) el vector en
vectores y/o escalares más pequeños, y codifica los vectores y/o
escalares más pequeños. Por ejemplo, el codificador divide un
vector de n símbolos en x vectores de n/x símbolos. Para cada vector
de n/x símbolos, el codificador repite recursivamente la técnica de
codificación, saliendo cuando el vector de n/x símbolos o sus
vectores/escalares componentes han sido codificados con códigos de
Huffman o (para los escalares) utilizando una técnica de
sin-tabla para representar valores discretos.
El codificador comprueba (750) a continuación si
existen algunos vectores adicionales para codificar. Si no es así,
el codificador sale. En otro caso, el codificador obtiene (710) el
siguiente vector de n símbolos.
La Figura 8 muestra una técnica (800) detallada
para codificar vectores utilizando codificación VDVH en una
implementación. En la técnica (800), el codificador suma los valores
enteros de los símbolos en un vector de símbolos para determinar si
debe codificar el vector utilizando un código simple de Huffman, o
dividir el vector en vectores/escalares más pequeños. Esto limita
efectivamente el tamaño de código de cifrado y descifrado, y
agiliza la búsqueda de códigos.
Una tabla de código de cifrado y descifrado para
vectores n-dimensionales
["n-dim"] incluye un código de escape. Los
L_{1} códigos son para cada vector para el que la suma de los
componentes del vector (que son números enteros) está por debajo de
un umbral T_{1} particular. Por ejemplo, supóngase que n es 4 y el
umbral T_{1} para los vectores 4-dim es 6. La
tabla de código de cifrado y descifrado para los vectores
4-dim incluye el código de escape y 126 códigos,
uno para cada vector posible cuyos componentes (por ejemplo, los
valores absolutos de los componentes) sumen menos de 6 - (0, 0, 0,
0), (0, 0, 0, 1), etc. Limitar el tamaño de la tabla en base a la
suma de componentes de los vectores, resulta efectivo debido, en
general, a que los vectores más probables son aquellos cuyas sumas
de componentes son más pequeñas.
Si la tabla de código de cifrado y descifrado
para los vectores n-dim no tiene un código de
Huffman para un vector n-dim particular, el
codificador añade un código de escape a la corriente de bits de
salida y codifica el vector n-dim como vectores o
escalares de dimensión más pequeña, buscando esos vectores o
escalares de dimensión más pequeña en otras tablas de código de
cifrado y descifrado. Por ejemplo, la dimensión más pequeña es n/2
a menos que n/2 sea 1, en cuyo caso el vector n-dim
se divide en escalares. Alternativamente, el vector
n-dim se divide de alguna otra manera.
La tabla de código de cifrado y descifrado para
vectores de dimensión más pequeña incluye códigos de Huffman para
L_{2} vectores de dimensión más pequeña, así como también un
código de escape. Los L_{2} códigos son para cada vector para el
que la suma de componentes de vector esté por debajo de un umbral
T_{2} particular para la tabla de dimensión más pequeña. Por
ejemplo, supóngase que la dimensión más pequeña es 2 y que el
umbral T_{2} para vectores 2-dim es 16. La tabla
de código de cifrado y descifrado para vectores
2-dim incluye el código de escape y 136 códigos,
uno para cada vector posible cuyos componentes (por ejemplo, los
valores absolutos de los componentes) sumen menos de 16 - (0, 0),
(0, 1), etc.
Si la tabla de código de cifrado y descifrado
para vectores de dimensión más pequeña no tiene un código de
Huffman para un vector particular de dimensión más pequeña, el
codificador añade un código de escape a la corriente de bits de
salida y codifica el vector como vectores o escales incluso más
pequeños, utilizando otras tablas de código de cifrado y
descifrado. Este proceso se repite decreciendo a nivel escalar. Por
ejemplo, la división es mediante una potencia de 2, descendiendo al
nivel escalar. Alternativamente, el vector se divide de alguna otra
manera.
A nivel escalar, la tabla de código de cifrado y
descifrado incluye códigos de Huffman para L_{3} escalares así
como también un código de escape. Los L_{3} códigos son para cada
escalar que esté por debajo de un umbral T_{3} (lo que supone que
los valores pequeños son los más probables). Por ejemplo, supóngase
que el umbral T_{3} para escalares es 100. La tabla de código de
cifrado y descifrado para escalares incluye 100 códigos y un código
de escape. Si un escalar no tiene un código asociado en la tabla de
código escalar, el escalar es codificado con el código de escape, y
con un valor (por ejemplo, literal) de acuerdo con una técnica de
sin-tabla. Utilizando todos los ejemplos numéricos
dados en esta sección, las tablas tendrían que incluir un total de
126 + 1 + 136 + 1 + 100 + 1 = 365 códigos.
Los tamaños dimensionales para las tablas, los
factores de división de vector, y los umbrales para las sumas de
los componentes de vector, dependen de la implementación. Otras
implementaciones utilizan diferentes tamaños de vector, diferentes
factores de división, y/o diferentes umbrales. Alternativamente, un
codificador utiliza criterios distintos de las sumas de componentes
de vector para conmutar tamaños de vector/tablas de código de
cifrado y descifrado, en codificación VDVH.
Con referencia a la Figura 8, el codificador
obtiene en primer lugar un vector (810) n-dim. El
vector n-dim comprende n símbolos, teniendo cada
símbolo, por ejemplo, un valor que representa el nivel cuantificado
para un coeficiente de frecuencia de datos de audio.
El codificador suma los componentes de vector
(812) y compara la suma con un umbral (820) para vectores
n-dim. Si la suma es menor, o igual, que el umbral,
el codificador codifica el vector n-dim con un
código de Huffman procedente de una tabla (822) de código, y
continúa hasta que la codificación está completa (824). Si la suma
es mayor, o igual, que el umbral, el codificador envía un código de
escape (826) y divide el vector n-dim en dos
vectores más pequeños con dimensiones de n/2 (830).
El codificador obtiene el siguiente vector
n/2-dim (840) y suma los componentes del vector
n/2-dim (842). El codificador comprueba la suma
respecto a un umbral asociado a vectores n/2-dim
(850). Si la suma es menor o igual que el umbral, el codificador
codifica el vector n/2-dim con un código de Huffman
procedente de una tabla de código (852) para vectores
n/2-dim, y obtiene el siguiente vector
n/2-dim (840) si el codificador no ha acabado de
codificar los vectores n/2-dim (854). Si la suma es
mayor que el umbral para vectores n/2-dim, el
codificador envía otro código (856) de escape.
El codificador sigue en general este patrón en
el procesamiento de los vectores, tanto para codificar cada vector
como para dividir el vector en vectores de dimensión más pequeña. En
casos en los que el codificador divide un vector en dos componentes
(860) escalares (de 1 dimensión), el codificador obtiene el
siguiente escalar (870) y compara el valor del escalar con un
umbral asociado a valores escalares (880). Si el valor escalar es
menor, o igual, que el umbral (880), el codificador codifica el
escalar utilizando un código de Huffman procedente de una tabla de
código (882) para escalares. Si el valor escalar es mayor que el
umbral, el codificador codifica el escalar utilizando una técnica
de sin-tabla (884). El codificador obtiene a
continuación el siguiente escalar (870) si no ha acabado de
procesar los escalares (886).
Alternativamente, el codificador utiliza tablas
con diferentes tamaños dimensionales, divide vectores de alguna
manera distinta a una potencia de 2, y/o utiliza criterios distintos
a la suma de componentes de vector para conmutar tamaños de
vector/tablas de código de cifrado y descifrado, en codificación
VDVH.
La Figura 9 muestra una técnica (900) para
codificación VDVH directa de coeficientes de niveles de señal,
donde el codificador determina adaptativamente un punto de
conmutación para cambiar a codificación de longitudes de secuencia
y de niveles de señal, de acuerdo con una implementación. El punto
de conmutación adaptativa depende de un conteo de coeficientes
consecutivos de valor cero. Los datos de entrada son niveles de
señal para coeficientes de transformación cuantificados, que
progresan desde el coeficiente de frecuencia más baja hasta el
coeficiente de frecuencia más alta. Alternativamente, los datos de
entrada son de otra forma y/u organización que los datos de
audio.
audio.
Para empezar, el codificador inicializa varias
variables. Específicamente, el codificador establece una variable
de conteo de secuencia en 0 (910), establece una variable de vector
actual en vacío (912), y establece una variable de estado de
codificación en vector Huffman directo de dimensión variable
["DVDVH"] (914).
El codificador recibe el siguiente coeficiente
QC como entrada (920). El codificador comprueba a continuación
(930) si el coeficiente es cero. Si el coeficiente QC no es cero, el
codificador resetea al conteo de secuencia (938) y suma el
coeficiente QC del vector actual (940). En otro caso (es decir, si
el coeficiente QC es cero), el codificador incrementa la variable
de conteo de secuencia (932), y comprueba si el conteo de secuencia
actual supera el umbral de conteo de secuencia (934). El umbral de
conteo de secuencia puede ser estático o puede depender de un
factor tal como el tamaño de un bloque de coeficientes (por ejemplo,
cuatro ceros en una secuencia de entrada de 256 coeficientes), o
puede ser adaptativo de alguna otra forma. Por ejemplo, el umbral
puede ser incrementado o rebajado, con o sin relación con el número
de coeficientes de una secuencia de entrada. Si el conteo de
secuencia excede el umbral, el codificador cambia el estado de
codificación a codificación de nivel de secuencia ["RLE"]
(936), y el coeficiente QC es añadido como componente al vector
actual (940).
Añadir el coeficiente QC al vector actual
incrementa la dimensión del vector. El codificador determina (950)
si el vector actual está listo para codificar, comparando el número
de componentes del vector actual con la máxima dimensión para el
vector actual. Si es así, el codificador codifica el vector actual
utilizando codificación DVDVH (960). Si el vector actual es más
pequeño que la dimensión máxima, pero el coeficiente QC es el último
de una secuencia, el codificador puede rellenar el vector actual y
codificarlo utilizando codificación DVDVH (960). La dimensión
máxima depende de la implementación. En una implementación, es 8.
Sin embargo, la dimensión máxima puede ser incrementada o
disminuida dependiendo, por ejemplo, de la cantidad de recursos
disponibles para crear, almacenar o transmitir un código de cifrado
y descifrado.
Tras la codificación del vector, el codificador
comprueba el estado de codificación (970). Si el estado de
codificación ya no es DVDVH (por ejemplo, si el codificador ha
cambiado el estado de codificación a RLE como resultado de exceder
el número de umbral de coeficientes cero), el codificador empieza la
codificación de los coeficientes como longitudes y niveles de
secuencia (980). La codificación de nivel de secuencia puede ser
llevada a cabo de varias formas, incluyendo, por ejemplo,
codificación de Huffman, codificación vectorial de Huffman, o
codificación aritmética basada en contexto. En algunas
realizaciones, la codificación de nivel de secuencia se lleva a
cabo utilizando codificación de Huffman con dos tablas de códigos de
Huffman, donde una tabla se utiliza para codificar datos en los que
las secuencias más cortas son las más probables, y una tabla se
utiliza para codificar datos en los que las secuencias más largas
son las más probables. El codificador trata cada tabla y elige
códigos de una de las tablas, indicando con un bit de señal cuál de
las tablas es la que ha utilizado el codificador.
Si el estado de codificación no ha cambiado o el
vector actual no está listo para codificar, el codificador
determina (990) si existen más coeficientes que deban ser
codificados. Si es así, el codificador introduce el siguiente
coeficiente (920) y continúa el proceso de codificación.
La Figura 10 muestra una técnica (1000) de
descodificación VDVH correspondiente con la técnica (700) de
codificación VDVH mostrada en la Figura 7. Por ejemplo, un
descodificador utiliza la técnica (1000) para descodificar niveles
de señal codificados directamente para coeficientes de frecuencia de
datos de audio. Alternativamente, el descodificador utiliza la
técnica para descodificar otra forma de datos de audio.
El descodificador obtiene (1010) el siguiente
código de Huffman para una tabla de codificación de Huffman de
vector n-dimensional. Por ejemplo, el descodificador
obtiene el siguiente código de Huffman para 4 símbolos en
secuencia.
El descodificador comprueba (1020) si el código
de Huffman es el código de escape para la tabla de codificación
vectorial de Huffman n-dimensional. Si no lo es, el
descodificador obtiene (1030) los n símbolos representados por el
código de Huffman. Por ejemplo, el descodificador obtiene los 4
símbolos asociados al código de Huffman en un código de cifrado y
descifrado de Huffman de vector de 4 dimensiones.
Si el código es el código de escape, el código
de cifrado y descifrado n-dimensional no incluye un
código para el vector, y el descodificador obtiene (1040) códigos
de Huffman para vectores y/o escalares más pequeños. Por ejemplo,
el descodificador obtiene códigos para x vectores de n/x símbolos.
Para cada vector de n/x símbolos, el descodificador repite
recursivamente la técnica de descodificación, saliendo cuando el
vector o sus vectores/escalares componentes están codificados.
El descodificador comprueba a continuación
(1050) si existen códigos adicionales para la tabla de codificación
vectorial de Huffman n-dimensional que deban ser
descodificados. Si no los hay, el descodificador sale. En otro
caso, el descodificador obtiene (1010) el siguiente de tales códigos
de Huffman.
La Figura 11 muestra una técnica (1100)
detallada para descodificar vectores codificados utilizando
codificación VDVH en una implementación. La técnica de
descodificación (1100) corresponde a la técnica (800) de
codificación mostrada en la Figura 8.
Con referencia a la Figura 11, el descodificador
obtiene el siguiente código para una tabla de código de Huffman de
vector n-dim (1110). El descodificador comprueba si
el código es el código de escape para la tabla de código de Huffman
de vector n-dim (1120). Si no lo es, el
descodificador obtiene los n símbolos representados por el código
en la tabla de vector n-dim (1122). El
descodificador continúa hasta que el descodificador ha acabado de
procesar los datos codificados (1124).
Si el código es el código de escape para la
tabla de código de Huffman de vector n-dim, el
descodificador descodifica el vector n-dim como dos
vectores n/2-dim utilizando una tabla de código de
Huffman de vector n/2-dim. Específicamente, el
descodificador obtiene el siguiente código para la tabla de código
de Huffman de vector n/2-dim (1130). El
descodificador comprueba si el código es el código de escape para la
tabla de código de Huffman de vector n/2-dim
(1140). Si no lo es, el descodificador obtiene los n/2 símbolos
representados por el código en la tabla de código de Huffman de
vector n/2-dim (1142). El descodificador continúa
procesando los códigos para la tabla de código de Huffman de vector
n/2-dim hasta que el procesamiento de tales códigos
se ha completado (1144).
Si el código es el código de escape para la
tabla de código de Huffman de vector n/2-dim, el
descodificador descodifica el vector n/2-dim como
dos vectores n/4-dim, que pueden ser escalares,
etc.
El descodificador sigue generalmente este patrón
de descodificación de vectores de mayor dimensión como dos vectores
de dimensiones más pequeñas cuando se detectan códigos de escape,
hasta que los vectores que van ser descodificados son escalares
(vectores 1-dim). En ese punto, el descodificador
obtiene el siguiente código para una tabla escalar de Huffman
(1150). El descodificador comprueba si el código es el código de
escape para la tabla de código escalar de Huffman (1160). Si no lo
es, el descodificador obtiene el escalar representado por el código
en la tabla de código escalar de Huffman (1162). El descodificador
sigue procesando los códigos para los escalares hasta que el
procesamiento de tales códigos se ha completado (1164). Si el código
es el código de escape para la tabla de código escalar de Huffman,
el escalar se codifica utilizando una técnica de
sin-tabla, y el descodificador obtiene el valor
(1170).
Alternativamente, el descodificador utiliza
tablas con diferentes tamaños dimensionales y/o utiliza tablas que
dividen los vectores de alguna forma distinta a la de potencia de 2
en descodificación VDVH.
La Figura 12 muestra una técnica (1200) para
descodificar vectores que han sido codificados utilizando
codificación VDVH de acuerdo con una implementación, en la que el
descodificador determina adaptativamente un punto de conmutación
para cambiar a descodificación de longitudes de secuencia y de
niveles de señal. El punto de conmutación adaptativa depende de un
conteo de coeficientes de valor cero consecutivos en los datos, que
son niveles de señal para coeficientes de transformación
cuantificados, que progresan desde el coeficiente de frecuencia más
baja hasta el coeficiente de frecuencia más alta. Alternativamente,
los datos son otra forma y/u organización de datos de audio.
Para empezar, el descodificador inicializa
varias variables. Específicamente, el descodificador establece un
conteo de secuencia en 0 (1210) y establece un estado de
descodificación en DVDVH (1212).
El descodificador descodifica el siguiente
vector buscando el código para ese vector en una tabla (1220) de
codificación de Huffman. Por ejemplo, el descodificador lleva a cabo
la técnica (1100) de descodificación mostrada en la Figura 11. El
descodificador actualiza a continuación el conteo de secuencia en
base al vector descodificado (1230) (específicamente, utilizando el
número de valores cero en el vector descodificado para resetear,
incrementar, o ajustar de otro modo el conteo de secuencia).
El descodificador comprueba si el conteo de
secuencia excede un umbral (1240). El umbral de conteo de secuencia
puede ser estático o puede depender de un factor tal como el tamaño
de un bloque de coeficientes (por ejemplo, cuatro ceros en una
secuencia de entrada de 256 coeficientes), o puede ser adaptativo de
alguna otra manera. Si el conteo de secuencia excede el umbral, el
descodificador empieza a descodificar los coeficientes codificados
utilizando descodificación de nivel de secuencia (1250). La
descodificación de nivel de secuencia puede ser llevada a cabo de
varias formas, incluyendo, por ejemplo, descodificación de Huffman,
descodificación vectorial de Huffman, o descodificación aritmética
basada en contexto.
En algunas realizaciones, la descodificación de
nivel de secuencia se lleva a cabo utilizando descodificación de
Huffman con dos tablas potenciales de códigos de Huffman, donde una
tabla se utiliza para descodificar datos en los que son más
probables secuencias más cortas, y una tabla se utiliza para
descodificar datos en los que son más probables secuencias más
largas. Cuando el descodificador recibe un código, un bit de señal
presente en el código indica qué tabla ha usado el codificador, y el
descodificador busca el código en la tabla apropiada.
Si el conteo de secuencia no excede del umbral,
el descodificador sigue procesando vectores hasta que la
descodificación ha terminado (1260).
En algunas realizaciones, un codificador tal
como el codificador (200) de la Figura 2 utiliza codificación
aritmética basada en contexto ["CBA"] para codificar secuencias
de datos de audio. En codificación CBA, se asocian diferentes
distribuciones de probabilidad respecto a los símbolos de entrada,
con diferentes contextos. La distribución de probabilidad utilizada
para codificar la secuencia de entrada cambia cuando cambia el
contexto. El contexto puede ser calculado midiendo los diferentes
factores que se espera que afecten a la probabilidad de que
aparezca un símbolo de entrada particular en una secuencia de
entrada. Un descodificador tal como el descodificador (300) de la
Figura 3, realiza la correspondiente descodificación aritmética.
Cuando se codifican coeficientes directamente
(es decir, como niveles directos), el codificador utiliza factores
que incluyen los valores de los coeficientes previos de la secuencia
para calcular el contexto. Cuando se codifican coeficientes
utilizando codificación de nivel de secuencia, el codificador
utiliza factores que incluyen las longitudes de la secuencia actual
y de las secuencias previas, además de los valores de los
coeficientes previos, para calcular el contexto. El codificador
utiliza una distribución de probabilidad asociada al contexto
calculado para determinar el código aritmético apropiado para los
datos. Así, utilizando los diversos factores en el cálculo de los
contextos, el codificador determina los contextos adaptativamente
con respecto a los datos y con respecto al modo (es decir, directo,
nivel de secuencia) de representación de los datos.
En realizaciones alternativas, el codificador
puede utilizar factores adicionales, puede omitir algunos factores,
o puede usar los factores mencionados anteriormente en otras
combinaciones.
Las Tablas 2-5 y las Figuras 13A
- 13D, 14A - 14H, y 15A - 15H, muestran contextos y distribuciones
de probabilidad, respectivamente, utilizados en codificación y
descodificación CBA, según un ejemplo de implementación.
Alternativamente, la codificación y la descodificación CBA utilizan
diferentes contextos y/o diferentes distribuciones de
probabilidad.
Aunque la discusión que sigue está enfocada al
cálculo de contexto en el codificador según el ejemplo de
implementación, el descodificador realiza el correspondiente
cálculo de contexto durante la descodificación utilizando los datos
de audio previamente codificados.
Según se ha indicado anteriormente, el
codificador puede codificar coeficientes utilizando codificación CBA
si el codificador está codificando niveles directos solamente o
longitudes de secuencia y niveles directos. En una implementación,
sin embargo, las técnicas para calcular contextos varían dependiendo
de si el codificador está codificando niveles directos solamente o
longitudes de secuencia y niveles directos. Adicionalmente, cuando
se codifican longitudes de secuencia y niveles directos, el
codificador utiliza diferentes contextos dependiendo de si el
codificador está codificando una longitud de secuencia o un nivel
directo.
El codificador utiliza un cuarto sistema de
contexto para calcular contextos durante la codificación aritmética
de niveles directos utilizando contexto casual. El codificador
calcula el contexto para un nivel L[n] actual en base al
valor del nivel (L[n-1]) previo y al nivel
justamente anterior al nivel previo (L[n-2]).
Este cálculo de contexto se basa en la suposición de que: 1) si los
niveles previos son bajos, el nivel actual es probable que sea
bajo, y 2) los dos niveles medios es probable que sean mejores
pronosticadores del nivel actual que otros niveles. La Tabla 2
muestra los contextos asociados a los valores de los dos niveles
previos en el cuarto sistema de contexto. Las Figuras 13A - 13D
muestran la distribución de probabilidad para niveles actuales para
estos contextos.
\vskip1.000000\baselineskip
La distribución de probabilidad de las Figuras
13A - 13D supone que cuando los dos niveles previos son cero o casi
cero, es mas probable que el nivel actual sea cero o casi cero.
El codificador también puede utilizar
codificación CBA cuando realiza codificación de longitud de
secuencia de niveles. Cuando se codifica una longitud de secuencia,
los factores utilizados por el codificador para calcular el
contexto incluyen el porcentaje de ceros en la secuencia de entrada
(ejecución total sobre parte de, o sobre toda, la secuencia) y la
longitud de la secuencia previa de ceros
(R[n-1]). El codificador calcula un índice
de porcentaje de ceros en base al porcentaje de ceros de la
secuencia de entrada, como se muestra a continuación en la Tabla
3:
\vskip1.000000\baselineskip
El codificador utiliza el índice de porcentaje
de ceros junto con la longitud de la secuencia previa para calcular
el contexto para codificar la longitud de secuencia actual, como se
muestra a continuación en la Tabla 4. Las Figuras 14A - 14H
muestran distribuciones de probabilidad para diferentes valores de
longitud de secuencia asociados a estos contextos.
Por ejemplo, en una secuencia de entrada en la
que el 91% de los niveles son cero (lo que da como resultado un
índice de porcentaje de ceros de 0), y en la que la longitud de la
secuencia previa de ceros era 15, el contexto es 14. Las
distribuciones de probabilidad en las Figuras 14A - 14H muestran que
cuando el porcentaje de ceros en una secuencia de entrada es más
alto, son más probables las longitudes de secuencia más largas. Las
distribuciones de probabilidad suponen también que dentro de un
índice de porcentaje de ceros dado, las longitudes de secuencia que
siguen a una longitud de secuencia cero, es más probable que sean
más cortas que las longitudes de secuencia que siguen a una
longitud de secuencia mayor de cero.
Cuando se codifica un nivel en datos de nivel de
secuencia, los factores utilizados por el codificador para calcular
el contexto incluyen la longitud de la secuencia actual
(R[n]), la longitud de la secuencia previa
(R[n-1]), y los valores de los dos niveles
previos (L[n-1]) y
(L[n-2]). Este cálculo de contexto está
basado en la observación de que el nivel actual depende de los dos
niveles previos siempre que la separación (es decir, las longitudes
de secuencia) entre los niveles no sea demasiado grande. También, si
los niveles previos son más bajos, y si las secuencias previas son
más cortas, es probable que el nivel actual sea bajo. Cuando las
secuencias previas son más largas, el nivel previo tiene menos
efecto sobre el nivel actual.
El contexto asociado a los valores de la
longitud de secuencia actual, a la longitud de secuencia previa, y
a los dos niveles previos, se muestra a continuación en la Tabla 5.
Las Figuras 15A - 15H muestran distribuciones de probabilidad para
niveles asociados a estos contextos.
\vskip1.000000\baselineskip
Por ejemplo, en una secuencia de entrada en la
que la longitud de la secuencia actual de ceros es 1, la longitud
de la secuencia de ceros previa es 2, y el nivel previo es 1, el
contexto es 1. Las distribuciones de probabilidad de las Figuras
15A - 15H muestran que cuando los niveles previos son más bajos, y
cuando las longitudes de secuencia actual y previa son más cortas,
es más probable que el nivel actual sea cero o casi cero.
La Figura 16 muestra una técnica (1600) para la
codificación CBA directa de coeficientes de niveles de señal, en la
que el codificador determina adaptativamente un punto de conmutación
para cambiar a codificación de longitudes de secuencia y de niveles
de señal de acuerdo con una implementación. El punto de conmutación
adaptativa depende del conteo de coeficientes consecutivos de valor
cero. Los datos de entrada son niveles de señal para coeficientes
de transformación cuantificados, que progresan desde el coeficiente
de frecuencia más baja hasta el coeficiente de frecuencia más
alta.
Para empezar, el codificador inicializa diversas
variables. Específicamente, el codificador establece una variable
de conteo de secuencia en 0 (1610) y establece una variable de
estado de codificación en aritmética directa basada en contexto
(DCBA) (1612).
El codificador recibe el siguiente coeficiente
QC como entrada (1620). El codificador comprueba a continuación
(1630) si el coeficiente es cero. Si el coeficiente no es cero, el
codificador resetea el conteo de secuencia (1638) y codifica el
coeficiente utilizando codificación DCBA (1640).
En otro caso (es decir, si el coeficiente QC es
cero), el codificador incrementa la variable de conteo de secuencia
(1632), y comprueba si el conteo de secuencia actual excede el
umbral de conteo de secuencia (1634). El umbral de conteo de
secuencia puede ser estático o puede depender de un factor tal como
el tamaño de un bloque de coeficientes (por ejemplo, cuatro ceros
en una secuencia de entrada de 256 coeficientes), o puede ser
adaptativo de alguna otra manera. Por ejemplo, el umbral puede ser
incrementado o decrementado, con o sin relación con el número de
coeficientes de una secuencia de entrada. Si el conteo de secuencia
excede el umbral, el codificador cambia el estado de codificación a
codificación de nivel de secuencia ["RLE"] (1636). El
codificador codifica entonces el coeficiente utilizando codificación
DCBA (1640).
Tras la codificación del coeficiente, el
codificador comprueba el estado de codificación (1650). Si el estado
de codificación ya no es DCBA (por ejemplo, si el codificador ha
cambiado el estado de codificación a RLE como resultado de exceder
un número de umbral de coeficientes cero), el codificador empieza la
codificación de los coeficientes como longitudes y niveles de
secuencia (1660). La codificación de nivel de secuencia puede ser
realizada de varias formas incluyendo, por ejemplo, codificación de
Huffman, codificación vectorial de Huffman, o codificación CBA
(potencialmente con contextos diferentes a la codificación CBA, como
se ha descrito anteriormente). En algunas realizaciones, la
codificación de nivel de secuencia se realiza utilizando
codificación de Huffman con dos tablas de código de Huffman, donde
una tabla se utiliza para codificar datos en los que las secuencias
más cortas son más probables, y una tabla se utiliza para codificar
datos en los que las secuencias más largas son más probables. El
codificador trata cada tabla, y elige códigos de una de las tablas,
con un bit de señal que indica qué tabla ha usado el
codificador.
Si el estado de codificación no ha cambiado, el
codificador determina (1670) si existen más coeficientes que han de
ser codificados. Si es así, el codificador introduce el siguiente
coeficiente (1620) y continúa el proceso de codificación.
La Figura 17 muestra una técnica (1700) para
descodificar coeficientes que han sido codificados con la
utilización de codificación CBA de acuerdo con una implementación,
en la que el descodificador determina adaptativamente un punto de
conmutación para cambiar a descodificación de longitudes de
secuencia y de niveles de señal. El punto de conmutación adaptativa
depende de un conteo de coeficientes consecutivos de valor cero en
los datos, que son niveles de señal para coeficientes de
transformación cuantificados, que progresan desde el coeficiente de
frecuencia más baja hasta el coeficiente de frecuencia más alta.
Alternativamente, los datos son otra forma y/u organización de
datos de audio.
Para empezar, el descodificador inicializa
varias variables. Específicamente, el descodificador establece un
conteo de secuencia en 0 (1710) y establece un estado de
descodificación en aritmética directa basada en contexto (DCBA)
(1712).
El descodificador descodifica el siguiente
coeficiente cuantificado utilizando DCBA (1720) buscando el número
que el codificador ha utilizado para representar el coeficiente en
codificación aritmética, y extrayendo el valor del coeficiente a
partir de ese número. El descodificador actualiza a continuación el
conteo de secuencia en base al coeficiente descodificado (1730)
(específicamente, en base a si el coeficiente descodificado es un
valor cero para resetear o incrementar el conteo de secuencia).
El descodificador comprueba si el conteo de
secuencia excede un umbral (1740). El umbral de conteo de secuencia
puede ser estático o puede depender de un factor tal como el tamaño
de un bloque de coeficientes (por ejemplo, cuatro ceros en una
secuencia de entrada de 256 coeficientes), o puede ser adaptativo de
alguna otra manera. Si el conteo de secuencia excede el umbral, el
descodificador empieza a descodificar los coeficientes codificados
utilizando descodificación de nivel de secuencia (1750). La
descodificación de nivel de secuencia puede ser llevada a cabo de
varias formas, incluyendo, por ejemplo, descodificación de Huffman,
descodificación vectorial de Huffman, o descodificación CBA
(potencialmente con contextos diferentes a la descodificación CBA
anterior, como se ha descrito en lo que antecede). En algunas
realizaciones, la descodificación de nivel de secuencia se realiza
utilizando descodificación de Huffman con dos tablas potenciales de
código de Huffman, donde una tabla se utiliza para descodificar
datos en los que las secuencias más cortas son más probables, y una
tabla se utiliza para descodificar datos en los que las secuencias
más largas son más probables. Cuando el descodificador recibe un
código, un bit de señal presente en el código indica qué tabla ha
sido utilizada por el codificador, y el descodificador busca el
código en una tabla apropiada.
Si el conteo de secuencia no supera el umbral,
el descodificador sigue procesando coeficientes hasta que la
descodificación haya terminado (1760).
En algunas realizaciones que utilizan
codificación de Huffman, un codificador tal como el codificador
(200) de la Figura 2, utiliza un código de escape para que una
tabla de código de Huffman indique que un símbolo (o una
combinación de símbolos) particular no tiene un código asociado en
la tabla. A veces, se utiliza un código de escape para indicar que
un símbolo particular (por ejemplo, un valor escalar para un nivel
que no está representado en una tabla escalar de código de Huffman
para niveles, una longitud de secuencia que no está representada en
una tabla escalar de código de Huffman para longitudes de secuencia,
etc.), debe ser codificado sin utilizar ninguna tabla de Huffman.
En otras palabras, el símbolo debe ser codificado utilizando una
técnica de codificación "sin-tabla".
En algunas realizaciones que utilizan
codificación aritmética, se utiliza a veces un código de escape para
indicar que un símbolo particular no ha sido codificado
aritméticamente. El símbolo podría ser codificado utilizando un
código de una tabla de Huffman, o podría ser codificado utilizando
una técnica de codificación "sin-tabla".
Algunas técnicas de codificación
sin-tabla utilizan códigos de longitud fija para
representar símbolos. Sin embargo, la utilización de códigos de
longitud fija puede conducir a códigos innecesariamente largos.
En algunas realizaciones, por lo tanto, los
símbolos tales como los coeficientes de transformación
cuantificados, están representados por códigos de longitud variable
en una técnica de codificación sin-tabla cuando los
símbolos no están codificados de otra manera. Un descodificador tal
como el descodificador (300) de la Figura 3 ejecuta una técnica
correspondiente de descodificación sin-tabla.
Por ejemplo, la Tabla 6 muestra un
seudo-código para una implementación de dicha
técnica de codificación sin-tabla.
\vskip1.000000\baselineskip
El número de bits que utiliza el codificador
para codificar el coeficiente depende del valor del coeficiente. El
codificador envía un valor de uno, dos o tres bits para indicar el
número de bits utilizados para codificar el valor, y a continuación
envía el propio valor codificado utilizando 8, 16, 24 ó 31 bits. El
número total bits que el codificador utiliza para codificar el
coeficiente, está comprendido en la gama de 9 bits para un valor
menor de 2^{8}, a 34 bits para un valor mayor o igual a 2^{24},
pero menor que 2^{31}.
Para una serie de coeficientes, el promedio de
bits enviados será igual a:
P(0
\leq C < 2^{8})*9 + P(2^{8} \leq C <
2^{16})*18 + P(2^{16} \leq C < 2^{24})*27 +
P(2^{24} \leq C <
2^{31})*34.
donde P(m \leq C < n)
es la probabilidad de ocurrencia, en una secuencia de entrada, de un
coeficiente C dentro de la franja indicada. Por lo tanto, son
posibles ahorros significativos de bits cuando un gran porcentaje
de los coeficientes son pequeños (por ejemplo, menos de
2^{16}).
Alternativamente, el codificador y el
descodificador utilizan otra técnica de codificación/descodificación
sin-tabla.
Habiendo descrito e ilustrado los principios de
nuestra invención con referencia a las diversas realizaciones
descritas, se comprenderá que las realizaciones descritas pueden ser
modificadas en cuanto a estructura y detalle sin apartarse de tales
principios. Se comprenderá que los programas, procesos, o
procedimientos aquí descritos no están relacionados o limitados en
cuanto a algún tipo de entorno de computación, a menos que se
indique otra cosa. Se pueden usar diversos tipos de entornos de
computación especializados o de propósito general con, o llevando a
cabo, operaciones de acuerdo con las enseñanzas aquí descritas. Los
elementos de las realizaciones descritas mostrados en software
pueden ser implementados en hardware, y viceversa.
En vista de las muchas realizaciones posibles a
las que se pueden aplicar los principios de nuestra invención,
reivindicamos como nuestra invención todas esas realizaciones puesto
que pueden caer dentro del alcance de las reivindicaciones que
siguen y de las equivalentes de las mismas.
Claims (48)
1. Un procedimiento de codificación de datos
de audio en un sistema de ordenador, comprendiendo el
procedimiento:
codificar una primera porción de una secuencia
de datos de audio en un modo de codificación vectorial directa de
Huffman de dimensión variable (960);
conmutar (980) a un modo de codificación de
nivel de ejecución en un punto de conmutación, y
codificar una segunda porción de la secuencia de
datos de audio en el modo de codificación de nivel de ejecución.
2. El procedimiento de la reivindicación 1,
que comprende además enviar una señalización en una corriente de
bits codificados, en la que la señalización indica el punto de
conmutación.
3. El procedimiento de la reivindicación 1 ó
2, en el que la primera porción de la secuencia de datos de audio
consiste principalmente en coeficientes de audio cuantificados
distintos de cero, y en el que la segunda porción de la secuencia
de datos de audio consiste principalmente en coeficientes de audio
cuantificados de valor cero.
4. El procedimiento de la reivindicación 1, en
el que el punto de conmutación es un punto de conmutación
predeterminado.
5. El procedimiento de la reivindicación 4, en
el que el punto de conmutación predeterminado se determina
experimentalmente comprobando la eficacia de codificación de la
secuencia de datos de audio usando el punto de conmutación
predeterminado.
6. El procedimiento de la reivindicación 1, en
el que el punto de conmutación se determina adaptativamente.
7. El procedimiento de una cualquiera de las
reivindicaciones 1 a 6, que comprende además:
conmutar a un tercer modo de codificación en un
segundo punto de conmutación.
8. El procedimiento de una cualquiera de las
reivindicaciones 1 a 7, en el que el modo de codificación de nivel
de secuencia comprende codificación aritmética basada en contexto de
longitudes y niveles de ejecución.
9. El procedimiento de una cualquiera de las
reivindicaciones 1 a 7, en el que el modo de codificación de nivel
de ejecución comprende codificación de Huffman de longitudes y
niveles de secuencia.
10. El procedimiento de una de las
reivindicaciones 1 a 7, en el que el modo de codificación de nivel
de ejecución comprende la codificación vectorial de Huffman de
longitudes y niveles de ejecución.
11. El procedimiento de una cualquiera de las
reivindicaciones 1 a 10, en el que la codificación de la primera
porción de la secuencia de datos de audio en el modo de codificación
vectorial directa de Huffman de dimensión variable comprende:
determinar un código de Huffman para su uso en
la codificación de un vector de símbolos de datos de audio, en el
que la determinación se basa en los símbolos de datos de audio y en
la suma de valores de los símbolos de datos de audio, y
codificar el vector de símbolos de datos de
audio utilizando el código de Huffman.
12. El procedimiento de la reivindicación 11,
en el que el código de Huffman es un código de escape, en el que el
vector de símbolos de datos de audio es un vector
n-dimensional, y en el que el código de escape
indica que el vector n-dimensional ha de ser
codificado en forma de x vectores
n/x-dimensionales.
13. El procedimiento de una cualquiera de las
reivindicaciones 1 a 10, en el que la codificación de la primera
porción de secuencia de datos de audio en el modo de codificación
vectorial directa de Huffman de dimensión variable comprende
cambiar desde una tabla de código vectorial de Huffman de dimensión
más alta de la pluralidad de tablas de código de Huffman, a una
tabla de código vectorial de Huffman de dimensión más baja de la
pluralidad de tablas de código de Huffman, para codificar un vector
de valores procedentes de la primera porción de la secuencia de
datos de audio cuando el vector de valores no tiene asignado un
código de Huffman en la tabla de código vectorial de Huffman de
dimensión más alta.
14. El procedimiento de una cualquiera de las
reivindicaciones 1 a 10, en el que la codificación de la primera
porción de la secuencia de datos de audio en el modo de codificación
vectorial directa de Huffman de dimensión variable, comprende:
determinar que un primer vector
n-dimensional de valores procedentes de la primera
porción de la secuencia de datos de audio, tiene asignado un código
de Huffman en una tabla de código vectorial de Huffman
n-dimensional de la pluralidad de tablas de código
de Huffman, en el que n es al menos 2, y en el que la tabla de
código vectorial de Huffman n-dimensional contiene
códigos de Huffman para vectores de valores más bajos que todas las
n-dimensiones posibles;
codificar el primer vector
n-dimensional utilizando el código de Huffman
asignado desde una tabla de código vectorial de Huffman
n-dimensional, y
en respuesta a la determinación de que un
segundo vector n-dimensional de valores procedentes
de la primera porción de la secuencia de datos de audio no tiene
asignado un código de Huffman en la tabla de código vectorial de
Huffman n-dimensional:
- -
- añadir un código de escape indicativo de un cambio, a una tabla de código vectorial de Huffman n/2-dimensional de la pluralidad de tablas de código de Huffman;
- -
- dividir el segundo vector n-dimensional en dos vectores n/2-dimensionales;
- -
- determinar que los dos vectores n/2-dimensionales tienen asignados códigos de Huffman en la tabla de código vectorial de Huffman n/2-dimensional, en el que la tabla de código vectorial de Huffman n/2-dimensional contiene códigos de Huffman para un número limitado de los vectores de valores n/2-dimensionales más probables, y
- -
- codificar los dos vectores n/2-dimensionales utilizando los códigos de Huffman asignados desde una tabla de código vectorial de Huffman n/2-dimensional.
15. El procedimiento de una cualquiera de las
reivindicaciones 1 a 10, en el que la codificación de la primera
porción de la secuencia de datos de audio en el modo de codificación
vectorial directa de Huffman de dimensión variable utiliza códigos
de escape para indicar cambios entre la pluralidad de tablas de
código de Huffman para diferentes dimensiones.
16. El procedimiento de una cualquiera de las
reivindicaciones 1 a 10, en el que la codificación de la primera
porción de la secuencia de datos de audio en el modo de codificación
vectorial directa de Huffman de dimensión variable utiliza códigos
de escape para indicar cambios entre vectores de diferentes
dimensiones.
17. Un procedimiento de codificación de datos
de audio en un sistema de ordenador, comprendiendo el
procedimiento:
codificar una primera porción de una secuencia
de datos de audio en un modo de codificación aritmética directa
basada en contexto (1640);
conmutar (1680) a un modo de codificación de
nivel de ejecución en un punto de conmutación, y
codificar una segunda porción de la secuencia de
datos de audio en el modo de codificación de nivel de ejecución.
18. El procedimiento de la reivindicación 17,
en el que el modo de codificación de nivel de ejecución comprende
la codificación aritmética basada en contexto de longitudes y
niveles de ejecución.
19. Un procedimiento de descodificación de
datos de audio en un sistema de ordenador, comprendiendo el
procedimiento:
descodificar una primera porción de una
secuencia de datos de audio codificados, en un modo de
descodificación vectorial directa de Huffman de dimensión variable
(1220);
conmutar (1250) a un modo de descodificación de
nivel de secuencia en un punto de conmutación, y
descodificar una segunda porción de la secuencia
de datos de audio codificados, en el modo de descodificación de
nivel de ejecución.
20. El procedimiento de la reivindicación 19,
que comprende además:
con anterioridad a la conmutación, recibir una
señalización indicativa del punto de conmutación.
21. El procedimiento de la reivindicación 19 ó
20, en el que la primera porción de la secuencia de datos de audio
codificados consiste principalmente en coeficientes de audio
cuantificados distintos de cero, y en el que la segunda porción de
la secuencia de datos de audio codificados consiste principalmente
en coeficientes de audio cuantificados de valor cero.
22. El procedimiento de la reivindicación 19,
en el que el punto de conmutación es un punto de conmutación
predeterminado.
23. El procedimiento de la reivindicación 19,
en el que el punto de conmutación se determina adaptativamente.
24. El procedimiento de una cualquiera de las
reivindicaciones 19 a 23, que comprende además:
conmutar a un tercer modo de descodificación en
un segundo punto de conmutación.
25. El procedimiento de una cualquiera de las
reivindicaciones 19 a 24, en el que el modo de descodificación de
nivel de ejecución comprende la descodificación aritmética basada en
contexto de longitudes y niveles de ejecución.
26. El procedimiento de una cualquiera de las
reivindicaciones 19 a 24, en el que el modo de descodificación de
nivel de secuencia comprende la descodificación de Huffman de
longitudes y niveles de ejecución.
27. El procedimiento de una cualquiera de las
reivindicaciones 19 a 24, en el que el modo de descodificación de
nivel de ejecución comprende la descodificación vectorial de Huffman
de longitudes y niveles de ejecución.
28. El procedimiento de una cualquiera de las
reivindicaciones 19 a 24, en el que la descodificación de la
primera porción de la secuencia de datos de audio codificados en el
modo de descodificación vectorial directa de Huffman de dimensión
variable comprende cambiar desde una tabla de código vectorial de
Huffman de dimensión más alta de la pluralidad de tablas de código
de Huffman, a una tabla de código vectorial de Huffman de dimensión
más baja de la pluralidad de tablas de código de Huffman cuando es
encontrado un código de escape de la tabla de código vectorial de
Huffman de dimensión más alta en la secuencia de datos de audio
codificados.
29. El procedimiento de una cualquiera de las
reivindicaciones 19 a 24, en el que la descodificación de la
primera porción de la secuencia de datos de audio codificados en el
modo de descodificación vectorial directa de Huffman de dimensión
variable, comprende:
determinar que un primer código de Huffman de la
secuencia de datos de audio codificados es un código de escape de
una tabla de código vectorial de Huffman
n-dimensional de una pluralidad de tablas de código
de Huffman, en el que n es al menos 2, y en el que la tabla de
código vectorial de Huffman n-dimensional contiene
códigos de Huffman para vectores de valores más bajos de todas las
n-dimensiones posibles;
en respuesta a la determinación de que el primer
código de Huffman de la secuencia de datos de audio codificados es
el código de escape de la tabla de código vectorial de Huffman
n-dimensional, descodificar un segundo código de
Huffman de la secuencia de datos de audio codificados utilizando una
tabla de código vectorial de Huffman
n/2-dimensional de la pluralidad de tablas de código
de Huffman.
30. El procedimiento de una cualquiera de las
reivindicaciones 19 a 24, en el que la descodificación de la
primera porción de la secuencia de datos de audio codificados en el
modo de descodificación vectorial directa de Huffman de dimensión
variable utiliza códigos de escape para indicar cambios entre la
pluralidad de tablas de código de Huffman para diferentes
dimensiones.
31. El procedimiento de una cualquiera de las
reivindicaciones 19 a 24, en el que la descodificación de la
primera porción de la secuencia de datos de audio codificados en el
modo de descodificación vectorial directa de Huffman de dimensión
variable utiliza códigos de escape para indicar cambios entre
vectores de dimensiones diferentes.
32. Un procedimiento de descodificación de
datos de audio en un sistema de ordenador, comprendiendo el
procedimiento:
descodificar una primera porción de una
secuencia de datos de audio codificados en un modo de
descodificación aritmética directa basada en contexto (1720);
conmutar (1750) a un modo de descodificación de
nivel de ejecución en un punto de conmutación, y
descodificar una segunda porción de la secuencia
de datos de audio en el modo de descodificación de nivel de
ejecución.
33. El procedimiento de la reivindicación 32,
en el que el modo de descodificación de nivel de ejecución
comprende la descodificación aritmética basada en contexto de
longitudes y niveles de ejecución.
34. Un procedimiento de codificación de datos
de audio en un sistema de ordenador que utiliza un codificador
entrópico, comprendiendo el procedimiento:
la codificación entrópica de una primera porción
de los datos de audio, en el que la codificación de la primera
porción comprende la codificación directa (410) de coeficientes,
el mantenimiento (530, 532, 538) de un conteo de
coeficientes consecutivos iguales a un valor predominante, en el
que el conteo se incrementa si el valor de los coeficientes actuales
es igual al valor predominante, y
en respuesta al conteo que exceda (534) de un
umbral, codificar una segunda porción de los datos de audio, en el
que la codificación de la segunda porción comprende una codificación
de nivel de secuencia (430) de los coeficientes.
35. El procedimiento de la reivindicación 34,
en el que el valor predominante es cero.
36. El procedimiento de la reivindicación 34 ó
35, en el que el umbral es estático.
37. El procedimiento de la reivindicación 34 ó
35, en el que el umbral se determina adaptativamente.
38. El procedimiento de la reivindicación 34 ó
35, en el que la primera porción comprende un bloque de
coeficientes, teniendo el bloque un tamaño, y en el que el umbral
depende del tamaño.
39. El procedimiento de la reivindicación 38,
en el que el tamaño es de 256 coeficientes, y en el que el umbral es
4.
40. El procedimiento de la reivindicación 38,
en el que el tamaño es de 512 coeficientes, y en el que el umbral es
8.
41. Un procedimiento de descodificación de
datos de audio en un sistema de ordenador que utiliza un
descodificador entrópico, comprendiendo el procedimiento:
descodificación entrópica de una primera porción
de los datos de audio, en el que la descodificación de la porción
comprende la descodificación directa (610) de coeficientes,
mantenimiento de coeficientes consecutivos
iguales a un valor predominante, en el que el conteo se incrementa
si un valor del coeficiente actual es igual al valor predominante,
y
en respuesta al conteo que exceda de un umbral,
descodificación entrópica de una segunda porción de los datos de
audio, en el que la descodificación de la segunda porción comprende
la descodificación de nivel de secuencia (630) de los
coeficientes.
42. El procedimiento de la reivindicación 41,
en el que el valor predominante es cero.
43. El procedimiento de la reivindicación 41 ó
42, en el que el umbral es estático.
44. El procedimiento de la reivindicación 41 ó
43, en el que el umbral se determina adaptativamente.
45. El procedimiento de la reivindicación 41 ó
44, en el que la primera porción comprende un bloque de
coeficientes, teniendo el bloque un tamaño, y en el que el umbral
depende del tamaño.
46. El procedimiento de la reivindicación 45,
en el que el tamaño es de 256 coeficientes, y en el que el umbral
es 4.
47. El procedimiento de la reivindicación 45,
en el que el tamaño es de 512 coeficientes, y en el que el umbral
es 8.
48. Un medio susceptible de lectura con
ordenador, que almacena instrucciones ejecutables con ordenador para
hacer que el sistema de ordenador lleve a cabo el procedimiento de
cualquiera de las reivindicaciones anteriores.
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US40853802P | 2002-09-04 | 2002-09-04 | |
| US408538P | 2002-09-04 | ||
| US647923P | 2003-08-25 | ||
| US10/647,923 US7433824B2 (en) | 2002-09-04 | 2003-08-25 | Entropy coding by adapting coding between level and run-length/level modes |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2297083T3 true ES2297083T3 (es) | 2008-05-01 |
Family
ID=34067862
Family Applications (4)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES06021094T Expired - Lifetime ES2334934T3 (es) | 2002-09-04 | 2003-09-03 | Codificacion de entropia por adaptacion de codificacion entre modalidades de nivel y de longitud de sucesion y nivel. |
| ES03020015T Expired - Lifetime ES2297083T3 (es) | 2002-09-04 | 2003-09-03 | Codificacion entropica por adaptacion de la codificacion entre modos por longitud de ejecucion y por nivel. |
| ES10181047T Expired - Lifetime ES2378462T3 (es) | 2002-09-04 | 2003-09-03 | Codificación entrópica por adaptación de codificación entre modalidades de nivel y de longitud/nivel de cadencia |
| ES08017491T Expired - Lifetime ES2388942T3 (es) | 2002-09-04 | 2003-09-03 | Codificación entrópica adaptando la codifidación entre modos de nivel y de longitud de serie/nivel |
Family Applications Before (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES06021094T Expired - Lifetime ES2334934T3 (es) | 2002-09-04 | 2003-09-03 | Codificacion de entropia por adaptacion de codificacion entre modalidades de nivel y de longitud de sucesion y nivel. |
Family Applications After (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES10181047T Expired - Lifetime ES2378462T3 (es) | 2002-09-04 | 2003-09-03 | Codificación entrópica por adaptación de codificación entre modalidades de nivel y de longitud/nivel de cadencia |
| ES08017491T Expired - Lifetime ES2388942T3 (es) | 2002-09-04 | 2003-09-03 | Codificación entrópica adaptando la codifidación entre modos de nivel y de longitud de serie/nivel |
Country Status (7)
| Country | Link |
|---|---|
| US (5) | US7822601B2 (es) |
| EP (5) | EP2267698B1 (es) |
| AT (4) | ATE543178T1 (es) |
| DE (3) | DE60317982T2 (es) |
| DK (2) | DK2282310T3 (es) |
| ES (4) | ES2334934T3 (es) |
| PT (1) | PT2282310E (es) |
Families Citing this family (86)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| ATE543178T1 (de) | 2002-09-04 | 2012-02-15 | Microsoft Corp | Entropische kodierung mittels anpassung des kodierungsmodus zwischen niveau- und lauflängenniveau-modus |
| US7433824B2 (en) | 2002-09-04 | 2008-10-07 | Microsoft Corporation | Entropy coding by adapting coding between level and run-length/level modes |
| US7724827B2 (en) | 2003-09-07 | 2010-05-25 | Microsoft Corporation | Multi-layer run level encoding and decoding |
| US7684981B2 (en) | 2005-07-15 | 2010-03-23 | Microsoft Corporation | Prediction of spectral coefficients in waveform coding and decoding |
| US7693709B2 (en) | 2005-07-15 | 2010-04-06 | Microsoft Corporation | Reordering coefficients for waveform coding or decoding |
| US7599840B2 (en) * | 2005-07-15 | 2009-10-06 | Microsoft Corporation | Selectively using multiple entropy models in adaptive coding and decoding |
| US7933337B2 (en) | 2005-08-12 | 2011-04-26 | Microsoft Corporation | Prediction of transform coefficients for image compression |
| US7565018B2 (en) | 2005-08-12 | 2009-07-21 | Microsoft Corporation | Adaptive coding and decoding of wide-range coefficients |
| CN101558581A (zh) * | 2006-11-13 | 2009-10-14 | 新加坡科学研究局 | 对数据矩阵进行编码的方法和系统以及对编码的数据矩阵进行解码的方法和系统 |
| US8184710B2 (en) | 2007-02-21 | 2012-05-22 | Microsoft Corporation | Adaptive truncation of transform coefficient data in a transform-based digital media codec |
| KR101405972B1 (ko) * | 2007-07-02 | 2014-06-12 | 엘지전자 주식회사 | 방송 수신기 및 방송신호 처리방법 |
| US8125364B2 (en) * | 2007-08-13 | 2012-02-28 | Nec Corporation | Data compression/decompression method |
| US8179974B2 (en) | 2008-05-02 | 2012-05-15 | Microsoft Corporation | Multi-level representation of reordered transform coefficients |
| CN101626242B (zh) * | 2008-07-11 | 2014-04-16 | 数维科技(北京)有限公司 | 改进的霍夫曼解码方法及装置 |
| JP5244971B2 (ja) | 2008-07-11 | 2013-07-24 | フラウンホーファー−ゲゼルシャフト・ツール・フェルデルング・デル・アンゲヴァンテン・フォルシュング・アインゲトラーゲネル・フェライン | オーディオ信号合成器及びオーディオ信号符号器 |
| EP3937167B1 (en) * | 2008-07-11 | 2023-05-10 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Audio encoder and audio decoder |
| EP2346029B1 (en) * | 2008-07-11 | 2013-06-05 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Audio encoder, method for encoding an audio signal and corresponding computer program |
| US8406307B2 (en) | 2008-08-22 | 2013-03-26 | Microsoft Corporation | Entropy coding/decoding of hierarchically organized data |
| WO2010032934A2 (ko) * | 2008-09-16 | 2010-03-25 | 에스케이텔레콤 주식회사 | B-변환을 위한 부호화 방법 및 장치와 그를 위한 부호화 데이터 |
| WO2010041680A1 (ja) * | 2008-10-10 | 2010-04-15 | 日本電信電話株式会社 | 符号化方法、符号化装置、復号方法、復号装置、プログラム及び記録媒体 |
| RU2487473C2 (ru) * | 2008-12-03 | 2013-07-10 | Нокиа Корпорейшн | Переключение между режимами кодирования коэффициентов дискретного косинусного преобразования |
| BR122022013454B1 (pt) | 2009-10-20 | 2023-05-16 | Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E.V. | Codificador de áudio, decodificador de áudio, método para codificar uma informação de áudio, método para decodificar uma informação de áudio que utiliza uma detecção de um grupo de valores espectrais previamente decodificados |
| AU2011206677B9 (en) | 2010-01-12 | 2014-12-11 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Audio encoder, audio decoder, method for encoding and decoding an audio information, and computer program obtaining a context sub-region value on the basis of a norm of previously decoded spectral values |
| KR101739808B1 (ko) * | 2010-04-13 | 2017-05-25 | 지이 비디오 컴프레션, 엘엘씨 | 유효성 맵 및 변환 계수 블록의 코딩 |
| US9318115B2 (en) * | 2010-11-26 | 2016-04-19 | Nokia Technologies Oy | Efficient coding of binary strings for low bit rate entropy audio coding |
| US8446301B2 (en) * | 2011-04-15 | 2013-05-21 | Research In Motion Limited | Methods and devices for coding and decoding the position of the last significant coefficient |
| EP3096315B1 (en) * | 2011-04-20 | 2019-10-16 | Panasonic Intellectual Property Corporation of America | Device and method for execution of huffman coding |
| US20130003859A1 (en) * | 2011-06-30 | 2013-01-03 | Qualcomm Incorporated | Transition between run and level coding modes |
| WO2013010317A1 (en) * | 2011-07-18 | 2013-01-24 | Technicolor (China) Technology Co., Ltd. | Method for adaptive entropy coding of tree structures |
| US20130099946A1 (en) | 2011-10-21 | 2013-04-25 | International Business Machines Corporation | Data Compression Utilizing Variable and Limited Length Codes |
| US8891888B2 (en) | 2012-09-05 | 2014-11-18 | Google Inc. | Entropy coding for recompression of images |
| TWI612518B (zh) * | 2012-11-13 | 2018-01-21 | Samsung Electronics Co., Ltd. | 編碼模式決定方法、音訊編碼方法以及音訊解碼方法 |
| US10003792B2 (en) | 2013-05-27 | 2018-06-19 | Microsoft Technology Licensing, Llc | Video encoder for images |
| US9495968B2 (en) | 2013-05-29 | 2016-11-15 | Qualcomm Incorporated | Identifying sources from which higher order ambisonic audio data is generated |
| US9978065B2 (en) * | 2013-06-25 | 2018-05-22 | Visa International Service Association | Voice filter system |
| CN104253993B (zh) * | 2013-06-28 | 2018-01-12 | 炬芯(珠海)科技有限公司 | 一种多媒体数据处理方法、电路及装置 |
| EP2830054A1 (en) | 2013-07-22 | 2015-01-28 | Fraunhofer Gesellschaft zur Förderung der angewandten Forschung e.V. | Audio encoder, audio decoder and related methods using two-channel processing within an intelligent gap filling framework |
| US9344218B1 (en) | 2013-08-19 | 2016-05-17 | Zoom Video Communications, Inc. | Error resilience for interactive real-time multimedia applications |
| PT3058566T (pt) * | 2013-10-18 | 2018-03-01 | Fraunhofer Ges Forschung | Codificação de coeficientes espectrais de um espectro de um sinal de áudio |
| US9502045B2 (en) | 2014-01-30 | 2016-11-22 | Qualcomm Incorporated | Coding independent frames of ambient higher-order ambisonic coefficients |
| US9922656B2 (en) | 2014-01-30 | 2018-03-20 | Qualcomm Incorporated | Transitioning of ambient higher-order ambisonic coefficients |
| US10090004B2 (en) | 2014-02-24 | 2018-10-02 | Samsung Electronics Co., Ltd. | Signal classifying method and device, and audio encoding method and device using same |
| US10136140B2 (en) | 2014-03-17 | 2018-11-20 | Microsoft Technology Licensing, Llc | Encoder-side decisions for screen content encoding |
| US9620137B2 (en) * | 2014-05-16 | 2017-04-11 | Qualcomm Incorporated | Determining between scalar and vector quantization in higher order ambisonic coefficients |
| US9852737B2 (en) | 2014-05-16 | 2017-12-26 | Qualcomm Incorporated | Coding vectors decomposed from higher-order ambisonics audio signals |
| US10770087B2 (en) | 2014-05-16 | 2020-09-08 | Qualcomm Incorporated | Selecting codebooks for coding vectors decomposed from higher-order ambisonic audio signals |
| US9747910B2 (en) | 2014-09-26 | 2017-08-29 | Qualcomm Incorporated | Switching between predictive and non-predictive quantization techniques in a higher order ambisonics (HOA) framework |
| WO2016123792A1 (en) | 2015-02-06 | 2016-08-11 | Microsoft Technology Licensing, Llc | Skipping evaluation stages during media encoding |
| GB2538218B (en) * | 2015-02-11 | 2021-06-30 | Leo Greenfield Daniel | System and method for compressing data using asymmetric numeral systems with probability distributions |
| WO2016142002A1 (en) | 2015-03-09 | 2016-09-15 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Audio encoder, audio decoder, method for encoding an audio signal and method for decoding an encoded audio signal |
| US10038917B2 (en) | 2015-06-12 | 2018-07-31 | Microsoft Technology Licensing, Llc | Search strategies for intra-picture prediction modes |
| US10171810B2 (en) | 2015-06-22 | 2019-01-01 | Cisco Technology, Inc. | Transform coefficient coding using level-mode and run-mode |
| US10136132B2 (en) * | 2015-07-21 | 2018-11-20 | Microsoft Technology Licensing, Llc | Adaptive skip or zero block detection combined with transform size decision |
| US10756755B2 (en) | 2016-05-10 | 2020-08-25 | Immersion Networks, Inc. | Adaptive audio codec system, method and article |
| US10770088B2 (en) | 2016-05-10 | 2020-09-08 | Immersion Networks, Inc. | Adaptive audio decoder system, method and article |
| KR20190011742A (ko) * | 2016-05-10 | 2019-02-07 | 이멀젼 서비시즈 엘엘씨 | 적응형 오디오 코덱 시스템, 방법, 장치 및 매체 |
| US10699725B2 (en) | 2016-05-10 | 2020-06-30 | Immersion Networks, Inc. | Adaptive audio encoder system, method and article |
| US10169362B2 (en) | 2016-07-07 | 2019-01-01 | Cross Commerce Media, Inc. | High-density compression method and computing system |
| CN107945807B (zh) * | 2016-10-12 | 2021-04-13 | 厦门雅迅网络股份有限公司 | 基于静音游程的语音识别方法及其系统 |
| US10417364B2 (en) | 2017-01-04 | 2019-09-17 | Stmicroelectronics International N.V. | Tool to create a reconfigurable interconnect framework |
| CN207517054U (zh) | 2017-01-04 | 2018-06-19 | 意法半导体股份有限公司 | 串流开关 |
| US10361712B2 (en) * | 2017-03-14 | 2019-07-23 | International Business Machines Corporation | Non-binary context mixing compressor/decompressor |
| US10613797B2 (en) * | 2017-06-13 | 2020-04-07 | ScaleFlux, Inc. | Storage infrastructure that employs a low complexity encoder |
| CN107677472B (zh) * | 2017-08-25 | 2019-07-09 | 中国矿业大学 | 面向网络变量筛选与特征熵融合的轴承状态噪声诊断算法 |
| US11281312B2 (en) | 2018-01-08 | 2022-03-22 | Immersion Networks, Inc. | Methods and apparatuses for producing smooth representations of input motion in time and space |
| US10735025B2 (en) * | 2018-03-02 | 2020-08-04 | Microsoft Technology Licensing, Llc | Use of data prefixes to increase compression ratios |
| US10657094B2 (en) | 2018-03-29 | 2020-05-19 | Nvidia Corp. | Relaxed 433 encoding to reduce coupling and power noise on PAM-4 data buses |
| US11159153B2 (en) | 2018-03-29 | 2021-10-26 | Nvidia Corp. | Data bus inversion (DBI) on pulse amplitude modulation (PAM) and reducing coupling and power noise on PAM-4 I/O |
| US11966348B2 (en) | 2019-01-28 | 2024-04-23 | Nvidia Corp. | Reducing coupling and power noise on PAM-4 I/O interface |
| US10599606B2 (en) | 2018-03-29 | 2020-03-24 | Nvidia Corp. | 424 encoding schemes to reduce coupling and power noise on PAM-4 data buses |
| EP4283877A3 (en) * | 2018-06-21 | 2024-01-10 | Sony Group Corporation | Encoder and encoding method, decoder and decoding method, and program |
| US11019346B2 (en) * | 2018-07-02 | 2021-05-25 | Qualcomm Incorporated | Coefficient coding with grouped bypass remaining levels for dependent quantization |
| US10623200B2 (en) | 2018-07-20 | 2020-04-14 | Nvidia Corp. | Bus-invert coding with restricted hamming distance for multi-byte interfaces |
| US10666289B1 (en) | 2019-01-16 | 2020-05-26 | International Business Machines Corporation | Data compression using dictionary encoding |
| KR102399065B1 (ko) | 2019-05-28 | 2022-05-17 | 돌비 레버러토리즈 라이쎈싱 코오포레이션 | 양자화 파라미터 시그널링 |
| AU2020320270B2 (en) * | 2019-08-01 | 2025-10-23 | Dolby Laboratories Licensing Corporation | Encoding and decoding IVAS bitstreams |
| CN112399181B (zh) * | 2019-08-19 | 2022-08-26 | 华为技术有限公司 | 图像编解码的方法、装置和存储介质 |
| US11380343B2 (en) | 2019-09-12 | 2022-07-05 | Immersion Networks, Inc. | Systems and methods for processing high frequency audio signal |
| US11593609B2 (en) | 2020-02-18 | 2023-02-28 | Stmicroelectronics S.R.L. | Vector quantization decoding hardware unit for real-time dynamic decompression for parameters of neural networks |
| US11227614B2 (en) * | 2020-06-11 | 2022-01-18 | Silicon Laboratories Inc. | End node spectrogram compression for machine learning speech recognition |
| US11531873B2 (en) | 2020-06-23 | 2022-12-20 | Stmicroelectronics S.R.L. | Convolution acceleration with embedded vector decompression |
| US12347508B2 (en) | 2021-02-12 | 2025-07-01 | Nvidia Corp. | Error detection pin encoding scheme to avoid maximum transitions and further improve signal integrity on high speed graphic memory interfaces |
| US12132590B2 (en) | 2022-03-18 | 2024-10-29 | Nvidia, Corp. | Hardware-efficient PAM-3 encoder and decoder |
| US12135607B2 (en) | 2022-03-18 | 2024-11-05 | Nvidia Corp. | Hardware-efficient PAM-3 encoder and decoder |
| WO2024012666A1 (en) * | 2022-07-12 | 2024-01-18 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Apparatus and method for encoding or decoding ar/vr metadata with generic codebooks |
| US20250258826A1 (en) * | 2024-02-08 | 2025-08-14 | International Business Machines Corporation | Efficient look-up for vector symbolic architectures (vsa) |
Family Cites Families (234)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4420771A (en) | 1981-02-09 | 1983-12-13 | Bell Telephone Laboratories, Incorporated | Technique for encoding multi-level signals |
| US4558302A (en) | 1983-06-20 | 1985-12-10 | Sperry Corporation | High speed data compression and decompression apparatus and method |
| DE3629434C2 (de) | 1986-08-29 | 1994-07-28 | Karlheinz Dipl Ing Brandenburg | Digitales Codierverfahren |
| DE3750206C5 (de) | 1986-09-13 | 2019-11-14 | Philips Gmbh | Verfahren und Schaltungsanordung zur Bitratenreduktion. |
| US4730348A (en) * | 1986-09-19 | 1988-03-08 | Adaptive Computer Technologies | Adaptive data compression system |
| US4698672A (en) | 1986-10-27 | 1987-10-06 | Compression Labs, Inc. | Coding system for reducing redundancy |
| US4862167A (en) | 1987-02-24 | 1989-08-29 | Hayes Microcomputer Products, Inc. | Adaptive data compression method and apparatus |
| US4968135A (en) | 1987-08-17 | 1990-11-06 | Digital Equipment Corporation | System for producing pixel image data from CCITT encoded pixel data |
| US4792981A (en) | 1987-09-21 | 1988-12-20 | Am International, Inc. | Manipulation of run-length encoded images |
| JPH0191587A (ja) | 1987-10-02 | 1989-04-11 | Kokusai Denshin Denwa Co Ltd <Kdd> | 予測符号ベクトル量子化方式 |
| US4813056A (en) | 1987-12-08 | 1989-03-14 | General Electric Company | Modified statistical coding of digital signals |
| JPH0621830Y2 (ja) | 1988-03-11 | 1994-06-08 | 本田技研工業株式会社 | 自動車のサイドシル構造 |
| EP0339589A3 (en) | 1988-04-28 | 1992-01-02 | Sharp Kabushiki Kaisha | Orthogonal transform coding system for image data |
| US5043919A (en) | 1988-12-19 | 1991-08-27 | International Business Machines Corporation | Method of and system for updating a display unit |
| DE3943879B4 (de) | 1989-04-17 | 2008-07-17 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Digitales Codierverfahren |
| FR2646978B1 (fr) | 1989-05-11 | 1991-08-23 | France Etat | Procede et installation a codage de signaux sonores |
| US5128758A (en) | 1989-06-02 | 1992-07-07 | North American Philips Corporation | Method and apparatus for digitally processing a high definition television augmentation signal |
| US5179442A (en) | 1989-06-02 | 1993-01-12 | North American Philips Corporation | Method and apparatus for digitally processing a high definition television augmentation signal |
| JPH03108824U (es) | 1990-02-22 | 1991-11-08 | ||
| US5270832A (en) * | 1990-03-14 | 1993-12-14 | C-Cube Microsystems | System for compression and decompression of video data using discrete cosine transform and coding techniques |
| ATE154485T1 (de) | 1990-03-15 | 1997-06-15 | Thomson Multimedia Sa | Digitale bildverarbeitung mit filterung der blockkanten |
| JPH0787331B2 (ja) | 1990-05-07 | 1995-09-20 | 松下電器産業株式会社 | 圧電振動子及びその周波数調整方法 |
| US5146324A (en) | 1990-07-31 | 1992-09-08 | Ampex Corporation | Data compression using a feedforward quantization estimator |
| JPH04199981A (ja) | 1990-11-29 | 1992-07-21 | Nec Corp | 即時処理型1次元符号器 |
| US5253053A (en) * | 1990-12-31 | 1993-10-12 | Apple Computer, Inc. | Variable length decoding using lookup tables |
| US5266941A (en) | 1991-02-15 | 1993-11-30 | Silicon Graphics, Inc. | Apparatus and method for controlling storage of display information in a computer system |
| US5373513A (en) * | 1991-08-16 | 1994-12-13 | Eastman Kodak Company | Shift correction code system for correcting additive errors and synchronization slips |
| JP2670201B2 (ja) * | 1991-08-30 | 1997-10-29 | 富士写真フイルム株式会社 | 画像データ圧縮符号化装置および方法 |
| JP2586260B2 (ja) | 1991-10-22 | 1997-02-26 | 三菱電機株式会社 | 適応的ブロッキング画像符号化装置 |
| JP3134424B2 (ja) | 1991-10-31 | 2001-02-13 | ソニー株式会社 | 可変長符号化方法及び装置 |
| US5227878A (en) | 1991-11-15 | 1993-07-13 | At&T Bell Laboratories | Adaptive coding and decoding of frames and fields of video |
| JP2812446B2 (ja) | 1991-11-21 | 1998-10-22 | 三洋電機株式会社 | 画像符号化方式 |
| EP0547696B1 (fr) | 1991-12-18 | 1999-04-21 | Laboratoires D'electronique Philips S.A.S. | Système de transmission et/ou stockage de signaux correspondant à des images texturées |
| WO1993013603A1 (en) | 1991-12-23 | 1993-07-08 | Intel Corporation | Circuitry for decoding huffman codes |
| JPH05199422A (ja) | 1992-01-20 | 1993-08-06 | Fujitsu General Ltd | 画像伝送装置 |
| US6680975B1 (en) * | 1992-02-29 | 2004-01-20 | Samsung Electronics Co., Ltd. | Signal encoding and decoding system and method |
| US5227788A (en) | 1992-03-02 | 1993-07-13 | At&T Bell Laboratories | Method and apparatus for two-component signal compression |
| EP0559348A3 (en) * | 1992-03-02 | 1993-11-03 | AT&T Corp. | Rate control loop processor for perceptual encoder/decoder |
| CA2090052C (en) * | 1992-03-02 | 1998-11-24 | Anibal Joao De Sousa Ferreira | Method and apparatus for the perceptual coding of audio signals |
| KR950010913B1 (ko) | 1992-07-23 | 1995-09-25 | 삼성전자주식회사 | 가변장부호화 및 복호화시스템 |
| US5714950A (en) * | 1992-07-23 | 1998-02-03 | Samsung Electronics Co., Ltd. | System for variable-length-coding and variable-length-decoding digitaldata |
| JP3348310B2 (ja) | 1992-09-28 | 2002-11-20 | ソニー株式会社 | 動画像符号化方法および動画像符号化装置 |
| AU668762B2 (en) * | 1992-10-07 | 1996-05-16 | Nec Personal Computers, Ltd | Synchronous compression and reconstruction system |
| US5982437A (en) | 1992-10-26 | 1999-11-09 | Sony Corporation | Coding method and system, and decoding method and system |
| JP2959916B2 (ja) | 1992-10-28 | 1999-10-06 | 松下電器産業株式会社 | デジタル・ビデオ・コーダ用のバーサタイルなエスケープ・ラン・レベル・コーダ |
| KR0166722B1 (ko) | 1992-11-30 | 1999-03-20 | 윤종용 | 부호화 및 복호화방법 및 그 장치 |
| US5367629A (en) | 1992-12-18 | 1994-11-22 | Sharevision Technology, Inc. | Digital video compression system utilizing vector adaptive transform |
| US5467134A (en) | 1992-12-22 | 1995-11-14 | Microsoft Corporation | Method and system for compressing video data |
| US5535305A (en) | 1992-12-31 | 1996-07-09 | Apple Computer, Inc. | Sub-partitioned vector quantization of probability density functions |
| US5400075A (en) | 1993-01-13 | 1995-03-21 | Thomson Consumer Electronics, Inc. | Adaptive variable length encoder/decoder |
| JPH06217110A (ja) | 1993-01-20 | 1994-08-05 | Process Shizai Kk | 画像変換方法 |
| US5544286A (en) | 1993-01-29 | 1996-08-06 | Microsoft Corporation | Digital video data compression technique |
| TW224553B (en) | 1993-03-01 | 1994-06-01 | Sony Co Ltd | Method and apparatus for inverse discrete consine transform and coding/decoding of moving picture |
| US5376968A (en) * | 1993-03-11 | 1994-12-27 | General Instrument Corporation | Adaptive compression of digital video data using different modes such as PCM and DPCM |
| US5408234A (en) * | 1993-04-30 | 1995-04-18 | Apple Computer, Inc. | Multi-codebook coding process |
| US5717821A (en) | 1993-05-31 | 1998-02-10 | Sony Corporation | Method, apparatus and recording medium for coding of separated tone and noise characteristic spectral components of an acoustic sibnal |
| US5664057A (en) * | 1993-07-07 | 1997-09-02 | Picturetel Corporation | Fixed bit rate speech encoder/decoder |
| KR0155784B1 (ko) * | 1993-12-16 | 1998-12-15 | 김광호 | 영상데이타의 적응형 가변장 부호화/복호화방법 |
| KR970009408B1 (ko) | 1994-01-18 | 1997-06-13 | 대우전자 주식회사 | 인터/인트라 테이블 선택 회로 |
| JP3277677B2 (ja) * | 1994-04-01 | 2002-04-22 | ソニー株式会社 | 信号符号化方法及び装置、信号記録媒体、信号伝送方法、並びに信号復号化方法及び装置 |
| US5504591A (en) | 1994-04-25 | 1996-04-02 | Microsoft Corporation | System and method for compressing graphic images |
| US5457495A (en) | 1994-05-25 | 1995-10-10 | At&T Ipm Corp. | Adaptive video coder with dynamic bit allocation |
| US5748786A (en) | 1994-09-21 | 1998-05-05 | Ricoh Company, Ltd. | Apparatus for compression using reversible embedded wavelets |
| US6141446A (en) | 1994-09-21 | 2000-10-31 | Ricoh Company, Ltd. | Compression and decompression system with reversible wavelets and lossy reconstruction |
| US5881176A (en) | 1994-09-21 | 1999-03-09 | Ricoh Corporation | Compression and decompression with wavelet style and binary style including quantization by device-dependent parser |
| US6195465B1 (en) * | 1994-09-21 | 2001-02-27 | Ricoh Company, Ltd. | Method and apparatus for compression using reversible wavelet transforms and an embedded codestream |
| US5568167A (en) | 1994-09-23 | 1996-10-22 | C-Cube Microsystems, Inc. | System for providing antialiased video overlays |
| JP3474005B2 (ja) | 1994-10-13 | 2003-12-08 | 沖電気工業株式会社 | 動画像符号化方法及び動画像復号方法 |
| JPH08116263A (ja) | 1994-10-17 | 1996-05-07 | Fujitsu Ltd | データ処理装置及びデータ処理方法 |
| US5802213A (en) * | 1994-10-18 | 1998-09-01 | Intel Corporation | Encoding video signals using local quantization levels |
| DE69525836T2 (de) | 1994-11-04 | 2002-11-21 | Koninklijke Philips Electronics N.V., Eindhoven | Kodierung und dekodierung eines breitbandigen digitalen informationssignals |
| US5473376A (en) | 1994-12-01 | 1995-12-05 | Motorola, Inc. | Method and apparatus for adaptive entropy encoding/decoding of quantized transform coefficients in a video compression system |
| JPH08167852A (ja) | 1994-12-13 | 1996-06-25 | Fujitsu Ltd | データ圧縮方法及び装置 |
| US5654702A (en) | 1994-12-16 | 1997-08-05 | National Semiconductor Corp. | Syntax-based arithmetic coding for low bit rate videophone |
| JP3371590B2 (ja) | 1994-12-28 | 2003-01-27 | ソニー株式会社 | 高能率符号化方法及び高能率復号化方法 |
| JP2951861B2 (ja) | 1994-12-28 | 1999-09-20 | シャープ株式会社 | 画像符号化装置及び画像復号装置 |
| JPH08190764A (ja) | 1995-01-05 | 1996-07-23 | Sony Corp | ディジタル信号処理方法、ディジタル信号処理装置及び記録媒体 |
| JPH08205169A (ja) | 1995-01-20 | 1996-08-09 | Matsushita Electric Ind Co Ltd | 動画像符号化装置及び復号装置 |
| JP3238854B2 (ja) * | 1995-02-21 | 2001-12-17 | 富士通株式会社 | データ圧縮方法及びデータ圧縮装置、並びにデータ復元方法及びデータ復元装置 |
| US5574449A (en) * | 1995-02-24 | 1996-11-12 | Intel Corporation | Signal processing with hybrid variable-length and entropy encodidng |
| US5991451A (en) | 1995-03-23 | 1999-11-23 | Intel Corporation | Variable-length encoding using code swapping |
| US5884269A (en) | 1995-04-17 | 1999-03-16 | Merging Technologies | Lossless compression/decompression of digital audio data |
| US5864711A (en) | 1995-07-05 | 1999-01-26 | Microsoft Corporation | System for determining more accurate translation between first and second translator, and providing translated data to second computer if first translator is more accurate |
| US5825830A (en) | 1995-08-17 | 1998-10-20 | Kopf; David A. | Method and apparatus for the compression of audio, video or other data |
| US5995670A (en) | 1995-10-05 | 1999-11-30 | Microsoft Corporation | Simplified chain encoding |
| US5819215A (en) | 1995-10-13 | 1998-10-06 | Dobson; Kurt | Method and apparatus for wavelet based data compression having adaptive bit rate control for compression of digital audio or other sensory data |
| US5889891A (en) | 1995-11-21 | 1999-03-30 | Regents Of The University Of California | Universal codebook vector quantization with constrained storage |
| JP3283413B2 (ja) * | 1995-11-30 | 2002-05-20 | 株式会社日立製作所 | 符号化復号方法、符号化装置および復号装置 |
| US5956674A (en) * | 1995-12-01 | 1999-09-21 | Digital Theater Systems, Inc. | Multi-channel predictive subband audio coder using psychoacoustic adaptive bit allocation in frequency, time and over the multiple channels |
| JPH09162748A (ja) * | 1995-12-01 | 1997-06-20 | Fujitsu Ltd | データ符号化方法、データ復号方法、データ圧縮装置、データ復元装置、及びデータ圧縮・復元システム |
| US5831559A (en) * | 1996-01-24 | 1998-11-03 | Intel Corporation | Encoding/decoding video signals using multiple run-val mapping tables |
| US6957350B1 (en) | 1996-01-30 | 2005-10-18 | Dolby Laboratories Licensing Corporation | Encrypted and watermarked temporal and resolution layering in advanced television |
| US5675332A (en) * | 1996-02-01 | 1997-10-07 | Samsung Electronics Co., Ltd. | Plural-step chunk-at-a-time decoder for variable-length codes of Huffman type |
| US5682152A (en) | 1996-03-19 | 1997-10-28 | Johnson-Grace Company | Data compression using adaptive bit allocation and hybrid lossless entropy encoding |
| US5812971A (en) | 1996-03-22 | 1998-09-22 | Lucent Technologies Inc. | Enhanced joint stereo coding method using temporal envelope shaping |
| US6215910B1 (en) | 1996-03-28 | 2001-04-10 | Microsoft Corporation | Table-based compression with embedded coding |
| US5850482A (en) * | 1996-04-17 | 1998-12-15 | Mcdonnell Douglas Corporation | Error resilient method and apparatus for entropy coding |
| DE69718687T2 (de) | 1996-05-28 | 2003-05-22 | Matsushita Electric Industrial Co., Ltd. | Vorrichtung und verfahren zur bildvorhersage und -codierung/ -decodierung. |
| EP0855106A1 (en) * | 1996-06-28 | 1998-07-29 | Koninklijke Philips Electronics N.V. | High performance variable length decoder with two-word bit stream segmentation and related method |
| CN1097957C (zh) | 1996-07-03 | 2003-01-01 | 摩托罗拉公司 | 用于基于边界的自适应熵编码/解码的方法和装置 |
| DE19628292B4 (de) | 1996-07-12 | 2007-08-02 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Verfahren zum Codieren und Decodieren von Stereoaudiospektralwerten |
| DE19628293C1 (de) | 1996-07-12 | 1997-12-11 | Fraunhofer Ges Forschung | Codieren und Decodieren von Audiosignalen unter Verwendung von Intensity-Stereo und Prädiktion |
| JP3318825B2 (ja) * | 1996-08-20 | 2002-08-26 | ソニー株式会社 | デジタル信号符号化処理方法、デジタル信号符号化処理装置、デジタル信号記録方法、デジタル信号記録装置、記録媒体、デジタル信号伝送方法及びデジタル信号伝送装置 |
| US5828426A (en) | 1996-08-20 | 1998-10-27 | Samsung Electronics Co., Ltd. | Apparatus for decoding variable length coded data of both MPEG-1 and MPEG-2 standards |
| US5734340A (en) * | 1996-08-27 | 1998-03-31 | Symantech Corporation | Method and apparatus for storing run-intensive information in compact form |
| US6233017B1 (en) | 1996-09-16 | 2001-05-15 | Microsoft Corporation | Multimedia compression system with adaptive block sizes |
| US5748789A (en) | 1996-10-31 | 1998-05-05 | Microsoft Corporation | Transparent block skipping in object-based video coding systems |
| DE69720558T2 (de) | 1996-11-06 | 2004-03-04 | Matsushita Electric Industrial Co., Ltd., Kadoma | Methode zur Bilddekodierung mit Kodes variabler Länge |
| CN1179348C (zh) * | 1996-11-07 | 2004-12-08 | 皇家菲利浦电子有限公司 | 比特流信号的数据处理 |
| WO1998021830A2 (en) * | 1996-11-11 | 1998-05-22 | Philips Electronics N.V. | Data compression/expansion using a rice encoder/decoder |
| US5903231A (en) * | 1996-12-16 | 1999-05-11 | Vidicast Ltd. | System for encoding base N data using a multi-level coding scheme |
| JP3484310B2 (ja) | 1997-01-17 | 2004-01-06 | 松下電器産業株式会社 | 可変長符号器 |
| NL1005084C2 (nl) | 1997-01-24 | 1998-07-27 | Oce Tech Bv | Werkwijze voor het uitvoeren van een beeldbewerkingsoperatie op looplengte gecodeerde bitmaps. |
| JP3534577B2 (ja) | 1997-07-23 | 2004-06-07 | 日本電信電話株式会社 | 情報多重化方法、情報抽出方法及びそれらの装置 |
| US6038536A (en) * | 1997-01-31 | 2000-03-14 | Texas Instruments Incorporated | Data compression using bit change statistics |
| US6272175B1 (en) | 1997-02-13 | 2001-08-07 | Conexant Systems, Inc. | Video signal coding systems and processes using adaptive quantization |
| JPH10229340A (ja) | 1997-02-14 | 1998-08-25 | Nec Corp | サブバンド信号およびウエーブレット変換係数の符号化復号方式 |
| US6005980A (en) | 1997-03-07 | 1999-12-21 | General Instrument Corporation | Motion estimation and compensation of video object planes for interlaced digital video |
| US5974184A (en) | 1997-03-07 | 1999-10-26 | General Instrument Corporation | Intra-macroblock DC and AC coefficient prediction for interlaced digital video |
| FI114248B (fi) | 1997-03-14 | 2004-09-15 | Nokia Corp | Menetelmä ja laite audiokoodaukseen ja audiodekoodaukseen |
| US6728775B1 (en) | 1997-03-17 | 2004-04-27 | Microsoft Corporation | Multiple multicasting of multimedia streams |
| US6009387A (en) * | 1997-03-20 | 1999-12-28 | International Business Machines Corporation | System and method of compression/decompressing a speech signal by using split vector quantization and scalar quantization |
| US6404813B1 (en) * | 1997-03-27 | 2002-06-11 | At&T Corp. | Bidirectionally predicted pictures or video object planes for efficient and flexible video coding |
| US6259810B1 (en) | 1997-04-15 | 2001-07-10 | Microsoft Corporation | Method and system of decoding compressed image data |
| US5883633A (en) | 1997-04-15 | 1999-03-16 | Microsoft Corporation | Method and system of variable run length image encoding using sub-palette |
| JP3410629B2 (ja) * | 1997-05-21 | 2003-05-26 | シャープ株式会社 | 可変長符号化回路及び可変長符号化方法 |
| US6580834B2 (en) * | 1997-05-30 | 2003-06-17 | Competitive Technologies Of Pa, Inc. | Method and apparatus for encoding and decoding signals |
| EP0925651B1 (en) * | 1997-07-11 | 2004-10-13 | Koninklijke Philips Electronics N.V. | Transmission system using a variable length encoder |
| DE19730129C2 (de) | 1997-07-14 | 2002-03-07 | Fraunhofer Ges Forschung | Verfahren zum Signalisieren einer Rauschsubstitution beim Codieren eines Audiosignals |
| DE19730130C2 (de) * | 1997-07-14 | 2002-02-28 | Fraunhofer Ges Forschung | Verfahren zum Codieren eines Audiosignals |
| US6421738B1 (en) | 1997-07-15 | 2002-07-16 | Microsoft Corporation | Method and system for capturing and encoding full-screen video graphics |
| JP3884172B2 (ja) * | 1997-10-02 | 2007-02-21 | 株式会社東芝 | 可変長復号化装置および復号化方法 |
| EP1565004B1 (en) | 1997-10-23 | 2009-04-22 | Mitsubishi Denki Kabushiki Kaisha | Video bit stream decoder |
| US6493385B1 (en) | 1997-10-23 | 2002-12-10 | Mitsubishi Denki Kabushiki Kaisha | Image encoding method, image encoder, image decoding method, and image decoder |
| JPH11161782A (ja) | 1997-11-27 | 1999-06-18 | Seiko Epson Corp | カラー画像の符号化方法およびその符号化装置ならびにカラー画像の復号化方法およびその復号化装置 |
| US6111914A (en) | 1997-12-01 | 2000-08-29 | Conexant Systems, Inc. | Adaptive entropy coding in adaptive quantization framework for video signal coding systems and processes |
| US5946043A (en) | 1997-12-31 | 1999-08-31 | Microsoft Corporation | Video coding using adaptive coding of block parameters for coded/uncoded blocks |
| US6226407B1 (en) | 1998-03-18 | 2001-05-01 | Microsoft Corporation | Method and apparatus for analyzing computer screens |
| US6054943A (en) | 1998-03-25 | 2000-04-25 | Lawrence; John Clifton | Multilevel digital information compression based on lawrence algorithm |
| US6408029B1 (en) * | 1998-04-02 | 2002-06-18 | Intel Corporation | Method and apparatus for simplifying real-time data encoding |
| KR20010071519A (ko) * | 1998-06-19 | 2001-07-28 | 벤자민 에프 커틀러 | 제1 해상도를 가지는 인코딩된 이미지를 제2 해상도를가지는 이미지로 직접 디코딩하는 방법 및 장치 |
| JP3413720B2 (ja) | 1998-06-26 | 2003-06-09 | ソニー株式会社 | 画像符号化方法及び装置、並びに画像復号方法及び装置 |
| US6253165B1 (en) * | 1998-06-30 | 2001-06-26 | Microsoft Corporation | System and method for modeling probability distribution functions of transform coefficients of encoded signal |
| DE19840835C2 (de) | 1998-09-07 | 2003-01-09 | Fraunhofer Ges Forschung | Vorrichtung und Verfahren zum Entropiecodieren von Informationswörtern und Vorrichtung und Verfahren zum Decodieren von Entropie-codierten Informationswörtern |
| JP3711762B2 (ja) | 1998-09-16 | 2005-11-02 | 富士ゼロックス株式会社 | 画像符号化装置および方法 |
| US6420980B1 (en) | 1998-10-06 | 2002-07-16 | Matsushita Electric Industrial Co., Ltd. | Lossless compression encoding method and device, and lossless compression decoding method and device |
| US6233359B1 (en) | 1998-10-29 | 2001-05-15 | Seiko Epson Corporation | File size bounded JPEG transcoder (FSBJT) |
| US6404931B1 (en) | 1998-12-14 | 2002-06-11 | Microsoft Corporation | Code book construction for variable to variable length entropy encoding |
| US6300888B1 (en) | 1998-12-14 | 2001-10-09 | Microsoft Corporation | Entrophy code mode switching for frequency-domain audio coding |
| US6377930B1 (en) | 1998-12-14 | 2002-04-23 | Microsoft Corporation | Variable to variable length entropy encoding |
| US6223162B1 (en) * | 1998-12-14 | 2001-04-24 | Microsoft Corporation | Multi-level run length coding for frequency-domain audio coding |
| US6100825A (en) | 1998-12-31 | 2000-08-08 | Microsoft Corporation | Cluster-based data compression system and method |
| JP3434260B2 (ja) | 1999-03-23 | 2003-08-04 | 日本電信電話株式会社 | オーディオ信号符号化方法及び復号化方法、これらの装置及びプログラム記録媒体 |
| US6678419B1 (en) | 1999-03-26 | 2004-01-13 | Microsoft Corporation | Reordering wavelet coefficients for improved encoding |
| DE60012717T2 (de) | 1999-03-26 | 2005-01-13 | Microsoft Corp., Redmond | Bildcodierung unter verwendung einer umordnung von wavelet-koeffizienten |
| US6477280B1 (en) | 1999-03-26 | 2002-11-05 | Microsoft Corporation | Lossless adaptive encoding of finite alphabet data |
| US7050503B2 (en) | 1999-04-17 | 2006-05-23 | Pts Corporation | Segment-based encoding system using residue coding by basis function coefficients |
| JP3323175B2 (ja) | 1999-04-20 | 2002-09-09 | 松下電器産業株式会社 | 符号化装置 |
| US6573915B1 (en) | 1999-12-08 | 2003-06-03 | International Business Machines Corporation | Efficient capture of computer screens |
| US6771824B1 (en) | 1999-12-28 | 2004-08-03 | Lucent Technologies Inc. | Adaptive variable length decoding method |
| JP3419371B2 (ja) | 1999-12-28 | 2003-06-23 | 松下電器産業株式会社 | 符号長計算装置、及び符号化装置 |
| US6567781B1 (en) * | 1999-12-30 | 2003-05-20 | Quikcat.Com, Inc. | Method and apparatus for compressing audio data using a dynamical system having a multi-state dynamical rule set and associated transform basis function |
| JP3603000B2 (ja) | 2000-02-01 | 2004-12-15 | カネボウ株式会社 | ハフマン符号化装置、ハフマン符号化方法およびハフマン符号化処理プログラムを記録した記録媒体 |
| US6552673B2 (en) | 2000-02-25 | 2003-04-22 | Texas Instruments Incorporated | Efficient table access for reversible variable length code decoding using a hash function |
| US6771828B1 (en) | 2000-03-03 | 2004-08-03 | Microsoft Corporation | System and method for progessively transform coding digital data |
| JP3573735B2 (ja) * | 2000-05-23 | 2004-10-06 | 松下電器産業株式会社 | 可変長符号化方法および可変長符号化装置 |
| US6542863B1 (en) | 2000-06-14 | 2003-04-01 | Intervideo, Inc. | Fast codebook search method for MPEG audio encoding |
| US6373411B1 (en) | 2000-08-31 | 2002-04-16 | Agere Systems Guardian Corp. | Method and apparatus for performing variable-size vector entropy coding |
| JP4508490B2 (ja) | 2000-09-11 | 2010-07-21 | パナソニック株式会社 | 符号化装置および復号化装置 |
| US6961685B2 (en) * | 2000-09-19 | 2005-11-01 | Sy Bon K | Probability model selection using information-theoretic optimization criterion |
| WO2002035849A1 (en) * | 2000-10-24 | 2002-05-02 | Eyeball Networks Inc. | Three-dimensional wavelet-based scalable video compression |
| US6735339B1 (en) * | 2000-10-27 | 2004-05-11 | Dolby Laboratories Licensing Corporation | Multi-stage encoding of signal components that are classified according to component value |
| US6373412B1 (en) | 2000-12-15 | 2002-04-16 | International Business Machines Corporation | Fast JPEG huffman encoding and decoding |
| JP3580251B2 (ja) | 2000-12-27 | 2004-10-20 | 日本電気株式会社 | データ圧縮装置及び圧縮方法並びにその制御プログラムを記録した記録媒体 |
| US7274671B2 (en) | 2001-02-09 | 2007-09-25 | Boly Media Communications, Inc. | Bitwise adaptive encoding using prefix prediction |
| CN100456640C (zh) * | 2001-06-07 | 2009-01-28 | 日本胜利株式会社 | 调制和解调方法与装置、信息传输方法和装置 |
| US6650784B2 (en) | 2001-07-02 | 2003-11-18 | Qualcomm, Incorporated | Lossless intraframe encoding using Golomb-Rice |
| US6587057B2 (en) * | 2001-07-25 | 2003-07-01 | Quicksilver Technology, Inc. | High performance memory efficient variable-length coding decoder |
| US20030033143A1 (en) * | 2001-08-13 | 2003-02-13 | Hagai Aronowitz | Decreasing noise sensitivity in speech processing under adverse conditions |
| US6856701B2 (en) | 2001-09-14 | 2005-02-15 | Nokia Corporation | Method and system for context-based adaptive binary arithmetic coding |
| US6959116B2 (en) | 2001-09-18 | 2005-10-25 | Emc Corporation | Largest magnitude indices selection for (run, level) encoding of a block coded picture |
| EP1413139B1 (en) | 2001-11-22 | 2011-10-12 | Panasonic Corporation | Variable length coding method and variable length decoding method |
| US6825847B1 (en) | 2001-11-30 | 2004-11-30 | Nvidia Corporation | System and method for real-time compression of pixel colors |
| US7165028B2 (en) * | 2001-12-12 | 2007-01-16 | Texas Instruments Incorporated | Method of speech recognition resistant to convolutive distortion and additive distortion |
| US7027982B2 (en) * | 2001-12-14 | 2006-04-11 | Microsoft Corporation | Quality and rate control strategy for digital audio |
| US6934677B2 (en) * | 2001-12-14 | 2005-08-23 | Microsoft Corporation | Quantization matrices based on critical band pattern information for digital audio wherein quantization bands differ from critical bands |
| CN101448162B (zh) | 2001-12-17 | 2013-01-02 | 微软公司 | 处理视频图像的方法 |
| KR100468844B1 (ko) | 2002-01-07 | 2005-01-29 | 삼성전자주식회사 | 정지영상 및 동영상을 부호화/복호화하기 위한변환계수들의 최적주사방법 |
| US7155065B1 (en) | 2002-03-27 | 2006-12-26 | Microsoft Corporation | System and method for progressively transforming and coding digital data |
| US7139703B2 (en) * | 2002-04-05 | 2006-11-21 | Microsoft Corporation | Method of iterative noise estimation in a recursive framework |
| US6653955B1 (en) * | 2002-05-09 | 2003-11-25 | Lsi Logic Corporation | Multi-symbol variable length code decoder |
| GB2388502A (en) | 2002-05-10 | 2003-11-12 | Chris Dunn | Compression of frequency domain audio signals |
| US7016547B1 (en) | 2002-06-28 | 2006-03-21 | Microsoft Corporation | Adaptive entropy encoding/decoding for screen capture content |
| KR100846778B1 (ko) * | 2002-07-16 | 2008-07-16 | 삼성전자주식회사 | 복수개의 주사 패턴을 이용한 부호화 방법, 복호화 방법,및 그 장치 |
| DE10236694A1 (de) * | 2002-08-09 | 2004-02-26 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Vorrichtung und Verfahren zum skalierbaren Codieren und Vorrichtung und Verfahren zum skalierbaren Decodieren |
| US7299190B2 (en) * | 2002-09-04 | 2007-11-20 | Microsoft Corporation | Quantization and inverse quantization for audio |
| US7502743B2 (en) * | 2002-09-04 | 2009-03-10 | Microsoft Corporation | Multi-channel audio encoding and decoding with multi-channel transform selection |
| US7328150B2 (en) * | 2002-09-04 | 2008-02-05 | Microsoft Corporation | Innovations in pure lossless audio compression |
| US7424434B2 (en) * | 2002-09-04 | 2008-09-09 | Microsoft Corporation | Unified lossy and lossless audio compression |
| US7536305B2 (en) * | 2002-09-04 | 2009-05-19 | Microsoft Corporation | Mixed lossless audio compression |
| ATE543178T1 (de) * | 2002-09-04 | 2012-02-15 | Microsoft Corp | Entropische kodierung mittels anpassung des kodierungsmodus zwischen niveau- und lauflängenniveau-modus |
| US7433824B2 (en) * | 2002-09-04 | 2008-10-07 | Microsoft Corporation | Entropy coding by adapting coding between level and run-length/level modes |
| US6795584B2 (en) | 2002-10-03 | 2004-09-21 | Nokia Corporation | Context-based adaptive variable length coding for adaptive block transforms |
| AU2003290536A1 (en) | 2002-10-23 | 2004-05-13 | Divxnetworks, Inc. | Method and system for supercompression of compressed digital video |
| US6646578B1 (en) | 2002-11-22 | 2003-11-11 | Ub Video Inc. | Context adaptive variable length decoding system and method |
| US7403561B2 (en) | 2003-04-04 | 2008-07-22 | Avid Technology, Inc. | Fixed bit rate, intraframe compression and decompression of video |
| US7324927B2 (en) * | 2003-07-03 | 2008-01-29 | Robert Bosch Gmbh | Fast feature selection method and system for maximum entropy modeling |
| US7724827B2 (en) | 2003-09-07 | 2010-05-25 | Microsoft Corporation | Multi-layer run level encoding and decoding |
| CN1214649C (zh) * | 2003-09-18 | 2005-08-10 | 中国科学院计算技术研究所 | 用于视频预测残差系数编码的熵编码方法 |
| US7460990B2 (en) * | 2004-01-23 | 2008-12-02 | Microsoft Corporation | Efficient coding of digital media spectral data using wide-sense perceptual similarity |
| US7454076B2 (en) * | 2004-06-15 | 2008-11-18 | Cisco Technology, Inc. | Hybrid variable length coding method for low bit rate video coding |
| US7852916B2 (en) | 2004-06-27 | 2010-12-14 | Apple Inc. | Efficient use of storage in encoding and decoding video data streams |
| KR100668302B1 (ko) | 2004-07-28 | 2007-01-12 | 삼성전자주식회사 | 비디오 디코더/엔코더에서의 메모리 맵핑 장치 및 그 방법 |
| KR100664932B1 (ko) | 2004-10-21 | 2007-01-04 | 삼성전자주식회사 | 비디오 코딩 방법 및 장치 |
| US7809064B2 (en) | 2004-11-15 | 2010-10-05 | Industrial Technology Research Institute | Systems and methods of flexible power management applicable to digital broadcasting |
| US20060176959A1 (en) | 2005-02-07 | 2006-08-10 | Paul Lu | Method and system for encoding variable length code (VLC) in a microprocessor |
| US8422546B2 (en) | 2005-05-25 | 2013-04-16 | Microsoft Corporation | Adaptive video encoding using a perceptual model |
| WO2007002468A2 (en) | 2005-06-23 | 2007-01-04 | 1Stworks Corporation | Modeling for enumerative encoding |
| US7630882B2 (en) * | 2005-07-15 | 2009-12-08 | Microsoft Corporation | Frequency segmentation to obtain bands for efficient coding of digital media |
| US7562021B2 (en) * | 2005-07-15 | 2009-07-14 | Microsoft Corporation | Modification of codewords in dictionary used for efficient coding of digital media spectral data |
| US7684981B2 (en) * | 2005-07-15 | 2010-03-23 | Microsoft Corporation | Prediction of spectral coefficients in waveform coding and decoding |
| US7546240B2 (en) * | 2005-07-15 | 2009-06-09 | Microsoft Corporation | Coding with improved time resolution for selected segments via adaptive block transformation of a group of samples from a subband decomposition |
| US7693709B2 (en) * | 2005-07-15 | 2010-04-06 | Microsoft Corporation | Reordering coefficients for waveform coding or decoding |
| US7599840B2 (en) * | 2005-07-15 | 2009-10-06 | Microsoft Corporation | Selectively using multiple entropy models in adaptive coding and decoding |
| US7372378B2 (en) | 2005-12-01 | 2008-05-13 | Nvidia Corporation | Efficient decoding of n-tuple variable bit length symbols |
| JP2007300389A (ja) | 2006-04-28 | 2007-11-15 | Victor Co Of Japan Ltd | 画像符号化装置および画像符号化プログラム |
| US9070178B2 (en) * | 2006-08-11 | 2015-06-30 | Siemens Product Lifecycle Management Software Inc. | Method and system for organizing topology elements for better compression |
| US7756350B2 (en) | 2006-11-13 | 2010-07-13 | Global Ip Solutions, Inc. | Lossless encoding and decoding of digital data |
| US7761290B2 (en) * | 2007-06-15 | 2010-07-20 | Microsoft Corporation | Flexible frequency and time partitioning in perceptual transform coding of audio |
| US20080317364A1 (en) | 2007-06-25 | 2008-12-25 | Augusta Technology, Inc. | Methods for determining neighboring locations for partitions of a video stream |
| US7885819B2 (en) * | 2007-06-29 | 2011-02-08 | Microsoft Corporation | Bitstream syntax for multi-process audio decoding |
| US8406307B2 (en) | 2008-08-22 | 2013-03-26 | Microsoft Corporation | Entropy coding/decoding of hierarchically organized data |
| DE102010036672B4 (de) | 2010-07-28 | 2022-12-08 | Dr. Ing. H.C. F. Porsche Aktiengesellschaft | Cabriolet-Fahrzeug |
| US8278779B2 (en) | 2011-02-07 | 2012-10-02 | General Electric Company | System and method for providing redundant power to a device |
-
2003
- 2003-09-03 AT AT10180949T patent/ATE543178T1/de active
- 2003-09-03 EP EP10180949A patent/EP2267698B1/en not_active Expired - Lifetime
- 2003-09-03 ES ES06021094T patent/ES2334934T3/es not_active Expired - Lifetime
- 2003-09-03 DK DK10181047.1T patent/DK2282310T3/da active
- 2003-09-03 DK DK03020015T patent/DK1400954T3/da active
- 2003-09-03 ES ES03020015T patent/ES2297083T3/es not_active Expired - Lifetime
- 2003-09-03 EP EP03020015A patent/EP1400954B1/en not_active Expired - Lifetime
- 2003-09-03 AT AT03020015T patent/ATE381090T1/de not_active IP Right Cessation
- 2003-09-03 EP EP06021094A patent/EP1734511B1/en not_active Expired - Lifetime
- 2003-09-03 ES ES10181047T patent/ES2378462T3/es not_active Expired - Lifetime
- 2003-09-03 AT AT06021094T patent/ATE449405T1/de not_active IP Right Cessation
- 2003-09-03 DE DE60317982T patent/DE60317982T2/de not_active Expired - Lifetime
- 2003-09-03 DE DE20321883U patent/DE20321883U1/de not_active Expired - Lifetime
- 2003-09-03 EP EP08017491A patent/EP2006840B1/en not_active Expired - Lifetime
- 2003-09-03 AT AT10181047T patent/ATE543179T1/de active
- 2003-09-03 PT PT10181047T patent/PT2282310E/pt unknown
- 2003-09-03 EP EP10181047A patent/EP2282310B1/en not_active Expired - Lifetime
- 2003-09-03 DE DE60330198T patent/DE60330198D1/de not_active Expired - Lifetime
- 2003-09-03 ES ES08017491T patent/ES2388942T3/es not_active Expired - Lifetime
-
2008
- 2008-05-16 US US12/122,553 patent/US7822601B2/en not_active Expired - Lifetime
- 2008-05-27 US US12/127,707 patent/US7840403B2/en not_active Expired - Lifetime
-
2010
- 2010-10-19 US US12/907,848 patent/US8090574B2/en not_active Expired - Lifetime
-
2011
- 2011-11-29 US US13/306,761 patent/US8712783B2/en not_active Expired - Lifetime
-
2014
- 2014-03-31 US US14/231,415 patent/US9390720B2/en not_active Expired - Fee Related
Also Published As
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2297083T3 (es) | Codificacion entropica por adaptacion de la codificacion entre modos por longitud de ejecucion y por nivel. | |
| US7433824B2 (en) | Entropy coding by adapting coding between level and run-length/level modes | |
| JP5688861B2 (ja) | レベル・モードとラン・レングス/レベル・モードの間での符号化を適応させるエントロピー符号化 | |
| JP5085543B2 (ja) | 適応コーディングおよびデコーディングでの複数のエントロピモデルの選択的使用 | |
| ES2627212T3 (es) | Modificación de palabras de código en diccionario usado para codificación eficaz de datos espectrales de medio digital | |
| KR101353216B1 (ko) | 팩토리얼 펄스 코더를 위한 산술 인코딩 | |
| CN100489965C (zh) | 音频编码系统 | |
| JPWO2002052732A1 (ja) | 符号化装置および復号装置 | |
| HK1154302B (en) | Entropy coding by adapting coding between level and run-length/level modes | |
| HK1152790B (en) | Entropy coding by adapting coding between level and run-length/level modes |