From patchwork Wed Apr 22 11:52:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jun Zhao X-Patchwork-Id: 19156 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 886D344B1D2 for ; Wed, 22 Apr 2020 14:53:12 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6B1A068BBF5; Wed, 22 Apr 2020 14:53:12 +0300 (EEST) 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 9807B68BA18 for ; Wed, 22 Apr 2020 14:53:06 +0300 (EEST) Received: by mail-pl1-f196.google.com with SMTP id w3so838020plz.5 for ; Wed, 22 Apr 2020 04:53:06 -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=G1RdwfqhGThsoA2uT6QyfGoBHmfrPJpItdwnD1l0e9ROazAxPtcgnCyknUivN4KZFK 6/u34tlKZrsAIjB6WbUtn7FN8k7cLUNQRJmc1o7VgFCRDTLF7qWiKNB5FNq3DZ8XWlaL bkGdnji1e0J6eo3iDgkjNDfa0RyGsnYwLoQMwHnLJ9eyy99f1hk+hzKABN7SLQ1P8Wvp 8DfmWwnsOc0RbR/WeTL/CyU48VbxzpPLmdEJ6g7IXXV91VnU/CpNnyVOHbVByMzqp0qv myE8lh5BALcco1yPBoacpOuVOhvBUZJ9lpRoW2LyQM/NDghEWn5GMvzIxhyjj72sNbab ooKA== 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=YXJr5BNvjwxnFyrPNxAeAofbj7sSeUt4Q1KofLYa2TH0XEzXkwjXcsXGLd8C2zNS44 quoujAQwz3bYz+eK4PNOef12ZmaRoF3lC9s7eKApZ0GR3JnXHDw4QcNw+mVd4hRR62ls 0rRokLt8Y3oMkBAMY2omV1crMLxakXJayDwMNiD4xUU5fGheR8NZEs3sNVkR0Wpr6pnt 7eSoL39i7LxxB1LMRWNpP+X1EURW9tegjnTLTuwn2sf844PDB+eBT6FHsHPrZTOrEkOA +wifCDlL0ntC11TaZcGuECKH9zo+ewuNpEh07AfJhpIKvt+Yr00PwjAgwFVWaP2lX07e BBhg== X-Gm-Message-State: AGi0PuaMLFQtUpTQNWu/f2L694Z3CExf3EP7mgLVFV0k1Ap4JlCIBdin jZGhwk4ojI+8MIizhabHZoO0BNSsj2Q= X-Google-Smtp-Source: APiQypK96GTQq3n1yUeRNSk5z2Ej46VOO7JLbg231Y3QavIrmLXzHzrP6Tig7ZNPoYsaR4O9KAL7oQ== X-Received: by 2002:a17:90a:aa84:: with SMTP id l4mr11259274pjq.177.1587556384409; Wed, 22 Apr 2020 04:53:04 -0700 (PDT) Received: from localhost.localdomain ([49.51.162.193]) by smtp.gmail.com with ESMTPSA id v32sm1715240pgn.35.2020.04.22.04.53.01 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 Apr 2020 04:53:03 -0700 (PDT) From: Jun Zhao To: ffmpeg-devel@ffmpeg.org Date: Wed, 22 Apr 2020 19:52:41 +0800 Message-Id: <1587556372-24387-2-git-send-email-mypopydev@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1587556372-24387-1-git-send-email-mypopydev@gmail.com> References: <1587556372-24387-1-git-send-email-mypopydev@gmail.com> Subject: [FFmpeg-devel] [PATCH v6 1/9] 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 11:52: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: 19157 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 9AC5E44B1D2 for ; Wed, 22 Apr 2020 14:53:16 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 838F368BC07; Wed, 22 Apr 2020 14:53:16 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf1-f182.google.com (mail-pf1-f182.google.com [209.85.210.182]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DFD7168BBFE for ; Wed, 22 Apr 2020 14:53:09 +0300 (EEST) Received: by mail-pf1-f182.google.com with SMTP id p25so931011pfn.11 for ; Wed, 22 Apr 2020 04:53:09 -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=Bc/vrXYXwaagBQUGO9bBM7aEjLTd0IiYzXM6d0/XQtg=; b=sDlfl/zgVmci78EO/8mHZ10RmiGAHlOosUcDdvEXwag+nbUmCJLe7BeKE77hZEeur2 0tuH8rONlm4/W9R2pJSPzGCCTab8G5IXLpby4mF/+zDJ3qm0ZpyTO3AdFQ0UjRvZQv2g tG3MNSuseFII+3yZit+ZutAzHRZKsKT3GmEDItpINRHsqsGCgBO9zOpLBkJKsEURcwrW r2UVaD23Y5irKwzWSdx1BLEwBKGXVz3w/5ga+acu+n3FKjGsZJDZQ9S+jcKWQahyCVAt I1fC4z3heRJJRSi1wSjELTGZowvF3l/RjryfcYm6XOhwYjY4VOnvlMAD9ddRzzLxSxun gDgA== 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=Bc/vrXYXwaagBQUGO9bBM7aEjLTd0IiYzXM6d0/XQtg=; b=iw2uDi+eAO9jBWoxZcXIrH7/m2SPcjcVPeAb2zgmdE7P/ZByc2h6m7sLRwmDRnWePa oZGwLsmwvZrUO9x/RbEUsSECd+H3vabLS3G/qhYA2fx5QcTpsg8mfhRsLSRhFNAXZSXJ 1MzUX4NLDGrGPtLG4JVD3qPsn2MU07fNz3r2Qd230qtbDh6XVrkx7o8n5vWWDsqlfPVD svD7nAuTZXKN234DzrXS17nz3HK8O7NDS3fja7RE9YarIJSOj5WhWay+R8op79a0tSpN AhDM/v03nVldpcp8Hn6ckJZ60v3Pt6ZgQUui6Bx2xRmbL4T5M6TzO8amceS9sAlyaDpY pBgQ== X-Gm-Message-State: AGi0PuaC+w51/zSdsh1xCFGo5SLj/eHxJadIFYxhtsfGNDqO6W0wbozl mMR4U9idwvpsJT/Y+Qg4cP8WUEIf8Qk= X-Google-Smtp-Source: APiQypLpPhHWyAKg3BfB5Vf7M9Eee98gpN6hL+4ZS1O+/fztlucWa44nuWzpSV4BEBU5UVRy0mS3eQ== X-Received: by 2002:aa7:8f26:: with SMTP id y6mr27218292pfr.36.1587556387501; Wed, 22 Apr 2020 04:53:07 -0700 (PDT) Received: from localhost.localdomain ([49.51.162.193]) by smtp.gmail.com with ESMTPSA id v32sm1715240pgn.35.2020.04.22.04.53.04 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 Apr 2020 04:53:06 -0700 (PDT) From: Jun Zhao To: ffmpeg-devel@ffmpeg.org Date: Wed, 22 Apr 2020 19:52:42 +0800 Message-Id: <1587556372-24387-3-git-send-email-mypopydev@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1587556372-24387-1-git-send-email-mypopydev@gmail.com> References: <1587556372-24387-1-git-send-email-mypopydev@gmail.com> Subject: [FFmpeg-devel] [PATCH v6 2/9] 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 | 2 ++ libavutil/dovi_meta.c | 35 ++++++++++++++++++++++++++ libavutil/dovi_meta.h | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 107 insertions(+) create mode 100644 libavutil/dovi_meta.c create mode 100644 libavutil/dovi_meta.h diff --git a/libavutil/Makefile b/libavutil/Makefile index 8feb029..966eec4 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 \ @@ -112,6 +113,7 @@ OBJS = adler32.o \ des.o \ dict.o \ display.o \ + dovi_meta.o \ downmix_info.o \ encryption_info.o \ error.o \ diff --git a/libavutil/dovi_meta.c b/libavutil/dovi_meta.c new file mode 100644 index 0000000..7bd08f6 --- /dev/null +++ b/libavutil/dovi_meta.c @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2020 Jun Zhao + * + * 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 + */ + +#include "dovi_meta.h" +#include "mem.h" + +AVDOVIDecoderConfigurationRecord *av_dovi_alloc(size_t *size) +{ + AVDOVIDecoderConfigurationRecord *dovi = + av_mallocz(sizeof(AVDOVIDecoderConfigurationRecord)); + if (!dovi) + return NULL; + + if (size) + *size = sizeof(*dovi); + + return dovi; +} diff --git a/libavutil/dovi_meta.h b/libavutil/dovi_meta.h new file mode 100644 index 0000000..299911d --- /dev/null +++ b/libavutil/dovi_meta.h @@ -0,0 +1,70 @@ +/* + * 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 + +/* + * 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 + */ +AVDOVIDecoderConfigurationRecord *av_dovi_alloc(size_t *size); + +#endif /* AVUTIL_DOVI_META_H */ From patchwork Wed Apr 22 11:52: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: 19158 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 963F944B1D2 for ; Wed, 22 Apr 2020 14:53:19 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8024468BC0E; Wed, 22 Apr 2020 14:53:19 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf1-f195.google.com (mail-pf1-f195.google.com [209.85.210.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 94EF568BC0D for ; Wed, 22 Apr 2020 14:53:12 +0300 (EEST) Received: by mail-pf1-f195.google.com with SMTP id r14so953341pfg.2 for ; Wed, 22 Apr 2020 04:53:12 -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=nid+5FGWw8otmeYN1tZOZAdzI8oHtz417eaBZMc0ok+q8YM68MpevT155uCqofmk4R AVsQcD0Vo1ye7hoNtUYTRkilXbqpgPVwyMk4C1HC/gjEgMpBy3ZI5JtrJ9HvjULgMEls ScZXby8gAiytbBGxQthGdmSrToXd6sBmk4Boyj0OPUKzfsX0EhkeUzwiNhADqJlXz8Kl 5VJgXL8K3a9bagkhlq9dwojB8JLvxqmlw1QaQB/0JaxbvQlBark9c7TyYX1LZugqhjuY 0M7L+07dv9rSPFQPuTQLtEVvrrh0ZKHDygFq4MYYZ9I103zfV3Fzk/Kk9Sis630VNU31 krJg== 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=TloBMmEvy2XhH0U69rv7BwbpjgINmzXk2rmw+5eDdbWu/jk878eMm6j9914AMPj7W/ SGmLZy8UmP7on0ajfyi8dMXReYL6ojk3ECUdi6fhdKVVIqPIoDGthJg81HbPpNYhKj1w TAMpJhthgZ39gBOvqBDwACOjSk1jKg3Hr1ybd/8KhmnmNM3XOKbnh1ICe3HK7RSHMPQk Gy5i8LskkD2nhiONk9OGGDpy06/0Nr1ByB1uini0NdK6OMgqHE0Yp27VXRBLVILV7Nha LZzlom64pHMRjL2fQrpTT0qC29JPQzBsP0nrwJNehakLbZghXqbGA6aC4qxchB7IBytC Lt2A== X-Gm-Message-State: AGi0Puazo40VpO0K/XeHXhNNEoaMBmCTfkaEuCmDTKblsQTwEKnhBP3t rd4DUGFvoHCCi91zOhEnUxu94RlB0Hw= X-Google-Smtp-Source: APiQypLAuMi9Eg77lLqAoZqNIm+SrZQns5BdnGDDkV+KqPl2cd3X4dVwSL8+7SMtxx3GVRRPCh1sZg== X-Received: by 2002:a62:ee05:: with SMTP id e5mr27140474pfi.288.1587556390646; Wed, 22 Apr 2020 04:53:10 -0700 (PDT) Received: from localhost.localdomain ([49.51.162.193]) by smtp.gmail.com with ESMTPSA id v32sm1715240pgn.35.2020.04.22.04.53.07 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 Apr 2020 04:53:09 -0700 (PDT) From: Jun Zhao To: ffmpeg-devel@ffmpeg.org Date: Wed, 22 Apr 2020 19:52:43 +0800 Message-Id: <1587556372-24387-4-git-send-email-mypopydev@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1587556372-24387-1-git-send-email-mypopydev@gmail.com> References: <1587556372-24387-1-git-send-email-mypopydev@gmail.com> Subject: [FFmpeg-devel] [PATCH v6 3/9] 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 11:52: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: 19159 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 5A80844B1D2 for ; Wed, 22 Apr 2020 14:53:23 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 42C6C68BC0F; Wed, 22 Apr 2020 14:53:23 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f48.google.com (mail-pj1-f48.google.com [209.85.216.48]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 55FFA68BBED for ; Wed, 22 Apr 2020 14:53:16 +0300 (EEST) Received: by mail-pj1-f48.google.com with SMTP id y6so795668pjc.4 for ; Wed, 22 Apr 2020 04:53:16 -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=HMKjdCbzfIomBpKzahzvKuS3FPhLs+5dUTckRk8l8FhYJlfxJ1yt6yc9KMjZVeCUZA rzofLPGXJMlFTqR7JSRRdq7MkmATtmvvVBjGtHapGpbnm9IGArMLD01U2UvXDVydjToX 3crFQu5P4fWzz+gme/HrV1GSbNTtulHLQBXTvkDMQkdvVBk5VN8gobKHEVC7GWu4qyy5 Ema55PcTScPTcUq/DRZCd/2hQbMZOhOwEBHnw9E6gCPpEtsjF1NhO1W/DbMN+EzmzXG7 h/h6rkgYWijxsWHZ/WqAVeGbztKaSaPhxD7VQ06XSNL/772MJABd/PpZhExMkAqdFEgV B2eQ== 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=dpD7Gsyqu6Czfd+q/bJmdA9wAQwZYQugxn7axS0W/ZOUYmb9ClBjlVZur/GkuTd+U6 5Y3ZjemzSBqNzat0+A6hRNd5Wqwnxoz+KnrH7Kflvi82y4Yhi5Z3tan+q9ulor6Miubk 4PC/pfpVuSd75MRNJJjZeLMA0LzAh3OrtxSxgJZpnHoBJM9fHqBgVV1i3CeK2hN/ifmy V3snRXCIBTbXHUVZafjbxWXhIepxi+j2s+cY1NYvykwL1g6oqc3Zyi3Ccxxh8sGRIwEX nosJpbLAryWxa4FHRP+tdXb1cj8MD2yb6k3hxdQXeeed1pLyTMYoSUwVebciDy734ZE2 liBw== X-Gm-Message-State: AGi0Pua515jS6ZkfN65fXWuontmiLRt8vfgCf5Bz7V5qyuSP3maXOsDO VpxAY4r+pXB3UwnFmjoUimaubjqu408= X-Google-Smtp-Source: APiQypJfqZgf1ibcRmWuASzOOW8wSx7t76XTS4QYdBWWHIOEEYL+cxSksvHKWlRbeNOj+ZlYQfAwbA== X-Received: by 2002:a17:902:aa88:: with SMTP id d8mr6942720plr.213.1587556393832; Wed, 22 Apr 2020 04:53:13 -0700 (PDT) Received: from localhost.localdomain ([49.51.162.193]) by smtp.gmail.com with ESMTPSA id v32sm1715240pgn.35.2020.04.22.04.53.11 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 Apr 2020 04:53:13 -0700 (PDT) From: Jun Zhao To: ffmpeg-devel@ffmpeg.org Date: Wed, 22 Apr 2020 19:52:44 +0800 Message-Id: <1587556372-24387-5-git-send-email-mypopydev@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1587556372-24387-1-git-send-email-mypopydev@gmail.com> References: <1587556372-24387-1-git-send-email-mypopydev@gmail.com> Subject: [FFmpeg-devel] [PATCH v6 4/9] 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 11:52: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: 19160 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 303D444B1D2 for ; Wed, 22 Apr 2020 14:53:25 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 18E8768BC20; Wed, 22 Apr 2020 14:53:25 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f48.google.com (mail-pj1-f48.google.com [209.85.216.48]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0B30E68BC1F for ; Wed, 22 Apr 2020 14:53:19 +0300 (EEST) Received: by mail-pj1-f48.google.com with SMTP id h12so386915pjz.1 for ; Wed, 22 Apr 2020 04:53:18 -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=eGnyj/xD1PPyULormjqxlflmy/Ina8MO5NaCCeaPb04=; b=D0p2PAq0QfLyPtmjKAu3BJ1EXRKwEEeJu3rt67lmOHO8IUkUQmFByGNOhiMj1BOgX9 UkZh5WVQ6vZhRiSho2u6lWcq9G6bUNZPe03Yf7ZMY4F8umLxBjuqIrOU2kqdYLi2DX+n ZRD4jfesVucZHLFel5i1IG3AG7CwrS0GiqKuydXVgHsyf4T6gUi+sosQY23PuIQULjPL 6um0q5Bt96/IxoPpxn+F0rxwgIiH1ZUP9W+0IvOz0i/cfuXCBEZ3l8r+Arrj+wPXuM+d StcQeKpIInIQf+9igMpY69wUlSAtLhUXGvFDlaZ3k6T8Hm4V0bV3qjP1SwFTqJ8zQHLM 4BcQ== 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=eGnyj/xD1PPyULormjqxlflmy/Ina8MO5NaCCeaPb04=; b=MQh/kawiVbZUwKzaMdi8/TlmNxeskKoWkX5Lc46tdGf7aSVTjxgTTKNm7b73PEyQ1E O1EUfXJAVwvKBWN0Kct6/2m8ILNXa76S+Xarqjx2u82lwh7iuKuFSifr9skkJucHzXjR rLdY7J4OhlsfCetWohfVsMkdYG9RUmoBtF0V8Sb/stfOkaDPI/X1b7Cw5ZQl1umQS7ml XEHls5w2r2X9pN1xKF5s9I54/izhs6DeKv9559ZrPgUnFT5XDDs7tFpxjof3dTPzYWDe MuTbJR7RdMIHXvBGWvZwnJDBllhEQtaYTFlueo/ZUfJnvOBuNJU7srXBuBpFWmDWeOYl wjSA== X-Gm-Message-State: AGi0PuYiHmQPvTpK1hOOkXVPvHYcsIUN+H0iHlFnurFPmSrIRPEFfrt8 IeEGTIs6iep+OV0IrycFFmRBJ6QlmDc= X-Google-Smtp-Source: APiQypJvqSMqv4RhODOKSYiXcoX1R0toEyQU2DlW5F8HWOuNYrgkkEbUPXdScG4T2ridaAYnOczHzQ== X-Received: by 2002:a17:90a:890a:: with SMTP id u10mr11043931pjn.154.1587556397046; Wed, 22 Apr 2020 04:53:17 -0700 (PDT) Received: from localhost.localdomain ([49.51.162.193]) by smtp.gmail.com with ESMTPSA id v32sm1715240pgn.35.2020.04.22.04.53.14 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 Apr 2020 04:53:16 -0700 (PDT) From: Jun Zhao To: ffmpeg-devel@ffmpeg.org Date: Wed, 22 Apr 2020 19:52:45 +0800 Message-Id: <1587556372-24387-6-git-send-email-mypopydev@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1587556372-24387-1-git-send-email-mypopydev@gmail.com> References: <1587556372-24387-1-git-send-email-mypopydev@gmail.com> Subject: [FFmpeg-devel] [PATCH v6 5/9] 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 | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/libavformat/dump.c b/libavformat/dump.c index 220f404..5e9a031 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,20 @@ static void dump_spherical(void *ctx, AVCodecParameters *par, AVPacketSideData * } } +static void dump_dovi_conf(void *ctx, AVPacketSideData* sd) +{ + AVDOVIDecoderConfigurationRecord *dovi = (AVDOVIDecoderConfigurationRecord *)sd->data; + + 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 +464,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 11:52: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: 19162 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 46DBA44B1D2 for ; Wed, 22 Apr 2020 14:53:29 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 32D6B68BC2B; Wed, 22 Apr 2020 14:53:29 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f65.google.com (mail-pj1-f65.google.com [209.85.216.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id F0F8968BC21 for ; Wed, 22 Apr 2020 14:53:21 +0300 (EEST) Received: by mail-pj1-f65.google.com with SMTP id a7so835227pju.2 for ; Wed, 22 Apr 2020 04:53:21 -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=AztYXGrJb61gmqWQSbHZoJ63w94TwgS6rwL4WQlW4x7mN2/ReoAvdAkzOsQBTJMH17 rrw9yQi6mxZBw+1FZkze6G8Ppqn+9vYSTgxP22ZcdbuUfzpN0hqsJaFhxAPXF5UhXiHP cdYyx8ny6Vik70qieX4QfUp9sePEOtdgaaiKoS3Qa9Q41/xTfErD/4R5i/0H1HIoR9jk 4/AWmCxlU7/oeKvChFKlXAq84JQerJU1enOybm635T2L3PnBvnCZ2WCTY1MnusXL1CGt Z3uSs4lGSoNXWiMW58w4e7cX2tqFRuTENhRiFy6gvWnWwF0Y0BuDjeE/HmX1jPsROHHz 015A== 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=bB6xCUudSVI2fSbS18PpvrMgcCVVcRe6dDGjHNx1wdfTA1c1VSRnyhOoelX1p3jz2q gr+S3FuVlN06kgm1hrBy7EjNVdeRPL5mdS/kTJxUOTrzbrXNB54L1nPCVAP0emw7eaCe Y/gHfsFxNwRTJNmO4EmAuKyZIBAhTWz2dKKrWEgEOQM7tEOGYuGDAruss108Wu4uj8Lr EUHA1iZdPEnrxgqsE6KtsgLvH7NECt34da4yMkKESNSi05Ydx3arghg5ufC69QCITVf8 wItQcL2vzxpML3ESQ2JekKRF39YXymiKDMr6S1XMUtJDj1RWK/sR7odPi1zePJ3sKlv9 +PpA== X-Gm-Message-State: AGi0PuZDWZAO3N5RJ7/lSnfGzPmcZIrzpxw+8AEphXNzU5Gkzx7LxYyq 8Rx+nehPJmxwHsXEKVJWJ90CEqeSRh0= X-Google-Smtp-Source: APiQypJKmV7+CJcic80y6uRwwuybTGabBhNT7hukNZQaAHtN/6SUi3jnaNG8t+717TEqAk8RHVxqFQ== X-Received: by 2002:a17:90b:198e:: with SMTP id mv14mr11508919pjb.69.1587556400151; Wed, 22 Apr 2020 04:53:20 -0700 (PDT) Received: from localhost.localdomain ([49.51.162.193]) by smtp.gmail.com with ESMTPSA id v32sm1715240pgn.35.2020.04.22.04.53.17 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 Apr 2020 04:53:19 -0700 (PDT) From: Jun Zhao To: ffmpeg-devel@ffmpeg.org Date: Wed, 22 Apr 2020 19:52:46 +0800 Message-Id: <1587556372-24387-7-git-send-email-mypopydev@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1587556372-24387-1-git-send-email-mypopydev@gmail.com> References: <1587556372-24387-1-git-send-email-mypopydev@gmail.com> Subject: [FFmpeg-devel] [PATCH v6 6/9] 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 11:52: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: 19161 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 24B3E44B1D2 for ; Wed, 22 Apr 2020 14:53:28 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0A89868BC29; Wed, 22 Apr 2020 14:53:28 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg1-f179.google.com (mail-pg1-f179.google.com [209.85.215.179]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7CBD868BC25 for ; Wed, 22 Apr 2020 14:53:25 +0300 (EEST) Received: by mail-pg1-f179.google.com with SMTP id t11so968136pgg.2 for ; Wed, 22 Apr 2020 04:53:25 -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=mKP+N2PsMqE16aMVRr94hZK03UT/7xwMIYlPfED0BLzc0dWdRtbl60MppCkK5oSIyJ FnIyeTTxztkJ26XcCMtM+6J37n9Uhw9ed9vRal2mNMSVBmRFwLYc+5Yoo4RkaG3FJwyM kJMtmSfYry7sJ2MJaKXI0doqmD9RXHOfndTHSqJXiBZFkKYiuMk0TX80TvXIoiAuhTyU /HhHFZTOwmmDe/0r9/np0EwnrxndA2Mfi1EbICadMa6jDRSRKMWzD1ZDcyFd/17VASah amYbgZavKIkNpr47HDwVvO8RqtHlS5RUF2YJBVg7e83souIB451jlTJv3jHSqlrWGY1R ImFw== 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=RL4w8uOQWYjbFXMMJSopsfdng4bozWi07il5achCLX/elOTiMr7TFdl7aNbh3FRsTa EzLj8R4i8RjOnwIiMfI51TKC6lmjfB1/XA5QXMwPaVTz6lOZLlMsrM74vzBNU2e9o4k1 rcpfOgxB2eaZpU9d5r8IJ98WrRMCVBLYjqt7JSF3veOgM4qEfdGkeWVjuKDIQvW1c5hi KlnOePoxXSp57BidnsBm4LvVcjIi3kw7S2mUVtYeE8xSQZCPjFztl9tTgEQrQ2/4WTDy 2Dp8dG0hoSQN02GbY5xrQRblcNx29lemVg1YIbYZoWVZ72xYd05dn615Qij0q6VYLNbu vb/g== X-Gm-Message-State: AGi0PuYN7uJxovCl1dm2LfdEJQjS7SFiXQs4VPym/II7a3xf67U9sJ9y Mbp18Oc80bsQH5wXQ67/pQUK0kGo6BQ= X-Google-Smtp-Source: APiQypIlu2Bu2rW9nxTqvDpYIoVk2RRzt7hfAG7XVsyZpj9kjy6fReu8UWYoopYC6z6z9u3qTZKvog== X-Received: by 2002:a63:ff49:: with SMTP id s9mr26798264pgk.46.1587556403229; Wed, 22 Apr 2020 04:53:23 -0700 (PDT) Received: from localhost.localdomain ([49.51.162.193]) by smtp.gmail.com with ESMTPSA id v32sm1715240pgn.35.2020.04.22.04.53.20 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 Apr 2020 04:53:22 -0700 (PDT) From: Jun Zhao To: ffmpeg-devel@ffmpeg.org Date: Wed, 22 Apr 2020 19:52:47 +0800 Message-Id: <1587556372-24387-8-git-send-email-mypopydev@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1587556372-24387-1-git-send-email-mypopydev@gmail.com> References: <1587556372-24387-1-git-send-email-mypopydev@gmail.com> Subject: [FFmpeg-devel] [PATCH v6 7/9] 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) { From patchwork Wed Apr 22 11:52: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: 19163 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 26D9644B1D2 for ; Wed, 22 Apr 2020 14:53:32 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0E96268BC35; Wed, 22 Apr 2020 14:53:32 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf1-f173.google.com (mail-pf1-f173.google.com [209.85.210.173]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4FE0368BC2E for ; Wed, 22 Apr 2020 14:53:28 +0300 (EEST) Received: by mail-pf1-f173.google.com with SMTP id d184so951424pfd.4 for ; Wed, 22 Apr 2020 04:53: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=lea3oAhSqErJTg+ylBVjLpFlXwg9YNn04a/i7u1oz1U=; b=BOB2xOc7mv+5mojKle2LBtnfMyzPSffzKY4I5uWeMu9IocWDnWl3fK927NmNLO9h5x r+Dvf3pkKQvUcT9n5EZhIQw5Tqc2BUNt3GrJqpirtSs0y8aj4yEvU5ErzrOEOh3TzS/n hjqoliTwg0kOyq2Tusjjo8oFfVCigadCQXOE2ll20GYP9eqA8AM92HgK9E134yjfwEPl KfzFucqRTxRpqXP0WZEFEj7iEW9hBQhaTsUPb6zmUsvnGOvPjqWz297oQ8E/Vqn6ZMjX /Gl/R5mCzRgrafT56+8EF+hfvsP/SSB4cGHgQGHc1AayLvr+FnBgf2aTrr0rWSGkSDpi 0eBQ== 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=lea3oAhSqErJTg+ylBVjLpFlXwg9YNn04a/i7u1oz1U=; b=iE3OOurVlK51gNrDDyZSpuCAAzfq1Cfo4F0ODe/pIF/Te+JB3eYGaWdvQyUTeWnuYz lLDDrkRKrtDgCu5yVMEkhRjYWCZVulz+BXrpSso9OIqE6UkwCrLbxGcRJEn4yxsOGkH3 IBrfS8nkiigKz1RVhrrlNS13IX2GqDw20sUHe7FWSDgS2A9lIahHJghPT6VZo8J0MC1K jyR0xBGco6ciGnLg/+kiMaaur750uO2ZQZUoRoP6PapRe0XrsQuxxduJ1JAtCioRSPpr qDuhr9bX5vPWId5rEE4e8bTYHVSdtc656x1B5upDs0dCLghvt0O4FQRvq7zvWuaudNkk Jf6A== X-Gm-Message-State: AGi0PuZOPRcWQ5gFkPtrTfmSGVcKFdX2+WXtbVBGk+Mwu7xBxNIMOosC ftIeWGZC3ByjN0jPQNDwN2Tbp+lXSg4= X-Google-Smtp-Source: APiQypL1CNOXTAzNYpNaLNwoHCq4f3sUrE4DC9WrqcD5UQjxQejbQsvcA4GePRSQstUtMEWkn8e5/A== X-Received: by 2002:a63:df0c:: with SMTP id u12mr15805922pgg.387.1587556406225; Wed, 22 Apr 2020 04:53:26 -0700 (PDT) Received: from localhost.localdomain ([49.51.162.193]) by smtp.gmail.com with ESMTPSA id v32sm1715240pgn.35.2020.04.22.04.53.23 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 Apr 2020 04:53:25 -0700 (PDT) From: Jun Zhao To: ffmpeg-devel@ffmpeg.org Date: Wed, 22 Apr 2020 19:52:48 +0800 Message-Id: <1587556372-24387-9-git-send-email-mypopydev@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1587556372-24387-1-git-send-email-mypopydev@gmail.com> References: <1587556372-24387-1-git-send-email-mypopydev@gmail.com> Subject: [FFmpeg-devel] [PATCH v6 8/9] lavc/version: bump minor version for 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 Signed-off-by: Jun Zhao --- libavcodec/version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/version.h b/libavcodec/version.h index 8cff2e8..ad85fb1 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -28,7 +28,7 @@ #include "libavutil/version.h" #define LIBAVCODEC_VERSION_MAJOR 58 -#define LIBAVCODEC_VERSION_MINOR 80 +#define LIBAVCODEC_VERSION_MINOR 81 #define LIBAVCODEC_VERSION_MICRO 100 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ From patchwork Wed Apr 22 11:52:49 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jun Zhao X-Patchwork-Id: 19164 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 35FB644B1D2 for ; Wed, 22 Apr 2020 14:53:34 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 20D9268BC32; Wed, 22 Apr 2020 14:53:34 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl1-f195.google.com (mail-pl1-f195.google.com [209.85.214.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5D7BA68BC17 for ; Wed, 22 Apr 2020 14:53:31 +0300 (EEST) Received: by mail-pl1-f195.google.com with SMTP id c21so14244plz.4 for ; Wed, 22 Apr 2020 04:53:31 -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=7I+Abmbde1Gz2vj6T24FIa1EQ/GdRnpuaeIGnGbtg1A=; b=BDv1SbuUxcoMGDhP+bu9LQTypVCh8V54bcA9K5QG4o4PDDXxyqixjqdV629ThvIMPW aq/hVufJsaL8icCEyGnKNEZQwTO8pIT2k6Y+tRNAlv2o150KZAQUpVwNqmMjgQwDLLeQ fwA9M/UnfEN1/RNYvHg6+WGqqzn0QHzbIaTy/huLLW5P+SHn2hyDjKyNoEogvwPA9B9c Qbiwm4eXA4L+sv3nY3+ZwFqm9NBdFuFHtJ68BLLvAiOmW05LonuXLvI7qx4dnlnzwIZ9 tZf0wpjjjO/VHJCQqlz29DNJYMZuUg6myaHrQt2McRQ5PXk+z5RS3hjtzCEUuVDytQA0 q4Qg== 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=7I+Abmbde1Gz2vj6T24FIa1EQ/GdRnpuaeIGnGbtg1A=; b=f+jPCislqBtQRWs2Jh5D8siPRKaHdM+FZj0CNnwWFa3V/RhW+0jXrZiVqTAu1RnXUO gK1eqzD//hIUCaOz/hLplQpm7ciKoIuqFwhImkJnHpt7SvRxKpXf/3BkN9NrAhi8GtWL 6FuJS3aBK1vKYBOpuKn14Ae9rDrmajU9YqW+W011zEj/FLspfUW4ZhULZw0FNi4o3/c2 ogsfKI2HOxz2KJQqZRqHVIXRB6EQz/quow3t6s6FIKf2mgAiIiVt+p/N84FHkB9mfFvE 1LxfF9Bue3lZ4V35jb4md/67EYZVk2z7gl8UL5lgBPysmubnKHbfI7vhrBn3XTVlCAMV i1hg== X-Gm-Message-State: AGi0Pubk3HMN8ZB36Be5ZTVVaKYN9ip+9sphOYdNHUv1t5Wqt0m2AzvG h/AaqVyDXs3puihJ6Tieg6KgbNt8cmA= X-Google-Smtp-Source: APiQypLxH10JTsKRg+GCLLRwJAIY4+R0GrjsM03D1gk5LwR2pi/WZgK4YdInueSL2u/1NuyD05Fdqg== X-Received: by 2002:a17:902:8b82:: with SMTP id ay2mr27145510plb.285.1587556409324; Wed, 22 Apr 2020 04:53:29 -0700 (PDT) Received: from localhost.localdomain ([49.51.162.193]) by smtp.gmail.com with ESMTPSA id v32sm1715240pgn.35.2020.04.22.04.53.26 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 Apr 2020 04:53:28 -0700 (PDT) From: Jun Zhao To: ffmpeg-devel@ffmpeg.org Date: Wed, 22 Apr 2020 19:52:49 +0800 Message-Id: <1587556372-24387-10-git-send-email-mypopydev@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1587556372-24387-1-git-send-email-mypopydev@gmail.com> References: <1587556372-24387-1-git-send-email-mypopydev@gmail.com> Subject: [FFmpeg-devel] [PATCH v6 9/9] doc/APIChanges: add AV_PKT_DATA_DOVI_CONF entry 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 Signed-off-by: Jun Zhao --- doc/APIchanges | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/APIchanges b/doc/APIchanges index e30148d..5aa25de 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -15,6 +15,9 @@ libavutil: 2017-10-21 API changes, most recent first: +2020-04-22 - xxxxxxxxxx - lavc 58.81.100 - packet.h + Add AV_PKT_DATA_DOVI_CONF. + 2020-04-15 - xxxxxxxxxx - lavc 58.79.100 - avcodec.h Add formal support for calling avcodec_flush_buffers() on encoders. Encoders that set the cap AV_CODEC_CAP_ENCODER_FLUSH will be flushed.