FS-7641 fix seg from wrongly nulling ping_frame

This commit is contained in:
Anthony Minessale 2015-06-13 03:13:55 -05:00
parent 7c94fc1680
commit 0511896444
1 changed files with 8 additions and 8 deletions

View File

@ -10476,20 +10476,21 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_write_video_frame(switch_cor
switch_frame_t bug_frame = { 0 }; switch_frame_t bug_frame = { 0 };
bug_frame.img = img; bug_frame.img = img;
bp->ping_frame = &bug_frame;
if (bp->callback && switch_test_flag(bp, SMBF_WRITE_VIDEO_PING)) { if (bp->callback && switch_test_flag(bp, SMBF_WRITE_VIDEO_PING)) {
bp->ping_frame = &bug_frame;
if (bp->callback(bp, bp->user_data, SWITCH_ABC_TYPE_WRITE_VIDEO_PING) == SWITCH_FALSE if (bp->callback(bp, bp->user_data, SWITCH_ABC_TYPE_WRITE_VIDEO_PING) == SWITCH_FALSE
|| (bp->stop_time && bp->stop_time <= switch_epoch_time_now(NULL))) { || (bp->stop_time && bp->stop_time <= switch_epoch_time_now(NULL))) {
ok = SWITCH_FALSE; ok = SWITCH_FALSE;
} }
bp->ping_frame = NULL;
} }
if (switch_core_media_bug_test_flag(bp, SMBF_SPY_VIDEO_STREAM_BLEG) && !patched) { if (switch_core_media_bug_test_flag(bp, SMBF_SPY_VIDEO_STREAM_BLEG) && !patched) {
switch_core_media_bug_patch_spy_frame(bp, bp->ping_frame->img, SWITCH_RW_WRITE); switch_core_media_bug_patch_spy_frame(bp, img, SWITCH_RW_WRITE);
} }
bp->ping_frame = NULL;
} }
if (ok == SWITCH_FALSE) { if (ok == SWITCH_FALSE) {
@ -10704,21 +10705,20 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_video_frame(switch_core
if (bp->ready && (*frame) && (*frame)->img && if (bp->ready && (*frame) && (*frame)->img &&
(switch_test_flag(bp, SMBF_READ_VIDEO_PING) || (switch_core_media_bug_test_flag(bp, SMBF_SPY_VIDEO_STREAM) && !patched))) { (switch_test_flag(bp, SMBF_READ_VIDEO_PING) || (switch_core_media_bug_test_flag(bp, SMBF_SPY_VIDEO_STREAM) && !patched))) {
bp->ping_frame = *frame;
if (bp->callback && switch_test_flag(bp, SMBF_READ_VIDEO_PING)) { if (bp->callback && switch_test_flag(bp, SMBF_READ_VIDEO_PING)) {
bp->ping_frame = *frame;
if (bp->callback(bp, bp->user_data, SWITCH_ABC_TYPE_READ_VIDEO_PING) == SWITCH_FALSE if (bp->callback(bp, bp->user_data, SWITCH_ABC_TYPE_READ_VIDEO_PING) == SWITCH_FALSE
|| (bp->stop_time && bp->stop_time <= switch_epoch_time_now(NULL))) { || (bp->stop_time && bp->stop_time <= switch_epoch_time_now(NULL))) {
ok = SWITCH_FALSE; ok = SWITCH_FALSE;
} }
bp->ping_frame = NULL;
} }
if (switch_core_media_bug_test_flag(bp, SMBF_SPY_VIDEO_STREAM) && !patched) { if (switch_core_media_bug_test_flag(bp, SMBF_SPY_VIDEO_STREAM) && !patched) {
switch_core_media_bug_patch_spy_frame(bp, (*frame)->img, SWITCH_RW_READ); switch_core_media_bug_patch_spy_frame(bp, (*frame)->img, SWITCH_RW_READ);
} }
bp->ping_frame = NULL;
} }
if (ok == SWITCH_FALSE) { if (ok == SWITCH_FALSE) {