Gamma 2.2 and Gamma 2.8 are tagged in the file as 0.45455 and 0.35714, respectively (i.e. 1/2.2 and 1/2.8). Trying to identify them as 2.2 and 2.8 instead of these values will cause the transfer function to not properly be recognized. This patch fixes this.
Unified · Split
| @@ -167,9 +167,9 @@ static enum AVColorTransferCharacteristic libjxl_get_trc(void *avctx, const JxlC · 166 unmodified lines | ||
| 167 | 167 | case JXL_TRANSFER_FUNCTION_DCI: return AVCOL_TRC_SMPTE428; |
| 168 | 168 | case JXL_TRANSFER_FUNCTION_HLG: return AVCOL_TRC_ARIB_STD_B67; |
| 169 | 169 | case JXL_TRANSFER_FUNCTION_GAMMA: |
| 170 | − if (jxl_color->gamma > 2.199 && jxl_color->gamma < 2.201) | |
| 170 | + if (jxl_color->gamma > 0.45355 && jxl_color->gamma < 0.45555) | |
| 171 | 171 | return AVCOL_TRC_GAMMA22; |
| 172 | − else if (jxl_color->gamma > 2.799 && jxl_color->gamma < 2.801) | |
| 172 | + else if (jxl_color->gamma > 0.35614 && jxl_color->gamma < 0.35814) | |
| 173 | 173 | return AVCOL_TRC_GAMMA28; |
| 174 | 174 | else |
| 175 | 175 | av_log(avctx, AV_LOG_WARNING, "Unsupported gamma transfer: %f\n", jxl_color->gamma); |