[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