GStreamer 之下
Neat 框架的管線在 GStreamer 上運行。應用程式可見的幾 乎所有內容——Graph、Run、Node——都是對 GStreamer 概念的類型化封裝。本頁說明了分層結構:哪些內容被隱藏,哪些內容沒有被隱藏,以及何時直接使用 GStreamer 才是正確的做法。
框架抽象化的內容
| GStreamer 概念 | 框架抽象化 |
|---|---|
gst-launch 文字片段 | Node::backend_fragment(int node_index) |
元素名稱(name=…) | 從 Node::element_names() 獲得的確定性 n<idx>_<role> |
| 管線字串(連接的片段) | Graph::add() 會建立並連接 |
| Caps 協商 | Graph::build() 透過 NodeCapsBehavior 驗證 caps |
gst_pipeline_set_state() | Graph::run() / Run::start() |
| 匯流排訊息 | GraphReport::bus_messages |
appsrc 推送 API | Run::push()(僅適用於具有 InputRole::Push 的節點) |
appsink 拉取 API | Run::pull() |
| 每個元素的定時 | 從 Run::start_measurement() 獲得的 MeasureReport |
應用程式永遠不會直接編寫啟動字串,永遠不會直接命名元素,也不會觸及 GStreamer C API。所有內容都透過節點進行。