adpcm转pcm解码成功
authorliangzhenying <867174124@qq.com>
Thu, 22 Aug 2024 08:58:37 +0000 (16:58 +0800)
committerliangzhenying <867174124@qq.com>
Thu, 22 Aug 2024 08:58:37 +0000 (16:58 +0800)
MouseSdk/AiMouseSdk/AiMouseSdk.xcodeproj/project.pbxproj
MouseSdk/AiMouseSdk/TlwMouseSdk/ADPCMConverter.h [deleted file]
MouseSdk/AiMouseSdk/TlwMouseSdk/ADPCMConverter.m [deleted file]
MouseSdk/AiMouseSdk/TlwMouseSdk/TlwAudioManager.m
MouseSdk/MouseSdk.xcworkspace/xcuserdata/apple.xcuserdatad/UserInterfaceState.xcuserstate
MouseSdk/MouseSdk/ViewController.m

index 3c2c2c2..60051b2 100644 (file)
                18AD83292BFB22DE009BDE3B /* AiSender.h in Headers */ = {isa = PBXBuildFile; fileRef = 18AD83272BFB22DE009BDE3B /* AiSender.h */; };
                18AD832A2BFB22DE009BDE3B /* AiSender.m in Sources */ = {isa = PBXBuildFile; fileRef = 18AD83282BFB22DE009BDE3B /* AiSender.m */; };
                18EF7AF72C7603E800AC5223 /* TlwRecordManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EF7AE82C7603E800AC5223 /* TlwRecordManager.m */; };
-               18EF7AF82C7603E800AC5223 /* ADPCMConverter.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EF7AE92C7603E800AC5223 /* ADPCMConverter.m */; };
                18EF7AF92C7603E800AC5223 /* adpcm.h in Headers */ = {isa = PBXBuildFile; fileRef = 18EF7AEA2C7603E800AC5223 /* adpcm.h */; };
                18EF7AFA2C7603E800AC5223 /* TlwMouseSdk.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EF7AEB2C7603E800AC5223 /* TlwMouseSdk.m */; };
                18EF7AFB2C7603E800AC5223 /* TlwTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EF7AEC2C7603E800AC5223 /* TlwTools.m */; };
                18EF7AFC2C7603E800AC5223 /* TlwConnectManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EF7AED2C7603E800AC5223 /* TlwConnectManager.m */; };
                18EF7AFD2C7603E800AC5223 /* TlwAudioManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 18EF7AEE2C7603E800AC5223 /* TlwAudioManager.h */; };
-               18EF7AFE2C7603E800AC5223 /* ADPCMConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = 18EF7AEF2C7603E800AC5223 /* ADPCMConverter.h */; };
                18EF7B002C7603E800AC5223 /* TlwRecordManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 18EF7AF12C7603E800AC5223 /* TlwRecordManager.h */; };
                18EF7B012C7603E800AC5223 /* adpcm.c in Sources */ = {isa = PBXBuildFile; fileRef = 18EF7AF22C7603E800AC5223 /* adpcm.c */; };
                18EF7B022C7603E800AC5223 /* TlwTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 18EF7AF32C7603E800AC5223 /* TlwTools.h */; };
                18AD83272BFB22DE009BDE3B /* AiSender.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AiSender.h; sourceTree = "<group>"; };
                18AD83282BFB22DE009BDE3B /* AiSender.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AiSender.m; sourceTree = "<group>"; };
                18EF7AE82C7603E800AC5223 /* TlwRecordManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TlwRecordManager.m; sourceTree = "<group>"; };
-               18EF7AE92C7603E800AC5223 /* ADPCMConverter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADPCMConverter.m; sourceTree = "<group>"; };
                18EF7AEA2C7603E800AC5223 /* adpcm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = adpcm.h; sourceTree = "<group>"; };
                18EF7AEB2C7603E800AC5223 /* TlwMouseSdk.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TlwMouseSdk.m; sourceTree = "<group>"; };
                18EF7AEC2C7603E800AC5223 /* TlwTools.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TlwTools.m; sourceTree = "<group>"; };
                18EF7AED2C7603E800AC5223 /* TlwConnectManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TlwConnectManager.m; sourceTree = "<group>"; };
                18EF7AEE2C7603E800AC5223 /* TlwAudioManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TlwAudioManager.h; sourceTree = "<group>"; };
-               18EF7AEF2C7603E800AC5223 /* ADPCMConverter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADPCMConverter.h; sourceTree = "<group>"; };
                18EF7AF12C7603E800AC5223 /* TlwRecordManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TlwRecordManager.h; sourceTree = "<group>"; };
                18EF7AF22C7603E800AC5223 /* adpcm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = adpcm.c; sourceTree = "<group>"; };
                18EF7AF32C7603E800AC5223 /* TlwTools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TlwTools.h; sourceTree = "<group>"; };
                                18EF7AED2C7603E800AC5223 /* TlwConnectManager.m */,
                                18EF7AEE2C7603E800AC5223 /* TlwAudioManager.h */,
                                18EF7AF52C7603E800AC5223 /* TlwAudioManager.m */,
