[FFmpeg-devel] [PATCH 6/8] Add suppoort for using libklvanc from within decklink capture module

Devin Heitmueller dheitmueller at ltnglobal.com
Fri Jan 5 21:38:17 EET 2018

Hi Aaron,

> On Dec 30, 2017, at 2:34 AM, Aaron Levinson <alevinsn_dev at levland.net> wrote:
> Patch title:  "suppoort" -> "support", also "decklink" -> “DeckLink"


>>        ff_decklink_cleanup(avctx);
>>      avpacket_queue_end(&ctx->queue);
>> +    klvanc_context_destroy(ctx->vanc_ctx);
> Shouldn't this last line be wrapped in #if CONFIG_LIBKLVANC?  I suggest building this on Linux with and without libklvanc, and I also suggest building it (and ideally testing it) on Windows without libklvanc as well.  DeckLink is also supported on OS/X.

Yup, that was a mistake I made preparing the latest patch.  The #ifdef guard got left out.

I do typically test-compile on both Linux and OS X both with and without the library present, but that process got skipped this time around (which was an error on my part).

I have confirmed though that was the only build error when the library isn’t present.

>>        av_freep(&cctx->ctx);
>>  @@ -1193,6 +1315,17 @@ av_cold int ff_decklink_read_header(AVFormatContext *avctx)
>>        avpacket_queue_init (avctx, &ctx->queue);
>> +    if (klvanc_context_create(&ctx->vanc_ctx) < 0) {
>> +        av_log(avctx, AV_LOG_ERROR, "Cannot create VANC library context\n");
>> +        ret = AVERROR(ENOMEM);
> Perhaps appropriate to use the return value of klvanc_context_create() as input to AVERROR().

I think it’s usually bad practice to blindly return what a third party library returns.  Usually the error should be converted into some ffmpeg specific error code which the caller might actually know what to do with.  In this case I just return ENOMEM since that’s the only actual failure case possible in the call.


More information about the ffmpeg-devel mailing list