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.

81 lines
2.2KB

  1. /*
  2. * Copyright (c) 2013 Guillaume Martres <smarter@ubuntu.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 <vpx/vpx_codec.h>
  21. #include "libvpx.h"
  22. #include "config.h"
  23. #if CONFIG_LIBVPX_VP9_ENCODER
  24. #include <vpx/vpx_encoder.h>
  25. #include <vpx/vp8cx.h>
  26. #endif
  27. static const enum AVPixelFormat vp9_pix_fmts_def[] = {
  28. AV_PIX_FMT_YUV420P,
  29. AV_PIX_FMT_YUVA420P,
  30. AV_PIX_FMT_NONE
  31. };
  32. #if CONFIG_LIBVPX_VP9_ENCODER
  33. static const enum AVPixelFormat vp9_pix_fmts_highcol[] = {
  34. AV_PIX_FMT_YUV420P,
  35. AV_PIX_FMT_YUVA420P,
  36. AV_PIX_FMT_YUV422P,
  37. AV_PIX_FMT_YUV440P,
  38. AV_PIX_FMT_YUV444P,
  39. AV_PIX_FMT_GBRP,
  40. AV_PIX_FMT_NONE
  41. };
  42. static const enum AVPixelFormat vp9_pix_fmts_highbd[] = {
  43. AV_PIX_FMT_YUV420P,
  44. AV_PIX_FMT_YUVA420P,
  45. AV_PIX_FMT_YUV422P,
  46. AV_PIX_FMT_YUV440P,
  47. AV_PIX_FMT_YUV444P,
  48. AV_PIX_FMT_YUV420P10,
  49. AV_PIX_FMT_YUV422P10,
  50. AV_PIX_FMT_YUV440P10,
  51. AV_PIX_FMT_YUV444P10,
  52. AV_PIX_FMT_YUV420P12,
  53. AV_PIX_FMT_YUV422P12,
  54. AV_PIX_FMT_YUV440P12,
  55. AV_PIX_FMT_YUV444P12,
  56. AV_PIX_FMT_GBRP,
  57. AV_PIX_FMT_GBRP10,
  58. AV_PIX_FMT_GBRP12,
  59. AV_PIX_FMT_NONE
  60. };
  61. #endif
  62. av_cold void ff_vp9_init_static(AVCodec *codec)
  63. {
  64. codec->pix_fmts = vp9_pix_fmts_def;
  65. #if CONFIG_LIBVPX_VP9_ENCODER
  66. {
  67. vpx_codec_caps_t codec_caps = vpx_codec_get_caps(vpx_codec_vp9_cx());
  68. if (codec_caps & VPX_CODEC_CAP_HIGHBITDEPTH)
  69. codec->pix_fmts = vp9_pix_fmts_highbd;
  70. else
  71. codec->pix_fmts = vp9_pix_fmts_highcol;
  72. }
  73. #endif
  74. }