Ejemplo n.º 1
0
Archivo: sdif.c Proyecto: csound/csound
SDIFresult SDIF_WriteFrameHeader(const SDIF_FrameHeader *fh, FILE *f)
{

#ifdef LITTLE_ENDIAN
    SDIFresult r;

    if ((r = SDIF_Write1(&(fh->frameType),4,f))!=ESDIF_SUCCESS)
      return r;
    if ((r = SDIF_Write4(&(fh->size),1,f))!=ESDIF_SUCCESS)
      return r;
    if ((r = SDIF_Write8(&(fh->time),1,f))!=ESDIF_SUCCESS)
      return r;
    if ((r = SDIF_Write4(&(fh->streamID),1,f))!=ESDIF_SUCCESS)
      return r;
    if ((r = SDIF_Write4(&(fh->matrixCount),1,f))!=ESDIF_SUCCESS)
      return r;
#ifdef _WIN32
    fflush(f);
#endif
    return ESDIF_SUCCESS;
#else

    return (fwrite(fh, sizeof(*fh), 1, f) == 1)?ESDIF_SUCCESS:ESDIF_WRITE_FAILED;

#endif
}
Ejemplo n.º 2
0
SDIFresult SDIFmem_WriteMatrix(FILE *sdif_handle, SDIFmem_Matrix m)
{
    SDIFresult r;
    sdif_int32 sz, numElements;
    int paddingNeeded;

    if ((r = SDIF_WriteMatrixHeader(&(m->header), sdif_handle))!=ESDIF_SUCCESS) {
      return r;
    }

    sz = SDIF_GetMatrixDataTypeSize(m->header.matrixDataType);
    numElements = (m->header.rowCount * m->header.columnCount);

    switch (sz) {
    case 1:
      r = SDIF_Write1(m->data, numElements, sdif_handle);
      break;
    case 2:
      r = SDIF_Write2(m->data, numElements, sdif_handle);
      break;
    case 4:
      r = SDIF_Write4(m->data, numElements, sdif_handle);
      break;
    case 8:
      r = SDIF_Write8(m->data, numElements, sdif_handle);
      break;

    default:
      return ESDIF_BAD_MATRIX_DATA_TYPE;
    }

    if (r !=ESDIF_SUCCESS) return r;
    paddingNeeded = SDIF_PaddingRequired(&(m->header));
    if (paddingNeeded) {
      char pad[8] = "\0\0\0\0\0\0\0\0";
      if ((r = SDIF_Write1(pad, paddingNeeded, sdif_handle))!=ESDIF_SUCCESS)
        return r;
    }
    return ESDIF_SUCCESS;
}
Ejemplo n.º 3
0
Archivo: sdif.c Proyecto: csound/csound
SDIFresult SDIF_WriteMatrixHeader(const SDIF_MatrixHeader *m, FILE *f)
{
#ifdef LITTLE_ENDIAN
    SDIFresult r;
    if ((r = SDIF_Write1(&(m->matrixType),4,f))!=ESDIF_SUCCESS)
      return r;
    if ((r = SDIF_Write4(&(m->matrixDataType),1,f))!=ESDIF_SUCCESS)
      return r;
    if ((r = SDIF_Write4(&(m->rowCount),1,f))!=ESDIF_SUCCESS)
      return r;
    if ((r = SDIF_Write4(&(m->columnCount),1,f))!=ESDIF_SUCCESS)
      return r;
    return ESDIF_SUCCESS;
#else
    return (fwrite(m, sizeof(*m), 1, f) == 1) ? ESDIF_SUCCESS:ESDIF_READ_FAILED;
#endif
}
Ejemplo n.º 4
0
Archivo: sdif.c Proyecto: csound/csound
SDIFresult SDIF_WriteGlobalHeader(const SDIF_GlobalHeader *h, FILE *f)
{
    SDIFresult r;

    assert(h != NULL);
    assert(f != NULL);
#ifdef LITTLE_ENDIAN
    if ((r = SDIF_Write1(&(h->SDIF), 4, f))!=ESDIF_SUCCESS)
      return r;
    if ((r = SDIF_Write4(&(h->size), 1, f))!=ESDIF_SUCCESS)
      return r;
    if ((r = SDIF_Write4(&(h->SDIFversion), 1, f))!=ESDIF_SUCCESS)
      return r;
    if ((r = SDIF_Write4(&(h->SDIFStandardTypesVersion), 1, f))!=ESDIF_SUCCESS)
      return r;
    return ESDIF_SUCCESS;
#else
    return (fwrite(h, sizeof(*h), 1, f) == 1) ?ESDIF_SUCCESS:ESDIF_WRITE_FAILED;
#endif
}