CF_HANGUP_HELD,
CF_CONFERENCE_RESET_MEDIA,
CF_VIDEO_DECODED_READ,
+ CF_VIDEO_DEBUG_READ,
+ CF_VIDEO_DEBUG_WRITE,
/* WARNING: DO NOT ADD ANY FLAGS BELOW THIS LINE */
/* IF YOU ADD NEW ONES CHECK IF THEY SHOULD PERSIST OR ZERO THEM IN switch_core_session.c switch_core_session_request_xml() */
CF_FLAG_MAX
}
switch_channel_set_flag(channel, CF_VIDEO_DECODED_READ);
+ switch_channel_set_flag(channel, CF_VIDEO_DEBUG_READ);
while (switch_channel_ready(channel)) {
switch_status_t status = switch_core_session_read_video_frame(session, &frame, SWITCH_IO_FLAG_NONE, 0);
continue;
}
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "seq: %d ts: %ld len: %4d %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x mark: %d %s\n",
- frame->seq, frame->timestamp, frame->datalen,
- *((uint8_t *)frame->data), *((uint8_t *)frame->data + 1),
- *((uint8_t *)frame->data + 2), *((uint8_t *)frame->data + 3),
- *((uint8_t *)frame->data + 4), *((uint8_t *)frame->data + 5),
- *((uint8_t *)frame->data + 6), *((uint8_t *)frame->data + 7),
- *((uint8_t *)frame->data + 8), *((uint8_t *)frame->data + 9),
- *((uint8_t *)frame->data + 10), frame->m, switch_test_flag(frame, SFF_CNG) ? " CNG" : "");
-
if (switch_test_flag(frame, SFF_CNG) || frame->datalen < 3) {
continue;
}
static switch_status_t consume_partition(vpx_context_t *context, switch_frame_t *frame)
{
- if (!context->pkt) context->pkt = vpx_codec_get_cx_data(&context->encoder, &context->iter);
+ if (!context->pkt) {
+ context->pkt = vpx_codec_get_cx_data(&context->encoder, &context->iter);
+ context->pkt_pos = 0;
+ }
- if (context->pkt) {
+ // if (context->pkt) {
// if (context->pkt->kind == VPX_CODEC_CX_FRAME_PKT && (context->pkt->data.frame.flags & VPX_FRAME_IS_KEY) && context->pkt_pos == 0) {
// switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "============================Got a VP8 Key Frame size:[%d]===================================\n", (int)context->pkt->data.frame.sz);
// }
// switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "size:%d flag: %x part_id: %d pts: %lld duration:%ld\n",
// (int)context->pkt->data.frame.sz, context->pkt->data.frame.flags, context->pkt->data.frame.partition_id, context->pkt->data.frame.pts, context->pkt->data.frame.duration);
- }
+ //}
if (!context->pkt || context->pkt_pos >= context->pkt->data.frame.sz - 1 || context->pkt->kind != VPX_CODEC_CX_FRAME_PKT) {
frame->datalen = 0;
switch_channel_execute_on(session->channel, "execute_on_media_timeout");
switch_goto_status(SWITCH_STATUS_SUCCESS, end);
}
-
+
switch_channel_hangup(session->channel, SWITCH_CAUSE_MEDIA_TIMEOUT);
}
if (!(*frame)) {
goto done;
}
+
+ if (switch_channel_test_flag(session->channel, CF_VIDEO_DEBUG_READ)) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "seq: %d ts: %ld len: %4d %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x mark: %d %s\n",
+ (*frame)->seq, (*frame)->timestamp, (*frame)->datalen,
+ *((uint8_t *)(*frame)->data), *((uint8_t *)(*frame)->data + 1),
+ *((uint8_t *)(*frame)->data + 2), *((uint8_t *)(*frame)->data + 3),
+ *((uint8_t *)(*frame)->data + 4), *((uint8_t *)(*frame)->data + 5),
+ *((uint8_t *)(*frame)->data + 6), *((uint8_t *)(*frame)->data + 7),
+ *((uint8_t *)(*frame)->data + 8), *((uint8_t *)(*frame)->data + 9),
+ *((uint8_t *)(*frame)->data + 10), (*frame)->m, switch_test_flag((*frame), SFF_CNG) ? " CNG" : "");
+ }
+
if (switch_test_flag(*frame, SFF_CNG)) {
status = SWITCH_STATUS_SUCCESS;
switch_channel_clear_flag(session->channel, CF_VIDEO_ECHO);
switch_channel_clear_flag(session->channel, CF_VIDEO_PASSIVE);
switch_channel_clear_flag(session->channel, CF_VIDEO_DECODED_READ);
+ switch_channel_clear_flag(session->channel, CF_VIDEO_DEBUG_READ);
switch_core_session_refresh_video(session);
session->image_write_callback = NULL;
session->image_write_callback_user_data = NULL;
}
if (rtp_session->flags[SWITCH_RTP_FLAG_VIDEO] && !rtp_session->flags[SWITCH_RTP_FLAG_PROXY_MEDIA]) {
- pt = 100000;
+ pt = 200000;
}
- if (using_ice(rtp_session)) {
- pt = 20000;
- }
+ //if (using_ice(rtp_session)) {
+ // pt = 20000;
+ //}
poll_status = switch_poll(rtp_session->read_pollfd, 1, &fdr, pt);
-
- if (rtp_session->dtmf_data.out_digit_dur > 0) {
+ if (!rtp_session->flags[SWITCH_RTP_FLAG_VIDEO] && rtp_session->dtmf_data.out_digit_dur > 0) {
return_cng_frame();
}