std::shared_ptr<MediaStreamTrack> MediaStreamTrack::Clone(const std::shared_ptr<RtcPeerConnectionFactory> & factory) {
     std::shared_ptr<MediaStreamTrack> track = nullptr;
     if (!track) {
         auto inner_audio_track = this->inner_audio_track();
         if (inner_audio_track) {
             track = factory->CreateAudioTrack(label(), inner_audio_track->GetSource(),
                                               remote());
         }
     }
     if (!track) {
         auto inner_video_track = this->inner_video_track();
         if (inner_video_track) {
             track = factory->CreateVideoTrack(label(), inner_video_track->GetSource(),
                                               remote());
         }
     }
     track->set_enabled(enabled());
     track->inner_track().set_state(inner_track().state());
     return track;
 }