OSDN Git Service

Bump intel-vaapi-driver to 1.8.3.pre1 for development
[android-x86/hardware-intel-common-vaapi.git] / test / i965_avce_test_common.cpp
1 /*
2  * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a
5  * copy of this software and associated documentation files (the
6  * "Software"), to deal in the Software without restriction, including
7  * without limitation the rights to use, copy, modify, merge, publish,
8  * distribute, sub license, and/or sell copies of the Software, and to
9  * permit persons to whom the Software is furnished to do so, subject to
10  * the following conditions:
11  *
12  * The above copyright notice and this permission notice (including the
13  * next paragraph) shall be included in all copies or substantial portions
14  * of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
19  * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
20  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23  */
24
25 #include "i965_avce_test_common.h"
26 #include "i965_test_environment.h"
27
28 namespace AVC {
29 namespace Encode {
30
31 /**
32  * This is similar to i965_validate_config(...) in i965_drv_video.c
33  * except that there are a few other checks in regards to HW support
34  * expectations.
35  */
36 VAStatus CheckSupported(VAProfile profile, VAEntrypoint entrypoint)
37 {
38     I965TestEnvironment *env(I965TestEnvironment::instance());
39     EXPECT_PTR(env);
40
41     struct i965_driver_data *i965(*env);
42     EXPECT_PTR(i965);
43
44     switch(profile) {
45     case VAProfileH264Baseline:
46         return VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
47
48     case VAProfileH264ConstrainedBaseline:
49     case VAProfileH264Main:
50     case VAProfileH264High:
51         if (entrypoint == VAEntrypointEncSlice) {
52             if (HAS_H264_ENCODING(i965)) {
53                 return VA_STATUS_SUCCESS;
54             }
55         } else if (entrypoint == VAEntrypointEncSliceLP) {
56             if (IS_SKL(i965->intel.device_info)) {
57                 return VA_STATUS_SUCCESS;
58             }
59             if (HAS_LP_H264_ENCODING(i965)) {
60                 return VA_STATUS_SUCCESS;
61             }
62         }
63         break;
64
65     case VAProfileH264MultiviewHigh:
66     case VAProfileH264StereoHigh:
67         if (entrypoint == VAEntrypointEncSlice) {
68             if (HAS_H264_MVC_ENCODING(i965)) {
69                 return VA_STATUS_SUCCESS;
70             }
71         }
72         break;
73
74     default:
75         return VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
76     }
77
78     return VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
79 }
80
81 bool IsSupported(VAProfile profile, VAEntrypoint entrypoint)
82 {
83     return VA_STATUS_SUCCESS == CheckSupported(profile, entrypoint);
84 }
85
86 } // namespace Encode
87 } // namespace AVC