mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-28 20:53:54 +02:00
avdevice/decklink: add level_a configuration option
Reviewed-by: Marton Balint <cus@passwd.hu> Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
This commit is contained in:
parent
5f3df7afa6
commit
13460af456
@ -216,6 +216,11 @@ Enable Square Division Quad Split mode for Quad-link SDI output.
|
||||
Must be @samp{unset}, @samp{true} or @samp{false}.
|
||||
Defaults to @option{unset}.
|
||||
|
||||
@item level_a
|
||||
Enable SMPTE Level A mode on the used output.
|
||||
Must be @samp{unset}, @samp{true} or @samp{false}.
|
||||
Defaults to @option{unset}.
|
||||
|
||||
@end table
|
||||
|
||||
@subsection Examples
|
||||
|
@ -230,6 +230,23 @@ int ff_decklink_set_configs(AVFormatContext *avctx,
|
||||
}
|
||||
}
|
||||
|
||||
if (direction == DIRECTION_OUT && cctx->level_a >= 0) {
|
||||
DECKLINK_BOOL level_a_supported = false;
|
||||
|
||||
if (ctx->attr->GetFlag(BMDDeckLinkSupportsSMPTELevelAOutput, &level_a_supported) != S_OK)
|
||||
level_a_supported = false;
|
||||
|
||||
if (level_a_supported) {
|
||||
res = ctx->cfg->SetFlag(bmdDeckLinkConfigSMPTELevelAOutput, cctx->level_a);
|
||||
if (res != S_OK)
|
||||
av_log(avctx, AV_LOG_WARNING, "Setting SMPTE levelA failed.\n");
|
||||
else
|
||||
av_log(avctx, AV_LOG_VERBOSE, "Successfully set SMPTE levelA.\n");
|
||||
} else {
|
||||
av_log(avctx, AV_LOG_WARNING, "Unable to set SMPTE levelA mode, because it is not supported.\n");
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -50,6 +50,7 @@ struct decklink_cctx {
|
||||
int duplex_mode;
|
||||
int link;
|
||||
int sqd;
|
||||
int level_a;
|
||||
DecklinkPtsSource audio_pts_source;
|
||||
DecklinkPtsSource video_pts_source;
|
||||
int audio_input;
|
||||
|
@ -44,6 +44,10 @@ static const AVOption options[] = {
|
||||
{ "unset" , NULL , 0 , AV_OPT_TYPE_CONST , { .i64 = -1 }, 0, 0, ENC, "sqd"},
|
||||
{ "false" , NULL , 0 , AV_OPT_TYPE_CONST , { .i64 = 0 }, 0, 0, ENC, "sqd"},
|
||||
{ "true" , NULL , 0 , AV_OPT_TYPE_CONST , { .i64 = 1 }, 0, 0, ENC, "sqd"},
|
||||
{ "level_a" , "set SMPTE LevelA" , OFFSET(level_a) , AV_OPT_TYPE_INT, { .i64 = -1 }, -1,1, ENC, "level_a"},
|
||||
{ "unset" , NULL , 0 , AV_OPT_TYPE_CONST , { .i64 = -1 }, 0, 0, ENC, "level_a"},
|
||||
{ "false" , NULL , 0 , AV_OPT_TYPE_CONST , { .i64 = 0 }, 0, 0, ENC, "level_a"},
|
||||
{ "true" , NULL , 0 , AV_OPT_TYPE_CONST , { .i64 = 1 }, 0, 0, ENC, "level_a"},
|
||||
{ "timing_offset", "genlock timing pixel offset", OFFSET(timing_offset), AV_OPT_TYPE_INT, { .i64 = INT_MIN }, INT_MIN, INT_MAX, ENC, "timing_offset"},
|
||||
{ "unset" , NULL , 0 , AV_OPT_TYPE_CONST, { .i64 = INT_MIN }, 0, 0, ENC, "timing_offset"},
|
||||
{ NULL },
|
||||
|
Loading…
Reference in New Issue
Block a user