void MediaElementImpl::connect (std::shared_ptr<MediaElement> sink) { std::shared_ptr<MediaElementImpl> sinkImpl = std::dynamic_pointer_cast<MediaElementImpl> (sink); std::shared_ptr<MediaSource> audio_src = getOrCreateAudioMediaSrc(); std::shared_ptr<MediaSink> audio_sink = sinkImpl->getOrCreateAudioMediaSink(); std::shared_ptr<MediaSource> video_src = getOrCreateVideoMediaSrc(); std::shared_ptr<MediaSink> video_sink = sinkImpl->getOrCreateVideoMediaSink(); audio_src->connect (audio_sink); try { video_src->connect (video_sink); } catch (...) { try { audio_sink->disconnect (audio_src); } catch (...) { } throw; } }
std::vector<std::shared_ptr<MediaSource>> MediaElementImpl::getMediaSrcs () { std::vector<std::shared_ptr<MediaSource>> srcs; srcs.push_back (getOrCreateAudioMediaSrc() ); srcs.push_back (getOrCreateVideoMediaSrc() ); return srcs; }
std::vector < std::shared_ptr<MediaSrc> > * MediaElement::getMediaSrcs () { std::vector < std::shared_ptr<MediaSrc> > *mediaSrcs = new std::vector< std::shared_ptr<MediaSrc> >(); mediaSrcs->push_back (getOrCreateAudioMediaSrc() ); mediaSrcs->push_back (getOrCreateVideoMediaSrc() ); return mediaSrcs; }
std::vector < std::shared_ptr<MediaSrc> > * MediaElement::getMediaSrcsByMediaType (const MediaType::type mediaType) { std::vector < std::shared_ptr<MediaSrc> > *mediaSrcs = new std::vector< std::shared_ptr<MediaSrc> >(); if (mediaType == MediaType::type::AUDIO) mediaSrcs->push_back (getOrCreateAudioMediaSrc() ); else if (mediaType == MediaType::type::VIDEO) mediaSrcs->push_back (getOrCreateVideoMediaSrc() ); return mediaSrcs; }
std::vector<std::shared_ptr<MediaSource>> MediaElementImpl::getMediaSrcs (std::shared_ptr<MediaType> mediaType) { std::vector<std::shared_ptr<MediaSource>> srcs; if (mediaType->getValue() == MediaType::AUDIO) { srcs.push_back (getOrCreateAudioMediaSrc() ); } else if (mediaType->getValue() == MediaType::VIDEO) { srcs.push_back (getOrCreateVideoMediaSrc() ); } return srcs; }
void MediaElementImpl::connect (std::shared_ptr< MediaElement > sink, std::shared_ptr< MediaType > mediaType) { std::shared_ptr<MediaElementImpl> sinkImpl = std::dynamic_pointer_cast<MediaElementImpl> (sink); if (mediaType->getValue() == MediaType::AUDIO) { std::shared_ptr<MediaSource> audio_src = getOrCreateAudioMediaSrc(); std::shared_ptr<MediaSink> audio_sink = sinkImpl->getOrCreateAudioMediaSink(); audio_src->connect (audio_sink); } else if (mediaType->getValue() == MediaType::VIDEO) { std::shared_ptr<MediaSource> video_src = getOrCreateVideoMediaSrc(); std::shared_ptr<MediaSink> video_sink = sinkImpl->getOrCreateVideoMediaSink(); video_src->connect (video_sink); } }