Sfoglia il codice sorgente

update libcallback to support v2

Alfonso Gamboa 3 anni fa
parent
commit
d098f91413

+ 19 - 1
libcallback_wz_mod/audio_callback.c

@@ -56,6 +56,15 @@ static uint32_t audio_pcm_capture(struct frames_st *frames) {
   static int firstEntry = 0;
   uint32_t *buf = frames->buf;
 
+  static int snd_rate = 16000;
+  const char *productv2="/driver/sensor_jxf23.ko";
+
+    //Change sample rate to 8000 if we are a V2 Camera
+    if( access( productv2, F_OK ) == 0 ) {
+      snd_rate = 8000;
+      }
+
+
   if(!firstEntry) {
     firstEntry++;
     unsigned int card = 0;
@@ -63,7 +72,7 @@ static uint32_t audio_pcm_capture(struct frames_st *frames) {
     int flags = PCM_OUT | PCM_MMAP;
     const struct pcm_config config = {
       .channels = 1,
-      .rate = 16000,
+      .rate = snd_rate,
       .format = PCM_FORMAT_S16_LE,
       .period_size = 128,
       .period_count = 8,
@@ -151,6 +160,15 @@ uint32_t local_sdk_audio_set_pcm_frame_callback(int ch, void *callback) {
     callback = audio_pcm_capture1;
   }
 
+//if V2 here, we have to latch on to the same callback as CH0, since the V2's only have one audio callback
+ const char *productv2="/driver/sensor_jxf23.ko";
+ if( access( productv2, F_OK ) == 0 ) {
+  if( (ch == 0) && ch_count == 1) {
+    audio_pcm_cb1 = callback;
+    fprintf(stderr,"enc func injection CH0 second callback for V2 save audio_pcm_cb=0x%x\n", audio_pcm_cb1);
+    callback = audio_pcm_capture1;
+  }
+}
   ch_count=ch_count+1;
 
   return real_local_sdk_audio_set_pcm_frame_callback(ch, callback);

BIN
libcallback_wz_mod/libcallback.so


+ 0 - 2
libcallback_wz_mod/mp4write.c

@@ -8,10 +8,8 @@
 #include <stdlib.h>
 #include <string.h>
 
-
 static int (*original_mp4write_start_handler)(void *handler, char *file, void *config);
 
-
 static int mp4WriteEnable = 0;
 
 char *mp4Write(int fd, char *tokenPtr) {

+ 28 - 3
libcallback_wz_mod/video_callback.c

@@ -59,7 +59,21 @@ static uint32_t video_encode_capture(struct frames_st *frames) {
   if(!firstEntry) {
     firstEntry++;
     int err;
-    const char *v4l2_device_path = "/dev/video1";
+
+
+    char *v4l2_device_path = "/dev/video0";
+    //Check for this file, which should only exist on the V2 cameras
+    const char *productv2="/driver/sensor_jxf23.ko";
+
+    if( access( productv2, F_OK ) != -1 ) {
+    v4l2_device_path = "/dev/video6";
+    fprintf(stderr, "[command] v4l2_device_path = %s\n", v4l2_device_path);
+    } else {
+    v4l2_device_path = "/dev/video1";
+    fprintf(stderr, "[command] v4l2_device_path = %s\n", v4l2_device_path);
+    }
+
+
     const char *productf="/configs/.product_db3";
     fprintf(stderr,"Opening V4L2 device: %s \n", v4l2_device_path);
     v4l2Fd = open(v4l2_device_path, O_WRONLY, 0777);
@@ -108,7 +122,19 @@ static uint32_t video_encode_capture1(struct frames_st *frames) {
   if(!firstEntry) {
     firstEntry++;
     int err;
-    const char *v4l2_device_path = "/dev/video2";
+
+    char *v4l2_device_path = "/dev/video0";
+    //Check for this file, which should only exist on the V2 cameras
+    const char *productv2="/driver/sensor_jxf23.ko";
+
+    if( access( productv2, F_OK ) != -1 ) {
+    v4l2_device_path = "/dev/video7";
+    fprintf(stderr, "[command] v4l2_device_path = %s\n", v4l2_device_path);
+    } else {
+    v4l2_device_path = "/dev/video2";
+    fprintf(stderr, "[command] v4l2_device_path = %s\n", v4l2_device_path);
+    }
+
     const char *productf="/configs/.product_db3";
     fprintf(stderr,"Opening V4L2 device: %s \n", v4l2_device_path);
     v4l2Fd = open(v4l2_device_path, O_WRONLY, 0777);
@@ -149,7 +175,6 @@ static uint32_t video_encode_capture1(struct frames_st *frames) {
 }
 
 
-
 int local_sdk_video_set_encode_frame_callback(int ch, void *callback) {
 
   fprintf(stderr, "local_sdk_video_set_encode_frame_callback streamChId=%d, callback=0x%x\n", ch, callback);