Ignore:
Timestamp:
Mar 1, 2017, 3:38:42 PM (5 years ago)
Author:
Sanahuja Guillaume
Message:

add timestamp to simucamera producer

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/FlairSimulator/src/SimuCameraGL.cpp

    r147 r151  
    5959  index = 0;
    6060
    61   buffer = (char *)malloc(width * height * 3);
    62 
    6361  // user interface
    6462  Tab *setup_tab = new Tab(parent->GetTabWidget(), name);
     
    8684    glGenBuffersARB(PBO_COUNT, pboIds);
    8785    glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, pboIds[0]);
    88     glBufferDataARB(GL_PIXEL_PACK_BUFFER_ARB, width * height * 3, 0,
     86    glBufferDataARB(GL_PIXEL_PACK_BUFFER_ARB, width * height * 3+sizeof(Time), 0,
    8987                    GL_STREAM_READ_ARB);
    9088    glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, pboIds[1]);
    91     glBufferDataARB(GL_PIXEL_PACK_BUFFER_ARB, width * height * 3, 0,
     89    glBufferDataARB(GL_PIXEL_PACK_BUFFER_ARB, width * height * 3+sizeof(Time), 0,
    9290                    GL_STREAM_READ_ARB);
    9391
     
    9593  } else {
    9694    use_pbo = false;
     95    buffer = (char *)malloc(width * height * 3+sizeof(Time));
    9796    Thread::Warn("GL_ARB_pixel_buffer_object is not suppoorted\n");
    9897  }
     
    106105
    107106SimuCameraGL::~SimuCameraGL() {
    108   free(buffer);
    109 
    110107  if (use_pbo) {
    111108    glDeleteBuffersARB(PBO_COUNT, pboIds);
    112109    free(pboIds);
     110  } else {
     111    free(buffer);
    113112  }
    114113}
     
    151150    glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, pboIds[index]);
    152151    glReadPixels(x, y, width, height, GL_BGR, GL_UNSIGNED_BYTE, 0);
    153 
     152    Time time=GetTime();
    154153    // map the PBO that contain framebuffer pixels before processing it
    155154    glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, pboIds[nextIndex]);
     
    157156        GL_PIXEL_PACK_BUFFER_ARB, GL_READ_WRITE_ARB); // GL_READ_ONLY_ARB);
    158157    if (src) {
    159       putImage((char *)src);
     158      putImage((char *)src,time);
    160159      glUnmapBufferARB(
    161160          GL_PIXEL_PACK_BUFFER_ARB); // release pointer to the mapped buffer
     
    164163  } else {
    165164    glReadPixels(x, y, width, height, GL_BGR, GL_UNSIGNED_BYTE, buffer);
    166     putImage(buffer);
     165    putImage(buffer,GetTime());
    167166  }
    168167
     
    173172}
    174173
    175 void SimuCameraGL::putImage(char *buf) {
     174void SimuCameraGL::putImage(char *buf,Time imageTime) {
    176175  if (invert_pixel == true) {
    177176    // opengl images are horizontally flipped, so we have to fix that here.
     
    189188    delete[] tmpBuffer;
    190189  }
    191 
    192   shmem->Write(buf, width * height * 3);
     190  memcpy(buf+width * height * 3,&imageTime,sizeof(Time));
     191  shmem->Write(buf, width * height * 3+sizeof(Time));
    193192}
    194193
Note: See TracChangeset for help on using the changeset viewer.