1 /*
2  * Copyright (C) 2017 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.media.cts.bitstreams;
18 
19 /**
20  * This class provides constants and utilities shared between the host-side and device-side test
21  * components.
22  */
23 public class MediaBitstreams {
24 
25     /* options */
26     public static final String OPT_HOST_BITSTREAMS_PATH = "host-bitstreams-path";
27     public static final String OPT_DEVICE_BITSTREAMS_PATH = "device-bitstreams-path";
28     public static final String OPT_DOWNLOAD_BITSTREAMS = "download-bitstreams";
29     public static final String OPT_DEBUG_TARGET_DEVICE = "debug-target-device";
30     public static final String OPT_BITSTREAMS_TO_TEST_TXT = "bitstreams-to-test-txt";
31     public static final String OPT_UTILIZATION_RATE = "utilization-rate";
32     public static final String OPT_NUM_BATCHES = "num-batches";
33     public static final String OPT_LAST_CRASH = "last-crash";
34     public static final String OPT_BITSTREAMS_PREFIX = "prefix";
35 
36     /* defaults */
37     public static final String DEFAULT_HOST_BITSTREAMS_PATH = "TestVectorsIttiam";
38     public static final String DEFAULT_DEVICE_BITSTEAMS_PATH = "/data/local/tmp/TestVectorsIttiam";
39 
40     /* metric keys */
41     public static final String KEY_BITSTREAMS_FORMATS_XML = "bitstreams_formats_xml";
42     public static final String KEY_SUPPORTED_BITSTREAMS_TXT = "supported_bitstreams_txt";
43     public static final String KEY_BITSTREAMS_VALIDATION_TXT = "bitstreams_validation_txt";
44     public static final String KEY_APP_CACHE_DIR = "app_cache_dir";
45     public static final String KEY_ERR_MSG = "err_msg";
46     public static final String KEY_PATH = "path";
47     public static final String KEY_CODEC_NAME = "codec_name";
48     public static final String KEY_STATUS = "status";
49 
50     /* constants */
51     public static final String K_MODULE = "CtsMediaBitstreamsTestCases";
52     public static final String K_BITSTREAMS_LIST_TXT = "bitstreamsFile.txt";
53     public static final String K_TEST_GET_SUPPORTED_BITSTREAMS = "testGetSupportedBitstreams";
54     public static final String K_NATIVE_CRASH = "native crash";
55     public static final String K_UNSUPPORTED = "unsupported";
56     public static final String K_UNAVAILABLE = "unavailable";
57 
58     public static final String DYNAMIC_CONFIG_XML = "DynamicConfig.xml";
59     public static final String DYNAMIC_CONFIG = "dynamicConfig";
60     public static final String DYNAMIC_CONFIG_ENTRY = "entry";
61     public static final String DYNAMIC_CONFIG_KEY = "key";
62     public static final String DYNAMIC_CONFIG_VALUE = "value";
63     public static final String DYNAMIC_CONFIG_PACKAGE = "package";
64     public static final String DYNAMIC_CONFIG_ENFORCE = "enforce";
65 
66     /* utilities */
67     /**
68      * @param bitstreamPath path of individual bitstream relative to bitstreams root,
69      * e.g. {@code h264/../../../../*.mp4}
70      * @return checksum file path for {@code bitstreamPath}, e.g. {@code h264/../../../../*_md5}.
71      */
getMd5Path(String bitstreamPath)72     public static String getMd5Path(String bitstreamPath) {
73         String base = bitstreamPath.replaceAll(".mp4$|.webm$", "");
74         String codec = bitstreamPath.split("/", 2)[0];
75         String md5Path = String.format("%s_%s_md5", base, codec);
76         return md5Path;
77     }
78 
79     /**
80      * @param path relative bitstream path, e.g. {@code h264/../../../../*.mp4}
81      * @param name codec name, e.g. {@code OMX.google.h264.decoder}
82      * @return crash signature for a crashed device decoding session,
83      * in the form of {@code <bitstream path>:<codec name>}
84      */
generateCrashSignature(String path, String name)85     public static String generateCrashSignature(String path, String name) {
86         return String.format("%s:%s", path, name);
87     }
88 
89 }
90