diff --git a/src/include/switch_types.h b/src/include/switch_types.h index bc544a3426..4c3a0b9b82 100644 --- a/src/include/switch_types.h +++ b/src/include/switch_types.h @@ -226,7 +226,7 @@ SWITCH_BEGIN_EXTERN_C #define SWITCH_DTMF_LOG_LEN 1000 #define SWITCH_MAX_TRANS 2000 #define SWITCH_CORE_SESSION_MAX_PRIVATES 2 -#define SWITCH_DEFAULT_VIDEO_SIZE 1500 +#define SWITCH_DEFAULT_VIDEO_SIZE 1200 /* Jitter */ #define JITTER_VARIANCE_THRESHOLD 400.0 diff --git a/src/mod/codecs/mod_vpx/mod_vpx.c b/src/mod/codecs/mod_vpx/mod_vpx.c index 08c9b5bb03..066c23ed78 100644 --- a/src/mod/codecs/mod_vpx/mod_vpx.c +++ b/src/mod/codecs/mod_vpx/mod_vpx.c @@ -514,7 +514,7 @@ static switch_status_t switch_vpx_decode(switch_codec_t *codec, switch_frame_t * (!frame->m) && (!context->last_received_complete_picture)) { // possible packet loss switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Packet Loss, skip previous received frame (to avoid crash?)\n"); - switch_goto_status(SWITCH_STATUS_RESTART, end); + switch_goto_status(SWITCH_STATUS_NOTFOUND, end); } context->last_received_timestamp = frame->timestamp; @@ -549,7 +549,7 @@ static switch_status_t switch_vpx_decode(switch_codec_t *codec, switch_frame_t * if (err != VPX_CODEC_OK) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error decoding %" SWITCH_SIZE_T_FMT " bytes, [%d:%d:%s]\n", len, err, decoder->err, decoder->err_detail); - switch_goto_status(SWITCH_STATUS_RESTART, end); + switch_goto_status(SWITCH_STATUS_NOTFOUND, end); } if (vpx_codec_control(decoder, VP8D_GET_FRAME_CORRUPTED, &corrupted) != VPX_CODEC_OK) { @@ -560,8 +560,8 @@ static switch_status_t switch_vpx_decode(switch_codec_t *codec, switch_frame_t * frame->img = (switch_image_t *) vpx_codec_get_frame(decoder, &iter); if (!(frame->img) || corrupted) { - switch_buffer_zero(context->vpx_packet_buffer); - switch_goto_status(SWITCH_STATUS_SUCCESS, end); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "VPX invalid packet\n"); + switch_goto_status(SWITCH_STATUS_NOTFOUND, end); } switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "IMAGE %dx%d %dx%d\n", frame->img->w,frame->img->h, frame->img->d_w, frame->img->d_h); @@ -571,6 +571,11 @@ static switch_status_t switch_vpx_decode(switch_codec_t *codec, switch_frame_t * end: + if (status == SWITCH_STATUS_NOTFOUND) { + switch_buffer_zero(context->vpx_packet_buffer); + switch_set_flag(frame, SFF_WAIT_KEY_FRAME); + } + if (status == SWITCH_STATUS_RESTART) { context->got_key_frame = 0; switch_buffer_zero(context->vpx_packet_buffer); diff --git a/src/switch_core_media.c b/src/switch_core_media.c index 47ee39b12b..f3c4270c4a 100644 --- a/src/switch_core_media.c +++ b/src/switch_core_media.c @@ -9714,7 +9714,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_video_frame(switch_core ok = SWITCH_FALSE; } } - bp->ping_frame = NULL;; + bp->ping_frame = NULL; switch_mutex_unlock(bp->read_mutex); }