FS-7500: add SFF_USE_VIDEO_TIMESTAMP to tell video write frame if it needs to use a timer or not for timestamps

This commit is contained in:
Anthony Minessale 2014-11-18 17:36:55 -06:00 committed by Michael Jerris
parent 0cd5658caa
commit 22020c86cb
4 changed files with 18 additions and 11 deletions

View File

@ -1498,7 +1498,8 @@ typedef enum {
SFF_WAIT_KEY_FRAME = (1 << 12),
SFF_RAW_RTP_PARSE_FRAME = (1 << 13),
SFF_PICTURE_RESET = (1 << 14),
SFF_SAME_IMAGE = (1 << 15)
SFF_SAME_IMAGE = (1 << 15),
SFF_USE_VIDEO_TIMESTAMP = (1 << 16)
} switch_frame_flag_enum_t;
typedef uint32_t switch_frame_flag_t;

View File

@ -553,7 +553,9 @@ end:
switch_set_flag(frame, SFF_WAIT_KEY_FRAME);
}
if (!frame->img) {
if (frame->img) {
switch_set_flag(frame, SFF_USE_VIDEO_TIMESTAMP);
} else {
status = SWITCH_STATUS_MORE_DATA;
}

View File

@ -553,7 +553,9 @@ end:
switch_buffer_zero(context->vpx_packet_buffer);
}
if (!frame->img) {
if (frame->img) {
switch_set_flag(frame, SFF_USE_VIDEO_TIMESTAMP);
} else {
status = SWITCH_STATUS_MORE_DATA;
}

View File

@ -4597,8 +4597,6 @@ SWITCH_DECLARE(void) switch_core_media_end_video_function(switch_core_session_t
}
}
>>>>>>> another refactoring pass, temp code still in place, WORK IN PROGRESS
//?
#define RA_PTR_LEN 512
SWITCH_DECLARE(switch_status_t) switch_core_media_proxy_remote_addr(switch_core_session_t *session, const char *sdp_str)
@ -9589,17 +9587,21 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_write_video_frame(switch_cor
return raw_write_video(session, frame, flags, stream_id);
}
if (!(timer = switch_core_media_get_timer(session, SWITCH_MEDIA_TYPE_VIDEO))) {
if (!switch_test_flag(frame, SFF_USE_VIDEO_TIMESTAMP)) {
if (!smh->video_timer.timer_interface) {
switch_core_timer_init(&smh->video_timer, "soft", 1, 90, switch_core_session_get_pool(session));
if (!(timer = switch_core_media_get_timer(session, SWITCH_MEDIA_TYPE_VIDEO))) {
if (!smh->video_timer.timer_interface) {
switch_core_timer_init(&smh->video_timer, "soft", 1, 90, switch_core_session_get_pool(session));
}
timer = &smh->video_timer;
}
timer = &smh->video_timer;
frame->timestamp = timer->samplecount;
}
frame->timestamp = timer->samplecount;
frame->flags &= ~SFF_SAME_IMAGE;
switch_clear_flag(frame, SFF_SAME_IMAGE);
do {
frame->datalen = SWITCH_DEFAULT_VIDEO_SIZE;