1 /*
2  * Copyright (c) 2022 Shenzhen Kaihong DID Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  * 		http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #ifndef PARSE_COMMAND_H
16 #define PARSE_COMMAND_H
17 #include <cinttypes>
18 #include <string>
19 enum class CodecMime { AVC, HEVC, MPEG4, VP9 };
20 enum class ColorFormat { YUV420SP = 0, RGBA8888, BGRA8888 };
21 enum class MyOptIndex {
22     OPT_INDEX_UNKONWN = 0,
23     OPT_INDEX_BUFFER_HANDLE,
24     OPT_INDEX_HEVC,
25     OPT_INDEX_MPEG4,
26     OPT_INDEX_VP9,
27     OPT_INDEX_HELP,
28     OPT_INDEX_HEIGHT = 'h',
29     OPT_INDEX_INPUT = 'i',
30     OPT_INDEX_OUTPUT = 'o',
31     OPT_INDEX_WIDTH = 'w',
32     OPT_INDEX_COLOR = 'c'
33 };
34 struct CommandOpt {
35     std::string fileInput = "";
36     std::string fileOutput = "";
37     uint32_t width = 0;
38     uint32_t height = 0;
39     bool useBuffer = false;
40     CodecMime codec = CodecMime::AVC;
41     ColorFormat colorForamt = ColorFormat::YUV420SP;
42 };
43 
44 class CommandParse {
45 public:
CommandParse()46     CommandParse()
47     {}
~CommandParse()48     ~CommandParse()
49     {}
50     bool Parse(int argc, char *argv[], CommandOpt &opt);
51 
52 private:
53     void ShowUsage();
54     void ParseCodingType(const MyOptIndex index, CommandOpt &opt);
55 };
56 #endif