|
|
@@ -148,23 +148,12 @@ static DECKLINK_BOOL field_order_eq(enum AVFieldOrder field_order, BMDFieldDomin |
|
|
return false; |
|
|
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_cctx *cctx = (struct decklink_cctx *)avctx->priv_data; |
|
|
struct decklink_ctx *ctx = (struct decklink_ctx *)cctx->ctx; |
|
|
struct decklink_ctx *ctx = (struct decklink_ctx *)cctx->ctx; |
|
|
BMDDisplayModeSupport support; |
|
|
|
|
|
IDeckLinkDisplayModeIterator *itermode; |
|
|
|
|
|
IDeckLinkDisplayMode *mode; |
|
|
|
|
|
int i = 1; |
|
|
|
|
|
HRESULT res; |
|
|
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) { |
|
|
if (ctx->duplex_mode) { |
|
|
DECKLINK_BOOL duplex_supported = false; |
|
|
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"); |
|
|
av_log(avctx, AV_LOG_WARNING, "Unable to set duplex mode, because it is not supported.\n"); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (direction == DIRECTION_IN) { |
|
|
if (direction == DIRECTION_IN) { |
|
|
int ret; |
|
|
int ret; |
|
|
ret = decklink_select_input(avctx, bmdDeckLinkConfigAudioInputConnection); |
|
|
ret = decklink_select_input(avctx, bmdDeckLinkConfigAudioInputConnection); |
|
|
@@ -190,6 +178,28 @@ int ff_decklink_set_format(AVFormatContext *avctx, |
|
|
ret = decklink_select_input(avctx, bmdDeckLinkConfigVideoInputConnection); |
|
|
ret = decklink_select_input(avctx, bmdDeckLinkConfigVideoInputConnection); |
|
|
if (ret < 0) |
|
|
if (ret < 0) |
|
|
return ret; |
|
|
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); |
|
|
res = ctx->dli->GetDisplayModeIterator (&itermode); |
|
|
} else { |
|
|
} else { |
|
|
res = ctx->dlo->GetDisplayModeIterator (&itermode); |
|
|
res = ctx->dlo->GetDisplayModeIterator (&itermode); |
|
|
|