projects
/
lcr.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
made lcr_read read frames in 160 bytes packets in rebuffer mode
[lcr.git]
/
chan_lcr.c
diff --git
a/chan_lcr.c
b/chan_lcr.c
index
ff8da54
..
2790cf4
100644
(file)
--- a/
chan_lcr.c
+++ b/
chan_lcr.c
@@
-475,6
+475,14
@@
void apply_opt(struct chan_call *call, char *data)
if (call->bchannel)
bchannel_pipeline(call->bchannel, call->pipeline);
break;
if (call->bchannel)
bchannel_pipeline(call->bchannel, call->pipeline);
break;
+ case 'r':
+ if (opt[1] == '\0') {
+ CERROR(call, call->ast, "Option 'r' (re-buffer 160 bytes) expects no parameter.\n", opt);
+ break;
+ }
+ CDEBUG(call, call->ast, "Option 'r' (re-buffer 160 bytes)");
+ call->rebuffer = 1;
+ break;
#if 0
case 's':
if (opt[1] != '\0') {
#if 0
case 's':
if (opt[1] != '\0') {
@@
-1935,7
+1943,11
@@
static struct ast_frame *lcr_read(struct ast_channel *ast)
return NULL;
}
if (call->pipe[0] > -1) {
return NULL;
}
if (call->pipe[0] > -1) {
- len = read(call->pipe[0], call->read_buff, sizeof(call->read_buff));
+ if (call->rebuffer) {
+ len = read(call->pipe[0], call->read_buff, 160);
+ } else {
+ len = read(call->pipe[0], call->read_buff, sizeof(call->read_buff));
+ }
if (len <= 0) {
close(call->pipe[0]);
call->pipe[0] = -1;
if (len <= 0) {
close(call->pipe[0]);
call->pipe[0] = -1;