return false;
}
- if (GetResource_() == false) {
- TRACKRENDERER_ERROR("resource acquire failed.");
- ReleaseResource_();
+ if (!CreatePipeline_()) {
+ TRACKRENDERER_ERROR("renderer pipeline creation failed");
return false;
}
- if (CreatePipeline_() == false) {
- TRACKRENDERER_ERROR("renderer pipeline creation failed");
+ if (!GetResource_()) {
+ TRACKRENDERER_ERROR("resource acquire failed");
+ ReleaseResource_();
return false;
}
bool TrackRenderer::GetResource_() {
assert(!trackinfo_.empty());
std::list<ResourceProperty> properties;
- Track trackinfo;
- for (const Track& track : trackinfo_) {
- if (track.active == false) continue;
- if (track.type != kTrackTypeVideo) continue;
- if (track.use_swdecoder) continue; // FIXME: need to acquire the renderer res
-
- ResourceProperty videodecproperty;
- videodecproperty.category = ResourceCategory::kVideoDecoder;
- videodecproperty.track = track;
-
- bool need_renderer_resource = true;
- if (decoded_buffer_type_ ==
- DecodedVideoFrameBufferType::kCopy) { // for videotexturing mode
- need_renderer_resource = false;
- } else if (decoded_buffer_type_ ==
- DecodedVideoFrameBufferType::kReference) {
- videodecproperty.is_vr360 = true;
- }
- properties.push_back(videodecproperty);
- if (need_renderer_resource) {
- ResourceProperty videorenderproperty;
- videorenderproperty.category = ResourceCategory::kVideoRenderer;
- properties.push_back(videorenderproperty);
- }
+ Track track;
+ if (!track_util::GetActiveTrack(trackinfo_, kTrackTypeVideo, &track)) {
+ TRACKRENDERER_ERROR("There is no active video track");
+ return true;
+ }
+
+ if (pipeline_->IsFactoryListType(Elements::kDecVideo,
+ GST_ELEMENT_FACTORY_TYPE_HARDWARE)) {
+ TRACKRENDERER_DEBUG("will get video decoder resource");
+ properties.push_back({ ResourceCategory::kVideoDecoder, track });
+ }
+
+ DisplayType display_type;
+ display_->GetDisplay(&display_type);
+ if (internal::IsDisplayNeeded(display_type)) {
+ TRACKRENDERER_DEBUG("will get video renderer resource");
+ properties.push_back({ ResourceCategory::kVideoRenderer, {} });
}
bool ret = resource_manager_->Acquire(properties);
- if (!ret) {
+ if (!ret)
TRACKRENDERER_ERROR("GetResource_ Fail");
- }
+
return ret;
}