]> git.sesse.net Git - casparcg/blob - core/format/pixel_format.h
2.0.0.2:
[casparcg] / core / format / pixel_format.h
1 #pragma once\r
2 \r
3 #include <memory>\r
4 #include <array>\r
5 \r
6 namespace caspar { namespace core {\r
7         \r
8 struct pixel_format\r
9 {\r
10         enum type\r
11         {\r
12                 bgra,\r
13                 rgba,\r
14                 argb,\r
15                 abgr,\r
16                 ycbcr,\r
17                 ycbcra,\r
18                 count,\r
19                 invalid\r
20         };\r
21 };\r
22 \r
23 struct pixel_format_desc\r
24 {\r
25         struct plane\r
26         {\r
27                 plane() : linesize(0), width(0), height(0), size(0), channels(0){}\r
28                 plane(size_t width, size_t height, size_t channels)\r
29                         : linesize(width*channels), width(width), height(height), size(width*height*channels), channels(channels)\r
30                 {}\r
31                 size_t linesize;\r
32                 size_t width;\r
33                 size_t height;\r
34                 size_t size;\r
35                 size_t channels;\r
36         };\r
37 \r
38         pixel_format_desc() : pix_fmt(pixel_format::invalid)\r
39         {\r
40                 std::fill(planes.begin(), planes.end(), plane());\r
41         }\r
42 \r
43         pixel_format::type pix_fmt;\r
44 \r
45         std::array<plane, 4> planes;\r
46 };\r
47         \r
48 }}