CodecID.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /*
  2. * Copyright (c) 2023, Stephan Vedder <stephan.vedder@gmail.com>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/Format.h>
  8. namespace Video {
  9. enum class CodecID : u32 {
  10. Unknown,
  11. // On2 / Google
  12. VP8,
  13. VP9,
  14. // MPEG
  15. H261,
  16. MPEG1,
  17. H262,
  18. H263,
  19. H264,
  20. H265,
  21. // AOMedia
  22. AV1,
  23. // Xiph
  24. Theora,
  25. Vorbis,
  26. Opus,
  27. };
  28. }
  29. namespace AK {
  30. template<>
  31. struct Formatter<Video::CodecID> : Formatter<StringView> {
  32. ErrorOr<void> format(FormatBuilder& builder, Video::CodecID value)
  33. {
  34. StringView codec;
  35. switch (value) {
  36. case Video::CodecID::Unknown:
  37. codec = "Unknown"sv;
  38. break;
  39. case Video::CodecID::VP8:
  40. codec = "VP8"sv;
  41. break;
  42. case Video::CodecID::VP9:
  43. codec = "VP9"sv;
  44. break;
  45. case Video::CodecID::H261:
  46. codec = "H.261"sv;
  47. break;
  48. case Video::CodecID::H262:
  49. codec = "H.262"sv;
  50. break;
  51. case Video::CodecID::H263:
  52. codec = "H.263"sv;
  53. break;
  54. case Video::CodecID::H264:
  55. codec = "H.264"sv;
  56. break;
  57. case Video::CodecID::H265:
  58. codec = "H.265"sv;
  59. break;
  60. case Video::CodecID::MPEG1:
  61. codec = "MPEG1"sv;
  62. break;
  63. case Video::CodecID::AV1:
  64. codec = "AV1"sv;
  65. break;
  66. case Video::CodecID::Theora:
  67. codec = "Theora"sv;
  68. break;
  69. case Video::CodecID::Vorbis:
  70. codec = "Vorbis"sv;
  71. break;
  72. case Video::CodecID::Opus:
  73. codec = "Opus"sv;
  74. break;
  75. }
  76. return builder.put_string(codec);
  77. }
  78. };
  79. }