void MPEG2TransportStreamIndexFile::closeFid() { if (fFid != NULL) { CloseInputFile(fFid); fFid = NULL; } }
AMRAudioFileSource::~AMRAudioFileSource() { CloseInputFile(fFid); }
AMRAudioFileSource* AMRAudioFileSource::createNew(UsageEnvironment& env, char const* fileName) { #ifdef __LINUX__ FILE* fid = NULL; #else UFILE* fid = NULL; #endif Boolean magicNumberOK = True; do { fid = OpenInputFile(env, fileName); if (fid == NULL) break; // Now, having opened the input file, read the first few bytes, to // check the required 'magic number': magicNumberOK = False; // until we learn otherwise Boolean isWideband = False; // by default unsigned numChannels = 1; // by default char buf[100]; // Start with the first 6 bytes (the first 5 of which must be "#!AMR"): #ifdef __LINUX__ if (fread(buf, 1, 6, fid) < 6) break; #else u32 read_size = 0; int ret = 0; ret = ufs_read(fid, buf, 6, &read_size); if ((read_size != 6) || (ret != FR_OK)) break; #endif if (strncmp(buf, "#!AMR", 5) != 0) break; // bad magic # unsigned bytesRead = 6; // The next bytes must be "\n", "-WB\n", "_MC1.0\n", or "-WB_MC1.0\n" if (buf[5] == '-') { // The next bytes must be "WB\n" or "WB_MC1.0\n" #ifdef __LINUX__ if (fread(&buf[bytesRead], 1, 3, fid) < 3) break; #else u32 read_size = 0; int ret = 0; ret = ufs_read(fid, &buf[bytesRead], 3, &read_size); if ((read_size != 3) || (ret != FR_OK)) break; #endif if (strncmp(&buf[bytesRead], "WB", 2) != 0) break; // bad magic # isWideband = True; bytesRead += 3; } if (buf[bytesRead-1] == '_') { // The next bytes must be "MC1.0\n" #ifdef __LINUX__ if (fread(&buf[bytesRead], 1, 6, fid) < 6) break; #else u32 read_size = 0; int ret = 0; ret = ufs_read(fid, &buf[bytesRead], 6, &read_size); if ((read_size != 6) || (ret != FR_OK)) break; #endif if (strncmp(&buf[bytesRead], "MC1.0\n", 6) != 0) break; // bad magic # bytesRead += 6; // The next 4 bytes contain the number of channels: char channelDesc[4]; #ifdef __LINUX__ if (fread(channelDesc, 1, 4, fid) < 4) break; #else ret = ufs_read(fid, channelDesc, 4, &read_size); if ((read_size != 4) || (ret != FR_OK)) break; #endif numChannels = channelDesc[3]&0xF; } else if (buf[bytesRead-1] != '\n') { break; // bad magic # } // If we get here, the magic number was OK: magicNumberOK = True; #ifdef DEBUG fprintf(stderr, "isWideband: %d, numChannels: %d\n", isWideband, numChannels); #endif return new AMRAudioFileSource(env, fid, isWideband, numChannels); } while (0); // An error occurred: CloseInputFile(fid); if (!magicNumberOK) { env.setResultMsg("Bad (or nonexistent) AMR file header"); } return NULL; }
WAVAudioFileSource::~WAVAudioFileSource() { CloseInputFile(fFid); }