../../third_party/webrtc/modules/video_capture/linux/pipewire_session.cc:90:3: error: no matching function for call to 'pw_node_add_listener'
   90 |   pw_node_add_listener(proxy_, &node_listener_, &node_events, this);
      |   ^~~~~~~~~~~~~~~~~~~~
/usr/include/pipewire-0.3/pipewire/node.h:189:22: note: candidate function not viable: cannot convert argument of incomplete type 'pw_proxy *' to 'struct pw_node *' for 1st argument
  189 | PW_API_NODE_IMPL int pw_node_add_listener(struct pw_node *object,
      |                      ^                    ~~~~~~~~~~~~~~~~~~~~~~
../../third_party/webrtc/modules/video_capture/linux/pipewire_session.cc:122:9: error: no matching function for call to 'pw_node_enum_params'
  122 |         pw_node_enum_params(that->proxy_, 0, id, 0, UINT32_MAX, nullptr);
      |         ^~~~~~~~~~~~~~~~~~~
/usr/include/pipewire-0.3/pipewire/node.h:208:22: note: candidate function not viable: cannot convert argument of incomplete type 'pw_proxy *' to 'struct pw_node *' for 1st argument
  208 | PW_API_NODE_IMPL int pw_node_enum_params(struct pw_node *object,
      |                      ^                   ~~~~~~~~~~~~~~~~~~~~~~
2 errors generated.

This started with pipewire 1.4.0.

I initially thought that since they were calling a bunch of pw_node_*
functions, they should've been requesting a pw_node rather than a
pw_proxy. But it looks like casting between the two is just a thing
that pipewire does (see, for example, pipewire source code's
src/modules/module-protocol-pulse/manager.c calls to pw_node_enum_params()).

So we fix this by casting, under the assumption that the webrtc folks
actually did intend to call pw_node_* functions on a pw_proxy.

--- a/third_party/webrtc/modules/video_capture/linux/pipewire_session.cc
+++ b/third_party/webrtc/modules/video_capture/linux/pipewire_session.cc
@@ -87,7 +87,7 @@ PipeWireNode::PipeWireNode(PipeWireSessi
       .param = OnNodeParam,
   };
 
-  pw_node_add_listener(proxy_, &node_listener_, &node_events, this);
+  pw_node_add_listener((struct pw_node*) proxy_, &node_listener_, &node_events, this);
 }
 
 // static
@@ -119,7 +119,7 @@ void PipeWireNode::OnNodeInfo(void* data
       uint32_t id = info->params[i].id;
       if (id == SPA_PARAM_EnumFormat &&
           info->params[i].flags & SPA_PARAM_INFO_READ) {
-        pw_node_enum_params(that->proxy_, 0, id, 0, UINT32_MAX, nullptr);
+        pw_node_enum_params((struct pw_node*) that->proxy_, 0, id, 0, UINT32_MAX, nullptr);
         break;
       }
     }
