From patchwork Wed Nov 9 19:40:15 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Buzdyk X-Patchwork-Id: 39245 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:999a:b0:a4:2148:650a with SMTP id ve26csp507523pzb; Wed, 9 Nov 2022 11:40:35 -0800 (PST) X-Google-Smtp-Source: AMsMyM5KjN/ggiJMT/fjp4m1mwS1G0XoY6vFzN1bj37oWL/fgZYu8sk61HgYixxhijN4E7Uh8irQ X-Received: by 2002:a17:906:4551:b0:7ad:84cc:fb33 with SMTP id s17-20020a170906455100b007ad84ccfb33mr1698610ejq.380.1668022835044; Wed, 09 Nov 2022 11:40:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668022835; cv=none; d=google.com; s=arc-20160816; b=e7EP3fEB24gbKIPDh64cWqKRmEJtYk1BnOXmoEObHP7IXbhl1zvTBKvYvqfnd/VtyX 11R2dIXQOO+3+wUfsqHczABOoGBGAA0TeCAQf/Cbk3mS9Olfbt1onpXPcWoIzMstQFH4 q8A8neVytuiAI8vEznRBLp6xfRRDqYDKC7hu+xEWo6fpcsz6iSHQb6qdoz7hpKr/okmk jUt+q+iEgcmGRR6a70+LhcFtqM50fc0vqJQMKWXAnAngl1uCL1qrn7tIxgAn+AZ2Fd1+ V/GUzE73dU5T/QCOrHz/92j822W9q356HCgvQEAvw6LkJk97Z7jFHrKSsvWyE2PE6kKw b3Aw== 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:message-id:date:to:from :dkim-signature:delivered-to; bh=UzG3VEyUD6nq5vuyjer/uoNIc/uFZ47JToJEzPPJS/k=; b=ScvPMfNMSv4HI/BjAODCRiaveSARmVMnb7yaDyLYb2Gl3kfkCqZnIbg3fRgqrLlBBh GQuYSE3pQPc9z9mhqIH9cjODiP/aOJDPmIFmoFLVQZ6Atwse+iKO7Rpc977sqiQSaks1 RjT/xuGYr/VuTQ6jPC88tN+5G6XCQlb1u/bW7KutZGpleiHlXD8PZFiYUGs4xt2oFEtO YKSvFTr9ChZvDcTbI9ppGFGV1N1lBQDmuGHngnZ0fAhZXbZ79tDIb3mcp+5nnL/UgL/3 LgmaQdwHBc2Tf/pQ7JCJd2wEcJwOm1jdwMtbRjoNLzy23seJ2vy2KBGPG32qcRc/4jdZ 2QmA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=Zx6lr4C8; 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 hp30-20020a1709073e1e00b00783df65ae5esi15256565ejc.683.2022.11.09.11.40.34; Wed, 09 Nov 2022 11:40:35 -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=Zx6lr4C8; 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 4184E68BAD5; Wed, 9 Nov 2022 21:40:32 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f45.google.com (mail-lf1-f45.google.com [209.85.167.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7CE4668B59C for ; Wed, 9 Nov 2022 21:40:25 +0200 (EET) Received: by mail-lf1-f45.google.com with SMTP id r12so27528484lfp.1 for ; Wed, 09 Nov 2022 11:40:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=oF9kSMVKeAzMwPLlIHNgudsJ45VX77Ku+o/WZju7brc=; b=Zx6lr4C89tcMJi5LOcs1DO//rGk4uIFgg54x+XoxonUoWqXTYNlg7k3JBpx+OzHQ+m OnVfA+y5IRMw1a6Wz3CaA/U1qeojf7nCLNvN18iUuooHZrv27hdUi6xzT8vx4T9iCTNb iA2hlqLWHqOlg00cxzRhjsatEpZzjpi8L3zaJ677xNv+m7WjLktlGeMUXZ6Cz3hyLUzu 9rhFbUS/rKP+yTy+Fq1RqPDr4ZV7OTU2jmW41s9S+LZ3KahPmgLh1f+ZEwh5wmvpPREx rfj6waSEwUwGMM+8YYxmihiSxpQOD3Rx4Qm6AETfxEbgvTxuxpMzSqrq2crWrr72cCVj QmUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=oF9kSMVKeAzMwPLlIHNgudsJ45VX77Ku+o/WZju7brc=; b=gGK6OlSbldbhu08C1E1UgMdxuf5mH+NeJinaXbFj6niGHt3CMW9T50zKVd1ZAfnkzN 0C3GpbAYz/pCrk28jxOVCzXW4nTWLUzNkjiDUI+u6TIuqJcGs9W/THG92rW8t9gaolOz rGtCBZfNZGhqw11qhMm4nSxaFILS+kOtocB5ORb1ZxlJGuTC9WmzD3ovyoMXZHukfaSp sWvdbXERWAbSF1de6Lt2svWRBDOf7yjC5gJqcRQg998TOBUFiKWSs49kAZQMR/pY/xG7 F8xc4NbC6A+a64WybzCBkQY2loP8+J3fhrA/oYcg6O919eORmur5tTjYPz1cW3xV7vcD ukLw== X-Gm-Message-State: ACrzQf1EP9xKhzl1nMPjRwdUd0o9tS62dy5I/3HF+c9ZX3hk0x7C8Fbc 6wQ1v9kEuPQMCMA4l93tQIC0mFOT0gw= X-Received: by 2002:ac2:58e6:0:b0:4b0:246a:f722 with SMTP id v6-20020ac258e6000000b004b0246af722mr23421782lfo.117.1668022824558; Wed, 09 Nov 2022 11:40:24 -0800 (PST) Received: from db360.apsetup.link ([37.99.37.17]) by smtp.gmail.com with ESMTPSA id v11-20020a2ea60b000000b0027713ef5360sm2326301ljp.71.2022.11.09.11.40.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Nov 2022 11:40:24 -0800 (PST) From: Dima Buzdyk To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Nov 2022 01:40:15 +0600 Message-Id: <20221109194015.55759-1-dima.buzdyk@gmail.com> X-Mailer: git-send-email 2.37.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] lavd/v4l2: add HEVC streams support 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: Dima Buzdyk Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: Uo8w4RtzBxjB Signed-off-by: Dima Buzdyk --- libavcodec/hevc_parser.c | 4 ++++ libavdevice/v4l2-common.c | 3 +++ libavdevice/v4l2.c | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/libavcodec/hevc_parser.c b/libavcodec/hevc_parser.c index 59f9a0ff3e..8f99a277a1 100644 --- a/libavcodec/hevc_parser.c +++ b/libavcodec/hevc_parser.c @@ -330,6 +330,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/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 5e85d1a2b3..5558435827 100644 --- a/libavdevice/v4l2.c +++ b/libavdevice/v4l2.c @@ -972,7 +972,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) { avpriv_stream_set_need_parsing(st, AVSTREAM_PARSE_FULL_ONCE); } if (desired_format == V4L2_PIX_FMT_YVU420)