History

avdevice/decklink_dec: add option to align capture start time

This option is useful for maintaining input synchronization across N different hardware devices deployed for 'N-way' redundancy. The system time of different hardware devices should be synchronized with protocols such as NTP or PTP, before using this option.

Karthick Jeyapal committed 8 years ago

Commit c0ee4e01 parent 449b1dc5 files · +27 −1Browse files

Showing the changes to libavdevice/decklink_dec.cpp (1 of 5 files). Show all

Unified · Split

libavdevice/decklink_dec.cpp+10−0
@@ -703,6 +703,16 @@ HRESULT decklink_input_callback::VideoInputFrameArrived( · 702 unmodified lines
703703 return S_OK;
704704 }
705705
706+ // Drop the frames till system's timestamp aligns with the configured value.
707+ if (0 == ctx->frameCount && cctx->timestamp_align) {
708+ AVRational remainder = av_make_q(av_gettime() % cctx->timestamp_align, 1000000);
709+ AVRational frame_duration = av_inv_q(ctx->video_st->r_frame_rate);
710+ if (av_cmp_q(remainder, frame_duration) > 0) {
711+ ++ctx->dropped;
712+ return S_OK;
713+ }
714+ }
715+
706716 ctx->frameCount++;
707717 if (ctx->audio_pts_source == PTS_SRC_WALLCLOCK || ctx->video_pts_source == PTS_SRC_WALLCLOCK)
708718 wallclock = av_gettime_relative();

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t