]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
core tweaks
authorAnthony Minessale <anthony.minessale@gmail.com>
Wed, 28 Jun 2006 19:12:56 +0000 (19:12 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Wed, 28 Jun 2006 19:12:56 +0000 (19:12 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@1695 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/codecs/mod_l16/mod_l16.c
src/switch_core.c

index 71a0700f6f1146478a3e668f3736baadfbfcb594..3c033c0b5918746725bd423718ca5c80903e51c9 100644 (file)
@@ -57,7 +57,6 @@ static switch_status_t switch_raw_encode(switch_codec_t *codec,
                                                                           void *encoded_data,
                                                                           uint32_t *encoded_data_len, uint32_t *encoded_rate, unsigned int *flag)
 {
-
        /* NOOP indicates that the audio in is already the same as the audio out, so no conversion was necessary. */
        if (codec && other_codec && codec->implementation->samples_per_second != other_codec->implementation->samples_per_second) {
                memcpy(encoded_data, decoded_data, decoded_data_len);
index 0a3a8312dedf4be546d3fd2ddb2701e210a8484b..795b15fce6d9666999e18bcceba79dfcf1483c93 100644 (file)
@@ -1057,9 +1057,13 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_frame(switch_core_sessi
                                                                                                                         int timeout, int stream_id)
 {
        switch_io_event_hook_read_frame_t *ptr;
-       switch_status_t status = SWITCH_STATUS_FALSE;
-       int need_codec = 0, perfect = 0;
-
+       switch_status_t status;
+       int need_codec, perfect;
+ top:
+       
+       status = SWITCH_STATUS_FALSE;
+       need_codec = perfect = 0;
+       
        assert(session != NULL);
        *frame = NULL;
 
@@ -1180,18 +1184,22 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_frame(switch_core_sessi
                                        session->raw_read_frame.rate = (*frame)->rate;
                                } else {
                                        session->raw_read_frame.datalen = (uint32_t)switch_buffer_read(session->raw_read_buffer,
-                                                                                                                                                session->raw_read_frame.data,
-                                                                                                                                                session->read_codec->implementation->
-                                                                                                                                                bytes_per_frame);
+                                                                                                                                                                  session->raw_read_frame.data,
+                                                                                                                                                                  session->read_codec->implementation->bytes_per_frame);
+                                       
                                        session->raw_read_frame.rate = session->read_codec->implementation->samples_per_second;
                                        enc_frame = &session->raw_read_frame;
                                }
                                session->enc_read_frame.datalen = session->enc_read_frame.buflen;
+                               assert(session->read_codec != NULL);                            
+                               assert(enc_frame != NULL);
+                               assert(enc_frame->data != NULL);
+                               
                                status = switch_core_codec_encode(session->read_codec,
                                                                                                  enc_frame->codec,
                                                                                                  enc_frame->data,
                                                                                                  enc_frame->datalen,
-                                                                                                 enc_frame->codec->implementation->samples_per_second,
+                                                                                                 session->read_codec->implementation->samples_per_second,
                                                                                                  session->enc_read_frame.data,
                                                                                                  &session->enc_read_frame.datalen,
                                                                                                  &session->enc_read_frame.rate, 
@@ -1215,6 +1223,8 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_frame(switch_core_sessi
                                        status = SWITCH_STATUS_GENERR;
                                        break;
                                }
+                       } else {
+                               goto top;
                        }
                }
        }