新增SBC转pcm
authorliangzhenying <867174124@qq.com>
Fri, 21 Jun 2024 01:20:25 +0000 (09:20 +0800)
committerliangzhenying <867174124@qq.com>
Fri, 21 Jun 2024 01:20:25 +0000 (09:20 +0800)
18 files changed:
MixSdk/Example/Example.xcodeproj/project.pbxproj
MixSdk/Example/Example/Sbc2PcmViewController.swift [new file with mode: 0644]
MixSdk/Example/Example/SttViewController.swift
MixSdk/Example/Example/TtsFileViewController.swift
MixSdk/Example/Example/ViewController.swift
MixSdk/MixSdk.xcworkspace/xcuserdata/apple.xcuserdatad/UserInterfaceState.xcuserstate
MixSdk/MixSdk.xcworkspace/xcuserdata/apple.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
MixSdk/MixSdk/MixSdk.xcodeproj/project.pbxproj
MixSdk/MixSdk/MixSdk/AudioDecode/AiAudioDecoder.h [new file with mode: 0644]
MixSdk/MixSdk/MixSdk/AudioDecode/AiAudioDecoder.m [new file with mode: 0644]
MixSdk/MixSdk/MixSdk/AudioDecode/MSAudioConvert.swift [new file with mode: 0644]
MixSdk/MixSdk/MixSdk/MSStt.swift
MixSdk/MixSdk/MixSdk/MixSdk-Bridging-Header.h [new file with mode: 0644]
MixSdk/MixSdk/MixSdk/MixSdk.swift
MixSdk/MixSdk/MixSdk/TestManager.h [new file with mode: 0644]
MixSdk/MixSdk/MixSdk/TestManager.m [new file with mode: 0644]
document/MixSdk.pdf [deleted file]
document/MixSdk接口文档.md [moved from document/MixSdk.md with 91% similarity]

index 5e0df9b..15029be 100644 (file)
                18B74A282C201F2500FABBA9 /* TranslateViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18B74A272C201F2500FABBA9 /* TranslateViewController.swift */; };
                18B74A2A2C201FF200FABBA9 /* AigcViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18B74A292C201FF200FABBA9 /* AigcViewController.swift */; };
                18C42B412C230A15000D8860 /* TtsFileViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18C42B402C230A15000D8860 /* TtsFileViewController.swift */; };
+               18C42B592C24166D000D8860 /* input.msbc in Resources */ = {isa = PBXBuildFile; fileRef = 18C42B582C24166D000D8860 /* input.msbc */; };
+               18C42C802C242AAC000D8860 /* liblzma.5.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C42C7E2C242AAC000D8860 /* liblzma.5.tbd */; };
+               18C42C822C242AD3000D8860 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C42C812C242AD3000D8860 /* CoreAudio.framework */; };
+               18C42C842C242B01000D8860 /* libiconv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C42C832C242B01000D8860 /* libiconv.tbd */; };
+               18C42C862C242B0B000D8860 /* libbz2.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C42C852C242B0A000D8860 /* libbz2.tbd */; };
+               18C42C8A2C24344D000D8860 /* Sbc2PcmViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18C42C892C24344D000D8860 /* Sbc2PcmViewController.swift */; };
                18DB20482C213D730070D571 /* AiMouseAudioRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = 18DB20462C213D730070D571 /* AiMouseAudioRecord.m */; };
                18DB20492C213D730070D571 /* AiMouseRecordManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 18DB20472C213D730070D571 /* AiMouseRecordManager.m */; };
                F59940004E1C16053FBD42F5 /* Pods_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B555BC40ACD8F31DBCDD1A2 /* Pods_Example.framework */; };
                18B74A272C201F2500FABBA9 /* TranslateViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TranslateViewController.swift; sourceTree = "<group>"; };
                18B74A292C201FF200FABBA9 /* AigcViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AigcViewController.swift; sourceTree = "<group>"; };
                18C42B402C230A15000D8860 /* TtsFileViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TtsFileViewController.swift; sourceTree = "<group>"; };
+               18C42B582C24166D000D8860 /* input.msbc */ = {isa = PBXFileReference; lastKnownFileType = file; name = input.msbc; path = ../../../../../../input.msbc; sourceTree = "<group>"; };
+               18C42C7E2C242AAC000D8860 /* liblzma.5.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = liblzma.5.tbd; path = usr/lib/liblzma.5.tbd; sourceTree = SDKROOT; };
+               18C42C812C242AD3000D8860 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
+               18C42C832C242B01000D8860 /* libiconv.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libiconv.tbd; path = usr/lib/libiconv.tbd; sourceTree = SDKROOT; };
+               18C42C852C242B0A000D8860 /* libbz2.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libbz2.tbd; path = usr/lib/libbz2.tbd; sourceTree = SDKROOT; };
+               18C42C892C24344D000D8860 /* Sbc2PcmViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Sbc2PcmViewController.swift; sourceTree = "<group>"; };
                18DB20432C213D720070D571 /* Example-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Example-Bridging-Header.h"; sourceTree = "<group>"; };
                18DB20442C213D730070D571 /* AiMouseRecordManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AiMouseRecordManager.h; sourceTree = "<group>"; };
                18DB20452C213D730070D571 /* AiMouseAudioRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AiMouseAudioRecord.h; sourceTree = "<group>"; };
                        isa = PBXFrameworksBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
+                               18C42C862C242B0B000D8860 /* libbz2.tbd in Frameworks */,
+                               18C42C842C242B01000D8860 /* libiconv.tbd in Frameworks */,
+                               18C42C822C242AD3000D8860 /* CoreAudio.framework in Frameworks */,
+                               18C42C802C242AAC000D8860 /* liblzma.5.tbd in Frameworks */,
                                18132AF82C1C4D15002F6B52 /* libz.tbd in Frameworks */,
                                18204BEE2C19428100F94E69 /* MixSdk.framework in Frameworks */,
                                F59940004E1C16053FBD42F5 /* Pods_Example.framework in Frameworks */,
                181188582C1BE80B00C23FAB /* Resource */ = {
                        isa = PBXGroup;
                        children = (
+                               18C42B582C24166D000D8860 /* input.msbc */,
                                181188592C1BE80B00C23FAB /* 1.pcm */,
                        );
                        path = Resource;
                                18B74A252C201EBD00FABBA9 /* ChatViewController.swift */,
                                18B74A272C201F2500FABBA9 /* TranslateViewController.swift */,
                                18B74A292C201FF200FABBA9 /* AigcViewController.swift */,
+                               18C42C892C24344D000D8860 /* Sbc2PcmViewController.swift */,
                                18204BD92C193F9A00F94E69 /* Main.storyboard */,
                                18204BDC2C193F9D00F94E69 /* Assets.xcassets */,
                                18204BDE2C193F9D00F94E69 /* LaunchScreen.storyboard */,
                18204BED2C19428100F94E69 /* Frameworks */ = {
                        isa = PBXGroup;
                        children = (
+                               18C42C852C242B0A000D8860 /* libbz2.tbd */,
+                               18C42C832C242B01000D8860 /* libiconv.tbd */,
+                               18C42C812C242AD3000D8860 /* CoreAudio.framework */,
+                               18C42C7E2C242AAC000D8860 /* liblzma.5.tbd */,
                                18132AF62C1C4D15002F6B52 /* libz.tbd */,
                                4B555BC40ACD8F31DBCDD1A2 /* Pods_Example.framework */,
                        );
                                18204BE02C193F9D00F94E69 /* LaunchScreen.storyboard in Resources */,
                                18204BDD2C193F9D00F94E69 /* Assets.xcassets in Resources */,
                                18204BDB2C193F9A00F94E69 /* Main.storyboard in Resources */,
+                               18C42B592C24166D000D8860 /* input.msbc in Resources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
                                18B74A2A2C201FF200FABBA9 /* AigcViewController.swift in Sources */,
                                184FFC512C21A4EB006F664D /* TtsLongViewController.swift in Sources */,
                                18C42B412C230A15000D8860 /* TtsFileViewController.swift in Sources */,
+                               18C42C8A2C24344D000D8860 /* Sbc2PcmViewController.swift in Sources */,
                                18B74A282C201F2500FABBA9 /* TranslateViewController.swift in Sources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
diff --git a/MixSdk/Example/Example/Sbc2PcmViewController.swift b/MixSdk/Example/Example/Sbc2PcmViewController.swift
new file mode 100644 (file)
index 0000000..aaa396b
--- /dev/null
@@ -0,0 +1,102 @@
+//
+//  Sbc2PcmViewController.swift
+//  Example
+//
+//  Created by incar on 2024/6/20.
+//
+
+import UIKit
+import MixSdk
+import SnapKit
+import Toast_Swift
+class Sbc2PcmViewController: UIViewController{
+    let textView = UITextView()
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        // Do any additional setup after loading the view.
+        setupViews()
+        setupSttCallBack()
+    }
+    func setupViews(){
+        self.title = "sbc2pcm"
+        self.view.backgroundColor = .white
+        
+        let recordBtn = UIButton(type: .custom)
+        recordBtn.setTitle("start record", for: .normal)
+        recordBtn.setTitle("stop record", for: .selected)
+        recordBtn.setTitleColor(.white, for: .normal)
+        recordBtn.backgroundColor = .blue
+        recordBtn.addTarget(self, action: #selector(recordAction(button:)), for: .touchUpInside)
+        view.addSubview(recordBtn)
+        recordBtn.snp.makeConstraints { make in
+            make.width.centerX.equalToSuperview()
+            make.height.equalTo(60)
+            make.bottom.equalToSuperview().inset(20)
+        }
+        
+        textView.isEditable = false
+        view.addSubview(textView)
+        textView.snp.makeConstraints { make in
+            make.top.equalToSuperview().inset(80)
+            make.left.right.equalToSuperview()
+            make.bottom.equalTo(recordBtn.snp.top)
+        }
+    }
+    func setupSttCallBack(){
+        MixSdk.shared.stt.eventCallBack = {[weak self] event in
+            guard let self = self else {return}
+            if event.event == "TranscriptionStarted" {
+                //2
+                self.startTask()
+            }
+            else if event.event == "TranscriptionCompleted"{
+                //6
+                self.endTask()
+            }
+            else if event.event == "SentenceEnd",let text = event.result?.result{
+                //4
+                self.textView.text += text + "\n"
+                let range = NSMakeRange(textView.text.count - 1, 1)
+                self.textView.scrollRangeToVisible(range)
+            }
+        }
+    }
+}
+
+extension Sbc2PcmViewController{
+    @objc func recordAction(button:UIButton){
+        button.isSelected = !button.isSelected
+        if button.isSelected {
+            //1
+            MixSdk.shared.stt.startTranscription()
+        }
+        else{
+            //5
+            MixSdk.shared.stt.stopTranscription()
+        }
+    }
+    //3
+    @objc func startTask(){
+        guard let path = Bundle.main.path(forResource: "input", ofType: "msbc") else {return}
+        let data = readFile(from: path)!
+//        MSAudioConvert.sbcTopcm(data){ pcm in
+//            MixSdk.shared.stt.sendVoice(pcmData: pcm)
+//        }
+        MixSdk.shared.stt.sendVoice(sbcData: data)
+    }
+    //7
+    @objc func endTask(){
+        
+    }
+    func readFile(from path:String) ->Data?{
+       let fileURL = URL(fileURLWithPath: path)
+       do {
+           let data = try Data(contentsOf:fileURL)
+           return data
+       } catch {
+           return nil
+       }
+   }
+}
+
index 23f1d88..2c1e02e 100644 (file)
@@ -66,7 +66,7 @@ class SttViewController: UIViewController{
     }
     func setupRecordCallBack(){
         recordMamager.recordDataCallBack = { data in
-            MixSdk.shared.stt.sendVoice(data: data)
+            MixSdk.shared.stt.sendVoice(pcmData: data)
         }
     }
 }
index 01d1bbe..432736d 100644 (file)
@@ -11,7 +11,6 @@ import MixSdk
 import SnapKit
 import Toast_Swift
 class TtsFileViewController: UIViewController{
-    let recordMamager =  AiMouseRecordManager()
     var isRecord = false;
     let textView = UITextView()
     
@@ -20,7 +19,6 @@ class TtsFileViewController: UIViewController{
         // Do any additional setup after loading the view.
         setupViews()
         setupSttCallBack()
-        setupRecordCallBack()
     }
     func setupViews(){
         self.title = "语音文件识别"
@@ -57,11 +55,6 @@ class TtsFileViewController: UIViewController{
             }
         }
     }
-    func setupRecordCallBack(){
-        recordMamager.recordDataCallBack = { data in
-            MixSdk.shared.stt.sendVoice(data: data)
-        }
-    }
 }
 
 
index 978ea56..abb1d08 100644 (file)
@@ -24,6 +24,7 @@ class ViewController: UIViewController{
         
         ("语音文件转文本","fileSttAction"),
         ("语音数据流转文本","sttAction"),
+        ("sbc转pcm","sbc2PcmAction"),
     ]
     
     override func viewDidLoad() {
@@ -154,5 +155,15 @@ extension ViewController{
         let vc = AigcViewController()
         self.navigationController?.pushViewController(vc, animated: true)
     }
+    
+    @objc func sbc2PcmAction() {
+        if !MixSdk.shared.auth.authorized {
+            self.view.makeToast("unAuthorized!")
+            return;
+        }
+        let vc = Sbc2PcmViewController()
+        self.navigationController?.pushViewController(vc, animated: true)
+    }
+    
 }
 
index 21b4eed..f215426 100644 (file)
Binary files a/MixSdk/MixSdk.xcworkspace/xcuserdata/apple.xcuserdatad/UserInterfaceState.xcuserstate and b/MixSdk/MixSdk.xcworkspace/xcuserdata/apple.xcuserdatad/UserInterfaceState.xcuserstate differ
index 56e205c..a1a8a88 100644 (file)
@@ -3,4 +3,70 @@
    uuid = "CEE9026F-0B36-4450-AB09-5A796FB97D62"
    type = "0"
    version = "2.0">
+   <Breakpoints>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "1FD57390-1933-4942-9B89-E4CB575F22B5"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Example/Example/SbcToPcm.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "40"
+            endingLineNumber = "40"
+            landmarkName = "convertSBCToPCM(inputData:)"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "54C6621A-B187-42D5-9BBA-31818E6F3CBA"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Example/Example/AudioConvert.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "39"
+            endingLineNumber = "39"
+            landmarkName = "convertSBCToPCM(inputData:)"
+            landmarkType = "7">
+            <Locations>
+               <Location
+                  uuid = "54C6621A-B187-42D5-9BBA-31818E6F3CBA - 5c67fa1b3d87ef5b"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "static Example.AudioConvert.convertSBCToPCM(inputData: Foundation.Data) -&gt; Swift.Optional&lt;Foundation.Data&gt;"
+                  moduleName = "Example"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/apple/Desktop/code/MixSdk_iOS/MixSdk/Example/Example/AudioConvert.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "40"
+                  endingLineNumber = "40"
+                  offsetFromSymbolStart = "1444">
+               </Location>
+               <Location
+                  uuid = "54C6621A-B187-42D5-9BBA-31818E6F3CBA - 5c67fa1b3d87ef5b"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "static Example.AudioConvert.convertSBCToPCM(inputData: Foundation.Data) -&gt; Swift.Optional&lt;Foundation.Data&gt;"
+                  moduleName = "Example"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/apple/Desktop/code/MixSdk_iOS/MixSdk/Example/Example/AudioConvert.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "40"
+                  endingLineNumber = "40"
+                  offsetFromSymbolStart = "1188">
+               </Location>
+            </Locations>
+         </BreakpointContent>
+      </BreakpointProxy>
+   </Breakpoints>
 </Bucket>
index 9fc448b..e62dc87 100644 (file)
                18C42B3D2C22F2C4000D8860 /* MSTtsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18C42B3C2C22F2C4000D8860 /* MSTtsModel.swift */; };
                18C42B3F2C22F2E1000D8860 /* MSChatModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18C42B3E2C22F2E1000D8860 /* MSChatModel.swift */; };
                18C42B4B2C23DA29000D8860 /* SbcToPcm.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18C42B4A2C23DA29000D8860 /* SbcToPcm.swift */; };
