public AITalkResultCode SetParam(ref AITalk_TTtsParam param) { IntPtr pParam = AITalkMarshal.TTtsParamToIntPtr(ref param); AITalkResultCode code = AITalkAPI.SetParam(pParam); this.OnWriteLog("[AITalkAPI_SetParam] " + code); Marshal.FreeCoTaskMem(pParam); if (code == AITalkResultCode.AITALKERR_SUCCESS) { this._kanaBuf = new StringBuilder((int)param.lenTextBufBytes); this._waveBuf = new short[param.lenRawBufBytes / 2]; } return(code); }
public AITalkResultCode GetParam(ref AITalk_TTtsParam param) { uint num; AITalkResultCode code = AITalkAPI.GetParam(IntPtr.Zero, out num); this.OnWriteLog("[AITalkAPI_GetParam] " + code); if (code == AITalkResultCode.AITALKERR_INSUFFICIENT) { IntPtr ptr = Marshal.AllocCoTaskMem((int)num); Marshal.WriteInt32(ptr, (int)num); code = AITalkAPI.GetParam(ptr, out num); this.OnWriteLog("[AITalkAPI_GetParam] " + code); if (code != AITalkResultCode.AITALKERR_SUCCESS) { Marshal.FreeCoTaskMem(ptr); return(code); } param = AITalkMarshal.IntPtrToTTtsParam(ptr); Marshal.FreeCoTaskMem(ptr); } return(code); }