Protocolosmedia-object

Media Object Specification

Spec canónica de protocols/media-object/MEDIA_OBJECT_SPEC.md, copiada sin reescribir.

ImplementadoSin versión del tren todavía· generada desde protocols/media-object/MEDIA_OBJECT_SPEC.md

Página generada desde protocols/media-object/MEDIA_OBJECT_SPEC.md. No se edita a mano: bun run docs:gen la regenera y bun run docs:check falla si difiere.

Media Object Specification

MediaObject

Metadata de un segmento o unidad de media. Es la unidad mínima direccionable en el media graph.

interface MediaObject {
  /** Identificador único del objeto. */
  id: string;
  /** Track al que pertenece (video, audio, subtitles, etc.). */
  trackId: string;
  /** Codec del contenido (hevc, av1, aac, eac3, etc.). */
  codec: string;
  /** Presentation timestamp en microsegundos. */
  pts: number;
  /** Decode timestamp en microsegundos. */
  dts: number;
  /** Duración en microsegundos. */
  duration: number;
  /** ¿Es keyframe? */
  keyframe: boolean;
  /** IDs de objetos de los que este depende (para decoding). */
  dependencyIds: string[];
  /** Tamaño en bytes. */
  size: number;
  /** SHA-256 del payload. */
  sha256: string;
}

MediaUnit

Payload completo: metadata + bytes.

interface MediaUnit {
  /** Metadata del segmento. */
  metadata: MediaObject;
  /** Bytes del segmento. */
  payload: Uint8Array;
}

MediaPresentation

Contenedor lógico que agrupa tracks y capacidades.

interface MediaPresentation {
  /** Tracks disponibles. */
  tracks: MediaTrack[];
  /** Duración total en microsegundos. */
  duration: number;
  /** Capacidades del presentation (codecs, resoluciones, HDR, etc.). */
  capabilities: string[];
  /** Codecs utilizados (deduplicado de tracks). */
  codecs: string[];
}

interface MediaTrack {
  /** ID del track (único dentro del presentation). */
  id: string;
  /** Tipo de track: video, audio, subtitles, attachment. */
  type: 'video' | 'audio' | 'subtitles' | 'attachment';
  /** Codec del track. */
  codec: string;
  /** Ancho en pixels (solo video). */
  width?: number;
  /** Alto en pixels (solo video). */
  height?: number;
  /** Frame rate (solo video). */
  frameRate?: number;
  /** Canales de audio (solo audio). */
  channels?: number;
  /** Sample rate en Hz (solo audio). */
  sampleRate?: number;
  /** Idioma (ISO 639-1). */
  language?: string;
  /** ¿Es el track por defecto? */
  default: boolean;
}

Serialización

  • Formato: JSON para prototipo (F0.B.1)
  • A futuro: protobuf o flatbuffers para producción (benchmark en F0.B.1)
  • Los campos sha256 permiten deduplicación y verificación de integridad
  • dependencyIds permite reconstruir el DAG de decoding sin parsear el bitstream