+               18C42BE72C242202000D8860 /* version.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B5E2C242202000D8860 /* version.h */; };
+               18C42BE82C242202000D8860 /* buffersrc.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B5F2C242202000D8860 /* buffersrc.h */; };
+               18C42BE92C242202000D8860 /* buffersink.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B602C242202000D8860 /* buffersink.h */; };
+               18C42BEA2C242202000D8860 /* avfilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B612C242202000D8860 /* avfilter.h */; };
+               18C42BEB2C242202000D8860 /* hwcontext.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B632C242202000D8860 /* hwcontext.h */; };
+               18C42BEC2C242202000D8860 /* time.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B642C242202000D8860 /* time.h */; };
+               18C42BED2C242202000D8860 /* hwcontext_cuda.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B652C242202000D8860 /* hwcontext_cuda.h */; };
+               18C42BEE2C242202000D8860 /* intfloat.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B662C242202000D8860 /* intfloat.h */; };
+               18C42BEF2C242202000D8860 /* error.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B672C242202000D8860 /* error.h */; };
+               18C42BF02C242202000D8860 /* fifo.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B682C242202000D8860 /* fifo.h */; };
+               18C42BF12C242202000D8860 /* blowfish.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B692C242202000D8860 /* blowfish.h */; };
+               18C42BF22C242202000D8860 /* hwcontext_mediacodec.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B6A2C242202000D8860 /* hwcontext_mediacodec.h */; };
+               18C42BF32C242202000D8860 /* replaygain.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B6B2C242202000D8860 /* replaygain.h */; };
+               18C42BF42C242202000D8860 /* version.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B6C2C242202000D8860 /* version.h */; };
+               18C42BF52C242202000D8860 /* murmur3.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B6D2C242202000D8860 /* murmur3.h */; };
+               18C42BF62C242202000D8860 /* stereo3d.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B6E2C242202000D8860 /* stereo3d.h */; };
+               18C42BF72C242202000D8860 /* samplefmt.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B6F2C242202000D8860 /* samplefmt.h */; };
+               18C42BF82C242202000D8860 /* pixdesc.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B702C242202000D8860 /* pixdesc.h */; };
+               18C42BF92C242202000D8860 /* base64.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B712C242202000D8860 /* base64.h */; };
+               18C42BFA2C242202000D8860 /* rational.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B722C242202000D8860 /* rational.h */; };
+               18C42BFB2C242202000D8860 /* sha.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B732C242202000D8860 /* sha.h */; };
+               18C42BFC2C242202000D8860 /* motion_vector.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B742C242202000D8860 /* motion_vector.h */; };
+               18C42BFD2C242202000D8860 /* avconfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B752C242202000D8860 /* avconfig.h */; };
+               18C42BFE2C242202000D8860 /* lfg.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B762C242202000D8860 /* lfg.h */; };
+               18C42BFF2C242202000D8860 /* avutil.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B772C242202000D8860 /* avutil.h */; };
+               18C42C002C242202000D8860 /* hwcontext_vulkan.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B782C242202000D8860 /* hwcontext_vulkan.h */; };
+               18C42C012C242202000D8860 /* xtea.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B792C242202000D8860 /* xtea.h */; };
+               18C42C022C242202000D8860 /* crc.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B7A2C242202000D8860 /* crc.h */; };
+               18C42C032C242202000D8860 /* hwcontext_vdpau.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B7B2C242202000D8860 /* hwcontext_vdpau.h */; };
+               18C42C042C242202000D8860 /* frame.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B7C2C242202000D8860 /* frame.h */; };
+               18C42C052C242202000D8860 /* file.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B7D2C242202000D8860 /* file.h */; };
+               18C42C062C242202000D8860 /* md5.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B7E2C242202000D8860 /* md5.h */; };
+               18C42C072C242202000D8860 /* cast5.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B7F2C242202000D8860 /* cast5.h */; };
+               18C42C082C242202000D8860 /* hwcontext_vaapi.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B802C242202000D8860 /* hwcontext_vaapi.h */; };
+               18C42C092C242202000D8860 /* spherical.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B812C242202000D8860 /* spherical.h */; };
+               18C42C0A2C242202000D8860 /* ffversion.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B822C242202000D8860 /* ffversion.h */; };
+               18C42C0B2C242202000D8860 /* hwcontext_opencl.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B832C242202000D8860 /* hwcontext_opencl.h */; };
+               18C42C0C2C242202000D8860 /* audio_fifo.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B842C242202000D8860 /* audio_fifo.h */; };
+               18C42C0D2C242202000D8860 /* tree.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B852C242202000D8860 /* tree.h */; };
+               18C42C0E2C242202000D8860 /* threadmessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B862C242202000D8860 /* threadmessage.h */; };
+               18C42C0F2C242202000D8860 /* attributes.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B872C242202000D8860 /* attributes.h */; };
+               18C42C102C242202000D8860 /* adler32.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B882C242202000D8860 /* adler32.h */; };
+               18C42C112C242202000D8860 /* hwcontext_d3d11va.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B892C242202000D8860 /* hwcontext_d3d11va.h */; };
+               18C42C122C242202000D8860 /* timecode.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B8A2C242202000D8860 /* timecode.h */; };
+               18C42C132C242202000D8860 /* dovi_meta.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B8B2C242202000D8860 /* dovi_meta.h */; };
+               18C42C142C242202000D8860 /* tx.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B8C2C242202000D8860 /* tx.h */; };
+               18C42C152C242202000D8860 /* sha512.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B8D2C242202000D8860 /* sha512.h */; };
+               18C42C162C242202000D8860 /* hwcontext_dxva2.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B8E2C242202000D8860 /* hwcontext_dxva2.h */; };
+               18C42C172C242202000D8860 /* display.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B8F2C242202000D8860 /* display.h */; };
+               18C42C182C242202000D8860 /* buffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B902C242202000D8860 /* buffer.h */; };
+               18C42C192C242202000D8860 /* camellia.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B912C242202000D8860 /* camellia.h */; };
+               18C42C1A2C242202000D8860 /* pixelutils.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B922C242202000D8860 /* pixelutils.h */; };
+               18C42C1B2C242202000D8860 /* hwcontext_drm.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B932C242202000D8860 /* hwcontext_drm.h */; };
+               18C42C1C2C242202000D8860 /* common.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B942C242202000D8860 /* common.h */; };
+               18C42C1D2C242202000D8860 /* hmac.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B952C242202000D8860 /* hmac.h */; };
+               18C42C1E2C242202000D8860 /* eval.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B962C242202000D8860 /* eval.h */; };
+               18C42C1F2C242202000D8860 /* dict.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B972C242202000D8860 /* dict.h */; };
+               18C42C202C242202000D8860 /* random_seed.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B982C242202000D8860 /* random_seed.h */; };
+               18C42C212C242202000D8860 /* opt.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B992C242202000D8860 /* opt.h */; };
+               18C42C222C242202000D8860 /* mastering_display_metadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B9A2C242202000D8860 /* mastering_display_metadata.h */; };
+               18C42C232C242202000D8860 /* log.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B9B2C242202000D8860 /* log.h */; };
+               18C42C242C242202000D8860 /* aes.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B9C2C242202000D8860 /* aes.h */; };
+               18C42C252C242202000D8860 /* macros.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B9D2C242202000D8860 /* macros.h */; };
+               18C42C262C242202000D8860 /* bswap.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B9E2C242202000D8860 /* bswap.h */; };
+               18C42C272C242202000D8860 /* rc4.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42B9F2C242202000D8860 /* rc4.h */; };
+               18C42C282C242202000D8860 /* tea.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BA02C242202000D8860 /* tea.h */; };
+               18C42C292C242202000D8860 /* cpu.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BA12C242202000D8860 /* cpu.h */; };
+               18C42C2A2C242202000D8860 /* lzo.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BA22C242202000D8860 /* lzo.h */; };
+               18C42C2B2C242202000D8860 /* des.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BA32C242202000D8860 /* des.h */; };
+               18C42C2C2C242202000D8860 /* channel_layout.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BA42C242202000D8860 /* channel_layout.h */; };
+               18C42C2D2C242202000D8860 /* encryption_info.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BA52C242202000D8860 /* encryption_info.h */; };
+               18C42C2E2C242202000D8860 /* twofish.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BA62C242202000D8860 /* twofish.h */; };
+               18C42C2F2C242202000D8860 /* imgutils.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BA72C242202000D8860 /* imgutils.h */; };
+               18C42C302C242202000D8860 /* hwcontext_videotoolbox.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BA82C242202000D8860 /* hwcontext_videotoolbox.h */; };
+               18C42C312C242202000D8860 /* video_enc_params.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BA92C242202000D8860 /* video_enc_params.h */; };
+               18C42C322C242202000D8860 /* mem.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BAA2C242202000D8860 /* mem.h */; };
+               18C42C332C242202000D8860 /* parseutils.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BAB2C242202000D8860 /* parseutils.h */; };
+               18C42C342C242202000D8860 /* ripemd.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BAC2C242202000D8860 /* ripemd.h */; };
+               18C42C352C242202000D8860 /* bprint.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BAD2C242202000D8860 /* bprint.h */; };
+               18C42C362C242202000D8860 /* hdr_dynamic_metadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BAE2C242202000D8860 /* hdr_dynamic_metadata.h */; };
+               18C42C372C242202000D8860 /* hwcontext_qsv.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BAF2C242202000D8860 /* hwcontext_qsv.h */; };
+               18C42C382C242202000D8860 /* pixfmt.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BB02C242202000D8860 /* pixfmt.h */; };
+               18C42C392C242202000D8860 /* aes_ctr.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BB12C242202000D8860 /* aes_ctr.h */; };
+               18C42C3A2C242202000D8860 /* timestamp.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BB22C242202000D8860 /* timestamp.h */; };
+               18C42C3B2C242202000D8860 /* downmix_info.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BB32C242202000D8860 /* downmix_info.h */; };
+               18C42C3C2C242202000D8860 /* avassert.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BB42C242202000D8860 /* avassert.h */; };
+               18C42C3D2C242202000D8860 /* hash.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BB52C242202000D8860 /* hash.h */; };
+               18C42C3E2C242202000D8860 /* mathematics.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BB62C242202000D8860 /* mathematics.h */; };
+               18C42C3F2C242202000D8860 /* intreadwrite.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BB72C242202000D8860 /* intreadwrite.h */; };
+               18C42C402C242202000D8860 /* avstring.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BB82C242202000D8860 /* avstring.h */; };
+               18C42C412C242202000D8860 /* version.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BBA2C242202000D8860 /* version.h */; };
+               18C42C422C242202000D8860 /* avdevice.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BBB2C242202000D8860 /* avdevice.h */; };
+               18C42C432C242202000D8860 /* version.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BBD2C242202000D8860 /* version.h */; };
+               18C42C442C242202000D8860 /* avio.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BBE2C242202000D8860 /* avio.h */; };
+               18C42C452C242202000D8860 /* avformat.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BBF2C242202000D8860 /* avformat.h */; };
+               18C42C462C242202000D8860 /* version.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BC12C242202000D8860 /* version.h */; };
+               18C42C472C242202000D8860 /* swscale.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BC22C242202000D8860 /* swscale.h */; };
+               18C42C482C242202000D8860 /* adts_parser.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BC42C242202000D8860 /* adts_parser.h */; };
+               18C42C492C242202000D8860 /* avcodec.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BC52C242202000D8860 /* avcodec.h */; };
+               18C42C4A2C242202000D8860 /* version.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BC62C242202000D8860 /* version.h */; };
+               18C42C4B2C242202000D8860 /* vdpau.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BC72C242202000D8860 /* vdpau.h */; };
+               18C42C4C2C242202000D8860 /* codec_par.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BC82C242202000D8860 /* codec_par.h */; };
+               18C42C4D2C242202000D8860 /* qsv.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BC92C242202000D8860 /* qsv.h */; };
+               18C42C4E2C242202000D8860 /* vaapi.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BCA2C242202000D8860 /* vaapi.h */; };
+               18C42C4F2C242202000D8860 /* codec_desc.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BCB2C242202000D8860 /* codec_desc.h */; };
+               18C42C502C242202000D8860 /* videotoolbox.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BCC2C242202000D8860 /* videotoolbox.h */; };
+               18C42C512C242202000D8860 /* xvmc.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BCD2C242202000D8860 /* xvmc.h */; };
+               18C42C522C242202000D8860 /* mediacodec.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BCE2C242202000D8860 /* mediacodec.h */; };
+               18C42C532C242202000D8860 /* d3d11va.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BCF2C242202000D8860 /* d3d11va.h */; };
+               18C42C542C242202000D8860 /* avfft.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BD02C242202000D8860 /* avfft.h */; };
+               18C42C552C242202000D8860 /* codec.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BD12C242202000D8860 /* codec.h */; };
+               18C42C562C242202000D8860 /* jni.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BD22C242202000D8860 /* jni.h */; };
+               18C42C572C242202000D8860 /* packet.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BD32C242202000D8860 /* packet.h */; };
+               18C42C582C242202000D8860 /* bsf.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BD42C242202000D8860 /* bsf.h */; };
+               18C42C592C242202000D8860 /* codec_id.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BD52C242202000D8860 /* codec_id.h */; };
+               18C42C5A2C242202000D8860 /* dirac.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BD62C242202000D8860 /* dirac.h */; };
+               18C42C5B2C242202000D8860 /* avdct.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BD72C242202000D8860 /* avdct.h */; };
+               18C42C5C2C242202000D8860 /* ac3_parser.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BD82C242202000D8860 /* ac3_parser.h */; };
+               18C42C5D2C242202000D8860 /* vorbis_parser.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BD92C242202000D8860 /* vorbis_parser.h */; };
+               18C42C5E2C242202000D8860 /* dxva2.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BDA2C242202000D8860 /* dxva2.h */; };
+               18C42C5F2C242202000D8860 /* dv_profile.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BDB2C242202000D8860 /* dv_profile.h */; };
+               18C42C602C242202000D8860 /* version.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BDD2C242202000D8860 /* version.h */; };
+               18C42C612C242202000D8860 /* swresample.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42BDE2C242202000D8860 /* swresample.h */; };
+               18C42C622C242202000D8860 /* libavutil.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C42BE02C242202000D8860 /* libavutil.a */; };
+               18C42C632C242202000D8860 /* libavfilter.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C42BE12C242202000D8860 /* libavfilter.a */; };
+               18C42C642C242203000D8860 /* libavcodec.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C42BE22C242202000D8860 /* libavcodec.a */; };
+               18C42C652C242203000D8860 /* libavformat.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C42BE32C242202000D8860 /* libavformat.a */; };
+               18C42C662C242203000D8860 /* libavdevice.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C42BE42C242202000D8860 /* libavdevice.a */; };
+               18C42C672C242203000D8860 /* libswresample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C42BE52C242202000D8860 /* libswresample.a */; };
+               18C42C682C242203000D8860 /* libswscale.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C42BE62C242202000D8860 /* libswscale.a */; };
+               18C42C6F2C2422C2000D8860 /* AiAudioDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 18C42C6B2C2422C2000D8860 /* AiAudioDecoder.m */; };
+               18C42C702C2422C2000D8860 /* AiAudioDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42C6C2C2422C2000D8860 /* AiAudioDecoder.h */; };
+               18C42C742C242361000D8860 /* TestManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42C722C242361000D8860 /* TestManager.h */; };
+               18C42C752C242361000D8860 /* TestManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 18C42C732C242361000D8860 /* TestManager.m */; };
+               18C42C782C24241A000D8860 /* MixSdk-Bridging-Header.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C42C762C24241A000D8860 /* MixSdk-Bridging-Header.h */; };
+               18C42C7B2C24270D000D8860 /* MSAudioConvert.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18C42C7A2C24270D000D8860 /* MSAudioConvert.swift */; };
+               18C42C7D2C242A40000D8860 /* liblzma.5.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C42C7C2C242A40000D8860 /* liblzma.5.tbd */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXFileReference section */
                18C42B3C2C22F2C4000D8860 /* MSTtsModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MSTtsModel.swift; sourceTree = "<group>"; };
                18C42B3E2C22F2E1000D8860 /* MSChatModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MSChatModel.swift; sourceTree = "<group>"; };
                18C42B4A2C23DA29000D8860 /* SbcToPcm.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SbcToPcm.swift; sourceTree = "<group>"; };
+               18C42B5E2C242202000D8860 /* version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = version.h; sourceTree = "<group>"; };
+               18C42B5F2C242202000D8860 /* buffersrc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = buffersrc.h; sourceTree = "<group>"; };
+               18C42B602C242202000D8860 /* buffersink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = buffersink.h; sourceTree = "<group>"; };
+               18C42B612C242202000D8860 /* avfilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = avfilter.h; sourceTree = "<group>"; };
+               18C42B632C242202000D8860 /* hwcontext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hwcontext.h; sourceTree = "<group>"; };
+               18C42B642C242202000D8860 /* time.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = time.h; sourceTree = "<group>"; };
+               18C42B652C242202000D8860 /* hwcontext_cuda.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hwcontext_cuda.h; sourceTree = "<group>"; };
+               18C42B662C242202000D8860 /* intfloat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = intfloat.h; sourceTree = "<group>"; };
+               18C42B672C242202000D8860 /* error.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = error.h; sourceTree = "<group>"; };
+               18C42B682C242202000D8860 /* fifo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fifo.h; sourceTree = "<group>"; };
+               18C42B692C242202000D8860 /* blowfish.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = blowfish.h; sourceTree = "<group>"; };
+               18C42B6A2C242202000D8860 /* hwcontext_mediacodec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hwcontext_mediacodec.h; sourceTree = "<group>"; };
+               18C42B6B2C242202000D8860 /* replaygain.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = replaygain.h; sourceTree = "<group>"; };
+               18C42B6C2C242202000D8860 /* version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = version.h; sourceTree = "<group>"; };
+               18C42B6D2C242202000D8860 /* murmur3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = murmur3.h; sourceTree = "<group>"; };
+               18C42B6E2C242202000D8860 /* stereo3d.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stereo3d.h; sourceTree = "<group>"; };
+               18C42B6F2C242202000D8860 /* samplefmt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = samplefmt.h; sourceTree = "<group>"; };
+               18C42B702C242202000D8860 /* pixdesc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pixdesc.h; sourceTree = "<group>"; };
+               18C42B712C242202000D8860 /* base64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = base64.h; sourceTree = "<group>"; };
+               18C42B722C242202000D8860 /* rational.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rational.h; sourceTree = "<group>"; };
+               18C42B732C242202000D8860 /* sha.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sha.h; sourceTree = "<group>"; };
+               18C42B742C242202000D8860 /* motion_vector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = motion_vector.h; sourceTree = "<group>"; };
+               18C42B752C242202000D8860 /* avconfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = avconfig.h; sourceTree = "<group>"; };
+               18C42B762C242202000D8860 /* lfg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lfg.h; sourceTree = "<group>"; };
+               18C42B772C242202000D8860 /* avutil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = avutil.h; sourceTree = "<group>"; };
+               18C42B782C242202000D8860 /* hwcontext_vulkan.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hwcontext_vulkan.h; sourceTree = "<group>"; };
+               18C42B792C242202000D8860 /* xtea.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = xtea.h; sourceTree = "<group>"; };
+               18C42B7A2C242202000D8860 /* crc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crc.h; sourceTree = "<group>"; };
+               18C42B7B2C242202000D8860 /* hwcontext_vdpau.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hwcontext_vdpau.h; sourceTree = "<group>"; };
+               18C42B7C2C242202000D8860 /* frame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = frame.h; sourceTree = "<group>"; };
+               18C42B7D2C242202000D8860 /* file.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = file.h; sourceTree = "<group>"; };
+               18C42B7E2C242202000D8860 /* md5.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = md5.h; sourceTree = "<group>"; };
+               18C42B7F2C242202000D8860 /* cast5.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cast5.h; sourceTree = "<group>"; };
+               18C42B802C242202000D8860 /* hwcontext_vaapi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hwcontext_vaapi.h; sourceTree = "<group>"; };
+               18C42B812C242202000D8860 /* spherical.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spherical.h; sourceTree = "<group>"; };
+               18C42B822C242202000D8860 /* ffversion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffversion.h; sourceTree = "<group>"; };
+               18C42B832C242202000D8860 /* hwcontext_opencl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hwcontext_opencl.h; sourceTree = "<group>"; };
+               18C42B842C242202000D8860 /* audio_fifo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio_fifo.h; sourceTree = "<group>"; };
+               18C42B852C242202000D8860 /* tree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tree.h; sourceTree = "<group>"; };
+               18C42B862C242202000D8860 /* threadmessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = threadmessage.h; sourceTree = "<group>"; };
+               18C42B872C242202000D8860 /* attributes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = attributes.h; sourceTree = "<group>"; };
+               18C42B882C242202000D8860 /* adler32.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = adler32.h; sourceTree = "<group>"; };
+               18C42B892C242202000D8860 /* hwcontext_d3d11va.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hwcontext_d3d11va.h; sourceTree = "<group>"; };
+               18C42B8A2C242202000D8860 /* timecode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = timecode.h; sourceTree = "<group>"; };
+               18C42B8B2C242202000D8860 /* dovi_meta.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dovi_meta.h; sourceTree = "<group>"; };
+               18C42B8C2C242202000D8860 /* tx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tx.h; sourceTree = "<group>"; };
+               18C42B8D2C242202000D8860 /* sha512.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sha512.h; sourceTree = "<group>"; };
+               18C42B8E2C242202000D8860 /* hwcontext_dxva2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hwcontext_dxva2.h; sourceTree = "<group>"; };
+               18C42B8F2C242202000D8860 /* display.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = display.h; sourceTree = "<group>"; };
+               18C42B902C242202000D8860 /* buffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = buffer.h; sourceTree = "<group>"; };
+               18C42B912C242202000D8860 /* camellia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = camellia.h; sourceTree = "<group>"; };
+               18C42B922C242202000D8860 /* pixelutils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pixelutils.h; sourceTree = "<group>"; };
+               18C42B932C242202000D8860 /* hwcontext_drm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hwcontext_drm.h; sourceTree = "<group>"; };
+               18C42B942C242202000D8860 /* common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = "<group>"; };
+               18C42B952C242202000D8860 /* hmac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hmac.h; sourceTree = "<group>"; };
+               18C42B962C242202000D8860 /* eval.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eval.h; sourceTree = "<group>"; };
+               18C42B972C242202000D8860 /* dict.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dict.h; sourceTree = "<group>"; };
+               18C42B982C242202000D8860 /* random_seed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = random_seed.h; sourceTree = "<group>"; };
+               18C42B992C242202000D8860 /* opt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opt.h; sourceTree = "<group>"; };
+               18C42B9A2C242202000D8860 /* mastering_display_metadata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mastering_display_metadata.h; sourceTree = "<group>"; };
+               18C42B9B2C242202000D8860 /* log.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = log.h; sourceTree = "<group>"; };
+               18C42B9C2C242202000D8860 /* aes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aes.h; sourceTree = "<group>"; };
+               18C42B9D2C242202000D8860 /* macros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = macros.h; sourceTree = "<group>"; };
+               18C42B9E2C242202000D8860 /* bswap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bswap.h; sourceTree = "<group>"; };
+               18C42B9F2C242202000D8860 /* rc4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rc4.h; sourceTree = "<group>"; };
+               18C42BA02C242202000D8860 /* tea.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tea.h; sourceTree = "<group>"; };
+               18C42BA12C242202000D8860 /* cpu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cpu.h; sourceTree = "<group>"; };
+               18C42BA22C242202000D8860 /* lzo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lzo.h; sourceTree = "<group>"; };
+               18C42BA32C242202000D8860 /* des.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = des.h; sourceTree = "<group>"; };
+               18C42BA42C242202000D8860 /* channel_layout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = channel_layout.h; sourceTree = "<group>"; };
+               18C42BA52C242202000D8860 /* encryption_info.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = encryption_info.h; sourceTree = "<group>"; };
+               18C42BA62C242202000D8860 /* twofish.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = twofish.h; sourceTree = "<group>"; };
+               18C42BA72C242202000D8860 /* imgutils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = imgutils.h; sourceTree = "<group>"; };
+               18C42BA82C242202000D8860 /* hwcontext_videotoolbox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hwcontext_videotoolbox.h; sourceTree = "<group>"; };
+               18C42BA92C242202000D8860 /* video_enc_params.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = video_enc_params.h; sourceTree = "<group>"; };
+               18C42BAA2C242202000D8860 /* mem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mem.h; sourceTree = "<group>"; };
+               18C42BAB2C242202000D8860 /* parseutils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = parseutils.h; sourceTree = "<group>"; };
+               18C42BAC2C242202000D8860 /* ripemd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ripemd.h; sourceTree = "<group>"; };
+               18C42BAD2C242202000D8860 /* bprint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bprint.h; sourceTree = "<group>"; };
+               18C42BAE2C242202000D8860 /* hdr_dynamic_metadata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hdr_dynamic_metadata.h; sourceTree = "<group>"; };
+               18C42BAF2C242202000D8860 /* hwcontext_qsv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hwcontext_qsv.h; sourceTree = "<group>"; };
+               18C42BB02C242202000D8860 /* pixfmt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pixfmt.h; sourceTree = "<group>"; };
+               18C42BB12C242202000D8860 /* aes_ctr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aes_ctr.h; sourceTree = "<group>"; };
+               18C42BB22C242202000D8860 /* timestamp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = timestamp.h; sourceTree = "<group>"; };
+               18C42BB32C242202000D8860 /* downmix_info.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = downmix_info.h; sourceTree = "<group>"; };
+               18C42BB42C242202000D8860 /* avassert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = avassert.h; sourceTree = "<group>"; };
+               18C42BB52C242202000D8860 /* hash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hash.h; sourceTree = "<group>"; };
+               18C42BB62C242202000D8860 /* mathematics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mathematics.h; sourceTree = "<group>"; };
+               18C42BB72C242202000D8860 /* intreadwrite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = intreadwrite.h; sourceTree = "<group>"; };
+               18C42BB82C242202000D8860 /* avstring.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = avstring.h; sourceTree = "<group>"; };
+               18C42BBA2C242202000D8860 /* version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = version.h; sourceTree = "<group>"; };
+               18C42BBB2C242202000D8860 /* avdevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = avdevice.h; sourceTree = "<group>"; };
+               18C42BBD2C242202000D8860 /* version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = version.h; sourceTree = "<group>"; };
+               18C42BBE2C242202000D8860 /* avio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = avio.h; sourceTree = "<group>"; };
+               18C42BBF2C242202000D8860 /* avformat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = avformat.h; sourceTree = "<group>"; };
+               18C42BC12C242202000D8860 /* version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = version.h; sourceTree = "<group>"; };
+               18C42BC22C242202000D8860 /* swscale.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = swscale.h; sourceTree = "<group>"; };
+               18C42BC42C242202000D8860 /* adts_parser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = adts_parser.h; sourceTree = "<group>"; };
+               18C42BC52C242202000D8860 /* avcodec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = avcodec.h; sourceTree = "<group>"; };
+               18C42BC62C242202000D8860 /* version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = version.h; sourceTree = "<group>"; };
+               18C42BC72C242202000D8860 /* vdpau.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vdpau.h; sourceTree = "<group>"; };
+               18C42BC82C242202000D8860 /* codec_par.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = codec_par.h; sourceTree = "<group>"; };
+               18C42BC92C242202000D8860 /* qsv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qsv.h; sourceTree = "<group>"; };
+               18C42BCA2C242202000D8860 /* vaapi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vaapi.h; sourceTree = "<group>"; };
+               18C42BCB2C242202000D8860 /* codec_desc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = codec_desc.h; sourceTree = "<group>"; };
+               18C42BCC2C242202000D8860 /* videotoolbox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = videotoolbox.h; sourceTree = "<group>"; };
+               18C42BCD2C242202000D8860 /* xvmc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = xvmc.h; sourceTree = "<group>"; };
+               18C42BCE2C242202000D8860 /* mediacodec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mediacodec.h; sourceTree = "<group>"; };
+               18C42BCF2C242202000D8860 /* d3d11va.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = d3d11va.h; sourceTree = "<group>"; };
+               18C42BD02C242202000D8860 /* avfft.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = avfft.h; sourceTree = "<group>"; };
+               18C42BD12C242202000D8860 /* codec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = codec.h; sourceTree = "<group>"; };
+               18C42BD22C242202000D8860 /* jni.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = jni.h; sourceTree = "<group>"; };
+               18C42BD32C242202000D8860 /* packet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = packet.h; sourceTree = "<group>"; };
+               18C42BD42C242202000D8860 /* bsf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bsf.h; sourceTree = "<group>"; };
+               18C42BD52C242202000D8860 /* codec_id.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = codec_id.h; sourceTree = "<group>"; };
+               18C42BD62C242202000D8860 /* dirac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dirac.h; sourceTree = "<group>"; };
+               18C42BD72C242202000D8860 /* avdct.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = avdct.h; sourceTree = "<group>"; };
+               18C42BD82C242202000D8860 /* ac3_parser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ac3_parser.h; sourceTree = "<group>"; };
+               18C42BD92C242202000D8860 /* vorbis_parser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vorbis_parser.h; sourceTree = "<group>"; };
+               18C42BDA2C242202000D8860 /* dxva2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dxva2.h; sourceTree = "<group>"; };
+               18C42BDB2C242202000D8860 /* dv_profile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dv_profile.h; sourceTree = "<group>"; };
+               18C42BDD2C242202000D8860 /* version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = version.h; sourceTree = "<group>"; };
+               18C42BDE2C242202000D8860 /* swresample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = swresample.h; sourceTree = "<group>"; };
+               18C42BE02C242202000D8860 /* libavutil.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libavutil.a; sourceTree = "<group>"; };
+               18C42BE12C242202000D8860 /* libavfilter.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libavfilter.a; sourceTree = "<group>"; };
+               18C42BE22C242202000D8860 /* libavcodec.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libavcodec.a; sourceTree = "<group>"; };
+               18C42BE32C242202000D8860 /* libavformat.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libavformat.a; sourceTree = "<group>"; };
+               18C42BE42C242202000D8860 /* libavdevice.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libavdevice.a; sourceTree = "<group>"; };
+               18C42BE52C242202000D8860 /* libswresample.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libswresample.a; sourceTree = "<group>"; };
+               18C42BE62C242202000D8860 /* libswscale.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libswscale.a; sourceTree = "<group>"; };
+               18C42C6B2C2422C2000D8860 /* AiAudioDecoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AiAudioDecoder.m; sourceTree = "<group>"; };
+               18C42C6C2C2422C2000D8860 /* AiAudioDecoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AiAudioDecoder.h; sourceTree = "<group>"; };
+               18C42C722C242361000D8860 /* TestManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TestManager.h; sourceTree = "<group>"; };
+               18C42C732C242361000D8860 /* TestManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TestManager.m; sourceTree = "<group>"; };
+               18C42C762C24241A000D8860 /* MixSdk-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "MixSdk-Bridging-Header.h"; sourceTree = "<group>"; };
+               18C42C7A2C24270D000D8860 /* MSAudioConvert.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MSAudioConvert.swift; sourceTree = "<group>"; };
+               18C42C7C2C242A40000D8860 /* liblzma.5.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = liblzma.5.tbd; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/lib/liblzma.5.tbd; sourceTree = DEVELOPER_DIR; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
                        isa = PBXFrameworksBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
+                               18C42C7D2C242A40000D8860 /* liblzma.5.tbd in Frameworks */,
+                               18C42C632C242202000D8860 /* libavfilter.a in Frameworks */,
+                               18C42C622C242202000D8860 /* libavutil.a in Frameworks */,
                                18132AF52C1C4C85002F6B52 /* libz.tbd in Frameworks */,
