]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
update
authorAnthony Minessale <anthony.minessale@gmail.com>
Thu, 15 Mar 2007 00:36:14 +0000 (00:36 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Thu, 15 Mar 2007 00:36:14 +0000 (00:36 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4598 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/include/switch_core.h
src/include/switch_module_interfaces.h
src/mod/applications/mod_conference/mod_conference.c
src/mod/endpoints/mod_portaudio/mod_portaudio.c
src/switch_core.c
src/switch_ivr.c

index e784f427ce03bf82df75ff3b1e26d8a9a938518a..16d69baae0aff8818b9b9db5a1d5c8b62652db53 100644 (file)
@@ -1109,14 +1109,18 @@ SWITCH_DECLARE(void) switch_core_db_test_reactive(switch_core_db_t *db, char *te
 /*! 
   \brief Open a media file using file format modules
   \param fh a file handle to use
+  \param codec_imp the codec implementation being used
   \param file_path the path to the file
   \param flags read/write flags
   \param pool the pool to use (NULL for new pool)
   \return SWITCH_STATUS_SUCCESS if the file is opened
   \note the loadable module used is chosen based on the file extension
 */
-SWITCH_DECLARE(switch_status_t) switch_core_file_open(switch_file_handle_t *fh, char *file_path, unsigned int flags, switch_memory_pool_t *pool);
-
+SWITCH_DECLARE(switch_status_t) switch_core_file_open(switch_file_handle_t *fh, 
+                                                                                                         const switch_codec_implementation_t *codec_imp,
+                                                                                                         char *file_path, 
+                                                                                                         unsigned int flags,
+                                                                                                         switch_memory_pool_t *pool);
 /*! 
   \brief Read media from a file handle
   \param fh the file handle to read from (must be initilized by you memset all 0 for read, fill in channels and rate for write)
index c7ee72fe5ee4e849664ecf0db38304bbb680ac39..13fb40026edb95e632761f51c3801618e34480a3 100644 (file)
@@ -311,6 +311,8 @@ struct switch_file_handle {
        switch_memory_pool_t *memory_pool;
        /*! private data for the format module to store handle specific info */
        void *private_info;
+       char *handler;
+       const switch_codec_implementation_t *codec_imp;
        int64_t pos;
        switch_buffer_t *audio_buffer;
     uint32_t thresh;
index 57ea39e724eba09d96523aad79b1948f3c32e9fc..2b71b560b7c0d9a73eaac3f310cce8063577811d 100644 (file)
@@ -1781,6 +1781,7 @@ static void *SWITCH_THREAD_FUNC conference_record_thread_run(switch_thread_t *th
        }
 
        if (switch_core_file_open(&fh, 
+                                                         NULL,
                                                          rec->path, 
                                                          SWITCH_FILE_FLAG_WRITE | SWITCH_FILE_DATA_SHORT, 
                                                          rec->pool) != SWITCH_STATUS_SUCCESS) {
@@ -1957,6 +1958,7 @@ static switch_status_t conference_play_file(conference_obj_t *conference, char *
 
     /* Open the file */
     if (switch_core_file_open(&fnode->fh, 
+                                                         NULL,
                               file, 
                               SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, 
                               pool) != SWITCH_STATUS_SUCCESS) {
@@ -2042,6 +2044,7 @@ static switch_status_t conference_member_play_file(conference_member_t *member,
 
         /* Open the file */
         if (switch_core_file_open(&fnode->fh, 
+                                                                 switch_core_session_get_read_codec(member->session)->implementation,
                                   file, 
                                   SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, 
                                   pool) != SWITCH_STATUS_SUCCESS) {
index bc1a8115048351366af788c1bf15aff7542cfd90..6ec8bc37c2efb5e6e51b9ddd81255efaffe5016c 100644 (file)
@@ -225,6 +225,7 @@ static switch_status_t channel_on_init(switch_core_session_t *session)
             switch_set_flag_locked((&globals), GFLAG_RING);
             if (ring_file) {
                 if (switch_core_file_open(&fh,
+                                                                                 globals.read_codec.implementation,
                                           ring_file,
                                           SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT,
                                           NULL) == SWITCH_STATUS_SUCCESS) {
@@ -588,6 +589,7 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch
                 }
 
                 if (switch_core_file_open(&tech_pvt->fh,
+                                                                                 globals.read_codec.implementation,
                                           tech_pvt->hold_file,
                                           SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT,
                                           switch_core_session_get_pool(tech_pvt->session)) != SWITCH_STATUS_SUCCESS) {
index d8d6f2f03525efb360d7eab9afd20b20b69d2233..c760fd0244e11dedc13f9f0337b8c8756651a1b7 100644 (file)
@@ -1014,8 +1014,11 @@ SWITCH_DECLARE(switch_status_t) switch_core_codec_destroy(switch_codec_t *codec)
        return SWITCH_STATUS_SUCCESS;
 }
 
-SWITCH_DECLARE(switch_status_t) switch_core_file_open(switch_file_handle_t *fh, char *file_path, unsigned int flags,
-                                                                                                       switch_memory_pool_t *pool)
+SWITCH_DECLARE(switch_status_t) switch_core_file_open(switch_file_handle_t *fh, 
+                                                                                                         const switch_codec_implementation_t *codec_imp,
+                                                                                                         char *file_path, 
+                                                                                                         unsigned int flags,
+                                                                                                         switch_memory_pool_t *pool)
 {
        char *ext;
        switch_status_t status;
@@ -1049,6 +1052,12 @@ SWITCH_DECLARE(switch_status_t) switch_core_file_open(switch_file_handle_t *fh,
                switch_set_flag(fh, SWITCH_FILE_FLAG_FREE_POOL);
        }
 
+       if (rhs) {
+               fh->handler = switch_core_strdup(fh->memory_pool, rhs);
+       }
+
+       fh->codec_imp = codec_imp;
+       
        return fh->file_interface->file_open(fh, file_path);
 }
 
index c1c7b8e763ab89fa5feade3cc18be218e2689f22..487c3b1da2cffe14ea41e50370bb24ec75b3c892 100644 (file)
@@ -390,6 +390,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_record_file(switch_core_session_t *se
 
 
        if (switch_core_file_open(fh,
+                                                         read_codec->implementation,
                                                          file,
                                                          SWITCH_FILE_FLAG_WRITE | SWITCH_FILE_DATA_SHORT,
                                                          switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) {
@@ -628,6 +629,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_record_session(switch_core_session_t
 
 
     if (switch_core_file_open(fh,
+                                                         read_codec->implementation,
                               file,
                               SWITCH_FILE_FLAG_WRITE | SWITCH_FILE_DATA_SHORT,
                               switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) {
@@ -1155,6 +1157,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_play_file(switch_core_session_t *sess
        }
        
        if (switch_core_file_open(fh,
+                                                         read_codec->implementation,
                                                          file,
                                                          SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT,
                                                          switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) {
@@ -2854,6 +2857,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess
                                                        ringback.fhb.channels = read_codec->implementation->number_of_channels;
                                                        ringback.fhb.samplerate = read_codec->implementation->samples_per_second;
                                                        if (switch_core_file_open(&ringback.fhb,
+                                                                                                         read_codec->implementation,
                                                                                                          ringback_data,
                                                                                                          SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT,
                                                                                                          switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) {