avdevice/decklink: refactor ff_decklink_set_format function
This is done to enable input format autodetection in decklink_dec. Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
parent
0e7865ce41
commit
aa7b0329ff
4 changed files with 35 additions and 14 deletions
|
@ -148,23 +148,12 @@ static DECKLINK_BOOL field_order_eq(enum AVFieldOrder field_order, BMDFieldDomin
|
|||
return false;
|
||||
}
|
||||
|
||||
int ff_decklink_set_format(AVFormatContext *avctx,
|
||||
int width, int height,
|
||||
int tb_num, int tb_den,
|
||||
enum AVFieldOrder field_order,
|
||||
decklink_direction_t direction, int num)
|
||||
{
|
||||
int ff_decklink_set_configs(AVFormatContext *avctx,
|
||||
decklink_direction_t direction) {
|
||||
struct decklink_cctx *cctx = (struct decklink_cctx *)avctx->priv_data;
|
||||
struct decklink_ctx *ctx = (struct decklink_ctx *)cctx->ctx;
|
||||
BMDDisplayModeSupport support;
|
||||
IDeckLinkDisplayModeIterator *itermode;
|
||||
IDeckLinkDisplayMode *mode;
|
||||
int i = 1;
|
||||
HRESULT res;
|
||||
|
||||
av_log(avctx, AV_LOG_DEBUG, "Trying to find mode for frame size %dx%d, frame timing %d/%d, field order %d, direction %d, mode number %d, format code %s\n",
|
||||
width, height, tb_num, tb_den, field_order, direction, num, (cctx->format_code) ? cctx->format_code : "(unset)");
|
||||
|
||||
if (ctx->duplex_mode) {
|
||||
DECKLINK_BOOL duplex_supported = false;
|
||||
|
||||
|
@ -181,7 +170,6 @@ int ff_decklink_set_format(AVFormatContext *avctx,
|
|||
av_log(avctx, AV_LOG_WARNING, "Unable to set duplex mode, because it is not supported.\n");
|
||||
}
|
||||
}
|
||||
|
||||
if (direction == DIRECTION_IN) {
|
||||
int ret;
|
||||
ret = decklink_select_input(avctx, bmdDeckLinkConfigAudioInputConnection);
|
||||
|
@ -190,6 +178,28 @@ int ff_decklink_set_format(AVFormatContext *avctx,
|
|||
ret = decklink_select_input(avctx, bmdDeckLinkConfigVideoInputConnection);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ff_decklink_set_format(AVFormatContext *avctx,
|
||||
int width, int height,
|
||||
int tb_num, int tb_den,
|
||||
enum AVFieldOrder field_order,
|
||||
decklink_direction_t direction, int num)
|
||||
{
|
||||
struct decklink_cctx *cctx = (struct decklink_cctx *)avctx->priv_data;
|
||||
struct decklink_ctx *ctx = (struct decklink_ctx *)cctx->ctx;
|
||||
BMDDisplayModeSupport support;
|
||||
IDeckLinkDisplayModeIterator *itermode;
|
||||
IDeckLinkDisplayMode *mode;
|
||||
int i = 1;
|
||||
HRESULT res;
|
||||
|
||||
av_log(avctx, AV_LOG_DEBUG, "Trying to find mode for frame size %dx%d, frame timing %d/%d, field order %d, direction %d, mode number %d, format code %s\n",
|
||||
width, height, tb_num, tb_den, field_order, direction, num, (cctx->format_code) ? cctx->format_code : "(unset)");
|
||||
|
||||
if (direction == DIRECTION_IN) {
|
||||
res = ctx->dli->GetDisplayModeIterator (&itermode);
|
||||
} else {
|
||||
res = ctx->dlo->GetDisplayModeIterator (&itermode);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue