From patchwork Wed Apr 22 04:35:42 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jun Zhao X-Patchwork-Id: 19149 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 99EE3449C28 for ; Wed, 22 Apr 2020 08:04:39 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7A8F268BAD1; Wed, 22 Apr 2020 08:04:39 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f67.google.com (mail-pj1-f67.google.com [209.85.216.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2633E68BB24 for ; Wed, 22 Apr 2020 08:04:33 +0300 (EEST) Received: by mail-pj1-f67.google.com with SMTP id a32so375118pje.5 for ; Tue, 21 Apr 2020 22:04:33 -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; bh=fbMDl3WUL6WATGgniP20iWO8Hr/MRNAiVowPbOk/Fnw=; b=OKFzP+fBHWah6gjx7ohzY62crDrfOEBml/mU4trxeZoFX59TFtkSdAh6vAGlB0kHbF 5uoVM7fLYAmgGZvoOfUynaVMWrglSt3RZXGuP33FdAElSHaIflbJisQWpCHvMUYAp35h rHIJJyh0WPMJzTaFb777v9mqu7fYsjs31LPifFU01o7cw/PY6A+UGGnmX3mZz2jU8ZC5 ULrw2vBlrUsI0n5kDPSeI2TXOA2ZTe/l1GxzboXG4KqM90T7ealtE59HN/zTWUaEP0Su XVMj6CpCCyd3abFg9ixf+PHtM7XUdSpNYO0U2z/G0QKmcP18K5lHZiuAODu063h+AjuZ OiLQ== 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; bh=fbMDl3WUL6WATGgniP20iWO8Hr/MRNAiVowPbOk/Fnw=; b=aMvnRLGbfLIjQQJTR7KLdWiR9WGM6SA0l5l1UX7TuXsEQzegpYf7YrOaCKLfd8KsOz uO+QOjM6Q72ZRPJcMqjZIX8ZLC9AV2OPZzpw7195/nBS6P7HSkXqOABPW0wSySwSFQZP pCICCRsQsD+ILxPwj4OrQJV4s+xDhpwsiLE6MLjCR7nt9NGRp0+YY6alKEkP0K1nnIeJ gMNF0Zbq9gXoISh4hAALZknyCHRckAwTMcgbvuAousqeQGPoTQNSl0iCgphhbD+WS66B btxtNZdn5+TCfjlqL+IYCjrCOYmi4vJloBFRcKwww9ozCK765z/FbDPTt09cxPrOV7hf jeKQ== X-Gm-Message-State: AGi0PuYLn3XIHVPw4ZDVhbZy6aloyTzH0B3Nmw9xAiMZxd/cpiGGSgiH PsNtMbWxDb8F9hSokEY97LA10ha4bb/qcA== X-Google-Smtp-Source: APiQypIt49yRvA6FDhRyCyqPIk5voKaYzPJWxgFKij312zXlinisIjw+UK9GLozmPDz8jhngKuXjdA== X-Received: by 2002:a62:17c3:: with SMTP id 186mr25433611pfx.159.1587530172528; Tue, 21 Apr 2020 21:36:12 -0700 (PDT) Received: from localhost.localdomain ([49.51.162.193]) by smtp.gmail.com with ESMTPSA id z6sm3714261pgg.39.2020.04.21.21.36.09 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 21 Apr 2020 21:36:11 -0700 (PDT) From: Jun Zhao To: ffmpeg-devel@ffmpeg.org Date: Wed, 22 Apr 2020 12:35:42 +0800 Message-Id: <1587530154-27795-2-git-send-email-mypopydev@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1587530154-27795-1-git-send-email-mypopydev@gmail.com> References: <1587530154-27795-1-git-send-email-mypopydev@gmail.com> Subject: [FFmpeg-devel] [PATCH v5 1/7] lavc: add a new sidedata type for DOVI 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: Jun Zhao MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Jun Zhao add a new sidedata type for DOVI. Signed-off-by: Jun Zhao --- libavcodec/avpacket.c | 1 + libavcodec/packet.h | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/libavcodec/avpacket.c b/libavcodec/avpacket.c index ad020ee..1b53451 100644 --- a/libavcodec/avpacket.c +++ b/libavcodec/avpacket.c @@ -396,6 +396,7 @@ const char *av_packet_side_data_name(enum AVPacketSideDataType type) case AV_PKT_DATA_ENCRYPTION_INFO: return "Encryption info"; case AV_PKT_DATA_AFD: return "Active Format Description data"; case AV_PKT_DATA_ICC_PROFILE: return "ICC Profile"; + case AV_PKT_DATA_DOVI_CONF: return "DOVI configuration record"; } return NULL; } diff --git a/libavcodec/packet.h b/libavcodec/packet.h index e53abe6..41485f4 100644 --- a/libavcodec/packet.h +++ b/libavcodec/packet.h @@ -274,6 +274,15 @@ enum AVPacketSideDataType { AV_PKT_DATA_ICC_PROFILE, /** + * DOVI configuration + * ref: + * dolby-vision-bitstreams-within-the-iso-base-media-file-format-v2.1.2, section 2.2 + * dolby-vision-bitstreams-in-mpeg-2-transport-stream-multiplex-v1.2, section 3.3 + * Tags are stored in struct AVDOVIDecoderConfigurationRecord. + */ + AV_PKT_DATA_DOVI_CONF, + + /** * The number of side data types. * This is not part of the public API/ABI in the sense that it may * change when new side data types are added. From patchwork Wed Apr 22 04:35:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jun Zhao X-Patchwork-Id: 19148 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 51D5244B944 for ; Wed, 22 Apr 2020 08:01:35 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 20D6668B7BA; Wed, 22 Apr 2020 08:01:35 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f66.google.com (mail-pj1-f66.google.com [209.85.216.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AFE1C68B6A6 for ; Wed, 22 Apr 2020 08:01:28 +0300 (EEST) Received: by mail-pj1-f66.google.com with SMTP id a5so377639pjh.2 for ; Tue, 21 Apr 2020 22:01: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; bh=irp4Y1C53BjXJQwaj1Jf22XD1wOFILyOcF/NvgxAs/g=; b=rWrx3vYg5AKMz0NE7SHZr9+cndn/qCfvyBEbpXvJLTisL5X2O4wugzhhJ9ZRx0KIYD 7+3qxIlVLkf0zWCEaHiiCVEc3yGwbAci48G+504FIkPpGDImeq/8YoLWTAzmKQuxrTTt 94HxlQQj7vCWN6MIZnUXwooUH5HrJPDtYwOqFL2Ffc8cFMDhwEX5PzcGh5YdN2H/RvsK jTPsceZu86NxbqBh/w91NEHZs3v5lp94d2Mk9H+FLenCRc3cIFWJd0gRg0VVZbXLfmuB rt5I1Fak2xiHch8JujE0JWqtHMqPbev8aPwxowwk5BER2D1qx9LWXxe3qLvBQCYzv6kD 7KtA== 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; bh=irp4Y1C53BjXJQwaj1Jf22XD1wOFILyOcF/NvgxAs/g=; b=n6WbicWDN172jH9PUMqWAiLxDjjPLYuOB1HDvfLXBXNPxeHAKrPaYOD71XAlw5/sue 1KY8SfzduNQu5P0sMAlHU/2b+UvWy2yfL6Q7uC8yfjkCTWQgub+ox42IWaabquOmaLmZ vX8oEcMOzZ2IxOntJdOHDtIBEN22I38uT6KJqAVUmE0tEc3vstzlFuo3XmC4a8/UmRV5 hLPtOrH0XuAqnL7fOSVI1BMr3GDsT3Llh/Ifc/R+ujq8pEfa8s1xAMCBCWPUdEZ7FMNs y9QPl8HGnO0JJFE1KNJgqn4ZCMecfdqd/X22cxrbuxFY2Twq0g0qtj6G3QWNvoSHRxju FnOQ== X-Gm-Message-State: AGi0PuZYUco6p+DMZiPh4KCj/shNhXtXXdOVlvrR10a0EGDiy9Fwvj+z 7uVmnPP1QKEtXovniOpL1JQjERqS8wemWA== X-Google-Smtp-Source: APiQypJSSt4YRroma3RZPqSpLg4/2gdmIXbRaorFm7yQ7/BvyCHpgrqbaYQp9qlI2HAqNNffI28xWw== X-Received: by 2002:aa7:9218:: with SMTP id 24mr24913559pfo.312.1587530175583; Tue, 21 Apr 2020 21:36:15 -0700 (PDT) Received: from localhost.localdomain ([49.51.162.193]) by smtp.gmail.com with ESMTPSA id z6sm3714261pgg.39.2020.04.21.21.36.12 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 21 Apr 2020 21:36:14 -0700 (PDT) From: Jun Zhao To: ffmpeg-devel@ffmpeg.org Date: Wed, 22 Apr 2020 12:35:43 +0800 Message-Id: <1587530154-27795-3-git-send-email-mypopydev@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1587530154-27795-1-git-send-email-mypopydev@gmail.com> References: <1587530154-27795-1-git-send-email-mypopydev@gmail.com> Subject: [FFmpeg-devel] [PATCH v5 2/7] lavutil: add DOVI related header 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: vacingfang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: vacingfang add DOVI related struct Signed-off-by: vacingfang --- libavutil/Makefile | 1 + libavutil/dovi_meta.h | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 libavutil/dovi_meta.h diff --git a/libavutil/Makefile b/libavutil/Makefile index 8feb029..1aac84c 100644 --- a/libavutil/Makefile +++ b/libavutil/Makefile @@ -23,6 +23,7 @@ HEADERS = adler32.h \ des.h \ dict.h \ display.h \ + dovi_meta.h \ downmix_info.h \ encryption_info.h \ error.h \ diff --git a/libavutil/dovi_meta.h b/libavutil/dovi_meta.h new file mode 100644 index 0000000..41be214 --- /dev/null +++ b/libavutil/dovi_meta.h @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2020 Vacing Fang + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * DOVI configuration + */ + + +#ifndef AVUTIL_DOVI_META_H +#define AVUTIL_DOVI_META_H + +#include +#include "mem.h" + +/* + * DOVI configuration + * ref: dolby-vision-bitstreams-within-the-iso-base-media-file-format-v2.1.2 + dolby-vision-bitstreams-in-mpeg-2-transport-stream-multiplex-v1.2 + * @code + * uint8_t dv_version_major, the major version number that the stream complies with + * uint8_t dv_version_minor, the minor version number that the stream complies with + * uint8_t dv_profile, the Dolby Vision profile + * uint8_t dv_level, the Dolby Vision level + * uint8_t rpu_present_flag + * uint8_t el_present_flag + * uint8_t bl_present_flag + * uint8_t dv_bl_signal_compatibility_id + * @endcode + * + * @note The struct must be allocated with av_dovi_alloc() and + * its size is not a part of the public ABI. + */ +typedef struct AVDOVIDecoderConfigurationRecord { + uint8_t dv_version_major; + uint8_t dv_version_minor; + uint8_t dv_profile; + uint8_t dv_level; + uint8_t rpu_present_flag; + uint8_t el_present_flag; + uint8_t bl_present_flag; + uint8_t dv_bl_signal_compatibility_id; +} AVDOVIDecoderConfigurationRecord; + +/** + * Allocate a AVDOVIDecoderConfigurationRecord structure and initialize its + * fields to default values. + * + * @return the newly allocated struct or NULL on failure + */ +static inline AVDOVIDecoderConfigurationRecord *av_dovi_alloc(size_t *size) +{ + AVDOVIDecoderConfigurationRecord *dovi = + av_mallocz(sizeof(AVDOVIDecoderConfigurationRecord)); + if (!dovi) + return NULL; + + if (size) + *size = sizeof(*dovi); + + return dovi; +} +#endif /* AVUTIL_DOVI_META_H */ From patchwork Wed Apr 22 04:35:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jun Zhao X-Patchwork-Id: 19150 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 BF529449D7A for ; Wed, 22 Apr 2020 08:06:43 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 969DE68BB54; Wed, 22 Apr 2020 08:06:43 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oi1-f194.google.com (mail-oi1-f194.google.com [209.85.167.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0449B68B5C2 for ; Wed, 22 Apr 2020 08:06:37 +0300 (EEST) Received: by mail-oi1-f194.google.com with SMTP id k133so822460oih.12 for ; Tue, 21 Apr 2020 22:06:36 -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; bh=EikxCx+qs6akfQ4/ugP0ES4VAIPXKsmR89DkkAvOECo=; b=GtZDMGL4tzeA4EQTsf6YsLiDUiG3erY7WfZU+qJ6PgqTCvvPrxhokR6WfmVx8aLBZ7 0rplTo2/JB03irXMusayocyIjToMjq6Gi9GkbWQOC7NJQyn+PEAo61ZL7aECrC+FN5jE nyPLyIncF1vIO7UiRp3GMrjNX14zyhkQvp8/BJNAJADKuFWReLFcbv6KRrCZlsINuyMM Qs5DZYTXrXLtgSjlvkD/+SYjs8nzizThex5F6XPNtI729ICkHUDRAVe8TMZFUNaA3ahy O/U+O3slmXzdmJi1mNzUKIOcEsqsczcarJThJrAf2nrscH+GQKLr47Zu8GldGtdnrZQa vLqQ== 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; bh=EikxCx+qs6akfQ4/ugP0ES4VAIPXKsmR89DkkAvOECo=; b=RJEFTiCEPdqA83BP705DlNNOzJ14VZLVbo+/J7Q8RSASCf8hxmchS3rHu5LxTmxrUi 4xCZF6O87o6TrxiHGrFUu2RgVDAvN7mCv23rjcub7roJfd5xlQd7cQXxN97zcH9XxiFS asaRgsZTLv8OzfkX1Da9WJKNTK0CCP9AiEibey4xlgSHIuavA2pw87iZO5Pi9wwrT/jL n2SKjmoJXXZFRC4AIME95ZzREYFD7Vf5P8VFO2ZqwhtRYbDH7qHeqd+UOML+r+/ISL63 w/WnABv8/+nLiojFcReU56xiqkUdOlT74p6WG0zPZcaByaGYXO0eHvEhHiKbKdRV9QRO L3Vw== X-Gm-Message-State: AGi0PuZierDBTr5h8AokDliCLiFyJ/+s7y8C78087dBPiPfCJ5Le9Dle YIVUX//+UEyd1zz+kqigPB0CLSfZpSd6Gg== X-Google-Smtp-Source: APiQypJOEefk6Jy2QDYlheyizRlT7bqRz4Cn4UCK8PN0VjM6025cC1GVZjDvLFpXeM4dfudSS5jD9w== X-Received: by 2002:a17:90a:48:: with SMTP id 8mr9217065pjb.65.1587530178685; Tue, 21 Apr 2020 21:36:18 -0700 (PDT) Received: from localhost.localdomain ([49.51.162.193]) by smtp.gmail.com with ESMTPSA id z6sm3714261pgg.39.2020.04.21.21.36.16 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 21 Apr 2020 21:36:17 -0700 (PDT) From: Jun Zhao To: ffmpeg-devel@ffmpeg.org Date: Wed, 22 Apr 2020 12:35:44 +0800 Message-Id: <1587530154-27795-4-git-send-email-mypopydev@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1587530154-27795-1-git-send-email-mypopydev@gmail.com> References: <1587530154-27795-1-git-send-email-mypopydev@gmail.com> Subject: [FFmpeg-devel] [PATCH v5 3/7] lavf/mpegts: support DOVI Video Stream Descriptor 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: vacingfang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: vacingfang support DOVI Video Stream Descriptor from Dolby Vision Streams Within the MPEG-2 Transport Stream Format V1.2 From the spec: https://www.dolby.com/us/en/technologies/\ dolby-vision/dolby-vision-bitstreams-in-mpeg-2-transport-\ stream-multiplex-v1.2.pdf. export the DOVI information with sidedata. Signed-off-by: vacingfang --- libavformat/mpegts.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c index a4ecb2e..ff3898c 100644 --- a/libavformat/mpegts.c +++ b/libavformat/mpegts.c @@ -28,6 +28,7 @@ #include "libavutil/mathematics.h" #include "libavutil/opt.h" #include "libavutil/avassert.h" +#include "libavutil/dovi_meta.h" #include "libavcodec/bytestream.h" #include "libavcodec/get_bits.h" #include "libavcodec/opus.h" @@ -2146,6 +2147,53 @@ int ff_parse_mpeg2_descriptor(AVFormatContext *fc, AVStream *st, int stream_type st->request_probe = 0; } break; + case 0xb0: /* DOVI video stream descriptor */ + { + uint32_t buf; + AVDOVIDecoderConfigurationRecord *dovi; + size_t dovi_size; + int ret; + if (desc_end - *pp < 4) // (8 + 8 + 7 + 6 + 1 + 1 + 1) / 8 + return AVERROR_INVALIDDATA; + + dovi = av_dovi_alloc(&dovi_size); + if (!dovi) + return AVERROR(ENOMEM); + + dovi->dv_version_major = get8(pp, desc_end); + dovi->dv_version_minor = get8(pp, desc_end); + buf = get16(pp, desc_end); + dovi->dv_profile = (buf >> 9) & 0x7f; // 7 bits + dovi->dv_level = (buf >> 3) & 0x3f; // 6 bits + dovi->rpu_present_flag = (buf >> 2) & 0x01; // 1 bit + dovi->el_present_flag = (buf >> 1) & 0x01; // 1 bit + dovi->bl_present_flag = buf & 0x01; // 1 bit + if (desc_end - *pp >= 20) { // 4 + 4 * 4 + buf = get8(pp, desc_end); + dovi->dv_bl_signal_compatibility_id = (buf >> 4) & 0x0f; // 4 bits + } else { + // 0 stands for None + // Dolby Vision V1.2.93 profiles and levels + dovi->dv_bl_signal_compatibility_id = 0; + } + + ret = av_stream_add_side_data(st, AV_PKT_DATA_DOVI_CONF, + (uint8_t *)dovi, dovi_size); + if (ret < 0) { + av_freep(dovi); + return ret; + } + + av_log(fc, AV_LOG_TRACE, "DOVI, version: %d.%d, profile: %d, level: %d, " + "rpu flag: %d, el flag: %d, bl flag: %d, compatibility id: %d\n", + dovi->dv_version_major, dovi->dv_version_minor, + dovi->dv_profile, dovi->dv_level, + dovi->rpu_present_flag, + dovi->el_present_flag, + dovi->bl_present_flag, + dovi->dv_bl_signal_compatibility_id); + } + break; default: break; } From patchwork Wed Apr 22 04:35:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jun Zhao X-Patchwork-Id: 19143 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 CB63F44921E for ; Wed, 22 Apr 2020 07:36:30 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A8E8868BAEC; Wed, 22 Apr 2020 07:36:30 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f52.google.com (mail-pj1-f52.google.com [209.85.216.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C1E8C68B76C for ; Wed, 22 Apr 2020 07:36:23 +0300 (EEST) Received: by mail-pj1-f52.google.com with SMTP id t9so357589pjw.0 for ; Tue, 21 Apr 2020 21:36:23 -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; bh=myh9acsAfZZIP/N7MoXOALoDAN6LqlAQdRgTQ+iLFLQ=; b=I+aJGLP2v2EP2nzprijf5RTHdfS7n6026rbxF0Xpms2SYE1yRJZ8h80poDJkKbOpap 1eHf1iATdIv762b3el1qd1nw80mFTcY9MZeTgSGt6aY7FrOP4bCNkugy1Ta9u5e8S/eC nXaZllMWim6LpcQFZOoauZ113P7+u/yoLlMyN5sspXM379eFTkf9a4dpMR4vYvanmxow 2Nd1rBd9P7dV9PdxtBZ8HaWYtp6tPrU8OQjHLD7SjOXCdqiGwjTdNCGkScatI/pwYtJg SJ9uhihZ2ydaXiWpGyQyphpAvrSOCKMwLw/S/A7oHHP7739Jfc8JRLo/Z9JE8u/UwRnW Q14w== 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; bh=myh9acsAfZZIP/N7MoXOALoDAN6LqlAQdRgTQ+iLFLQ=; b=dAC/+L73L2c3Nyu2ReyXiMpMb4+xs3hY2HtEyaK1thr9MGCEEdHUnkysRcUzcU749y u/QyNMYVhpwfJFblbit3+BReU1w/xvmsW/ZQJLLFnSlBjDhHeEgxCa4EdZcYvUdljFS9 EsvePzhFFiRgd7XQdl3UI+0QZdO05XHrxk4n6r4c7RiNCOa4PlEqjN0t414WhYsCgDI5 Q6VqK5VlhwPfo4P3+sA+NH/+yE1CyG089YfYn4Qm67Yll1CRHKHZ/l7tdlm/ShF86RB1 wmGs36xiavyHd621KrhdOL7kPUgHzg/E4TIwuRoD3NfhcU+Zxn/YDgasjUVRWLnLjRxi tr3w== X-Gm-Message-State: AGi0PuYAy7vP8t/20yNUxd7MDpdYr4lAIciL8z32wk3lODpImpHlMzjm UCVtOnvHfj5j+ZaYM0ZJHjWIv3ygNnBY8g== X-Google-Smtp-Source: APiQypJeCzeCVrQ9HT+M3U+ZgfKABca/5BzMus3SOcqpPfdTc0vE479T5+FKlTrShgMqeYWTI7HM8Q== X-Received: by 2002:a17:902:d70f:: with SMTP id w15mr24858575ply.138.1587530181780; Tue, 21 Apr 2020 21:36:21 -0700 (PDT) Received: from localhost.localdomain ([49.51.162.193]) by smtp.gmail.com with ESMTPSA id z6sm3714261pgg.39.2020.04.21.21.36.19 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 21 Apr 2020 21:36:21 -0700 (PDT) From: Jun Zhao To: ffmpeg-devel@ffmpeg.org Date: Wed, 22 Apr 2020 12:35:45 +0800 Message-Id: <1587530154-27795-5-git-send-email-mypopydev@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1587530154-27795-1-git-send-email-mypopydev@gmail.com> References: <1587530154-27795-1-git-send-email-mypopydev@gmail.com> Subject: [FFmpeg-devel] [PATCH v5 4/7] lavf/mov: support dvcC/dvvC box for DOVI 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: vacingfang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: vacingfang support dvcC/dvcC box from spec Dolby Vision Streams Within the ISO Base MediaFile Format Version 2.1.2 (https://www.dolby.com/in/en/technologies/dolby-vision/dolby-vision\ -bitstreams-within-the-iso-base-media-file-format-v2.1.2.pdf) export the DOVI information to sidedata. Signed-off-by: vacingfang --- libavformat/mov.c | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/libavformat/mov.c b/libavformat/mov.c index 8e8aba7..3d6fef6 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -46,6 +46,7 @@ #include "libavutil/spherical.h" #include "libavutil/stereo3d.h" #include "libavutil/timecode.h" +#include "libavutil/dovi_meta.h" #include "libavcodec/ac3tab.h" #include "libavcodec/flac.h" #include "libavcodec/mpegaudiodecheader.h" @@ -6786,6 +6787,63 @@ static int mov_read_dmlp(MOVContext *c, AVIOContext *pb, MOVAtom atom) return 0; } +static int mov_read_dvcc_dvvc(MOVContext *c, AVIOContext *pb, MOVAtom atom) +{ + AVStream *st; + uint32_t buf; + AVDOVIDecoderConfigurationRecord *dovi; + size_t dovi_size; + int ret; + + if (c->fc->nb_streams < 1) + return 0; + st = c->fc->streams[c->fc->nb_streams-1]; + + if ((uint64_t)atom.size > (1<<30) || atom.size < 4) + return AVERROR_INVALIDDATA; + + dovi = av_dovi_alloc(&dovi_size); + if (!dovi) + return AVERROR(ENOMEM); + + dovi->dv_version_major = avio_r8(pb); + dovi->dv_version_minor = avio_r8(pb); + + buf = avio_rb16(pb); + dovi->dv_profile = (buf >> 9) & 0x7f; // 7 bits + dovi->dv_level = (buf >> 3) & 0x3f; // 6 bits + dovi->rpu_present_flag = (buf >> 2) & 0x01; // 1 bit + dovi->el_present_flag = (buf >> 1) & 0x01; // 1 bit + dovi->bl_present_flag = buf & 0x01; // 1 bit + if (atom.size >= 24) { // 4 + 4 + 4 * 4 + buf = avio_r8(pb); + dovi->dv_bl_signal_compatibility_id = (buf >> 4) & 0x0f; // 4 bits + } else { + // 0 stands for None + // Dolby Vision V1.2.93 profiles and levels + dovi->dv_bl_signal_compatibility_id = 0; + } + + ret = av_stream_add_side_data(st, AV_PKT_DATA_DOVI_CONF, + (uint8_t *)dovi, dovi_size); + if (ret < 0) { + av_freep(dovi); + return ret; + } + + av_log(c, AV_LOG_TRACE, "DOVI in dvcC/dvvC box, version: %d.%d, profile: %d, level: %d, " + "rpu flag: %d, el flag: %d, bl flag: %d, compatibility id: %d\n", + dovi->dv_version_major, dovi->dv_version_minor, + dovi->dv_profile, dovi->dv_level, + dovi->rpu_present_flag, + dovi->el_present_flag, + dovi->bl_present_flag, + dovi->dv_bl_signal_compatibility_id + ); + + return 0; +} + static const MOVParseTableEntry mov_default_parse_table[] = { { MKTAG('A','C','L','R'), mov_read_aclr }, { MKTAG('A','P','R','G'), mov_read_avid }, @@ -6881,6 +6939,8 @@ static const MOVParseTableEntry mov_default_parse_table[] = { { MKTAG('v','p','c','C'), mov_read_vpcc }, { MKTAG('m','d','c','v'), mov_read_mdcv }, { MKTAG('c','l','l','i'), mov_read_clli }, +{ MKTAG('d','v','c','C'), mov_read_dvcc_dvvc }, +{ MKTAG('d','v','v','C'), mov_read_dvcc_dvvc }, { 0, NULL } }; From patchwork Wed Apr 22 04:35:46 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jun Zhao X-Patchwork-Id: 19144 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 974F244921E for ; Wed, 22 Apr 2020 07:36:33 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 800C068BAFF; Wed, 22 Apr 2020 07:36:33 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg1-f194.google.com (mail-pg1-f194.google.com [209.85.215.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BB02B68BAF6 for ; Wed, 22 Apr 2020 07:36:26 +0300 (EEST) Received: by mail-pg1-f194.google.com with SMTP id g6so463229pgs.9 for ; Tue, 21 Apr 2020 21:36:26 -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; bh=hJ/I4UydnUb2BN0LaFR9ZE5MdpLlXY6m/MfZ9to/TGc=; b=Xxij6ldtpB/mXVi6zygChABG40rDMJJi4yet3hmN+g3WA4SPb3jMT/m4exYaRiuVSX vVzHGhZLTbBNFxEu5zRcTnVT81whS+6PRrpZNlN4dvnTjTiX+0mC1RQWOJ0v8/Evftux xkQ5jNzoIxy3HNMuGHitn7dQ8srSmVcWI7DdNeqmwAVcC2SbzI2sdKOmUjGd5wIsVFBS 1bWQ/izWwr0Aau20jsSQK3u31P848X8myqPe6/MY15OSgMlTWpUWaRgoXCuL+vMr3M5Q sG3bvYX18wsdEhYcUASCmyeRiHLdwjlzuvLmOgxlRLIZjg83ZeknwdtdwqD9i+ygr0Fk RZSQ== 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; bh=hJ/I4UydnUb2BN0LaFR9ZE5MdpLlXY6m/MfZ9to/TGc=; b=OjjIXgSfRvjiNhsDf3PgNO7Q/GoXpBWe82XouLJUbdpjIvtyQk7pYRzQHjU3xr/fkt mynh8BgE0Pymqf/ThIJzFkDTr7kUaHYQdxi1/6EWJQcRaOAGOGQBQS6LXF2AUa7ik5Vp Hc3mjSKNfxBJ4P7+D/5OnabNhJKRmoQlZOEDFktJGNAEEgWqZ8hFSVzvfjcWT6YIdHkU iRsDcFYbxxKmOc4mU3mvcIBUUemUPFqWbHp6l3ddgUaLztnytjz18Y4ypYkkCc8h+D3S bALBq4YEuynvuTRtVjyA9JRCRBk3UL21KU2Pa75IvI2Uo+SMC+gkRb1krH08z5Dn7Ctt ZFhQ== X-Gm-Message-State: AGi0Pub5FktVMg2LC2Tc+WKwAVDmiJHkOl45dwwXZQngq0FsWXJfmC59 8fl3afBOqX71rFKThCTfWvjU8nchTxyTfQ== X-Google-Smtp-Source: APiQypKUcl9aX5L2kf8d4yKvi+8n+/VlRY34lvrZv2mscPoujpo+VZ6Gcq0KE3da7TuXH2npSbkK8g== X-Received: by 2002:a62:7555:: with SMTP id q82mr24852922pfc.136.1587530184841; Tue, 21 Apr 2020 21:36:24 -0700 (PDT) Received: from localhost.localdomain ([49.51.162.193]) by smtp.gmail.com with ESMTPSA id z6sm3714261pgg.39.2020.04.21.21.36.22 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 21 Apr 2020 21:36:24 -0700 (PDT) From: Jun Zhao To: ffmpeg-devel@ffmpeg.org Date: Wed, 22 Apr 2020 12:35:46 +0800 Message-Id: <1587530154-27795-6-git-send-email-mypopydev@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1587530154-27795-1-git-send-email-mypopydev@gmail.com> References: <1587530154-27795-1-git-send-email-mypopydev@gmail.com> Subject: [FFmpeg-devel] [PATCH v5 5/7] lavf/dump: dump DOVI side data 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: Jun Zhao MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Jun Zhao dump DOVI side data. Signed-off-by: Jun Zhao --- libavformat/dump.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/libavformat/dump.c b/libavformat/dump.c index 220f404..9578b88 100644 --- a/libavformat/dump.c +++ b/libavformat/dump.c @@ -27,6 +27,7 @@ #include "libavutil/intreadwrite.h" #include "libavutil/log.h" #include "libavutil/mastering_display_metadata.h" +#include "libavutil/dovi_meta.h" #include "libavutil/mathematics.h" #include "libavutil/opt.h" #include "libavutil/avstring.h" @@ -387,6 +388,24 @@ static void dump_spherical(void *ctx, AVCodecParameters *par, AVPacketSideData * } } +static void dump_dovi_conf(void *ctx, AVPacketSideData* sd) +{ + AVDOVIDecoderConfigurationRecord *dovi = (AVDOVIDecoderConfigurationRecord *)sd->data; + if (sd->size < sizeof(*dovi)) { + av_log(ctx, AV_LOG_ERROR, "invalid data"); + return; + } + + av_log(ctx, AV_LOG_INFO, "version: %d.%d, profile: %d, level: %d, " + "rpu flag: %d, el flag: %d, bl flag: %d, compatibility id: %d", + dovi->dv_version_major, dovi->dv_version_minor, + dovi->dv_profile, dovi->dv_level, + dovi->rpu_present_flag, + dovi->el_present_flag, + dovi->bl_present_flag, + dovi->dv_bl_signal_compatibility_id); +} + static void dump_sidedata(void *ctx, AVStream *st, const char *indent) { int i; @@ -449,6 +468,10 @@ static void dump_sidedata(void *ctx, AVStream *st, const char *indent) case AV_PKT_DATA_ICC_PROFILE: av_log(ctx, AV_LOG_INFO, "ICC Profile"); break; + case AV_PKT_DATA_DOVI_CONF: + av_log(ctx, AV_LOG_INFO, "DOVI configuration record: "); + dump_dovi_conf(ctx, &sd); + break; default: av_log(ctx, AV_LOG_INFO, "unknown side data type %d (%d bytes)", sd.type, sd.size); From patchwork Wed Apr 22 04:35:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jun Zhao X-Patchwork-Id: 19145 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 8A64B44921E for ; Wed, 22 Apr 2020 07:36:36 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 713AE68BB01; Wed, 22 Apr 2020 07:36:36 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl1-f194.google.com (mail-pl1-f194.google.com [209.85.214.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DB40E68BAFD for ; Wed, 22 Apr 2020 07:36:29 +0300 (EEST) Received: by mail-pl1-f194.google.com with SMTP id v2so431040plp.9 for ; Tue, 21 Apr 2020 21:36:29 -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; bh=5LSHNLAEXGHS48GxPRO+9lq57s7q6/Mi6BvCF9DSDxs=; b=YBp8fegcTty4bAZdNQT+yE2u0UXEe5zR+MUhXgU1votr38jmd3faN/AhR7JuCg8Qwt xuwtG902pk2r4JFhYcwEFxtYnSaZWN8iC/82G0pXneXLPZMJGXiMdCsMNlzS0y+oscHe NDzMJLNIbxNXrJBOiDTiGzIZRUBLhr/ak3fET9Wbnrhl9BQkq6DUMLPh7PbN25itANLL tEIQIO23S3DNYNK6U4RTXv32uvBnLrlC7cg7aUkaJSFY84KriZQR2rXAVALgxqHYYJF9 4JweN6cE6PnsYTgHIA7BiVPeWvUvlOl87tXdaQufgZOtBXMlRYGd4kfCEiU0zmdMJzQ2 t35w== 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; bh=5LSHNLAEXGHS48GxPRO+9lq57s7q6/Mi6BvCF9DSDxs=; b=nWt7cFfaYBxBs96fSvIcOjMoRDQ/m31A33bTj7vfZoU+dQucq+uZuq9XGr4Ct8q3dT EfkT91RQKP0or2R2ggmO95LoeDMXo5JaD7vL8o/HWHXgDBgmCjV4hsfKpXrTtjiVPZQE pAFJIIjsEsHLQaivnh+8Nh2F8J3HqwFuNd1hcxhCwvbYX4sfxHOW60j0N1a0Grs/NGf6 Df2xU5c5CkI95BLIM4ugWQ8Zgtr5foHtLHYzic1U2brEfMs2GBUQWwE42lxFany4gG9R kJURqe5BqW4Ex2CuSqb58htCJRK+V/9gv7fi/wXp3jfnX1ZCfEi24M6UAPC4Q9F/7lEJ oTYw== X-Gm-Message-State: AGi0PuaOB3nqhkebDoxPjCZdJue5XIla6oF0uhi0u/iAEB3NPHT83OZ0 qcUqNp8QrsLwd4ZMtPn3/w+ErtCs+00gAw== X-Google-Smtp-Source: APiQypKX0o7nNkQ4BgOIVK2JlN3vgKri76iNy7BpHpaUTw5DzI7SdtKcnDMV96Z84h5fZCiIzQtVmA== X-Received: by 2002:a17:90a:290f:: with SMTP id g15mr9489360pjd.93.1587530187906; Tue, 21 Apr 2020 21:36:27 -0700 (PDT) Received: from localhost.localdomain ([49.51.162.193]) by smtp.gmail.com with ESMTPSA id z6sm3714261pgg.39.2020.04.21.21.36.25 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 21 Apr 2020 21:36:27 -0700 (PDT) From: Jun Zhao To: ffmpeg-devel@ffmpeg.org Date: Wed, 22 Apr 2020 12:35:47 +0800 Message-Id: <1587530154-27795-7-git-send-email-mypopydev@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1587530154-27795-1-git-send-email-mypopydev@gmail.com> References: <1587530154-27795-1-git-send-email-mypopydev@gmail.com> Subject: [FFmpeg-devel] [PATCH v5 6/7] fftools/ffprobe: support DOVI sidedata 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: Jun Zhao MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Jun Zhao support DOVI sidedata. Signed-off-by: Jun Zhao --- fftools/ffprobe.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/fftools/ffprobe.c b/fftools/ffprobe.c index e3f221f..840fcb7 100644 --- a/fftools/ffprobe.c +++ b/fftools/ffprobe.c @@ -36,6 +36,7 @@ #include "libavutil/display.h" #include "libavutil/hash.h" #include "libavutil/mastering_display_metadata.h" +#include "libavutil/dovi_meta.h" #include "libavutil/opt.h" #include "libavutil/pixdesc.h" #include "libavutil/spherical.h" @@ -1928,6 +1929,16 @@ static void print_pkt_side_data(WriterContext *w, AVContentLightMetadata *metadata = (AVContentLightMetadata *)sd->data; print_int("max_content", metadata->MaxCLL); print_int("max_average", metadata->MaxFALL); + } else if (sd->type == AV_PKT_DATA_DOVI_CONF) { + AVDOVIDecoderConfigurationRecord *dovi = (AVDOVIDecoderConfigurationRecord *)sd->data; + print_int("dv_version_major", dovi->dv_version_major); + print_int("dv_version_minor", dovi->dv_version_minor); + print_int("dv_profile", dovi->dv_profile); + print_int("dv_level", dovi->dv_level); + print_int("rpu_present_flag", dovi->rpu_present_flag); + print_int("el_present_flag", dovi->el_present_flag); + print_int("bl_present_flag", dovi->bl_present_flag); + print_int("dv_bl_signal_compatibility_id", dovi->dv_bl_signal_compatibility_id); } writer_print_section_footer(w); } From patchwork Wed Apr 22 04:35:48 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jun Zhao X-Patchwork-Id: 19146 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 54E0044921E for ; Wed, 22 Apr 2020 07:36:40 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3B42768BB1A; Wed, 22 Apr 2020 07:36:40 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f67.google.com (mail-pj1-f67.google.com [209.85.216.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CDACF68BB06 for ; Wed, 22 Apr 2020 07:36:32 +0300 (EEST) Received: by mail-pj1-f67.google.com with SMTP id t9so357728pjw.0 for ; Tue, 21 Apr 2020 21:36:32 -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; bh=bnbYHGab1te6sftTzA80GjDGP/BgbpU0IW6x+9Yn9sE=; b=vJn2yyIlDNR0FK0NpDn70tC1BdJDU5kuM5snN3EWGSOa1AaEF5DkxeZVLjf+rxywhG 03bD5vOpFiYGUhulLS19QLWCSOhJb7z44xXJHUHylvtUsS0fnTKNJRRyIOAtigwID3A/ I8vw92MdZaVFAEVIr1jX1LKw2tb7yV7GhJ9WSQtglBHrt73zszQCympB2pm//iuohXdN gb0DW6d/o21V3gZZ6t++XmcmQN2vig6QQJaoNUN1+Qt1uri6f7RUHK4U3cYBTLQNpWGu X6whSCeIJ3pakvag190ur8o+d+90VhWdE5gVQIrui3nb+17mSXnE+lcftm5jD1xX1GJs yMEA== 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; bh=bnbYHGab1te6sftTzA80GjDGP/BgbpU0IW6x+9Yn9sE=; b=PmXnLUiPBNV2kIsfiDyNqEHOQzKI9QaCHauQ9LTGLu1t9u5JyQ2RoYv4fFA3BrUlJ7 oKEgmZyktD3AOCaZux1srvJKqgm+DBwkjOAm8LATwi9nb34PRxX5z1zXtIAio1pIrWNE YbGL4iPbaTyDmZns4oj4IYfLNfJAEhgSLTw1MacsUhQM7ticDkq8k1K28nLbJAOApc1S n4SR3JIXFkI1561Hi8O61MQQpRyhm6WmUePoTRYKVZxb3XpqMXELP7wVVIzwBqHZwNnq iLwYCSuoBbaj5fTDZtXbvkKYVD5OwZi8D33/G8s1Ig3t2lZ9lWnE15/dZzVeXcoEnPDG lZZQ== X-Gm-Message-State: AGi0PuYxmQqLNkPLyAif8yLo2Ng3z1EGY7KVHdrP+pUToMMQ/BkogQAD 4GiWBiVuZsmn0Zok6wFsYP1X+l1CknnmcA== X-Google-Smtp-Source: APiQypIjGBfcMbLCAft5MfFhbKwRLZ//ysTlGuzMzymGc1x07wxj0Hk94yrI/iz5ja/V4dUMafmRKw== X-Received: by 2002:a17:90a:224a:: with SMTP id c68mr9972581pje.160.1587530190955; Tue, 21 Apr 2020 21:36:30 -0700 (PDT) Received: from localhost.localdomain ([49.51.162.193]) by smtp.gmail.com with ESMTPSA id z6sm3714261pgg.39.2020.04.21.21.36.28 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 21 Apr 2020 21:36:30 -0700 (PDT) From: Jun Zhao To: ffmpeg-devel@ffmpeg.org Date: Wed, 22 Apr 2020 12:35:48 +0800 Message-Id: <1587530154-27795-8-git-send-email-mypopydev@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1587530154-27795-1-git-send-email-mypopydev@gmail.com> References: <1587530154-27795-1-git-send-email-mypopydev@gmail.com> Subject: [FFmpeg-devel] [PATCH v5 7/7] lavf/movenc: enable dvcC/dvvC box support from DOVI sidedata 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: Jun Zhao MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Jun Zhao enable dvcC/dvvC box support from DOVI sidedata. Signed-off-by: Jun Zhao --- libavformat/movenc.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 253cff8..556dd06 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -51,6 +51,7 @@ #include "libavutil/pixdesc.h" #include "libavutil/stereo3d.h" #include "libavutil/timecode.h" +#include "libavutil/dovi_meta.h" #include "libavutil/color_utils.h" #include "hevc.h" #include "rtpenc.h" @@ -1814,6 +1815,36 @@ static int mov_write_sv3d_tag(AVFormatContext *s, AVIOContext *pb, AVSphericalMa return update_size(pb, sv3d_pos); } +static int mov_write_dvcc_dvvc_tag(AVFormatContext *s, AVIOContext *pb, AVDOVIDecoderConfigurationRecord *dovi) +{ + avio_wb32(pb, 32); /* size = 8 + 24 */ + if (dovi->dv_profile > 7) + ffio_wfourcc(pb, "dvvC"); + else + ffio_wfourcc(pb, "dvcC"); + avio_w8(pb, dovi->dv_version_major); + avio_w8(pb, dovi->dv_version_minor); + avio_wb16(pb, (dovi->dv_profile << 9) | (dovi->dv_level << 3) | + (dovi->rpu_present_flag << 2) | (dovi->el_present_flag << 1) | + dovi->bl_present_flag); + avio_wb32(pb, (dovi->dv_bl_signal_compatibility_id << 28) | 0); + + avio_wb32(pb, 0); /* reserved */ + avio_wb32(pb, 0); /* reserved */ + avio_wb32(pb, 0); /* reserved */ + avio_wb32(pb, 0); /* reserved */ + av_log(s, AV_LOG_DEBUG, "DOVI in %s box, version: %d.%d, profile: %d, level: %d, " + "rpu flag: %d, el flag: %d, bl flag: %d, compatibility id: %d\n", + dovi->dv_profile > 7 ? "dvvC" : "dvcC", + dovi->dv_version_major, dovi->dv_version_minor, + dovi->dv_profile, dovi->dv_level, + dovi->rpu_present_flag, + dovi->el_present_flag, + dovi->bl_present_flag, + dovi->dv_bl_signal_compatibility_id); + return 32; /* 8 + 24 */ +} + static int mov_write_clap_tag(AVIOContext *pb, MOVTrack *track) { avio_wb32(pb, 40); @@ -2147,11 +2178,15 @@ static int mov_write_video_tag(AVFormatContext *s, AVIOContext *pb, MOVMuxContex if (track->mode == MODE_MP4 && mov->fc->strict_std_compliance <= FF_COMPLIANCE_UNOFFICIAL) { AVStereo3D* stereo_3d = (AVStereo3D*) av_stream_get_side_data(track->st, AV_PKT_DATA_STEREO3D, NULL); AVSphericalMapping* spherical_mapping = (AVSphericalMapping*)av_stream_get_side_data(track->st, AV_PKT_DATA_SPHERICAL, NULL); + AVDOVIDecoderConfigurationRecord *dovi = (AVDOVIDecoderConfigurationRecord *) + av_stream_get_side_data(track->st, AV_PKT_DATA_DOVI_CONF, NULL);; if (stereo_3d) mov_write_st3d_tag(s, pb, stereo_3d); if (spherical_mapping) mov_write_sv3d_tag(mov->fc, pb, spherical_mapping); + if (dovi) + mov_write_dvcc_dvvc_tag(s, pb, dovi); } if (track->par->sample_aspect_ratio.den && track->par->sample_aspect_ratio.num) {