From patchwork Tue Jul 28 15:03:30 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Wang X-Patchwork-Id: 21340 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 AA0594478AF for ; Tue, 28 Jul 2020 18:03:54 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 86EA368B9A1; Tue, 28 Jul 2020 18:03:54 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl1-f170.google.com (mail-pl1-f170.google.com [209.85.214.170]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B7A1A68B830 for ; Tue, 28 Jul 2020 18:03:47 +0300 (EEST) Received: by mail-pl1-f170.google.com with SMTP id k13so2208272plk.13 for ; Tue, 28 Jul 2020 08:03:47 -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; bh=NNfnwabrZoubkkj78HhxcEU7dxaQIJECD/BqWW9bVX0=; b=asDCWjIi/3H5G0U+EG5pSdQeBKWWnwSVR6HYKRs1ya21ygWNTpoROfV8qFcUjfH1Fk 2Ns4FIykpFoQ1Hx5P0sijYg2TAmFAW3S++awEK+t24zmqufKIHf501ZfjBQNgCSLKAW9 utwxIOLAWjs0Ch2AlGigc0XhX70PXcLX6GpeDXANJ+mIyR4y3pwZVf+tCaRobc32tsvn lDbIi+OsAZxCxv9k4My6yGqeKx286wBwPbD+93c/7dAoB67udk17vhDdxoVCDVQyaKNB SlXnHZCRPS/UkM4ohXBxHttwpzr3qTWEfM82vZLQGa81OxiCZ6Sb31RicDjrZO1TTqk3 MzLw== 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; bh=NNfnwabrZoubkkj78HhxcEU7dxaQIJECD/BqWW9bVX0=; b=h13l5nE4mOg5e/Fnt9nsR1GGhlg4DAb3Lc3Lx6OhwA3CiLos2IspzPlW8jXjjT/Dz/ 7CXpwxwqyUaknNDjSy0RxuPI95XejnaixKJCspZFI8u3Y7PQZGZLSK2wz16by1teo17Y yEm1xqIpdsweBmhx45Q0H38TIcUF/o6Qk9LbH6vMPO5OPlzI4aasp6f9hwCYcUf6DOLM esyRDx4b2KnzlKT1/MyqlptykS/Yfvl0zjDWt16MJ96mk/LQw6iLDeN5T+lHdGMcVvTR hli2LxkQKixVnPpb20J6HgnnsMeNcTtPKx2yYnTiA2/+v76GviVhlVo8TynYCQp72F7y 1iCQ== X-Gm-Message-State: AOAM532OK0XIGpxDCGy3ej+k/hflhoAe9fL/e042y9H4rtouuA2g+nsI 2xzNEjBF/uk6ArbxzluO/zxrzdMX X-Google-Smtp-Source: ABdhPJx82Y83VwsOX3kdPlWn2WOXqU9ywmzV+qLRmHBrZW2yqOvb8jtJoX2MRCbeBPf5cknZldUznA== X-Received: by 2002:a17:90a:1a02:: with SMTP id 2mr4692949pjk.150.1595948625274; Tue, 28 Jul 2020 08:03:45 -0700 (PDT) Received: from vpn2.localdomain ([161.117.202.209]) by smtp.gmail.com with ESMTPSA id m31sm3570005pjb.52.2020.07.28.08.03.43 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 28 Jul 2020 08:03:44 -0700 (PDT) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Tue, 28 Jul 2020 23:03:30 +0800 Message-Id: <1595948614-10861-1-git-send-email-lance.lmwang@gmail.com> X-Mailer: git-send-email 1.8.3.1 Subject: [FFmpeg-devel] [PATCH 1/5] API: add AV_PKT_DATA_MPEGTS_DESC_6A to AVPacketSideDataType 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: Limin Wang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Limin Wang Signed-off-by: Limin Wang --- doc/APIchanges | 3 +++ libavcodec/avpacket.c | 1 + libavcodec/packet.h | 7 +++++++ libavcodec/version.h | 2 +- 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/doc/APIchanges b/doc/APIchanges index 72a4833..2c76fdc 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -15,6 +15,9 @@ libavutil: 2017-10-21 API changes, most recent first: +2020-07-xx - xxxxxxxxxx - lavc 58.98.102 - packet.h + Add AV_PKT_DATA_MPEGTS_DESC_6A. + 2020-07-xx - xxxxxxxxxx - lavu 56.57.100 - cpu.h Add AV_CPU_FLAG_MMI and AV_CPU_FLAG_MSA. diff --git a/libavcodec/avpacket.c b/libavcodec/avpacket.c index 4801163..0e88112 100644 --- a/libavcodec/avpacket.c +++ b/libavcodec/avpacket.c @@ -401,6 +401,7 @@ const char *av_packet_side_data_name(enum AVPacketSideDataType type) case AV_PKT_DATA_ICC_PROFILE: return "ICC Profile"; case AV_PKT_DATA_DOVI_CONF: return "DOVI configuration record"; case AV_PKT_DATA_S12M_TIMECODE: return "SMPTE ST 12-1:2014 timecode"; + case AV_PKT_DATA_MPEGTS_DESC_6A: return "ETSI 300 468 descriptor 0x6A(AC-3)"; } return NULL; } diff --git a/libavcodec/packet.h b/libavcodec/packet.h index 0a19a0e..a18824a 100644 --- a/libavcodec/packet.h +++ b/libavcodec/packet.h @@ -291,6 +291,13 @@ enum AVPacketSideDataType { AV_PKT_DATA_S12M_TIMECODE, /** + * ETSI 300 468 descriptor 0x6A(AC-3) + * Refer to: ETSI EN 300 468 V1.11.1 (2010-04) (SI in DVB systems) + * Tags are stored in struct AVDescriptor6A. + */ + AV_PKT_DATA_MPEGTS_DESC_6A, + + /** * 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. diff --git a/libavcodec/version.h b/libavcodec/version.h index 291e6b5..4750e25 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 97 +#define LIBAVCODEC_VERSION_MINOR 98 #define LIBAVCODEC_VERSION_MICRO 102 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ From patchwork Tue Jul 28 15:03:31 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Wang X-Patchwork-Id: 21343 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 30A7A44B96F for ; Tue, 28 Jul 2020 18:31:38 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0B2FF68B9A4; Tue, 28 Jul 2020 18:31:38 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-il1-f194.google.com (mail-il1-f194.google.com [209.85.166.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 36EA668B99A for ; Tue, 28 Jul 2020 18:31:32 +0300 (EEST) Received: by mail-il1-f194.google.com with SMTP id i138so10613877ild.9 for ; Tue, 28 Jul 2020 08:31: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=7KN3knDm/R06dPJJqO60yNmsnvQXo8YQrt4Q3+aRSio=; b=HWnZrUEdMYRLPJZd7jPTuRXUpK7JgyHesJB8/pxKeOxMJXP5eVQWBTeVnLFsAUtOEQ iD0VQ6sjlycNFV2tk4ToMMTQeYD/4KpHTmG4KNKdUi7WcP9OwcHl+8eA54RgbH62s7wN Mxbn2oLPTldY55FB5Z9RUiKHYmY446t8LXATJZaJALQUT+Myo5eb2E+3PnJL2j6kKm01 GuSj7ktSQcAqY8SOMUcZXqRuV84iIsPFPsH37zXgvYmKRDlPTpFC45iBdKsLpiV8dpO2 8J4xyl4uqA8jjsF1q5NayD8+qtjuZRxhHo7W6XykFluBkd4ReJYdQlyrN1A1mPXZIrVz tgig== 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=7KN3knDm/R06dPJJqO60yNmsnvQXo8YQrt4Q3+aRSio=; b=eGJuancry/Zudr8tJxv2m331Unv3EdJgFzo6zHdmJU+XC1nr6v0rAwZS+LCEERrKnC r10RwlRXLfftlKWzfGB32wgK0sNhhTVm2QqkyV1FSmKKb4EExftIk+4p/Khb7r0xJZvT vc0tyR0pJs+aDDbNFLCgZvfdc7WdR4zNgnY55ywvNDQ/ZycaCeNp5lGmNyNVOrOjZrRu zjd79BnJC1vaEMCzGEBRSwDbVNhK5xsX0EgOUl/AVkt0MoJtYyBaa8GunHrMSqjkIuOP SE+f4BIKlFedS23PQ9tDI/8yIlWR1+1AhdxIBqXb72bOWrqQL4oK73J6qlmAje9H7J9k IcfA== X-Gm-Message-State: AOAM533LyftddtkVc8PE5hkCoB6npBGZdf6jPX7MNX/PCLp9Y7lYfHej ek8Iv0lLeyPKEwhffH2Rh6yACB06 X-Google-Smtp-Source: ABdhPJzhy/ZjlCKg3o8YjIkF2RCyy9iNPTziiv7WPiZjGFd1zQ7i/tDro/NaZDD36jJ4uXXGIFHbnw== X-Received: by 2002:a65:408b:: with SMTP id t11mr24552652pgp.407.1595948626851; Tue, 28 Jul 2020 08:03:46 -0700 (PDT) Received: from vpn2.localdomain ([161.117.202.209]) by smtp.gmail.com with ESMTPSA id m31sm3570005pjb.52.2020.07.28.08.03.45 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 28 Jul 2020 08:03:46 -0700 (PDT) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Tue, 28 Jul 2020 23:03:31 +0800 Message-Id: <1595948614-10861-2-git-send-email-lance.lmwang@gmail.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1595948614-10861-1-git-send-email-lance.lmwang@gmail.com> References: <1595948614-10861-1-git-send-email-lance.lmwang@gmail.com> Subject: [FFmpeg-devel] [PATCH 2/5] avutil/mpegts_audio_desc_metadata: add helper function for AC3 descriptor 0x6a 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: Limin Wang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Limin Wang Signed-off-by: Limin Wang --- libavutil/Makefile | 2 ++ libavutil/mpegts_audio_desc_metadata.c | 33 ++++++++++++++++++++ libavutil/mpegts_audio_desc_metadata.h | 57 ++++++++++++++++++++++++++++++++++ 3 files changed, 92 insertions(+) create mode 100644 libavutil/mpegts_audio_desc_metadata.c create mode 100644 libavutil/mpegts_audio_desc_metadata.h diff --git a/libavutil/Makefile b/libavutil/Makefile index 9b08372..4b4aa68 100644 --- a/libavutil/Makefile +++ b/libavutil/Makefile @@ -57,6 +57,7 @@ HEADERS = adler32.h \ md5.h \ mem.h \ motion_vector.h \ + mpegts_audio_desc_metadata.h \ murmur3.h \ opt.h \ parseutils.h \ @@ -140,6 +141,7 @@ OBJS = adler32.o \ mastering_display_metadata.o \ md5.o \ mem.o \ + mpegts_audio_desc_metadata.o \ murmur3.o \ opt.o \ parseutils.o \ diff --git a/libavutil/mpegts_audio_desc_metadata.c b/libavutil/mpegts_audio_desc_metadata.c new file mode 100644 index 0000000..14d9100 --- /dev/null +++ b/libavutil/mpegts_audio_desc_metadata.c @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2020 Limin Wang + * + * 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 "mpegts_audio_desc_metadata.h" +#include "mem.h" + +AVDescriptor6A *av_desc6a_alloc(size_t *size) +{ + AVDescriptor6A *desc6a = (AVDescriptor6A*)av_mallocz(sizeof(*desc6a)); + + if (!desc6a) + return NULL; + if (size) + *size = sizeof(*desc6a); + return desc6a; + +} diff --git a/libavutil/mpegts_audio_desc_metadata.h b/libavutil/mpegts_audio_desc_metadata.h new file mode 100644 index 0000000..58beee4 --- /dev/null +++ b/libavutil/mpegts_audio_desc_metadata.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2020 Limin Wang + * + * 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 + * MPEGTS audio stream descriptor + */ + +#ifndef AVUTIL_MPEGTS_AUDIO_DESC_METADATA_H +#define AVUTIL_MPEGTS_AUDIO_DESC_METADATA_H +#include +#include + +/* ETSI 300 468 descriptor 0x6A(AC-3) + * Refer to: ETSI EN 300 468 V1.11.1 (2010-04) (SI in DVB systems) + * + * @note The struct must be allocated with av_desc6a_alloc() and + * its size is not a part of the public ABI. + */ +typedef struct AVDescriptor6A { + uint8_t component_type_flag; + uint8_t bsid_flag; + uint8_t mainid_flag; + uint8_t asvc_flag; + uint8_t reserved_flags; + uint8_t component_type; + uint8_t bsid; + uint8_t mainid; + uint8_t asvc; +} AVDescriptor6A; + +/** + * Allocate a AVDescriptor6A structure and initialize its + * fields to default values. + * + * @return the newly allocated struct or NULL on failure + */ +AVDescriptor6A *av_desc6a_alloc(size_t *size); + +#endif /* AVUTIL_MPEGTS_AUDIO_DESC_METADATA_H */ From patchwork Tue Jul 28 15:03:32 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Wang X-Patchwork-Id: 21342 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 8B48A44B6E5 for ; Tue, 28 Jul 2020 18:12:21 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 68E8168B987; Tue, 28 Jul 2020 18:12:21 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf1-f193.google.com (mail-pf1-f193.google.com [209.85.210.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EC12468B94B for ; Tue, 28 Jul 2020 18:12:14 +0300 (EEST) Received: by mail-pf1-f193.google.com with SMTP id s26so11101157pfm.4 for ; Tue, 28 Jul 2020 08:12:14 -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=EZQJbfkRJ+jduH178/XhLG51alESBp9jhwDBlU13trs=; b=jpbskYzgBIth6mcJLDTc/PXJphn9KTAgL8OU2uESneXQYP/URjlodUGOFvfJwKHVZl mywD4KoZvGsy2jaQNIFAYaLE3gGfazDkYFTsZDIn+fTNTnX3Qf11jNxZA6cPV3QaZOZZ ZQnY3o1D4hN2k3dIcY4WywWgMHRUedExnraeqDC7Bj3O4l9BDlzZMbFWedmB8WQK0dlW nTuD/HP6ZuPhNlvb4AlM8KyUupGR4XI+PU1cxPwpJYYCS7NprdHzerFUqeyKmXrl4FJP Q32e8ZjUVw3zrWmccbjK51vBdh200ohNXKPfoeG4WR5tdOjDSxb2Rb6yXTAjf4J2t6nX mxFw== 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=EZQJbfkRJ+jduH178/XhLG51alESBp9jhwDBlU13trs=; b=BohhWDpiMuYFd39tpe9NRhleCiKdv3s233RXv+/u0fpoTQqNgk0cO3gFIGcVujInIr 3uE4fzZ6uCKbxMfbeOh5lqgT8bwqgtt1k6jOE5knkvb65WNsv6sZNkKnduMOmMK1fME5 Me6PokVMUOD6gyDKZt8W4cQrhG6XaevVFvtkoOSXMs+FejBlBu+rosSJqefZrbU7S2S/ UujBai5/uimeejgKVomgbBbCLYbe3WDi24dF7y5ld4j73Q987eqh0keBkVkaCP6oId7U Uo4t4REN1ZsbgDdJB6v+YJx0Rrucp6neP4TJozEctwsVtKYBzsU1Fm9kQ121SzsJSyJr dY9Q== X-Gm-Message-State: AOAM533a4xcnWdcgpTY239bKubBGZjjvlzsJGBKVa/Gd1vyLnGFp0mIl 488b6Jb3ssKvJUiTpLK0rMyZvczh X-Google-Smtp-Source: ABdhPJwB9rU4IKWjvFyUpTUUP9hwgQkNkabzymh6TymVP/ZZ1icYy+F8Yb0ryaUqrECnvhWbeQ3Mdg== X-Received: by 2002:a65:484c:: with SMTP id i12mr25981015pgs.145.1595948628358; Tue, 28 Jul 2020 08:03:48 -0700 (PDT) Received: from vpn2.localdomain ([161.117.202.209]) by smtp.gmail.com with ESMTPSA id m31sm3570005pjb.52.2020.07.28.08.03.47 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 28 Jul 2020 08:03:47 -0700 (PDT) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Tue, 28 Jul 2020 23:03:32 +0800 Message-Id: <1595948614-10861-3-git-send-email-lance.lmwang@gmail.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1595948614-10861-1-git-send-email-lance.lmwang@gmail.com> References: <1595948614-10861-1-git-send-email-lance.lmwang@gmail.com> Subject: [FFmpeg-devel] [PATCH 3/5] avformat/dump: dump AV_PKT_DATA_MPEGTS_6A_DESC 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: Limin Wang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Limin Wang Signed-off-by: Limin Wang --- libavformat/dump.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/libavformat/dump.c b/libavformat/dump.c index 6d29d85..b2e9721 100644 --- a/libavformat/dump.c +++ b/libavformat/dump.c @@ -28,6 +28,7 @@ #include "libavutil/log.h" #include "libavutil/mastering_display_metadata.h" #include "libavutil/dovi_meta.h" +#include "libavutil//mpegts_audio_desc_metadata.h" #include "libavutil/mathematics.h" #include "libavutil/opt.h" #include "libavutil/avstring.h" @@ -424,6 +425,19 @@ static void dump_s12m_timecode(void *ctx, const AVPacketSideData *sd) } } +static void dump_desc6a_conf(void *ctx, const AVPacketSideData *sd) +{ + const AVDescriptor6A *desc6a = (const AVDescriptor6A *)sd->data; + + av_log(ctx, AV_LOG_INFO, "component_type_flag: %u, bsid_flag: %u, " + "mainid_flag: %u, asvc_flag: %u, " + "component_type: %u, bsid: %u, mainid: %u, asvc: %u", + desc6a->component_type_flag, desc6a->bsid_flag, + desc6a->mainid_flag, desc6a->asvc_flag, + desc6a->component_type, desc6a->bsid, desc6a->mainid, desc6a->asvc); +} + + static void dump_sidedata(void *ctx, const AVStream *st, const char *indent) { int i; @@ -494,6 +508,10 @@ static void dump_sidedata(void *ctx, const AVStream *st, const char *indent) av_log(ctx, AV_LOG_INFO, "SMPTE ST 12-1:2014: "); dump_s12m_timecode(ctx, sd); break; + case AV_PKT_DATA_MPEGTS_DESC_6A: + av_log(ctx, AV_LOG_INFO, "ETSI 300 468 descriptor 0x6A(AC-3): "); + dump_desc6a_conf(ctx, sd); + break; default: av_log(ctx, AV_LOG_INFO, "unknown side data type %d (%d bytes)", sd->type, sd->size); From patchwork Tue Jul 28 15:03:33 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Wang X-Patchwork-Id: 21370 Delivered-To: andriy.gelman@gmail.com Received: by 2002:a25:34cf:0:0:0:0:0 with SMTP id b198csp536849yba; Tue, 28 Jul 2020 08:04:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwdf8A3tHDxqSPHgMWlm4LW8Sim09vSoqZPauL/vhhYkLaEE6qOVr3vClJYXXA3zO3C1m7B X-Received: by 2002:a5d:45c9:: with SMTP id b9mr24962195wrs.283.1595948662282; Tue, 28 Jul 2020 08:04:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1595948662; cv=none; d=google.com; s=arc-20160816; b=SYdbA5JQ0oBNP+hDxpLNosHQYZf1vG7hpXZmOUlIKP9CaKavi5v82TKoWLfuKrxwXT u4NboOxbXgxuBcdGswNnX0CQxk5Hzd5IDvfSV3+UK49kJU/I/UHjHiZ5I+oH3ZqOYcY8 XHp8s6aCymYI589/9Ku72GWtRW5g1sfVIOF/h+RWPHogvHiJcCaiU1KICqPv1X3QKKy9 ouwmjcx9w/Tg18dNv1GaSjWcVKmganTZ8fxZoLPjJ09mDFIpPVF0Cm7HUftkCQqSG5Xk DGBXRbclbTT2gnZBuebcgWZcHMUssi3EwIBKGq2J0GKGlkTIABaVeaqb6sFokbXe9zqD Osqw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to; bh=qnaiQTajv7f4kbQRjaxXz3HLruDjXx/e9YXpXS8L4dw=; b=hDkcXlufrlIOOC3CzZgne44u7+UJojxbE/X+1rOXPXoOhWbzPQPWDFF6ObavwDmKVT 8iYsXgqshpJPuK9T2K08kk47VA2tD17P/WdTrIyBKDtNEUF9woyEc5PSF5Kj64/hY001 ma657YCoK7WIVFp2X7HFI+n0LaFC+u1D2tBAu7L4wzTiKxHUPuB4OLpraq1OeajJnSdj eIJSng2re48Ix/kHroVlskWNOyThEeejJviYWZt06ytz+tnrb2BSX2Y0suQLn6u/IJUK u09Cn7BFaU2puAjyVjvud0PQSj9L12iVca2HbMoTGmxPUxXZC1A4f3+qjKMYdTVss+fF Nc6A== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=uqzyH4FJ; 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 g9si2538063wmf.210.2020.07.28.08.04.21; Tue, 28 Jul 2020 08:04:22 -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=20161025 header.b=uqzyH4FJ; 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 3411668B9C6; Tue, 28 Jul 2020 18:04:03 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg1-f172.google.com (mail-pg1-f172.google.com [209.85.215.172]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0145F68B9A4 for ; Tue, 28 Jul 2020 18:03:55 +0300 (EEST) Received: by mail-pg1-f172.google.com with SMTP id s15so484202pgc.8 for ; Tue, 28 Jul 2020 08:03:54 -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=yQhpVK27Q5JTQaGv+E6i7VLoYlZybwPzJM6ii/dGVec=; b=uqzyH4FJlrS9GX+D7xdrWALkbYO3csY4bVnnQoNfdJjeXIYhUNszSZD8lZdAe5WTH6 md5SX3ITRzR43Gf2xUaJ2dp06kmgLr0jRpoYnUg4ePC4qbjUAW5w3LmgaHOUICxoNgeq lqUP2eJV+g5KivaESGxAoG2GTv2iCGz9n9OyLr2ihXaJx9iyfn25kdeSpQ6qH6zeMoxf s9jkTaxE3Pu8tOoYNyKTYnwTbz7npv5Z8crKwiwRK4ijm2o0AB/Qwm8fBuUe5JL8edXJ W5sWwiVW5LbUYWmEAbbMBG/35d7GuV4dwuqU/NS13MTgYblC1zZ9hO6Ls4YOVEaw6E/0 v9/w== 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=yQhpVK27Q5JTQaGv+E6i7VLoYlZybwPzJM6ii/dGVec=; b=XrHCY0Wxh8Hd46RfqL0jIOKSIwigAwguhwOydd2At7NYs3cfbRKxVx7nrY23h2fW/T OMWlawAJZOnU1NWlHXflzMKfXAFVNYWvcpfWeAWdy15lcvlKLlQNS66SYyV39JlZ6IW8 8gxV9MRVVlhoCVne4tYxtxWxBvW3Xlo2AQlXzJDU6ZY2wKSpOpNZpufXZCqhy36CtZV7 3VwGl8jEx7C4SoKxZJh/qI+jRHKSXpGg5R6mdQXgFABJkrrbugOOeGXzYNpxfvJ+Al/5 pyHdbHa1k0RjnyAqNZliEWnWvmtiWI+kiK3ncLqIedivw9SJz/E9zMQRHcVLFQELZ0JV DHrg== X-Gm-Message-State: AOAM533SpB9hTC5T8Yu0tRUArDP0ENHwNDT46cnnw0ssGdDcvi06hont /C4dqysQxgY51+XsRVKySVLg1LbY X-Received: by 2002:a63:5a54:: with SMTP id k20mr24538989pgm.226.1595948629821; Tue, 28 Jul 2020 08:03:49 -0700 (PDT) Received: from vpn2.localdomain ([161.117.202.209]) by smtp.gmail.com with ESMTPSA id m31sm3570005pjb.52.2020.07.28.08.03.48 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 28 Jul 2020 08:03:49 -0700 (PDT) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Tue, 28 Jul 2020 23:03:33 +0800 Message-Id: <1595948614-10861-4-git-send-email-lance.lmwang@gmail.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1595948614-10861-1-git-send-email-lance.lmwang@gmail.com> References: <1595948614-10861-1-git-send-email-lance.lmwang@gmail.com> Subject: [FFmpeg-devel] [PATCH 4/5] avformat/mpegts: parse and export descriptor 6a 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: Limin Wang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: g/DVsP9RzAM5 Content-Length: 5690 From: Limin Wang Signed-off-by: Limin Wang --- libavformat/mpegts.c | 49 +++++++++++++++++++++++++++++++++++++++++++++---- tests/ref/fate/ts-demux | 2 +- 2 files changed, 46 insertions(+), 5 deletions(-) diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c index c6fd3e1..b5ea5a1 100644 --- a/libavformat/mpegts.c +++ b/libavformat/mpegts.c @@ -29,6 +29,7 @@ #include "libavutil/opt.h" #include "libavutil/avassert.h" #include "libavutil/dovi_meta.h" +#include "libavutil/mpegts_audio_desc_metadata.h" #include "libavcodec/bytestream.h" #include "libavcodec/get_bits.h" #include "libavcodec/opus.h" @@ -2073,16 +2074,56 @@ int ff_parse_mpeg2_descriptor(AVFormatContext *fc, AVStream *st, int stream_type break; case 0x6a: /* ac-3_descriptor */ { - int component_type_flag = get8(pp, desc_end) & (1 << 7); - if (component_type_flag) { - int component_type = get8(pp, desc_end); + int ret; + uint8_t buf; + size_t desc6a_size; + AVDescriptor6A *desc6a; + + if (desc_end - *pp < 1) + return AVERROR_INVALIDDATA; + + desc6a = av_desc6a_alloc(&desc6a_size); + if (!desc6a) + return AVERROR(ENOMEM); + buf = get8(pp, desc_end); + desc6a->component_type_flag = (buf >> 7) & 0x1; + desc6a->bsid_flag = (buf >> 6) & 0x1; + desc6a->mainid_flag = (buf >> 5) & 0x1; + desc6a->asvc_flag = (buf >> 4) & 0x1; + if (desc6a->component_type_flag) { int service_type_mask = 0x38; // 0b00111000 - int service_type = ((component_type & service_type_mask) >> 3); + int service_type; + + if (desc_end - *pp < 1) + return AVERROR_INVALIDDATA; + desc6a->component_type = get8(pp, desc_end); + service_type = ((desc6a->component_type & service_type_mask) >> 3); if (service_type == 0x02 /* 0b010 */) { st->disposition |= AV_DISPOSITION_DESCRIPTIONS; av_log(ts ? ts->stream : fc, AV_LOG_DEBUG, "New track disposition for id %u: %u\n", st->id, st->disposition); } } + if (desc6a->bsid_flag) { + if (desc_end - *pp < 1) + return AVERROR_INVALIDDATA; + desc6a->bsid = get8(pp, desc_end); + } + if (desc6a->mainid_flag) { + if (desc_end - *pp < 1) + return AVERROR_INVALIDDATA; + desc6a->mainid = get8(pp, desc_end); + } + if (desc6a->asvc_flag) { + if (desc_end - *pp < 1) + return AVERROR_INVALIDDATA; + desc6a->asvc_flag = get8(pp, desc_end); + } + ret = av_stream_add_side_data(st, AV_PKT_DATA_MPEGTS_DESC_6A, + (uint8_t *)desc6a, desc6a_size); + if (ret < 0) { + av_free(desc6a); + return ret; + } } break; case 0x7a: /* enhanced_ac-3_descriptor */ diff --git a/tests/ref/fate/ts-demux b/tests/ref/fate/ts-demux index cdf34d6..dfe0374 100644 --- a/tests/ref/fate/ts-demux +++ b/tests/ref/fate/ts-demux @@ -10,7 +10,7 @@ #sample_rate 1: 48000 #channel_layout 1: 60f #channel_layout_name 1: 5.1(side) -1, 0, 0, 2880, 1536, 0x773ffeea, S=1, 1, 0x00bd00bd +1, 0, 0, 2880, 1536, 0x773ffeea, S=2, 1, 0x00bd00bd, 9, 0x00000000 1, 2880, 2880, 2880, 1536, 0x6dc10748 1, 5760, 5760, 2880, 1536, 0xbab5129c 1, 8640, 8640, 2880, 1536, 0x602f034b, S=1, 1, 0x00bd00bd From patchwork Tue Jul 28 15:03:34 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Wang X-Patchwork-Id: 21341 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 E12B74478AF for ; Tue, 28 Jul 2020 18:04:00 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C635368B9B8; Tue, 28 Jul 2020 18:04:00 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f68.google.com (mail-pj1-f68.google.com [209.85.216.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D129668B9A4 for ; Tue, 28 Jul 2020 18:03:53 +0300 (EEST) Received: by mail-pj1-f68.google.com with SMTP id lx9so911914pjb.2 for ; Tue, 28 Jul 2020 08:03:53 -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=SPm5issQPxPCbOXwdnthss7/lCwilO+PoaOQG5opCAM=; b=tfkZwKpBLMsLdB953Q+hUQzWrjUr2LYbKHOEcZYpldnmsbDhzyol65Y89lJ1aGZWKS /XprmXmHp6EFDN7I0kknxY5EPtTObCDveNqYneVf58aEaShH/rY+NoBD2e2QMga+CiT9 rNVKCiONfamVwjRuRKT+KTO99gKKy4P5V2eLfOI8aFYdisBKTS4qMqFDb9wYxCMnZVXc ecRxLIhWHOwuLtMwfAxlfL78/im68yqUtzLH1CC956CBg9znc9oyEgnbtx4al4jDnft7 5fEHLGCEGuxmGyZxmNcNdx/MN3F6SuYtx72P/tkK6IBqSiQxnJU/2lqfvJ2eqngXoM/O Et+w== 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=SPm5issQPxPCbOXwdnthss7/lCwilO+PoaOQG5opCAM=; b=bSHfxiy7PV8grVNnmnvmE2WoedL+gbPwyBXBt3gQOcfAJ7iIisITicpFME34eBO00s htXixUvagC7UI255imKWkcEnU0NNV1gwnWxdZq6J4bkESpeW0Qb/YT9sWueUpdbM8zy7 MdBjP3VeyVx3VFlD30Ldoey/38ds1yqtFAJlW9yJeOvT1u1NFGAkSEUzbTpjel8wlRNW Az5l8l2XS8SwiOLWAgNrGD32mzRQ6E/Q6RBNQhf5UAP8nvawnfGlNbvyk73wLw57/tiP qZ1Ir5rop4KpM5yNuxqQvkq2cV80OC3bJxqTT2Yb/N1yZOq2IhzW08A87E7Bb2Ulo/pr 7WcA== X-Gm-Message-State: AOAM530UfUK2l0hL++TnA5xe35pP2aleOppakJyYxf5bhzJeHerHmnxt ptxEfUaZ7WBWwI8hBWpM4OyyHRtv X-Google-Smtp-Source: ABdhPJxNsrupODiJ4+Y439XTu1qmNXpIINsi+srnMBSUqhhn0tcEXhgnXZTktwPq7ULWJdACf4+jFA== X-Received: by 2002:a17:90a:a393:: with SMTP id x19mr5109010pjp.228.1595948631530; Tue, 28 Jul 2020 08:03:51 -0700 (PDT) Received: from vpn2.localdomain ([161.117.202.209]) by smtp.gmail.com with ESMTPSA id m31sm3570005pjb.52.2020.07.28.08.03.50 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 28 Jul 2020 08:03:51 -0700 (PDT) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Tue, 28 Jul 2020 23:03:34 +0800 Message-Id: <1595948614-10861-5-git-send-email-lance.lmwang@gmail.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1595948614-10861-1-git-send-email-lance.lmwang@gmail.com> References: <1595948614-10861-1-git-send-email-lance.lmwang@gmail.com> Subject: [FFmpeg-devel] [PATCH 5/5] avformat/mpegtsenc: support 0x6a descriptor for AC-3 by side data if have 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: Limin Wang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Limin Wang Signed-off-by: Limin Wang --- libavformat/mpegtsenc.c | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c index 718ddab..ff0da62 100644 --- a/libavformat/mpegtsenc.c +++ b/libavformat/mpegtsenc.c @@ -26,6 +26,7 @@ #include "libavutil/intreadwrite.h" #include "libavutil/mathematics.h" #include "libavutil/opt.h" +#include "libavutil//mpegts_audio_desc_metadata.h" #include "libavcodec/internal.h" @@ -244,6 +245,8 @@ typedef struct MpegTSWriteStream { /* For Opus */ int opus_queued_samples; int opus_pending_trim_start; + + AVDescriptor6A desc6a; } MpegTSWriteStream; static void mpegts_write_pat(AVFormatContext *s) @@ -486,9 +489,22 @@ static int mpegts_write_pmt(AVFormatContext *s, MpegTSService *service) case AVMEDIA_TYPE_AUDIO: if (ts->flags & MPEGTS_FLAG_SYSTEM_B) { if (codec_id == AV_CODEC_ID_AC3) { + int len = 1; + + if (ts_st->desc6a.component_type_flag) len ++; + if (ts_st->desc6a.bsid_flag) len ++; + if (ts_st->desc6a.mainid_flag) len ++; + if (ts_st->desc6a.asvc_flag) len ++; + *q++=0x6a; // AC3 descriptor see A038 DVB SI - *q++=1; // 1 byte, all flags sets to 0 - *q++=0; // omit all fields... + *q++ = len; + *q++ = ts_st->desc6a.component_type_flag << 7 | ts_st->desc6a.bsid_flag << 6 | + ts_st->desc6a.mainid_flag << 5 | ts_st->desc6a.asvc_flag << 4; + + if (ts_st->desc6a.component_type_flag) *q++ = ts_st->desc6a.component_type; + if (ts_st->desc6a.bsid_flag) *q++ = ts_st->desc6a.bsid; + if (ts_st->desc6a.mainid_flag) *q++ = ts_st->desc6a.mainid; + if (ts_st->desc6a.asvc_flag) *q++ = ts_st->desc6a.asvc; } else if (codec_id == AV_CODEC_ID_EAC3) { *q++=0x7a; // EAC3 descriptor see A038 DVB SI *q++=1; // 1 byte, all flags sets to 0 @@ -1075,6 +1091,7 @@ static int mpegts_init(AVFormatContext *s) ts_st->first_pts_check = 1; ts_st->cc = 15; ts_st->discontinuity = ts->flags & MPEGTS_FLAG_DISCONT; + memset(&ts_st->desc6a, 0, sizeof(ts_st->desc6a)); if (st->codecpar->codec_id == AV_CODEC_ID_AAC && st->codecpar->extradata_size > 0) { AVStream *ast; @@ -1843,6 +1860,13 @@ static int mpegts_write_packet_internal(AVFormatContext *s, AVPacket *pkt) * need to count the samples of that too! */ av_log(s, AV_LOG_WARNING, "Got MPEG-TS formatted Opus data, unhandled"); } + } else if (st->codecpar->codec_id == AV_CODEC_ID_AC3) { + AVDescriptor6A *side_data; + int sd_size; + side_data = (AVDescriptor6A *) av_packet_get_side_data(pkt, + AV_PKT_DATA_MPEGTS_DESC_6A, &sd_size); + if (side_data && sd_size == sizeof(*side_data)) + memcpy(&ts_st->desc6a, side_data, sizeof(*side_data)); } if (ts_st->payload_size && (ts_st->payload_size + size > ts->pes_payload_size ||