Una página Ogg es una unidad de datos en un flujo de bits Ogg , generalmente entre 4 kB y 8 kB, con un tamaño máximo de 65.307 bytes. [1]
Propósito
Uno de los propósitos de los formatos de contenedor multimedia es permitir que varios códecs se mezclen en un solo archivo o flujo. Por ejemplo, para combinar audio , video y subtítulos en un solo archivo.
El punto de vista sostenido por Christopher Montgomery , creador del formato Ogg, es que las unidades de datos de códec mezclados deben ser una capa de abstracción separada de las unidades de datos utilizadas por el códec para limitar la cantidad de almacenamiento en búfer necesario al decodificar los datos contenidos. . En su opinión, que cuenta con el apoyo de otros desarrolladores que trabajan con la Fundación Xiph.org , esto le da a Ogg una ventaja técnica sobre los formatos de flujo de bits alternativos como AVI , QuickTime y MPEG .
Cada página de Ogg también proporciona la compensación de tiempo de los datos contenidos, lo que permite una búsqueda eficiente que es precisa y compatible con la transmisión . Por el contrario, muchos otros formatos buscan posiciones de bytes en el flujo o se basan en una tabla de contenido para buscar información.
Estructura de la página
Cada página de Ogg comienza con la cadena mágica de cuatro bytes "OggS". Si se pierde la sincronización, un decodificador puede buscar la próxima aparición de esta secuencia para comenzar a decodificar nuevamente. Estos cuatro bytes van seguidos de un byte cero para la versión 0 de Ogg. El campo de la versión originalmente tenía la intención de permitir que múltiples tipos de página Ogg ajustados para diferentes cargas útiles coexistan en el mismo flujo. En la década de 2000, quedó claro que solo se utilizaría una versión de página. [2]
El sexto byte de cada página especifica las banderas de tipo. El valor 1 especifica que la página contiene datos de un paquete que continúa desde la página anterior. El valor 2 especifica que esta es la primera página del flujo y el valor 4 especifica que esta es la última página del flujo. Estos valores se pueden combinar con una suma o un OR lógico .
Los siguientes 8 bytes, o 64 bits , se denominan posición de gránulo absoluta, que es un valor sintético que codifica la marca de tiempo de decodificación, la marca de tiempo de presentación y la distancia a la primera referencia necesaria. La codificación exacta de la posición de los gránulos depende de un códec específico. [2] [3]
Los siguientes 4 bytes son el número de serie del flujo al que pertenece esta página. Cada flujo lógico debe tener un número de serie único dentro de un flujo físico. También está destinado a utilizarse como un hash débil para que sea muy improbable una colisión al multiplexar diferentes flujos, lo que elimina la necesidad de recalcular continuamente los encabezados de página en cada paso de multiplexación.
Los siguientes 4 bytes son el número de secuencia de la página dentro de la secuencia. Este es un contador de páginas que permite la detección de páginas perdidas. En comparación con otros formatos de contenedor, la gran cantidad de bits también permite unidifusión / multidifusión UDP directa con el reordenamiento y el reensamblaje de manejo de Ogg. [2]
Los siguientes 4 bytes, comenzando en el byte 23 de la página, son la suma de comprobación CRC de la página. Debido a que el valor de este campo cambia, el resultado de la verificación se calcula con este campo igual a cero.
A continuación, el byte 27 de cada página especifica el número de segmentos que contiene, que van de 0 a 255. Este es también el tamaño de la siguiente tabla de segmentos en bytes. Cada byte de la tabla de segmentos proporciona la longitud de un segmento.
Cada segmento puede tener hasta 255 bytes de longitud y está limitado por la página. Un segmento de menos de 255 bytes marca el final de un paquete; el siguiente segmento comenzará un nuevo paquete. Un paquete con una longitud que sea múltiplo de 255 bytes terminará con un segmento de longitud 0. Si el último segmento de la página tiene 255 bytes, el último paquete continúa en la página siguiente.
Editar con páginas
Uno de los usos comunes de las páginas Ogg es permitir la edición de archivos Ogg sin reducir la calidad o la necesidad de transcodificar archivos.
Cualquier serie de páginas dentro de una transmisión puede ir precedida por las páginas de encabezado de la transmisión (páginas con una posición de gránulo absoluta de 0) y ser decodificadas correctamente por los reproductores multimedia. Esta técnica se puede utilizar para recortar sin pérdidas un archivo multimedia.
Se pueden agregar varios segmentos recortados entre sí con un proceso conocido como encadenamiento, siempre que los números de serie de estos segmentos se modifiquen a números únicos. También se puede insertar contenido nuevo entre estos segmentos.
Referencias
- ^ "RFC 3533 - La versión 0 del formato de encapsulación Ogg" .
- ^ a b c Montgomery, Christopher (27 de abril de 2010). "Monty - en defensa del buen nombre de Ogg" . people.xiph.org/~xiphmont. Archivado desde el original el 29 de abril de 2010 . Consultado el 2 de mayo de 2010 .
- ^ "ogg-multiplex" . Consultado el 2 de marzo de 2011 .
enlaces externos
- Estructura de la página Ogg