In ROS2 Jazzy, rosbag2 Recorder/Player can be used as composable nodes, and composable nodes can enable more efficient intra-process / zero-copy communication (with some exceptions and limitations).
On the other hand, rosbag2 appears to use type-erased serialized pub/sub (GenericSubscription/GenericPublisher). The rclcpp API reference for GenericSubscription states: “It does not support intra-process handling”:
https://docs.ros.org/en/jazzy/p/rclcpp/generated/classrclcpp_1_1GenericSubscription.html
My understanding is that for example, even if a publisher and rosbag2_transport::Recorder are composed into the same process, they do not communicate via intra-process / zero-copy, because the rosbag2 Recorder/Player uses GenericSubscription/GenericPublisher, which is not IPC-capable. Is this correct?