Design

picast project try to provide miracast display sink/reciever functionarity on Raspberry Pi Zero W. There is no certification from WiFi Alliance, and it is built upon try-and-error basis with existent devices, there is no gurantee to compliance to WiFi alliance specifications.

Modules

picast consist with several modules.

  • picast.dhcpd provide dhcp server function by running external udhcpd daemon with custom configuration.
  • picast.discovery provide an interface to mDNS/SD network to register and query display sink and source.
  • picast.player provide a RTP movie and audio player, supporting H.264 and AC3/AAC/LPCM audio codecs.
  • picast.settings is an ini file loader and configration provider.
  • picast.video checks platform and provide proper wfd-video-formats parameter for miracast negotiation.
  • picast.wifip2p setup wpa_supplicant to accept connection from miracast source.
  • picast.wpacli provide methods to configure wpa_supplicant through wpa-cli command line.
  • picast.picast is a core module to define controller and communicator with miracast source throught RTSP.

GStreamer

picast depends upon GStreamer video/audio handling framework and its python bindings. picast uses ‘OpenMAX’ codec API to decode H.264 video container.

Threads

picast uses threading technic to realize a controller communication through RTSP and RTP player control

Tests

There are several unittests for functions but it is not enough and there is possibility to exist defeat.

Logging

picast defines module level logger and output many debug messages.