]> git.sesse.net Git - ffmpeg/blobdiff - libavdevice/decklink_dec.cpp
Merge commit '3303f86467efa99f23c670707f5be094cc9ce547'
[ffmpeg] / libavdevice / decklink_dec.cpp
index 53ff576ec5975394555994aa4dda76ec81a98496..d9ac01ac91bd1c4838d88ff34d68fc8618a5ae46 100644 (file)
@@ -39,6 +39,7 @@ extern "C" {
 #include "libavutil/time.h"
 #include "libavutil/mathematics.h"
 #include "libavutil/reverse.h"
+#include "avdevice.h"
 #if CONFIG_LIBZVBI
 #include <libzvbi.h>
 #endif
@@ -138,7 +139,7 @@ static int check_vanc_parity_checksum(uint16_t *buf, int len, uint16_t checksum)
 static void extract_luma_from_v210(uint16_t *dst, const uint8_t *src, int width)
 {
     int i;
-    for (i = 0; i < width / 3; i += 3) {
+    for (i = 0; i < width / 3; i++) {
         *dst++ = (src[1] >> 2) + ((src[2] & 15) << 6);
         *dst++ =  src[4]       + ((src[5] &  3) << 8);
         *dst++ = (src[6] >> 4) + ((src[7] & 63) << 4);
@@ -379,7 +380,7 @@ uint8_t *get_metadata(AVFormatContext *avctx, uint16_t *buf, size_t width,
                 av_log(avctx, AV_LOG_WARNING, "VANC parity or checksum incorrect\n");
                 goto skip_packet;
             }
-            tgt = teletext_data_unit_from_ancillary_packet(buf + 3, buf + len, tgt, cctx->teletext_lines, 0);
+            tgt = teletext_data_unit_from_ancillary_packet(buf + 3, buf + len, tgt, cctx->teletext_lines, 1);
         } else if (did == 0x61 && sdid == 0x01) {
             unsigned int data_len;
             uint8_t *data;
@@ -868,7 +869,7 @@ av_cold int ff_decklink_read_header(AVFormatContext *avctx)
 
     /* List available devices. */
     if (ctx->list_devices) {
-        ff_decklink_list_devices(avctx);
+        ff_decklink_list_devices_legacy(avctx, 1, 0);
         return AVERROR_EXIT;
     }
 
@@ -965,13 +966,13 @@ av_cold int ff_decklink_read_header(AVFormatContext *avctx)
     case bmdFormat8BitARGB:
         st->codecpar->codec_id    = AV_CODEC_ID_RAWVIDEO;
         st->codecpar->codec_tag   = avcodec_pix_fmt_to_codec_tag((enum AVPixelFormat)st->codecpar->format);;
-        st->codecpar->format      = AV_PIX_FMT_ARGB;
+        st->codecpar->format      = AV_PIX_FMT_0RGB;
         st->codecpar->bit_rate    = av_rescale(ctx->bmd_width * ctx->bmd_height * 32, st->time_base.den, st->time_base.num);
         break;
     case bmdFormat8BitBGRA:
         st->codecpar->codec_id    = AV_CODEC_ID_RAWVIDEO;
         st->codecpar->codec_tag   = avcodec_pix_fmt_to_codec_tag((enum AVPixelFormat)st->codecpar->format);
-        st->codecpar->format      = AV_PIX_FMT_BGRA;
+        st->codecpar->format      = AV_PIX_FMT_BGR0;
         st->codecpar->bit_rate    = av_rescale(ctx->bmd_width * ctx->bmd_height * 32, st->time_base.den, st->time_base.num);
         break;
     case bmdFormat10BitRGB:
@@ -1063,4 +1064,9 @@ int ff_decklink_read_packet(AVFormatContext *avctx, AVPacket *pkt)
     return 0;
 }
 
+int ff_decklink_list_input_devices(AVFormatContext *avctx, struct AVDeviceInfoList *device_list)
+{
+    return ff_decklink_list_devices(avctx, device_list, 1, 0);
+}
+
 } /* extern "C" */