-                               18EF7AEF2C7603E800AC5223 /* ADPCMConverter.h */,
-                               18EF7AE92C7603E800AC5223 /* ADPCMConverter.m */,
                                18EF7AEA2C7603E800AC5223 /* adpcm.h */,
                                18EF7AF22C7603E800AC5223 /* adpcm.c */,
                        );
                                180E7B582BD7BD83008558E8 /* AiRecordManager.h in Headers */,
                                180E7CE12BD8FC4E008558E8 /* avdevice.h in Headers */,
                                180E7CE92BD8FC4E008558E8 /* defs.h in Headers */,
-                               18EF7AFE2C7603E800AC5223 /* ADPCMConverter.h in Headers */,
                                180E7C942BD8FC4E008558E8 /* stereo3d.h in Headers */,
                                180E7CDE2BD8FC4E008558E8 /* film_grain_params.h in Headers */,
                                180E7C8C2BD8FC4E008558E8 /* error.h in Headers */,
                                180E7BE32BD7BD84008558E8 /* AiFrameManager.m in Sources */,
                                180E7BE72BD7BD84008558E8 /* AiAudioManager.m in Sources */,
                                189C15872C05726600676A80 /* AiConnectManager.m in Sources */,
-                               18EF7AF82C7603E800AC5223 /* ADPCMConverter.m in Sources */,
                                18EF7AFB2C7603E800AC5223 /* TlwTools.m in Sources */,
                                18EF7AFA2C7603E800AC5223 /* TlwMouseSdk.m in Sources */,
                                180E7BDF2BD7BD84008558E8 /* AiMouseConfig.m in Sources */,
