ES2341357T3 - Procedimiento y sistemas para la prevencion de la emulacion de codigo inicial y de relleno de datos. - Google Patents

Procedimiento y sistemas para la prevencion de la emulacion de codigo inicial y de relleno de datos. Download PDF

Info

Publication number
ES2341357T3
ES2341357T3 ES06021437T ES06021437T ES2341357T3 ES 2341357 T3 ES2341357 T3 ES 2341357T3 ES 06021437 T ES06021437 T ES 06021437T ES 06021437 T ES06021437 T ES 06021437T ES 2341357 T3 ES2341357 T3 ES 2341357T3
Authority
ES
Spain
Prior art keywords
data
bits
initial code
byte
bytes
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
Application number
ES06021437T
Other languages
English (en)
Inventor
Gary J. Sullivan
Stephen J. Estrop
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Application granted granted Critical
Publication of ES2341357T3 publication Critical patent/ES2341357T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/23424Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving splicing one content stream with another content stream, e.g. for inserting or substituting an advertisement
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/02Details
    • H04J3/06Synchronising arrangements
    • H04J3/07Synchronising arrangements using pulse stuffing for systems with different or fluctuating information rates or bit rates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44016Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving splicing one content stream with another content stream, e.g. for substituting a video clip
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8455Structuring of content, e.g. decomposing content into time segments involving pointers to the content, e.g. pointers to the I-frames of the video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/02Details
    • H04J3/06Synchronising arrangements
    • H04J3/0602Systems characterised by the synchronising information used
    • H04J3/0605Special codes used as synchronising signal

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Error Detection And Correction (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Communication Control (AREA)
  • Debugging And Monitoring (AREA)
  • Television Signal Processing For Recording (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Accessory Devices And Overall Control Thereof (AREA)
  • Sewing Machines And Sewing (AREA)
  • Storage Device Security (AREA)
  • Closed-Circuit Television Systems (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

En un descodificador, un procedimiento que comprende: el relleno de una carga útil de datos en un flujo de datos con uno o más bits de relleno; estando el procedimiento caracterizado por: la inserción de uno o más bits de relleno después de la carga útil de datos en los datos rellenados, en el que la inserción de los uno o más bits de relleno incluye: la inserción (202) de un bit de 1 después de la carga útil de datos; la inserción (206) de cualquier bit de 0 después del bit de 1, en el que el número de bits insertados varía dependiendo del número de bits existentes en la carga útil de datos, de manera que los datos rellenados consisten en un número entero de bytes (204) que finaliza con un byte de no cero que incluye los uno o más bits de relleno y de tal manera que el byte de no cero que incluye los uno o más bits de relleno difiere de un primer byte de un código inicial y, de esta forma, facilita la prevención de la emulación del código inicial; comprendiendo el procedimiento la inserción (208) uno o más bytes iguales a 0 x 00 después del byte de no cero que finaliza los datos rellenados y antes del código inicial.

Description

Procedimiento y sistemas para la prevención de la emulación de código inicial y de relleno de datos.
La presente invención está relacionada con los procedimientos y sistemas para la prevención de la emulación de código inicial y de relleno de datos.
Los datos digitales son típicamente transmitidos desde algún tipo de transmisor hasta algún tipo de receptor. Los transmisores típicamente incluyen un codificador que codifica los datos de transmisión; y los receptores típicamente incluyen un descodificador que descodifica los datos que recibe. Hay diferentes tipos de datos digitales, como por ejemplo datos de vídeo, datos de audio, datos de audio/vídeo, datos de texto, datos de programas ejecutables por computadora, datos de archivos, información de bases de datos, y similares. Cuando los datos digitales son transmitidos, son típicamente transmitidos en algún tipo de canal. De manera equivalente, una memoria de computadora o cualquier dispositivo de almacenamiento o medio de almacenamiento puede ser considerado como canal de transmisión a los fines de la presente memoria.
Cuando los datos digitales son transmitidos, es importante poder encontrar unos puntos específicos dentro de los datos del canal. Esto se lleva a cabo con distintas finalidades, como por ejemplo para localizar puntos que posibiliten la recuperación de errores o pérdidas en la transmisión de los datos a través del canal, puntos que posibiliten el inicio del proceso de descodificación en una localización distinta del inicio del entero flujo, o puntos que posibiliten la búsqueda de diferentes puntos de datos que sean utilizados con diferentes propósitos. De esta forma, por ejemplo, en el lado del descodificador, los descodificadores y otros componentes que procesan datos digitales a menudo necesitan saber el contexto de los datos para que los datos puedan ser adecuadamente procesados. Esto no sería tan importante si uno fuera capaz de comenzar con el primer bit que fue enviado y el descodificador fuera capaz de ejecutar sin ningún error. En este situación, en teoría, el descodificador podría simplemente efectuar el seguimiento de la información que estaba siendo enviada de acuerdo con el conocimiento de cuál es el formato de los datos. Por desgracia, esta situación ideal a menudo no se produce. Por el contrario, se producen errores y otras contingencias que representan otros tantos desafíos a los que diseñan y utilizan los sistemas que transmiten y reciben datos digitales. En algunos casos, como por ejemplo al sintonizar un flujo de difusión de datos en curso, el descodificador no puede comenzar por el principio de la transmisión de datos. La localización de los puntos mediante el análisis sintáctico del formato de datos puede, así mismo, requerir una cantidad considerable de un complejo procesamiento en un des-
codificador.
En muchos tipos de entornos de canales, a dichas cuestiones se les da respuesta mediante la provisión, dentro de los datos, de unos llamados marcadores de resincronización. Los marcadores de resincronización proporcionan un mecanismo mediante el cual un sistema puede comenzar su proceso de descodificación o recuperar un error. Por ejemplo, cuando los datos digitales son transmitidos en flujo continuo con una serie de bits o de bytes, la incorporación de los marcadores de resincronización en el flujo puede proporcionar un descodificador con un punto de referencia a partir del cual recuperarse en el caso de que se produzca un error en la transmisión.
Una manera de que los marcadores de resincronización puedan ser empleados se produce en el contexto de los códigos iniciales. Un código inicial es una cadena de bits o de bytes con un valor específico. En general, muchos sistemas tienden a acarrear bytes (por ejemplo, los Sistemas H.222.0/MPEG-2), de manera que los códigos iniciales pueden ser definidos como una cadena de bytes valorados de forma unívoca. La cadena unívoca de bytes proporciona un patrón cuya presencia indica un punto de resincronización. Un punto de resincronización típicamente indica el inicio o la frontera de una cierta cantidad de datos descodificables de manera independiente. Por ejemplo, en los datos de Vídeo del H.262/MPEG-2, los puntos de resincronización pueden indicar el inicio de una sección (esto es, una región descodificable de una imagen de manera independiente), el inicio de una imagen, el inicio de un GOP (esto es, "un Grupo de Imágenes" o una secuencia de imágenes descodificables de manera independiente), o el inicio de una nueva secuencia de vídeo. Los flujos de vídeo digitales pueden, así mismo, incluir los llamados datos auxiliares o complementarios los cuales pueden ir precedidos por un código inicial.
Algunas veces los códigos iniciales son utilizados no solo dentro de un flujo de datos, como por ejemplo un flujo de vídeo, sino que son utilizados por un nivel multiplex del sistema. Las características técnicas del Sistema H.222.0./MPEG-2 constituyen un ejemplo de un sistema que utiliza códigos iniciales y acarrea flujos de datos de vídeo intercalados con la información de nivel del sistema y de la información de audio.
Dado que los códigos iniciales pueden ser importantes en el sentido de que proporcionan unos puntos de resincronización dentro de un flujo de datos, es una buena idea evitar la emulación de los códigos iniciales en el flujo de datos en lugares que no están, de hecho, destinados a representar códigos iniciales.
Por ejemplo, considérese lo siguiente. Los códigos iniciales definen un patrón específico de bits o bytes que puede identificar el inicio de una nueva unidad de datos. Se están enviando datos arbitrarios entre los códigos iniciales, entonces es posible que los datos arbitrarios puedan, en y por sí mismos, contener el mismo patrón que el que se utiliza como código inicial. Por ejemplo, si se supone que los datos que están siendo acarreados son completamente aleatorios, entonces, si un código inicial tiene una longitud de K bits, la probabilidad de emular de manera accidental el código inicial al inicio de los bits en algún concreto emplazamiento de bits es de 1/2^{k}.
En algunos casos, puede considerarse que si el número de bits en el código inicial es grande, entonces puede ser bastante improbable que el código inicial sea emulado de forma accidental. Este es el caso que se produce con respecto a algunos formatos de datos de audio. Típicamente, estos formatos no utilizan una tasa de transmisión de bits muy alta medida en bits por segundo, de manera que no es probable que el código inicial sea accidentalmente emulado durante cualquier intervalo de tiempo específico. Con respecto a los datos de vídeo, este no es generalmente el caso, dado que el vídeo a menudo requiere una tasa de transmisión de bits mucho más alta.
En los estándares de codificación de vídeo importantes anteriores (quizás con una excepción), el formato de sintaxis de vídeo dentro de la carga útil de datos ha sido diseñado para evitar la emulación de código inicial. Esto es, si se sabe qué tipo de elementos de datos constituirán la sintaxis de vídeo, entonces se puede diseñar cuidadosamente la sintaxis, de manera que no puedan producirse códigos iniciales accidentales. Por ejemplo, un código inicial en los estándares de codificación de vídeo tradicionales comienza con una cadena larga de bits de 0, seguida por un bit de 1. Esta cadena larga puede contener 23 bits de 0 seguida por un bit de 1. Supóngase que la mayoría de los datos que son enviados son codificados por entropía utilizando códigos de longitud variable (a menudo designados de manera informal como códigos Huffman). Los códigos de longitud variable (VLCs) se definen con fines ejemplares en la presente memoria como códigos con estructura de árbol de profundidad variable que son utilizados parra su selección entre un conjunto de símbolos representados. Una técnica que utiliza VLCs de estructura de árbol binaria, tiene como fin asegurar que la trayectoria del árbol desde la raíz hasta cada hoja representa un símbolo válido siempre que incorpore un "1" en ella en alguna parte, y que la estructura de árbol no es demasiado profunda.
De esta manera, por ejemplo, si uno sabe que cada cadena de código de longitud variable no es más larga de 10 bits y que cada cadena referida tendrá al menos en ella un bit con un valor de 1, entonces se sabe que no hay manera de que una secuencia de datos codificados procedentes del VLC pueda nunca contener más de 18 bits consecutivos de valor cero. Esto es, el peor de los supuestos sería 1000000000 seguido por 0000000001. De esta forma, si se diseña la sintaxis de forma cuidadosa y se inspecciona la localización de cada bit de 0 y de cada bit valorado en 1 para determinar cuántos 0s pueden producirse en una fila, se puede utilizar un código inicial que contenga una cadena más larga de 0s de la que pueda producirse nunca en la sintaxis. Por ejemplo, la sintaxis puede ser diseñada para que una sintaxis válida nunca pueda contener 23 0s en un emplazamiento que no sea un código de inicio. De esta manera, cada aparición de 23 0s debe ser un código inicial y el descodificador puede ser capaz de detectar con precisión los códigos iniciales.
Aunque la operación descrita con anterioridad parece sencilla, la operación puede resultar un cometido bastante difícil porque hay que inspeccionar todos los posibles datos (al nivel de bits) que hay que enviar, en cualquier orden posible en el cual vayan a ser enviados para asegurar que un patrón de código inicial no pueda ser accidentalmente enviado. Esto constituye un arduo procedimiento de diseño de sintaxis tendente a producir errores.
Este proceso de diseño de inspección a nivel de bit describe, en términos generales, la forma en que muchas instrucciones de codificación de vídeo han sido diseñadas en el pasado (esto es, los sistemas H.261/MPGE-1, H.262/MPGE-2, la mayoría de los H.263 y el MPGE-4). Una excepción a ello es el Anexo E del H.263 de la Recomendación ITU-T, el cual utiliza una técnica llamada de codificación aritmética para generar unos bits comprimidos de manera algorítmica a partir de unas condiciones matemáticas. En este sistema, hay un proceso suplementario al final del codificador de entropía el cual inspecciona los bits que son generados y, en el lado del codificador, si hay demasiados 0s en una fila, un bit "marcador" (un bit de 1) es insertado antes de que se encuentre un número predeterminado de 0s. En el lado del descodificador, el descodificador cuenta los ceros y si encuentra el número crítico de ceros, sabe que ha encontrado un código inicial real. Si el descodificador solo ve un cero menos que el número crítico, sabe que el bit de 1 siguiente es un bit marcador insertado para evitar la emulación de código inicial, descarta ese bit, y toma los siguientes bits como continuación de los datos reales.
El problema de esta solución es que hace que el codificador y el descodificador inspeccionen y procesen los datos entrantes al nivel de bit. El análisis y el desplazamiento de la localización de los datos que están siendo procesados por las posiciones de un solo bit resulta difícil y puede sobrecargar de manera indeseable el descodificador. El desplazamiento de bit a bit es, así mismo, una operación exigente para el procesador.
El documento EP1111932 describe la inserción de elementos de sintaxis de bits de marcador en un flujo de bits.
El documento EP1018840 describe la inserción de bits de relleno al final de un paquete de vídeo para conseguir una alineación de bytes de acuerdo con el estándar MPEG-4. Los bits de relleno consisten en una especie de código 0111, donde el primer bit es un cero y los otros bits son 1.
El documento EP1 018 840 A describe un aparato y un procedimiento de generación de flujos codificados, un sistema y un procedimiento de transmisión de datos y un sistema y un procedimiento de edición. Un flujo de datos codificados es generado y representa una pluralidad de imágenes o tramas y presenta una pluralidad de capas que incluye una capa de imágenes en la cual la información del código de tiempo fijada a los datos originales se describe o inserta dentro de aquélla para cada imagen. Dicha información de código de tiempo puede ser insertada en un área de datos de usuario de la capa de imágenes existente en el flujo de datos codificados. En un VITC o un LTC de 72 bits, los 6 bits desde el tercero al octavo bit indican la porción de tramas del código de tiempo, el noveno bit indica la corrección de fase, y los 7 bits del décimo al décimo sexto bit indican la porción de segundos del código de tiempo. El carácter "1" de los bits decimoséptimo, trigésimocuarto, quincuagésimo primero y sexagésimo octavo es un bit marcador para prevenir la aparición sucesiva de 23 ceros. De esta forma, mediante la inserción de un bit marcador a intervalos predeterminados, puede prevenirse la emulación de código inicial. Los 16 bits desde el trigésimoquinto al quincuagésimo y los 16 bits desde el quincuagésimo segundo al sexagésimo séptimo se reservan para permitir que el usuario describa unos datos de usuario deseados. Los últimos cuatro bits son bit de relleno para alinear los
bytes.
Constituye el objetivo de la presente invención proporcionar un procedimiento y un sistema mejorados para prevenir la emulación de código inicial.
Este objetivo se consigue mediante el objeto de las reivindicaciones independientes.
Las formas de realización dependientes se definen en las reivindicaciones dependientes.
Se describen procedimientos y sistemas que proporcionan propuestas de prevención de la emulación de código inicial mediante operaciones llevadas a cabo con una granuralidad más alta que el nivel de bit. Operando en un nivel distinto del nivel de bit, puede potenciarse la eficacia del procesamiento. De acuerdo con una o más formas de realización, un procedimiento de prevención de la emulación de código inicial busca patrones de datos relacionados con porciones de datos de tamaño fijo mayores que los bits simples. Cuando se encuentra un patrón determinado, los datos de emulación de código inicial, son insertados para impedir la emulación de código inicial. Los datos insertados son mayores que un simple bit y, en algunas formas de realización, comprenden un byte. Cuando un descodificador descodifica datos que tenían insertados datos de prevención de la emulación de código inicial, puede fácilmente identificar los códigos iniciales legítimos y a continuación puede eliminar los datos de prevención de la emulación de código inicial para proporcionar los datos originales que se destinaron a ser
acarreadas.
Así mismo, se describe un procedimiento de relleno de datos, el cual posibilita que los datos de carga útil sean redondeados de tamaño hasta un número entero de tamaños de byte, y a continuación posibilita que los datos de relleno sean adicionados de un modo que sea fácilmente detectable por un descodificador.
\vskip1.000000\baselineskip
Breve descripción de los dibujos
La Fig. 1 es un diagrama que flujo que describe las etapas de un procedimiento de acuerdo con una forma de realización.
La Fig. 2 es un diagrama de flujo que describe las etapas de un procedimiento de acuerdo con una forma de realización.
La Fig. 3 es un diagrama de nivel alto de un entorno informático en conexión con el cual pueden ser implementadas una o más formas de realización.
\vskip1.000000\baselineskip
Descripción detallada de la forma de realización preferente Panorámica General
Los procedimientos y sistemas descritos a continuación proporcionan unas propuestas para la prevención de la emulación de código inicial a una granularidad más alta que el nivel de bit. Operando a un nivel más alto que el nivel de bit, puede potenciarse la eficacia del procesamiento. En el contexto de este documento, la operación a un nivel más alto que el nivel de bit pretende referirse a un proceso que busca unos patrones de datos relativos a unas porciones de datos de tamaño fijo mayores que los bits simples. Por ejemplo, las porciones de datos de tamaño fijo pueden incluir bytes (eso es 8 bits), "palabras" (esto es 16 bits), "dobles palabras" (32 bits) y similares. De esta manera, las técnicas inventivas pueden buscar patrones dentro y entre bytes, palabras y similares.
Así mismo, se describe un procedimiento de relleno de datos que posibilita que los datos de carga útil sean redondeados de tamaño hasta un número entero de tamaños de unidades de datos, como por ejemplo cantidades de byte, y posibilita que los datos de relleno sean añadidos de una manera que sea fácilmente detectable por un des-
codificador.
Así mismo, aunque los ejemplos ofrecidos a continuación se analizan en el contexto de datos de vídeo, debe apreciarse y entenderse que las técnicas inventivas pueden ser empleadas en conexión con cualquier tipo de datos que sean típicamente codificados y descodificados y con los cuales sea deseable o necesaria la prevención de relación de codificación de código inicial. Ejemplos de audio incluyen datos de audio, datos de audio/de vídeo, y similares.
La Fig. 1 es un diagrama de flujo que describe las etapas de un procedimiento de acuerdo con una forma de realización. El procedimiento puede ser implementado en cualquier hardware, software, firmware apropiado o combinaciones de éstos. En la forma de realización ilustrada y descrita, el procedimiento es implementado, al menos en parte, en software. Así mismo, el lector puede advertir que el procedimiento se ilustra ofreciendo dos ramas diferentes -
una designada "Codificador" y otra designada "Descodificador". La rama "Codificador" ilustra las etapas que son llevadas a cabo mediante o en conexión con un codificador. De modo similar, la rama "descodificador" ilustra las etapas que son llevadas a cabo mediante o en conexión con un descodificador.
La etapa 100 obtiene o genera una cantidad de datos destinados a su transmisión según un código inicial. Los datos comprenden cualquier dato apropiado. Ejemplos de tipos de datos incluyen, sin limitación, cantidades de datos de vídeo, de datos de audio, de datos de audio/vídeo, y similares. La etapa 101 fija de antemano los datos con código inicial. Esta etapa añade de modo efectivo los códigos iniciales a los datos obtenidos o generados en la etapa 100. La etapa 102 verifica y busca datos entrantes para uno o más patrones de porciones de datos de tamaño fijo. En la forma de realización ilustrada y descrita en el (los) patrón (patrones) que se busca(n) comprende(n) al menos dos porciones de datos de tamaño fijo y cada porción de datos individual comprende al menos dos bits. La etapa 104 determina si se ha encontrado un patrón. Si el patrón no se ha encontrado, el procedimiento se ramifica hasta la etapa 108 en la que los datos pueden ser transmitidos.
Si, por otro lado, el patrón se encuentra, la etapa 106 inserta los datos de prevención de la emulación de código inicial con respecto a los datos que contiene el patrón. En la forma de realización ilustrada y descrita, los supuestos concretos de datos de prevención de la emulación de código inicial comprenden más de 1 bit. De modo preferente, los datos de emulación de código inicial comprenden una cantidad de datos igual en número de bits a una porción de datos individuales de tamaño fijo. De esta manera, cuando la porción de datos de tamaño fijo comprende 8 bits (una cantidad de datos designada como 1 byte), los datos de prevención de la emulación de código inicial comprenden 8 bits. Después de que los datos de prevención de la emulación de código inicial son insertados, la etapa 108 transmite los datos. La etapa 110 determina si hay datos adicionales que deben ser transmitidos antes del siguiente código inicial. Si los hay, entonces el procedimiento retorna a la etapa 102 y avanza de acuerdo con lo descrito con anterioridad. En caso contrario, el procedimiento puede determinar en la etapa 111, si hay datos adicionales que haya que transmitir. Si los hay, el procedimiento se ramifica retornando a la etapa 100. En caso contrario, entonces el procedimiento puede terminar en la etapa 112.
A modo de disgresión, considérese lo siguiente. Adviértase que un ejemplo de empleo de esta técnica particular consiste en separar el código inicial en un "prefijo de código inicial" y un sufijo de "tipo de código inicial", donde el prefijo es una cadena única simple de valores y el sufijo indica el tipo de datos que sigue al código inicial. En particular, esta es la estructura de los códigos iniciales MPEG-2 y H.264/AVC y es la estructura utilizada en la sección con el título "Primer Procedimiento Ejemplar" posterior. Una forma incluso más general de uso que incluye la estructura de prefijo/sufijo como un caso especial, es la idea general de incorporar uno o más patrones de código inicial. A continuación se pueden, tener uno o más patrones de prevención de la emulación. En tanto en cuanto los diversos patrones de código inicial sean independientes de los distintos patrones de prevención de la emulación y que todos estos patrones sean soslayados en el procesamiento de los datos de carga útil, el planteamiento funcionará de acuerdo con ello. Así mismo, no se debe suponer necesariamente que los patrones de código inicial tengan todos la misma longitud. Esto debe ser importante en casos especiales, porque, por ejemplo, los empleos del H.264/AVC pueden ser interpretados como que utilizan códigos iniciales de longitudes múltiples.
En el lado del descodificador, considérese lo siguiente. Una vez que han sido insertados los datos de prevención de la emulación del código inicial por el codificador, pueden ser identificados o suprimidos o ignorados en algún punto para la interpretación adecuada de los demás datos. Así mismo, considérese que, cuando el descodificador recibe los datos transmitidos, puede buscar los datos de código legítimos. Una vez que encuentre los códigos iniciales legítimos, sabe dónde están situados los límites de los datos definidos por el código inicial. Ahora, el descodificador puede avanzar para buscar y suprimir los datos de prevención de la emulación del código inicial para que pueda seguir procesando los datos reales.
Específicamente, la etapa 114 recibe los datos transmitidos que han sido procesados por un codificador para prevenir la emulación de los códigos iniciales. La etapa 118 procesa los datos para encontrar los códigos iniciales. Una vez que se ha encontrado el código inicial y que es adecuadamente procesado (por ejemplo leído y desechado), la etapa 120 busca los datos para identificar los datos de prevención de la emulación del código inicial. Una vez que se encuentran los datos de prevención de la emulación del código inicial, la etapa 122 suprime los datos de prevención de la emulación del código inicial. Una vez que han sido retirados los datos de prevención del código inicial, los datos pueden ser procesados de una manera típica para el modo de datos que han sido recibidos. Por ejemplo, los datos pueden ser consumidos por un dispositivo de consumidor, como en la etapa 124.
\vskip1.000000\baselineskip
Primer Procedimiento Ejemplar
El procedimiento que va a ser descrito ilustra solo un ejemplo específico del procedimiento mostrado y descrito en la Fig. 1. En el procedimiento que va a ser descrito, un byte de unos datos de prevención de la emulación es insertado siempre que una cadena de bytes de N + 1 de datos de carga útil se corresponda, o bien con el entero prefijo del código inicial, o se corresponda con los primeros N bytes del prefijo de código inicial más el valor del byte de prevención de la emulación. Este procedimiento añade datos de forma menos frecuente que el procedimiento descrito en la sección titulada "Segundo Procedimiento Ejemplar" y, por tanto, reduce las exigencias de capacidad de transmisión para enviar los datos de carga útil.
La estructura de prefijo del código inicial del MPEG-2 comienza en una posición alineada a base de bytes y presenta 23 0s seguidos por un 1. Este prefijo de código inicial se expone directamente a continuación:
00000000 00000000 00000001
\vskip1.000000\baselineskip
Esta estructura puede ser generalizada como un patrón que comprenda un cierto número de N bytes que tengan el mismo valor, seguidos por algún otro byte que tenga un valor diferente. En el MPEG-2, se puede decir que N = 2, y que los primeros dos bytes son 0 (designados a continuación como "W"), y que el último byte es 1 (designado a continuación como "X"). De esta manera, el prefijo de código inicial tiene el siguiente patrón:
WWX
\vskip1.000000\baselineskip
Después de estos tres bytes, en el MPEG-2, otro byte sigue e identifica qué tipo de código inicial es. Este byte siguiente se designa como "Y". Esencialmente por tanto, el código inicial consiste en un prefijo de código inicial WWX, seguido por un byte Y que identifica el tipo de código inicial. El entero código inicial del MPEG-2 puede ser representado como:
WWXY
\vskip1.000000\baselineskip
El prefijo del código inicial (WWX) tiene un valor fijo, mientras que Y tiene una pluralidad de valores diferentes que indican el tipo de código inicial (por ejemplo, sección, imagen, GOP, secuencias, sistema, y simi-
lares).
De acuerdo con una forma de realización de la invención, los datos son procesados buscando el patrón WWX. Cuando el patrón WWX se encuentra, los datos de prevención de la emulación del código inicial son insertados para prevenir la emulación del código inicial. Aquí, los datos de prevención de la emulación del código inicial comprenden un byte Z que tiene un valor independiente de los valores de byte W y X. De esta manera, supóngase que el codificador está inspeccionando datos y advierte el patrón WWX. En respuesta al hallazgo de este patrón dentro de los datos, el codificador inserta un byte con un valor Z para proporcionar el siguiente patrón:
WWZX
\vskip1.000000\baselineskip
En este punto, el codificador ha asegurado que los datos de carga útil que deben ser transmitidos y procesados por el descodificador no emulan de manera accidental un código inicial o un prefijo de código inicial. Considérese ahora lo siguiente. Justo en el momento en que los datos de carga útil tuvieron la oportunidad de emular un prefijo del código inicial mediante la inclusión arbitraria del patrón WWX, los datos de carga útil tienen también la oportunidad de emular de manera arbitraria los datos que contienen los datos de prevención de la emulación del código inicial. Esto es, los datos de carga útil podrían contener inherentemente el patrón WWZX. Si este es el paso, y el codificador no fuera a hacer nada, cuando el descodificador intentara suprimir los datos de prevención de la emulación del código inicial, suprimirá el byte Z el cual en este caso es el dato real.
De acuerdo con ello, en las formas de realización descritas, el codificador está configurado para prevenir no solo que los datos de carga útil emulen los códigos iniciales o los prefijos de los códigos iniciales, sino que el codificador está configurado para prevenir que los datos emulen los patrones de los datos que resulten del empleo de los datos de emulación de los códigos iniciales. Específicamente, en este ejemplo, si el codificador identifica el patrón WWZ, inserta un byte que tiene un valor Z entre el segundo W y el Z para proporcionar el siguiente patrón (el byte insertado Z es el primer valor Z que aparece a continuación):
WWZZ
\vskip1.000000\baselineskip
Considérense ahora los datos procesados desde la perspectiva del descodificador. Si el descodificador ve cualquier patrón de bytes que comprenda WWZ seguido por o bien un valor Z o bien un X, sabe que el primer valor Z es un byte de prevención de la emulación que fue insertado por el codificador. De acuerdo con ello, el descodificador puede descartar el primer valor Z. De esta forma, en este ejemplo, hay dos situaciones cuando un byte de prevención de la emulación puede ser insertado. La primera situación se produce cuando los datos emularande modo accidental un código inicial o un prefijo del código inicial. La segunda situación se produciría cuando los datos emularan de manera accidental los datos que hubieran tenido insertados un byte de prevención de la
emulación.
En cualquier caso, el descodificador puede simplemente buscar el patrón adecuado, descartar el byte de prevención de la emulación, y procesar los datos como de costumbre.
\newpage
Para evitar el procesamiento expuesto de una manera más programática, considérese lo siguiente. Sobre el lado del codificador, para enviar un paquete P6 de B bytes, a partir de un prefijo de código inicial compuesto por N, o más bytes del mismo valor W y un último byte de un valor diferente X, seguido por un sufijo del tipo de código inicial de identificación de 1 byte con el valor Y, se opera el siguiente proceso de pseudocódigo el cual inserta unos bytes de prevención de la emulación con el valor Z (donde W, X, Y y Z tienen valores diferentes entre sí, y P [B - 1] no es igual a W), donde la cantidad de datos suplementarios que enviar para llenar el canal se especifica mediante
E:
\vskip1.000000\baselineskip
1
\vskip1.000000\baselineskip
En el pseudocódigo anterior, se supone que una función "enviar_byte()" opera la transmisión de una unidad de datos (proceso 108 de la Fig. 1).
\newpage
En el lado del descodificador, para recibir el paquete, supóngase que el descodificador ha ya encontrado, leído y descartado el prefijo de código inicial conocido el cual se compone de N o más bytes del mismo valor W y de un último byte de un valor diferente X. Supóngase, así mismo, que se desea leer el sufijo tipo código inicial de byte simple desconocido en una variable Y y leer el paquete de los datos de carga útil en una matriz P[ ] y determinar la cantidad de datos de carga útil y situar la identificación de la cantidad en una variable B, mientras se suprimen los bytes de prevención de la emulación que tengan el valor Z (donde W, X, Y y Z tienen valores diferentes entre sí, y P [B-1] no es igual a W):
2
En el pseudocódigo anterior, una función "recibir_byte()" se supone que opera la recepción de una unidad de datos y una función "más_datos()" se supone que determina si hay cualquier unidad de datos más que deba ser recibida (comprendiendo estas dos funciones el proceso 114 de la Fig. 1).
El procedimiento descrito anteriormente posibilita el relleno de una cantidad arbitraria de un valor W antes del código inicial. Son igualmente posibles otras formulaciones que fijen los prefijos del número del valor W en N.
\vskip1.000000\baselineskip
Segundo Procedimiento Ejemplar
El procedimiento que va a ser descrito ilustra un último ejemplo específico distinto del procedimiento mostrado y descrito en la Fig. 1. Aquí, el procedimiento inserta un byte de datos de prevención de la emulación siempre que una cadena de bytes N de datos de carga útil se corresponda con los primeros N bytes del prefijo del código inicial, con independencia del valor de los datos de carga útil subsecuentes. Utilizando la nomenclatura del ejemplo anterior, si los datos contienen el patrón "WW" seguido de cualquier cosa, el procedimiento inserta un byte de prevención de la emulación. De acuerdo con ello, cuando el codificador identifica el patrón WW, inserta un byte de prevención de la emulación para proporcionar el siguiente patrón:
WWZ
\vskip1.000000\baselineskip
La distinción entre el primer procedimiento descrito y el descrito inmediatamente antes es que el primer procedimiento examina los primeros bytes N +1 para determinar dónde se inserta un byte de prevención de la emulación, mientras que el procedimiento descrito inmediatamente antes examina los primeros bytes N.
El primer procedimiento reduce la cantidad de datos suplementarios que deben ser transmitidos, mientras que el procedimiento descrito inmediatamente antes opera utilizando reglas más simples. De esta manera, ambos procedimientos en conjunto ofrecen una elección entre reducir la cantidad de datos transmitidos y reducir la complejidad de la norma. Con el procedimiento descrito en primer término, la cantidad de datos se reduce con respecto a la del segundo procedimiento descrito. En el segundo procedimiento descrito, se utilizan reglas más simples.
Para ilustrar el procesamiento anterior de una manera más programática, considérese lo siguiente. En el lado del codificador, para enviar un paquete P [ ] de B bytes, empezando con un prefijo de código inicial, el cual se compone exactamente de N bytes del mismo valor W y un último byte de un valor diferente X, seguido por un sufijo tipo de código inicial de identificación de 1 byte con el valor Y, se opera el siguiente proceso de pseudocódigo el cual inserta unos bytes de prevención de la emulación con el valor Z (donde W, X, Y y Z tienen valores diferentes entre sí, y P
[B -1] no es igual a W).
\vskip1.000000\baselineskip
3
\vskip1.000000\baselineskip
En el pseudocódigo anterior, una función "enviar_byte()" se supone que opera la transmisión de una unidad de datos (proceso 108 de la Fig. 1).
\newpage
En el lado del descodificador, para recibir el paquete, supóngase que el descodificador ha ya encontrado, leído y descartado el prefijo de código inicial conocido, el cual se compone exactamente de N bytes del mismo valor W, y un último byte de un valor diferente X, y que se desea leer el sufijo tipo código inicial de byte simple desconocido en una variable Y para leer el paquete de datos de carga útil en una matriz P [ ] y determinar la cantidad de datos de carga útil y situar la indicación de la cantidad en una variable B, mientras se suprimen los bytes de prevención de la emulación que tengan el valor Z (donde W, X, Y y Z tienen valores diferentes entre sí, y P [B - 1] no es igual a W):
5
\vskip1.000000\baselineskip
En el pseudocódigo anterior una función "recibir_byte()" se supone que opera la recepción de una unidad de datos y una función "más_datos()" se supone que determina si hay alguna unidad más de datos que deba ser recibida (comprendiendo estas dos funciones el proceso 114 de la Fig. 1).
Se cree que los procedimientos descritos arriba ampliarán la cantidad de un número elevado de datos de carga útil de entrada aleatorios ideales mediante un factor, de modo aproximado, 1/256^{N} para el segundo procedimiento descrito 11256^{(N-1)} para el primer procedimiento descrito. Estas cantidades son pequeñas si N es de gran tamaño (por ejemplo, 2 o mayor, advirtiéndose que N = 2 para códigos iniciales del MPEG-2. El factor de expansión en el peor de los supuestos para la carga útil se cree que es 1/N para el segundo procedimiento descrito y 1/(N +1) para el primer procedimiento descrito. Si N se incrementa, el factor de expansión de carga útil se reduce tanto en el análisis estadístico como en el del peor de los supuestos (aunque la cantidad de datos utilizados por los propios códigos iniciales se incremente).
Debe apreciarse que el proceso de prevención de la emulación descrito con anterioridad no depende de saber cuántos datos existen en el paquete antes de empezar a enviarlos. Por tanto, ello no supone un retardo considerable.
Esta formulación del segundo procedimiento descrito parte de la base de que los bytes de prevención de la emulación insertados son bytes simples que tienen el valor Z. En su lugar es posible utilizar cualquier valor o valores múltiples o unas cadenas de valores para los datos de prevención de la emulación, siempre que el primer byte de datos insertados sea igual a W o X, lo que emularía un código inicial válido o parecería una continuación del inicio del prefijo.
Se puede incluso acarrear información en estos bytes de emulación de prevención (como por ejemplo una ID de trama de GOB de estilo H.263/número de secuencias de imágenes, o quizás fijar justo el MSB en "1" y utilizar los otros siete bytes para transmitir un carácter ASCII).
Si se considera lo que sucede al final del paquete en el lado del descodificador, se comprende que es más fácil controlar la operación si el último byte de la carga útil del paquete de datos no es W. Esto significa que el último byte enviado antes de un código inicial nunca necesitará ser un byte de prevención de la emulación y que un límite detectable puede ser situado por el descodificador entre el final de los datos de carga útil y el inicio de la secuencia de bytes igual a W para el siguiente código inicial. Forzar que este sea el caso puede, así mismo, permitir que se rellene con cualquier cantidad de bytes W (por ejemplo, bytes de cero) después del final de la carga útil y antes del siguiente código inicial sin perder el rastro de dónde se encuentra el final de la carga útil.
Relleno de Datos
Normalmente, en datos de vídeo, los datos que son enviados como carga útil de datos pueden no ser un número entero de bytes. Por ejemplo, se pueden tener 627 bits que deben ser enviados entre dos códigos iniciales. El nivel del sistema multiplex puede, sin embargo, operar en bytes. Ello es así para las condiciones del MPEG-2. Otras razones, como por ejemplo la posibilidad de detección de algunos patrones falsos del código inicial generados por errores de la transmisión o que posibiliten procesos de descodificación simples para el contenido de los datos del principio de la carga útil, pueden también justificar el deseo de que un paquete contenga un número entero de unidades de datos, como por ejemplo bytes. De esta forma, uno puede tener que enviar algunos datos más con el fin de acarrear los 627 bytes de datos. La cuestión entonces consiste en como entresacar los datos para que constituyan un número entero de bytes.
Hay otras situaciones en las que sería útil enviar datos de relleno suplementarios. Por ejemplo si un canal tiene una capacidad de 1 Megabyte/seg y la cantidad de datos de carga útil que debe ser enviada es de solo 900 Kbits/seg puede necesitarse o requerirse completar el canal con datos de relleno.
De acuerdo con una forma de realización, una técnica de relleno de datos permite que unos datos suplementarios sean añadidos al canal para, en esencia, rellenar los datos de carga útil.
La Fig. 2 es un diagrama de flujo que describe las etapas de un procedimiento de relleno de datos de acuerdo con una forma de realización en la cual los códigos iniciales se supone que empiezan con una cadena de bytes igual a cero. La etapa 200 establece la localización del final de los datos que se pretende enviar. La etapa 202 inserta un byte "1" después del último bit de los datos de carga útil. La etapa 204 determina el número de bits adicionales requerido para enviar un número entero de bytes. La etapa 206 inserta el número requerido de bits "0" después del bit insertado "1". La etapa 208 añade cualquier número deseado de bytes de los datos de relleno. Los datos de relleno pueden consistir en cualquier patrón de datos diseñado para evitar la confusión respecto de las localizaciones de los datos de carga útil auténticos y de los códigos iniciales intencionados. Esto se implementa típicamente mediante la inserción de bytes de valor "0".
A modo de ejemplo, considérese lo siguiente. Supóngase que deben ser enviados 627 bits. Aquí, la etapa 202 insertaría un bits de "1" después del bit sexagésimo vigésimo séptimo. La etapa 204 determinaría entonces que se requieren cuatro bits más para conseguir un número entero de bytes, aquí 79 bytes. De acuerdo con ello, la etapa 206 insertaría cuatro bits de "0" o 0000 después del bit "1" insertado. A continuación, después de establecer un número entero de bytes, la etapa 208 puede, si así se desea, añadir cualquier número deseado de bytes de datos de relleno. En este concreto ejemplo, pueden ser insertados bytes con un valor de 0. Los datos de relleno pueden ser utilizados simplemente como datos de relleno, o para otra finalidad, como por ejemplo contener información que un descodificador puede utilizar con alguna finalidad.
A continuación, considérese la situación en el descodificador. El descodificador recibe los datos rellenados y puede comenzar al final de los datos y apreciar hacia atrás los datos. Todos los bytes que el descodificador inicialmente vea serán los bytes 0 hasta que llegue al byte con el bit "1". El bit "1" muestra al codificador la localización del final de los datos de carga útil o reales. De esta manera, una vez que el descodificador encuentra el bit "1" que fue insertado, puede determinar con exactitud dónde terminan los datos reales.
De esta manera, las técnicas descritas con anterioridad pueden ser utilizadas para "redondear" el numero de bits que fueron enviados para que el numero de bits que son enviados consistan en un número entero de unidades de datos. Así mismo, estas técnicas pueden ser utilizadas para rellenar datos de relleno entre códigos iniciales que designen el inicio de los datos de carga útil.
Entorno Informático Ejemplar
La Fig. 3 ilustra un ejemplo de un entorno informático apropiado 300 sobre el cual puede ser implementado el sistema y los procedimientos relacionados descritos con anterioridad.
Debe apreciarse que el entorno informático 300 es solo un ejemplo de un entorno informático apropiado y no pretende proponer limitación alguna en cuanto al alcance de uso o funcionalidad del sistema de codificación/descodifica-
ción anteriormente descrito. Como tampoco debe ser interpretado en el sentido de que dependa de algún modo o exija cualquier requisito relacionado con uno cualquiera o con una combinación de los componentes ilustrados en el entorno informático ejemplar 300.
Las diversas formas de realización descritas pueden ser operativas con otros numerosos entornos o configuraciones de sistemas informáticos de propósito general o de propósito especial. Ejemplos de sistemas, entornos y/ o configuraciones informáticas que pueden ser apropiadas para su uso con el sistema de procesamiento de medios incluyen pero no se limitan a, las computadoras personales, las computadoras de servidor, los clientes simples, los clientes complejos, los dispositivos de mano o portátiles, los sistemas de microprocesador, los sistemas basados en microprocesador, los transdescodificadores, los sistemas electrónicos de consumidor programables, los PCs de red, las microcomputadoras, las grandes computadoras, los entornos informáticos distribuidos que incluyan cualquiera de los sistemas o dispositivos relacionados, y similares.
En ciertas implementaciones, el sistema y los procedimientos relacionados pueden ser perfectamente descritos en el contexto general de las instrucciones ejecutables por computadora, como por ejemplo, módulos de programa que sean ejecutados por una computadora. En general, los módulos de programa incluyen rutinas, programas, objetos, componentes, estructuras de datos, etc. que lleven a cabo tareas concretas o implementen tipos de datos abstractos concretos. Las formas de realización pueden, así mismo, llevarse a la práctica en entornos informáticos distribuidos en los que las tareas sean llevadas a cabo mediante dispositivos de procesamiento distantes que estén unidos mediante una red de comunicaciones. En un entorno informático distribuido, los módulos de programas pueden estar situados tanto en medios de almacenamiento informáticos locales como distantes, incluyendo dispositivos de almacenamiento de memoria. Los componentes del sistema informático descrito pueden ser utilizados para implementar un codificador y un descodificador que funcione de acuerdo con lo descrito con anterioridad.
De acuerdo con la forma de realización ilustrada de la Fig. 3, el sistema informático 300 se muestra incluyendo uno o más procesadores o unidades de procesamiento 302, una memoria 304 del sistema y un bus 306 que acopla los diversos componentes del sistema, incluyendo la memoria 304 del sistema, al procesador 302.
El bus 306 está destinado a representar uno o más de los diversos tipos de estructuras de bus, incluyendo un bus de memoria o controlador de memoria, un bus periférico, un puerto de gráficos acelerados, y un bus de procesador o local que utilice cualquiera de las diversas arquitecturas de bus. A modo de ejemplo, y no de limitación, dichas estructuras incluyen el bus de la Arquitectura Estándar del Sector Informático (ISA), el bus de la Arquitectura Microcanal (MCA), el bus de ISA Ampliado (EISA), el bus de la Asociación de Normalización de Electrónica de Vídeo (VESA) local, y el bus de Interconexión de Componentes Periféricos (PCI), también conocido como bus Mezzanine.
La computadora 300 típicamente incluye una diversidad de medios legibles por computadora. Dichos medios pueden consistir en cualquier medio disponible al que pueda accederse localmente y/o a distancia mediante la computadora 300, e incluye medios tanto volátiles como no volátiles, medios cambiables como no cambiables.
La Fig. 3, la memoria 304 del sistema incluye unos medios legibles por computadora en forma de memoria volátil como por ejemplo una memoria de acceso aleatorio (RAM) 310 y/o una memoria no volátil, como por ejemplo la memoria de solo lectura (ROM) 308. Un sistema básico de entrada/salida (BIOS) 312, que contiene las rutinas básicas que ayudan a transferir información entre los elementos situados dentro de la computadora 300, como por ejemplo durante la puesta en marcha, es almacenado en la ROM 308. La RAM 310 típicamente contiene datos y/o módulos de programas a los que puede inmediatamente accederse y/o ser actualmente operados mediante la(s) unidad(es) de procesamiento 302.
La computadora 300 puede, así mismo, incluir otros medios de almacenamiento por computadora cambiables/no cambiables, volátiles/no volátiles. Solo a modo de ejemplo, la Fig. 2 ilustra una unidad de disco duro 328 para su lectura a partir de o su escritura sobre unos medios magnéticos no cambiables, no volátiles (no mostrados y típicamente llamados "unidad de disco duro"), una unidad de disco magnético 330 para su lectura a partir de y su escritura sobre un disco magnético, no volátil 332 (por ejemplo, un "disco flexible"), y una unidad de disco óptico 334 para su lectura a partir de o su escritura sobre un disco óptico cambiable, no volátil 336, como por ejemplo un CD-ROM, un DVD-ROM, u otros medios ópticos. La unidad de disco duro 328, la unidad de disco magnético 330, y la unidad de disco óptico 334 están cada una conectada al bus 306 mediante una o más interfaces 326.
Las unidades y sus medios legibles por computadora asociados proporcionan un almacenamiento no volátil de las instrucciones legibles por computadora, estructuras de datos, módulos de programas, y otros datos destinados a la computadora 300. Aunque el entorno ejemplar descrito en la presente memoria emplea un disco duro 328, un disco magnético cambiable 332, y un disco óptico cambiable 336, debe apreciarse por parte de los expertos en la materia que pueden, así mismo, ser utilizados en el entorno operativo ejemplar otros tipos de medios legibles por computadora los cuales puedan almacenar datos a los que pueda accederse mediante una computadora, como por ejemplo casetes magnéticos, tarjetas de memoria Flash, discos de vídeo digitales, memorias de acceso aleatorio (RAMs), memorias de solo lectura (ROM), y similares.
Una pluralidad de módulos de programas pueden ser almacenados en el disco duro 328, el disco magnético 332, el disco óptico 336, la ROM 308 o la RAM 310, incluyendo, a modo de ejemplo y no de limitación, un sistema operativo 314, uno o más programas de aplicación 316 (por ejemplo, el programa de aplicación multimedia 324), otros módulos de programas 318 y los datos de programas 320. Un usuario puede introducir comandos e información en la computadora 300 a través de unos dispositivos de entrada, como por ejemplo un teclado 338 y un dispositivo de señalización 340 (como por ejemplo un "ratón"). Otros dispositivos de entrada pueden incluir un(os) dispositivo(s)
de audio/vídeo 353, un micrófono, una palanca, una tableta de juegos, una parabólica, un puerto serie, un escáner, o dispositivos similares (no mostrados). Estos y otros dispositivos de entrada están conectados a la(s) unidad(es) de procesamiento 302 a través de una(s) interfaz(ces) de entrada 342 que está(n) acoplada(s) al bus 306, pero pueden estar conectados por otras estructuras de interfaz y bus, como por ejemplo un puerto paralelo, un puerto para juegos o un bus serie universal (USB).
Un monitor 356 u otro tipo de dispositivo de visualización está también conectado al bus 306 por medio de una interfaz, como por ejemplo un adaptador de vídeo o una tarjeta de vídeo/gráficos 344. Además del monitor, las computadoras personales incluyen típicamente otros dispositivos de salida periféricos (no mostrados), como por ejemplo altavoces e impresoras, los cuales pueden estar conectados a través de la interfaz periférica de salida 346.
La computadora 300 puede operar en un entorno de conexión a red utilizando conexiones lógicas con una o más computadoras distantes, como por ejemplo una computadora distante 350. La computadora distante 350 puede incluir muchos o todos los elementos y características descritas en la presente memoria con respecto a la computadora.
Como se muestra en la Fig. 3, el sistema informático 300 está acoplado en comunicación con unos dispositivos distantes (por ejemplo, la computadora distante 350) a través de una red de área local (LAN) 351 y una red de área amplia general (WAN) 352. Dichos entornos de red son habituales en oficinas, redes informáticas de ámbito empresarial, intranets, e Internet.
Cuando se utiliza en un entorno informático de LAN, la computadora 300 está conectada a la LAN 351 mediante una interfaz o adaptador de red apropiado 348. Cuando se utilice en un entorno de conexión a red de WAN, la computadora 300 incluye un módem 354 u otro medio para establece comunicaciones a la WAN 352. El módem 354, el cual puede ser interno o externo, puede estar conectado al bus 306 del sistema por medio de la interfaz de entrada de usuario 342, o por otro mecanismo apropiado.
En un entorno de conexión a red, los módulos de programas relacionados con la computadora personal 300, o partes de éstos, pueden estar almacenados en un dispositivo de almacenamiento de memoria distante. A modo de ejemplo, y no de limitación, la Fig. 3 ilustra unos programas de aplicación distantes 316 que residen en un dispositivo de memoria de la computadora distante 350. Debe apreciarse que las conexiones a red mostradas y descritas son ejemplares y que pueden ser utilizados otros medios de establecer un enlace de comunicaciones entre las computadoras.
Conclusión
Algunos de los procedimientos y sistemas descritos en las líneas anteriores pueden proporcionar una prevención de la emulación de código inicial en un nivel de procesamiento distinto del nivel de bit. Esto es ventajoso porque puede aligerar las complejidades del procesamiento. Las técnicas descritas en el presente documento pueden ser empleadas en cualquier contexto apropiado, por ejemplo en conexión con una carga útil que incorpore el contenido creado mediante códigos de longitud variable, códigos Huffman y codificaciones aritméticas. Así mismo, algunas formas de realización proporcionan un método directo para el relleno de datos que pueda asegurar que un número entero de bytes sea enviado cuando se desee y que pueda posibilitar el envío de datos de relleno adicionales además de los datos con destino a los códigos iniciales, a los patrones de emulación de la prevención y a los datos de carga útil básicos.
Aunque la invención ha sido descrita en un lenguaje específico para las características estructurales y/ o las etapas metodológicas, debe entenderse que la invención definida en las reivindicaciones adjuntas, no está necesariamente limitada a las características o etapas específicas descritas. Por el contrario, las características y etapas específicas se divulgan como formas preferentes de reivindicar la invención reivindicada.

Claims (22)

  1. \global\parskip0.950000\baselineskip
    1. En un descodificador, un procedimiento que comprende:
    el relleno de una carga útil de datos en un flujo de datos con uno o más bits de relleno;
    estando el procedimiento caracterizado por:
    la inserción de uno o más bits de relleno después de la carga útil de datos en los datos rellenados, en el que la inserción de los uno o más bits de relleno incluye:
    la inserción (202) de un bit de 1 después de la carga útil de datos;
    la inserción (206) de cualquier bit de 0 después del bit de 1, en el que el número de bits insertados varía dependiendo del número de bits existentes en la carga útil de datos, de manera que los datos rellenados consisten en un número entero de bytes (204) que finaliza con un byte de no cero que incluye los uno o más bits de relleno y de tal manera que el byte de no cero que incluye los uno o más bits de relleno difiere de un primer byte de un código inicial y, de esta forma, facilita la prevención de la emulación del código inicial;
    comprendiendo el procedimiento la inserción (208) uno o más bytes iguales a 0 x 00 después del byte de no cero que finaliza los datos rellenados y antes del código inicial.
    \vskip1.000000\baselineskip
  2. 2. El procedimiento de la reivindicación 1 que comprende así mismo la inserción del código inicial en el flujo de datos después de los uno o más bytes iguales a 0 x 00.
  3. 3. El procedimiento de la reivindicación 1 en el que la carga útil de datos es una de varias cargas útiles de datos, comprendiendo así mismo el procedimiento, para cada uno de la o de las otras diversas cargas útiles de datos, la repetición para la otra carga útil de datos de la inserción de uno o más bits de relleno y la inserción de uno o más bytes iguales a 0 x 00, en el que el número de bits de cero insertados es diferente para al menos dos de las diversas cargas útiles de datos.
  4. 4. El procedimiento de cualquiera de las reivindicaciones 1 a 3, en el que el primer byte del código inicial está en un prefijo del código inicial.
  5. 5. El procedimiento de la reivindicación 4, en el que el prefijo del código inicial empieza con una cadena de varios consecutivos bits de cero, de manera que cualquier bit de cero de los uno o más bytes de relleno tienen el mismo valor que los bits del primer byte del código inicial, de manera que los uno o más bytes iguales a 0 x 00 tienen el mismo valor que el primer byte del código inicial.
  6. 6. El procedimiento de la reivindicación 5, en el que el prefijo del código inicial consiste en una cadena de varios consecutivos bits de cero seguida inmediatamente por un bit de cero.
  7. 7. El procedimiento de la reivindicación 5, en el que el prefijo del código de inicio consiste en dos bytes cada uno igual a 0 x 00 seguido inmediatamente por un byte igual a 0 x 01.
  8. 8. El procedimiento de cualquiera de las reivindicaciones 1 a 7, en el que los datos rellenados comprenden datos de vídeo.
  9. 9. El procedimiento de la reivindicación 1 en el que la prevención de la emulación del código inicial incluye:
    la búsqueda de la carga útil de datos para un patrón del código inicial; y
    si el patrón se encuentra, la inserción de un byte de prevención de la emulación del código inicial en la carga útil de datos para prevenir la emulación del código inicial.
    \vskip1.000000\baselineskip
  10. 10. En un descodificador, un procedimiento que comprende:
    la recepción de los datos rellenados que comprenden una carga útil de datos y uno o más bits de relleno; y
    la localización de la carga útil de datos en los datos rellenados;
    estando el procedimiento, caracterizado por:
    la detección de uno o más bytes iguales a 0 x 00 que fueron insertados (208) después de un byte de no cero que finaliza los datos rellenados y antes de un código inicial que comienza una carga útil de datos siguiente;
    \global\parskip1.000000\baselineskip
    la búsqueda para los uno o más bits de relleno en los datos rellenados, consistiendo los uno o más bits de relleno en:
    un bit de 1 que fue insertado (202)
    cualquiera de cero a siete bits de 0 que fueron insertados (206) después del bit de 1 para proporcionar un número entero de bytes en los datos rellenados, en el que el número de bits de cero insertados varía dependiendo del número de bits existente en la carga útil de datos, en el que los datos rellenados consisten en un número entero de bytes que termina con el byte de no cero que incluye los uno o más bits de relleno, y en el que el byte de no cero que incluye los uno o más bits de relleno difiere de un primer byte del código inicial y, de esta forma, facilita la prevención de la emulación del código inicial.
  11. 11. El procedimiento de la reivindicación 10 que comprende así mismo el descarte de uno o más bytes iguales a 0 x 00 y de los uno o más bits de relleno.
  12. 12. El procedimiento de las reivindicaciones 10 u 11 que comprende así mismo la recepción del código inicial después de los uno o más bytes iguales a 0 x 00.
  13. 13. El procedimiento de la reivindicación 10 en el que la carga útil de datos es una de las diversas cargas útiles de datos, comprendiendo así mismo el procedimiento, para cada una o más de las otras cargas útiles de datos de las diversas cargas útiles de datos, la repetición para las otras cargas útiles de datos la localización, la detección y la búsqueda, en el que el número de bits insertados es diferente para al menos dos de las diversas cargas útiles de datos.
  14. 14. El procedimiento de la reivindicación 13 en el que el primer byte del código inicial está en un prefijo del código inicial.
  15. 15. El procedimiento de la reivindicación 14 en el que el prefijo del código inicial comienza con una cadena de varios consecutivos bits de cero, en el que cualquier bit de cero de los uno o más bits de relleno tienen el mismo valor que los bits del primer byte del código inicial y los uno o más bytes iguales a 0 x 00 tienen el mismo valor que los bits del primer byte del código inicial.
  16. 16. El procedimiento de la reivindicación 15 en el que el prefijo del código inicial consiste en una cadena de varios consecutivos bits de cero seguida inmediatamente por un bit de 1.
  17. 17. El procedimiento de la reivindicación 16 en el que el prefijo de código del inicio consiste en 2 bytes cada uno igual a 0 x 00 seguido inmediatamente por un byte igual a 0 x 01.
  18. 18. El procedimiento de cualquiera de las reivindicaciones 10 a 17 en el que los datos rellenados comprenden datos de vídeo.
  19. 19. El procedimiento de la reivindicación 10 que comprende:
    la búsqueda de la carga útil de datos para un byte de emulación del código inicial que previene la emulación del código inicial; y
    si se encuentra el byte de emulación del código inicial, la supresión del byte de prevención de la emulación del código inicial respecto de la carga útil de datos.
    \vskip1.000000\baselineskip
  20. 20. Uno o más medios legibles por computadora que tienen almacenados en ellos unas inserciones ejecutables por computadora para determinar que una computadora lleve a cabo el procedimiento de una de las reivindicaciones 1 a 9 o 10 a 19.
  21. 21. Un codificador adaptado para llevar a cabo el procedimiento de cualquiera de las reivindicaciones 1 a 9.
  22. 22. Un descodificador adaptado para llevar a cabo el procedimiento de cualquiera de las reivindicaciones 10 a 19.
ES06021437T 2002-01-22 2003-01-22 Procedimiento y sistemas para la prevencion de la emulacion de codigo inicial y de relleno de datos. Expired - Lifetime ES2341357T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US35114302P 2002-01-22 2002-01-22
US351143 2003-01-27

Publications (1)

Publication Number Publication Date
ES2341357T3 true ES2341357T3 (es) 2010-06-18

Family

ID=37575975

Family Applications (1)

Application Number Title Priority Date Filing Date
ES06021437T Expired - Lifetime ES2341357T3 (es) 2002-01-22 2003-01-22 Procedimiento y sistemas para la prevencion de la emulacion de codigo inicial y de relleno de datos.

Country Status (11)

Country Link
US (2) US7505485B2 (es)
EP (3) EP1753244B1 (es)
JP (5) JP4703114B2 (es)
CN (2) CN1618235A (es)
AT (3) ATE464748T1 (es)
DE (3) DE60310368T2 (es)
DK (1) DK1753244T3 (es)
ES (1) ES2341357T3 (es)
HK (3) HK1069701A1 (es)
PT (1) PT1753244E (es)
WO (2) WO2003063500A1 (es)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE60310368T2 (de) * 2002-01-22 2007-03-29 Microsoft Corp., Redmond Verfahren zur verhinderung von startkode-emulation und stopfdaten
TWI310137B (en) * 2002-04-19 2009-05-21 Microsoft Corp Methods and systems for preventing start code emulation at locations that include non-byte aligned and/or bit-shifted positions
US7436328B2 (en) * 2003-07-09 2008-10-14 Texas Instruments Incorporated Video coding with start code emulation prevention
FR2898754B1 (fr) * 2006-03-17 2008-06-13 Thales Sa Procede de protection de donnees multimedia au moyen de couches d'abstraction reseau (nal) supplementaires
JP2007312272A (ja) * 2006-05-22 2007-11-29 Victor Co Of Japan Ltd 可変長復号装置
JP4229149B2 (ja) 2006-07-13 2009-02-25 ソニー株式会社 ビデオ信号処理装置およびビデオ信号処理方法、ビデオ信号符号化装置およびビデオ信号符号化方法、並びにプログラム
US20080043832A1 (en) * 2006-08-16 2008-02-21 Microsoft Corporation Techniques for variable resolution encoding and decoding of digital video
US8773494B2 (en) 2006-08-29 2014-07-08 Microsoft Corporation Techniques for managing visual compositions for a multimedia conference call
WO2008064058A2 (en) * 2006-11-21 2008-05-29 Abbott Laboratories Use of a terpolymer of tetrafluoroethylene, hexafluoropropylene, and vinylidene fluoride in drug eluting coatings
US7974307B2 (en) * 2006-11-30 2011-07-05 Vestel Elektronik Sanayi Ve Ticaret A.S. Methods and apparatus for data decoding/encoding and for searching for/inserting stuffing bytes
CN101296376B (zh) * 2007-04-24 2011-01-26 北京展讯高科通信技术有限公司 填充位丢弃电路和方法
EP1988713A1 (en) * 2007-04-30 2008-11-05 STMicroelectronics (Research & Development) Limited Image processing apparatus and method using padding data
WO2008146483A1 (ja) * 2007-05-28 2008-12-04 Panasonic Corporation メタデータ記録装置及びメタデータ記録方法
US9503777B2 (en) 2007-06-05 2016-11-22 Broadcom Corporation Method and system for unified start code emulation prevention bits processing for AVS
US7881342B2 (en) * 2007-09-27 2011-02-01 Chris Vaios Dynamically and on-demand selected ancillary data over compressed multimedia packets without bandwidth expansion
CN101459840B (zh) * 2007-12-13 2010-04-21 华为技术有限公司 视频图像编码和解码方法及装置和***
JP2009200595A (ja) * 2008-02-19 2009-09-03 Fujitsu Ltd 署名管理プログラム、署名管理方法及び署名管理装置
CN101534438B (zh) * 2008-03-14 2013-02-13 瑞昱半导体股份有限公司 影音位流处理方法及装置
US8325800B2 (en) 2008-05-07 2012-12-04 Microsoft Corporation Encoding streaming media as a high bit rate layer, a low bit rate layer, and one or more intermediate bit rate layers
US8379851B2 (en) * 2008-05-12 2013-02-19 Microsoft Corporation Optimized client side rate control and indexed file layout for streaming media
US7925774B2 (en) 2008-05-30 2011-04-12 Microsoft Corporation Media streaming using an index file
US8265140B2 (en) * 2008-09-30 2012-09-11 Microsoft Corporation Fine-grained client-side control of scalable media delivery
JP5524072B2 (ja) * 2008-10-10 2014-06-18 株式会社東芝 動画像符号化装置
US9516379B2 (en) 2011-03-08 2016-12-06 Qualcomm Incorporated Buffer management in video codecs
FI123124B (fi) 2011-03-16 2012-11-15 Oy Langh Ship Ab Menetelmä ja järjestely irtokelojen kuljettamiseksi kehtotelinerakennelmalla sekä kehtotelinerakennelma
US10230989B2 (en) * 2011-06-21 2019-03-12 Texas Instruments Incorporated Method and apparatus for video encoding and/or decoding to prevent start code confusion
US9106927B2 (en) 2011-09-23 2015-08-11 Qualcomm Incorporated Video coding with subsets of a reference picture set
US9264717B2 (en) * 2011-10-31 2016-02-16 Qualcomm Incorporated Random access with advanced decoded picture buffer (DPB) management in video coding
CN103369311A (zh) * 2012-04-04 2013-10-23 朱洪波 一种用于防止起始码冲突的方法
US20130279597A1 (en) * 2012-04-24 2013-10-24 Magnum Semiconductor, Inc. Apparatuses and methods for bitstream bitstuffing
US9225978B2 (en) 2012-06-28 2015-12-29 Qualcomm Incorporated Streaming adaption based on clean random access (CRA) pictures
WO2014002899A1 (ja) * 2012-06-29 2014-01-03 ソニー株式会社 符号化装置および符号化方法
CN102802023B (zh) * 2012-08-29 2014-08-27 上海国茂数字技术有限公司 一种快速防止出现伪起始码的方法及装置
EP2983363A4 (en) 2013-04-05 2016-10-19 Samsung Electronics Co Ltd MULTI-LAYER VIDEO ENCODING METHOD FOR RANDOM ACCESS AND DEVICE THEREFOR, AND MULTI-LAYER VIDEO DECODING METHOD FOR RANDOM ACCESS AND DEVICE THEREOF
CN105765978B (zh) 2013-10-11 2019-01-29 韩国电子通信研究院 用于编码/解码图像的方法和使用其的装置
WO2015053525A1 (ko) * 2013-10-11 2015-04-16 한국전자통신연구원 영상의 부호화/복호화 방법 및 이를 이용하는 장치
EP3104614A4 (en) * 2014-02-03 2017-09-13 Mitsubishi Electric Corporation Image encoding device, image decoding device, encoded stream conversion device, image encoding method, and image decoding method
US10032034B2 (en) * 2015-10-06 2018-07-24 Microsoft Technology Licensing, Llc MPEG transport frame synchronization
US10271069B2 (en) 2016-08-31 2019-04-23 Microsoft Technology Licensing, Llc Selective use of start code emulation prevention
CN109982091B (zh) * 2019-04-26 2022-04-22 京东方科技集团股份有限公司 一种图像的处理方法及装置
KR20230020425A (ko) * 2020-06-09 2023-02-10 바이트댄스 아이엔씨 비디오 코딩에서 보충 향상 정보 메시지의 스케일러블 네스팅

Family Cites Families (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4847877A (en) * 1986-11-28 1989-07-11 International Business Machines Corporation Method and apparatus for detecting a predetermined bit pattern within a serial bit stream
JP2674059B2 (ja) * 1988-02-09 1997-11-05 キヤノン株式会社 カラー画像データ伝送方法
CA2335403C (en) * 1990-06-05 2002-03-19 Koninklijke Philips Electronics N.V. Optical readable disc storing full-motion video scene
GB9012538D0 (en) * 1990-06-05 1990-07-25 Philips Nv Coding of video signals
JPH066335A (ja) * 1992-06-17 1994-01-14 Fujitsu Ltd 高能率音声伝送の擬似同期防止方法
US5842033A (en) * 1992-06-30 1998-11-24 Discovision Associates Padding apparatus for passing an arbitrary number of bits through a buffer in a pipeline system
PT732028E (pt) * 1993-11-30 2002-07-31 Gen Electric Indicador de palavra de dados num sistema para montagem de pacotes de dados de transporte
US5784110A (en) * 1993-11-30 1998-07-21 General Electric Company Data processor for assembling transport data packets
JPH0856356A (ja) * 1994-08-10 1996-02-27 Fujitsu Ltd 符号化装置および復号化装置
JP3474005B2 (ja) * 1994-10-13 2003-12-08 沖電気工業株式会社 動画像符号化方法及び動画像復号方法
US5650825A (en) * 1995-03-31 1997-07-22 Matsushita Electric Corporation Of America Method and apparatus for sending private data instead of stuffing bits in an MPEG bit stream
US5757869A (en) * 1995-07-28 1998-05-26 Adtran, Inc. Apparatus and method for detecting frame synchronization pattern/word in bit-stuffed digital data frame
JP3771954B2 (ja) * 1995-08-04 2006-05-10 ソニー株式会社 画像表示制御装置および方法
JP3597647B2 (ja) 1995-09-29 2004-12-08 株式会社東芝 符号化方法及び装置
US5933535A (en) * 1995-10-05 1999-08-03 Microsoft Corporation Object-based video compression process employing arbitrarily-shaped features
JPH09182067A (ja) * 1995-10-27 1997-07-11 Toshiba Corp 画像符号化/復号化装置
EP1755261A3 (en) 1996-03-18 2008-04-02 Kabushiki Kaisha Toshiba Coding and decoding system
US5870444A (en) * 1996-04-23 1999-02-09 Scientific-Atlanta, Inc. Method and apparatus for performing very fast message synchronization
US5661665A (en) * 1996-06-26 1997-08-26 Microsoft Corporation Multi-media synchronization
EP0864228B1 (en) * 1996-07-05 2001-04-04 Matsushita Electric Industrial Co., Ltd. Method for display time stamping and synchronization of multiple video object planes
JPH1066036A (ja) * 1996-08-15 1998-03-06 Oki Electric Ind Co Ltd Tv方式変換装置
JP2002009626A (ja) * 1996-09-06 2002-01-11 Toshiba Corp 可変長符号化/復号化装置に用いられるプログラムを記録した記録媒体
US5898897A (en) * 1996-10-18 1999-04-27 Samsung Electronics Company, Ltd. Bit stream signal feature detection in a signal processing system
JP4013286B2 (ja) * 1997-01-22 2007-11-28 松下電器産業株式会社 画像符号化装置と画像復号化装置
US6738393B2 (en) * 1997-02-13 2004-05-18 Ntt Mobile Communications Frame synchronization circuit
US5955977A (en) * 1997-03-31 1999-09-21 Sharp Laboratories Of America, Inc. System for avoiding start code emulation and long carry-over propagation
JP4150083B2 (ja) * 1997-09-25 2008-09-17 ソニー株式会社 符号化ストリーム生成装置及び方法、ならびに編集システム及び方法
JPH11110915A (ja) * 1997-09-30 1999-04-23 Sony Corp 信号記録再生装置及び方法
JPH11136225A (ja) * 1997-10-30 1999-05-21 Matsushita Electric Ind Co Ltd ビットストリームにおけるスタートコードを検出する方法および装置
US5946043A (en) * 1997-12-31 1999-08-31 Microsoft Corporation Video coding using adaptive coding of block parameters for coded/uncoded blocks
JP3724203B2 (ja) * 1998-03-10 2005-12-07 ソニー株式会社 符号化装置および方法、並びに記録媒体
GB9807208D0 (en) * 1998-04-03 1998-06-03 Nds Ltd Method and apparatus for detecting a sequence in a bitstream
AU3573099A (en) 1998-04-24 1999-11-16 Rockwell Science Center, Llc N-bit video coder and method of extending an 8-bit mpeg video coder
JP2000032393A (ja) * 1998-07-09 2000-01-28 Sony Corp 画像情報処理装置および方法、並びに提供媒体
JP2000032394A (ja) 1998-07-09 2000-01-28 Sony Corp 画像情報処理装置および方法、並びに提供媒体
JP3927713B2 (ja) * 1998-12-08 2007-06-13 キヤノン株式会社 放送受信装置およびその方法
JP4306850B2 (ja) * 1998-12-08 2009-08-05 キヤノン株式会社 放送受信装置およびその方法
EP1018840A3 (en) 1998-12-08 2005-12-21 Canon Kabushiki Kaisha Digital receiving apparatus and method
JP4401463B2 (ja) * 1999-01-28 2010-01-20 キヤノン株式会社 放送受信装置及びその方法
US7551672B1 (en) 1999-02-05 2009-06-23 Sony Corporation Encoding system and method, decoding system and method, multiplexing apparatus and method, and display system and method
JP4139983B2 (ja) * 1999-02-09 2008-08-27 ソニー株式会社 符号化ストリーム変換装置、および、符号化ストリーム変換方法、並びに、ストリーム出力装置、および、ストリーム出力方法
JP2000236522A (ja) * 1999-02-12 2000-08-29 Sony Corp 画像情報処理装置および方法、並びに提供媒体
US6499060B1 (en) * 1999-03-12 2002-12-24 Microsoft Corporation Media coding for loss recovery with remotely predicted data units
JP4292654B2 (ja) 1999-03-19 2009-07-08 ソニー株式会社 記録装置および方法、再生装置および方法、並びに記録媒体
GB2363279B (en) * 1999-04-01 2003-10-22 Ravisent Technologies Inc Method for preventing dual-step half-pixel motion compensation accumulation errors in prediction-rich MPEG-2 sequences
GB2353653B (en) 1999-08-26 2003-12-31 Sony Uk Ltd Signal processor
JP2001078146A (ja) * 1999-09-03 2001-03-23 Matsushita Electric Ind Co Ltd 映像復号化方法,及びその装置
US6795506B1 (en) * 1999-10-05 2004-09-21 Cisco Technology, Inc. Methods and apparatus for efficient scheduling and multiplexing
JP2001155437A (ja) * 1999-11-26 2001-06-08 Sony Corp 記録装置および方法
JP3694888B2 (ja) * 1999-12-03 2005-09-14 ソニー株式会社 復号装置および方法、符号化装置および方法、情報処理装置および方法、並びに記録媒体
JP2001169243A (ja) * 1999-12-03 2001-06-22 Sony Corp 記録装置および方法、ならびに、再生装置および方法
JP3874153B2 (ja) 1999-12-06 2007-01-31 ソニー株式会社 再符号化装置および再符号化方法、符号化装置および符号化方法、復号装置および復号方法、並びに、記録媒体
GB9930788D0 (en) * 1999-12-30 2000-02-16 Koninkl Philips Electronics Nv Method and apparatus for converting data streams
JP2001285861A (ja) * 2000-03-29 2001-10-12 Mitsubishi Electric Corp 画像信号符号化装置
US20020114388A1 (en) * 2000-04-14 2002-08-22 Mamoru Ueda Decoder and decoding method, recorded medium, and program
JP3540248B2 (ja) 2000-06-01 2004-07-07 松下電器産業株式会社 可変長符号復号装置
EP1310097B1 (en) * 2000-08-15 2019-07-31 Microsoft Technology Licensing, LLC Methods, systems and data structures for timecoding media samples
US6915078B1 (en) * 2000-08-15 2005-07-05 Alcatel Optical frame format
US7177520B2 (en) * 2000-09-15 2007-02-13 Ibm Corporation System and method of timecode repair and synchronization in MPEG streams
JP3737352B2 (ja) 2000-09-25 2006-01-18 株式会社東芝 スタートコード検索回路
US7149247B2 (en) * 2002-01-22 2006-12-12 Microsoft Corporation Methods and systems for encoding and decoding video data to enable random access and splicing
DE60310368T2 (de) * 2002-01-22 2007-03-29 Microsoft Corp., Redmond Verfahren zur verhinderung von startkode-emulation und stopfdaten
TWI310137B (en) * 2002-04-19 2009-05-21 Microsoft Corp Methods and systems for preventing start code emulation at locations that include non-byte aligned and/or bit-shifted positions
US7609762B2 (en) * 2003-09-07 2009-10-27 Microsoft Corporation Signaling for entry point frames with predicted first field

Also Published As

Publication number Publication date
PT1753244E (pt) 2010-05-06
JP5394528B2 (ja) 2014-01-22
EP1468567A2 (en) 2004-10-20
US7505485B2 (en) 2009-03-17
HK1069700A1 (en) 2005-05-27
JP2005516496A (ja) 2005-06-02
WO2003063500A1 (en) 2003-07-31
WO2003063499A2 (en) 2003-07-31
US7839895B2 (en) 2010-11-23
DE60310368T2 (de) 2007-03-29
JP2006502605A (ja) 2006-01-19
JP4503294B2 (ja) 2010-07-14
DE60311231D1 (de) 2007-03-08
EP1468566A1 (en) 2004-10-20
JP2011205665A (ja) 2011-10-13
ATE352171T1 (de) 2007-02-15
CN1618236A (zh) 2005-05-18
DE60311231T2 (de) 2007-11-15
EP1753244B1 (en) 2010-04-14
EP1753244A1 (en) 2007-02-14
CN1618235A (zh) 2005-05-18
JP4918119B2 (ja) 2012-04-18
ATE348484T1 (de) 2007-01-15
EP1468566B1 (en) 2007-01-17
JP2012182797A (ja) 2012-09-20
DE60332175D1 (de) 2010-05-27
EP1468567B1 (en) 2006-12-13
US20030146855A1 (en) 2003-08-07
HK1069701A1 (en) 2005-05-27
WO2003063499A3 (en) 2003-10-16
US20090168805A1 (en) 2009-07-02
HK1103199A1 (en) 2007-12-14
DE60310368D1 (de) 2007-01-25
ATE464748T1 (de) 2010-04-15
JP2009246995A (ja) 2009-10-22
JP5175371B2 (ja) 2013-04-03
JP4703114B2 (ja) 2011-06-15
DK1753244T3 (da) 2010-07-26

Similar Documents

Publication Publication Date Title
ES2341357T3 (es) Procedimiento y sistemas para la prevencion de la emulacion de codigo inicial y de relleno de datos.
JP4448334B2 (ja) バイト整列されていない(non−byte−alignedpositions)のポジション、および/またはビット・シフトされたポジション(bit−siftedpositions)を含む位置におけるスタート・コード・エミュレーションを防ぐための方法およびシステム
KR100677070B1 (ko) 무선 멀티미디어 통신에서의 비디오 비트스트림 데이터의 오류 제어방법 및 이를 위한 기록 매체
US6895544B1 (en) Encoding method of multimedia data and encoding device therefor
CN101160727B (zh) 用于透明的gfp(通用编帧过程)超级块纠错的方法和设备
US7027515B2 (en) Sum-of-absolute-difference checking of macroblock borders for error detection in a corrupted MPEG-4 bitstream
ES2376650T3 (es) Método de resincronización para la decodificación de video.
KR101199372B1 (ko) 디지털 방송 시스템 및 처리 방법
US7165207B2 (en) Robust signal coding
US6879635B2 (en) Method of decoding time information of video image
EP1986363A1 (en) Method, device and network element for decoding an information word from a coded word
JP2008177858A (ja) 転送データ処理装置、プログラム、及び転送データ受信装置
KR20040075956A (ko) 시작 코드 에뮬레이션 방지 및 데이터 스터핑 방법 및시스템
AU2003270982A1 (en) Encoding method of multimedia data and device thereof