Skip to content
Snippets Groups Projects
Verified Commit fefcad37 authored by Ralph Giles's avatar Ralph Giles
Browse files

trivial_example: Check the return value of fread().


Silence a gcc warning by checking the return value of the fread()
call instead of the feof() guard. This prevents an infinite loop
in the case of a read error. Otherwise, when end-of-file is reached
fread() will certainly return a smaller number of elements read
than requested, so both cases are handled now.

Add a comment to clarify that we're dropping a partial frame on
purpose to keep the code simple.

Also add more braces around conditional bodies for less error-prone
style.

Signed-off-by: default avatarMark Harris <mark.hsj@gmail.com>
parent 1168a29e
No related branches found
No related tags found
1 merge request!4Fix trivial_example
...@@ -113,14 +113,25 @@ int main(int argc, char **argv) ...@@ -113,14 +113,25 @@ int main(int argc, char **argv)
int i; int i;
unsigned char pcm_bytes[MAX_FRAME_SIZE*CHANNELS*2]; unsigned char pcm_bytes[MAX_FRAME_SIZE*CHANNELS*2];
int frame_size; int frame_size;
size_t samples;
/* Read a 16 bits/sample audio frame. */ /* Read a 16 bits/sample audio frame. */
fread(pcm_bytes, sizeof(short)*CHANNELS, FRAME_SIZE, fin); samples = fread(pcm_bytes, sizeof(short)*CHANNELS, FRAME_SIZE, fin);
if (feof(fin))
/* For simplicity, only read whole frames. In a real application,
* we'd pad the final partial frame with zeroes, record the exact
* duration, and trim the decoded audio to match.
*/
if (samples != FRAME_SIZE)
{
break; break;
}
/* Convert from little-endian ordering. */ /* Convert from little-endian ordering. */
for (i=0;i<CHANNELS*FRAME_SIZE;i++) for (i=0;i<CHANNELS*FRAME_SIZE;i++)
{
in[i]=pcm_bytes[2*i+1]<<8|pcm_bytes[2*i]; in[i]=pcm_bytes[2*i+1]<<8|pcm_bytes[2*i];
}
/* Encode the frame. */ /* Encode the frame. */
nbBytes = opus_encode(encoder, in, FRAME_SIZE, cbits, MAX_PACKET_SIZE); nbBytes = opus_encode(encoder, in, FRAME_SIZE, cbits, MAX_PACKET_SIZE);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment