Ejemplo n.º 1
0
int venc_file_seek_start(void* handle, 
                         int bytes)
{
   int result = 0;

   if (bytes >= 0)
   {
      if (fseek((FILE*) handle, bytes, SEEK_SET) != 0)
      {
         VENC_MSG_ERROR("failed to seek", 0, 0, 0);
         result = 1;
      }
   }

   return result;
}
Ejemplo n.º 2
0
int venc_signal_destroy(void* handle)
{
  int result = 0;

  if (handle)
  {
    venc_signal_type* sig = (venc_signal_type*) handle;
    sig->m_bSignalSet = FALSE ;
    pthread_cond_destroy(&sig->cond);
    pthread_mutex_destroy(&sig->mutex);
    free(handle);
  }
  else
  {
    VENC_MSG_ERROR("handle is null");
    result = 1;
  }

  return result;
}
Ejemplo n.º 3
0
int venc_queue_pop(void* handle, void* data, int data_size)
{
   int result = 0;
   
   if (handle)
   {
      venc_queue_type* queue = (venc_queue_type*) handle;
      result = venc_queue_peek(handle, data, data_size);

      if (result == 0)
      {
         --queue->size;
         queue->head = (queue->head + 1) % queue->max_queue_size;
      }
   }
   else
   {
      VENC_MSG_ERROR("invalid handle", 0, 0, 0);
      result = 1;
   }
   
   return result;
}
Ejemplo n.º 4
0
int venc_signal_wait(void* handle, int timeout)
{
  int result = 0;

  if (handle)
  {
    venc_signal_type* sig = (venc_signal_type*) handle;

    if (pthread_mutex_lock(&sig->mutex) == 0)
    {

      if (timeout > 0)
      {
        int wait_result;
        struct timespec time;
        clock_gettime(CLOCK_REALTIME, &time);
        time.tv_sec += timeout / 1000;
        time.tv_nsec += (timeout % 1000) * 1000000;

        wait_result = pthread_cond_timedwait(&sig->cond, &sig->mutex, &time);
        if (wait_result == ETIMEDOUT)
        {
          result = 2;
        }
        else if (wait_result != 0)
        {
          result = 1;
        }
      }
      else
      {
        if(sig->m_bSignalSet == TRUE)
        {
          struct timespec time;
          timeout = 1 ;
          clock_gettime(CLOCK_REALTIME, &time);
          time.tv_sec += timeout / 1000;
          time.tv_nsec += (timeout % 1000) * 1000000;
          VENC_MSG_MEDIUM("error waiting for signal but its already set");
          pthread_cond_timedwait(&sig->cond, &sig->mutex, &time) ;
          sig->m_bSignalSet = FALSE ;
        }
        else
        {
          if (pthread_cond_wait(&sig->cond, &sig->mutex) != 0)
          {
            VENC_MSG_ERROR("error waiting for signal");
            result = 1;
          }
          sig->m_bSignalSet = FALSE ;
        }
      }

      if (pthread_mutex_unlock(&sig->mutex) != 0)
      {
        VENC_MSG_ERROR("error unlocking mutex");
        result = 1;
      }

    }
    else
    {
      VENC_MSG_ERROR("error locking mutex");
      result = 1;
    }
  }
  else
  {
    VENC_MSG_ERROR("handle is null");
    result = 1;
  }

  return result;
}