This way all context fields get initialized and can be used without needing to reinit the context
Unified · Split
| @@ -1334,20 +1334,6 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter, · 1333 unmodified lines | ||
| 1334 | 1334 | |
| 1335 | 1335 | FF_ALLOC_OR_GOTO(c, c->formatConvBuffer, FFALIGN(srcW*2+78, 16) * 2, fail); |
| 1336 | 1336 | |
| 1337 | − /* unscaled special cases */ | |
| 1338 | − if (unscaled && !usesHFilter && !usesVFilter && | |
| 1339 | − (c->srcRange == c->dstRange || isAnyRGB(dstFormat))) { | |
| 1340 | − ff_get_unscaled_swscale(c); | |
| 1341 | − | |
| 1342 | − if (c->swscale) { | |
| 1343 | − if (flags & SWS_PRINT_INFO) | |
| 1344 | − av_log(c, AV_LOG_INFO, | |
| 1345 | − "using unscaled %s -> %s special converter\n", | |
| 1346 | − av_get_pix_fmt_name(srcFormat), av_get_pix_fmt_name(dstFormat)); | |
| 1347 | − return 0; | |
| 1348 | − } | |
| 1349 | − } | |
| 1350 | − | |
| 1351 | 1337 | c->srcBpc = 1 + desc_src->comp[0].depth_minus1; |
| 1352 | 1338 | if (c->srcBpc < 8) |
| 1353 | 1339 | c->srcBpc = 8; |
| @@ -1643,6 +1629,20 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter, · 289 unmodified lines | ||
| 1643 | 1629 | c->chrXInc, c->chrYInc); |
| 1644 | 1630 | } |
| 1645 | 1631 | |
| 1632 | + /* unscaled special cases */ | |
| 1633 | + if (unscaled && !usesHFilter && !usesVFilter && | |
| 1634 | + (c->srcRange == c->dstRange || isAnyRGB(dstFormat))) { | |
| 1635 | + ff_get_unscaled_swscale(c); | |
| 1636 | + | |
| 1637 | + if (c->swscale) { | |
| 1638 | + if (flags & SWS_PRINT_INFO) | |
| 1639 | + av_log(c, AV_LOG_INFO, | |
| 1640 | + "using unscaled %s -> %s special converter\n", | |
| 1641 | + av_get_pix_fmt_name(srcFormat), av_get_pix_fmt_name(dstFormat)); | |
| 1642 | + return 0; | |
| 1643 | + } | |
| 1644 | + } | |
| 1645 | + | |
| 1646 | 1646 | c->swscale = ff_getSwsFunc(c); |
| 1647 | 1647 | return 0; |
| 1648 | 1648 | fail: // FIXME replace things by appropriate error codes |