The length of the audio buffer

I have a question on the length of the audio buffer.

I open the audio with the following parameters

SDL_AudioSpec desired, obtained;

desired.freq = 44100;       
desired.format = AUDIO_S16; 
desired.samples = 4096;     
desired.channels = 2;       
desired.callback = AudioCallback;
desired.userdata = NULL;    
if (SDL_OpenAudio(&desired, &obtained) < 0) {
    printf("Unable to open audio device: %s\n", SDL_GetError());
    return 1;
}

after the last call i got obtained.samples = 4096;

Now, I expect that 4096 is the length of the audio buffer but in the audio callback I got length=16348.

My question is: which is the relationship between obtained.samples and length ?
is length = 4 * obtained.samples or the length of the AudioCallback depends on the Hardware or the SO ?

Thanx,
Stefano Manzella