Rx flow#
Diagrams in this document show interaction between FFmpeg and the Media Communications Mesh FFmpeg plugin when FFmpeg is receiving a video stream over Media Communications Mesh.
Simplified FFmpeg Rx flow#
sequenceDiagram participant ffmpeg as FFmpeg participant mux as Plugin ffmpeg ->> mux: Read header loop N video frames ffmpeg ->>+ mux: Read packet mux ->> ffmpeg: Packet received mux -->>- ffmpeg: EOF end ffmpeg ->> mux: Read close
FFmpeg Read Header flow#
sequenceDiagram participant ffmpeg as FFmpeg participant mux as Plugin participant sdk as SDK participant memif as Memif participant proxy as Media Proxy participant mtl as MTL participant network as Network ffmpeg ->>+ mux: Read header mux ->>+ sdk: Create Rx connection sdk ->>+ proxy: Open TCP connection to Proxy proxy ->>+ mtl: Start Rx session mtl ->>+ network: Update ARP table mtl ->>- proxy: Session started proxy ->>+ memif: Create Memif Tx connection memif ->>- proxy: Connection created proxy ->>- sdk: Connection established sdk ->>+ proxy: Query Memif info proxy ->>- sdk: Memif info sdk ->>+ memif: Create Memif Rx connection memif ->>- sdk: Connection created sdk ->>- mux: Connection created mux ->>- ffmpeg: Success
FFmpeg Read Packet flow#
sequenceDiagram participant ffmpeg as FFmpeg participant mux as Plugin participant sdk as SDK participant memif as Memif participant proxy as Media Proxy participant mtl as MTL participant network as Network network ->>+ mtl: Data received mtl ->> mtl: Decode ST2110-xx mtl ->>- proxy: Frame received proxy ->>+ memif: Dequeue buffer memif ->>- proxy: Buffer dequeued proxy ->> proxy: Write data to buffer proxy ->> memif: Enqueue buffer ffmpeg ->>+ mux: Read packet mux ->>+ sdk: Receive buffer sdk ->>+ memif: Dequeue buffer memif ->>- sdk: Buffer dequeued sdk ->>- mux: Buffer received mux ->> mux: Read frame from buffer mux ->>+ sdk: Release buffer sdk ->>+ memif: Enqueue buffer memif ->>- sdk: Buffer enqueued sdk ->>- mux: Buffer released mux ->>- ffmpeg: Success
FFmpeg Read Close flow#
sequenceDiagram participant ffmpeg as FFmpeg participant mux as Plugin participant sdk as SDK participant memif as Memif participant proxy as Media Proxy participant mtl as MTL participant network as Network ffmpeg ->>+ mux: Read close mux ->>+ sdk: Close Rx connection sdk ->>+ proxy: Close TCP connection to Proxy proxy ->> mtl: Stop Rx session proxy ->>- memif: Close Memif Tx connection sdk ->> memif: Close Memif Rx connection sdk ->>- mux: Connection closed mux ->>- ffmpeg: Return