@ -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 ff_decklink_set_configs ( AVFormatContext * avctx ,
int width , int height ,
decklink_direction_t direction ) {
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_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 ) ;