Zebediah Figura : l3codeca.acm: Store the mpg123 handle directly as the ACM driver data.

Alexandre Julliard julliard at winehq.org
Wed Jun 9 16:43:06 CDT 2021


Module: wine
Branch: master
Commit: 1e047d786d71ed8d8e9f0f9442fd019c96080751
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=1e047d786d71ed8d8e9f0f9442fd019c96080751

Author: Zebediah Figura <z.figura12 at gmail.com>
Date:   Fri Jun  4 16:43:39 2021 -0500

l3codeca.acm: Store the mpg123 handle directly as the ACM driver data.

Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/l3codeca.acm/mpegl3.c | 51 +++++++++++++++++++---------------------------
 1 file changed, 21 insertions(+), 30 deletions(-)

diff --git a/dlls/l3codeca.acm/mpegl3.c b/dlls/l3codeca.acm/mpegl3.c
index fb7c9cf386b..fa9f38258e5 100644
--- a/dlls/l3codeca.acm/mpegl3.c
+++ b/dlls/l3codeca.acm/mpegl3.c
@@ -111,11 +111,6 @@ static	DWORD	MPEG3_GetFormatIndex(LPWAVEFORMATEX wfx)
     return 0xFFFFFFFF;
 }
 
-typedef struct tagAcmMpeg3Data
-{
-    mpg123_handle *mh;
-} AcmMpeg3Data;
-
 /***********************************************************************
  *           MPEG3_drvOpen
  */
@@ -135,11 +130,9 @@ static LRESULT MPEG3_drvClose(DWORD_PTR dwDevID)
 }
 
 
