[FFmpeg-devel] [PATCH 2/4] avdevice/decklink_enc: add support to specify field order

Matthias Hunstock atze at fem.tu-ilmenau.de
Thu Feb 23 17:08:22 EET 2017


Am 22.02.2017 um 23:46 schrieb Marton Balint:

> diff --git a/doc/outdevs.texi b/doc/outdevs.texi
> index e68653f..df41cc8 100644
> --- a/doc/outdevs.texi
> +++ b/doc/outdevs.texi
> @@ -131,8 +131,8 @@ and @code{--extra-ldflags}.
>  On Windows, you need to run the IDL files through @command{widl}.
>  
>  DeckLink is very picky about the formats it supports. Pixel format is always
> -uyvy422, framerate and video size must be determined for your device with
> - at command{-list_formats 1}. Audio sample rate is always 48 kHz.
> +uyvy422, framerate, field order and video size must be determined for your
> +device with @command{-list_formats 1}. Audio sample rate is always 48 kHz.



The "@mode" syntax does not work for output devices. Let me add a patch,
I will send it tonight.



> diff --git a/libavdevice/decklink_common.cpp b/libavdevice/decklink_common.cpp
> @@ -187,18 +201,21 @@ int ff_decklink_set_format(AVFormatContext *avctx,
>          BMDTimeValue bmd_tb_num, bmd_tb_den;
>          int bmd_width  = mode->GetWidth();
>          int bmd_height = mode->GetHeight();
> +        BMDFieldDominance bmd_field_dominance = mode->GetFieldDominance();
>  
>          mode->GetFrameRate(&bmd_tb_num, &bmd_tb_den);
>          AVRational mode_tb = av_make_q(bmd_tb_num, bmd_tb_den);
>  
> -        if ((bmd_width == width && bmd_height == height &&
> -            !av_cmp_q(mode_tb, target_tb)) || i == num) {
> +        if ((bmd_width == width &&
> +             bmd_height == height &&
> +             !av_cmp_q(mode_tb, target_tb) &&
> +             field_order_eq(field_order, bmd_field_dominance)) || i == num) {


I worked on the same thing in the past days and had the following in mind:


if ((!num && bmd_width == width &&
             bmd_height == height &&
             !av_cmp_q(mode_tb, target_tb) &&
             field_order_eq(field_order, bmd_field_dominance)) || i ==
num) {

So you can disable the "autodetect" when you explicitly specify a mode
number.

Matthias


More information about the ffmpeg-devel mailing list