| 171 | } |
| 172 | |
| 173 | IDataStream* Transcoder::Transcode( |
| 174 | Context& context, |
| 175 | const std::string& uri, |
| 176 | size_t bitrate, |
| 177 | const std::string& format) |
| 178 | { |
| 179 | if (context.prefs->GetBool( |
| 180 | prefs::transcoder_synchronous.c_str(), |
| 181 | defaults::transcoder_synchronous)) |
| 182 | { |
| 183 | return TranscodeAndWait(context, getEncoder(context, format), uri, bitrate, format); |
| 184 | } |
| 185 | |
| 186 | /* on-demand is the default. however, on-demand transcoding is only available |
| 187 | for `IStreamingEncoder` types. */ |
| 188 | IStreamingEncoder* audioStreamEncoder = getTypedEncoder<IStreamingEncoder>(context, format); |
| 189 | if (audioStreamEncoder) { |
| 190 | return TranscodeOnDemand(context, audioStreamEncoder, uri, bitrate, format); |
| 191 | } |
| 192 | |
| 193 | return TranscodeAndWait(context, nullptr, uri, bitrate, format); |
| 194 | } |
| 195 | |
| 196 | IDataStream* Transcoder::TranscodeOnDemand( |
| 197 | Context& context, |
no test coverage detected