update mp4write to exclude alarm clips so they upload to the cloud properly

This commit is contained in:
Alfonso Gamboa 2022-05-20 13:40:59 -07:00
parent 4abbd21bab
commit 35988bec3b
3 changed files with 27 additions and 8 deletions

Binary file not shown.

Binary file not shown.

View File

@ -8,8 +8,10 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
static int (*original_mp4write_start_handler)(void *handler, char *file, void *config); static int (*original_mp4write_start_handler)(void *handler, char *file, void *config);
static int mp4WriteEnable = 0; static int mp4WriteEnable = 0;
char *mp4Write(int fd, char *tokenPtr) { char *mp4Write(int fd, char *tokenPtr) {
@ -29,24 +31,41 @@ char *mp4Write(int fd, char *tokenPtr) {
return "error in mp4write.c"; return "error in mp4write.c";
} }
int mp4write_start_handler(void *handler, char *file, void *config) {
int mp4write_start_handler(void *handler, char *file, void *config, char *tokenPtr) {
if(mp4WriteEnable) { if(mp4WriteEnable) {
struct stat st = {0}; const char* folder;
folder = "/media/mmc/record/tmp";
struct stat sb;
if(!strncmp(file, "/tmp/", 5)) { printf("[command] mp4write.c: checking for temporary record directory\n");
char buf[64];
strncpy(buf, file + 5, 30); if (stat(folder, &sb) == 0 && S_ISDIR(sb.st_mode)) {
if (stat("/media/mmc/record/tmp", &st) == -1) { printf("[command] mp4write.c: temporary directory exists.\n");
} else {
printf("[command] mp4write.c: directory missing, creating directory\n");
mkdir("/media/mmc/record/tmp", 0700); mkdir("/media/mmc/record/tmp", 0700);
} }
printf("mp4write.c: filename: %s\n", file);
if(!strncmp(file, "/tmp/alarm_", 11)) {
printf("mp4write.c: alarm, skipping\n", file);
return (original_mp4write_start_handler)(handler, file, config);
} else if(!strncmp(file, "/tmp/", 5)) {
char buf[64];
strncpy(buf, file + 5, 30);
strcpy(file, "/media/mmc/record/tmp/"); strcpy(file, "/media/mmc/record/tmp/");
strcat(file, buf); strcat(file, buf);
} }
} }
return (original_mp4write_start_handler)(handler, file, config); return (original_mp4write_start_handler)(handler, file, config);
} }
static void __attribute ((constructor)) mp4write_init(void) { static void __attribute ((constructor)) mp4write_init(void) {
original_mp4write_start_handler = dlsym(dlopen("/system/lib/libmp4rw.so", RTLD_LAZY), "mp4write_start_handler"); original_mp4write_start_handler = dlsym(dlopen("/system/lib/libmp4rw.so", RTLD_LAZY), "mp4write_start_handler");