diff --git a/MouseSdk/AiMouseSdk/TlwMouseSdk/ADPCMConverter.h b/MouseSdk/AiMouseSdk/TlwMouseSdk/ADPCMConverter.h
deleted file mode 100644 (file)
index 0558f1e..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-//
-//  AiAdpcm2pcm.h
-//  AiMouseSdk
-//
-//  Created by incar on 2024/8/20.
-//
-
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface ADPCMConverter : NSObject
-
-- (NSData *)convertADPCMToPCM:(NSData *)adpcmData;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/MouseSdk/AiMouseSdk/TlwMouseSdk/ADPCMConverter.m b/MouseSdk/AiMouseSdk/TlwMouseSdk/ADPCMConverter.m
deleted file mode 100644 (file)
index 42e25f3..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-
-#import "ADPCMConverter.h"
-#import <Foundation/Foundation.h>
-
-
-
-@implementation ADPCMConverter
-
-static const signed char idxtbl[] = { -1, -1, -1, -1, 2, 4, 6, 8, -1, -1, -1, -1, 2, 4, 6, 8};
-static const unsigned short steptbl[] = {
-    7,  8,  9,  10,  11,  12,  13,  14,  16,  17,
-    19,  21,  23,  25,  28,  31,  34,  37,  41,  45,
-    50,  55,  60,  66,  73,  80,  88,  97,  107, 118,
-    130, 143, 157, 173, 190, 209, 230, 253, 279, 307,
-    337, 371, 408, 449, 494, 544, 598, 658, 724, 796,
-    876, 963, 1060, 1166, 1282, 1411, 1552, 1707, 1878, 2066,
-    2272, 2499, 2749, 3024, 3327, 3660, 4026, 4428, 4871, 5358,
-    5894, 6484, 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899,
-       15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767
-};
-
-#define NUM_OF_ORIG_SAMPLE 2
-
-- (NSData *)convertADPCMToPCM:(NSData *)adpcmData {
-    NSMutableData *pcmData = [NSMutableData data];
-    const signed short *source = (const signed short *)[adpcmData bytes];
-    signed short *destination = (signed short *)[pcmData mutableBytes];
-    int len = (int)[adpcmData length] / sizeof(signed short);
-
-    int i;
-    // 假设 source 中的前两个元素分别是 predict 和 predict_idx
-    int predict = source[0];
-    int predict_idx = source[1] & 0xff;
-    const unsigned char *pcode = (const unsigned char *)(source + NUM_OF_ORIG_SAMPLE);
-    unsigned char code;
-    code = *pcode++;
-
-    for (i = 0; i < len; i++) {
-        if (1) {
-            int step = steptbl[predict_idx];
-
-            int diffq = step >> 3;
-
-            if (code & 4) {
-                diffq = diffq + step;
-            }
-            step = step >> 1;
-            if (code & 2) {
-                diffq = diffq + step;
-            }
-            step = step >> 1;
-            if (code & 1) {
-                diffq = diffq + step;
-            }
-
-            if (code & 8) {
-                predict = predict - diffq;
-            } else {
-                predict = predict + diffq;
-            }
-
-            if (predict > 32767) {
-                predict = 32767;
-            } else if (predict < -32768) {
-                predict = -32768;
-            }
-
-            predict_idx = predict_idx + idxtbl[code & 15];
-
-            if (predict_idx < 0) {
-                predict_idx = 0;
-            } else if (predict_idx > 88) {
-                predict_idx = 88;
-            }
-
-            if (i & 1) {
-                code = *pcode++;
-            } else {
-                code = code >> 4;
-            }
-        }
-
-        if (0 && i < NUM_OF_ORIG_SAMPLE) {
-            destination[i] = source[i];
-        } else {
-            destination[i] = predict;
-        }
-    }
-    return pcmData;
-}
-
-@end
index 460f163..362a485 100644 (file)
@@ -7,7 +7,6 @@
 
 #import "TlwAudioManager.h"
 #import <AVFoundation/AVFoundation.h>
-#import "ADPCMConverter.h"
 #import "adpcm.h"
 
 @interface TlwAudioManager ()
@@ -23,8 +22,6 @@
 }
 
 - (void)receiveData:(NSData *)data{
-//    [self.audioDecoder decodeSBCData:data];
-    
     NSData *pcmData = [self convertADPCMDataToPCMData:data];
     if(self.decodeCallBack)self.decodeCallBack(pcmData);
 }
@@ -37,9 +34,9 @@
 
     signed short *pd = (signed short *)malloc(adpcmLength * 4);
 
-    adpcm_to_pcm(ps, pd, adpcmLength / sizeof(signed short)*2);
+    adpcm_to_pcm(ps, pd, 248);
 
-    NSData *pcmData = [NSData dataWithBytes:pd length:adpcmLength * 4];
+    NSData *pcmData = [NSData dataWithBytes:pd length:496];
 
     free(ps);
     free(pd);
index 4a419ff..cb8563d 100644 (file)
Binary files a/MouseSdk/MouseSdk.xcworkspace/xcuserdata/apple.xcuserdatad/UserInterfaceState.xcuserstate and b/MouseSdk/MouseSdk.xcworkspace/xcuserdata/apple.xcuserdatad/UserInterfaceState.xcuserstate differ
index 3a0fec8..9eca1b8 100644 (file)
@@ -57,8 +57,8 @@
     [self presentViewControllerAsModalWindow:vc];
 }
 - (void)tlwAction{
-    [TlwHidManager shared];
-    return;
+//    [TlwHidManager shared];
+//    return;
     TlwVC *vc = [[TlwVC alloc] initWithNibName:nil bundle:nil];
     [self presentViewControllerAsModalWindow:vc];