this.setChunkSize(0L); long chunkHeaderSize = super.write(out); chunkDataSize += RcRiffFile.writeUnsignedShort(out, this.getFormatTag()); chunkDataSize += RcRiffFile.writeUnsignedShort(out, this.getChannels()); chunkDataSize += RcRiffFile.writeUnsignedInt(out, this.getSamplesPerSec()); chunkDataSize += RcRiffFile.writeUnsignedInt(out, this.getAvgBytesPerSec()); chunkDataSize += RcRiffFile.writeUnsignedShort(out, this.getBlockAlign()); chunkDataSize += RcRiffFile.writeUnsignedShort(out, this.getBitsPerSample()); if (this.getFormatTag() != WAVE_FORMAT_PCM) { if (this.getExtraData() == null) { this.setExtraData(new byte[0]); this.setChunkSize(chunkDataSize); long chunkEndPtr = out.getFilePointer(); out.seek(chunkStartPtr + RcRiffChunk.SIZE_OF_CHUNK_ID); RcRiffFile.writeUnsignedInt(out, this.getChunkSize()); out.seek(chunkEndPtr);
this.setPtr(ptr); this.setChunkSize(chunkSize); this.setFormatTag(RcRiffFile.readUnsignedShort(in)); bytesRead += RcRiffFile.SIZE_OF_UNSIGNED_SHORT; this.setChannels(RcRiffFile.readUnsignedShort(in)); bytesRead += RcRiffFile.SIZE_OF_UNSIGNED_SHORT; this.setSamplesPerSec(RcRiffFile.readUnsignedInt(in)); bytesRead += RcRiffFile.SIZE_OF_UNSIGNED_INT; this.setAvgBytesPerSec(RcRiffFile.readUnsignedInt(in)); bytesRead += RcRiffFile.SIZE_OF_UNSIGNED_INT; this.setBlockAlign(RcRiffFile.readUnsignedShort(in)); bytesRead += RcRiffFile.SIZE_OF_UNSIGNED_SHORT; this.setBitsPerSample(RcRiffFile.readUnsignedShort(in)); bytesRead += RcRiffFile.SIZE_OF_UNSIGNED_SHORT; if (this.getFormatTag() != WAVE_FORMAT_PCM && (this.getChunkSize() - bytesRead) >= RcRiffFile.SIZE_OF_UNSIGNED_SHORT) { extraDataSize = (int) Math.min((long) extraDataSize, this.getChunkSize() - bytesRead); long bytesLeft = this.getChunkSize() - bytesRead; if (bytesLeft > 0) {
public XMLGregorianCalendar getXmlDuration() throws DatatypeConfigurationException { long dataSize = this.getRcRiffDataChunk().getChunkSize(); long blockSize = this.getRcRiffFmtChunk().getBlockAlign(); long numSampleFrames = dataSize / blockSize; long samplesPerSec = this.getRcRiffFmtChunk().getSamplesPerSec(); long ms = (long) (numSampleFrames / (samplesPerSec / 1000D)); int hours = (int) (ms / (60 * 60 * 1000)); ms -= hours * 60 * 60 * 1000; int min = (int) (ms / (60 * 1000)); ms -= min * 60 * 1000; int sec = (int) (ms / 1000); ms -= sec * 1000; XMLGregorianCalendar duration = DatatypeFactory.newInstance().newXMLGregorianCalendarTime(hours, min, sec, (int) ms, DatatypeConstants.FIELD_UNDEFINED); return duration; }
System.out.println("\tFormat tag: " + rcRiffFmtChunk.getFormatTag()); System.out.println("\tChannels: " + rcRiffFmtChunk.getChannels()); System.out.println("\tSamples per sec: " + rcRiffFmtChunk.getSamplesPerSec()); System.out.println("\tAvg bytes per sec: " + rcRiffFmtChunk.getAvgBytesPerSec()); System.out.println("\tBlock align: " + rcRiffFmtChunk.getBlockAlign()); System.out.println("\tBits per sample: " + rcRiffFmtChunk.getBitsPerSample());
long sampleRate = rcRiffBwf.getRcRiffFmtChunk().getSamplesPerSec(); int channels = rcRiffBwf.getRcRiffFmtChunk().getChannels(); long sampleOffset = Math.round(markerPosMs * (sampleRate / 1000D) * channels); rcRiffMarkerEntry.setSampleOffset(BigInteger.valueOf(sampleOffset)); int blockAlign = rcRiffBwf.getRcRiffFmtChunk().getBlockAlign(); long byteOffset = Math.round(markerPosMs * (sampleRate / 1000D) * blockAlign); rcRiffMarkerEntry.setByteOffset(BigInteger.valueOf(byteOffset));
public static void listMarkers(File waveFile) throws IOException { RcRiffBwf rcRiffBwf = new RcRiffBwf(waveFile); rcRiffBwf.open(); RcRiffMarkerChunk rcRiffMarkerChunk = rcRiffBwf.getRcRiffMarkerChunk(); int sampleRate = (int) rcRiffBwf.getRcRiffFmtChunk().getSamplesPerSec(); int channels = rcRiffBwf.getRcRiffFmtChunk().getChannels(); long ms; if (rcRiffMarkerChunk != null) { for (RcRiffMarkerEntry e : rcRiffMarkerChunk.getMarkerEntries()) { ms = Math.round((double) e.getSampleOffset().longValue() / (sampleRate / 1000D) / (double) channels); System.out.println(e.getLabelText() + " @ " + formatTime(ms)); } System.out.println("\n" + rcRiffMarkerChunk.getMarkerEntries().size() + " marker entries"); } else { System.out.println("No marker chunk was found."); } rcRiffBwf.close(); }
public static void setExampleBroadcastAudioExtensionData(RcRiffBwf rcRiffBwf) throws RcBwfException { RcRiffBextChunk rcRiffBextChunk = new RcRiffBextChunk(); rcRiffBwf.setRcRiffBextChunk(rcRiffBextChunk); long sampleRate = rcRiffBwf.getRcRiffFmtChunk().getSamplesPerSec(); rcRiffBextChunk.setDescription("Example description"); rcRiffBextChunk.setOriginator("Example originator"); rcRiffBextChunk.setOriginatorReference("Example originator reference"); // Next 3 set to current date / time only for example rcRiffBextChunk.setOriginationDate(RcBwfWriteExample.getBextDate()); rcRiffBextChunk.setOriginationTime(RcBwfWriteExample.getBextTime()); rcRiffBextChunk.setOriginationTimeReference( RcBwfWriteExample.getBextTimeReference(sampleRate)); byte umid[] = new byte[64]; Arrays.fill(umid, (byte) 0x0); rcRiffBextChunk.setUmid(umid); }
RcRiffFmtChunk rcRiffFmtChunk = new RcRiffFmtChunk(); riffBytesRead += rcRiffFmtChunk.read(this.in, ptr, chunkSize);
if (rcRiffFmtChunk.getFormatTag() == RcRiffFmtChunk.WAVE_FORMAT_PCM) { else if (rcRiffFmtChunk.getFormatTag() == RcRiffFmtChunk.WAVE_FORMAT_MPEG) { rcAudioFileMd.setBitsPerSample(rcRiffBwf.getRcRiffFmtChunk().getBitsPerSample()); int blockSize = rcRiffBwf.getRcRiffFmtChunk().getBlockAlign(); int channels = rcRiffBwf.getRcRiffFmtChunk().getChannels(); long numSampleFrames = dataSize / (long) blockSize / (long) channels; rcAudioFileMd.setNumSampleFrames(numSampleFrames); rcAudioFileMd.setSamplingFrequency(rcRiffBwf.getRcRiffFmtChunk().getSamplesPerSec() / 1000F);
int blockAlign = rcRiffBwf.getRcRiffFmtChunk().getBlockAlign(); int sampleRate = (int) rcRiffBwf.getRcRiffFmtChunk().getSamplesPerSec();
if (rcRiffBwf.getRcRiffFmtChunk().getFormatTag() == RcRiffFmtChunk.WAVE_FORMAT_PCM) { rcAudioMdFileData.setBitsPerSampleElement(rcRiffBwf.getRcRiffFmtChunk().getBitsPerSample()); long blockSize = rcRiffBwf.getRcRiffFmtChunk().getBlockAlign(); long channels = rcRiffBwf.getRcRiffFmtChunk().getChannels(); long numSampleFrames = dataSize / blockSize / channels; rcAudioMdFileData.setNumSampleFramesElement(numSampleFrames); rcAudioMdFileData.setSamplingFrequencyElement(rcRiffBwf.getRcRiffFmtChunk().getSamplesPerSec() / 1000F); rcAudioMdAudioInfo.setNumChannelsElement(Integer.toString(rcRiffBwf.getRcRiffFmtChunk().getChannels())); if (rcRiffBwf.getRcRiffFmtChunk().getChannels() == 1) { else if (rcRiffBwf.getRcRiffFmtChunk().getChannels() == 2) {
if (rcRiffFmtChunk.getFormatTag() == RcRiffFmtChunk.WAVE_FORMAT_PCM) { else if (rcRiffFmtChunk.getFormatTag() == RcRiffFmtChunk.WAVE_FORMAT_MPEG) { rcAudioFileMd.setBitsPerSample(rcRiffBwf.getRcRiffFmtChunk().getBitsPerSample()); int blockSize = rcRiffBwf.getRcRiffFmtChunk().getBlockAlign(); int channels = rcRiffBwf.getRcRiffFmtChunk().getChannels(); long numSampleFrames = dataSize / (long) blockSize / (long) channels; rcAudioFileMd.setNumSampleFrames(numSampleFrames); rcAudioFileMd.setSamplingFrequency(rcRiffBwf.getRcRiffFmtChunk().getSamplesPerSec() / 1000F);
try { sampleRate = rcRiffBwf.getRcRiffFmtChunk().getSamplesPerSec(); channels = rcRiffBwf.getRcRiffFmtChunk().getChannels(); rcRiffBwf.getRcRiffFmtChunk().getChannels(), (int) rcRiffBwf.getRcRiffFmtChunk().getSamplesPerSec(), rcRiffBwf.getRcRiffFmtChunk().getBitsPerSample(), rcRiffBwf.getRcRiffFmtChunk().getBlockAlign(), (rcRiffBwf.getRcRiffDataChunk().getChunkSize() / rcRiffBwf.getRcRiffFmtChunk().getBlockAlign()) / (rcRiffBwf.getRcRiffFmtChunk().getSamplesPerSec() / 1000), observer, objIdx,
RcDataConversionTool.transcribeAudioFile( sourceFile, rcRiffBwf.getRcRiffFmtChunk().getChannels(), (int) rcRiffBwf.getRcRiffFmtChunk().getSamplesPerSec(), rcRiffBwf.getRcRiffFmtChunk().getBitsPerSample(), rcRiffBwf.getRcRiffFmtChunk().getBlockAlign(), (rcRiffBwf.getRcRiffDataChunk().getChunkSize() / rcRiffBwf.getRcRiffFmtChunk().getBlockAlign()) / (rcRiffBwf.getRcRiffFmtChunk().getSamplesPerSec() / 1000), observer, objIndex, long sampleRate = rcRiffBwf.getRcRiffFmtChunk().getSamplesPerSec(); int bitsPerSample = rcRiffBwf.getRcRiffFmtChunk().getBitsPerSample(); File downsampledSourceFile = null; if (sampleRate != 44100 || bitsPerSample > 16) { float oggVorbisSamplingFrequency = rcRiffBwf.getRcRiffFmtChunk().getSamplesPerSec() / 1000F;