cridecoder 0.2.1

CRI codec library for ACB/AWB, HCA audio, and USM video extraction
Documentation
from __future__ import annotations

from typing import Optional, TypedDict


class ExtractedTrack(TypedDict):
    name: str
    extension: str
    filename: str
    data: bytes


class HcaInfo(TypedDict):
    sample_rate: int
    channels: int
    block_count: int
    block_size: int
    encoder_delay: int
    samples_per_block: int


class EncodeInfo(TypedDict):
    size: int
    bitrate: int


def extract_acb(acb_path: str, output_dir: str) -> Optional[list[str]]: ...


def extract_acb_bytes(acb_data: bytes, acb_path: Optional[str] = None) -> list[ExtractedTrack]: ...


def build_acb(tracks: list[tuple[str, int, bytes]], output_path: str) -> None: ...


def build_acb_bytes(tracks: list[tuple[str, int, bytes]]) -> bytes: ...


def build_music_acb_bytes(
    name: str,
    hca_data: bytes,
    cue_id: int,
    virtual_cue_suffix: Optional[str],
    memory_awb_id: int,
    reference_num_samples: int,
    reference_length_ms: int,
    acb_version: int,
    acf_md5_hash: bytes,
    acb_guid: bytes,
    version_string: str,
    acb_volume: float,
    category_extension: int,
    cue_priority_type: int,
    acf_category_name: str,
    acf_category_id: int,
    acf_bus_names: list[str],
) -> bytes: ...


def decode_hca(hca_path: str, wav_path: str) -> HcaInfo: ...


def decode_hca_bytes(hca_data: bytes) -> bytes: ...


def encode_hca(
    wav_path: str,
    hca_path: str,
    bitrate: int = 256000,
    encryption_key: Optional[int] = None,
) -> EncodeInfo: ...


def encode_hca_bytes(
    wav_data: bytes,
    sample_rate: Optional[int] = None,
    channels: Optional[int] = None,
    bitrate: int = 256000,
    encryption_key: Optional[int] = None,
) -> bytes: ...


def extract_usm(
    usm_path: str,
    output_dir: str,
    key: Optional[int] = None,
    export_audio: bool = False,
) -> list[str]: ...


def extract_usm_bytes(
    usm_data: bytes,
    fallback_name: str = "input.usm",
    key: Optional[int] = None,
    export_audio: bool = False,
) -> list[ExtractedTrack]: ...


def build_usm(
    name: str,
    video_data: bytes,
    output_path: str,
    encryption_key: Optional[int] = None,
) -> None: ...


def build_usm_bytes(
    name: str,
    video_data: bytes,
    encryption_key: Optional[int] = None,
) -> bytes: ...


def read_usm_metadata(usm_path: str) -> str: ...