Exemple #1
0
  /** Write NumBytes data. */
  public int Write(RiffChunkHeader Triff_header, int NumBytes) {
    byte[] br = new byte[8];
    br[0] = (byte) ((Triff_header.ckID >>> 24) & 0x000000FF);
    br[1] = (byte) ((Triff_header.ckID >>> 16) & 0x000000FF);
    br[2] = (byte) ((Triff_header.ckID >>> 8) & 0x000000FF);
    br[3] = (byte) (Triff_header.ckID & 0x000000FF);

    byte br4 = (byte) ((Triff_header.ckSize >>> 24) & 0x000000FF);
    byte br5 = (byte) ((Triff_header.ckSize >>> 16) & 0x000000FF);
    byte br6 = (byte) ((Triff_header.ckSize >>> 8) & 0x000000FF);
    byte br7 = (byte) (Triff_header.ckSize & 0x000000FF);

    br[4] = br7;
    br[5] = br6;
    br[6] = br5;
    br[7] = br4;

    if (fmode != RFM_WRITE) {
      return DDC_INVALID_CALL;
    }
    try {
      file.write(br, 0, NumBytes);
      fmode = RFM_WRITE;
    } catch (IOException ioe) {
      return DDC_FILE_ERROR;
    }
    riff_header.ckSize += NumBytes;
    return DDC_SUCCESS;
  }
Exemple #2
0
  /** Dummy Constructor */
  public RiffFile() {
    file = null;
    fmode = RFM_UNKNOWN;
    riff_header = new RiffChunkHeader();

    riff_header.ckID = FourCC("RIFF");
    riff_header.ckSize = 0;
  }
Exemple #3
0
 /** Write NumBytes data. */
 public int Write(byte[] Data, int NumBytes) {
   if (fmode != RFM_WRITE) {
     return DDC_INVALID_CALL;
   }
   try {
     file.write(Data, 0, NumBytes);
     fmode = RFM_WRITE;
   } catch (IOException ioe) {
     return DDC_FILE_ERROR;
   }
   riff_header.ckSize += NumBytes;
   return DDC_SUCCESS;
 }
Exemple #4
0
 /** Write NumBytes data. */
 public int Write(short Data, int NumBytes) {
   short theData = (short) (((Data >>> 8) & 0x00FF) | ((Data << 8) & 0xFF00));
   if (fmode != RFM_WRITE) {
     return DDC_INVALID_CALL;
   }
   try {
     file.writeShort(theData);
     fmode = RFM_WRITE;
   } catch (IOException ioe) {
     return DDC_FILE_ERROR;
   }
   riff_header.ckSize += NumBytes;
   return DDC_SUCCESS;
 }
Exemple #5
0
 /** Write NumBytes data. */
 public int Write(int Data, int NumBytes) {
   short theDataL = (short) ((Data >>> 16) & 0x0000FFFF);
   short theDataR = (short) (Data & 0x0000FFFF);
   short theDataLI = (short) (((theDataL >>> 8) & 0x00FF) | ((theDataL << 8) & 0xFF00));
   short theDataRI = (short) (((theDataR >>> 8) & 0x00FF) | ((theDataR << 8) & 0xFF00));
   int theData = ((theDataRI << 16) & 0xFFFF0000) | (theDataLI & 0x0000FFFF);
   if (fmode != RFM_WRITE) {
     return DDC_INVALID_CALL;
   }
   try {
     file.writeInt(theData);
     fmode = RFM_WRITE;
   } catch (IOException ioe) {
     return DDC_FILE_ERROR;
   }
   riff_header.ckSize += NumBytes;
   return DDC_SUCCESS;
 }
Exemple #6
0
 /** Write NumBytes data. */
 public int Write(short[] Data, int NumBytes) {
   byte[] theData = new byte[NumBytes];
   int yc = 0;
   for (int y = 0; y < NumBytes; y = y + 2) {
     theData[y] = (byte) (Data[yc] & 0x00FF);
     theData[y + 1] = (byte) ((Data[yc++] >>> 8) & 0x00FF);
   }
   if (fmode != RFM_WRITE) {
     return DDC_INVALID_CALL;
   }
   try {
     file.write(theData, 0, NumBytes);
     fmode = RFM_WRITE;
   } catch (IOException ioe) {
     return DDC_FILE_ERROR;
   }
   riff_header.ckSize += NumBytes;
   return DDC_SUCCESS;
 }
Exemple #7
0
  /** Open a RIFF file. */
  public int Open(String Filename, int NewMode) {
    int retcode = DDC_SUCCESS;

    if (fmode != RFM_UNKNOWN) {
      retcode = Close();
    }

    if (retcode == DDC_SUCCESS) {
      switch (NewMode) {
        case RFM_WRITE:
          try {
            file = new RandomAccessFile(Filename, "rw");

            try {
              // Write the RIFF header...
              // We will have to come back later and patch it!
              byte[] br = new byte[8];
              br[0] = (byte) ((riff_header.ckID >>> 24) & 0x000000FF);
              br[1] = (byte) ((riff_header.ckID >>> 16) & 0x000000FF);
              br[2] = (byte) ((riff_header.ckID >>> 8) & 0x000000FF);
              br[3] = (byte) (riff_header.ckID & 0x000000FF);

              byte br4 = (byte) ((riff_header.ckSize >>> 24) & 0x000000FF);
              byte br5 = (byte) ((riff_header.ckSize >>> 16) & 0x000000FF);
              byte br6 = (byte) ((riff_header.ckSize >>> 8) & 0x000000FF);
              byte br7 = (byte) (riff_header.ckSize & 0x000000FF);

              br[4] = br7;
              br[5] = br6;
              br[6] = br5;
              br[7] = br4;

              file.write(br, 0, 8);
              fmode = RFM_WRITE;
            } catch (IOException ioe) {
              file.close();
              fmode = RFM_UNKNOWN;
            }
          } catch (IOException ioe) {
            fmode = RFM_UNKNOWN;
            retcode = DDC_FILE_ERROR;
          }
          break;

        case RFM_READ:
          try {
            file = new RandomAccessFile(Filename, "r");
            try {
              // Try to read the RIFF header...
              byte[] br = new byte[8];
              file.read(br, 0, 8);
              fmode = RFM_READ;
              riff_header.ckID =
                  ((br[0] << 24) & 0xFF000000)
                      | ((br[1] << 16) & 0x00FF0000)
                      | ((br[2] << 8) & 0x0000FF00)
                      | (br[3] & 0x000000FF);
              riff_header.ckSize =
                  ((br[4] << 24) & 0xFF000000)
                      | ((br[5] << 16) & 0x00FF0000)
                      | ((br[6] << 8) & 0x0000FF00)
                      | (br[7] & 0x000000FF);
            } catch (IOException ioe) {
              file.close();
              fmode = RFM_UNKNOWN;
            }
          } catch (IOException ioe) {
            fmode = RFM_UNKNOWN;
            retcode = DDC_FILE_ERROR;
          }
          break;
        default:
          retcode = DDC_INVALID_CALL;
      }
    }
    return retcode;
  }