summaryrefslogtreecommitdiff
path: root/graphics/mapper/2.0/types.hal
blob: 2291f70085c45d7099a90a11670e04c62fc50bb1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/*
 * Copyright (C) 2016 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.hardware.graphics.mapper@2.0;

enum Error : int32_t {
    NONE            = 0, /* no error */
    BAD_DESCRIPTOR  = 1, /* invalid BufferDescriptor */
    BAD_BUFFER      = 2, /* invalid buffer handle */
    BAD_VALUE       = 3, /* invalid width, height, etc. */
    /* 4 is reserved */
    NO_RESOURCES    = 5, /* temporary failure due to resource contention */
    /* 6 is reserved */
    UNSUPPORTED     = 7, /* permanent failure */
};

/**
 * A buffer descriptor is an implementation-defined opaque data returned by
 * createDescriptor. It describes the properties of a buffer and is consumed
 * by the allocator.
 */
typedef vec<uint32_t> BufferDescriptor;

/**
 * Structure for describing YCbCr formats for consumption by applications.
 * This is used with PixelFormat::YCBCR_*_888.
 *
 * Buffer chroma subsampling is defined in the format.
 * e.g. PixelFormat::YCBCR_420_888 has subsampling 4:2:0.
 *
 * Buffers must have a 8 bit depth.
 *
 * y, cb, and cr point to the first byte of their respective planes.
 *
 * Stride describes the distance in bytes from the first value of one row of
 * the image to the first value of the next row. It includes the width of the
 * image plus padding.
 * yStride is the stride of the luma plane.
 * cStride is the stride of the chroma planes.
 *
 * chromaStep is the distance in bytes from one chroma pixel value to the
 * next. This is 2 bytes for semiplanar (because chroma values are interleaved
 * and each chroma value is one byte) and 1 for planar.
 */
struct YCbCrLayout {
    pointer y;
    pointer cb;
    pointer cr;
    uint32_t yStride;
    uint32_t cStride;
    uint32_t chromaStep;
};