]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-10195: [fs_cli] Freeswitch intermittently segfaults #resolve
authorAnthony Minessale <anthm@freeswitch.org>
Thu, 30 Mar 2017 17:07:13 +0000 (12:07 -0500)
committerMike Jerris <mike@jerris.com>
Tue, 11 Apr 2017 18:08:56 +0000 (13:08 -0500)
src/switch_core_media.c

index 7a76ddb1efad7165a11b0e62bbb66015d131ec67..89f8f3a738122553d8eb2e6ea6fd164add7098cc 100644 (file)
@@ -11978,7 +11978,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_wait_for_video_input_params(
        }
        
        if (!switch_channel_test_flag(session->channel, CF_VIDEO_DECODED_READ)) {
-               return SWITCH_STATUS_GENERR;;
+               return SWITCH_STATUS_GENERR;
        }
 
        v_engine = &smh->engines[SWITCH_MEDIA_TYPE_VIDEO];
@@ -12018,7 +12018,17 @@ SWITCH_DECLARE(switch_bool_t) switch_core_session_transcoding(switch_core_sessio
        
        switch(type) {
        case SWITCH_MEDIA_TYPE_AUDIO:
-               transcoding = (session_a->read_codec->implementation->impl_id != session_b->read_codec->implementation->impl_id || session_a->read_impl.decoded_bytes_per_packet != session_b->read_impl.decoded_bytes_per_packet);
+               {
+                       switch_codec_implementation_t read_impl_a = { 0 }, read_impl_b = { 0 };
+
+                       switch_core_session_get_read_impl(session_a, &read_impl_a);
+                       switch_core_session_get_read_impl(session_b, &read_impl_b);
+
+                       if (read_impl_a.impl_id && read_impl_b.impl_id) {
+                               transcoding = (read_impl_a.impl_id != read_impl_b.impl_id || read_impl_a.decoded_bytes_per_packet != read_impl_b.decoded_bytes_per_packet);
+                       }
+               }
+
                break;
        case SWITCH_MEDIA_TYPE_VIDEO:
                transcoding = (switch_channel_test_flag(session_a->channel, CF_VIDEO_DECODED_READ) ||