quartz: Take MP3 padding bit into account when calculating the block size.

Signed-off-by: Bruno Jesus <00cpxxx@gmail.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
oldstable
Bruno Jesus 2016-11-22 04:14:59 -02:00 committed by Alexandre Julliard
parent 01ecb5834b
commit 89d4e14c0a
1 changed files with 5 additions and 3 deletions

View File

@ -367,6 +367,7 @@ static HRESULT MPEGSplitter_init_audio(MPEGSplitterImpl *This, const BYTE *heade
int freq_index;
int mode_ext;
int emphasis;
int padding;
int lsf = 1;
int mpeg1;
int layer;
@ -391,6 +392,7 @@ static HRESULT MPEGSplitter_init_audio(MPEGSplitterImpl *This, const BYTE *heade
layer = 4-((header[1]>>1)&0x3);
bitrate_index = ((header[2]>>4)&0xf);
padding = ((header[2]>>1)&0x1);
freq_index = ((header[2]>>2)&0x3) + (mpeg1?(lsf*3):6);
mode = ((header[3]>>6)&0x3);
mode_ext = ((header[3]>>4)&0x3);
@ -419,12 +421,12 @@ static HRESULT MPEGSplitter_init_audio(MPEGSplitterImpl *This, const BYTE *heade
if (layer == 3)
format->nBlockAlign = format->nAvgBytesPerSec * 8 * 144 /
(format->nSamplesPerSec<<lsf) + 1;
(format->nSamplesPerSec<<lsf) + padding;
else if (layer == 2)
format->nBlockAlign = format->nAvgBytesPerSec * 8 * 144 /
format->nSamplesPerSec + 1;
format->nSamplesPerSec + padding;
else
format->nBlockAlign = 4 * (format->nAvgBytesPerSec * 8 * 12 / format->nSamplesPerSec + 1);
format->nBlockAlign = 4 * (format->nAvgBytesPerSec * 8 * 12 / format->nSamplesPerSec + padding);
format->wBitsPerSample = 0;