made lcr_read read frames in 160 bytes packets in rebuffer mode
[lcr.git] / chan_lcr.c
index ff8da54..2790cf4 100644 (file)
@@ -475,6 +475,14 @@ void apply_opt(struct chan_call *call, char *data)
                        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') {
@@ -1935,7 +1943,11 @@ static struct ast_frame *lcr_read(struct ast_channel *ast)
                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;