| 226 | } |
| 227 | |
| 228 | void decoderDav1d::allocateNewDecoder() |
| 229 | { |
| 230 | if (decoder != nullptr) |
| 231 | { |
| 232 | DEBUG_DAV1D("decoderDav1d::allocateNewDecoder Error a decoder was already allocated"); |
| 233 | return; |
| 234 | } |
| 235 | if (decoderState == DecoderState::Error) |
| 236 | return; |
| 237 | |
| 238 | DEBUG_DAV1D("decoderDav1d::allocateNewDecoder - decodeSignal %d", decodeSignal); |
| 239 | |
| 240 | this->lib.dav1d_default_settings(&settings); |
| 241 | |
| 242 | // Create new decoder object |
| 243 | int err = this->lib.dav1d_open(&decoder, &settings); |
| 244 | if (err != 0) |
| 245 | { |
| 246 | decoderState = DecoderState::Error; |
| 247 | setError("Error opening new decoder (dav1d_open)"); |
| 248 | return; |
| 249 | } |
| 250 | |
| 251 | if (internalsSupported) |
| 252 | { |
| 253 | // Apply the analizer settings |
| 254 | this->lib.dav1d_default_analyzer_settings(&analyzerSettings); |
| 255 | if (nrSignals > 0) |
| 256 | { |
| 257 | if (decodeSignal == 1) |
| 258 | { |
| 259 | analyzerSettings.export_prediction = 1; |
| 260 | DEBUG_DAV1D("decoderDav1d::allocateNewDecoder - Activated export of prediction"); |
| 261 | } |
| 262 | else if (decodeSignal == 2) |
| 263 | { |
| 264 | analyzerSettings.export_prefilter = 1; |
| 265 | DEBUG_DAV1D( |
| 266 | "decoderDav1d::allocateNewDecoder - Activated export of reconstruction pre-filtering"); |
| 267 | } |
| 268 | } |
| 269 | if (this->statisticsEnabled()) |
| 270 | { |
| 271 | analyzerSettings.export_blkdata = 1; |
| 272 | DEBUG_DAV1D("decoderDav1d::allocateNewDecoder - Activated export of block data"); |
| 273 | } |
| 274 | this->lib.dav1d_set_analyzer_settings(decoder, &analyzerSettings); |
| 275 | } |
| 276 | |
| 277 | // The decoder is ready to receive data |
| 278 | decoderBase::resetDecoder(); |
| 279 | currentOutputBuffer.clear(); |
| 280 | decodedFrameWaiting = false; |
| 281 | flushing = false; |
| 282 | } |
| 283 | |
| 284 | bool decoderDav1d::decodeNextFrame() |
| 285 | { |
nothing calls this directly
no test coverage detected