Git Product home page Git Product logo

unimrcp's Introduction

INTRODUCTION
============

UniMRCP is an open source project compliant with the IETF RFC6787 (MRCPv2) and RFC4463 (MRCPv1)
specifications.


INSTALLATION
============

See the file "INSTALL" for installation tips.


DOCUMENTATION
=============

Use the directory "docs/dox" for a documentation generated by Doxygen.
Use the directory "docs/ea" for UML based design concepts, HTML pages generated by Enterprise Architect.


REFERENCES
==========

Website:
   http://www.unimrcp.org

Downloads:
   http://www.unimrcp.org/downloads

Documentation:
   http://www.unimrcp.org/documentation

GitHub:
   https://github.com/unispeech/unimrcp

Issue Tracker:
   https://github.com/unispeech/unimrcp/issues

Discussion Group:
   https://groups.google.com/group/unimrcp

Source Changes:
   https://github.com/unispeech/unimrcp/commits/master
   https://groups.google.com/group/unimrcp-commits


LICENSING
=========

UniMRCP is licensed under the terms of the Apache License 2.0.
See the file "LICENSE" for more information.

Copyright 2008 - 2022 Arsen Chaloyan

unimrcp's People

Contributors

achaloyan avatar crienzo avatar grmt avatar ladenedge avatar mjerris avatar schlagert avatar sfgeorge avatar tomas-valenta avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

unimrcp's Issues

Application freeze upon call to mrcp_client_shutdown

Originally reported on Google Code with ID 28

What steps will reproduce the problem?

  Create a client using unimrcp_client_create, create a log instance,
activate a log external handler, create an application using
mrcp_client_application_register, start the client using mrcp_client_start,
wait for it to start, create a bunch of sessions, then destroy all of them,
destroy the application using mrcp_application_destroy, destroy the log
instance using apt_log_instance_destroy, shutdown client using
mrcp_client_shutdown this call never returns. The last thing to do would be
the call to mrcp_client_destroy, unfortunately the code never reaches this
point.

What version of the product are you using? On what operating system?

I use the latest (trunk) libunimrcpclient version.
The OS is a Windows Server 2003 SP2 Enterprise Edition.

Please provide any additional information below.

Here is my application trace from the UniMRCP perspective. Please feel free
to ask any additional information you may need. Thanks in advance.

(01 13:29:33.890) 6100 - Create Application
(01 13:29:34.078) 6100 - Register Application [SAUniMRCP]
(---------------) 6100 - Start MRCP Client
(---------------) 3964 - Start SofiaSIP Agent
(---------------) 3964 - Start TCP/MRCPv2 Connection Agent
(---------------) 3964 - Start Media Processing Engine
(---------------) 3964 - MRCP Client Started
(---------------) 5076 - Receive SIP Event [nua_r_set_params] Status 200 OK
(01 13:29:34.140) 1116 - Create MRCP Handle 0x46a8fc0 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46aafc8 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46acfd0 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46aefd8 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46b0fe0 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46b2fe8 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46b4ff0 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46b6ff8 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46b9000 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46bb008 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46bd010 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46bf018 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46c1020 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46c3028 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46c5030 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46c7038 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46c9040 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46cb048 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46cd050 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46cf058 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46d1060 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46d3068 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46d5070 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46d7078 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46d9080 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46db088 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46dd090 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46df098 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46e10a0 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46e30a8 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46e50b0 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46e70b8 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46e90c0 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46eb0c8 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46ed0d0 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46ef0d8 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46f10e0 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46f30e8 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46f50f0 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46f70f8 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46f9100 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46fb108 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46fd110 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x46ff118 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x4701120 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x4703128 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x4705130 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x4707138 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x4709140 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x470b148 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x470d150 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x470f158 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x4711160 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x4713168 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x4715170 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x4717178 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x4719180 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x471b188 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x471d190 [MRCPv2-Default]
(---------------) 1116 - Create MRCP Handle 0x471f198 [MRCPv2-Default]
(01 13:33:59.812) 6100 - Destroy MRCP Handle 0x46e50b0 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46e70b8 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46e90c0 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46eb0c8 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46ed0d0 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46ef0d8 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46f10e0 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46f30e8 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46f50f0 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46f70f8 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46f9100 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46fb108 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46fd110 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46ff118 <new>
(---------------) 6100 - Destroy MRCP Handle 0x4701120 <new>
(---------------) 6100 - Destroy MRCP Handle 0x4703128 <new>
(---------------) 6100 - Destroy MRCP Handle 0x4705130 <new>
(---------------) 6100 - Destroy MRCP Handle 0x4707138 <new>
(---------------) 6100 - Destroy MRCP Handle 0x4709140 <new>
(---------------) 6100 - Destroy MRCP Handle 0x470b148 <new>
(---------------) 6100 - Destroy MRCP Handle 0x470d150 <new>
(---------------) 6100 - Destroy MRCP Handle 0x470f158 <new>
(---------------) 6100 - Destroy MRCP Handle 0x4711160 <new>
(---------------) 6100 - Destroy MRCP Handle 0x4713168 <new>
(---------------) 6100 - Destroy MRCP Handle 0x4715170 <new>
(---------------) 6100 - Destroy MRCP Handle 0x4717178 <new>
(---------------) 6100 - Destroy MRCP Handle 0x4719180 <new>
(---------------) 6100 - Destroy MRCP Handle 0x471b188 <new>
(---------------) 6100 - Destroy MRCP Handle 0x471d190 <new>
(---------------) 6100 - Destroy MRCP Handle 0x471f198 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46a8fc0 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46aafc8 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46acfd0 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46aefd8 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46b0fe0 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46b2fe8 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46b4ff0 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46b6ff8 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46b9000 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46bb008 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46bd010 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46bf018 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46c1020 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46c3028 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46c5030 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46c7038 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46c9040 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46cb048 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46cd050 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46cf058 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46d1060 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46d3068 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46d5070 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46d7078 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46d9080 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46db088 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46dd090 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46df098 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46e10a0 <new>
(---------------) 6100 - Destroy MRCP Handle 0x46e30a8 <new>
(---------------) 6100 - Destroy Application
(---------------) 6100 - Terminate MRCP Client
(---------------) 3964 - Terminate SofiaSIP Agent
(---------------) 3964 - Send Shutdown Signal to NUA
(---------------) 3964 - Terminate TCP/MRCPv2 Connection Agent
(---------------) 3964 - Terminate Media Processing Engine
(---------------) 752 - Process Control Message
(---------------) 5076 - Receive SIP Event [nua_r_shutdown] Status 200
Shutdown successful

Reported by cpsoares on 2009-06-01 14:27:23

Decimal values in a mrcp_recog_header_t strangely rounded to the nearest tenth in the SET-PARAMS messages

Originally reported on Google Code with ID 35

Hi Arsen,

I tried setting a few parameters, using mrcp_recog_header_t as you
explained. Everything works fine, but the decimal values in the SET-PARAMS
messages appear rounded to the next tenth, compared to the input values
passed to the mrcp_recog_header_t structure. For instance:

- the value 0.3725 for the sensitivity-level becomes 0.4 in the SET-PARAMS
message: "Sensitivity-Level: 0.4"

- the value 0.784 for the confidence-threshold becomes 0.8 in the message:
"Confidence-Threshold: 0.8".

I verified that the ASR server receives the rounded values, indeed. An
integer value is passed OK. The log file for our test application was attached.

I wonder if this is an APR issue...