-static void mp3_horse(PACMDRVSTREAMINSTANCE adsi,
-                      const unsigned char* src, LPDWORD nsrc,
-                      unsigned char* dst, LPDWORD ndst)
+static void mp3_horse(mpg123_handle *handle, const unsigned char *src,
+        DWORD *nsrc, unsigned char *dst, DWORD *ndst)
 {
-    AcmMpeg3Data*       amd = (AcmMpeg3Data*)adsi->dwDriver;
     int                 ret;
     size_t              size;
     DWORD               dpos = 0;
@@ -147,7 +140,7 @@ static void mp3_horse(PACMDRVSTREAMINSTANCE adsi,
 
     if (*nsrc > 0)
     {
-        ret = mpg123_feed(amd->mh, src, *nsrc);
+        ret = mpg123_feed(handle, src, *nsrc);
         if (ret != MPG123_OK)
         {
             ERR("Error feeding data\n");
@@ -158,7 +151,7 @@ static void mp3_horse(PACMDRVSTREAMINSTANCE adsi,
 
     do {
         size = 0;
-        ret = mpg123_read(amd->mh, dst + dpos, *ndst - dpos, &size);
+        ret = mpg123_read(handle, dst + dpos, *ndst - dpos, &size);
         if (ret == MPG123_ERR)
         {
             FIXME("Error occurred during decoding!\n");
@@ -170,7 +163,7 @@ static void mp3_horse(PACMDRVSTREAMINSTANCE adsi,
         {
             long rate;
             int channels, enc;
-            mpg123_getformat(amd->mh, &rate, &channels, &enc);
+            mpg123_getformat(handle, &rate, &channels, &enc);
             TRACE("New format: %li Hz, %i channels, encoding value %i\n", rate, channels, enc);
         }
         dpos += size;
@@ -185,7 +178,7 @@ static void mp3_horse(PACMDRVSTREAMINSTANCE adsi,
  */
 static LRESULT MPEG3_StreamOpen(ACMDRVSTREAMINSTANCE *instance)
 {
-    AcmMpeg3Data*	aad;
+    mpg123_handle *handle;
     int err;
 
     assert(!(instance->fdwOpen & ACM_STREAMOPENF_ASYNC));
@@ -215,12 +208,9 @@ static LRESULT MPEG3_StreamOpen(ACMDRVSTREAMINSTANCE *instance)
             || instance->pwfxDst->wBitsPerSample != 16)
         return MMSYSERR_NOTSUPPORTED;
 
-    if (!(aad = HeapAlloc(GetProcessHeap(), 0, sizeof(AcmMpeg3Data))))
-        return MMSYSERR_NOMEM;
-    instance->dwDriver = (DWORD_PTR)aad;
-
-    aad->mh = mpg123_new(NULL, &err);
-    mpg123_open_feed(aad->mh);
+    handle = mpg123_new(NULL, &err);
+    instance->dwDriver = (DWORD_PTR)handle;
+    mpg123_open_feed(handle);
 
 #if MPG123_API_VERSION >= 31 /* needed for MPG123_IGNORE_FRAMEINFO enum value */
     /* mpg123 may find a XING header in the mp3 and use that information
@@ -228,7 +218,7 @@ static LRESULT MPEG3_StreamOpen(ACMDRVSTREAMINSTANCE *instance)
      * We cannot allow that since the caller application is feeding us.
      * This fixes problems for mp3 files encoded with LAME (bug 42361)
      */
-    mpg123_param(aad->mh, MPG123_ADD_FLAGS, MPG123_IGNORE_INFOFRAME, 0);
+    mpg123_param(handle, MPG123_ADD_FLAGS, MPG123_IGNORE_INFOFRAME, 0);
 #endif
 
     return MMSYSERR_NOERROR;
@@ -238,11 +228,12 @@ static LRESULT MPEG3_StreamOpen(ACMDRVSTREAMINSTANCE *instance)
  *           MPEG3_StreamClose
  *
  */
-static	LRESULT	MPEG3_StreamClose(PACMDRVSTREAMINSTANCE adsi)
+static LRESULT MPEG3_StreamClose(ACMDRVSTREAMINSTANCE *instance)
 {
-    mpg123_close(((AcmMpeg3Data*)adsi->dwDriver)->mh);
-    mpg123_delete(((AcmMpeg3Data*)adsi->dwDriver)->mh);
-    HeapFree(GetProcessHeap(), 0, (void*)adsi->dwDriver);
+    mpg123_handle *handle = (mpg123_handle *)instance->dwDriver;
+
+    mpg123_close(handle);
+    mpg123_delete(handle);
     return MMSYSERR_NOERROR;
 }
 
@@ -513,9 +504,9 @@ static	LRESULT MPEG3_StreamSize(PACMDRVSTREAMINSTANCE adsi, PACMDRVSTREAMSIZE ad
  *           MPEG3_StreamConvert
  *
  */
-static LRESULT MPEG3_StreamConvert(PACMDRVSTREAMINSTANCE adsi, PACMDRVSTREAMHEADER adsh)
+static LRESULT MPEG3_StreamConvert(ACMDRVSTREAMINSTANCE *instance, ACMDRVSTREAMHEADER *adsh)
 {
-    AcmMpeg3Data*	aad = (AcmMpeg3Data*)adsi->dwDriver;
+    mpg123_handle *handle = (mpg123_handle *)instance->dwDriver;
     DWORD		nsrc = adsh->cbSrcLength;
     DWORD		ndst = adsh->cbDstLength;
 
@@ -533,12 +524,12 @@ static LRESULT MPEG3_StreamConvert(PACMDRVSTREAMINSTANCE adsi, PACMDRVSTREAMHEAD
      */
     if ((adsh->fdwConvert & ACM_STREAMCONVERTF_START))
     {
-        mpg123_feedseek(aad->mh, 0, SEEK_SET, NULL);
-        mpg123_close(aad->mh);
-        mpg123_open_feed(aad->mh);
+        mpg123_feedseek(handle, 0, SEEK_SET, NULL);
+        mpg123_close(handle);
+        mpg123_open_feed(handle);
     }
 
-    mp3_horse(adsi, adsh->pbSrc, &nsrc, adsh->pbDst, &ndst);
+    mp3_horse(handle, adsh->pbSrc, &nsrc, adsh->pbDst, &ndst);
     adsh->cbSrcLengthUsed = nsrc;
     adsh->cbDstLengthUsed = ndst;
 




More information about the wine-cvs mailing list