Casting is two mechanisms, not one
Casting is two unrelated mechanisms sharing one verb. In the first, your phone hands the television a URL and a play command and then stops carrying anything: the TV opens its own connection to the content server. In the second, your phone captures its screen, encodes it into a video stream, and pushes that stream across the room in real time. Picture quality, battery drain, whether you can walk out with the phone, and whether an app refuses to play at all are all decided by which of the two a given button triggered. The button almost never says.
Handoff: the television is the client
Google's architecture documentation is explicit about who fetches the video. A Sender "initiates the Cast session and manages the user's interaction with the content", while the Receiver is an app "responsible for responding to Sender commands and for conveying streaming content from an online streaming service to the Cast-enabled device". The proof sits in a requirement in the media reference: "With adaptive bitrate streaming protocols, you must implement CORS." Cross-origin rules only bind a party making its own HTTP requests. The Chromecast, not the phone, is the client of the content server, which is also why the same page makes DRM the receiver's job, listing "Widevine (Level 1)" against both MPEG-DASH and HLS.
Google publishes the consequences itself, comparing a Cast-enabled site against casting a Chrome tab. Cast-enabled sites "can serve high quality content that is best for viewing on TV", which "often means you'll get a full 1080p high definition picture" and sometimes "5.1 surround sound (if supported by your TV or receiver)". Cast a tab instead and "you are limited to a maximum of 720p (if supported by your computer)". On load: Cast-enabled sites "play directly on Google streaming devices and put no load on your computer", whereas casting a tab "requires a lot of your computer's power, which is why it's not supported on all computers". On mobility: "When you play from a Cast-enabled site, you can shut down your computer or close the lid. With tab projection, you need to keep your computer on throughout the cast." The YouTube page puts it plainly: "You can continue to use your mobile device to perform other tasks while your video plays on your Chromecast."
Better picture, no battery cost, sender free to leave, all of it stated by the vendor.
Mirroring: the phone is a video encoder
Miracast is where the other model is written down most plainly. The Miracast Specification v2.3 (Wi-Fi Alliance, revision date 27 June 2024; version 1.0 was published 24 August 2012) makes "Encode and packetization of the captured Display" a mandatory function of a source and no part of a sink at all. Its data plane is "MPEG2-TS over RTP/UDP/IP", its control plane "RTSP over TCP/IP", and "A WFD Device shall use H.264" as the video codec, with a mandatory floor of 640x480 at 60 Hz in Constrained Baseline Profile level 3.1.
So a mirroring source keeps a hardware encoder running for the whole session, and every frame is handled twice: decoded on the phone, then re-encoded for the link. Apple describes the same split without the protocol detail, defining mirrored content as "content that's on the device, or live streams of what's happening on the device screen", and separating the AirPlay button inside a video app from the Screen Mirroring control in the system menu.
Five names, two mechanisms
| Protocol | What crosses to the TV | Discovery | Specification status |
|---|---|---|---|
| Google Cast | URL plus control messages | mDNS, _googlecast._tcp | Proprietary SDK, registered app ID |
| AirPlay video | Media plus control messages | Bonjour, plus BTLE and peer to peer | Proprietary, AirPlay audio licensed via MFi |
| AirPlay Screen Mirroring | Encoded screen | Same as AirPlay video | Proprietary |
| Matter Casting | LaunchURL command | DNS-SD | Published by CSA, Apache 2.0 SDK |
| DLNA over UPnP AV | URI handed to the renderer | SSDP, 239.255.255.250:1900 | Published UPnP Device Architecture |
| Miracast | Encoded screen, MPEG2-TS | Wi-Fi Direct or TDLS, no AP required | Wi-Fi Alliance document, marked proprietary |
Four of the six hand over a pointer. Two send pixels. Grouping them by vendor, the usual way these get compared, hides the only distinction that predicts behaviour.
Open specification, published document, or neither
Matter Casting is the open one, and the least deployed. Amazon's implementation notes say "Fire TV and Echo devices implement Matter Casting as defined in the Matter specification 1.5", published by the Connectivity Standards Alliance, whose specification downloads run to Matter 1.6 as of June 2026. The reference implementation is public: the connectedhomeip repository calls Matter "a royalty-free connectivity standard", released "under the Apache 2.0 license". The mechanism is a handoff by design, since a client sends a "LaunchURL command (part of the Content Launcher cluster)" to the player.
UPnP, which DLNA packaged into interoperability guidelines, has a published architecture document, and the guidelines themselves stopped moving: DLNA announced its dissolution on 5 January 2017, and from 1 February 2017 SpireSpark International took over certification "to any company, with no membership fees required".
Google Cast and AirPlay publish SDKs, not protocols. Cast receivers "are registered using a distinct app ID, which is used to 'key' the corresponding Sender apps to that Receiver", registration runs through Google's developer console behind a "$5 developer account registration fee", and even a physical Chromecast must be registered before it will run your receiver. On Apple's side, AirPlay audio is one of the technologies in the MFi Program, which covers "third-party hardware accessories that use Apple's MFi licensed technology to connect electronically to Apple devices". Neither on-the-wire protocol is a document you can implement from.
Discovery is where casting actually breaks
Every one of these except Miracast finds its target with multicast service discovery, and multicast is exactly what a segmented network stops.
RFC 6762 (February 2013) is blunt about scope: "any fully qualified name ending in '.local.' is link-local, and names within this domain are meaningful only on the link where they originate", and "Any DNS query for a name ending with '.local.' MUST be sent to the mDNS IPv4 link-local multicast address 224.0.0.251 (or its IPv6 equivalent FF02::FB)", from UDP source port 5353. That address is inside the range RFC 5771 (March 2010) calls the Local Network Control Block, 224.0.0.0 to 224.0.0.255, whose addresses "are used for protocol control traffic that is not forwarded off link". Section 11 adds a second lock: responses "SHOULD be sent with IP TTL set to 255" so a querier can tell a packet came from the local link, and a host "MUST only accept responses to that query that originate from the local link". RFC 6763 supplies the naming above it, with a Service Instance Name of the form <Instance> . <Service> . <Domain>, which is why the service types are strings like _googlecast._tcp and, per Apple's deployment guide, _airplay._tcp and _raop._tcp.
Apple states the operational result directly: "Because multicast traffic is usually not routed across subnets, it requires Apple TV devices and AirPrint printers to be on the same IP subnet as the iPhone, iPad, and Mac devices that use them." Phone on the IoT VLAN, TV on the trusted one, and the device list stays empty no matter how healthy both connections are.
SSDP behaves differently, and this is worth knowing before blaming the wrong layer. UPnP Device Architecture 2.0 sends discovery to 239.255.255.250:1900 and says "the time-to-live (TTL) of each IP packet for each multicast message should default to 2 and should be configurable", noting that "When the TTL is greater than 1, it is possible for multicast messages to traverse multiple routers". A DLNA server can therefore be reachable one router hop away on a network where Cast and AirPlay are invisible.
Miracast sidesteps the question. It builds its own layer-2 link over Wi-Fi Direct or TDLS and works, in the Wi-Fi Alliance's phrasing, "even if a Wi-Fi network is not available". That independence is also why it cannot reach a TV through your access points.
Client isolation on a guest SSID kills it
The guest network setting people reach for is the one that guarantees failure. Cisco Meraki's definition is representative: "Wireless Client Isolation is a security feature that prevents wireless clients from communicating with one another", useful "for guest and BYOD SSIDs", and with it enabled "clients will only be able to communicate with the default gateway and will not be able to communicate with any other devices on the same VLAN (or broadcast domain)". Discovery packets and the media session are both client-to-client traffic, so both die.
Vendors work around it rather than fix it. Meraki's firmware permits up to 16 MAC addresses as exceptions to the layer 2 isolation, and the ones to add are the multicast MACs behind mDNS, "01:00:5E:00:00:FB" for IPv4 and "33:33:00:00:00:FB" for IPv6. Bonjour forwarding is the other route, a gateway that relays announcements between VLANs, which Apple anticipates: networks using such features "should be configured to advertise both _airplay._tcp and _raop._tcp services".
Google removed its own escape hatch. Guest mode let visitors cast "without connecting to your Wi-Fi network" using a PIN; the support page now reads "Guest mode is no longer supported. Guests can cast content from their Android or iOS devices by connecting to the host's Wi-Fi network."
The DRM reason an app will not mirror
A protected stream reaching the TV by handoff is decrypted there, inside whatever secure path that device holds. Mirroring asks for the opposite: decrypt on the phone, then re-encode the decrypted pixels and transmit them. Every content protection scheme treats that as the thing it exists to prevent.
Android exposes the switch directly. "FLAG_SECURE is a Window flag that tells Android not to allow screenshots or to display the window view on a non-secure display (such as Casting the screen)", and Android "prevents the window from being displayed on a non-secure display, such as a TV or projector". An app sets one flag and its window goes black on the mirrored output. Google's own caveat is that enforcement was uneven historically: "For Android 11 (API 30) and lower FLAG_SECURE is able to help around 70% of the devices reliably."
Miracast encodes the same rule into the specification. Link Content Protection, its HDCP 2.x layer, is an optional feature for both source and sink, with a note attached: "If Link Content Protection is not supported either by the WFD Source or the WFD Sink, protected content shall not be streamed." A black rectangle where the video should be is the protocol working as written.
What to check, in order
Look at which control you pressed. A Cast or AirPlay button inside the video player is a handoff; the mirroring toggle in a system menu or quick settings is an encoder. A hot phone and a soft picture mean you are mirroring something that could have been handed over.
If nothing appears in the device list, the fault is discovery, not the media path. Put both devices on the same subnet first, then check for client isolation on that SSID, then for an mDNS gateway if the two must live on different VLANs. Apple's own troubleshooting starts in the same place, asking you to "Check that the devices are updated to the latest software and are on the same Wi-Fi network."
If discovery works and playback does not, look for content protection rather than bandwidth. A stream that plays over a Cast button and blanks under screen mirroring is not a network problem, and no router setting will move it.
Sources
- Overview | Cast | Google for Developers
- Supported Media for Google Cast | Google for Developers
- Registration | Cast | Google for Developers
- iOS Permissions and Discovery | Cast | Google for Developers
- Google Cast-enabled site vs. casting a tab - Streaming Help
- Cast from Chrome to your TV - Streaming Help
- Cast media from Google Cast-enabled apps to your TV or display - Streaming Help
- How to cast from the YouTube app and YouTube.com - Streaming Help
- Set up and manage guest mode - Streaming Help
- Use AirPlay with Apple devices - Apple Support
- Use AirPlay to stream video or mirror the screen of your iPhone or iPad - Apple Support
- If screen mirroring or streaming isn't working on your AirPlay-compatible device - Apple Support
- Bonjour - Apple Developer
- FAQs
- Miracast Specification v2.3.pdf
- Applications | Wi-Fi Alliance
- UPnP arch DeviceArchitecture v2.0 20140901.pdf
- DLNA Certification Updates | Transition — SpireSpark International
- Overview of Matter Casting | Amazon Fire TV
- Matter Casting Integration | Amazon Fire TV
- GitHub - project-chip/connectedhomeip: Matter (formerly Project CHIP) creates more connections between more objects, simplifying development for manufacturers and increasing compatibility for consumers, guided by the Con
- Alliance Specification Downloads
- Secure sensitive activities | Fraud prevention | Android Developers
- Multicast DNS
- DNS-Based Service Discovery
- IANA Guidelines for IPv4 Multicast Address Assignments
- Wireless Client Isolation - Cisco Meraki Documentation
- Bonjour Forwarding - Cisco Meraki Documentation