+                               18C42C652C242203000D8860 /* libavformat.a in Frameworks */,
+                               18C42C682C242203000D8860 /* libswscale.a in Frameworks */,
+                               18C42C662C242203000D8860 /* libavdevice.a in Frameworks */,
+                               18C42C672C242203000D8860 /* libswresample.a in Frameworks */,
+                               18C42C642C242203000D8860 /* libavcodec.a in Frameworks */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
                18132AF32C1C4C84002F6B52 /* Frameworks */ = {
                        isa = PBXGroup;
                        children = (
+                               18C42C7C2C242A40000D8860 /* liblzma.5.tbd */,
                                18132AF42C1C4C85002F6B52 /* libz.tbd */,
                        );
                        name = Frameworks;
                18204BBD2C193E3D00F94E69 /* MixSdk */ = {
                        isa = PBXGroup;
                        children = (
+                               18C42C692C2422C2000D8860 /* AudioDecode */,
+                               18C42B5B2C242202000D8860 /* FFmpeg-iOS */,
                                181188302C1A8B5200C23FAB /* Tools */,
                                18204BF12C19488800F94E69 /* SwiftHTTP */,
                                18204BBE2C193E3D00F94E69 /* MixSdk.h */,
+                               18C42C762C24241A000D8860 /* MixSdk-Bridging-Header.h */,
                                18204BEF2C19457600F94E69 /* MSHttpManager.swift */,
                                1811882E2C1A89E600C23FAB /* MixSdk.swift */,
                                18204BC52C193E4B00F94E69 /* MSAuth.swift */,
                                1811884D2C1AEF0F00C23FAB /* MSTranslate.swift */,
                                18C42B3A2C22F284000D8860 /* MsTranslateModel.swift */,
                                18132AEE2C1C25CC002F6B52 /* MSAigc.swift */,
+                               18C42C722C242361000D8860 /* TestManager.h */,
+                               18C42C732C242361000D8860 /* TestManager.m */,
                                184FFC532C21B091006F664D /* MSAigcModel.swift */,
                                181188562C1BE24200C23FAB /* MSStt.swift */,
                                18C42B382C22F1FA000D8860 /* MSSttModel.swift */,
                        path = SwiftHTTP;
                        sourceTree = "<group>";
                };
+               18C42B5B2C242202000D8860 /* FFmpeg-iOS */ = {
+                       isa = PBXGroup;
+                       children = (
+                               18C42B5C2C242202000D8860 /* include */,
+                               18C42BDF2C242202000D8860 /* lib */,
+                       );
+                       path = "FFmpeg-iOS";
+                       sourceTree = "<group>";
+               };
+               18C42B5C2C242202000D8860 /* include */ = {
+                       isa = PBXGroup;
+                       children = (
+                               18C42B5D2C242202000D8860 /* libavfilter */,
+                               18C42B622C242202000D8860 /* libavutil */,
+                               18C42BB92C242202000D8860 /* libavdevice */,
+                               18C42BBC2C242202000D8860 /* libavformat */,
+                               18C42BC02C242202000D8860 /* libswscale */,
+                               18C42BC32C242202000D8860 /* libavcodec */,
+                               18C42BDC2C242202000D8860 /* libswresample */,
+                       );
+                       path = include;
+                       sourceTree = "<group>";
+               };
+               18C42B5D2C242202000D8860 /* libavfilter */ = {
+                       isa = PBXGroup;
+                       children = (
+                               18C42B5E2C242202000D8860 /* version.h */,
+                               18C42B5F2C242202000D8860 /* buffersrc.h */,
+                               18C42B602C242202000D8860 /* buffersink.h */,
+                               18C42B612C242202000D8860 /* avfilter.h */,
+                       );
+                       path = libavfilter;
+                       sourceTree = "<group>";
+               };
+               18C42B622C242202000D8860 /* libavutil */ = {
+                       isa = PBXGroup;
+                       children = (
+                               18C42B632C242202000D8860 /* hwcontext.h */,
+                               18C42B642C242202000D8860 /* time.h */,
+                               18C42B652C242202000D8860 /* hwcontext_cuda.h */,
+                               18C42B662C242202000D8860 /* intfloat.h */,
+                               18C42B672C242202000D8860 /* error.h */,
+                               18C42B682C242202000D8860 /* fifo.h */,
+                               18C42B692C242202000D8860 /* blowfish.h */,
+                               18C42B6A2C242202000D8860 /* hwcontext_mediacodec.h */,
+                               18C42B6B2C242202000D8860 /* replaygain.h */,
+                               18C42B6C2C242202000D8860 /* version.h */,
+                               18C42B6D2C242202000D8860 /* murmur3.h */,
+                               18C42B6E2C242202000D8860 /* stereo3d.h */,
+                               18C42B6F2C242202000D8860 /* samplefmt.h */,
+                               18C42B702C242202000D8860 /* pixdesc.h */,
+                               18C42B712C242202000D8860 /* base64.h */,
+                               18C42B722C242202000D8860 /* rational.h */,
+                               18C42B732C242202000D8860 /* sha.h */,
+                               18C42B742C242202000D8860 /* motion_vector.h */,
+                               18C42B752C242202000D8860 /* avconfig.h */,
+                               18C42B762C242202000D8860 /* lfg.h */,
+                               18C42B772C242202000D8860 /* avutil.h */,
+                               18C42B782C242202000D8860 /* hwcontext_vulkan.h */,
+                               18C42B792C242202000D8860 /* xtea.h */,
+                               18C42B7A2C242202000D8860 /* crc.h */,
+                               18C42B7B2C242202000D8860 /* hwcontext_vdpau.h */,
+                               18C42B7C2C242202000D8860 /* frame.h */,
+                               18C42B7D2C242202000D8860 /* file.h */,
+                               18C42B7E2C242202000D8860 /* md5.h */,
+                               18C42B7F2C242202000D8860 /* cast5.h */,
+                               18C42B802C242202000D8860 /* hwcontext_vaapi.h */,
+                               18C42B812C242202000D8860 /* spherical.h */,
+                               18C42B822C242202000D8860 /* ffversion.h */,
+                               18C42B832C242202000D8860 /* hwcontext_opencl.h */,
+                               18C42B842C242202000D8860 /* audio_fifo.h */,
+                               18C42B852C242202000D8860 /* tree.h */,
+                               18C42B862C242202000D8860 /* threadmessage.h */,
+                               18C42B872C242202000D8860 /* attributes.h */,
+                               18C42B882C242202000D8860 /* adler32.h */,
+                               18C42B892C242202000D8860 /* hwcontext_d3d11va.h */,
+                               18C42B8A2C242202000D8860 /* timecode.h */,
+                               18C42B8B2C242202000D8860 /* dovi_meta.h */,
+                               18C42B8C2C242202000D8860 /* tx.h */,
+                               18C42B8D2C242202000D8860 /* sha512.h */,
+                               18C42B8E2C242202000D8860 /* hwcontext_dxva2.h */,
+                               18C42B8F2C242202000D8860 /* display.h */,
+                               18C42B902C242202000D8860 /* buffer.h */,
+                               18C42B912C242202000D8860 /* camellia.h */,
+                               18C42B922C242202000D8860 /* pixelutils.h */,
+                               18C42B932C242202000D8860 /* hwcontext_drm.h */,
+                               18C42B942C242202000D8860 /* common.h */,
+                               18C42B952C242202000D8860 /* hmac.h */,
+                               18C42B962C242202000D8860 /* eval.h */,
+                               18C42B972C242202000D8860 /* dict.h */,
+                               18C42B982C242202000D8860 /* random_seed.h */,
+                               18C42B992C242202000D8860 /* opt.h */,
+                               18C42B9A2C242202000D8860 /* mastering_display_metadata.h */,
+                               18C42B9B2C242202000D8860 /* log.h */,
+                               18C42B9C2C242202000D8860 /* aes.h */,
+                               18C42B9D2C242202000D8860 /* macros.h */,
+                               18C42B9E2C242202000D8860 /* bswap.h */,
+                               18C42B9F2C242202000D8860 /* rc4.h */,
+                               18C42BA02C242202000D8860 /* tea.h */,
+                               18C42BA12C242202000D8860 /* cpu.h */,
+                               18C42BA22C242202000D8860 /* lzo.h */,
+                               18C42BA32C242202000D8860 /* des.h */,
+                               18C42BA42C242202000D8860 /* channel_layout.h */,
+                               18C42BA52C242202000D8860 /* encryption_info.h */,
+                               18C42BA62C242202000D8860 /* twofish.h */,
+                               18C42BA72C242202000D8860 /* imgutils.h */,
+                               18C42BA82C242202000D8860 /* hwcontext_videotoolbox.h */,
+                               18C42BA92C242202000D8860 /* video_enc_params.h */,
+                               18C42BAA2C242202000D8860 /* mem.h */,
+                               18C42BAB2C242202000D8860 /* parseutils.h */,
+                               18C42BAC2C242202000D8860 /* ripemd.h */,
+                               18C42BAD2C242202000D8860 /* bprint.h */,
+                               18C42BAE2C242202000D8860 /* hdr_dynamic_metadata.h */,
+                               18C42BAF2C242202000D8860 /* hwcontext_qsv.h */,
+                               18C42BB02C242202000D8860 /* pixfmt.h */,
+                               18C42BB12C242202000D8860 /* aes_ctr.h */,
+                               18C42BB22C242202000D8860 /* timestamp.h */,
+                               18C42BB32C242202000D8860 /* downmix_info.h */,
+                               18C42BB42C242202000D8860 /* avassert.h */,
+                               18C42BB52C242202000D8860 /* hash.h */,
+                               18C42BB62C242202000D8860 /* mathematics.h */,
+                               18C42BB72C242202000D8860 /* intreadwrite.h */,
+                               18C42BB82C242202000D8860 /* avstring.h */,
+                       );
+                       path = libavutil;
+                       sourceTree = "<group>";
+               };
+               18C42BB92C242202000D8860 /* libavdevice */ = {
+                       isa = PBXGroup;
+                       children = (
+                               18C42BBA2C242202000D8860 /* version.h */,
+                               18C42BBB2C242202000D8860 /* avdevice.h */,
+                       );
+                       path = libavdevice;
+                       sourceTree = "<group>";
+               };
+               18C42BBC2C242202000D8860 /* libavformat */ = {
+                       isa = PBXGroup;
+                       children = (
+                               18C42BBD2C242202000D8860 /* version.h */,
+                               18C42BBE2C242202000D8860 /* avio.h */,
+                               18C42BBF2C242202000D8860 /* avformat.h */,
+                       );
+                       path = libavformat;
+                       sourceTree = "<group>";
+               };
+               18C42BC02C242202000D8860 /* libswscale */ = {
+                       isa = PBXGroup;
+                       children = (
+                               18C42BC12C242202000D8860 /* version.h */,
+                               18C42BC22C242202000D8860 /* swscale.h */,
+                       );
+                       path = libswscale;
+                       sourceTree = "<group>";
+               };
+               18C42BC32C242202000D8860 /* libavcodec */ = {
+                       isa = PBXGroup;
+                       children = (
+                               18C42BC42C242202000D8860 /* adts_parser.h */,
+                               18C42BC52C242202000D8860 /* avcodec.h */,
+                               18C42BC62C242202000D8860 /* version.h */,
+                               18C42BC72C242202000D8860 /* vdpau.h */,
+                               18C42BC82C242202000D8860 /* codec_par.h */,
+                               18C42BC92C242202000D8860 /* qsv.h */,
+                               18C42BCA2C242202000D8860 /* vaapi.h */,
+                               18C42BCB2C242202000D8860 /* codec_desc.h */,
+                               18C42BCC2C242202000D8860 /* videotoolbox.h */,
+                               18C42BCD2C242202000D8860 /* xvmc.h */,
+                               18C42BCE2C242202000D8860 /* mediacodec.h */,
+                               18C42BCF2C242202000D8860 /* d3d11va.h */,
+                               18C42BD02C242202000D8860 /* avfft.h */,
+                               18C42BD12C242202000D8860 /* codec.h */,
+                               18C42BD22C242202000D8860 /* jni.h */,
+                               18C42BD32C242202000D8860 /* packet.h */,
+                               18C42BD42C242202000D8860 /* bsf.h */,
+                               18C42BD52C242202000D8860 /* codec_id.h */,
+                               18C42BD62C242202000D8860 /* dirac.h */,
+                               18C42BD72C242202000D8860 /* avdct.h */,
+                               18C42BD82C242202000D8860 /* ac3_parser.h */,
+                               18C42BD92C242202000D8860 /* vorbis_parser.h */,
+                               18C42BDA2C242202000D8860 /* dxva2.h */,
+                               18C42BDB2C242202000D8860 /* dv_profile.h */,
+                       );
+                       path = libavcodec;
+                       sourceTree = "<group>";
+               };
+               18C42BDC2C242202000D8860 /* libswresample */ = {
+                       isa = PBXGroup;
+                       children = (
+                               18C42BDD2C242202000D8860 /* version.h */,
+                               18C42BDE2C242202000D8860 /* swresample.h */,
+                       );
+                       path = libswresample;
+                       sourceTree = "<group>";
+               };
+               18C42BDF2C242202000D8860 /* lib */ = {
+                       isa = PBXGroup;
+                       children = (
+                               18C42BE02C242202000D8860 /* libavutil.a */,
+                               18C42BE12C242202000D8860 /* libavfilter.a */,
+                               18C42BE22C242202000D8860 /* libavcodec.a */,
+                               18C42BE32C242202000D8860 /* libavformat.a */,
+                               18C42BE42C242202000D8860 /* libavdevice.a */,
+                               18C42BE52C242202000D8860 /* libswresample.a */,
+                               18C42BE62C242202000D8860 /* libswscale.a */,
+                       );
+                       path = lib;
+                       sourceTree = "<group>";
+               };
+               18C42C692C2422C2000D8860 /* AudioDecode */ = {
+                       isa = PBXGroup;
+                       children = (
+                               18C42C6C2C2422C2000D8860 /* AiAudioDecoder.h */,
+                               18C42C6B2C2422C2000D8860 /* AiAudioDecoder.m */,
+                               18C42C7A2C24270D000D8860 /* MSAudioConvert.swift */,
+                       );
+                       path = AudioDecode;
+                       sourceTree = "<group>";
+               };
 /* End PBXGroup section */
 
 /* Begin PBXHeadersBuildPhase section */
                        buildActionMask = 2147483647;
                        files = (
                                18204BF92C19488900F94E69 /* SwiftHTTP.h in Headers */,
+                               18C42C2E2C242202000D8860 /* twofish.h in Headers */,
+                               18C42C502C242202000D8860 /* videotoolbox.h in Headers */,
+                               18C42BF22C242202000D8860 /* hwcontext_mediacodec.h in Headers */,
+                               18C42BEB2C242202000D8860 /* hwcontext.h in Headers */,
+                               18C42C412C242202000D8860 /* version.h in Headers */,
+                               18C42C522C242202000D8860 /* mediacodec.h in Headers */,
+                               18C42BEF2C242202000D8860 /* error.h in Headers */,
+                               18C42C182C242202000D8860 /* buffer.h in Headers */,
+                               18C42BE72C242202000D8860 /* version.h in Headers */,
+                               18C42BF62C242202000D8860 /* stereo3d.h in Headers */,
+                               18C42BF42C242202000D8860 /* version.h in Headers */,
+                               18C42C4F2C242202000D8860 /* codec_desc.h in Headers */,
+                               18C42C1F2C242202000D8860 /* dict.h in Headers */,
+                               18C42C482C242202000D8860 /* adts_parser.h in Headers */,
+                               18C42C442C242202000D8860 /* avio.h in Headers */,
+                               18C42C1B2C242202000D8860 /* hwcontext_drm.h in Headers */,
+                               18C42C172C242202000D8860 /* display.h in Headers */,
+                               18C42C0B2C242202000D8860 /* hwcontext_opencl.h in Headers */,
+                               18C42C292C242202000D8860 /* cpu.h in Headers */,
+                               18C42BED2C242202000D8860 /* hwcontext_cuda.h in Headers */,
+                               18C42C042C242202000D8860 /* frame.h in Headers */,
+                               18C42C2F2C242202000D8860 /* imgutils.h in Headers */,
+                               18C42C3C2C242202000D8860 /* avassert.h in Headers */,
+                               18C42C212C242202000D8860 /* opt.h in Headers */,
+                               18C42C352C242202000D8860 /* bprint.h in Headers */,
+                               18C42C062C242202000D8860 /* md5.h in Headers */,
+                               18C42C032C242202000D8860 /* hwcontext_vdpau.h in Headers */,
+                               18C42C112C242202000D8860 /* hwcontext_d3d11va.h in Headers */,
+                               18C42BF72C242202000D8860 /* samplefmt.h in Headers */,
+                               18C42C782C24241A000D8860 /* MixSdk-Bridging-Header.h in Headers */,
+                               18C42C5A2C242202000D8860 /* dirac.h in Headers */,
+                               18C42C3A2C242202000D8860 /* timestamp.h in Headers */,
+                               18C42C4E2C242202000D8860 /* vaapi.h in Headers */,
+                               18C42C312C242202000D8860 /* video_enc_params.h in Headers */,
+                               18C42C472C242202000D8860 /* swscale.h in Headers */,
+                               18C42C022C242202000D8860 /* crc.h in Headers */,
+                               18C42C242C242202000D8860 /* aes.h in Headers */,
+                               18C42C2A2C242202000D8860 /* lzo.h in Headers */,
+                               18C42C392C242202000D8860 /* aes_ctr.h in Headers */,
+                               18C42BEC2C242202000D8860 /* time.h in Headers */,
+                               18C42C072C242202000D8860 /* cast5.h in Headers */,
+                               18C42BF32C242202000D8860 /* replaygain.h in Headers */,
+                               18C42C262C242202000D8860 /* bswap.h in Headers */,
+                               18C42C432C242202000D8860 /* version.h in Headers */,
+                               18C42C422C242202000D8860 /* avdevice.h in Headers */,
+                               18C42C132C242202000D8860 /* dovi_meta.h in Headers */,
+                               18C42BFD2C242202000D8860 /* avconfig.h in Headers */,
+                               18C42C372C242202000D8860 /* hwcontext_qsv.h in Headers */,
+                               18C42C052C242202000D8860 /* file.h in Headers */,
+                               18C42C002C242202000D8860 /* hwcontext_vulkan.h in Headers */,
+                               18C42C3F2C242202000D8860 /* intreadwrite.h in Headers */,
+                               18C42C552C242202000D8860 /* codec.h in Headers */,
+                               18C42C222C242202000D8860 /* mastering_display_metadata.h in Headers */,
+                               18C42C152C242202000D8860 /* sha512.h in Headers */,
+                               18C42C3D2C242202000D8860 /* hash.h in Headers */,
+                               18C42C142C242202000D8860 /* tx.h in Headers */,
+                               18C42C332C242202000D8860 /* parseutils.h in Headers */,
+                               18C42BF82C242202000D8860 /* pixdesc.h in Headers */,
+                               18C42C4B2C242202000D8860 /* vdpau.h in Headers */,
+                               18C42BF12C242202000D8860 /* blowfish.h in Headers */,
+                               18C42C0A2C242202000D8860 /* ffversion.h in Headers */,
+                               18C42C362C242202000D8860 /* hdr_dynamic_metadata.h in Headers */,
+                               18C42C4A2C242202000D8860 /* version.h in Headers */,
+                               18C42C0C2C242202000D8860 /* audio_fifo.h in Headers */,
+                               18C42C0E2C242202000D8860 /* threadmessage.h in Headers */,
+                               18C42C0D2C242202000D8860 /* tree.h in Headers */,
+                               18C42C492C242202000D8860 /* avcodec.h in Headers */,
+                               18C42C2D2C242202000D8860 /* encryption_info.h in Headers */,
+                               18C42C702C2422C2000D8860 /* AiAudioDecoder.h in Headers */,
                                18204BBF2C193E3D00F94E69 /* MixSdk.h in Headers */,
+                               18C42BFF2C242202000D8860 /* avutil.h in Headers */,
+                               18C42C202C242202000D8860 /* random_seed.h in Headers */,
+                               18C42C4C2C242202000D8860 /* codec_par.h in Headers */,
+                               18C42C3E2C242202000D8860 /* mathematics.h in Headers */,
+                               18C42BEA2C242202000D8860 /* avfilter.h in Headers */,
+                               18C42C5B2C242202000D8860 /* avdct.h in Headers */,
+                               18C42C252C242202000D8860 /* macros.h in Headers */,
+                               18C42C572C242202000D8860 /* packet.h in Headers */,
+                               18C42C462C242202000D8860 /* version.h in Headers */,
+                               18C42C162C242202000D8860 /* hwcontext_dxva2.h in Headers */,
+                               18C42C612C242202000D8860 /* swresample.h in Headers */,
+                               18C42C2B2C242202000D8860 /* des.h in Headers */,
+                               18C42BFB2C242202000D8860 /* sha.h in Headers */,
+                               18C42BF02C242202000D8860 /* fifo.h in Headers */,
+                               18C42C5F2C242202000D8860 /* dv_profile.h in Headers */,
+                               18C42C192C242202000D8860 /* camellia.h in Headers */,
+                               18C42C122C242202000D8860 /* timecode.h in Headers */,
+                               18C42BFA2C242202000D8860 /* rational.h in Headers */,
+                               18C42C402C242202000D8860 /* avstring.h in Headers */,
+                               18C42C102C242202000D8860 /* adler32.h in Headers */,
+                               18C42C082C242202000D8860 /* hwcontext_vaapi.h in Headers */,
+                               18C42C542C242202000D8860 /* avfft.h in Headers */,
+                               18C42C012C242202000D8860 /* xtea.h in Headers */,
+                               18C42BE92C242202000D8860 /* buffersink.h in Headers */,
+                               18C42C592C242202000D8860 /* codec_id.h in Headers */,
+                               18C42C282C242202000D8860 /* tea.h in Headers */,
+                               18C42BE82C242202000D8860 /* buffersrc.h in Headers */,
+                               18C42C3B2C242202000D8860 /* downmix_info.h in Headers */,
+                               18C42C1C2C242202000D8860 /* common.h in Headers */,
+                               18C42C602C242202000D8860 /* version.h in Headers */,
+                               18C42BF52C242202000D8860 /* murmur3.h in Headers */,
+                               18C42C582C242202000D8860 /* bsf.h in Headers */,
+                               18C42C452C242202000D8860 /* avformat.h in Headers */,
+                               18C42C2C2C242202000D8860 /* channel_layout.h in Headers */,
+                               18C42C1A2C242202000D8860 /* pixelutils.h in Headers */,
+                               18C42C5C2C242202000D8860 /* ac3_parser.h in Headers */,
+                               18C42C322C242202000D8860 /* mem.h in Headers */,
+                               18C42C092C242202000D8860 /* spherical.h in Headers */,
+                               18C42C532C242202000D8860 /* d3d11va.h in Headers */,
+                               18C42BFC2C242202000D8860 /* motion_vector.h in Headers */,
+                               18C42C5E2C242202000D8860 /* dxva2.h in Headers */,
+                               18C42C4D2C242202000D8860 /* qsv.h in Headers */,
+                               18C42C1D2C242202000D8860 /* hmac.h in Headers */,
+                               18C42C5D2C242202000D8860 /* vorbis_parser.h in Headers */,
+                               18C42C382C242202000D8860 /* pixfmt.h in Headers */,
+                               18C42C232C242202000D8860 /* log.h in Headers */,
+                               18C42BEE2C242202000D8860 /* intfloat.h in Headers */,
+                               18C42C1E2C242202000D8860 /* eval.h in Headers */,
+                               18C42C272C242202000D8860 /* rc4.h in Headers */,
+                               18C42C0F2C242202000D8860 /* attributes.h in Headers */,
+                               18C42C562C242202000D8860 /* jni.h in Headers */,
+                               18C42BFE2C242202000D8860 /* lfg.h in Headers */,
+                               18C42C512C242202000D8860 /* xvmc.h in Headers */,
+                               18C42BF92C242202000D8860 /* base64.h in Headers */,
+                               18C42C302C242202000D8860 /* hwcontext_videotoolbox.h in Headers */,
+                               18C42C742C242361000D8860 /* TestManager.h in Headers */,
+                               18C42C342C242202000D8860 /* ripemd.h in Headers */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
                        isa = PBXSourcesBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
+                               18C42C7B2C24270D000D8860 /* MSAudioConvert.swift in Sources */,
                                18204BC62C193E4B00F94E69 /* MSAuth.swift in Sources */,
                                18132AED2C1C1EA8002F6B52 /* MSTool.swift in Sources */,
                                181188472C1ACA6100C23FAB /* String+MD5.swift in Sources */,
                                181188572C1BE24200C23FAB /* MSStt.swift in Sources */,
                                18204BFD2C19488900F94E69 /* Operation.swift in Sources */,
                                1811883C2C1A8B5200C23FAB /* JSON.swift in Sources */,
+                               18C42C752C242361000D8860 /* TestManager.m in Sources */,
                                181188402C1A8B5200C23FAB /* LRC.swift in Sources */,
                                18204BFC2C19488900F94E69 /* HTTPSecurity.swift in Sources */,
                                18204BFB2C19488900F94E69 /* Upload.swift in Sources */,
                                1811884E2C1AEF0F00C23FAB /* MSTranslate.swift in Sources */,
                                18204BF82C19488800F94E69 /* StatusCode.swift in Sources */,
                                18C42B392C22F1FA000D8860 /* MSSttModel.swift in Sources */,
+                               18C42C6F2C2422C2000D8860 /* AiAudioDecoder.m in Sources */,
                                18B74A1E2C1FDDB500FABBA9 /* MSChat.swift in Sources */,
                                184FFC542C21B091006F664D /* MSAigcModel.swift in Sources */,
                        );
                                DYLIB_INSTALL_NAME_BASE = "@rpath";
                                ENABLE_MODULE_VERIFIER = YES;
                                GENERATE_INFOPLIST_FILE = YES;
+                               HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/MixSdk/FFmpeg-iOS/include";
                                INFOPLIST_KEY_NSHumanReadableCopyright = "";
                                INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
                                IPHONEOS_DEPLOYMENT_TARGET = 13.0;
                                        "@executable_path/Frameworks",
                                        "@loader_path/Frameworks",
                                );
+                               LIBRARY_SEARCH_PATHS = (
+                                       "$(inherited)",
+                                       "$(PROJECT_DIR)/MixSdk/FFmpeg-iOS/lib",
+                               );
                                MACH_O_TYPE = staticlib;
                                MARKETING_VERSION = 1.0;
                                MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
                                PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
                                SKIP_INSTALL = YES;
                                SWIFT_EMIT_LOC_STRINGS = YES;
+                               SWIFT_OBJC_BRIDGING_HEADER = "MixSdk/MixSdk-Bridging-Header.h";
                                SWIFT_OPTIMIZATION_LEVEL = "-Onone";
                                SWIFT_VERSION = 5.0;
                                TARGETED_DEVICE_FAMILY = "1,2";
                                DYLIB_INSTALL_NAME_BASE = "@rpath";
                                ENABLE_MODULE_VERIFIER = YES;
                                GENERATE_INFOPLIST_FILE = YES;
+                               HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/MixSdk/FFmpeg-iOS/include";
                                INFOPLIST_KEY_NSHumanReadableCopyright = "";
                                INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
                                IPHONEOS_DEPLOYMENT_TARGET = 13.0;
                                        "@executable_path/Frameworks",
                                        "@loader_path/Frameworks",
                                );
