From patchwork Wed Jul 15 06:50:57 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Buzdyk X-Patchwork-Id: 21029 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 2501B44B141 for ; Wed, 15 Jul 2020 09:58:25 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EBD7768B45C; Wed, 15 Jul 2020 09:58:24 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f67.google.com (mail-ej1-f67.google.com [209.85.218.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6F45C68A9BB for ; Wed, 15 Jul 2020 09:58:17 +0300 (EEST) Received: by mail-ej1-f67.google.com with SMTP id p20so993969ejd.13 for ; Tue, 14 Jul 2020 23:58:17 -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=Hy946LCUFIdUkX41+C7NjNozn1JivokMk0roG8k7V8E=; b=N2lvzEUwn9O7IELZq5Xx3vhgmcKhQsaIFfrK5C1fYe/1JMKy+aKmUzIxk2clQV1NVV Wh/TebOyPWdesr9xzbuFS8IMcz7J5KbH7yMIMSQuwgbrNFoK8ExPleNVxw6yTV8VcdF0 MNNoDlB/vrLpxqfbaibKcwELsdmsuy8hXTsN5ZyEOlxpW/uf49YVI6nktw189B2x40Nb Z28lAzuEz4JOPLQUQjXg049Bw/ntdOzdavMJ80o3W6Kxr5e0w7xoxSevCPWkdeQfuPua V07/WJgUIfekpnjuMMKH9MMIYy5DiLLhoaD6hAoKs5O+hTSTqt8ECg5SFZr8OZsr60ZB RI+Q== 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=Hy946LCUFIdUkX41+C7NjNozn1JivokMk0roG8k7V8E=; b=a3savKrsab/okPpX/GvgLW11RI9/pO6Gc+3SnSdjoNfjLddHKLaApD/iMzfFrA7zDC BWfpixU+pehdsLVcmLfkd7/ZBM03WAXB+Oel73N8Cho1lXMAv5wUMrUgjkL279lOZQLV k/fF1PDM7hvR+xDUtXaMuAcgTs1XJEKP068vyowvhCbkmVrfzRym/7jCVH5zFeC7bhE+ d06z8J6+uAx1f61XXYsSd2QFSa8xxNvQVOUsoi9cxXMZYWxrgozQuxL3DG9YbSvBRnmd tt5XYBJjyvjAI10Pe03fQLEzyyoT2vFH9EEP+XYcrqU7lAGMYOKDIoJ+z1AOUw3uXVZF FBMA== X-Gm-Message-State: AOAM533p7NHBJYWJaOuIWNtnY1eux1zXnHggcWGwLh4DgToPObgDTiLA eQCbog7Ph+OnMRjEQvvHIGLTlsedY2o= X-Google-Smtp-Source: ABdhPJxSUh6FG/ubEIV+q77rZ7QSulqLi1tbSvpA6KYU/eHQ74kyAs27pbeHTeBp70mV//Avo6z+ZA== X-Received: by 2002:a2e:8954:: with SMTP id b20mr4266009ljk.262.1594795866036; Tue, 14 Jul 2020 23:51:06 -0700 (PDT) Received: from localhost.localdomain ([185.57.31.227]) by smtp.gmail.com with ESMTPSA id o1sm288457lfi.92.2020.07.14.23.51.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jul 2020 23:51:05 -0700 (PDT) From: Dima Buzdyk To: ffmpeg-devel@ffmpeg.org Date: Wed, 15 Jul 2020 16:50:57 +1000 Message-Id: <20200715065057.548738-2-dima.buzdyk@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200715065057.548738-1-dima.buzdyk@gmail.com> References: <20200715065057.548738-1-dima.buzdyk@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 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 */