Thank you very much, Arsen.

Reported by Curatica on 2009-06-27 03:08:05


- _Attachment: [Issue_35.zip](https://storage.googleapis.com/google-code-attachments/unimrcp/issue-35/comment-0/Issue_35.zip)_

Memory problem

Originally reported on Google Code with ID 20

What steps will reproduce the problem?
1. Run concurrent requests from unimrcp client.
2. Monitor the memory allocated to unimrcp server

What version of the product are you using? On what operating system?

MRCP Server: unimrcp 0.5.0 
MRCP Client: unimrcp client 0.5.0
Plug-in: modified version of demosynth (see attached)
OS: Win XP SP2
Dev Environment: VS 2005 SP1 

Please provide any additional information below.

Reported by sadeek.kheer on 2009-03-25 21:30:12


- _Attachment: [demo_synth_engine.c](https://storage.googleapis.com/google-code-attachments/unimrcp/issue-20/comment-0/demo_synth_engine.c)_

Memory corruption in mpf code

Originally reported on Google Code with ID 29

What steps will reproduce the problem?

I'm using libunimrcpclient linked to my application. I use it as a
MRCPv2-only client connected to a Loquendo Speech Server 7.x. I'm doing
stress tests in my application. These stress tests simply consist in
issuing a bunch of TTS requests and a bunch of ASR requests. I have only
one application registered with unimrcp requesting ASR and TTS resources to
do the corresponding requests. Each TTS request is done in its own session.
Each ASR request is done in its own session. Each request is done in its
own MRCP connection.

Arsen, maybe the sample code you made that allowed you to reproduce the
error associated with Issue 27, can serve also to identify this one.

What version of the product are you using? On what operating system?

I use the latest (trunk) libunimrcpclient version compiled by me.

The OS is a Windows Server 2003 SP2 Enterprise Edition.

Please provide any additional information below.

NOTE: I detached this info from Issue 27, because this may be another issue
independent from the one reported at 27.

I attached the traces and also a visual studio 2005 screenshot to
illustrate the point of crash along with the stack contents for each call
from the mpf mm_timer thread context. If you need anything from my side to
help fixing this issue just ask. Thanks in advance.

Reported by cpsoares on 2009-06-01 15:46:04


- _Attachment: [mem corruption in mpf code.zip](https://storage.googleapis.com/google-code-attachments/unimrcp/issue-29/comment-0/mem corruption in mpf code.zip)_

ASR does not work with Nuance MRCP V2 Server

Originally reported on Google Code with ID 32

Hi Arsen,

I tried running the "unimrcpclient" sample application against a Nuance 
MRCP v2 server (which uses the so called Nuance 9 for ASR), after changing 
the Content-Type for the DEFINE-GRAMMAR request to "application/srgs+xml", 
as I mentioned in an email.

Things seemed to unfold normally until after UniMRCP sent the RECOGNIZE 
request and the server replied with a โ€œ200 IN-PROGRESSโ€.

The first weird thing followed after that. I see that UniMRCP 
opened โ€œone.pcmโ€ only about 4 seconds later. Some RTP data was received by 
the server because Nuance sent a โ€œSTART-OF-INPUT 2 IN-PROGRESSโ€ 
after โ€œone.pcmโ€ was opened. I also saw a lot of RTP packets in the 
WireShark output.

But 10 seconds later, the server sent a โ€œRECOGNITION-COMPLETE 2 COMPLETEโ€ 
with a Completion-Cause: 015 (โ€œno-match-maxtimeโ€).

Donโ€™t have any clue. The UniMRCP log file, Nuance MRCP server log file, 
and the WireShark capture file will be uploaded in a zip archive 
called โ€œASR_does_not_work_with_Nuance_MRCP_V2_Server.zipโ€. Nuance MRCP 
server log file doesnโ€™t mention anything about RTP though, but maybe that 
kind of information was not enabled in the log. I will open a case with 
Nuance support as well. I used the latest UniMRCP release, r930.

Thanks a lot and best regards.

Reported by Curatica on 2009-06-10 00:20:29


- _Attachment: [ASR_does_not_work_with_Nuance_MRCP_V2_Server.zip](https://storage.googleapis.com/google-code-attachments/unimrcp/issue-32/comment-0/ASR_does_not_work_with_Nuance_MRCP_V2_Server.zip)_

Not possible to run two unimrcpclients on same PC

Originally reported on Google Code with ID 16

Yet another issue!

unimrcpclient uses a fixed port number for the control socket.
Which prevents the unimrcpclient from working properly.

See also
http://code.google.com/p/unimrcp/issues/detail?id=8&can=1&colspec=ID Type 
Status Priority Component Milestone Owner Reporter Summary#c7 


Reported by garmt.noname on 2009-01-16 08:30:58

Possible access violation in APT logger

Originally reported on Google Code with ID 40

If you try to log
apt_log(APT_LOG_MARK, APT_PRIO_WARNING, "We print string with %%s");
then the default logger function, apt_do_log at apt_log.c:260 tries to
print and format the log entry with
printf(log_entry);
which is in fact
printf("...some artifacts... We print string with %s");
You ought to use a non-formatting function:
fwrite(log_entry, offset, 1, stdout);
or alternatively
printf("%.*s", offset, log_entry);

Reported by [email protected] on 2009-08-18 08:26:33

ANNOUNCE response RTSP message missing Cseq

Originally reported on Google Code with ID 21

What steps will reproduce the problem?
1. run the example mrcptestclient and mrcptestserver programs that come
with the unimrcp5 package.
2. run recog

What version of the product are you using? On what operating system?
Unimrcp 3 4 and 5

Please provide any additional information below.

There could be 3 RTSP/MRCP responses to a single RECOGNIZE request.
a. OK
b. START-OF-INPUT
c. RECOGNITION-COMPLETE

Cseq is only present in the 1st response RTSP message (i.e. OK) from server
to client.  START-OF-INPUT and RECOGNITION-COMPLETE messages are missing
Cseq in the RTSP header.

According to RTSP specification CSeq must be present in all request and
response packets. 

Missing CSeq causes failure to successfully integrate to Nortel MPS MRCP1
platform.


Reported by dbansal on 2009-03-25 21:51:25

Implement MRCP core library

Originally reported on Google Code with ID 3

Implement MRCP core library to provide client and server stacks with an
abstract, protocol version independent signaling interface, as well as
plugin interface for 3-rd party ASR/TTS engines.

Reported by achaloyan on 2008-04-12 15:39:21

Implement apr-toolkit library

Originally reported on Google Code with ID 1

Implement apr-toolkit library on top of apr and apr-util libraries with the
following feature set
- task execution abstraction
- inter task communication
- simple logging interface
- base text processing routine required for message parsing
- more

Reported by achaloyan on 2008-04-12 15:26:07

Problem with RSTP TEARDOWN

Originally reported on Google Code with ID 22

Arsen, Hi!

I found a problem with MRCPv1 client.
Now it is assumed that MRCP server responses on teardown request like this:
2009-03-31 19:36:36:391056 [INFO]   Send RTSP Stream [103 bytes]
TEARDOWN rtsp://127.0.0.2:1554/media/speechsynthesizer RTSP/1.0
CSeq: 3
Session: 2ff55f3803674c34


2009-03-31 19:36:36:429737 [INFO]   Receive RTSP Stream [55 bytes]
RTSP/1.0 200 OK
CSeq: 3
Session: 2ff55f3803674c34

But, indeed, server does not return Session (rfc2326, 10.7).
Only CSeq is returned. Therefore rtsp_client_session_response_process
function cannot find session (function tries to find new/pending session)
and session is never removed/destroyed.
Maybe the solution could be to look for original request using CSeq?

Garik.

Reported by garik.simonyan on 2009-03-31 15:46:50

MRCP Speak Message with long body

Originally reported on Google Code with ID 23

What steps will reproduce the problem?
1.Send Speak request from client to server and the message body must be
long for example 3 KB message body.
2.Send Stop request from client to server.
3.Send Speak request from client to server and the message body must
be long for example 3 KB message body.

What version of the product are you using? On what operating system?
Using UniMRCP version 0.5.0 on windows xp operating system.

Please provide any additional information below.
Attached Files:
******************
1. demo_util.c
2. demo_synth_application.c
3. unimrcpclient.log
4. unimrcpserver.log
5. speak.xml

Note:
******
I tested this case on your demo synthesizer client and demo server.

Help:
******
when i discovered this problem i thought that it might be my problem
and i tried to find where the problem occurs and i found that the
problem occurred at mrcp_stream.c file.
i tested this case in your demo client and server and i found that the
problem already exists, so i think its a problem in mrcp client
itself.

Reported by firstmahmoud2002 on 2009-04-01 07:24:39


- _Attachment: [demo_synth_application.c](https://storage.googleapis.com/google-code-attachments/unimrcp/issue-23/comment-0/demo_synth_application.c)_ - _Attachment: [demo_util.c](https://storage.googleapis.com/google-code-attachments/unimrcp/issue-23/comment-0/demo_util.c)_ - _Attachment: [speak.xml](https://storage.googleapis.com/google-code-attachments/unimrcp/issue-23/comment-0/speak.xml)_ - _Attachment: [unimrcpclient.log](https://storage.googleapis.com/google-code-attachments/unimrcp/issue-23/comment-0/unimrcpclient.log)_ - _Attachment: [unimrcpserver.log](https://storage.googleapis.com/google-code-attachments/unimrcp/issue-23/comment-0/unimrcpserver.log)_

Failed to Find Channel errors

Originally reported on Google Code with ID 27

What steps will reproduce the problem?

I'm using libunimrcpclient linked to my application. I use it as a
MRCPv2-only client connected to a Loquendo Speech Server 7.x. I'm doing
stress tests in my application. These stress tests simply consist in
issuing a bunch of TTS requests and a bunch of ASR requests. I have only
one application registered with unimrcp requesting ASR and TTS resources to
do the corresponding requests. Each TTS request is done in its own session.
Each ASR request is done in its own session. Each request is done in its
own MRCP connection (I detected another issue related to the MRCP
connection reuse, which I'll eventually report later on).

From time to time I see this in the traces: "Failed to Find Channel
<xxxxxxxxxxxxxxxx@speechrecog>", where xxxx is some ID corresponding to a
resource that exists.

This will eventually lead to some kind of memory corruption and my
application crashes later on always on some code run in the context of the
mpf mm_timer_proc thread.

What version of the product are you using? On what operating system?

I use the latest (trunk) libunimrcpclient version compiled by me but this
also happened on prior versions.

The OS is a Windows Server 2003 SP2 Enterprise Edition.

Please provide any additional information below.

I will attach the traces from my application from the UNIMRCP side. These
traces come along with the thread id responsible for the trace on each
line. I will attach all the MRCP traces I have. These traces correspond to
a "run" of the stress test till the application crashed.

Please let me know if you need additional information or something else I
can try to better pinpoint the problem.

Thanks in advance.

Reported by cpsoares on 2009-05-29 16:13:06


- _Attachment: [UNIMRCP.zip](https://storage.googleapis.com/google-code-attachments/unimrcp/issue-27/comment-0/UNIMRCP.zip)_

inline grammar for RECOGNIZE request

Originally reported on Google Code with ID 43

In the plugin, unimrcp server loads grammar when processing a DEFINE- 
GRAMMAR request, but some mrcp clients send the grammar when sending a 
RECOGNIZE request without first sending a DEFINE-GRAMMAR request, the 
plugin have to support inline grammar loading.

Reported by HuaJGuo on 2009-09-18 14:18:37

crashes and garbage logging when running unimrcpclient tts demo

Originally reported on Google Code with ID 33

What steps will reproduce the problem?
1. I modified unimrcp tts client to also test pause/resume/stop (see 
attached zip file)
2. Do (almost) like a monkey:
    in the client create multiple sessions fast:
    type: run synth and create multiple sessions (3 or 4 in my case will 
do) by hitting up arrow and enter (command line recall)
3. I experienced several crashes. I was running the client using the VS08 
debugger. 

What version of the product are you using? On what operating system?
Latest trunk release on win32 (r984)

Please provide any additional information below.

The attached unimrcp client log shows 
(1) garbage when logging the phrase of a 
    "Receive SIP Event [nua_i_state] Status 200 "
(2) The log ends when I experienced a crash in libsofia_sip_ua.dll


----

The above test was meant to just test my tts plugin (which I updated to 
the latest revisions) rather than testing the unimrcp client, but anyway, 
it's pretty well reproducable (on my 5 year old and slow laptop) so I 
thought I should report this. It might be related to issue with sofia sip 
as described in issue 20 !?

Additionally, I experienced some crashes before the one documented here 
above. These were probably not related to sofia-sip
I was able to identify some of them. I changed the code to prevent the 
crashes in the future as these were all dereferences of pointers to 0. I 
did not figure out what the exact scenario's were (it was monkey testing 
as described above) and I did not save any loggings.

The (modified) sources are in the attached zip file.




Reported by garmt.noname on 2009-06-13 21:09:25


- _Attachment: [20090613.zip](https://storage.googleapis.com/google-code-attachments/unimrcp/issue-33/comment-0/20090613.zip)_

Genesys Voice Platform interoperability

Originally reported on Google Code with ID 39

GVP client fails to parse RTSP response to DESCRIBE request to
speechrecognizer resource. GVP needs to discover resources first, otherwise
it refuses to use (call) them. The problem is in Transport RTSP header in
response. If the header is omitted, everything goes ok, but may other
clients need it? Maybe the problem can be solved in other way, but I did
not find it. The response should also announce telephone-event support,
generally the response should be generated according to the server
configuration (Issue-19).

Workaround or patch:
Comment out lines 540--543 in mrcp_unirtsp_sdp.c (r1086).

See also http://code.google.com/p/unimrcp/wiki/InteroperabilityGuide

Reported by [email protected] on 2009-08-17 14:50:24

The compilation step missing from all .vcproj files when using VS2005-SP1

Originally reported on Google Code with ID 10

Hi Arsen,

From the onset, let's clarify that this is most likely a Visual Studio 
problem, and not related to UniMRCP per se. And it is a problem that we 
approached in the past.

Apparently, VS2005-SP1 does not recognize the .c extension for the C 
source files, and therefore is incapable to associate the C compiler tool 
with this extension. This is visible to me by opening the "Property Pages" 
of any project and noticing that there is no C/C++ property under 
the "Configuration Properties" (see Figure 1 in the attached Word document 
containing various screenshots). Therefore, an attempt to "build solution" 
goes through all projects without doing anything. As an example, Figure 1 
mentioned above shows what happens when trying to build the 
project โ€œaprtoolkitโ€.

To remedy this behavior, a pretty tedious action needs to be carried out: 

1. Select all the .c files in the solution and only the .c files, right 
click on the selection to bring up the โ€œProperty Pagesโ€, select โ€œAll 
Configurationsโ€ in the โ€œConfigurationโ€ drop-down list and do the following 
two steps.
2. Delete โ€œPerforming Custom Build Stepโ€ from โ€œConfiguration Propertiesโ€-
โ€œCustom Build Stepโ€-โ€œGeneralโ€-โ€œDescriptionโ€.
3. Replace the โ€œCustom Build Toolโ€ by the โ€œC/C++ Compiler Toolโ€ in 
the โ€œConfiguration Propertiesโ€-โ€œGeneralโ€-โ€œToolโ€ sub-property (see Figure 
3).

I verified that this is a Visual Studio issue by creating an empty project 
and then adding a few arbitrary .c files to that project. The project is 
not compiled and shows exactly the same deficiency which can be remedied 
as described.

There is a significant difference between a .vcproj file created by VS2005-
base and one created by VS2005-SP1. In the former case, the โ€œtoolsโ€ are 
specified at the beginning of the file followed by an enumeration of the 
source files.

Example:

        <Filter
            Name="src"
            Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
            >
            <File
                RelativePath=".\src\apt_consumer_task.c"
                >
            </File>

etc...

In the latter case, the compilation tool is specified for every single 
source file.

Example:

        <Filter
            Name="src"
            Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
            <File
                RelativePath=".\src\apt_consumer_task.c"
                >
                <FileConfiguration
                    Name="Debug|Win32"
                    >
                    <Tool
                        Name="VCCLCompilerTool"
                    />
                </FileConfiguration>
                <FileConfiguration
                    Name="Release|Win32"
                    >
                    <Tool
                        Name="VCCLCompilerTool"
                    />
                </FileConfiguration>
            </File>

etc...

You certainly remember this issue from OpenMRCP. But interestingly, I 
found three or four source files in the Sofia-SIP package which suffered 
the same shortcoming (โ€œCustom Build Toolโ€ instead of โ€œC/C++ Compiler 
Toolโ€).

I see three options:

1. Either I call Microsoft support and ask for an explanation/solution for 
this behavior.

2. Or you check-in and use the .vcproj files that I will have provided if 
I am capable to upload the zip file of UniMRCP 0.3.0 containing the 
changes described above. Note that in this zip file, โ€œapr.vspropsโ€ 
and โ€œsofiasip.vspropsโ€ reflect my directory structure, so you may want to 
change them. I am fairly sure that these project files are compatible with 
VS2005-base.

Of course, even if you agree to use the modified .vcproj, this doesnโ€™t 
preclude calling Microsoft just for the sake of understanding what is 
going on.

There is also the option that you upgrade to VS2005-SP1, although a year 
ago or so, you tried and the program crashed, or did something similar, if 
I remember correctly. But perhaps, in the meantime you modified your 
computer or OS and this will no longer be an issue. I think that there are 
benefits of upgrading to SP1, at least as far as the speed of IntelliSense 
which seemed to take minutes, blocking the whole program when I was using 
VS2005-base.

Thanks a lot and best regards.

Reported by Curatica on 2009-01-04 03:19:50


- _Attachment: [ScreenShotsForNoCompilation.doc](https://storage.googleapis.com/google-code-attachments/unimrcp/issue-10/comment-0/ScreenShotsForNoCompilation.doc)_ - _Attachment: [unimrcp-0.3.0[vlad].zip](https://storage.googleapis.com/google-code-attachments/unimrcp/issue-10/comment-0/unimrcp-0.3.0[vlad].zip)_

Cannot build the Apache libraries

Originally reported on Google Code with ID 9

Gentlemen,

I downloaded apr-1.3.3, apr-util-1.3.4 and apr-iconv-1.2.1.

The third package is apparently required, at least for the build to 
succeed, although Arsen does not mention it in the installation 
instructions. But apr-util workspace, aprutil.dsw includes projects from 
apr-iconv. In fact the Apache documentation, 
http://apr.apache.org/compiling_win32.html, suggests that one should load 
apr-util/aprutil.dsw which contains all the required VC projects (and it 
certainly contains projects from apr-iconv).

Now, apr-iconv builds fine, but a number of projects in apr-util-1.3.4 do 
not. Those projects seem to be database related:

    - .\dbd\apr_dbd_freetds.dsp
    - .\dbd\apr_dbd_mysql.dsp
    - .\dbd\apr_dbd_odbc.dsp
    - .\dbd\apr_dbd_oracle.dsp
    - .\dbd\apr_dbd_pgsql.dsp
    - .\dbd\apr_dbd_sqlite2.dsp
    - .\dbd\apr_dbd_sqlite3.dsp

Typically, the compiler cannot find at least one header file required in 
each project, repectively. Here is an example for apr_dbd_freetds:

------ Build started: Project: apr_dbd_freetds, Configuration: Release 
Win32 ------
Compiling...
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.762 for 
80x86
Copyright (C) Microsoft Corporation.  All rights reserved.
cl /O2 /Ob1 /I "../include" /I "../../apr/include" /I "../include/private" 
/D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "APU_DBD_DSO_BUILD" /D "APU_HAVE_FR
EETDS=1" /D "_VC80_UPGRADE=0x0600" /D "_WINDLL" /GF /FD /EHsc /MD /Gy /Fp".
\Release/apr_dbd_freetds.pch" /Fo".\Release\\" /Fd".\Release\apr_dbd_freetd
s_src" /W3 /c /Zi /TC ".\apr_dbd_freetds.c"
apr_dbd_freetds.c
.\apr_dbd_freetds.c(39) : fatal error C1083: Cannot open include 
file: 'sybdb.h': No such file or directory
apr_dbd_freetds - 1 error(s), 0 warning(s)
========== Build: 2 succeeded, 1 failed, 4 up-to-date, 0 skipped ==========

The inclusion of that header file is conditioned by the value of a 
precompiler constant (APU_HAVE_FREETDS=1, in this case). If I set 
APU_HAVE_FREETDS to 0, the compilation succeeds but the build fails 
because it requires a non-existent library:

Copyright (C) Microsoft Corporation.  All rights reserved.
"/OUT:Release\apr_dbd_freetds-
1.dll" /INCREMENTAL:NO /DLL /MANIFEST "/MANIFESTFILE:.\Release\apr_dbd_free
tds-1.dll.intermediate.manifest" /DEBUG "/PDB:Release\apr_dbd_freetds-
1.pdb" /SUBSYSTEM:WINDOWS /OPT:REF "/BASE:0x6EF00000" "/IMPLIB:Release\apr_
dbd_freetds-1.lib" /MACHINE:X86 ws2_32.lib mswsock.lib libTDS.lib 
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib 
shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib 
odbccp32.lib "..\release\libaprutil-1.lib" "..\..\apr\release\libapr-
1.lib" 
".\release\apr_dbd_freetds.obj" 
".\release\apr_dbd_freetds-1.res" 
LINK : fatal error LNK1181: cannot open input file 'libTDS.lib'
apr_dbd_freetds - 1 error(s), 0 warning(s)
========== Build: 2 succeeded, 1 failed, 4 up-to-date, 0 skipped ==========

I suspect that these projects may require some other packages development 
packages such as MySQL or ODBC or ORACLE.

I know this is a question for the Apache APR contributors but it seems 
that nobody at UniMRCP had these problems or that everybody knew how to 
work around them.

Thanks everyone.

Reported by Curatica on 2008-12-31 04:00:27

Implement MRCPv1 module

Originally reported on Google Code with ID 5

Implement MRCPv1 module by implementing basic RTSP stack first and then
integrating it as a module.

Reported by achaloyan on 2008-04-12 15:44:35

UniMRCP client omission of RTCP goodbye packet required by Nuance Media server for ASR

Originally reported on Google Code with ID 50

Running the unimrcpclient, connecting to Nuance Recognizer 9.0.3 with
Nuance Media Server 5.1.0 as the MRCP server causes recognition to fail
with "015 no-match-maxtime".

According to Issue 32, the "solution" is to simply modify the
incompletimeout variable, allowing Nuance to look for shorter periods of
silence to assume "end-of-speech". Indeed setting the incompletetimeout to
e.g. 900 allows recognition to work. This is clearly not an elegant solution.

According to Nuance, the correct solution is that uniMRCP should send a
"RTCP Goodbye packet" to indicate end-of-speech, otherwise their MRCP
server won't process the data.

I'm using unimrcp 0.8.0, APR 1.3.8, APR-util 1.3.9, and Sofia-SIP 1.2.10,
basically the unimrcp-deps-0.8.0.tar.gz and unimrcp-0.8.0.tar.gz files from
the unimrcp site. I'm running on CentOS 5.3 and there are no firewalls in
place between the speech server (running Nuance Recognizer, and Media
Server) and the unimrcpclient. We're using MRCP v. 2.

Any help would be appreciated.

Reported by thirionjwf on 2009-10-20 08:42:09

Multiple plugins of the same resource

Originally reported on Google Code with ID 8

It's possible to configure and load more than one plugin of the same
resource, but there is no way to specify which one of them should be used.

Reported by achaloyan on 2008-12-18 13:22:22

recieve -> receive

Originally reported on Google Code with ID 14

You wanted an issue: well here is a typo. 
As it shows up quite often and (and on the client while waiting for user 
input) I suggest to change it...

in 
mrcp_sofiasip_client_agent.c and 
mrcp_sofiasip_server_agent.c

Reported by garmt.noname on 2009-01-14 10:29:25

Test whether an engine opened successfully

Originally reported on Google Code with ID 42

Hi Arsen,

I came across an issue related to engine-specific parameters you introduced
in r1079 -- many thanks. If a plugin needs some parameters from config, it
must be initialized in mrcp_engine_virtual_open(), not in
mrcp_plugin_create(). But the server does not care whether the
initialization was successful or not. You should check the return value in
mrcp_server.c:632.

Thanks.
- Vali

Reported by [email protected] on 2009-09-14 14:27:30

Shraing RTSP session among resources

Originally reported on Google Code with ID 46

Hi Arsen,

while testing UniMRCP server with IBM VoiceEnabler, we found a bug that
causes VE to crash. The scenario looks as follows:

SETUP rtsp://10.6.6.2/media/speechrecognizer RTSP/1.0
cseq: 0
user-agent: WebSphere-VoiceEnabler 5.1.3
transport: ...
...

RTSP/1.0 200 OK
CSeq: 0
Session: 32d66bf00c15ea4a
...

then some recognizer requests:
DEFINE-GRAMMAR
DEFINE-GRAMMAR
DEFINE-GRAMMAR

And now the key point (notice the session header):
SETUP rtsp://10.6.6.2/media/speechsynthesizer RTSP/1.0
cseq: 5
user-agent: WebSphere-VoiceEnabler 5.1.3
session: 32d66bf00c15ea4a
transport: ...
...

RTSP/1.0 200 OK
CSeq: 5
Session: 32d66bf00c15ea4a
...

then
ANNOUNCE recognizer with DEFINE-GRAMMAR
ANNOUNCE synthesizer with SPEAK (Cseq: 7)

and bug:
ANNOUNCE rtsp://10.6.6.2/media/speechrecognizer RTSP/1.0
CSeq: 7
Session: 32d66bf00c15ea4a
Content-Type: application/mrcp
Content-Length: 77

SPEAK-COMPLETE 2147483647 COMPLETE MRCP/1.0
Completion-Cause: 000 normal

Notice that speechrecognizer instead of speechsynthesizer is annouced.

I attached full log file. It is rather large. From the beginning there is
successful communication with GVP and at the end there is that with VE.

Cheers
- Vali

Reported by [email protected] on 2009-10-08 12:24:19


- _Attachment: [unimrcpserver-0.zip](https://storage.googleapis.com/google-code-attachments/unimrcp/issue-46/comment-0/unimrcpserver-0.zip)_

pollset field of mrcp_connection_agent_t might be accessed before it is initialized

Originally reported on Google Code with ID 49

This causes acces violation exception to be thrown at the line 211 
(release 0.8,windows) of mrcp_client_connection.c:

if(apt_pollset_wakeup(agent->pollset) != TRUE) {


The following kind of logic will reproduce the problem:
1. create mrcp client (unimrcp_client_create)
2. create mrcp application (mrcp_application_create)
3. register mrcp application (mrcp_client_application_register)
4. start mrcp client (mrcp_client_start)
5. block thread until stack ready notification is received (on_ready)
6. when thread is unblocked create mrcp application session
7. create mrcp application channel
8. add channel to session

9. create "on_ready" handler which unblocks the thread waiting right after 
mrcp_client_start (see 5)


This problem happens because "on_ready" notification is sent when all the 
threads running child tasks of mrcp client are just created not when they 
are actually started and ready. 
So it is possible that when a channel is added to a session (which leads 
to invokation of "mrcp_client_control_message_signal" of 
"mrcp_client_connection.c") the thread which initializes "poolset" in 
"mrcp_client_agent_task_run" may still be running code which is above 
initialization i.e above this line:
agent->pollset = apt_pollset_create((apr_uint32_t)agent-
>max_connection_count,agent->pool);

As a temporary workaround I moved the pollset creation code from 
"mrcp_client_agent_task_run" to "mrcp_client_connection_agent_create". 
This helped and now there is no access violetion problems.

Reported by aabaziev on 2009-10-20 06:48:10

Better apr-iconv support in VC build

Originally reported on Google Code with ID 45

Hi Arsen,

today I tried to build UniMRCP project in release version for the first
time -- like building from scratch. I use apr-iconv in synth plugin so I
noticed that the prepare project in Visual Studio
(build/tools/prepare.vcproj) does not copy entire apr-iconv if present.
apr-iconv consists of the dll which is copied and then of many iconv/*.so
objects containing encoding vectors. (apr-iconv cannot be build as a single
file afaik, it would be great though.)

It would be very convenient if the prepare project copied those files for
us as well. Adding the following two lines would be enough, consider it:

if exist "$(AprIconvDir)\$(ConfigurationName)\iconv" if not exist
"$(SolutionDir)$(ConfigurationName)\bin\iconv" mkdir
"$(SolutionDir)$(ConfigurationName)\bin\iconv"
if exist "$(AprIconvDir)\$(ConfigurationName)\iconv" xcopy
"$(AprIconvDir)\$(ConfigurationName)\iconv\*.so"
"$(SolutionDir)$(ConfigurationName)\bin\iconv\" /Y

Thanks.
- Vali

Reported by [email protected] on 2009-09-28 21:29:17

RTSP_METHOD_DESCRIBE

Originally reported on Google Code with ID 24

Dear Sir, first thanks for your greate job.

I work on the unimrcp with ASR server integration recently,
there is a rtsp method in unimrcp: RTSP_METHOD_DESCRIBE,
I would like to send the DESCRIBE method request from mrcp client in 
another thread that created by myself,
but I have no idea how to get start.. could you give me some guide please?

Reported by chaojenh on 2009-04-01 09:28:52

Problem installing

Originally reported on Google Code with ID 37

What steps will reproduce the problem?
1. At run ./configure.sh as:
 ./configure --enable-pocketsphinx-plugin
--with-pocketsphinx=/usr/local/share/pocketsphinx/
--with-sphinxbase=/usr/local/include/sphinxbase


The script tell me that options are unrecognized, and when I want to
configure with pocketsphinx I haven't got pocketsphinx.xml file.

Thanks

Reported by abel.zafra on 2009-07-21 09:24:01

Closing SIP TCP Socket

Originally reported on Google Code with ID 25

What steps will reproduce the problem?
1. SIP/MRCPv2 client connects to UniMRCP server using TCP as SIP transport
2. Basic MRCP session flow
3. Client tears down SIP TCP connection

TCP socket remains in CLOSE_WAIT state.

Problem is in Sofia-SIP transport layer. Only windows version is affected.

Reported by achaloyan on 2009-04-30 05:48:11

The terminate Remaining RTSP Sessions does not free all sessions

Originally reported on Google Code with ID 26

What steps will reproduce the problem?

1. I launch unimrcpserver 0.6.0 under Windows XP SP3
2. I launch a MRCP client (not unimrcpclient) on an other host which just 
opens and closes 200 sessions (in loop).
3. The MRCP client is stopped by the "C" exit function. 

4. The unimrcpserver detects the TCP disconnection : 

"Close TCP Connection 192.168.1.175:32837"

and launchs the remaining RTSP sessions termination :

"Terminate Remaining RTSP Sessions [117]"

but alls sessions are not free released : I can see that in an external 
program which prints the thread numbers and UDP connections of the 
unimrcpserver.

Remark : the unimrcpserver prints this error "MPF Request Queue is Full".

Reported by amasse.atwork on 2009-05-18 09:56:12

SIP OPTIONS and capabilities of MRCP server

Originally reported on Google Code with ID 19

Please provide the detailed description of the feature being requested and
outline the use cases.

SIP OPTIONS to learn the capabilities of MRCP server has not been
implemented in UniMRCP, yet. Thus, it is not possible to create sessions
between clients, which send SIP OPTIONS, and the server.

Reported by bayramboyraz on 2009-03-11 12:16:39

C++ plugin dll C binding problem

Originally reported on Google Code with ID 15

OK, here is another one.

As I mentioned in 
http://groups.google.com/group/unimrcp/browse_thread/thread/ed49a3aa44befa8
1 under (4) there are problems if the plugin is compiled using C++ (VS05).
Running the server you will see a warning that the DLL (DSO) will not load 
(with a cryptical error: no error!)

You can verify that by changing the demo_synth plugin (as attached) from 
a .c extension to a .cpp extension (which will trigger VS05) to use C++ 
(at least in my setup). In the attached file I added the casts that C++ 
wants to see...

if you add EXTERN_C in mrcp_resource_plugin.h (see attached file) to the
the MRCP_PLUGIN_DECLARE definitio the problem will be solved

#define MRCP_PLUGIN_DECLARE(type) EXTERN_C __declspec(dllexport)

I don't know enough about the C/C++ compilers to tell you why not but to 
me it appears that #define macro's do not get "APT_EXTERN_C-ed"


Reported by garmt.noname on 2009-01-14 12:56:38


- _Attachment: [mrcp_resource_plugin.h](https://storage.googleapis.com/google-code-attachments/unimrcp/issue-15/comment-0/mrcp_resource_plugin.h)_ - _Attachment: [demo_synth_engine.c](https://storage.googleapis.com/google-code-attachments/unimrcp/issue-15/comment-0/demo_synth_engine.c)_

Implement Cepstral Synthesizer Plugin

Originally reported on Google Code with ID 6

Implement new synthesizer plugin using Cepstral Swift engine.

Reported by achaloyan on 2008-08-27 17:16:58

NAT support

Originally reported on Google Code with ID 12

Provide NAT support.

See the discussion below for more info
http://groups.google.com/group/unimrcp/browse_thread/thread/f5945b87e4288684

Reported by achaloyan on 2009-01-13 19:08:53

undefined reference to `apr_pool_mutex_set'

Originally reported on Google Code with ID 38

I have troubling compiling the last tag 0.7.0 in a RHEL4.7 environment. I'm
using apr 1.2.12, apr-util 1.2.12 and sofia sip 1.2.19

When I try to compile I got an error message about can't find a
apr_pool_mutex_set function. I try to find that in the apr source without
success

Step by Step all procedure..

I run configure as following:

./configure --prefix=/home/fabrizio/instaladores/sources/unimrcp/local
--with-apr=/home/fabrizio/instaladores/sources/apr/local/bin/apr-1-config
--with-apr-util=/home/fabrizio/instaladores/sources/apr-util/local/bin/apu-1-config
 --with-sofia-sip=/home/fabrizio/instaladores/sources/sofia-sip/local
--disable-cepstral-plugin

The final report show me:

configure: Report:
configure:   UniMRCP: 0.7.0
configure:   APR: 1.2.12
configure:   APR-Util: 1.2.12
configure:   Sofia-SIP: 1.12.9
configure: Plugins:
configure:   Demo Synthesizer: yes
configure:   Demo Recognizer: yes
configure:   Cepstral: no
configure:   PocketSphinx: no
configure:   Flite: no

Then, when I run "make" I get the following error:


make[2]: Entering directory
`/home/fabrizio/instaladores/sources/unimrcp/tags/0.7.0/platforms/unimrcp-server'
/bin/sh ../../libtool --mode=link --tag=CC gcc  -g -O2  -g -O2 -pthread  
-o unimrcpserver  main.o uni_cmdline.o uni_daemon.o
../../platforms/libunimrcp-server/libunimrcpserver.la 
libtool: link: warning: library `/usr/lib/libsofia-sip-ua.la' was moved.
gcc -g -O2 -g -O2 -o .libs/unimrcpserver main.o uni_cmdline.o uni_daemon.o
 -pthread ../../platforms/libunimrcp-server/.libs/libunimrcpserver.so
/home/fabrizio/instaladores/sources/apr-util/local/lib/libaprutil-1.so
/home/fabrizio/instaladores/sources/apr/local/lib/libapr-1.so -luuid
-lcrypt /usr/lib/libexpat.so
-L/home/fabrizio/instaladores/sources/sofia-sip/local/lib
/usr/lib/libsofia-sip-ua.so -L/usr/kerberos/lib -lssl -lcrypto
-lgssapi_krb5 -lkrb5 -lcom_err -lk5crypto -lresolv -ldl -lz -lrt -lpthread
-Wl,--rpath -Wl,/home/fabrizio/instaladores/sources/unimrcp/local/lib
-Wl,--rpath -Wl,/home/fabrizio/instaladores/sources/apr-util/local/lib
-Wl,--rpath -Wl,/home/fabrizio/instaladores/sources/apr/local/lib
../../platforms/libunimrcp-server/.libs/libunimrcpserver.so: undefined
reference to `apr_pool_mutex_set'
collect2: ld returned 1 exit status
make[2]: *** [unimrcpserver] Error 1
make[2]: Leaving directory
`/home/fabrizio/instaladores/sources/unimrcp/tags/0.7.0/platforms/unimrcp-server'
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory
`/home/fabrizio/instaladores/sources/unimrcp/tags/0.7.0/platforms'
make: *** [install-recursive] Error 1

When I try to find the function, only appears in the file 

unimrcp/tags/0.7.0/libs/apr-toolkit/src/apt_pool.c:34:      
apr_pool_mutex_set(pool,mutex); 

What I'm doing wrong here?


Reported by hazahel on 2009-08-14 22:44:21

C++ compile error in codec_descriptor.h

Originally reported on Google Code with ID 44

Hi Arsen,
I have found a minor issue while compiling our plugin in C++. In inline
function mpf_codec_descriptor_create on line 129, there must be explicit
type-cast in C++. I know the project is written in C, but support for C++
might be useful not only for me.

Patch:
129-    mpf_codec_descriptor_t *descriptor =
apr_palloc(pool,sizeof(mpf_codec_descriptor_t));
129+    mpf_codec_descriptor_t *descriptor = (mpf_codec_descriptor_t
*)apr_palloc(pool,sizeof(mpf_codec_descriptor_t));

Thanks.
- Vali

Reported by [email protected] on 2009-09-28 17:38:17

Some MRCP servers "lie" about "existing connections."

Originally reported on Google Code with ID 41

What version of the product is patch made on?
unimrcp-0.7.0

Please use labels and text to provide additional information.

Certain MRCP servers indicate that they want to re-use an existing
connection, but offer up a different port number for the "existing"
connection.  This creates a situation where the code doesn't examine the
port number and tries to use the original port number instead of the new
one.  This patch will ignore the "existing" tag if the new port number is
not the same as the current one.  Should the patch also check to make sure
the offered port number is not 0 as well in case it is not specified?

Diff of: mrcp_client_connection.c 

< = New
> = Existing

371c371
<                       if(!connection || connection->r_sockaddr->port !=
descriptor->port) {

---
>                       if(!connection) {

Reported by asackheim on 2009-09-09 15:44:05

Stale MRCP sessions upon MRCP link disconnection

Originally reported on Google Code with ID 36

What steps will reproduce the problem?
1. Create a session
2. Request a recognizer resource
3. Do some load grammars
4. Restart the Loquendo MRCPv2 Server
  (***session stalls (no more events) from the point of view of the
application***)
5. Do more load grammars
6. Issue recognize request

What version of the product are you using? On what operating system?
Trunk Release 1042. Windows 2003 Server 32 bit.

Please provide any additional information below.

When MRCP connection is lost he event is logged on the trace on
mrcp_client_connection.c/mrcp_client_agent_messsage_receive and no event is
sent to the application, in fact there is a commented out line that looks
like this:

...
    if(status == APR_EOF || length == 0) {
        apt_log(APT_LOG_MARK,APT_PRIO_INFO,"TCP/MRCPv2 Peer Disconnected
%s",connection->id);
        apt_pollset_remove(agent->pollset,&connection->sock_pfd);
        apr_socket_close(connection->sock);
        connection->sock = NULL;

//      agent->vtable->on_disconnect(agent,connection);
        return TRUE;
    }
...

  I suspect this line would deliver this error event back to the
application but somehow it is not yet implemented.
  Currently there is no workaround for this as the other operations on the
session don't give credible return codes so the only way is to rely on
timeout mechanisms which is rather painful to implement and in practise
disastrous as it may take a long time for the application to spot these
conditions (comparing to the situation where we can rely on a specific
event that can be more "instantaneous").
  Thanks for your time. As always, please feel free to ask more details if
you need.

  Regards.

Reported by cpsoares on 2009-07-15 16:40:37

Implement media processing library

Originally reported on Google Code with ID 2

Implement media processing library with following feature set
- RTP/RTCP stack
- codecs
- resampling

Reported by achaloyan on 2008-04-12 15:31:19

Aculab Client code unimrcp inter operability problem MRCP v1

Originally reported on Google Code with ID 7

What steps will reproduce the problem?
1. Run unimrcp server with demo plugins
2. Run Aculab server compatibility test

What is the expected output? What do you see instead?

Demo synthesis output at the client.

What version of the product are you using? On what operating system?
r682 unimrcp


Please provide any additional information below.
Attached are logs from the server and the aculab clinet code. Relates to
discussion topic Aculab Client

In brief is connected with:

"Today, unimrcp can manage a buffer (received from TCP) which contains
several messages BUT it can not manage uncomplete message.

In the Matthew log, the RTSP which contains the "SPEAK" message is trunked
in two part"



Reported by matthewaylett on 2008-12-12 11:53:15


- _Attachment: [aculab_mrcpv1_error.log3](https://storage.googleapis.com/google-code-attachments/unimrcp/issue-7/comment-0/aculab_mrcpv1_error.log3)_ - _Attachment: [unimrcpserver_aculab_r682.log3](https://storage.googleapis.com/google-code-attachments/unimrcp/issue-7/comment-0/unimrcpserver_aculab_r682.log3)_

RTP port management potential issues

Originally reported on Google Code with ID 34

What steps will reproduce the problem?
1. Declare a port range roughly 2 times the number of ASR + TTS resouces
plus a safe margin ammount of lets say 20 ports.

2. Do stress test with ASR and TTS requests when the number of TTS requests
is for instance 5 times the number of ASR requests for a given time span.

3. The result is that when doing some TTS request the port allocated will
collide with some other request that may be still in progress (for instance
one ASR request).

What version of the product are you using? On what operating system?

Trunk version, but happens on all versions.
The OS is a Windows Server 2003 SP2 32 bit Enterprise Edition.

Please provide any additional information below.

  This happens because in the code, the RTP port management is too simple,
allocating ports "blindly", ie, just increasing 2 ports per request without
knowing if those ports are "available" or not. This can fail is the port
range is too short. What I suggest is a feature request where the port
allocation/deallocation would be controlled, for instance, by a two lists,
one for available ports, the other for ports in use. When a new set of
ports is required this would be taken from the "available ports" list.
These ports would be placed on the "in use" list until the request
terminated. You could provide also a rotation of ports by inserting the
recently used ports on the tail of the "available" list and taking new
ports from this list's head. I can try to provide a patch for this, but I'm
a bit affraid that it can cause side-effects.
  Thanks in advance.

Regards.

Reported by cpsoares on 2009-06-22 18:23:57

Allow DTMF events to be sent from unimrcp client

Originally reported on Google Code with ID 31

I am attaching the patched mpf_rtp_stream.c file which contains added code
to allow unimrcpclient to send DTMF events. Now  the client has to Set bit
mask MEDIA_FRAME_TYPE_EVENT and fill event_frame member of the mpf_frame_t
structure.

Reported by chaitanya.chokkareddy on 2009-06-09 12:46:33


- _Attachment: [mpf_rtp_stream.c](https://storage.googleapis.com/google-code-attachments/unimrcp/issue-31/comment-0/mpf_rtp_stream.c)_

Request-id too short

Originally reported on Google Code with ID 48

Hi Arsen,

we came across another issue while testing UniMRCP server with VoiceEnabler
client. VE uses very long request-ids so UniMRCP fails to parse them --
there is probably an overflow. The problem shows when VE sends

SPEAK 1257698432100 MRCP/1.0

and UniMRCP answers with

MRCP/1.0 2147483647 200 IN-PROGRESS

Let us look to specs. MRCPv2
http://tools.ietf.org/html/draft-ietf-speechsc-mrcpv2-20#section-5.2
says request-id is a 32bit unsigned integer (max 10 digits), but MRCPv1
http://tools.ietf.org/html/rfc4463#section-5.1
does not limit it anyhow.

My notes: Currently request-id is defined as apr_size_t which is defined as
size_t which is not always necessarily 32bit unsigned int. Moreover it is
shorter than request-id sent by some MRCPv1 clients (VoiceEnabler).

Cheers
- Vali

Reported by [email protected] on 2009-10-16 10:36:16

The RECOGNIZE message must only inherit the no redefined SET-PARAMS headers

Originally reported on Google Code with ID 47


C->S :
        SET-PARAMS 1 MRCP/1.0
        N-Best-List-Length: 3

S->C : 
        MRCP/1.0 1 200 COMPLETE

C->S : 

        RECOGNIZE 2 MRCP/1.0
        N-Best-List-Length: 6
        Content-Id: grammar_0
        Content-Type: text/uri-list
        Content-Length: 13

        grammar.grxml


=> In this case, the following code :

if(mrcp_resource_header_property_check(request,RECOGNIZER_HEADER_N_BEST_LIS
T_LENGTH) == TRUE) {
    nbest = recog_header->n_best_list_length);
}

must return 6 BUT today it returs 3.

Reported by amasse.atwork on 2009-10-15 12:45:50

Engine/channel capabilities

Originally reported on Google Code with ID 11

Currently it's not possible to provide resource engine capabilities such as
- max number of simultaneous channels
- supported sampling rates
- etc

Reported by achaloyan on 2009-01-13 18:40:57

Implement MRCPv2 module

Originally reported on Google Code with ID 4

Implement MRCPv2 module by integrating Sofia-SIP library.

Reported by achaloyan on 2008-04-12 15:42:13

prosody-volume and prosody-rate as numbers&relative changes as well as labels

Originally reported on Google Code with ID 18

Please provide the detailed description of the feature being requested and
outline the use cases.


I am entering information only for prosody-volume but it applies also for
prosody-rate.

-------------------------------------------------------

MRCP v2 IETF draft spec. version 17 (
http://tools.ietf.org/html/draft-ietf-speechsc-mrcpv2-17 ) says that:

8.4.7. Prosody-Parameters

   This set of headers defines the prosody of the speech.

   prosody-parameter   =   "Prosody-" prosody-param-name ":"


                           prosody-param-value CRLF


   prosody-param-name is any one of the attribute names under the
   prosody element specified in W3C's Speech Synthesis Markup Language


And W3C's SSML says that ( http://www.w3.org/TR/speech-synthesis/#S3.2.4 )


volume: the volume for the contained text in the range 0.0 to 100.0 (higher
values are louder and specifying a value of zero is equivalent to
specifying "silent"). Legal values are: number, a relative change or
"silent", "x-soft", "soft", "medium", "loud", "x-loud", or "default". The
volume scale is linear amplitude. The default is 100.0. Labels "silent"
through "x-loud" represent a sequence of monotonically non-decreasing
volume levels.

UniMRCP currently supports those values to be given as labels but not
numbers or relative changes.

--------------------------------------------

What version of the product are you using? On what operating system?

UniMRCP 0.4.0 - Windows XP Professional SP3

Reported by bayramboyraz on 2009-03-06 10:23:49

Incorrect error processing

Originally reported on Google Code with ID 13

An appropriate error response must be send to MRCP client in case resource
engine creation fails in a plugin.

See the discussion below for more info.
http://groups.google.com/group/unimrcp/browse_thread/thread/40ed14f64fec8d06

Reported by achaloyan on 2009-01-13 19:16:41

output wave corrupted data

Originally reported on Google Code with ID 30

What steps will reproduce the problem?
1. create MRCP session lets give it name session0.
2. create MRCP channel lets give it name channel0.
3. attach channel0 to session0.
4. create MRCP session lets give it name session1.
5. create MRCP channel lets give it name channel1.
6. attach channel1 to session1.
7. now do any processing before sending speak request for example you may
call sleep function before sending speak.
8. do the previous step for the two channels.
9. now listen to the generated waves for both channels one will be good and
there are no lost frames and the second will be corrupted.


What version of the product are you using? On what operating system?
unimrcp 0.5.0
windows xp

Please provide any additional information below.
attached file is my modification to demo scenario it may help you to figure
out the problem.

Reported by firstmahmoud2002 on 2009-06-08 08:55:37


- _Attachment: [demo_synth_application.c](https://storage.googleapis.com/google-code-attachments/unimrcp/issue-30/comment-0/demo_synth_application.c)_

Modification on MRCP headers

Originally reported on Google Code with ID 17

Please find attached some files extracted form UniMRCP project, on which 
some corrections have been applied and features added. I thought these 
modifications necessary for both generic and recognizer MRCP headers 
processing.
These modifications are resumed below :
- missing "Accept", "Fetch-timeout" "Set-cookie" generic headers
- in mrcp_header_accessor_t structure, the "empty_values" variable
should be replaced by a "apt_bool_t * pointer" variable which may
enable to indicate which header values are required into GET-PARAMS
request (e.g. Vendor-Specific-Parameters)
- missing some V2 recognizer headers (input-type, media-type,
interpret-text)
- adding into mrcp_recog_header.c, a fonction wich returns a pointer
on the completion_cause string table
- moving Fetch-timeout header as a generic one
- separating V1 and V2 completion-cause strings

All these files are stored into the libs/mrcp forlder.

Regards,

Patrick

Reported by pnunes29 on 2009-03-02 14:23:24


- _Attachment: [mrcp_generic_header.h](https://storage.googleapis.com/google-code-attachments/unimrcp/issue-17/comment-0/mrcp_generic_header.h)_ - _Attachment: [mrcp_header_accessor.h](https://storage.googleapis.com/google-code-attachments/unimrcp/issue-17/comment-0/mrcp_header_accessor.h)_ - _Attachment: [mrcp_generic_header.c](https://storage.googleapis.com/google-code-attachments/unimrcp/issue-17/comment-0/mrcp_generic_header.c)_ - _Attachment: [mrcp_header_accessor.c](https://storage.googleapis.com/google-code-attachments/unimrcp/issue-17/comment-0/mrcp_header_accessor.c)_ - _Attachment: [mrcp_recog_header.h](https://storage.googleapis.com/google-code-attachments/unimrcp/issue-17/comment-0/mrcp_recog_header.h)_ - _Attachment: [mrcp_synth_header.h](https://storage.googleapis.com/google-code-attachments/unimrcp/issue-17/comment-0/mrcp_synth_header.h)_ - _Attachment: [mrcp_recog_header.c](https://storage.googleapis.com/google-code-attachments/unimrcp/issue-17/comment-0/mrcp_recog_header.c)_ - _Attachment: [mrcp_recog_resource.c](https://storage.googleapis.com/google-code-attachments/unimrcp/issue-17/comment-0/mrcp_recog_resource.c)_ - _Attachment: [mrcp_synth_header.c](https://storage.googleapis.com/google-code-attachments/unimrcp/issue-17/comment-0/mrcp_synth_header.c)_ - _Attachment: [mrcp_synth_resource.c](https://storage.googleapis.com/google-code-attachments/unimrcp/issue-17/comment-0/mrcp_synth_resource.c)_

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.