diff options
| author | Xiaoqing MA <[email protected]> | 2018-07-10 11:28:12 +0800 |
|---|---|---|
| committer | Xiaoqing MA <[email protected]> | 2018-07-10 11:28:12 +0800 |
| commit | e3ab96d65fbfc7d0d49018b80b3055f4369b07b8 (patch) | |
| tree | 619f8d58f8a736984f2dfa1f127405e065f00583 | |
| parent | 912d29a25efffe1274c291fe3e3b92edbd57aaee (diff) | |
new ed5
| -rw-r--r-- | bin/test | bin | 0 -> 14600 bytes | |||
| -rw-r--r-- | bin/test_dir | bin | 0 -> 18896 bytes | |||
| -rw-r--r-- | inc/vdefine.h | 34 | ||||
| -rw-r--r-- | lib/libvdefine.a | bin | 0 -> 8906 bytes | |||
| -rw-r--r-- | obj/vdefine.o | bin | 0 -> 8544 bytes | |||
| -rw-r--r-- | src/test.c | 124 | ||||
| -rw-r--r-- | src/test_dir.c | 150 |
7 files changed, 308 insertions, 0 deletions
diff --git a/bin/test b/bin/test Binary files differnew file mode 100644 index 0000000..dd8f164 --- /dev/null +++ b/bin/test diff --git a/bin/test_dir b/bin/test_dir Binary files differnew file mode 100644 index 0000000..0aaab0f --- /dev/null +++ b/bin/test_dir diff --git a/inc/vdefine.h b/inc/vdefine.h new file mode 100644 index 0000000..3d6b0e0 --- /dev/null +++ b/inc/vdefine.h @@ -0,0 +1,34 @@ +#ifndef _VDEFINE_H +#define _VDEFINE_H + +#include <arpa/inet.h> +#include <stdlib.h> +#define _GNU_SOURCE +#define __USE_GNU +#include <string.h> +#include <stdio.h> +#include <math.h> +#include <sys/types.h> + +#include <sys/io.h> + +#include <arpa/inet.h> + +extern const char *mp4_box_type_all[]; +extern int count_type; + +int is_mpeg_ts_each(const char *buff_each, size_t size_each, const char *buff, size_t size); +int is_mpeg_ts(const char* buff, size_t size); +void *memchr_flv(const char *buff_each, size_t size_each); +int is_flv_each(const char* buff_each, size_t size_each,const char *buff); +int is_flv(const char* buff, size_t size); +int is_mp4_part_spe(const char *buff);//, int count_type) +int c_is_mp3(char c); +int is_mp4_part(const char *buff_part); +void *memmem_mp4(const char *buff_each, size_t size_each); +int is_mp4_each(const char* buff_each, size_t size_each, const char *buff);//, int count_type) +int is_mp4(const char* buff, size_t size); +int AV_container_identify(const char* buff, size_t size); + + +#endif diff --git a/lib/libvdefine.a b/lib/libvdefine.a Binary files differnew file mode 100644 index 0000000..2d6e4ab --- /dev/null +++ b/lib/libvdefine.a diff --git a/obj/vdefine.o b/obj/vdefine.o Binary files differnew file mode 100644 index 0000000..00a558d --- /dev/null +++ b/obj/vdefine.o diff --git a/src/test.c b/src/test.c new file mode 100644 index 0000000..6dbc11e --- /dev/null +++ b/src/test.c @@ -0,0 +1,124 @@ +#include "vdefine.h" +#define SIZE_BUFF 16*16*16*16*16*16*16*16-1//6*16*16*16*16*16 +#include <dirent.h> +#include <sys/stat.h> +#include <unistd.h> +typedef struct buff_inf_h +{ + char *buff; + size_t size; +}buff_inf; + +buff_inf *buff_get(char *vfile) { + buff_inf *buff_inf_h = (buff_inf *)malloc(sizeof(buff_inf)); + + FILE *fr = NULL; + char *buff_ori = (char *)malloc(sizeof(char *)*SIZE_BUFF);//CH + char *buff = buff_ori;//CH + memset(buff, 0, sizeof(buff)); + if ((fr = fopen(vfile, "rb")) == NULL) + { + perror("fopen error:"); + buff_inf_h->buff = NULL; + buff_inf_h->size = 0; + return buff_inf_h;//-1; + } + size_t i = 0;//unsigned int i = 0;//size_t i = 0; + //int j = 0; + while (!feof(fr)) + { + fread(buff, 1, 1, fr); + buff += 1; + i++; + } + buff_inf_h->buff = (char *)malloc(sizeof(char *) * (i-1));//(i-2)); + memcpy(buff_inf_h->buff, buff - i, i-1);//i-2); + buff_inf_h->size = i-1;//i - 2; + //buff_inf_h.buff = buff - i; + //buff_inf_h.size = i; + free(buff_ori);//CH--free(buff - i);//? + buff_ori = NULL; + fclose(fr); + return buff_inf_h; + +} +int main(int argc, char *argv[]) +{ + char *vfile = argv[1]; + buff_inf *buff_inf_h; + //CH--char *buff;// = (char *)malloc(sizeof(char *)*size);//; + int ret; + int ret_sig = atoi(argv[2]); + int sig_show_all = atoi(argv[3]); + int sig_choose_all = atoi(argv[4]); + size_t size; + + buff_inf_h = buff_get(vfile); + if (buff_inf_h->size == 0) + { + printf("read file failed.\n"); + return -1; + } + if (sig_choose_all == 0) + { + int divide_h = 10; + int divide_s = 0; + int divide_e = 1; + + size = (buff_inf_h->size / divide_h)*(divide_e - divide_s); + + //CH--buff = (char *)malloc(sizeof(char *)*size); + //CH--memcpy(buff, buff_inf_h->buff + (buff_inf_h->size / divide_h)*divide_s, size); + + //printf("buff_whole is %p.\n", buff_inf_h->buff); + //printf("buff_inf_h.size/divide_h is %x.\n", buff_inf_h->size / divide_h); + //printf("buff starts from(>=) %p.\n", buff); + //printf("buff ends at(<) %p.\n", buff + size - 1);//+size + ret = AV_container_identify(buff_inf_h->buff + (buff_inf_h->size / divide_h)*divide_s, size);;//CCH--ret = AV_container_identify(buff, size);//CH--(const char *)? + //CH--free(buff); + //CH--buff = NULL; + //printf("define : %d.\n", ret); + //printf("size of whole buff is %d.\n", buff_inf_h->size);//size - 1 + //printf("size of chosen buff is %d.\n", size); + } + else + ret = AV_container_identify(buff_inf_h->buff, buff_inf_h->size); + if (sig_show_all == 0) + { + if (ret != ret_sig) + { + printf("-----------------data of [%s] is kind of [%d].\n",vfile,ret);// dp->d_name, ret); + //printf("define : %d.\n", ret); + printf("size of whole buff is %d.\n", buff_inf_h->size); + if (sig_choose_all == 0) + printf("size of chosen buff is %d.\n", size); + + } + } + else + { + printf("-----------------data of [%s] is kind of [%d].\n", vfile, ret);// dp->d_name, ret); + printf("size of whole buff is %d.\n", buff_inf_h->size); + if (sig_choose_all == 0) + printf("size of chosen buff is %d.\n", size); + } + free(buff_inf_h->buff);//CH-- + buff_inf_h->buff = NULL;//CH-- + free(buff_inf_h);//CH-- + buff_inf_h = NULL;//CH-- + /* + free(buff); + + free(buff_inf_h->buff); + buff_inf_h = NULL; + free(buff_inf_h); + return ret; + */ + + //CH--free(buff_inf_h->buff); + //CH--buff_inf_h = NULL; + //CH--free(buff_inf_h); + + + return ret; +} diff --git a/src/test_dir.c b/src/test_dir.c new file mode 100644 index 0000000..9a007ce --- /dev/null +++ b/src/test_dir.c @@ -0,0 +1,150 @@ +#include "vdefine.h" +#define SIZE_BUFF 16*16*16*16*16*16*16*16-1//6*16*16*16*16*16 +#include <dirent.h> +#include <sys/stat.h> +#include <unistd.h> +#define SIZE_FILE 50 +typedef struct buff_inf_h +{ + char *buff; + size_t size; +}buff_inf; + +buff_inf *buff_get(char *vfile) { + buff_inf *buff_inf_h = (buff_inf *)malloc(sizeof(buff_inf)); + + FILE *fr = NULL; + char *buff_ori = (char *)malloc(sizeof(char *)*SIZE_BUFF);//CH + char *buff = buff_ori;//CH + memset(buff, 0, sizeof(buff)); + if ((fr = fopen(vfile, "rb")) == NULL) + { + perror("fopen error:"); + buff_inf_h->buff = NULL; + buff_inf_h->size = 0; + return buff_inf_h;//-1; + } + size_t i = 0;//unsigned int i = 0;//size_t i = 0; + //int j = 0; + while (!feof(fr)) + { + fread(buff, 1, 1, fr); + buff += 1; + i++; + } + buff_inf_h->buff = (char *)malloc(sizeof(char *) * (i-1));//(i-2)); + memcpy(buff_inf_h->buff, buff - i, i-1);//i-2); + buff_inf_h->size = i-1;//i - 2; + //buff_inf_h.buff = buff - i; + //buff_inf_h.size = i; + free(buff_ori);//CH--free(buff - i);//? + buff_ori = NULL; + fclose(fr); + return buff_inf_h; + +} +int main(int argc, char *argv[]) +{ + DIR *dirp; + struct dirent *dp; + char *vdir = argv[1]; + char *vfile_ori = (char *)malloc(SIZE_FILE); + memcpy(vfile_ori,vdir,strlen(vdir)); + strcat(vfile_ori, "/"); + char *vfile = (char *)malloc(SIZE_FILE); + //strcat(vdir,".dir"); + dirp = opendir(vdir); + struct stat info; + + buff_inf *buff_inf_h; + //CH--char *buff;// = (char *)malloc(sizeof(char *)*size);//; + int ret; + int ret_sig = atoi(argv[2]); + int sig_show_all = atoi(argv[3]); + int sig_choose_all = atoi(argv[4]); + size_t size; + int divide_h; + int divide_s; + int divide_e; + while ((dp = readdir(dirp)) != NULL) + { + memcpy(vfile,vfile_ori,SIZE_FILE); + strncat(vfile, dp->d_name, strlen(dp->d_name));//strcat(vfile,dp->d_name);//vfile = dp->d_name;//fileinfo->name;//&((fileinfo->name)[0]);//argv[1];// "0003.dat"; + + stat(vfile, &info); + if(S_ISDIR(info.st_mode)) + continue; + buff_inf_h = buff_get(vfile); + if (buff_inf_h->size == 0) + { + printf("read file failed of %s.\n",vfile); + return -1; + } + if (sig_choose_all == 0) + { + divide_h = 10;//atoi(argv[5]);//10; + divide_s = 0;//atoi(argv[6]);//0; + divide_e = 1;//atoi(argv[7]);//1; + + size = (buff_inf_h->size / divide_h)*(divide_e - divide_s); + //size = atoi(argv[7]); + //divide_e = (buff_inf_h->size / divide_h)*(divide_h-divide_s); + //size = size>divide_e?divide_e:size; + //CH--buff = (char *)malloc(sizeof(char *)*size); + //CH--memcpy(buff, buff_inf_h->buff + (buff_inf_h->size / divide_h)*divide_s, size); + + //printf("buff_whole is %p.\n", buff_inf_h->buff); + //printf("buff_inf_h.size/divide_h is %x.\n", buff_inf_h->size / divide_h); + //printf("buff starts from(>=) %p.\n", buff); + //printf("buff ends at(<) %p.\n", buff + size - 1);//+size + ret = AV_container_identify(buff_inf_h->buff + (buff_inf_h->size / divide_h)*divide_s, size);;//CCH--ret = AV_container_identify(buff, size);//CH--(const char *)? + //CH--free(buff); + //CH--buff = NULL; + //printf("define : %d.\n", ret); + //printf("size of whole buff is %d.\n", buff_inf_h->size);//size - 1 + //printf("size of chosen buff is %d.\n", size); + } + else + ret = AV_container_identify(buff_inf_h->buff, buff_inf_h->size); + if (sig_show_all == 0) + { + if (ret != ret_sig) + { + printf("-----------------data of [%s] is kind of [%d].\n", dp->d_name, ret); + //printf("define : %d.\n", ret); + printf("size of whole buff is %d.\n", buff_inf_h->size); + if (sig_choose_all == 0) + printf("size of chosen buff is %d.\n", size); + + } + } + else + { + printf("-----------------data of [%s] is kind of [%d].\n", dp->d_name, ret); + printf("size of whole buff is %d.\n", buff_inf_h->size); + if (sig_choose_all == 0) + printf("size of chosen buff is %d.\n", size); + } + free(buff_inf_h->buff);//CH-- + buff_inf_h->buff = NULL;//CH-- + free(buff_inf_h);//CH-- + buff_inf_h = NULL;//CH-- + } + /* + free(buff); + + free(buff_inf_h->buff); + buff_inf_h = NULL; + free(buff_inf_h); + return ret; + */ + + //CH--free(buff_inf_h->buff); + //CH--buff_inf_h = NULL; + //CH--free(buff_inf_h); + + free(vfile); + free(vfile_ori); + + return ret; +} |
