From 7b02207537d35bfa1714bf8beafc921f717d100a Mon Sep 17 00:00:00 2001 From: 单军华 Date: Wed, 11 Jul 2018 10:47:42 +0800 Subject: [PATCH] 首次上传 --- screendisplay/Pods/EaseUI/EaseUI/EMUIKit/3rdparty/DeviceHelper/VoiceConvert/amrwapper/wav.mm | 97 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 97 insertions(+), 0 deletions(-) diff --git a/screendisplay/Pods/EaseUI/EaseUI/EMUIKit/3rdparty/DeviceHelper/VoiceConvert/amrwapper/wav.mm b/screendisplay/Pods/EaseUI/EaseUI/EMUIKit/3rdparty/DeviceHelper/VoiceConvert/amrwapper/wav.mm new file mode 100755 index 0000000..794b75b --- /dev/null +++ b/screendisplay/Pods/EaseUI/EaseUI/EMUIKit/3rdparty/DeviceHelper/VoiceConvert/amrwapper/wav.mm @@ -0,0 +1,97 @@ +/* ------------------------------------------------------------------ + * Copyright (C) 2009 Martin Storsjo + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. + * See the License for the specific language governing permissions + * and limitations under the License. + * ------------------------------------------------------------------- + */ + +#import <UIKit/UIKit.h> +#include "wav.h" + +void WavWriter::writeString(const char *str) { + fputc(str[0], wav); + fputc(str[1], wav); + fputc(str[2], wav); + fputc(str[3], wav); +} + +void WavWriter::writeInt32(int value) { + fputc((value >> 0) & 0xff, wav); + fputc((value >> 8) & 0xff, wav); + fputc((value >> 16) & 0xff, wav); + fputc((value >> 24) & 0xff, wav); +} + +void WavWriter::writeInt16(int value) { + fputc((value >> 0) & 0xff, wav); + fputc((value >> 8) & 0xff, wav); +} + +void WavWriter::writeHeader(int length) { + writeString("RIFF"); + writeInt32(4 + 8 + 20 + 8 + length); //���16������20 + writeString("WAVE"); + + writeString("fmt "); + writeInt32(20); + + int bytesPerFrame = bitsPerSample/8*channels; + int bytesPerSec = bytesPerFrame*sampleRate; + writeInt16(1); // Format + writeInt16(channels); // Channels + writeInt32(sampleRate); // Samplerate + writeInt32(bytesPerSec); // Bytes per sec + writeInt16(bytesPerFrame); // Bytes per frame + writeInt16(bitsPerSample); // Bits per sample + + writeInt32(0); //������������������������ nExSize + + writeString("data"); + writeInt32(length); +} + +WavWriter::WavWriter(const char *filename, int sampleRate, int bitsPerSample, int channels) +{ + + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); + NSString *documentPath = [paths objectAtIndex:0]; + NSString *docFilePath = [documentPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%s", filename]]; + //NSLog(@"documentPath=%@", documentPath); + + wav = fopen([docFilePath cStringUsingEncoding:NSASCIIStringEncoding], "wb"); + if (wav == NULL) + return; + dataLength = 0; + this->sampleRate = sampleRate; + this->bitsPerSample = bitsPerSample; + this->channels = channels; + + writeHeader(dataLength); +} + +WavWriter::~WavWriter() { + if (wav == NULL) + return; + fseek(wav, 0, SEEK_SET); + writeHeader(dataLength); + fclose(wav); +} + +void WavWriter::writeData(const unsigned char* data, int length) { + if (wav == NULL) + return; + fwrite(data, length, 1, wav); + dataLength += length; +} + -- Gitblit v1.8.0