summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXiaoqing MA <[email protected]>2018-07-10 11:28:12 +0800
committerXiaoqing MA <[email protected]>2018-07-10 11:28:12 +0800
commite3ab96d65fbfc7d0d49018b80b3055f4369b07b8 (patch)
tree619f8d58f8a736984f2dfa1f127405e065f00583
parent912d29a25efffe1274c291fe3e3b92edbd57aaee (diff)
new ed5
-rw-r--r--bin/testbin0 -> 14600 bytes
-rw-r--r--bin/test_dirbin0 -> 18896 bytes
-rw-r--r--inc/vdefine.h34
-rw-r--r--lib/libvdefine.abin0 -> 8906 bytes
-rw-r--r--obj/vdefine.obin0 -> 8544 bytes
-rw-r--r--src/test.c124
-rw-r--r--src/test_dir.c150
7 files changed, 308 insertions, 0 deletions
diff --git a/bin/test b/bin/test
new file mode 100644
index 0000000..dd8f164
--- /dev/null
+++ b/bin/test
Binary files differ
diff --git a/bin/test_dir b/bin/test_dir
new file mode 100644
index 0000000..0aaab0f
--- /dev/null
+++ b/bin/test_dir
Binary files differ
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
new file mode 100644
index 0000000..2d6e4ab
--- /dev/null
+++ b/lib/libvdefine.a
Binary files differ
diff --git a/obj/vdefine.o b/obj/vdefine.o
new file mode 100644
index 0000000..00a558d
--- /dev/null
+++ b/obj/vdefine.o
Binary files differ
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;
+}