fix video read frame function to behave like the audio one when waiting for codecs

This commit is contained in:
Anthony Minessale 2011-06-24 14:49:36 -05:00
parent 5db3a9b071
commit 12c680d38f
1 changed files with 6 additions and 2 deletions

View File

@ -816,6 +816,7 @@ static switch_status_t sofia_read_video_frame(switch_core_session_t *session, sw
{
private_object_t *tech_pvt = (private_object_t *) switch_core_session_get_private(session);
switch_channel_t *channel = switch_core_session_get_channel(session);
uint32_t sanity = 1000;
switch_assert(tech_pvt != NULL);
@ -823,10 +824,13 @@ static switch_status_t sofia_read_video_frame(switch_core_session_t *session, sw
return SWITCH_STATUS_FALSE;
}
while (!(tech_pvt->video_read_codec.implementation && switch_rtp_ready(tech_pvt->video_rtp_session))) {
if (switch_channel_ready(channel)) {
while (!(tech_pvt->video_read_codec.implementation && switch_rtp_ready(tech_pvt->video_rtp_session) && !switch_channel_test_flag(channel, CF_REQ_MEDIA))) {
switch_ivr_parse_all_messages(tech_pvt->session);
if (--sanity && switch_channel_ready(channel)) {
switch_yield(10000);
} else {
switch_channel_hangup(tech_pvt->channel, SWITCH_CAUSE_RECOVERY_ON_TIMER_EXPIRE);
return SWITCH_STATUS_GENERR;
}
}