📄 process.c
字号:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <sys/mman.h>#include <unistd.h>#include "dec.h"#include "cmv.h"int use_cmv = 0;struct cmv_data data;int bb = 0;unsigned char src[YUV_SIZE];char *filename;static inline void print_help(char *argv0) { fprintf(stderr, "Usage: %s [option] file\n" "-c s\tset color file s\n" "-b\tshow bounding box\n" "-h\tprint this help\n", argv0);}void process(int argc, char *argv[]) { char cfilename[64]; for (;;) { int t = getopt(argc, argv, "c:bh"); if (t == -1) { break; } switch (t) { case 'c': if (sscanf(optarg, "%s", cfilename) != 1) { fprintf(stderr, "error optarg: %s\n", optarg); exit(-1); } use_cmv = 1; break; case 'b': bb = 1; break; case 'h': print_help(argv[0]); exit(0); case '?': break; default: fprintf(stderr, "error option: %d\n", t); exit(-1); } } if (argc - optind != 1) { print_help(argv[0]); exit(-1); } filename = argv[optind]; int fd = open(filename, O_RDONLY); if (fd < 0) { perror(filename); exit(-1); } char *suffix = strrchr(filename, '.'); if (suffix == NULL) { fprintf(stderr, "unknown filename: %s\n", filename); exit(-1); } ++suffix; if (!strcmp(suffix, "raw")) { unsigned char *raw = mmap(NULL, RAW_SIZE, PROT_READ, MAP_SHARED, fd, 0); if (raw == MAP_FAILED) { perror("mmap"); exit(-1); } dec_init(); dec_process(raw, src); } else { fprintf(stderr, "unknown filename: %s\n", filename); exit(-1); } if (use_cmv) { cmv_init(&data, cfilename); printf("using color file %s\n", cfilename); cmv_process(&data, src); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -