From patchwork Wed Jul 15 07:25:32 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Buzdyk X-Patchwork-Id: 21030 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id D2BD844AB0D for ; Wed, 15 Jul 2020 10:25:45 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id AA62F68809E; Wed, 15 Jul 2020 10:25:45 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f194.google.com (mail-lj1-f194.google.com [209.85.208.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B0F9C6805CE for ; Wed, 15 Jul 2020 10:25:38 +0300 (EEST) Received: by mail-lj1-f194.google.com with SMTP id e4so1451039ljn.4 for ; Wed, 15 Jul 2020 00:25:38 -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:mime-version :content-transfer-encoding; bh=Z9T+zSAeGZs8k6Fivy8Uz86UigTHusoZzpf752kr02c=; b=NidoZZAqrL/iPVmRv0VER8svsXTBZ9DrYg6waX/R6+7bcsKVNexuW0E4Wrok2QRJQe TFSmU6HJKqR0o9Ynb07Fph/jwnBLorjvCQ/8pa0XDYNVAV6iqRmKI9Rd3Y0t+F6lWDjp 39ZHN+3W4QLEG3CsbBy8+QVs+bJbQr3bybJevUgun+Y2Vr4H+iEBz611Mp91JNXW3Vxy WkxfZxyTLCZt5en5Qw99zh5bcYYXxVlcTndlpmdBbZmLtysBizpoKgbbKEGlqtgPFZis rB99FcmaMET+3EfNeMwwSNRJ+aegVhnt1l+PAqMDdXzFxYEt1Qq3RYKOj03AeS0nuGT6 vvMQ== 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:mime-version :content-transfer-encoding; bh=Z9T+zSAeGZs8k6Fivy8Uz86UigTHusoZzpf752kr02c=; b=iWKUpfRysgxNKSAc8OOQJeOq04kFbGduhEspt+CiQoqwk+uWd0x38smHeGbLyEnBnP F69azZn3MHLpqomM7nged3I36PIUmh2ZoCSAFm/XOf2mXBci0jRyQ7NQOBoRF2eu4h8h 12K0NQNyIrjhBE4iC6eyBvUFdfsQjvokFpzAATy+FZ4aPDj7UixQpe/wLnQkTHpVmWd7 KhwgIHf/2zGrSx6QNxkybvWrZY0iR9aanHg1QmR7Gi+YkeTxO61xekKn5q5U0TMVggsj BN8peRH6dkzETSUTeGijdrlCyWZ400NTfcsW4zdaGTSc3UUDvGz0olUwH2yJ7b4H3rhB NlYg== X-Gm-Message-State: AOAM532jYfpqRsGnEajG9J3eW1Q6FUqOqRjtHi0YAt9DICMkWwTVKWsf D21kyocpAvKHeQvAdRqpEj+iF3MIIUc= X-Google-Smtp-Source: ABdhPJyyofg+Trsm+zqv/wsYGwBcp8tCMP2uj2YyhmZDc3GoUU83gA4xIgHHuQBpMpiCG/zy2CC4zw== X-Received: by 2002:a2e:1641:: with SMTP id 1mr3994020ljw.73.1594797937634; Wed, 15 Jul 2020 00:25:37 -0700 (PDT) Received: from localhost.localdomain ([185.57.31.227]) by smtp.gmail.com with ESMTPSA id y2sm286374lji.8.2020.07.15.00.25.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Jul 2020 00:25:37 -0700 (PDT) From: Dima Buzdyk To: ffmpeg-devel@ffmpeg.org Date: Wed, 15 Jul 2020 17:25:32 +1000 Message-Id: <20200715072533.550579-1-dima.buzdyk@gmail.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 1/2] avdevice/v4l2: add support for HEVC payloads 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: Dima Buzdyk Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" * Add mapping for V4L2_PIX_FMT_HEVC payloads * Request bitstream parsing just like H264 Signed-off-by: Dima Buzdyk --- libavdevice/v4l2-common.c | 3 +++ libavdevice/v4l2.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/libavdevice/v4l2-common.c b/libavdevice/v4l2-common.c index b5b4448a31..353e83efdd 100644 --- a/libavdevice/v4l2-common.c +++ b/libavdevice/v4l2-common.c @@ -55,6 +55,9 @@ const struct fmt_map ff_fmt_conversion_table[] = { #ifdef V4L2_PIX_FMT_H264 { AV_PIX_FMT_NONE, AV_CODEC_ID_H264, V4L2_PIX_FMT_H264 }, #endif +#ifdef V4L2_PIX_FMT_HEVC + { AV_PIX_FMT_NONE, AV_CODEC_ID_HEVC, V4L2_PIX_FMT_HEVC }, +#endif #ifdef V4L2_PIX_FMT_MPEG4 { AV_PIX_FMT_NONE, AV_CODEC_ID_MPEG4, V4L2_PIX_FMT_MPEG4 }, #endif diff --git a/libavdevice/v4l2.c b/libavdevice/v4l2.c index 365bacd771..70e0f620f8 100644 --- a/libavdevice/v4l2.c +++ b/libavdevice/v4l2.c @@ -960,7 +960,7 @@ static int v4l2_read_header(AVFormatContext *ctx) if (codec_id == AV_CODEC_ID_RAWVIDEO) st->codecpar->codec_tag = avcodec_pix_fmt_to_codec_tag(st->codecpar->format); - else if (codec_id == AV_CODEC_ID_H264) { + else if (codec_id == AV_CODEC_ID_H264 || codec_id == AV_CODEC_ID_HEVC) { st->need_parsing = AVSTREAM_PARSE_FULL_ONCE; } if (desired_format == V4L2_PIX_FMT_YVU420) From patchwork Wed Jul 15 07:25:33 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Buzdyk X-Patchwork-Id: 21031 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 0202844ABAB for ; Wed, 15 Jul 2020 10:26:35 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D55CD68828E; Wed, 15 Jul 2020 10:26:34 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f194.google.com (mail-lj1-f194.google.com [209.85.208.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 49C8568809E for ; Wed, 15 Jul 2020 10:26:28 +0300 (EEST) Received: by mail-lj1-f194.google.com with SMTP id b25so1429655ljp.6 for ; Wed, 15 Jul 2020 00:26:28 -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=LvAOtRF1pQq5AVfp1bj24K/4TkJysXbHzNT5VV9c8Jc=; b=VVec8izva620bOqdetErOG/qaBQrfqBcWOHkKeWmZiSeJiRGruAxU0jZLti2QBbgxc Q3aHzxiihtG+NOUmeknDIhNXBLQzynO0mxYSlhNW1rLopot/p+ezUEd0SeNmii63abov XxyK/IYuu/p/a/wp0tjTLPh0aJUp1IzHTVH013bHGOU7JNJ6sBqm8QwpraCwu8DNb+WX zlJ6ON9SG33YbrVdvULs9hdw37K3zax5S9Gj8DQ0d1FNajKm04D6aDJBBwNCh3oH6Tv6 i8Fz9WGQhPpD9Xgpclha5DdLSl09XIggO/6tKvVc0S99zvt36GOeg6XXSrj+Y9OA2fqD uyfA== 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=LvAOtRF1pQq5AVfp1bj24K/4TkJysXbHzNT5VV9c8Jc=; b=I/fI+03ou94pErQEsPpG9Q9dXRCaZcjz2UAprsSQXpcY0UgNWtmKCBDUvRB4EPTBt3 Cjcb+82gEeEaglnMRp7rCjxd3pPYKlHqxv2dFLFYf5aOVWs4YektqLD9Of+FRpYyiX7+ E6ogRBHSE8XW9i+ixy4euEfWOiHrxLWsM0SjPgFNEs1Xj2L22FwaDRT5HENV65Dqpw43 lNVT9Hp+/ztePVBpQiV0nLXA8nwtCAbVsPMStVb5YpofAJc/wawmUlyChiZRyg1r1Ckg Zf2OsUTvx/Nui7f5iOfXYa0PT381sa6aQFhSOhkGAjA5eAdQRbhWzwPOXcw+SjaK9DGk ADEQ== X-Gm-Message-State: AOAM530iiK9leoh0w/B1xVXXTZnnueuGuNyNXI63jKGO0uil+qcdeEki SytarPwGEH1z0c+6gJc9F6kI43woDto= X-Google-Smtp-Source: ABdhPJziI9btIseDxKcPzgfmD1AJgg80CXZSvA1apPP576ons034VXizHuqYDlW8xa5y7B5wlWddsQ== X-Received: by 2002:a2e:2c18:: with SMTP id s24mr3848755ljs.291.1594797987391; Wed, 15 Jul 2020 00:26:27 -0700 (PDT) Received: from localhost.localdomain ([185.57.31.227]) by smtp.gmail.com with ESMTPSA id y2sm286374lji.8.2020.07.15.00.26.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Jul 2020 00:26:27 -0700 (PDT) From: Dima Buzdyk To: ffmpeg-devel@ffmpeg.org Date: Wed, 15 Jul 2020 17:25:33 +1000 Message-Id: <20200715072533.550579-2-dima.buzdyk@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200715072533.550579-1-dima.buzdyk@gmail.com> References: <20200715072533.550579-1-dima.buzdyk@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 2/2] avcodec/hevc_parser: handle PARSER_FLAG_ONCE 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: Dima Buzdyk Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" * make HEVC parser respect PARSER_FLAG_ONCE flag Signed-off-by: Dima Buzdyk --- libavcodec/hevc_parser.c | 4 ++++ libavformat/avformat.h | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/libavcodec/hevc_parser.c b/libavcodec/hevc_parser.c index 5af4b788d5..d0c9aa6e44 100644 --- a/libavcodec/hevc_parser.c +++ b/libavcodec/hevc_parser.c @@ -331,6 +331,10 @@ static int hevc_parse(AVCodecParserContext *s, AVCodecContext *avctx, if (!is_dummy_buf) parse_nal_units(s, buf, buf_size, avctx); + if (s->flags & PARSER_FLAG_ONCE) { + s->flags &= PARSER_FLAG_COMPLETE_FRAMES; + } + *poutbuf = buf; *poutbuf_size = buf_size; return next; diff --git a/libavformat/avformat.h b/libavformat/avformat.h index e91e7f1d33..044921b2e4 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -786,7 +786,7 @@ enum AVStreamParseType { AVSTREAM_PARSE_FULL, /**< full parsing and repack */ AVSTREAM_PARSE_HEADERS, /**< Only parse headers, do not repack. */ AVSTREAM_PARSE_TIMESTAMPS, /**< full parsing and interpolation of timestamps for frames not starting on a packet boundary */ - AVSTREAM_PARSE_FULL_ONCE, /**< full parsing and repack of the first frame only, only implemented for H.264 currently */ + AVSTREAM_PARSE_FULL_ONCE, /**< full parsing and repack of the first frame only, only implemented for H.264 and HEVC currently */ AVSTREAM_PARSE_FULL_RAW, /**< full parsing and repack with timestamp and position generation by parser for raw this assumes that each packet in the file contains no demuxer level headers and just codec level data, otherwise position generation would fail */