From patchwork Mon May 14 09:45:09 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jun Zhao X-Patchwork-Id: 8946 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:155:0:0:0:0:0 with SMTP id c82-v6csp3846093jad; Mon, 14 May 2018 02:45:53 -0700 (PDT) X-Google-Smtp-Source: AB8JxZowvL9hgRlN4eXpQP7e+4iviih7e5aTq89u/gZ/7BMPx2brg9eL4sXu5hfWSKbdCM9Z/yFz X-Received: by 2002:a1c:6355:: with SMTP id x82-v6mr4734291wmb.14.1526291153484; Mon, 14 May 2018 02:45:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1526291153; cv=none; d=google.com; s=arc-20160816; b=0+cfoZakg7vEjtW17UWVhZ8CzQywGpVoXTOrfkkhRKMVwAu7KPOq1q1puBSSTt9Bqo XbCaX6j2SZ87QTxls7sEdq1aYo0XpUqmk427x95uOm9w4VSDziq6EcYXHDGEG4gjJwKh N13v2l9hXACdPqg80Jr/sSf3qXpLvidPMuLWAHSzIy9DgyLKNZDA0dwv3qNiaE2hTokf aqeOQxUGuvuzz+vooo5dVGn63xoqp1GSQNj7n4HY9fLGbiPRNKfh5rvb9Dx/mB/EHT7r R8PplT+J7j8Fa09wdVJNxCKUg5OExCW2Q6htTMaKVM34QIihmFAmsg3VFsS/kGTXVnne lQKA== 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 :arc-authentication-results; bh=I4yecRW9zrnljqmX9gfULvPIhZz4uqA9lWf01+6f11U=; b=YdzL762Npr2w4cvJPkrgTFlYx4ZOx9QyYWPvAS1cvzT9nFVM7wZQ8WsXIHveNuro1/ UX091Zkzq44+D9HvDnM7SytY15s+yotD1vw6biJmoAXVRZXtgSwiqcLaadbsEn0Zbcsf gRz47M4HxnSYbkLmfCCJpD1PkyfDmOqCrT2Hd+4bNDsLGdI7px1kCPChfcXj3pE7IMqn UqP62fRdRkUgdRh1kQuma0nQPXBvfgPiDyRelB1gl1FKAIjbI+rlph3l66nMExEOpmG/ GWMwMAVoHmpf+RIUsyp1K30hdqehlxg+8c1HNtePjXRyinWQZu6H81L2GOIm8XXU7wAm DqHw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=jPDKtRNq; 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 e15-v6si7369807wra.326.2018.05.14.02.45.53; Mon, 14 May 2018 02:45:53 -0700 (PDT) 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=20161025 header.b=jPDKtRNq; 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 09E9E689E5E; Mon, 14 May 2018 12:45:14 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl0-f66.google.com (mail-pl0-f66.google.com [209.85.160.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8B58E689973 for ; Mon, 14 May 2018 12:45:06 +0300 (EEST) Received: by mail-pl0-f66.google.com with SMTP id t12-v6so7057180plo.7 for ; Mon, 14 May 2018 02:45:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=lknAaFAb8LYwvmttuYURAGb+94k+wqS4Qdn4+QbXo1g=; b=jPDKtRNqjOm+pK7o5pZbG2WOXzSQYgdY45HaSZAWZfJ8hui9YA7MHGPQkJWIUHI2M6 RwCHMucKkter+eAiO2GfFf+kx5RcWwaGCtsUhcKV+606ufp3eMgclhAlEL3aMuu3BGuU HE5V1Kuq83q6LcDsLcYVyrVcnHyXwtkA9M3cMlBulcxlf2ixWcMA5n/ENQk1YX9j9tRX +ZzgERotR70Ki7hJVaV8rzTOKOrfqSraNbt9O/pJdEK3LqrUzk37bs+jcxzuuOPGCPno w2sADb+oYAZLnALXjxVgrPOpX1glcmtYK2njDi9JXxop/qWJLBJWtTWpMVHCyo+ei3MM fh5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=lknAaFAb8LYwvmttuYURAGb+94k+wqS4Qdn4+QbXo1g=; b=lOJGZIk/MzSIK6XD//Og9y24pG/T064AdXowcVpAvhs1komQbz2ojshoG63MwDjblv jjcLbR2sqAVmF6Wabe0TYmu9eAuOhTaCn53UFWIcV8Dgpu5roN1bUwCJplNHOItxPKKG zJVnF9k6uiJwSF63jSN4y8LjIitpQbXXIV+VL6M3GfnYvYErU8tzr633XY/GJ+NF6iTQ hf3l8W+dV1pydMgbBMV1SNA+Imn5R29+eYVJJP9Clebu5MjoWf7ZobM/uacdxAaKMyXq 5O8IInrbjmLzln7Dq6rrochpVcLp7ibnBb/YvEE7uwEEC4z4LmFaSik1ZDTmKMnbqfCF sFTw== X-Gm-Message-State: ALKqPwdVuURvVKun0sTrti6+z+t7Ip3ueT1Vgf+98QOXvjdhSH4XUojH 4JGZ2MC6YLqfx8MmKXn6H3W7bg== X-Received: by 2002:a17:902:43a4:: with SMTP id j33-v6mr9385281pld.118.1526291142869; Mon, 14 May 2018 02:45:42 -0700 (PDT) Received: from localhost.localdomain ([47.88.54.25]) by smtp.gmail.com with ESMTPSA id 131-v6sm19350648pfa.128.2018.05.14.02.45.41 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 14 May 2018 02:45:42 -0700 (PDT) From: Jun Zhao To: ffmpeg-devel@ffmpeg.org Date: Mon, 14 May 2018 17:45:09 +0800 Message-Id: <1526291109-32120-4-git-send-email-mypopydev@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1526291109-32120-1-git-send-email-mypopydev@gmail.com> References: <1526291109-32120-1-git-send-email-mypopydev@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 3/3] lavc/h2645_parse: add h264_nal_unit_name for h264 NAL type. X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Jun Zhao Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Jun Zhao --- libavcodec/h264.h | 23 ++++++++++++++++++++++- libavcodec/h2645_parse.c | 46 ++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 66 insertions(+), 3 deletions(-) diff --git a/libavcodec/h264.h b/libavcodec/h264.h index 650580b..7a1fb6d 100644 --- a/libavcodec/h264.h +++ b/libavcodec/h264.h @@ -26,8 +26,12 @@ #define QP_MAX_NUM (51 + 6*6) // The maximum supported qp -/* NAL unit types */ +/* + * Table 7-1 – NAL unit type codes, syntax element categories, and NAL unit type classes in + * T-REC-H.264-201704 + */ enum { + H264_NAL_UNSPECIFIED = 0, H264_NAL_SLICE = 1, H264_NAL_DPA = 2, H264_NAL_DPB = 3, @@ -41,7 +45,24 @@ enum { H264_NAL_END_STREAM = 11, H264_NAL_FILLER_DATA = 12, H264_NAL_SPS_EXT = 13, + H264_NAL_PREFIX = 14, + H264_NAL_SUB_SPS = 15, + H264_NAL_DPS = 16, + H264_NAL_RESERVED17 = 17, + H264_NAL_RESERVED18 = 18, H264_NAL_AUXILIARY_SLICE = 19, + H264_NAL_EXTEN_SLICE = 20, + H264_NAL_DEPTH_EXTEN_SLICE = 21, + H264_NAL_RESERVED22 = 22, + H264_NAL_RESERVED23 = 23, + H264_NAL_UNSPECIFIED24 = 24, + H264_NAL_UNSPECIFIED25 = 25, + H264_NAL_UNSPECIFIED26 = 26, + H264_NAL_UNSPECIFIED27 = 27, + H264_NAL_UNSPECIFIED28 = 28, + H264_NAL_UNSPECIFIED29 = 29, + H264_NAL_UNSPECIFIED30 = 30, + H264_NAL_UNSPECIFIED31 = 31, }; diff --git a/libavcodec/h2645_parse.c b/libavcodec/h2645_parse.c index cdf6395..875dbae 100644 --- a/libavcodec/h2645_parse.c +++ b/libavcodec/h2645_parse.c @@ -28,6 +28,7 @@ #include "bytestream.h" #include "hevc.h" +#include "h264.h" #include "h2645_parse.h" int ff_h2645_extract_rbsp(const uint8_t *src, int length, @@ -218,6 +219,47 @@ static const char *hevc_nal_unit_name(int nal_type) return hevc_nal_type_name[nal_type]; } +static const char *h264_nal_type_name[32] = { + "Unspecified 0", //H264_NAL_UNSPECIFIED + "Coded slice of a non-IDR picture", // H264_NAL_SLICE + "Coded slice data partition A", // H264_NAL_DPA + "Coded slice data partition B", // H264_NAL_DPB + "Coded slice data partition C", // H264_NAL_DPC + "IDR", // H264_NAL_IDR_SLICE + "SEI", // H264_NAL_SEI + "SPS", // H264_NAL_SPS + "PPS", // H264_NAL_PPS + "AUD", // H264_NAL_AUD + "End of sequence", // H264_NAL_END_SEQUENCE + "End of stream", // H264_NAL_END_STREAM + "Filler data", // H264_NAL_FILLER_DATA + "SPS extension", // H264_NAL_SPS_EXT + "Prefix", // H264_NAL_PREFIX + "Subset SPS", // H264_NAL_SUB_SPS + "Depth parameter set", // H264_NAL_DPS + "Reserved 17", // H264_NAL_RESERVED17 + "Reserved 18", // H264_NAL_RESERVED18 + "Auxiliary coded picture without partitioning", // H264_NAL_AUXILIARY_SLICE + "Slice extension", // H264_NAL_EXTEN_SLICE + "Slice extension for a depth view or a 3D-AVC texture view", // H264_NAL_DEPTH_EXTEN_SLICE + "Reserved 22", // H264_NAL_RESERVED22 + "Reserved 23", // H264_NAL_RESERVED23 + "Unspecified 24", // H264_NAL_UNSPECIFIED24 + "Unspecified 25", // H264_NAL_UNSPECIFIED25 + "Unspecified 26", // H264_NAL_UNSPECIFIED26 + "Unspecified 27", // H264_NAL_UNSPECIFIED27 + "Unspecified 28", // H264_NAL_UNSPECIFIED28 + "Unspecified 29", // H264_NAL_UNSPECIFIED29 + "Unspecified 30", // H264_NAL_UNSPECIFIED30 + "Unspecified 31", // H264_NAL_UNSPECIFIED31 +}; + +static const char *h264_nal_unit_name(int nal_type) +{ + av_assert0(nal_type >= 0 && nal_type < 32); + return h264_nal_type_name[nal_type]; +} + static int get_bit_length(H2645NAL *nal, int skip_trailing_zeros) { int size = nal->size; @@ -280,8 +322,8 @@ static int h264_parse_nal_header(H2645NAL *nal, void *logctx) nal->type = get_bits(gb, 5); av_log(logctx, AV_LOG_DEBUG, - "nal_unit_type: %d, nal_ref_idc: %d\n", - nal->type, nal->ref_idc); + "nal_unit_type: %d(%s), nal_ref_idc: %d\n", + nal->type, h264_nal_unit_name(nal->type), nal->ref_idc); return 1; }