| 175 | } |
| 176 | |
| 177 | void decoderDav1d::resolveLibraryFunctionPointers() |
| 178 | { |
| 179 | // Get/check function pointers |
| 180 | if (!resolve(this->lib.dav1d_version, "dav1d_version")) |
| 181 | return; |
| 182 | if (!resolve(this->lib.dav1d_default_settings, "dav1d_default_settings")) |
| 183 | return; |
| 184 | if (!resolve(this->lib.dav1d_open, "dav1d_open")) |
| 185 | return; |
| 186 | if (!resolve(this->lib.dav1d_parse_sequence_header, "dav1d_parse_sequence_header")) |
| 187 | return; |
| 188 | if (!resolve(this->lib.dav1d_send_data, "dav1d_send_data")) |
| 189 | return; |
| 190 | if (!resolve(this->lib.dav1d_get_picture, "dav1d_get_picture")) |
| 191 | return; |
| 192 | if (!resolve(this->lib.dav1d_close, "dav1d_close")) |
| 193 | return; |
| 194 | if (!resolve(this->lib.dav1d_flush, "dav1d_flush")) |
| 195 | return; |
| 196 | |
| 197 | if (!resolve(this->lib.dav1d_data_create, "dav1d_data_create")) |
| 198 | return; |
| 199 | |
| 200 | DEBUG_DAV1D("decoderDav1d::resolveLibraryFunctionPointers - decoding functions found"); |
| 201 | |
| 202 | // This means that |
| 203 | if (!resolve(this->lib.dav1d_default_analyzer_settings, "dav1d_default_analyzer_flags", true)) |
| 204 | return; |
| 205 | if (!resolve(this->lib.dav1d_set_analyzer_settings, "dav1d_set_analyzer_flags", true)) |
| 206 | return; |
| 207 | |
| 208 | DEBUG_DAV1D("decoderDav1d::resolveLibraryFunctionPointers - analyzer functions found"); |
| 209 | internalsSupported = true; |
| 210 | nrSignals = 3; // We can also get prediction and reconstruction before filtering |
| 211 | curPicture.setInternalsSupported(); |
| 212 | } |
| 213 | |
| 214 | template <typename T> T decoderDav1d::resolve(T &fun, const char *symbol, bool optional) |
| 215 | { |
no test coverage detected