PageRenderTime 45ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/media/base/video_types.h

https://gitlab.com/jonnialva90/iridium-browser
C Header | 74 lines | 42 code | 10 blank | 22 comment | 0 complexity | 8f79e63f232f8a3e5fc27ef6e7262e79 MD5 | raw file
  1. // Copyright 2015 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef MEDIA_BASE_VIDEO_TYPES_H_
  5. #define MEDIA_BASE_VIDEO_TYPES_H_
  6. #include <string>
  7. #include "build/build_config.h"
  8. #include "media/base/media_export.h"
  9. namespace media {
  10. // Pixel formats roughly based on FOURCC labels, see:
  11. // http://www.fourcc.org/rgb.php and http://www.fourcc.org/yuv.php
  12. // Logged to UMA, so never reuse values. Leave gaps if necessary.
  13. // Ordered as planar, semi-planar, YUV-packed, and RGB formats.
  14. enum VideoPixelFormat {
  15. PIXEL_FORMAT_UNKNOWN = 0, // Unknown or unspecified format value.
  16. PIXEL_FORMAT_I420 =
  17. 1, // 12bpp YUV planar 1x1 Y, 2x2 UV samples, a.k.a. YU12.
  18. PIXEL_FORMAT_YV12 = 2, // 12bpp YVU planar 1x1 Y, 2x2 VU samples.
  19. PIXEL_FORMAT_YV16 = 3, // 16bpp YVU planar 1x1 Y, 2x1 VU samples.
  20. PIXEL_FORMAT_YV12A = 4, // 20bpp YUVA planar 1x1 Y, 2x2 VU, 1x1 A samples.
  21. PIXEL_FORMAT_YV24 = 5, // 24bpp YUV planar, no subsampling.
  22. PIXEL_FORMAT_NV12 =
  23. 6, // 12bpp with Y plane followed by a 2x2 interleaved UV plane.
  24. PIXEL_FORMAT_NV21 =
  25. 7, // 12bpp with Y plane followed by a 2x2 interleaved VU plane.
  26. PIXEL_FORMAT_UYVY =
  27. 8, // 16bpp interleaved 2x1 U, 1x1 Y, 2x1 V, 1x1 Y samples.
  28. PIXEL_FORMAT_YUY2 =
  29. 9, // 16bpp interleaved 1x1 Y, 2x1 U, 1x1 Y, 2x1 V samples.
  30. PIXEL_FORMAT_ARGB = 10, // 32bpp ARGB, 1 plane.
  31. PIXEL_FORMAT_XRGB = 11, // 24bpp XRGB, 1 plane.
  32. PIXEL_FORMAT_RGB24 = 12, // 24bpp BGR, 1 plane.
  33. PIXEL_FORMAT_RGB32 = 13, // 32bpp BGRA, 1 plane.
  34. PIXEL_FORMAT_MJPEG = 14, // MJPEG compressed.
  35. // MediaTek proprietary format. MT21 is similar to NV21 except the memory
  36. // layout and pixel layout (swizzles). 12bpp with Y plane followed by a 2x2
  37. // interleaved VU plane. Each image contains two buffers -- Y plane and VU
  38. // plane. Two planes can be non-contiguous in memory. The starting addresses
  39. // of Y plane and VU plane are 4KB alignment.
  40. // Suppose image dimension is (width, height). For both Y plane and VU plane:
  41. // Row pitch = ((width+15)/16) * 16.
  42. // Plane size = Row pitch * (((height+31)/32)*32)
  43. PIXEL_FORMAT_MT21 = 15,
  44. // Please update UMA histogram enumeration when adding new formats here.
  45. PIXEL_FORMAT_MAX =
  46. PIXEL_FORMAT_MT21, // Must always be equal to largest entry logged.
  47. };
  48. // Color space or color range used for the pixels.
  49. // Logged to UMA, so never reuse values. Leave gaps if necessary.
  50. enum ColorSpace {
  51. COLOR_SPACE_UNSPECIFIED = 0, // In general this is Rec601.
  52. // The JPEG color space is the combination of Rec.601 and full range colors
  53. // (aka pc range colors).
  54. COLOR_SPACE_JPEG = 1,
  55. COLOR_SPACE_HD_REC709 = 2, // Rec709 "HD" color space.
  56. COLOR_SPACE_SD_REC601 = 3, // Rec601 "SD" color space.
  57. COLOR_SPACE_MAX = COLOR_SPACE_SD_REC601,
  58. };
  59. // Returns the name of a Format as a string.
  60. MEDIA_EXPORT std::string VideoPixelFormatToString(VideoPixelFormat format);
  61. // Returns true if |format| is a YUV format with multiple planes.
  62. MEDIA_EXPORT bool IsYuvPlanar(VideoPixelFormat format);
  63. } // namespace media
  64. #endif // MEDIA_BASE_VIDEO_TYPES_H_