gstguard::make_guard(pipeline_->GetSrcPadCaps(Elements::kParseVideo));
GstElementFactoryListType factory_type = GST_ELEMENT_FACTORY_TYPE_DECODER;
-
if (!track->use_swdecoder &&
!internal::GetIniValue(properties_, "use_default_video_codec_sw"))
factory_type |= GST_ELEMENT_FACTORY_TYPE_HARDWARE;
auto parse_caps =
gstguard::make_guard(pipeline_->GetSrcPadCaps(Elements::kParseAudio));
+
+ GstElementFactoryListType factory_type = GST_ELEMENT_FACTORY_TYPE_DECODER;
+ if (!track->use_swdecoder)
+ factory_type |= GST_ELEMENT_FACTORY_TYPE_HARDWARE;
+
if (!pipeline_->FactoryMake(Elements::kDecAudio,
static_cast<GstCaps*>(parse_caps ? parse_caps.get() : caps.GetCaps_()),
- GST_ELEMENT_FACTORY_TYPE_DECODER, NULL)) {
+ factory_type, NULL)) {
const ErrorType err = ErrorType::kNotSupportedAudioCodec;
TRACKRENDERER_ERROR("fail to make decoder");
eventlistener_->OnError(err);
pipeline_->FactoryMake(Elements::kParseAudio, caps,
GST_ELEMENT_FACTORY_TYPE_PARSER, NULL);
+ Track track;
+ if (!track_util::GetActiveTrack(trackinfo_, kTrackTypeAudio, &track)) {
+ TRACKRENDERER_ERROR("Failed to find active audio track.");
+ return false;
+ }
+ GstElementFactoryListType factory_type = GST_ELEMENT_FACTORY_TYPE_DECODER;
+ if (!track.use_swdecoder)
+ factory_type |= GST_ELEMENT_FACTORY_TYPE_HARDWARE;
+
auto parse_caps =
gstguard::make_guard(pipeline_->GetSrcPadCaps(Elements::kParseAudio));
auto parse_caps_str = gstguard::make_guard(gst_caps_to_string(parse_caps.get()));
TRACKRENDERER_INFO("parse caps %s", parse_caps_str.get());
if (!pipeline_->FactoryMake(Elements::kDecAudio, (GstCaps*)parse_caps.get(),
- GST_ELEMENT_FACTORY_TYPE_DECODER, NULL)) {
+ factory_type, NULL)) {
const ErrorType err = ErrorType::kNotSupportedAudioCodec;
eventlistener_->OnError(err);
return false;
gstguard::make_guard(pipeline_->GetSrcPadCaps(Elements::kParseVideo));
GstElementFactoryListType factory_type = GST_ELEMENT_FACTORY_TYPE_DECODER;
-
if (!track.use_swdecoder &&
!internal::GetIniValue(properties_, "use_default_video_codec_sw"))
factory_type |= GST_ELEMENT_FACTORY_TYPE_HARDWARE;
auto caps = caps_builder_.Build(track, internal::IsDrmEmeElementNecessary(
drm_property_, track.mimetype));
+
+ GstElementFactoryListType factory_type = GST_ELEMENT_FACTORY_TYPE_DECODER;
+ if (!track.use_swdecoder)
+ factory_type |= GST_ELEMENT_FACTORY_TYPE_HARDWARE;
+
pipeline_->FactoryMake(Elements::kDecAudio, (GstCaps*)caps.GetCaps_(),
- GST_ELEMENT_FACTORY_TYPE_DECODER, NULL);
+ factory_type, NULL);
pipeline_->FactoryMake(Elements::kSinkAudio, kAudioSinkName, NULL);
if (volume_ != kVolumeNone) {
SetVolume_();