From patchwork Sun Feb 13 21:52:29 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Scott Theisen X-Patchwork-Id: 34270 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6838:14aa:0:0:0:0 with SMTP id bz10csp5016864nkb; Sun, 13 Feb 2022 13:53:16 -0800 (PST) X-Google-Smtp-Source: ABdhPJyYQdD5TRTZiTfs+l2oQnHb9smmXAegHcQ6T2tvFCafvZZq2+IwxGtNnS2z5XByCK0Rm2ck X-Received: by 2002:a05:6402:528a:: with SMTP id en10mr12746822edb.209.1644789196780; Sun, 13 Feb 2022 13:53:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1644789196; cv=none; d=google.com; s=arc-20160816; b=aRCwPp3ykqSG5oY3rgSMsgiTHpRhi+reQscP1URqWMflna6t2n8vCy0GT76PrQDofh 6RdLfPqMnpqn+mBy6rVVAsetKKwXzz7wBmnPL5/NulQvRunqLpJAiyZzEkwlexZDtWe1 Bv5PrBUcmj+JKjdX7pQa4uThk79I03gaNJakQEGtASTNMsv0nZKoFmj/u6AI/+1oQEL5 TQV9ePVhvuPUondtc0hxzId5wFibKLF+a0aI1vklCup1PusP1+9fpVBXrghjXdooELdk JdtwvO8NDy9afLWrAlgJjqGdDu/qGaxsJhxwVacJ85nQ/2hWf6FrBAezHBUaEFL4+Iyx Et4w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=Bw3QEeOFRglajD7oQW884ziX8HQhBhHKEBGjtN7mV3U=; b=wICCZIt1RnbqCijBRRR7AkYjsPtKAXMGIoLmwlTkkR+FABQSRCb6fXVrp6KIcNaFFA tKfjMQ7fXvc2h1MRtzymTt3Kq16hEdIzrk+rEqUo2kYe54ZpoFUJP5fKmTPs+n/c14FU d5e7MLePpfwc9I1ys/OQWmioZifPQcUiNNOwJGmQgOfNqWqrBrfnNkPgkOo08ENKlYOj rEEgOiRhsmXtzyJoh0Csr7zDCu75x54wfYGpTMmpjkN1nzKwdezeYalC7gfIYbc8Iu8H bn/jGNX2+SqNc630Plqa0yHLF1pMY2pUC4SBzDQ782pr3o+vhlTS9l1Lfwdtjyce8Wxr X/Aw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b="VwdoF/ra"; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id mp4si20276484ejc.140.2022.02.13.13.53.16; Sun, 13 Feb 2022 13:53:16 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b="VwdoF/ra"; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CD98768B2D0; Sun, 13 Feb 2022 23:53:04 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qv1-f44.google.com (mail-qv1-f44.google.com [209.85.219.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1CD4368B2B0 for ; Sun, 13 Feb 2022 23:52:56 +0200 (EET) Received: by mail-qv1-f44.google.com with SMTP id o5so13433631qvm.3 for ; Sun, 13 Feb 2022 13:52:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=8P0eKRUDesX1DJn8YqQxqM/smJpewaQOmBB5lLkZiPc=; b=VwdoF/raEm5PJsim9ZtW96UQaqkk47hrhAXHX80xqRZhhAgVUIj247bGtDfOHCqcjW 0J7J824kdC4vrV7LwNK9M7rWEm+Hp0DDQBDghaTDn+q7LEKwq/S58kUk+yne+w2AZJN6 tATGXirfgyMM0hOXx2jCa/KOWLHXhnbmJUcQ5RM4+hccsXierLcZQkI22/I0aT+PgRsZ dwrsjDCRTPo51AUOMakMsX7LQGUdNXEa1rg2c08A/Nf8a1d8Sw4CBILD4epfjhYCgQqs W0qicCiyEcH6VUa4u20e9wOku9VPA5AlsGxLfAW8BeGVGmWIdesISw8FwltYnEL0Fw+X XGyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8P0eKRUDesX1DJn8YqQxqM/smJpewaQOmBB5lLkZiPc=; b=CykHvmkOidur9WJa1e+lMRiyooODTZ8hdI20honU3RF5Q+NOeg7hoxapB0ayRtGl/n EJ0yltM0rA0m7disLNNLFfR5gW5s19NB+NCEpsj1L53rz81zeOQ3rYAy/88lS+s9Q19o UgfJhs8Ogx7gI3QZpCtk2g3lOv65QYHwAD6Ad8Ri4VlF857ymTrhen5DGsSfaIP9EZAC yPKZy0Feepbz1hO/gEKP8Y9CMFlT7ldXzs9dNeqZKxLzb+c/CiJDvOgi7K3keGce8di7 G/cL7TvJfYAmzLddyttw8yfJD3+KqQPtFdVcSgCeHc3Qo1nxhKjRKl4jLX9D45qN6/pY zJCw== X-Gm-Message-State: AOAM533Kzm4TTxawwGxSXJHPf/l1Z3xsEVQZI46y3UEwd5vhIaWWvvOa g/J6MnYiwk5ujaa6cV7chzWPGULsMAekxw== X-Received: by 2002:ad4:5ba6:: with SMTP id 6mr7851424qvq.112.1644789174082; Sun, 13 Feb 2022 13:52:54 -0800 (PST) Received: from localhost.localdomain ([151.200.235.219]) by smtp.gmail.com with ESMTPSA id b21sm2946108qkc.87.2022.02.13.13.52.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Feb 2022 13:52:53 -0800 (PST) From: Scott Theisen To: ffmpeg-devel@ffmpeg.org Date: Sun, 13 Feb 2022 16:52:29 -0500 Message-Id: <20220213215230.101828-2-scott.the.elm@gmail.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220213215230.101828-1-scott.the.elm@gmail.com> References: <20220201223058.31090-1-scott.the.elm@gmail.com> <20220213215230.101828-1-scott.the.elm@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 1/2] libavutil: create av_media_type_get_string() X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Scott Theisen Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: /jHeBn/lu7Vm This deprecates av_get_media_type_string() which does return NULL. printf %s with a null pointer is undefined behavior This also matches behavior with avcodec_get_name() which never returns NULL, instead it returns "unknown_codec". --- doc/APIchanges | 3 +++ libavutil/avutil.h | 7 +++++++ libavutil/utils.c | 13 +++++++++++++ 3 files changed, 23 insertions(+) diff --git a/doc/APIchanges b/doc/APIchanges index ea402f6118..7733de8dea 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -14,6 +14,9 @@ libavutil: 2021-04-27 API changes, most recent first: +2022-02-XX - xxxxxxxxxxx - lavu 57.19.100 - avutil.h + Add av_media_type_get_string() which deprecates av_get_media_type_string(). + 2022-02-07 - xxxxxxxxxx - lavu 57.21.100 - fifo.h Deprecate AVFifoBuffer and the API around it, namely av_fifo_alloc(), av_fifo_alloc_array(), av_fifo_free(), av_fifo_freep(), av_fifo_reset(), diff --git a/libavutil/avutil.h b/libavutil/avutil.h index 4d633156d1..6cabeb405a 100644 --- a/libavutil/avutil.h +++ b/libavutil/avutil.h @@ -209,9 +209,16 @@ enum AVMediaType { /** * Return a string describing the media_type enum, NULL if media_type * is unknown. + * + * @deprecated Use av_media_type_get_string() instead. */ const char *av_get_media_type_string(enum AVMediaType media_type); +/** + * Return a string describing the media_type enum, never NULL. + */ +const char *av_media_type_get_string(enum AVMediaType media_type); + /** * @defgroup lavu_const Constants * @{ diff --git a/libavutil/utils.c b/libavutil/utils.c index ea9b5097b8..92d242f678 100644 --- a/libavutil/utils.c +++ b/libavutil/utils.c @@ -80,6 +80,19 @@ const char *av_get_media_type_string(enum AVMediaType media_type) } } +const char *av_media_type_get_string(enum AVMediaType media_type) +{ + switch (media_type) { + case AVMEDIA_TYPE_UNKNOWN: return "unknown"; + case AVMEDIA_TYPE_VIDEO: return "video"; + case AVMEDIA_TYPE_AUDIO: return "audio"; + case AVMEDIA_TYPE_DATA: return "data"; + case AVMEDIA_TYPE_SUBTITLE: return "subtitle"; + case AVMEDIA_TYPE_ATTACHMENT: return "attachment"; + default: return "invalid_media_type"; + } +} + char av_get_picture_type_char(enum AVPictureType pict_type) { switch (pict_type) { From patchwork Sun Feb 13 21:52:30 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Scott Theisen X-Patchwork-Id: 34271 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6838:14aa:0:0:0:0 with SMTP id bz10csp5016937nkb; Sun, 13 Feb 2022 13:53:26 -0800 (PST) X-Google-Smtp-Source: ABdhPJyY5rjBQfKPyrCXw0mmBlK7KcqBPdwODAQoG7FjhGciMcaWSAe1ZXH6nyirYRejmlDqK3fW X-Received: by 2002:a05:6402:11d2:: with SMTP id j18mr12502159edw.349.1644789205882; Sun, 13 Feb 2022 13:53:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1644789205; cv=none; d=google.com; s=arc-20160816; b=InrseMSWJmNDFpGaO9YkdHqwHZ78IxEn3Dn8H2xgUJ+wcd8JnAB8674etYYtFA05z8 GIqvRA+KFcuXjgpKpHMOjJw0UWt9j4e/Y/3Veda43n79tMcf7uuH0Z6NyXA9QGoNmhVg 41ZYqnryF6RLV8/rX8lkQuCfo/knvVuhdDrJP3DgmZBkn65SshJxJw65JynH60sLZE9u pR/ew+415hpq4nElOtaUEYsPq0R/wcaG185JK8qyalMy1K/XodEozJB65tkYt0v89y/B j0tZwZUFYnia90Vh1YoRrThRXH8K2TPaV6NUO6qUStxyYPUhgx4PnVPn7h8nbFIzZzBf nFYQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=zZbsym6QzS6xt2MnMGS7NNtANpMUaohskk6eHFhDPY4=; b=XUUvHqs+PyCE56rSn4KCNM6cVsrj+gcc2dlq9z3gtK7sWTNLLaxUxmcgLQGhti6Rwo 64TdeYdIgwV7GF/NYnrfzFKr2sX/uPtfbE2NSxXXDGvvk2BGKBjd5XhmG+yY/Hm0ws3X YKmHQyjpd8p2RzrLjrfjspRCXRnr2K+DVzYaIK3JLfOPmJQ/grgX7K+M6+1YGKVlAfGS 7Rjc714L8EjE+2LLROgcwI+7V4C18C6OwgobD2lEF5HNPJusO1az2JR9fhKEQbFTvD7Q ofwUycjNFG+VlD8cyevS12C8dTpMa1nht0S5GL1/Q3TXHfQu8vSgnooqw/tomR/48bNf Q/JA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=pSqVMhmg; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id l6si20962904ejo.931.2022.02.13.13.53.25; Sun, 13 Feb 2022 13:53:25 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=pSqVMhmg; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D865968B246; Sun, 13 Feb 2022 23:53:05 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f176.google.com (mail-qk1-f176.google.com [209.85.222.176]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 088F868B2C6 for ; Sun, 13 Feb 2022 23:52:57 +0200 (EET) Received: by mail-qk1-f176.google.com with SMTP id c189so12974358qkg.11 for ; Sun, 13 Feb 2022 13:52:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=9fwFtMlrYajnYhR2FXozSDHzPaEXMV8WZ1s6PISksUE=; b=pSqVMhmgiWjdR6vF6JCsIDih+NhHqaFXuEJYp0TeyuYMteIEj8GKUKgQhBvGfDv+ka VKE6WeYGsK5R88fdxkRDrgZjGZTfXoCxBa0aKqDYIVc2cO7860IzHPH02t71gp0e5Kao JQpG2nzL8hcj3jNu8IEIMben9tCi2bwfxOrkAQigJtjOk7NgyVHT9OdtKdOgMi0KXLbg EdoOaPONbwVKi5cIpI64fnYFvgCGlGnlwNCGgYYDo4gsj3h3GvRiGO/k03gkYGTZEEjz LKA9J2yG7PQBqG6qa8rDNsWSP0RPvANInD9/51avJmnWM+Hw29pdmenVarF6vgyUJw4v hLww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=9fwFtMlrYajnYhR2FXozSDHzPaEXMV8WZ1s6PISksUE=; b=ACkrPMI5DEE3e2pMZnpMVA5QdnrDomogpSP5L9dgahsLWrg+4HIx1QWhFCuFYGUhef kwxg8qiS775KUQgE1oC2B9eAe3w3Qc31slccHf8DRL1qWq/4KC1ktjhSF9IPQGan0QXo cLY3fxUYqlg6Ev/EmpHH8qMVr77cfUUEaYnd42aAPHYgXjZ+8m2M1ps3YVRkiIxDPFSx hPXb0FpNso0eZDZuPr+IOfeu9UrXG8OQNicqAnQnyPEwcRDmBBo/C3BJ5WQAtNdwnV7j pTw/UiuK+4Zj+LH6v9+Radrjj5VFyX4GvImmORjek2GiNQEnaqdjZS2NNcDZnACLaxjB 5RmA== X-Gm-Message-State: AOAM533qAvMKAmxyhO+MAnJ5HrfZ7xAYw1VLDK/erltMxSG0yRtlLSAp cwPIv+9ZRZ852Qiz7I2vKHfOBShzwH/ypQ== X-Received: by 2002:a37:ac1a:: with SMTP id e26mr5714179qkm.582.1644789174888; Sun, 13 Feb 2022 13:52:54 -0800 (PST) Received: from localhost.localdomain ([151.200.235.219]) by smtp.gmail.com with ESMTPSA id b21sm2946108qkc.87.2022.02.13.13.52.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Feb 2022 13:52:54 -0800 (PST) From: Scott Theisen To: ffmpeg-devel@ffmpeg.org Date: Sun, 13 Feb 2022 16:52:30 -0500 Message-Id: <20220213215230.101828-3-scott.the.elm@gmail.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220213215230.101828-1-scott.the.elm@gmail.com> References: <20220201223058.31090-1-scott.the.elm@gmail.com> <20220213215230.101828-1-scott.the.elm@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 2/2] av_get_media_type_string(): replace with av_media_type_get_string() X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Scott Theisen Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: HqsHQzrY54zL printf %s with a null pointer is undefined behavior. --- doc/examples/demuxing_decoding.c | 10 +++++----- doc/examples/extract_mvs.c | 4 ++-- fftools/cmdutils.c | 7 +++---- fftools/cmdutils.h | 2 -- fftools/ffmpeg.c | 14 +++++++------- fftools/ffmpeg_opt.c | 2 +- fftools/ffplay.c | 4 ++-- fftools/ffprobe.c | 13 +++---------- libavcodec/avcodec.c | 2 +- libavcodec/tests/avcodec.c | 10 ++-------- libavdevice/dshow.c | 4 ++-- libavfilter/avfilter.c | 4 ++-- libavfilter/avfiltergraph.c | 4 ++-- libavfilter/src_movie.c | 6 +++--- libavformat/avienc.c | 2 +- libavformat/flvenc.c | 2 +- libavformat/framehash.c | 2 +- libavformat/mov.c | 2 +- libavformat/mpegenc.c | 2 +- libavformat/mpegts.c | 2 +- libavformat/mxfdec.c | 2 +- libavformat/segment.c | 2 +- libavformat/tee.c | 2 +- libavformat/uncodedframecrcenc.c | 4 +--- 24 files changed, 45 insertions(+), 63 deletions(-) diff --git a/doc/examples/demuxing_decoding.c b/doc/examples/demuxing_decoding.c index 8520d5b660..670f08779d 100644 --- a/doc/examples/demuxing_decoding.c +++ b/doc/examples/demuxing_decoding.c @@ -155,7 +155,7 @@ static int open_codec_context(int *stream_idx, ret = av_find_best_stream(fmt_ctx, type, -1, -1, NULL, 0); if (ret < 0) { fprintf(stderr, "Could not find %s stream in input file '%s'\n", - av_get_media_type_string(type), src_filename); + av_media_type_get_string(type), src_filename); return ret; } else { stream_index = ret; @@ -165,7 +165,7 @@ static int open_codec_context(int *stream_idx, dec = avcodec_find_decoder(st->codecpar->codec_id); if (!dec) { fprintf(stderr, "Failed to find %s codec\n", - av_get_media_type_string(type)); + av_media_type_get_string(type)); return AVERROR(EINVAL); } @@ -173,21 +173,21 @@ static int open_codec_context(int *stream_idx, *dec_ctx = avcodec_alloc_context3(dec); if (!*dec_ctx) { fprintf(stderr, "Failed to allocate the %s codec context\n", - av_get_media_type_string(type)); + av_media_type_get_string(type)); return AVERROR(ENOMEM); } /* Copy codec parameters from input stream to output codec context */ if ((ret = avcodec_parameters_to_context(*dec_ctx, st->codecpar)) < 0) { fprintf(stderr, "Failed to copy %s codec parameters to decoder context\n", - av_get_media_type_string(type)); + av_media_type_get_string(type)); return ret; } /* Init the decoders */ if ((ret = avcodec_open2(*dec_ctx, dec, NULL)) < 0) { fprintf(stderr, "Failed to open %s codec\n", - av_get_media_type_string(type)); + av_media_type_get_string(type)); return ret; } *stream_idx = stream_index; diff --git a/doc/examples/extract_mvs.c b/doc/examples/extract_mvs.c index cc1311da91..2fb5517708 100644 --- a/doc/examples/extract_mvs.c +++ b/doc/examples/extract_mvs.c @@ -85,7 +85,7 @@ static int open_codec_context(AVFormatContext *fmt_ctx, enum AVMediaType type) ret = av_find_best_stream(fmt_ctx, type, -1, -1, &dec, 0); if (ret < 0) { fprintf(stderr, "Could not find %s stream in input file '%s'\n", - av_get_media_type_string(type), src_filename); + av_media_type_get_string(type), src_filename); return ret; } else { int stream_idx = ret; @@ -109,7 +109,7 @@ static int open_codec_context(AVFormatContext *fmt_ctx, enum AVMediaType type) av_dict_free(&opts); if (ret < 0) { fprintf(stderr, "Failed to open %s codec\n", - av_get_media_type_string(type)); + av_media_type_get_string(type)); return ret; } diff --git a/fftools/cmdutils.c b/fftools/cmdutils.c index 4b50e15eef..4504d2711c 100644 --- a/fftools/cmdutils.c +++ b/fftools/cmdutils.c @@ -1961,7 +1961,7 @@ static void show_help_filter(const char *name) count = avfilter_filter_pad_count(f, 0); for (i = 0; i < count; i++) { printf(" #%d: %s (%s)\n", i, avfilter_pad_get_name(f->inputs, i), - media_type_string(avfilter_pad_get_type(f->inputs, i))); + av_media_type_get_string(avfilter_pad_get_type(f->inputs, i))); } if (f->flags & AVFILTER_FLAG_DYNAMIC_INPUTS) printf(" dynamic (depending on the options)\n"); @@ -1972,7 +1972,7 @@ static void show_help_filter(const char *name) count = avfilter_filter_pad_count(f, 1); for (i = 0; i < count; i++) { printf(" #%d: %s (%s)\n", i, avfilter_pad_get_name(f->outputs, i), - media_type_string(avfilter_pad_get_type(f->outputs, i))); + av_media_type_get_string(avfilter_pad_get_type(f->outputs, i))); } if (f->flags & AVFILTER_FLAG_DYNAMIC_OUTPUTS) printf(" dynamic (depending on the options)\n"); @@ -2253,10 +2253,9 @@ static void print_device_list(const AVDeviceInfoList *device_list) device->device_name, device->device_description); if (device->nb_media_types > 0) { for (int j = 0; j < device->nb_media_types; ++j) { - const char* media_type = av_get_media_type_string(device->media_types[j]); if (j > 0) printf(", "); - printf("%s", media_type ? media_type : "unknown"); + printf("%s", av_media_type_get_string(device->media_types[j])); } } else { printf("none"); diff --git a/fftools/cmdutils.h b/fftools/cmdutils.h index 50eed9b13a..a3e06b7b29 100644 --- a/fftools/cmdutils.h +++ b/fftools/cmdutils.h @@ -642,8 +642,6 @@ void *grow_array(void *array, int elem_size, int *size, int new_size); */ void *allocate_array_elem(void *array, size_t elem_size, int *nb_elems); -#define media_type_string av_get_media_type_string - #define GROW_ARRAY(array, nb_elems)\ array = grow_array(array, sizeof(*array), &nb_elems, nb_elems + 1) diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c index 7beea11933..bd26adf35b 100644 --- a/fftools/ffmpeg.c +++ b/fftools/ffmpeg.c @@ -844,7 +844,7 @@ static void write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost, int u if (debug_ts) { av_log(NULL, AV_LOG_INFO, "muxer <- type:%s " "pkt_pts:%s pkt_pts_time:%s pkt_dts:%s pkt_dts_time:%s size:%d\n", - av_get_media_type_string(ost->enc_ctx->codec_type), + av_media_type_get_string(ost->enc_ctx->codec_type), av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &ost->st->time_base), av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &ost->st->time_base), pkt->size @@ -1602,7 +1602,7 @@ static void print_final_stats(int64_t total_size) total_packets += ist->nb_packets; av_log(NULL, AV_LOG_VERBOSE, " Input stream #%d:%d (%s): ", - i, j, media_type_string(type)); + i, j, av_media_type_get_string(type)); av_log(NULL, AV_LOG_VERBOSE, "%"PRIu64" packets read (%"PRIu64" bytes); ", ist->nb_packets, ist->data_size); @@ -1636,7 +1636,7 @@ static void print_final_stats(int64_t total_size) total_packets += ost->packets_written; av_log(NULL, AV_LOG_VERBOSE, " Output stream #%d:%d (%s): ", - i, j, media_type_string(type)); + i, j, av_media_type_get_string(type)); if (ost->encoding_needed) { av_log(NULL, AV_LOG_VERBOSE, "%"PRIu64" frames encoded", ost->frames_encoded); @@ -3565,7 +3565,7 @@ static void report_new_stream(int input_index, AVPacket *pkt) return; av_log(file->ctx, AV_LOG_WARNING, "New %s stream %d:%d at pos:%"PRId64" and DTS:%ss\n", - av_get_media_type_string(st->codecpar->codec_type), + av_media_type_get_string(st->codecpar->codec_type), input_index, pkt->stream_index, pkt->pos, av_ts2timestr(pkt->dts, &st->time_base)); file->nb_streams_warn = pkt->stream_index + 1; @@ -4298,7 +4298,7 @@ static int process_input(int file_index) if (debug_ts) { av_log(NULL, AV_LOG_INFO, "demuxer -> ist_index:%d type:%s " "next_dts:%s next_dts_time:%s next_pts:%s next_pts_time:%s pkt_pts:%s pkt_pts_time:%s pkt_dts:%s pkt_dts_time:%s off:%s off_time:%s\n", - ifile->ist_index + pkt->stream_index, av_get_media_type_string(ist->dec_ctx->codec_type), + ifile->ist_index + pkt->stream_index, av_media_type_get_string(ist->dec_ctx->codec_type), av_ts2str(ist->next_dts), av_ts2timestr(ist->next_dts, &AV_TIME_BASE_Q), av_ts2str(ist->next_pts), av_ts2timestr(ist->next_pts, &AV_TIME_BASE_Q), av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &ist->st->time_base), @@ -4425,7 +4425,7 @@ static int process_input(int file_index) "timestamp discontinuity for stream #%d:%d " "(id=%d, type=%s): %"PRId64", new offset= %"PRId64"\n", ist->file_index, ist->st->index, ist->st->id, - av_get_media_type_string(ist->dec_ctx->codec_type), + av_media_type_get_string(ist->dec_ctx->codec_type), delta, ifile->ts_offset); pkt->dts -= av_rescale_q(delta, AV_TIME_BASE_Q, ist->st->time_base); if (pkt->pts != AV_NOPTS_VALUE) @@ -4454,7 +4454,7 @@ static int process_input(int file_index) if (debug_ts) { av_log(NULL, AV_LOG_INFO, "demuxer+ffmpeg -> ist_index:%d type:%s pkt_pts:%s pkt_pts_time:%s pkt_dts:%s pkt_dts_time:%s off:%s off_time:%s\n", - ifile->ist_index + pkt->stream_index, av_get_media_type_string(ist->dec_ctx->codec_type), + ifile->ist_index + pkt->stream_index, av_media_type_get_string(ist->dec_ctx->codec_type), av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &ist->st->time_base), av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &ist->st->time_base), av_ts2str(input_files[ist->file_index]->ts_offset), diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c index 3102851885..653dee6d67 100644 --- a/fftools/ffmpeg_opt.c +++ b/fftools/ffmpeg_opt.c @@ -1694,7 +1694,7 @@ static void check_streamcopy_filters(OptionsContext *o, AVFormatContext *oc, "Filtering and streamcopy cannot be used together.\n", ost->filters ? "Filtergraph" : "Filtergraph script", ost->filters ? ost->filters : ost->filters_script, - av_get_media_type_string(type), ost->file_index, ost->index); + av_media_type_get_string(type), ost->file_index, ost->index); exit_program(1); } } diff --git a/fftools/ffplay.c b/fftools/ffplay.c index ac48d8765d..2cc9804770 100644 --- a/fftools/ffplay.c +++ b/fftools/ffplay.c @@ -2868,7 +2868,7 @@ static int read_thread(void *arg) } for (i = 0; i < AVMEDIA_TYPE_NB; i++) { if (wanted_stream_spec[i] && st_index[i] == -1) { - av_log(NULL, AV_LOG_ERROR, "Stream specifier %s does not match any %s stream\n", wanted_stream_spec[i], av_get_media_type_string(i)); + av_log(NULL, AV_LOG_ERROR, "Stream specifier %s does not match any %s stream\n", wanted_stream_spec[i], av_media_type_get_string(i)); st_index[i] = INT_MAX; } } @@ -3199,7 +3199,7 @@ static void stream_cycle_channel(VideoState *is, int codec_type) if (p && stream_index != -1) stream_index = p->stream_index[stream_index]; av_log(NULL, AV_LOG_INFO, "Switch %s stream from #%d to #%d\n", - av_get_media_type_string(codec_type), + av_media_type_get_string(codec_type), old_index, stream_index); diff --git a/fftools/ffprobe.c b/fftools/ffprobe.c index 8a8e3de540..32723177a0 100644 --- a/fftools/ffprobe.c +++ b/fftools/ffprobe.c @@ -2327,15 +2327,12 @@ static void show_packet(WriterContext *w, InputFile *ifile, AVPacket *pkt, int p char val_str[128]; AVStream *st = ifile->streams[pkt->stream_index].st; AVBPrint pbuf; - const char *s; av_bprint_init(&pbuf, 1, AV_BPRINT_SIZE_UNLIMITED); writer_print_section_header(w, SECTION_ID_PACKET); - s = av_get_media_type_string(st->codecpar->codec_type); - if (s) print_str ("codec_type", s); - else print_str_opt("codec_type", "unknown"); + print_str("codec_type", av_media_type_get_string(st->codecpar->codec_type)); print_int("stream_index", pkt->stream_index); print_ts ("pts", pkt->pts); print_time("pts_time", pkt->pts, &st->time_base); @@ -2410,9 +2407,7 @@ static void show_frame(WriterContext *w, AVFrame *frame, AVStream *stream, writer_print_section_header(w, SECTION_ID_FRAME); - s = av_get_media_type_string(stream->codecpar->codec_type); - if (s) print_str ("media_type", s); - else print_str_opt("media_type", "unknown"); + print_str("media_type", av_media_type_get_string(stream->codecpar->codec_type)); print_int("stream_index", stream->index); print_int("key_frame", frame->key_frame); print_ts ("pts", frame->pts); @@ -2809,9 +2804,7 @@ static int show_stream(WriterContext *w, AVFormatContext *fmt_ctx, int stream_id print_str_opt("profile", "unknown"); } - s = av_get_media_type_string(par->codec_type); - if (s) print_str ("codec_type", s); - else print_str_opt("codec_type", "unknown"); + print_str("codec_type", av_media_type_get_string(par->codec_type)); /* print AVI/FourCC tag */ print_str("codec_tag_string", av_fourcc2str(par->codec_tag)); diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c index 4df834c708..ee4155d4e6 100644 --- a/libavcodec/avcodec.c +++ b/libavcodec/avcodec.c @@ -526,7 +526,7 @@ void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode) if (!buf || buf_size <= 0) return; av_bprint_init_for_buffer(&bprint, buf, buf_size); - codec_type = av_get_media_type_string(enc->codec_type); + codec_type = av_media_type_get_string(enc->codec_type); codec_name = avcodec_get_name(enc->codec_id); profile = avcodec_profile_name(enc->codec_id, enc->profile); diff --git a/libavcodec/tests/avcodec.c b/libavcodec/tests/avcodec.c index 5d0ff9432c..34ab01bc2a 100644 --- a/libavcodec/tests/avcodec.c +++ b/libavcodec/tests/avcodec.c @@ -21,12 +21,6 @@ #include "libavcodec/codec_desc.h" #include "libavcodec/internal.h" -static const char *get_type_string(enum AVMediaType type) -{ - const char *ret = av_get_media_type_string(type); - return ret ? ret : "unknown"; -} - #define AV_LOG(...) av_log(NULL, AV_LOG_FATAL, __VA_ARGS__) #define ERR_INTERNAL(msg, ...) \ do { \ @@ -74,7 +68,7 @@ int main(void){ codec->type != AVMEDIA_TYPE_AUDIO && codec->type != AVMEDIA_TYPE_SUBTITLE) ERR_EXT("Codec %s has unsupported type %s\n", - get_type_string(codec->type)); + av_media_type_get_string(codec->type)); if (codec->type != AVMEDIA_TYPE_AUDIO) { if (codec->channel_layouts || codec->sample_fmts || codec->supported_samplerates) @@ -158,7 +152,7 @@ int main(void){ } else if (desc->type != codec->type) ERR_EXT("The type of AVCodec %s and its AVCodecDescriptor differ: " "%s vs %s\n", - get_type_string(codec->type), get_type_string(desc->type)); + av_media_type_get_string(codec->type), av_media_type_get_string(desc->type)); } return ret; } diff --git a/libavdevice/dshow.c b/libavdevice/dshow.c index 3a16f3720f..6ecb9c848b 100644 --- a/libavdevice/dshow.c +++ b/libavdevice/dshow.c @@ -577,10 +577,10 @@ dshow_cycle_devices(AVFormatContext *avctx, ICreateDevEnum *devenum, else { av_log(avctx, AV_LOG_INFO, "\"%s\"", friendly_name); if (nb_media_types > 0) { - const char* media_type = av_get_media_type_string(media_types[0]); + const char* media_type = av_media_type_get_string(media_types[0]); av_log(avctx, AV_LOG_INFO, " (%s", media_type ? media_type : "unknown"); for (int i = 1; i < nb_media_types; ++i) { - media_type = av_get_media_type_string(media_types[i]); + media_type = av_media_type_get_string(media_types[i]); av_log(avctx, AV_LOG_INFO, ", %s", media_type ? media_type : "unknown"); } av_log(avctx, AV_LOG_INFO, ")"); diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c index 7362bcdab5..a991a6272e 100644 --- a/libavfilter/avfilter.c +++ b/libavfilter/avfilter.c @@ -174,8 +174,8 @@ int avfilter_link(AVFilterContext *src, unsigned srcpad, if (src->output_pads[srcpad].type != dst->input_pads[dstpad].type) { av_log(src, AV_LOG_ERROR, "Media type mismatch between the '%s' filter output pad %d (%s) and the '%s' filter input pad %d (%s)\n", - src->name, srcpad, (char *)av_x_if_null(av_get_media_type_string(src->output_pads[srcpad].type), "?"), - dst->name, dstpad, (char *)av_x_if_null(av_get_media_type_string(dst-> input_pads[dstpad].type), "?")); + src->name, srcpad, av_media_type_get_string(src->output_pads[srcpad].type), + dst->name, dstpad, av_media_type_get_string(dst-> input_pads[dstpad].type)); return AVERROR(EINVAL); } diff --git a/libavfilter/avfiltergraph.c b/libavfilter/avfiltergraph.c index b8b432e98b..fa971734d1 100644 --- a/libavfilter/avfiltergraph.c +++ b/libavfilter/avfiltergraph.c @@ -220,7 +220,7 @@ static int graph_check_validity(AVFilterGraph *graph, void *log_ctx) pad = &filt->input_pads[j]; av_log(log_ctx, AV_LOG_ERROR, "Input pad \"%s\" with type %s of the filter instance \"%s\" of %s not connected to any source\n", - pad->name, av_get_media_type_string(pad->type), filt->name, filt->filter->name); + pad->name, av_media_type_get_string(pad->type), filt->name, filt->filter->name); return AVERROR(EINVAL); } } @@ -230,7 +230,7 @@ static int graph_check_validity(AVFilterGraph *graph, void *log_ctx) pad = &filt->output_pads[j]; av_log(log_ctx, AV_LOG_ERROR, "Output pad \"%s\" with type %s of the filter instance \"%s\" of %s not connected to any destination\n", - pad->name, av_get_media_type_string(pad->type), filt->name, filt->filter->name); + pad->name, av_media_type_get_string(pad->type), filt->name, filt->filter->name); return AVERROR(EINVAL); } } diff --git a/libavfilter/src_movie.c b/libavfilter/src_movie.c index b89a680883..b09f5698fb 100644 --- a/libavfilter/src_movie.c +++ b/libavfilter/src_movie.c @@ -113,7 +113,7 @@ static AVStream *find_stream(void *log, AVFormatContext *avf, const char *spec) ret = av_find_best_stream(avf, type, stream_id, -1, NULL, 0); if (ret < 0) { av_log(log, AV_LOG_ERROR, "No %s stream with index '%d' found\n", - av_get_media_type_string(type), stream_id); + av_media_type_get_string(type), stream_id); return NULL; } return avf->streams[ret]; @@ -148,7 +148,7 @@ static AVStream *find_stream(void *log, AVFormatContext *avf, const char *spec) found->codecpar->codec_type != AVMEDIA_TYPE_AUDIO) { av_log(log, AV_LOG_ERROR, "Stream specifier \"%s\" matched a %s stream," "currently unsupported by libavfilter\n", spec, - av_get_media_type_string(found->codecpar->codec_type)); + av_media_type_get_string(found->codecpar->codec_type)); return NULL; } return found; @@ -426,7 +426,7 @@ static char *describe_frame_to_str(char *dst, size_t dst_size, frame->nb_samples); break; default: - snprintf(dst, dst_size, "%s BUG", av_get_media_type_string(frame_type)); + snprintf(dst, dst_size, "%s BUG", av_media_type_get_string(frame_type)); break; } return dst; diff --git a/libavformat/avienc.c b/libavformat/avienc.c index be2493ce55..ec72a74eec 100644 --- a/libavformat/avienc.c +++ b/libavformat/avienc.c @@ -473,7 +473,7 @@ static int avi_write_header(AVFormatContext *s) default: av_log(s, AV_LOG_ERROR, "Invalid or not supported codec type '%s' found in the input\n", - (char *)av_x_if_null(av_get_media_type_string(par->codec_type), "?")); + av_media_type_get_string(par->codec_type)); return AVERROR(EINVAL); } ff_end_tag(pb, strf); diff --git a/libavformat/flvenc.c b/libavformat/flvenc.c index 66c530a2ff..1267ed00a8 100644 --- a/libavformat/flvenc.c +++ b/libavformat/flvenc.c @@ -670,7 +670,7 @@ static int flv_init(struct AVFormatContext *s) break; default: av_log(s, AV_LOG_ERROR, "Codec type '%s' for stream %d is not compatible with FLV\n", - av_get_media_type_string(par->codec_type), i); + av_media_type_get_string(par->codec_type), i); return AVERROR(EINVAL); } avpriv_set_pts_info(s->streams[i], 32, 1, 1000); /* 32 bit pts in ms */ diff --git a/libavformat/framehash.c b/libavformat/framehash.c index 04c40825b9..b9f765f097 100644 --- a/libavformat/framehash.c +++ b/libavformat/framehash.c @@ -32,7 +32,7 @@ int ff_framehash_write_header(AVFormatContext *s) AVCodecParameters *avctx = st->codecpar; char buf[256] = { 0 }; avio_printf(s->pb, "#tb %d: %d/%d\n", i, st->time_base.num, st->time_base.den); - avio_printf(s->pb, "#media_type %d: %s\n", i, av_get_media_type_string(avctx->codec_type)); + avio_printf(s->pb, "#media_type %d: %s\n", i, av_media_type_get_string(avctx->codec_type)); avio_printf(s->pb, "#codec_id %d: %s\n", i, avcodec_get_name(avctx->codec_id)); switch (avctx->codec_type) { case AVMEDIA_TYPE_AUDIO: diff --git a/libavformat/mov.c b/libavformat/mov.c index a80fcc1606..b2041ec160 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -7141,7 +7141,7 @@ static int mov_read_kind(MOVContext *c, AVIOContext *pb, MOVAtom atom) av_log(ctx, AV_LOG_TRACE, "%s stream %d KindBox(scheme: %s, value: %s)\n", - av_get_media_type_string(st->codecpar->codec_type), + av_media_type_get_string(st->codecpar->codec_type), st->index, scheme_buf.str, value_buf.str); diff --git a/libavformat/mpegenc.c b/libavformat/mpegenc.c index 64248695bd..cf1c89a04b 100644 --- a/libavformat/mpegenc.c +++ b/libavformat/mpegenc.c @@ -456,7 +456,7 @@ static av_cold int mpeg_mux_init(AVFormatContext *ctx) break; default: av_log(ctx, AV_LOG_ERROR, "Invalid media type %s for output stream #%d\n", - av_get_media_type_string(st->codecpar->codec_type), i); + av_media_type_get_string(st->codecpar->codec_type), i); return AVERROR(EINVAL); } stream->fifo = av_fifo_alloc2(16, 1, 0); diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c index e23f596490..dfb898d07b 100644 --- a/libavformat/mpegts.c +++ b/libavformat/mpegts.c @@ -2253,7 +2253,7 @@ static AVStream *find_matching_stream(MpegTSContext *ts, int pid, unsigned int p if (found) { av_log(ts->stream, AV_LOG_VERBOSE, "re-using existing %s stream %d (pid=0x%x) for new pid=0x%x\n", - av_get_media_type_string(found->codecpar->codec_type), + av_media_type_get_string(found->codecpar->codec_type), found->index, found->id, pid); } diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c index b85c10bf19..5763c5db8b 100644 --- a/libavformat/mxfdec.c +++ b/libavformat/mxfdec.c @@ -2404,7 +2404,7 @@ static int mxf_add_metadata_stream(MXFContext *mxf, MXFTrack *track) av_dict_set(&st->metadata, "track_name", track->name, 0); codec_ul = mxf_get_codec_ul(ff_mxf_data_definition_uls, &track->sequence->data_definition_ul); - av_dict_set(&st->metadata, "data_type", av_get_media_type_string(codec_ul->id), 0); + av_dict_set(&st->metadata, "data_type", av_media_type_get_string(codec_ul->id), 0); return 0; } diff --git a/libavformat/segment.c b/libavformat/segment.c index e9b0aa4fa8..2fac2647a1 100644 --- a/libavformat/segment.c +++ b/libavformat/segment.c @@ -737,7 +737,7 @@ static int seg_init(AVFormatContext *s) return ret; av_log(s, AV_LOG_VERBOSE, "Selected stream id:%d type:%s\n", seg->reference_stream_index, - av_get_media_type_string(s->streams[seg->reference_stream_index]->codecpar->codec_type)); + av_media_type_get_string(s->streams[seg->reference_stream_index]->codecpar->codec_type)); seg->oformat = av_guess_format(seg->format, s->url, NULL); diff --git a/libavformat/tee.c b/libavformat/tee.c index b3bcd70b9f..97db7c789b 100644 --- a/libavformat/tee.c +++ b/libavformat/tee.c @@ -419,7 +419,7 @@ static void log_slave(TeeSlave *slave, void *log_ctx, int log_level) av_log(log_ctx, log_level, " stream:%d codec:%s type:%s", i, avcodec_get_name(st->codecpar->codec_id), - av_get_media_type_string(st->codecpar->codec_type)); + av_media_type_get_string(st->codecpar->codec_type)); bsf_name = bsf->filter->priv_class ? bsf->filter->priv_class->item_name(bsf) : bsf->filter->name; diff --git a/libavformat/uncodedframecrcenc.c b/libavformat/uncodedframecrcenc.c index e30fe4ddb9..04e8818711 100644 --- a/libavformat/uncodedframecrcenc.c +++ b/libavformat/uncodedframecrcenc.c @@ -130,7 +130,6 @@ static int write_frame(struct AVFormatContext *s, int stream_index, AVBPrint bp; int ret = 0; enum AVMediaType type; - const char *type_name; if ((flags & AV_WRITE_UNCODED_FRAME_QUERY)) return 0; @@ -139,8 +138,7 @@ static int write_frame(struct AVFormatContext *s, int stream_index, av_bprintf(&bp, "%d, %10"PRId64"", stream_index, (*frame)->pts); type = s->streams[stream_index]->codecpar->codec_type; - type_name = av_get_media_type_string(type); - av_bprintf(&bp, ", %s", type_name ? type_name : "unknown"); + av_bprintf(&bp, ", %s", av_media_type_get_string(type)); switch (type) { case AVMEDIA_TYPE_VIDEO: video_frame_cksum(&bp, *frame);