From patchwork Sat Dec 21 18:02:41 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 16906 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 8DE5844958D for ; Sat, 21 Dec 2019 20:03:41 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6F20768A97C; Sat, 21 Dec 2019 20:03:41 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl1-f196.google.com (mail-pl1-f196.google.com [209.85.214.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 26F1968A69C for ; Sat, 21 Dec 2019 20:03:34 +0200 (EET) Received: by mail-pl1-f196.google.com with SMTP id g6so5493431plt.2 for ; Sat, 21 Dec 2019 10:03:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=+OaOGWIQIRCaHf8OaY2TIHLe6AOlptSFKi5Meolc82E=; b=A4BAIGEp+503KYwV6lQ/BS5L5uG1jj8luCpKBa+hEEIO00jWqkEiDnbdDaBQCFPAvS /87AtH0qoxGpeVTg8CfRpZhrccL7CSUbieua2BDQzSqZa6j3iL4aYDTne/njW3YPZRqY npwOdoMvpmQcmkEhhoBDTWstiNTmREOf2+3uvN3eD53Oj0qZhAOV5APtmZlljQMUOjUa SIr6nwtjWSigiS/S92dG8vOghqj6F/XETWKnAfqLyfOcWJcCZd554qVK5wYy3S1sarOF 66KJaA7RVN11tVzmiu2svLLAkenjvaj5wpDY8LNWtEK6sN3gNR4M98DCv4UIGZdea5bS Q1bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=+OaOGWIQIRCaHf8OaY2TIHLe6AOlptSFKi5Meolc82E=; b=WLjVQ5QaVf4GBsYLF8vQX0O2w+3L9S3x8ur+5540HNN88PjjX6OX4gwJc6YUHT+3nl 0FZqBcHpGLDVgu0Tj46ZDnv8tBjtscxHggcTwIlMxVBnB3W72CkKD39DUMuKbnZMnY5V m66gCM7EyQ9EY/q37YDQCkGHflKy7EJpqwNfx45ReWVlmnml2ainZ+L1h0tm63Dow29P dCptlBd8N5jOBvvvzWlcivyyf0vabI46vV8hhVXFAWgF3kH/VJ769mzHn41MGJz97c7l gfacbKQ9EqAyb5kAYk7EI/ysfXB/srE2dZmbPf64/05zloMJa6andT8clctX8oOSNG02 /wjg== X-Gm-Message-State: APjAAAXBb1tPTAkIFY2UFaIjGqDqUoOIrqBzMHtKW9X5pZ2GiWKQHLHA YJku5KY282IGhu/qPh3ZN+0EFEd5 X-Google-Smtp-Source: APXvYqzIhOzZdozo55N/MeT60svsqAUM+jFYnouzZWu+RmKoon5pOIzGIOXEcuizxGnl4KFYks6GJQ== X-Received: by 2002:a17:902:8497:: with SMTP id c23mr23006979plo.59.1576951412137; Sat, 21 Dec 2019 10:03:32 -0800 (PST) Received: from localhost.localdomain ([191.83.216.116]) by smtp.gmail.com with ESMTPSA id s196sm18223564pfs.136.2019.12.21.10.03.31 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 21 Dec 2019 10:03:31 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Sat, 21 Dec 2019 15:02:41 -0300 Message-Id: <20191221180252.6091-4-jamrial@gmail.com> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20191221180252.6091-1-jamrial@gmail.com> References: <20191221180252.6091-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 04/15] avcodec: add a Producer Reference Time AVPacketSideData 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: James Almer --- libavcodec/avcodec.h | 10 ++++++++++ libavcodec/avpacket.c | 22 ++++++++++++++++++++++ libavcodec/internal.h | 2 ++ 3 files changed, 34 insertions(+) diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 119b32dc1f..4b0e7c0853 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -1176,6 +1176,11 @@ typedef struct AVCPBProperties { uint64_t vbv_delay; } AVCPBProperties; +typedef struct AVProducerReferenceTime { + int64_t wallclock; + int flags; +} AVProducerReferenceTime; + /** * The decoder will keep a reference to the frame and may reuse it later. */ @@ -1410,6 +1415,11 @@ enum AVPacketSideDataType { */ AV_PKT_DATA_AFD, + /** + * Producer Reference Time data corresponding to the AVProducerReferenceTime struct. + */ + AV_PKT_DATA_PRFT, + /** * The number of side data types. * This is not part of the public API/ABI in the sense that it may diff --git a/libavcodec/avpacket.c b/libavcodec/avpacket.c index 858f827a0a..74845efcd2 100644 --- a/libavcodec/avpacket.c +++ b/libavcodec/avpacket.c @@ -741,3 +741,25 @@ int ff_side_data_set_encoder_stats(AVPacket *pkt, int quality, int64_t *error, i return 0; } + +int ff_side_data_set_prft(AVPacket *pkt, int64_t timestamp) +{ + AVProducerReferenceTime *prft; + uint8_t *side_data; + int side_data_size; + + side_data = av_packet_get_side_data(pkt, AV_PKT_DATA_PRFT, &side_data_size); + if (!side_data) { + side_data_size = sizeof(AVProducerReferenceTime); + side_data = av_packet_new_side_data(pkt, AV_PKT_DATA_PRFT, side_data_size); + } + + if (!side_data || side_data_size < sizeof(AVProducerReferenceTime)) + return AVERROR(ENOMEM); + + prft = (AVProducerReferenceTime *)side_data; + prft->wallclock = timestamp; + prft->flags = 0; + + return 0; +} diff --git a/libavcodec/internal.h b/libavcodec/internal.h index 9db3d36acb..5930dd0da0 100644 --- a/libavcodec/internal.h +++ b/libavcodec/internal.h @@ -392,6 +392,8 @@ AVCPBProperties *ff_add_cpb_side_data(AVCodecContext *avctx); int ff_side_data_set_encoder_stats(AVPacket *pkt, int quality, int64_t *error, int error_count, int pict_type); +int ff_side_data_set_prft(AVPacket *pkt, int64_t timestamp); + /** * Check AVFrame for A53 side data and allocate and fill SEI message with A53 info *