Search code examples
windowsrtsprtcpeerconnectionrtcpmiracast

Why source device send RTCP packet to remote UDP port 0?


I'm trying to cast Windows 10 computer screen to an Android TV with miracast protocol and support RTCP extension.

I follow the specification [MS-WFDPE]: Wi-Fi Display Protocol Extension, see chapter 2.8 RTCP

steps:

  1. If RTSP M3 request message included "microsoft-rtcp-capability" parameter, TV will reply microsoft_rtcp_capability: supported\r\n as below:
Real Time Streaming Protocol
    Response: RTSP/1.0 200 OK\r\n
        Status: 200
    Date: Sat, 18 Nov 2023 13:19:52 +0000\r\n
    CSeq: 2\r\n
    Content-type: text/parameters
    Content-length: 457
    \r\n
    Line-based text data: text/parameters (8 lines)
        wfd_video_formats: 38 01 01 08 0001ffff 00000000 00000fff 02 0000 0000 13 0780 0438\r\n
        wfd_audio_codecs: LPCM 00000003 02, AAC 00000003 00\r\n
        wfd_client_rtp_ports: RTP/AVP/UDP;unicast 1028 0 mode=play\r\n
        wfd_content_protection: none\r\n
        wfd_uibc_capability: input_category_list=HIDC;hidc_cap_list=Keyboard/USB, Mouse/USB, MultiTouch/USB, Gesture/USB, RemoteControl/USB;port=none\r\n
        wfd_display_edid: none\r\n
        wfd_connector_type: 05\r\n
        microsoft_rtcp_capability: supported\r\n
  1. TV will fill client_port field including RTCP port at the SETUP phase as below:
Real Time Streaming Protocol
    Request: SETUP rtsp://192.168.49.235/wfd1.0/streamid=0 RTSP/1.0\r\n
        Method: SETUP
        URL: rtsp://192.168.49.235/wfd1.0/streamid=0
    Date: Sat, 18 Nov 2023 13:19:53 +0000\r\n
    CSeq: 2\r\n
    Transport: RTP/AVP/UDP;unicast;client_port=1028-1029
    \r\n

The source reply:

Transport: RTP/AVP/UDP;unicast;client_port=1028-1029;server_port=64713-7492;ssrc=866c7a52;rtcp-fb-ssrc=866c7a53

After that, the Windows computer sent a RTCP compound packet including a sender report to remote UDP port 0, but not 1029. No RTCP packet was received on Android TV and the 1029 port is always not readable.

enter image description here

The RTCP communication should be established between the local 7492 port and the remote 1029 port. However, the source device(windows computer) uses the remote 0 port but not 1029, I want to know why.

Any help is appreciated!


Solution

  • The specification said:

    enter image description here

    However, the version of Windows 10 on my computer is 1909 version, but not 1507 or 1511. perhaps it also has a bug or is not supported well.

    After upgrading to the latest Windows 10 22H2 version, the issue was fixed.