+                               LIBRARY_SEARCH_PATHS = (
+                                       "$(inherited)",
+                                       "$(PROJECT_DIR)/MixSdk/FFmpeg-iOS/lib",
+                               );
                                MACH_O_TYPE = staticlib;
                                MARKETING_VERSION = 1.0;
                                MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
                                PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
                                SKIP_INSTALL = YES;
                                SWIFT_EMIT_LOC_STRINGS = YES;
+                               SWIFT_OBJC_BRIDGING_HEADER = "MixSdk/MixSdk-Bridging-Header.h";
                                SWIFT_VERSION = 5.0;
                                TARGETED_DEVICE_FAMILY = "1,2";
                        };
diff --git a/MixSdk/MixSdk/MixSdk/AudioDecode/AiAudioDecoder.h b/MixSdk/MixSdk/MixSdk/AudioDecode/AiAudioDecoder.h
new file mode 100644 (file)
index 0000000..3db02d8
--- /dev/null
@@ -0,0 +1,21 @@
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface AiAudioDecoder : NSObject
+
+@property (nonatomic,copy) void(^onRecvPCMData)(NSData *pcmData);
+
++(AiAudioDecoder *)sharedInstance;
+
+
+-(void)startSBCDecodec;
+
+-(NSData *)decodeSBCData:(NSData*)data;
+
+/* 释放SBC解码器 */
+- (void)finishSBCDecode;
+
+
+@end
+NS_ASSUME_NONNULL_END
diff --git a/MixSdk/MixSdk/MixSdk/AudioDecode/AiAudioDecoder.m b/MixSdk/MixSdk/MixSdk/AudioDecode/AiAudioDecoder.m
new file mode 100644 (file)
index 0000000..7ca3715
--- /dev/null
@@ -0,0 +1,250 @@
+#import "AiAudioDecoder.h"
+
+
+#import <VideoToolbox/VideoToolbox.h>
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "libavutil/frame.h"
+#include <libavutil/mem.h>
+
+#include "libavcodec/avcodec.h"
+
+@interface AiAudioDecoder (){
+    AVCodecContext *codecContext;
+    AVCodecParserContext *parserContext;
+    AVFrame *decodecAVFrame;
+    AVPacket *decodecAVPacket;
+}
+@property (assign, nonatomic) AVFrame *sbcFrame;
+@property (assign, nonatomic) AVCodec *sbcCodec;
+@property (assign, nonatomic) AVCodecContext *sbcCodecCtx;
+@property (assign, nonatomic) AVPacket  *sbcPacket;
+@property (assign, nonatomic)AVCodecParserContext *sbcParser;
+@end
+@implementation AiAudioDecoder
+
+static AiAudioDecoder *instance = nil;
+static dispatch_once_t onceToken;
++(AiAudioDecoder *)sharedInstance
+{
+    dispatch_once(&onceToken, ^{
+        instance = [[self alloc] init];
+    });
+    return instance;
+}
+
+//获取format
+-(int)get_format_from_sample_fmt:(const char **)fmt sampleFormat:(enum AVSampleFormat)sample_fmt{
+    int i;
+    struct sample_fmt_entry {
+        enum AVSampleFormat sample_fmt; const char *fmt_be, *fmt_le;
+    } sample_fmt_entries[] = {
+        { AV_SAMPLE_FMT_U8P,  "u8p",    "u8p"    },
+        { AV_SAMPLE_FMT_S16P,  "s16p",    "s16p"    },
+        { AV_SAMPLE_FMT_S32P,  "s32p",    "s32p"    },
+        { AV_SAMPLE_FMT_FLTP,  "fltp",    "fltp"    },
+        { AV_SAMPLE_FMT_DBLP,  "u8",    "u8"    },
+        { AV_SAMPLE_FMT_S64,  "s64",    "s64"    },
+        { AV_SAMPLE_FMT_S64P,  "dblp",    "dblp"    },
+        { AV_SAMPLE_FMT_NB,  "nb",    "nb"    },
+        { AV_SAMPLE_FMT_U8,  "u8",    "u8"    },
+        { AV_SAMPLE_FMT_S16, "s16be", "s16le" },
+        { AV_SAMPLE_FMT_S32, "s32be", "s32le" },
+        { AV_SAMPLE_FMT_FLT, "f32be", "f32le" },
+        { AV_SAMPLE_FMT_DBL, "f64be", "f64le" },
+    };
+    *fmt = NULL;
+    for (i = 0; i < FF_ARRAY_ELEMS(sample_fmt_entries); i++) {
+        struct sample_fmt_entry *entry = &sample_fmt_entries[i];
+        if (sample_fmt == entry->sample_fmt) {
+            *fmt = AV_NE(entry->fmt_be, entry->fmt_le);
+            [self showLog:[NSString stringWithFormat:@"sample format %s \n",
+                  av_get_sample_fmt_name(sample_fmt)]];
+            return 0;
+        }
+    }
+    [self showLog:[NSString stringWithFormat:@"sample format %s is not supported as output format\n",
+          av_get_sample_fmt_name(sample_fmt)]];
+    return -1;
+}
+
+
+-(NSData*)decodeAudioData:(AVCodecContext *)dec_ctx pkt:(AVPacket *)pkt frame:(AVFrame*)frame {
+    
+    NSMutableData  *resultData = [[NSMutableData alloc]init];
+    
+    int i, ch;
+    int ret, data_size;
+    
+    /* send the packet with the compressed data to the decoder */
+    ret = avcodec_send_packet(dec_ctx, pkt);
+    if (ret < 0) {
+        [self showLog:@"Error submitting the packet to the decoder\n"];
+        
+    }
+    
+    /* read all the output frames (in general there may be any number of them */
+    while (ret >= 0) {
+        ret = avcodec_receive_frame(dec_ctx, frame);
+        if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF){
+            [self showLog:@"AVERROR \n"];
+            return  resultData;
+        }else if (ret < 0) {
+            [self showLog:@"Error during decoding\n"];
+            return  resultData;
+        }
+        data_size = av_get_bytes_per_sample(dec_ctx->sample_fmt);
+        [self showLog:[NSString stringWithFormat:@"采样位数 %d", data_size]];
+        
+        if (data_size < 0) {
+            /* This should not occur, checking just for paranoia */
+            [self showLog:@"Failed to calculate data size\n"];
+            return  resultData;
+        }
+        [self showLog:[NSString stringWithFormat:@"frame->nb_samples %d", frame->nb_samples]];
+        for (i = 0; i < frame->nb_samples; i++){
+            for (ch = 0; ch < dec_ctx->channels; ch++){
+                /*写入到输出文件中*/
+                uint8_t *copyByte = malloc(data_size);
+                memcpy(copyByte, frame->data[ch] + data_size*i, data_size);
+                [resultData appendData: [NSData dataWithBytes:copyByte length:data_size]];
+                free(copyByte);
+            }
+        }
+        //               fwrite(frame->data[ch] + data_size*i, 1, data_size,outputFile);
+    }
+    [self showLog:@"decode finish\n"];
+    
+    return resultData;
+}
+
+
+-(void)startSBCDecodec{
+    const AVCodec *codec;
+    
+    
+    //初始化av_packet 结构体
+    decodecAVPacket = av_packet_alloc();
+    
+    /* 查找支持解码器 */
+    codec = avcodec_find_decoder(AV_CODEC_ID_SBC);
+    if (!codec) {
+        [self showLog:@"Codec not found\n"];
+        return;
+        
+    }
+    /* 初始化解析器 */
+    parserContext = av_parser_init(codec->id);
+    if (!parserContext) {
+        [self showLog:@"Parser not found\n"];
+        return;
+    }
+    /* 初始化内容结构体 */
+    codecContext = avcodec_alloc_context3(codec);
+    if (!codecContext) {
+        [self showLog:@"Could not allocate audio codec context\n" ];
+        return;
+    }
+    
+    /* 打开解码器 */
+    if (avcodec_open2(codecContext, codec, NULL) < 0) {
+        [self showLog:@"Could not open codec\n"];
+        return;
+    }
+    
+}
+-(NSData *)decodeSBCData:(NSData*)data{
+    NSMutableData *tmpData = [[NSMutableData alloc] init];
+    int  ret;
+    if (!decodecAVFrame) {
+        if (!(decodecAVFrame = av_frame_alloc())) {
+            [self showLog:@"Could not allocate audio frame"];
+            return tmpData;
+        }
+    }
+    int  length = (int)data.length;
+    while (length>0) {
+        /* 开始解析文件 */
+        uint8_t *decodData = (Byte*)[data bytes];
+        ret = av_parser_parse2(parserContext, codecContext, &decodecAVPacket->data, &decodecAVPacket->size,
+                               decodData, length,
+                               AV_NOPTS_VALUE, AV_NOPTS_VALUE, 0);
+        if (ret < 0) {
+            [self showLog:@"Error while parsing"];
+            return tmpData;
+        }
+        /* 解析成功 开始解码 */
+        if (decodecAVPacket->size){
+            NSData *pcmData = [self decodeAudioData:codecContext pkt:decodecAVPacket frame:decodecAVFrame];
+            if(pcmData.length!=0){
+                [tmpData appendData:pcmData];
+                if(self.onRecvPCMData){
+                    self.onRecvPCMData(pcmData);
+                }
+            }
+        }
+        data = [data subdataWithRange:NSMakeRange(ret, length-ret)];
+        length -= ret;
+    }
+    /* 解码完成释放解码器 */
+    decodecAVPacket->data = NULL;
+    decodecAVPacket->size = 0;
+    
+    return tmpData;
+}
+//-(void)decodeSBCData:(NSData*)data{
+//    int  ret;
+//    if (!decodecAVFrame) {
+//        if (!(decodecAVFrame = av_frame_alloc())) {
+//            [self showLog:@"Could not allocate audio frame"];
+//            return;
+//        }
+//    }
+//    int  length = (int)data.length;
+//    while (length>0) {
+//        /* 开始解析文件 */
+//        uint8_t *decodData = (Byte*)[data bytes];
+//        ret = av_parser_parse2(parserContext, codecContext, &decodecAVPacket->data, &decodecAVPacket->size,
+//                               decodData, length,
+//                               AV_NOPTS_VALUE, AV_NOPTS_VALUE, 0);
+//        if (ret < 0) {
+//            [self showLog:@"Error while parsing"];
+//            return;
+//        }
+//        /* 解析成功 开始解码 */
+//        if (decodecAVPacket->size){
+//            NSData *pcmData = [self decodeAudioData:codecContext pkt:decodecAVPacket frame:decodecAVFrame];
+//            if(pcmData.length!=0){
+//           
+//                if(self.onRecvPCMData){
+//                    self.onRecvPCMData(pcmData);
+//                    
+//                }
+//            }
+//        }
+//        data = [data subdataWithRange:NSMakeRange(ret, length-ret)];
+//        length -= ret;
+//    }
+//    /* 解码完成释放解码器 */
+//    decodecAVPacket->data = NULL;
+//    decodecAVPacket->size = 0;
+//    
+//}
+
+-(void)finishSBCDecode{
+    avcodec_free_context(&codecContext);
+    av_parser_close(parserContext);
+    av_frame_free(&decodecAVFrame);
+    av_packet_free(&decodecAVPacket);
+}
+
+
+- (void)showLog:(NSString *)log{
+//    NSLog(@"[audio decode]%@",log);
+}
+
+@end
diff --git a/MixSdk/MixSdk/MixSdk/AudioDecode/MSAudioConvert.swift b/MixSdk/MixSdk/MixSdk/AudioDecode/MSAudioConvert.swift
new file mode 100644 (file)
index 0000000..8f331d9
--- /dev/null
@@ -0,0 +1,33 @@
+//
+//  MSAudioConvert.swift
+//  MixSdk
+//
+//  Created by incar on 2024/6/20.
+//
+
+import Foundation
+
+/// 格式转换回调
+public typealias MSAudioConvertCallBack = (_ data:Data) -> Void
+
+public class MSAudioConvert{
+    /// sbc转pcm,一次性返回
+    /// - Parameter data: sbc数据
+    /// - Returns: pcm数据
+    public static func sbcTopcm(_ data:Data) -> Data{
+        let data = AiAudioDecoder.sharedInstance().decodeSBCData(data)
+        return data
+    }
+    
+    
+    /// sbc转pcm,当数据量很大时,会拆分通过callBack多次回调返回
+    /// - Parameters:
+    ///   - data: sbc数据
+    ///   - callBack: 转回回调,会回调多次,
+    public static func sbcTopcm(_ data:Data,_ callBack: @escaping MSAudioConvertCallBack) {
+        AiAudioDecoder.sharedInstance().onRecvPCMData = { pcmData in
+            callBack(pcmData)
+        }
+        let _ = AiAudioDecoder.sharedInstance().decodeSBCData(data)
+    }
+}
index 1dbc821..30e3010 100644 (file)
@@ -126,9 +126,16 @@ public extension MSStt{
     
     /// 发送语音数据,format pcm,采样率 16000
     /// - Parameter data: 语音数据
-    func sendVoice(data:Data){
-        //        Logger.log(data)
-        socket.send(data: data)
+    func sendVoice(pcmData:Data){
+        socket.send(data: pcmData)
+    }
+    
+    /// 发送语音数据,format sbc,采样率 16000
+    /// - Parameter data: 语音数据
+    func sendVoice(sbcData:Data){
+        MSAudioConvert.sbcTopcm(sbcData){[weak self] pcm in
+            self?.socket.send(data: pcm)
+        }
     }
     
     //    func openWebSocket(){
diff --git a/MixSdk/MixSdk/MixSdk/MixSdk-Bridging-Header.h b/MixSdk/MixSdk/MixSdk/MixSdk-Bridging-Header.h
new file mode 100644 (file)
index 0000000..400b4ff
--- /dev/null
@@ -0,0 +1,9 @@
+//
+//  MixSdk-Bridging-Header.h
+//  MixSdk
+//
+//  Created by incar on 2024/6/20.
+//
+
+#import "TestManager.h"
+#import "AudioDecode/AiAudioDecoder.h"
index 36620c4..0833c1e 100644 (file)
@@ -16,6 +16,8 @@ public class MixSdk:NSObject {
         
 //    https://apifox.com/apidoc/shared-054b7e2c-cf4b-4e2b-875c-79fda14ddbbf?pwd=xRzzNg7l  
 //    访问密码: xRzzNg7l
+        
+        AiAudioDecoder.sharedInstance().startSBCDecodec()
     }
     
     /// 初始化工作
@@ -27,7 +29,7 @@ public class MixSdk:NSObject {
     public var logs: [String] { Logger.logs }
     
     /// SDK 版本号
-    public let version: String = "1.0.0"
+    public let version: String = "1.0.1"
     /// 默认为 false
     public var isDebug: Bool = false {
         didSet { Logger.isDebug = isDebug }
@@ -52,6 +54,8 @@ public class MixSdk:NSObject {
     /// 语音转文字
     public var stt = MSStt()
     
+    
+    
 //    /// 鉴权
 //    public lazy var auth:MSAuth = {
 //        return MSAuth()
diff --git a/MixSdk/MixSdk/MixSdk/TestManager.h b/MixSdk/MixSdk/MixSdk/TestManager.h
new file mode 100644 (file)
index 0000000..c3b59a0
--- /dev/null
@@ -0,0 +1,17 @@
+//
+//  TestManager.h
+//  MixSdk
+//
+//  Created by incar on 2024/6/20.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface TestManager : NSObject
+
+- (void)add;
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/MixSdk/MixSdk/MixSdk/TestManager.m b/MixSdk/MixSdk/MixSdk/TestManager.m
new file mode 100644 (file)
index 0000000..20e0f2c
--- /dev/null
@@ -0,0 +1,14 @@
+//
+//  TestManager.m
+//  MixSdk
+//
+//  Created by incar on 2024/6/20.
+//
+
+#import "TestManager.h"
+
+@implementation TestManager
+- (void)add{
+    NSLog(@"==================");
+}
+@end
diff --git a/document/MixSdk.pdf b/document/MixSdk.pdf
deleted file mode 100644 (file)
index 1d3f758..0000000
Binary files a/document/MixSdk.pdf and /dev/null differ
similarity index 91%
rename from document/MixSdk.md
rename to document/MixSdk接口文档.md
index 0bd9867..db043bd 100644 (file)
@@ -2,9 +2,9 @@
 
 ## 介绍
 
-- 当前版本:v1.0.0
+- 当前版本:v1.0.1
 - 更新内容20240620:
-  1. 初始版本
+  1. 语音数据支持pcm和sbc格式
 
 ## 环境要求
 
@@ -161,7 +161,11 @@ public class MSStt {
     
     /// 发送语音数据,format pcm,采样率 16000
     /// - Parameter data: 语音数据
-    func sendVoice(data:Data)
+    public func sendVoice(pcmData: Data)
+
+    /// 发送语音数据,format sbc,采样率 16000
+    /// - Parameter data: 语音数据
+    public func sendVoice(sbcData: Data)
     
     /// 事件回调
     public var eventCallBack:MSSttEventCallBack?
@@ -210,7 +214,25 @@ extension MSTts {
 
 
 
-## 数据类型
+## 其他类型
+
+### MSAudioConvert
+
+```swift
+public class MSAudioConvert {
+
+    /// sbc转pcm,一次性返回
+    /// - Parameter data: sbc数据
+    /// - Returns: pcm数据
+    public static func sbcTopcm(_ data: Data) -> Data
+
+    /// sbc转pcm,当数据量很大时,会拆分通过callBack多次回调返回
+    /// - Parameters:
+    ///   - data: sbc数据
+    ///   - callBack: 转回回调,会回调多次,
+    public static func sbcTopcm(_ data: Data, _ callBack: @escaping MixSdk.MSAudioConvertCallBack)
+}
+```
 
 ### MixSdk