# API 概览

## 解析

- `parse(input)`：兼容模式，接受 LF 或 CRLF，保留兼容警告所对应的结构。
- `parse_strict(input)`：要求完整 CRLF，拒绝 RFC 8866 已废弃的 `k=`。
- `parse_with_options(input, options)`：自定义严格性与八个资源上限。

三者均返回结构化 `SdpError`，字段包括 stage、kind、line、column、context 和固定
消息。context 是内部类别，不复制恶意输入。

## 模型与类型化属性

`SessionDescription` 提供 origin、timing、连接、带宽、属性和 media 的只读访问器。
`MediaDescription` 提供格式列表、有效方向、`rtp_maps()`、
`format_parameters()`、`rtp_map_for()` 和按名属性查询。

## 写出

- `write_preserve(document)`：返回解析时的原始内容。
- `write_canonical(document)`：以 CRLF 和 RFC 字段顺序确定性写出。
- `canonicalize(input)`：解析和规范化的便捷组合。

## 校验与分析

- `validate(document)`：RFC 8866、核心 IANA 名称和常见 RTP 约束。
- `statistics(document)`：结构计数。
- `media_by_type`、`media_by_mid`、`active_media`、`codec_names`：查询。
- `audit(document)`：面向工程部署的附加建议。
- `analyze_offer_answer(offer, answer)`：RFC 3264 基础静态一致性分析。

公共 API 不执行网络请求，不读取文件，不修改调用者输入。

