FrameFormat.cs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. namespace Ryujinx.Graphics.Vic.Types
  2. {
  3. enum FrameFormat
  4. {
  5. Progressive,
  6. InterlacedTopFieldFirst,
  7. InterlacedBottomFieldFirst,
  8. TopField,
  9. BottomField,
  10. SubPicProgressive,
  11. SubPicInterlacedTopFieldFirst,
  12. SubPicInterlacedBottomFieldFirst,
  13. SubPicTopField,
  14. SubPicBottomField,
  15. TopFieldChromaBottom,
  16. BottomFieldChromaTop,
  17. SubPicTopFieldChromaBottom,
  18. SubPicBottomFieldChromaTop
  19. }
  20. static class FrameFormatExtensions
  21. {
  22. public static bool IsField(this FrameFormat frameFormat)
  23. {
  24. switch (frameFormat)
  25. {
  26. case FrameFormat.TopField:
  27. case FrameFormat.BottomField:
  28. case FrameFormat.SubPicTopField:
  29. case FrameFormat.SubPicBottomField:
  30. case FrameFormat.TopFieldChromaBottom:
  31. case FrameFormat.BottomFieldChromaTop:
  32. case FrameFormat.SubPicTopFieldChromaBottom:
  33. case FrameFormat.SubPicBottomFieldChromaTop:
  34. return true;
  35. }
  36. return false;
  37. }
  38. public static bool IsInterlaced(this FrameFormat frameFormat)
  39. {
  40. switch (frameFormat)
  41. {
  42. case FrameFormat.InterlacedTopFieldFirst:
  43. case FrameFormat.InterlacedBottomFieldFirst:
  44. case FrameFormat.SubPicInterlacedTopFieldFirst:
  45. case FrameFormat.SubPicInterlacedBottomFieldFirst:
  46. return true;
  47. }
  48. return false;
  49. }
  50. public static bool IsInterlacedBottomFirst(this FrameFormat frameFormat)
  51. {
  52. return frameFormat == FrameFormat.InterlacedBottomFieldFirst ||
  53. frameFormat == FrameFormat.SubPicInterlacedBottomFieldFirst;
  54. }
  55. public static bool IsTopField(this FrameFormat frameFormat, bool isLuma)
  56. {
  57. switch (frameFormat)
  58. {
  59. case FrameFormat.TopField:
  60. case FrameFormat.SubPicTopField:
  61. return true;
  62. case FrameFormat.TopFieldChromaBottom:
  63. case FrameFormat.SubPicTopFieldChromaBottom:
  64. return isLuma;
  65. case FrameFormat.BottomFieldChromaTop:
  66. case FrameFormat.SubPicBottomFieldChromaTop:
  67. return !isLuma;
  68. }
  69. return false;
  70. }
  71. }
  72. }