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 */