Opened 3 years ago

Closed 3 years ago

#9005 closed defect (fixed)

decklink: v210 FourCC has wrong case

Reported by: carbenium Owned by:
Priority: normal Component: avdevice
Version: git-master Keywords: decklink
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Summary of the bug:
Capturing video as v210 using the decklink module results in video files with the FourCC "V210" (note upper case). VLC refuses to play this file since it expects "v210". Lower-case seems also to be the accepted casing in other parts of FFmpeg (see https://github.com/FFmpeg/FFmpeg/blob/f7fd205f11d5299d6a16b0ff0ae85fddb32772f2/libavformat/isom.c#L107)

How to reproduce:

% ffmpeg -raw_format yuv422p10 -f decklink -i 'DeckLink Mini Recorder 4K' -c:v copy -c:a copy out.mkv
ffmpeg version 4.3.1

Change History (3)

comment:1 by Carl Eugen Hoyos, 3 years ago

Keywords: decklink added
Version: unspecifiedgit-master

Does this inlined patch fix the issue for you?

diff --git a/libavdevice/decklink_dec.cpp b/libavdevice/decklink_dec.cpp
index 6517b9df13..dd8c3b7d95 100644
--- a/libavdevice/decklink_dec.cpp
+++ b/libavdevice/decklink_dec.cpp
@@ -1286,7 +1286,7 @@ av_cold int ff_decklink_read_header(AVFormatContext *avctx)
         break;
     case bmdFormat10BitYUV:
         st->codecpar->codec_id    = AV_CODEC_ID_V210;
-        st->codecpar->codec_tag   = MKTAG('V','2','1','0');
+        st->codecpar->codec_tag   = MKTAG('v','2','1','0');
         st->codecpar->bit_rate    = av_rescale(ctx->bmd_width * ctx->bmd_height * 64, st->time_base.den, st->time_base.num * 3);
         st->codecpar->bits_per_coded_sample = 10;
         break;

comment:2 by carbenium, 3 years ago

The patch works perfectly. Thanks!

comment:3 by Carl Eugen Hoyos, 3 years ago

Resolution: fixed
Status: newclosed

A different fix was applied as b0a882cc93eb659d3e564b07f4c1f3eb87684bda, thank you for the report and the test!

Note: See TracTickets for help on using tickets.