if (internal::IsDecryptorElementNecessary(drm_property_)) {
auto caps_for_parser = caps_builder_.BuildOrgMediaType(*track, internal::IsDrmEmeElementNecessary(
drm_property_, track->mimetype));
- pipeline_->FactoryMake(Elements::kParseVideo, (GstCaps*)caps_for_parser.GetCaps_(),
- GST_ELEMENT_FACTORY_TYPE_PARSER, NULL);
+ if (!pipeline_->FactoryMake(Elements::kParseVideo, (GstCaps*)caps_for_parser.GetCaps_(),
+ GST_ELEMENT_FACTORY_TYPE_PARSER, NULL))
+ TRACKRENDERER_ERROR("fail to make parser");
} else {
- pipeline_->FactoryMake(Elements::kParseVideo, (GstCaps*)caps.GetCaps_(),
- GST_ELEMENT_FACTORY_TYPE_PARSER, NULL);
+ if (!pipeline_->FactoryMake(Elements::kParseVideo, (GstCaps*)caps.GetCaps_(),
+ GST_ELEMENT_FACTORY_TYPE_PARSER, NULL))
+ TRACKRENDERER_ERROR("fail to make parser");
}
auto parse_caps =
gstguard::make_guard(pipeline_->GetSrcPadCaps(Elements::kParseVideo));
- if (!pipeline_->FactoryMake(Elements::kDecVideo, (GstCaps*)parse_caps.get(),
+ if (!pipeline_->FactoryMake(Elements::kDecVideo,
+ static_cast<GstCaps*>(parse_caps ? parse_caps.get() : caps.GetCaps_()),
GST_ELEMENT_FACTORY_TYPE_DECODER, NULL)) {
const ErrorType err = ErrorType::kNotSupportedVideoCodec;
+ TRACKRENDERER_ERROR("fail to make decoder");
eventlistener_->OnError(err);
return false;
}