Alex Villacís Lasso : winemp3: Increase factor from 4 to 12 in MPEG3_StreamSize.
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Feb 14 10:46:38 CST 2006
Module: wine
Branch: refs/heads/master
Commit: 2382e58b4c3825dc6044080e01e1171a36717dc0
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=2382e58b4c3825dc6044080e01e1171a36717dc0
Author: Alex Villacís Lasso <a_villacis at palosanto.com>
Date: Tue Feb 14 17:12:19 2006 +0100
winemp3: Increase factor from 4 to 12 in MPEG3_StreamSize.
- Increase size factor from 4 to 12 in MPEG_StreamSize, otherwise
mpglib buffer queue grows.
- Add TRACE of mpglib buffer queue for conversion.
---
dlls/msacm/winemp3/mpegl3.c | 27 +++++++++++++++++++++++----
1 files changed, 23 insertions(+), 4 deletions(-)
diff --git a/dlls/msacm/winemp3/mpegl3.c b/dlls/msacm/winemp3/mpegl3.c
index 63e1fe6..66f594d 100644
--- a/dlls/msacm/winemp3/mpegl3.c
+++ b/dlls/msacm/winemp3/mpegl3.c
@@ -142,6 +142,17 @@ static inline void W16(unsigned char* d
dst[1] = HIBYTE(s);
}
+static DWORD get_num_buffered_bytes(struct mpstr *mp)
+{
+ DWORD numBuff = 0;
+ struct buf * p = mp->tail;
+ while (p) {
+ numBuff += p->size - p->pos;
+ p = p->next;
+ }
+ return numBuff;
+}
+
static void mp3_horse(PACMDRVSTREAMINSTANCE adsi,
const unsigned char* src, LPDWORD nsrc,
unsigned char* dst, LPDWORD ndst)
@@ -149,8 +160,13 @@ static void mp3_horse(PACMDRVSTREAMINSTA
AcmMpeg3Data* amd = (AcmMpeg3Data*)adsi->dwDriver;
int size, ret;
DWORD dpos = 0;
+ DWORD buffered_before;
+ DWORD buffered_during;
+ DWORD buffered_after;
+ buffered_before = get_num_buffered_bytes(&amd->mp);
ret = decodeMP3(&amd->mp, src, *nsrc, dst, *ndst, &size);
+ buffered_during = get_num_buffered_bytes(&amd->mp);
if (ret != MP3_OK)
{
*ndst = *nsrc = 0;
@@ -163,6 +179,9 @@ static void mp3_horse(PACMDRVSTREAMINSTA
dst + dpos, *ndst - dpos, &size);
} while (ret == MP3_OK);
*ndst = dpos;
+
+ buffered_after = get_num_buffered_bytes(&amd->mp);
+ TRACE("before %ld put %ld during %ld after %ld\n", buffered_before, *nsrc, buffered_during, buffered_after);
}
/***********************************************************************
@@ -466,13 +485,13 @@ static LRESULT MPEG3_StreamSize(PACMDRVS
adsi->pwfxDst->wFormatTag == WAVE_FORMAT_MPEGLAYER3)
{
/* don't take block overhead into account, doesn't matter too much */
- adss->cbSrcLength = adss->cbDstLength * 4;
+ adss->cbSrcLength = adss->cbDstLength * 12;
}
else if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_MPEGLAYER3 &&
adsi->pwfxDst->wFormatTag == WAVE_FORMAT_PCM)
{
FIXME("misses the block header overhead\n");
- adss->cbSrcLength = 256 + adss->cbDstLength / 4;
+ adss->cbSrcLength = 256 + adss->cbDstLength / 12;
}
else
{
@@ -485,13 +504,13 @@ static LRESULT MPEG3_StreamSize(PACMDRVS
adsi->pwfxDst->wFormatTag == WAVE_FORMAT_MPEGLAYER3)
{
FIXME("misses the block header overhead\n");
- adss->cbDstLength = 256 + adss->cbSrcLength / 4;
+ adss->cbDstLength = 256 + adss->cbSrcLength / 12;
}
else if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_MPEGLAYER3 &&
adsi->pwfxDst->wFormatTag == WAVE_FORMAT_PCM)
{
/* don't take block overhead into account, doesn't matter too much */
- adss->cbDstLength = adss->cbSrcLength * 4;
+ adss->cbDstLength = adss->cbSrcLength * 12;
}
else
{
More information about the wine-cvs
mailing list