From patchwork Thu Oct 21 13:48:41 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Derek Buitenhuis X-Patchwork-Id: 31201 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2084:0:0:0:0 with SMTP id a4csp624959ioa; Thu, 21 Oct 2021 06:49:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJygJt2b0CKl3vN1MlLHNg8jl2Kxc/9LEvB5cyZ9rcopapUkZR/9kR7arPLoc0n7squGVmq6 X-Received: by 2002:a17:906:2c53:: with SMTP id f19mr7739605ejh.326.1634824145866; Thu, 21 Oct 2021 06:49:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1634824145; cv=none; d=google.com; s=arc-20160816; b=ymXrJEucykJzeoNZO8bSRfWOBBPhCzv2LplxGiLzz3DCo+bjuXABVeVDujl94FRhYl 8zaaKvhDaq3mZKBTN4ry5pPwfYMCM2/oXWAGMbpres51KQlrjPlwGILMDi3m/wbq4QnN ZiUpQsVAkAAqD9NT47HLZmNqrBFpo9Wa6vQ9FgmOp1FKMJf7S+h6r6gZg45kZ6qEgUZ7 JNHcrZqJpWEyOL4lZ3yIBISlQBBI2SNJ1fvp43YggJMB7L+E+4OGEuF4vbaouWFyngch XaX6yTW9Ic7T6HfQaWdePjl2CKWPBJNbr1YFFmPgjHtuWXPMJwHAqH8j2l9YiH25s91Q GbhQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=HJdWbaaEvRTgEBFlRavE2qg+G/jUR3pX7J48zqLN2eQ=; b=HfYWEsWf0/vBQIzn00KiWFMD50s+A24TSBzB+9BGh4XpUGnJOzdTTUXVd6PFc8+DUz aL8dadbzAeHkeITp3M6ICT6rUehUYSL94J58ZruPnyScc6+abNHQbI/310klxA6pYZGp cFgtqjrQyb6YBWjLhtwfBKBheCnr2cQDfoyiuDj7P/r22gJFgWpF/AQLkzO2ZyYjkDuI CDygPtIuqgAe9uMaGUBAPYcQ/nhBMsE2u5PImrAIxzvhjQV1wIMOrJi87Ll35jC0CHqw 2vamJvi/orMl5UM441uQ97SJAI6iVKrX3yZUBahEHMJsJOWTobNABoZ9KFWk1HqStvX/ xBRQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=HircsLNZ; 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 hb44si9460938ejc.38.2021.10.21.06.49.04; Thu, 21 Oct 2021 06:49:05 -0700 (PDT) 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=HircsLNZ; 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 E07CF68A360; Thu, 21 Oct 2021 16:49:00 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1023568818E for ; Thu, 21 Oct 2021 16:48:55 +0300 (EEST) Received: by mail-wr1-f47.google.com with SMTP id r7so1167883wrc.10 for ; Thu, 21 Oct 2021 06:48:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=EDVbIe1KuVinqag8Wq3NlNiUwdnmkCtlfdvLUR2F200=; b=HircsLNZb1WdPXsqp1wL4P10UX6AomOtz9sqI0NjNRY6T4Y1AOPYZPklDGeApFnqkE sXT/AH6IbQdyBy10y3LjgDlhEjoAKLaDdIPa3CmtxMTlACN8+ZXcfSis6Pa9uE8Ku8DF 5cmO09Vh0CWQV61lrjpgbK10vcqo+WBBl+7RAGtGemyWrLnMAX2ZGg7BQIzavos6q7vY zwdUAOeQhyRd9mLhaVD0IVYBXJAQ5DiMzGJKJV/PTWXWPO6jAU7vyRv7zilBSxrfB0di 7LKBGlENn4vLPafpQoQdzB6eRIs1Eabnr7W1rzQlJPUNoeR/nW/aLkgTLPDYFU6PTsIa czCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=EDVbIe1KuVinqag8Wq3NlNiUwdnmkCtlfdvLUR2F200=; b=vl+V8S5LPkBqeE+MKZGF3Gr916c9EvJZxBP/iKUAPRtZGHUgOcwCTabyDWj0JgrYsq 3RWrSxnMvmHT2mY2iBsPjGnAsOcJjxrN2le8Day/2ADeo/i9KfpTZ673pvEnMxgUvHc5 EuCOkkpbCnFCc0ffacbQhSXEYkFfz9XdedMM4h9sgq6gnVSS+xodsfPIV+O+k7TPG88g bSGopDUJu9+3otz5VTJgtnzBq21Nq+zlzC7PsORRlrKtS4EMIR29km+jBoH6j6KMYiIw J/J6Fl2PXNlo1uYry5+aKCOFLAWSz/m81m/z6a1TCQSLvl5bZ0Ux38q1IfnKPrKN9Ped DcOA== X-Gm-Message-State: AOAM532H/SozuvRCQHCpCRtzta6sj99ksBDzefKDLarR23tqw97dZj9a 7w/HRJP2XFn2WAFOif7OeHRL66tSHC4= X-Received: by 2002:a5d:64a3:: with SMTP id m3mr7863498wrp.364.1634824134055; Thu, 21 Oct 2021 06:48:54 -0700 (PDT) Received: from localhost.localdomain ([82.129.92.120]) by smtp.gmail.com with ESMTPSA id x21sm7938408wmc.14.2021.10.21.06.48.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Oct 2021 06:48:53 -0700 (PDT) From: Derek Buitenhuis To: ffmpeg-devel@ffmpeg.org Date: Thu, 21 Oct 2021 14:48:41 +0100 Message-Id: <20211021134843.1436241-2-derek.buitenhuis@gmail.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20211021134843.1436241-1-derek.buitenhuis@gmail.com> References: <20211021134843.1436241-1-derek.buitenhuis@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/3] avutil: Add Dolby Vision RPU side data type 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: VTNJm8uR+bDk Signed-off-by: Derek Buitenhuis --- All known encoders, etc. expect RPUs in this format, to my knowledge. (There is no spec for parsing the RPUs, even privately, and not a single piece of software that would benefit from that - and it is a legal minefield which I am not going to touch.) The comment says "with emulation bytes intact" but technically, RPUs do not have emulation bytes, since they are not actually NALs, but just masquerade as them, and as such, encoder APIs expect them to be there. --- doc/APIchanges | 3 +++ libavutil/frame.c | 1 + libavutil/frame.h | 7 +++++++ libavutil/version.h | 2 +- 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/doc/APIchanges b/doc/APIchanges index 7b267a79ac..8bc9c7eb6e 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -14,6 +14,9 @@ libavutil: 2021-04-27 API changes, most recent first: +2021-XX-XX - xxxxxxxxxx - lavf 57.8.100 - frame.h + Add AV_FRAME_DATA_DOVI_RPU. + 2021-09-21 - xxxxxxxxxx - lavu 57.7.100 - pixfmt.h Add AV_PIX_FMT_X2BGR10. diff --git a/libavutil/frame.c b/libavutil/frame.c index 2617cda2b5..23b52f7b66 100644 --- a/libavutil/frame.c +++ b/libavutil/frame.c @@ -728,6 +728,7 @@ const char *av_frame_side_data_name(enum AVFrameSideDataType type) case AV_FRAME_DATA_SEI_UNREGISTERED: return "H.26[45] User Data Unregistered SEI message"; case AV_FRAME_DATA_FILM_GRAIN_PARAMS: return "Film grain parameters"; case AV_FRAME_DATA_DETECTION_BBOXES: return "Bounding boxes for object detection and classification"; + case AV_FRAME_DATA_DOVI_RPU: return "Dolby Vision RPU Data"; } return NULL; } diff --git a/libavutil/frame.h b/libavutil/frame.h index ff2540a20f..29839211ca 100644 --- a/libavutil/frame.h +++ b/libavutil/frame.h @@ -187,6 +187,13 @@ enum AVFrameSideDataType { * as described by AVDetectionBBoxHeader. */ AV_FRAME_DATA_DETECTION_BBOXES, + + /** + * Dolby Vision RPU data, suitable for passing to x265 + * or other libraries. Array of uint8_t, with NAL emulation + * bytes intact. + */ + AV_FRAME_DATA_DOVI_RPU, }; enum AVActiveFormatDescription { diff --git a/libavutil/version.h b/libavutil/version.h index 896e348d80..eeb33b388c 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -79,7 +79,7 @@ */ #define LIBAVUTIL_VERSION_MAJOR 57 -#define LIBAVUTIL_VERSION_MINOR 7 +#define LIBAVUTIL_VERSION_MINOR 8 #define LIBAVUTIL_VERSION_MICRO 100 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ From patchwork Thu Oct 21 13:48:42 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Derek Buitenhuis X-Patchwork-Id: 31200 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2084:0:0:0:0 with SMTP id a4csp625181ioa; Thu, 21 Oct 2021 06:49:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyn30Um5aAWMEMLKcqv4plHGNKGzDUsnHa0liwWp94X3Tb5MWtGwlGZkGr/acRynv53J9IJ X-Received: by 2002:aa7:d54e:: with SMTP id u14mr7884112edr.2.1634824157467; Thu, 21 Oct 2021 06:49:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1634824157; cv=none; d=google.com; s=arc-20160816; b=HbpSC5NaOa6C0OiryeNFklqH8jrz+qvaE+m5k5HzAtmAeU1luSlO/NlpbTp8QBttHH /01uvihrXGuQLW6/8UrJ6S9kHzpklxIgJq7JRn9kYNdM4GLVoeJVWZJc96p9Z6Phe100 ANYp+ij6aRLFW3ZTrjXngM/1T+q7mdleeeXG+9mXMVBsktVfpjuPgVbdbbA2n1w4pd/i +rRo7T0e87ekTYKD26xWr8KKL5ckvN+ReQdhNks1RLPrzS4fQuXWa0zE8gI0Qp+2K7lm Ew9BC3SmQEKo1osJ1erI2KpzWDMaEoq0VCMj0nR3lpbVcqADKfdoFNP8h1g/209V5vru r+zA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=YBGMK+Tsu3aksyYO0HwbuKV16GKYiDjpi7qVgoa4Oyk=; b=fKboy5do+DTdeVQz4G246NQ668V7QuwksjuBzllnuoIfXAyL2Ys3vdHNp6IfLmnkRJ 2F/nu43sM3RzX+LT9GkT7mJtRY/oYD3NTaMsXrSggP8m3RQkguKYBh1OIdEd2J4ZYXMV bOgZSsHPv+ltkjeitnxXLRvekENqezJMQfS/KRSofEYdtCuIRy8NSmFOQYjYsR2ZdfPr KfbuStA/ZbdUjBsinC12FNTOAS7wJd2wXJdvT2lVlJx3O8ALc+GfaSDVuRk845C0RpU9 UQpppq2cmMaKWBXCQRfFMJDXjzPDyaLYzXi/EnRpk8qKehvob6O3z5notcd62+L17RXY BdYw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=lDvvfE64; 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 qw28si10653166ejc.645.2021.10.21.06.49.17; Thu, 21 Oct 2021 06:49:17 -0700 (PDT) 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=lDvvfE64; 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 5E5276899A7; Thu, 21 Oct 2021 16:49:09 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 772376807C5 for ; Thu, 21 Oct 2021 16:49:02 +0300 (EEST) Received: by mail-wm1-f46.google.com with SMTP id 67-20020a1c1946000000b0030d4c90fa87so790521wmz.2 for ; Thu, 21 Oct 2021 06:49:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=BxnUazshFHigBrhW+qTAn12j6ZOPlw/MNP8wPx0Z9Xc=; b=lDvvfE64ZkIfMXtp0oMhLGbyuuL17mrGmRVwfNhOifcWsEgAAklM/gmtq7DfmwqDJe HK0AT4yoDUhfgPfQN+ZN6YSbyJremSHq+Vi2lP9oH9gOYvUyDM7v3UJ4f6L8As9FLb8k XfxxrPuNpHdlvgil1XYQGgOZiwUcfkG42OxYEXYmwbVwocnFHjDHH3xK/8Tr8HKN/iCD +bboYdnKRnb3CUdb/WaFsVtzGijM/TtAmjRR126HWFvf1TgdEJWwCiJWoV0MTANz0QZh AZ0cOX1cby3wSfmvF4BlWVuHtKWpJ4V0VhgoADF79Mv8uDYzpIqydhWkZsenWRT7W2oe hjpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=BxnUazshFHigBrhW+qTAn12j6ZOPlw/MNP8wPx0Z9Xc=; b=wA1hTdJSEGDDSQm5UVeasNOnsA7wEbK2oB+O4ttMqPfeELxIJ/TWtbzLBSstFXKcFB U2qC+PxPv5WFaCmexUkduaKCZoDEjXIx0gZWg4gE/lhk2OZvlXN9peIl9j3LE90NQwoD yWd9hSX8QJD9vw9xYDdU4z/fhs5a0qyRErabPknfHvXDKA8hck2XPpgs4JWe80tyZtYc zLWFQeQ27e4IQDJ61zhVpetluPTR9bOLH2iF1AcAGaC+WMRLAcP4YHwsqlE2gG2pyW7v xiL6ZIw++CfRCECTLGg3UHzA3iUNbWsd5oqugdhRQMiCdVoKsiRyvfsuSdgF0rw5bZmE cwIg== X-Gm-Message-State: AOAM531cycYkJJqRJHNtdShdS4qmvSNIa7bfwM0Ic7yCD3O2xZyb5gk2 mWQBydhahGNfYONiDMnpgOTffZGtIKM= X-Received: by 2002:a1c:4302:: with SMTP id q2mr21847159wma.133.1634824134662; Thu, 21 Oct 2021 06:48:54 -0700 (PDT) Received: from localhost.localdomain ([82.129.92.120]) by smtp.gmail.com with ESMTPSA id x21sm7938408wmc.14.2021.10.21.06.48.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Oct 2021 06:48:54 -0700 (PDT) From: Derek Buitenhuis To: ffmpeg-devel@ffmpeg.org Date: Thu, 21 Oct 2021 14:48:42 +0100 Message-Id: <20211021134843.1436241-3-derek.buitenhuis@gmail.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20211021134843.1436241-1-derek.buitenhuis@gmail.com> References: <20211021134843.1436241-1-derek.buitenhuis@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/3] avcodec/hevcdec: Export Dolby Vision RPUs as side data 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: WL2VZwkeSOnU Signed-off-by: Derek Buitenhuis --- * The NAL reordering approach is a result of discussions with Anton and James a few months ago. * I've put the NAL reordering in ff_h2645_packet_split, rather than a bitstream filter for a few reasons: * I don't think having a decoder's behavior rely on the presence of a bitstream filter is good architecture / design. * This spliting is only usd or useful to decoding. --- libavcodec/h2645_parse.c | 28 ++++++++++++++++++++++++++++ libavcodec/hevcdec.c | 32 ++++++++++++++++++++++++++++++++ libavcodec/hevcdec.h | 3 +++ libavcodec/version.h | 2 +- 4 files changed, 64 insertions(+), 1 deletion(-) diff --git a/libavcodec/h2645_parse.c b/libavcodec/h2645_parse.c index 6fbe97ad4a..04348c3a73 100644 --- a/libavcodec/h2645_parse.c +++ b/libavcodec/h2645_parse.c @@ -517,6 +517,34 @@ int ff_h2645_packet_split(H2645Packet *pkt, const uint8_t *buf, int length, pkt->nb_nals++; } + /* + * Due to limitions in avcodec's current frame threading code, it cannot + * handle adding frame side data in any place except before the slice has + * started decoding. Since Dolby Vision RPUs (which appear as NAL type 62) + * are appended to the AU, this is a poblematic. As a hack around this, we + * move any RPUs to before the first slice NAL. + */ + if (codec_id == AV_CODEC_ID_HEVC && pkt->nb_nals > 1 && pkt->nals[pkt->nb_nals - 1].type == HEVC_NAL_UNSPEC62 && + pkt->nals[pkt->nb_nals - 1].data[0] == 0x7C && pkt->nals[pkt->nb_nals - 1].data[1] == 0x01) { + + int first_non_slice = 0; + H2645NAL *tmp = av_malloc(pkt->nb_nals * sizeof(H2645NAL)); + if (!tmp) + return AVERROR(ENOMEM); + + for (int i = pkt->nb_nals - 1; i >= 0; i--) { + if (pkt->nals[i].type < HEVC_NAL_VPS) + first_non_slice = i; + tmp[i] = pkt->nals[i]; + } + + pkt->nals[first_non_slice] = pkt->nals[pkt->nb_nals - 1]; + for (int i = first_non_slice + 1; i < pkt->nb_nals; i++) + pkt->nals[i] = tmp[i - 1]; + + av_free(tmp); + } + return 0; } diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index 246ffd7d80..5ccee2aa4e 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -2950,6 +2950,17 @@ static int set_side_data(HEVCContext *s) } } + if (s->rpu_buf) { + AVFrameSideData *rpu = av_frame_new_side_data(out, AV_FRAME_DATA_DOVI_RPU, s->rpu_buf_size); + if (!rpu) + return AVERROR(ENOMEM); + + memcpy(rpu->data, s->rpu_buf, s->rpu_buf_size); + + av_freep(&s->rpu_buf); + s->rpu_buf_size = 0; + } + return 0; } @@ -3224,6 +3235,23 @@ static int decode_nal_unit(HEVCContext *s, const H2645NAL *nal) case HEVC_NAL_AUD: case HEVC_NAL_FD_NUT: break; + case HEVC_NAL_UNSPEC62: + /* + * Check for RPU delimiter. + * + * Dolby Vision RPUs masquerade as unregistered NALs of type 62 and start with + * 0x7C01. + */ + if (nal->size > 2 && nal->data[0] == 0x7C && nal->data[1] == 0x01) { + s->rpu_buf = av_malloc(nal->raw_size - 2); + if (!s->rpu_buf) + return AVERROR(ENOMEM); + + memcpy(s->rpu_buf, nal->raw_data + 2, nal->raw_size - 2); + + s->rpu_buf_size = nal->raw_size - 2; + } + break; default: av_log(s->avctx, AV_LOG_INFO, "Skipping NAL unit %d\n", s->nal_unit_type); @@ -3512,6 +3540,8 @@ static av_cold int hevc_decode_free(AVCodecContext *avctx) pic_arrays_free(s); + av_freep(&s->rpu_buf); + av_freep(&s->md5_ctx); av_freep(&s->cabac_state); @@ -3754,6 +3784,8 @@ static void hevc_decode_flush(AVCodecContext *avctx) HEVCContext *s = avctx->priv_data; ff_hevc_flush_dpb(s); ff_hevc_reset_sei(&s->sei); + av_freep(&s->rpu_buf); + s->rpu_buf_size = 0; s->max_ra = INT_MAX; s->eos = 1; } diff --git a/libavcodec/hevcdec.h b/libavcodec/hevcdec.h index 77fdf90da1..8a9b516759 100644 --- a/libavcodec/hevcdec.h +++ b/libavcodec/hevcdec.h @@ -572,6 +572,9 @@ typedef struct HEVCContext { int nal_length_size; ///< Number of bytes used for nal length (1, 2 or 4) int nuh_layer_id; + + uint8_t *rpu_buf; ///< 0 or 1 Dolby Vision RPUs. + size_t rpu_buf_size; } HEVCContext; /** diff --git a/libavcodec/version.h b/libavcodec/version.h index 74b8baa5f3..76af066d32 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -28,7 +28,7 @@ #include "libavutil/version.h" #define LIBAVCODEC_VERSION_MAJOR 59 -#define LIBAVCODEC_VERSION_MINOR 12 +#define LIBAVCODEC_VERSION_MINOR 13 #define LIBAVCODEC_VERSION_MICRO 100 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ From patchwork Thu Oct 21 13:48:43 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Derek Buitenhuis X-Patchwork-Id: 31199 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2084:0:0:0:0 with SMTP id a4csp625353ioa; Thu, 21 Oct 2021 06:49:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwaaVF9Bc2JDS0AIT12llBTI1JzPhFt8M8q0867fQa93ICNBkq9D8EXN2sMAq53XJlMRdJv X-Received: by 2002:a17:906:ca18:: with SMTP id jt24mr7591075ejb.325.1634824169061; Thu, 21 Oct 2021 06:49:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1634824169; cv=none; d=google.com; s=arc-20160816; b=ednKGvRKDolkBnp2FWInaFxBRuxfv++xPFbUn1MPh6CmaHYhYMclx6Sy3l0V+PCSk+ 2rYX+bDRjYW7ax0HWsub5Sqa0B5fgMCUO1lWbMtAN9qbu+zihHh0DNfHRHCb7FDsRNgD 9uy2czkvv4CHjhekdqHFlWak42Xpae87Bq3QFZ2gBmUhlytjbBL3ocRdY07lA8DzJIFw 2yFhB0Kn2CKiOccJ4AAY6csf0JKCb0tazoVgKQRQeEvqe1K9zHZD/cPEZhpnPyakz8ZM N/F9cz6NXLvNOMrddhwHGrspQyQQQBGDy+ASFsqEG2GoZLMI5S/W4BKNb79E4lh2rwxY Ackg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=sDQy/lh9vCNA1IYcI6GC6Y/o0TpTn12UFJfmndobGO8=; b=zsfKpPg1AJrw6K/tB6OebPAty3YRzk6o0pT/jn/CDDIZAAevVOcoL+1609erh8/HP8 G7J9Hp1oTWQcMXX9KkhOTW1Z8dBw0ykUX4vatseHvMfBzwCLyHbv4OHkvU88fNe+WBBy EbG+D+YAY2bsxNFW4NX18cHi/DTMfd0irpeTUZw/pS79O62RjkWdTt2ye5ooZAjG0Tgm 5mFfG7E0HbiSMpejJHG/FYJjnQOnXRz5rj9+Bkx5VhDxu2QX6mYX7nq7vCIapDUqbivx NStLf2QSLQDfTn7S6KX4XJk5zyOYrjaEQFq/bXzgPfjyRCHyWVOdwx929eyC3KzjfrmK U+lg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=ql+ubLqA; 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 a25si7782504edn.511.2021.10.21.06.49.28; Thu, 21 Oct 2021 06:49:28 -0700 (PDT) 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=ql+ubLqA; 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 633706807C5; Thu, 21 Oct 2021 16:49:10 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f49.google.com (mail-wm1-f49.google.com [209.85.128.49]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 787BB6899A4 for ; Thu, 21 Oct 2021 16:49:02 +0300 (EEST) Received: by mail-wm1-f49.google.com with SMTP id y22-20020a1c7d16000000b003231ea3d705so3283093wmc.4 for ; Thu, 21 Oct 2021 06:49:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=EPsvCQCOimA/QUtjm8KKeOVuJJTo42O0fOvMomScG6A=; b=ql+ubLqAdFiJSTtl8+vAIoCCVo3+1VpjGhonBf2d7zeMZ8ltOoLslbUz8k7bwatDyi 6u0KCVbuyRlx6zIZ23JDVFaPqyEMflqnxEGhhaeXko2P8xJzB8clg06dGICmI30dSBne 38HFLg0hHuVXLdm48fFsqLE3H5JPjgulo4TqoGCWIptPRL2Kof3vwyNDM6K6Z84LS8Ok LgpR9fMdee19FuINkX0RIHYMIEN7BmIkP73UsHB63VYNsvWF8Tsa/295Ae0CTctpDgSF JdIJPYdUwkTTyiDEkbIesgpNnQ2lyd7OW+0ZbtP8Mbuv1OHUxtQYHie/lUqkzR+iRY1R IOhg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=EPsvCQCOimA/QUtjm8KKeOVuJJTo42O0fOvMomScG6A=; b=0S+pp35OOANLMJweDpMx/7Afx0WZ+keiES5gvcDbe01pkVaPBIrQ/GBKDmTXfdWHqD whcLWJc//m1FXwxI4M4SMBsScX+e8ZmrN5bntAjIbfuJmIgGdyC24pi0gYQpijEbuZWG 84+VwSn0lXfwzMN3PBNwk6uN1OgWuVM9+G867FKn97vtNVWvBkbs3Lc/HG6YiewHaow7 dEwfu9d8lRDSSI5aoGK0JHXl4ojmTkR4hNFBV7OdkGJaDTRc101FjMqSTcgmIL935Map SDU0tRDA9VrDQw/tYrkTMTJjdoVtc9F79ULJ7+53UUnnnZDAE4Vb+bkYTdJWn+KEH4rJ Ljfg== X-Gm-Message-State: AOAM532/0uKkw2tawIxzRQh753rqH8pmyDLmmFtlQ/5/rGVdKEr/CSLv bMTAfqeNc2YKzQldrFXIeZBvrbbrdrY= X-Received: by 2002:a05:600c:4f81:: with SMTP id n1mr21276826wmq.63.1634824135284; Thu, 21 Oct 2021 06:48:55 -0700 (PDT) Received: from localhost.localdomain ([82.129.92.120]) by smtp.gmail.com with ESMTPSA id x21sm7938408wmc.14.2021.10.21.06.48.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Oct 2021 06:48:54 -0700 (PDT) From: Derek Buitenhuis To: ffmpeg-devel@ffmpeg.org Date: Thu, 21 Oct 2021 14:48:43 +0100 Message-Id: <20211021134843.1436241-4-derek.buitenhuis@gmail.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20211021134843.1436241-1-derek.buitenhuis@gmail.com> References: <20211021134843.1436241-1-derek.buitenhuis@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/3] fate: Add test for Dolby Vision RPU side data 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: sLnqWPYm2dxa Signed-off-by: Derek Buitenhuis --- File: https://www.dropbox.com/s/tjnm3vggdc6s7v3/dv84.mov?dl=0 We generated this file ourselves with an iPhone; there is no copyright issue. --- tests/fate/hevc.mak | 3 + tests/ref/fate/hevc-dv-rpu | 512 +++++++++++++++++++++++++++++++++++++ 2 files changed, 515 insertions(+) create mode 100644 tests/ref/fate/hevc-dv-rpu diff --git a/tests/fate/hevc.mak b/tests/fate/hevc.mak index f6ea1df9a5..2a88eb4690 100644 --- a/tests/fate/hevc.mak +++ b/tests/fate/hevc.mak @@ -273,6 +273,9 @@ FATE_HEVC_FFPROBE-$(call DEMDEC, HEVC, HEVC) += fate-hevc-monochrome-crop fate-hevc-hdr10-plus-metadata: CMD = probeframes -show_entries frame=side_data_list $(TARGET_SAMPLES)/hevc/hdr10_plus_h265_sample.hevc FATE_HEVC_FFPROBE-$(call DEMDEC, HEVC, HEVC) += fate-hevc-hdr10-plus-metadata +fate-hevc-dv-rpu: CMD = probeframes -show_entries frame=side_data_list -select_streams 0 $(TARGET_SAMPLES)/hevc/dv84.mov +FATE_HEVC_FFPROBE-$(call DEMDEC, HEVC, HEVC) += fate-hevc-dv-rpu + fate-hevc-two-first-slice: CMD = threads=2 framemd5 -i $(TARGET_SAMPLES)/hevc/two_first_slice.mp4 -sws_flags bitexact -t 00:02.00 -an FATE_HEVC-$(call DEMDEC, MOV, HEVC) += fate-hevc-two-first-slice diff --git a/tests/ref/fate/hevc-dv-rpu b/tests/ref/fate/hevc-dv-rpu new file mode 100644 index 0000000000..37ad9ffec2 --- /dev/null +++ b/tests/ref/fate/hevc-dv-rpu @@ -0,0 +1,512 @@ +[FRAME] +[SIDE_DATA] +side_data_type=H.26[45] User Data Unregistered SEI message +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=H.26[45] User Data Unregistered SEI message +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=H.26[45] User Data Unregistered SEI message +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=H.26[45] User Data Unregistered SEI message +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Dolby Vision RPU Data +[/SIDE_DATA] +[/FRAME]