From b062b3a8f06ff7d1b00189e2ae5debf97323803f Mon Sep 17 00:00:00 2001 From: zefie Date: Wed, 22 Apr 2026 17:59:41 -0400 Subject: [PATCH] rpcli: fix mp3 decoding --- zefie_wtvp_minisrv/ra_win/rpcli.cpp | 16 +++++++++++++--- zefie_wtvp_minisrv/ra_win/rpcli.exe | Bin 217088 -> 217088 bytes 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/zefie_wtvp_minisrv/ra_win/rpcli.cpp b/zefie_wtvp_minisrv/ra_win/rpcli.cpp index bebf17d6..e0ff1afe 100644 --- a/zefie_wtvp_minisrv/ra_win/rpcli.cpp +++ b/zefie_wtvp_minisrv/ra_win/rpcli.cpp @@ -331,6 +331,7 @@ static int decode_mpeg_audio_to_wav(const char *inputPath, mp3dec_frame_info_t info; mp3d_sample_t pcm[MINIMP3_MAX_SAMPLES_PER_FRAME]; int samples = mp3dec_decode_frame(&dec, inputData + pos, (int)(inputSize - pos), pcm, &info); + int totalSamples; if (info.frame_bytes <= 0) { ++pos; @@ -342,6 +343,15 @@ static int decode_mpeg_audio_to_wav(const char *inputPath, continue; } + if (info.channels <= 0) { + fclose(out); + DeleteFileA(outputPath); + free(inputData); + return 0; + } + + totalSamples = samples * info.channels; + if (!haveAudio) { sampleRate = info.hz; channels = info.channels; @@ -355,18 +365,18 @@ static int decode_mpeg_audio_to_wav(const char *inputPath, if (gainScale != 1.0) { int sampleIndex; - for (sampleIndex = 0; sampleIndex < samples; ++sampleIndex) { + for (sampleIndex = 0; sampleIndex < totalSamples; ++sampleIndex) { pcm[sampleIndex] = apply_gain_sample(pcm[sampleIndex], gainScale); } } - if (fwrite(pcm, sizeof(mp3d_sample_t), (size_t)samples, out) != (size_t)samples) { + if (fwrite(pcm, sizeof(mp3d_sample_t), (size_t)totalSamples, out) != (size_t)totalSamples) { fclose(out); DeleteFileA(outputPath); free(inputData); return 0; } - dataBytes += (unsigned)(samples * sizeof(mp3d_sample_t)); + dataBytes += (unsigned)(totalSamples * sizeof(mp3d_sample_t)); } free(inputData); diff --git a/zefie_wtvp_minisrv/ra_win/rpcli.exe b/zefie_wtvp_minisrv/ra_win/rpcli.exe index fa3cf1a6f03034403d1e35826be2d42c06224322..f20f891751d5c0c0b092a3781eb0c78bd01e7973 100644 GIT binary patch delta 175 zcmZozz}v8Zcft?mDwmfVe;+ZeKhbNoBPZE3=9m+KUz=n_k9JjfZ_(N z2kM%;Kk%>r*j%F`!B8sJ?W1DS>7%01>7pWY+(ku#5vcC91W;7L8Ysix8VeM#1j_NZ z1_N22_yu}YdUO~V()jgwH9DOb=6^flQeA3%vh`bCej2~LOS7GMyPY}Xb~|&Xb9X?F T+RiV+tgXtZwcXm1`KTBGSM)pz delta 175 zcmZozz}v8Zcft>50frYFe;+Ze_ffHFJ|fcnq4i`voBPZE3=9m+KU=@?_k9Jjnrl=f z7)qtOT~tguT~ri+v;mNoIqsq&!3dOoEdvx$um;NVx26FFfIJx>&w#%*0?7NsFVLgX zqrMG-t{PGSAX=!Qv@+}}M?9AKk%o(@anKPZc19H@Mei3GE NRYukA)|Sji#Q;z4HRJ#Q