You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

53 lines
1.7KB

  1. /*
  2. * Copyright (c) 2015 Kevin Wheatley <kevin.j.wheatley@gmail.com>
  3. *
  4. * This file is part of FFmpeg.
  5. *
  6. * FFmpeg is free software; you can redistribute it and/or
  7. * modify it under the terms of the GNU Lesser General Public
  8. * License as published by the Free Software Foundation; either
  9. * version 2.1 of the License, or (at your option) any later version.
  10. *
  11. * FFmpeg is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  14. * Lesser General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU Lesser General Public
  17. * License along with FFmpeg; if not, write to the Free Software
  18. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  19. */
  20. #include "libavutil/color_utils.h"
  21. #include "libavutil/pixfmt.h"
  22. double avpriv_get_gamma_from_trc(enum AVColorTransferCharacteristic trc)
  23. {
  24. double gamma;
  25. switch (trc) {
  26. case AVCOL_TRC_BT709:
  27. case AVCOL_TRC_SMPTE170M:
  28. case AVCOL_TRC_SMPTE240M:
  29. case AVCOL_TRC_BT1361_ECG:
  30. case AVCOL_TRC_BT2020_10:
  31. case AVCOL_TRC_BT2020_12:
  32. /* these share a segmented TRC, but gamma 1.961 is a close
  33. approximation, and also more correct for decoding content */
  34. gamma = 1.961;
  35. break;
  36. case AVCOL_TRC_GAMMA22:
  37. case AVCOL_TRC_IEC61966_2_1:
  38. gamma = 2.2;
  39. break;
  40. case AVCOL_TRC_GAMMA28:
  41. gamma = 2.8;
  42. break;
  43. case AVCOL_TRC_LINEAR:
  44. gamma = 1.0;
  45. break;
  46. default:
  47. gamma = 0.0; // Unknown value representation
  48. }
  49. return gamma;
  50. }