Am I doing this correctly?

audio, byte, bytebuffer, java, short

Solution

You are forgetting to flip the buffer before reading the data, this is why nothing in being written into `audioSamples`.

buffer.flip();
buffer.asShortBuffer.get(audioSamples);

Problem

Before I ask for help, let me tell you what I did: Assuming I have a sampling rate of 8000Hz and sample size of 16 bits (2 bytes), at the end of the second I need 16000 byte or 8000 short. Now I have a 10fps recording speed then for each fps I need 16000/10 = 1600 byte. So, here is how the story proceeds: Variables Declared: ``` byte[] eachPass = new byte[1600]; //used to store data from TargetDataLine for each pass byte[] backingArray = new byte[16000]; //the complete data for one second ByteBuffer buffer = ByteBuffer.wrap(backingArray); //buffer which stores the complete data short[] audioSample = new short[16000/2]; //audio samples to be encoded int passCounter = 0; /* After 10th pass, convert the byte[] to short[] * using ByteBuffer */ int seconds = 0; // used to store the position of the packet ``` Looping and subsequent conversion of byte[] to short[] ``` while(keepCapturing == true){ -- set up the java.awt.Robot and TargetDataLine before entering the loop -- -- use java.awt.Robot to record the screen -- -- do some other stuff, if needed -- fromMic.read(eachPass,0,eachPass.length); // read data from microphone buffer.put(eachPass); //put it in a bigger buffer if(passCounter!=0 && passCounter%10==0){ // is it 10th frame? passCounter = 0; //reset counter seconds++; buffer.asShortBuffer.get(audioSamples); //get short[] in BigEndian format -- encode the audio at position (seconds-1) -- buffer.clear(); }else{ passCounter++; } ``` Issues - Even though `buffer.position()` returns 16000 in the `if` statement, I get a `BufferUnderflowException` when I do `buffer.asShortBuffer.get(audioSamples);` - I used `java.util.Arrays.toString()` to see what my `eachPass`and `audioSamples` contains, I got some numbers like -107, 0, 32, etc in eachPass and all zeroes in audioSamples. Why? veterans, will you please help me nail this code? I have no clue what's going on.

Original source