[FFmpeg-devel] [PATCH v4] avformat: add MMTP parser and MMT/TLV demuxer
SuperFashi
admin at superfashi.com
Sun Apr 30 06:32:46 EEST 2023
Thanks. Is there anything else that does not fit codebase tradition? Please
point everything out so I could send a new patch.
On Sun, Apr 30, 2023 at 3:06 AM Michael Niedermayer <michael at niedermayer.cc>
wrote:
> On Sat, Apr 29, 2023 at 02:53:06PM +0900, SuperFashi wrote:
> > v1 -> v2: Refactor using GetByteContext; Fix compile error.
> > v2 -> v3: Remove debug statement.
> > v3 -> v4: Squash commits (sorry, first time git patch user :(
> >
> > This patch adds an MPEG Media Transport Protocol (MMTP) parser, as
> defined in ISO/IEC 23008-1, and an MMT protocol over TLV packets (MMT/TLV)
> demuxer, as defined in ARIB STD-B32. Currently, it supports HEVC, AAC LATM,
> and ARIB-TTML demuxing.
> >
> > Since MMTP is designed to transmit over IP, there is no size information
> within each MMTP packet, and there is no filesystem format defined
> alongside the protocol. One industrial solution is a simple container
> format using type–length–value packets, which is defined in ARIB STD-B32.
> >
> > Another known container format for MMTP is using packet capture (pcap)
> files which records network packets. This patch does not include the
> demuxer for this container format.
> >
> > Signed-off-by: SuperFashi <admin at superfashi.com>
> > ---
> > Changelog | 1 +
> > doc/demuxers.texi | 4 +
> > libavformat/Makefile | 1 +
> > libavformat/allformats.c | 1 +
> > libavformat/mmtp.c | 1372 ++++++++++++++++++++++++++++++++++++++
> > libavformat/mmtp.h | 61 ++
> > libavformat/mmttlv.c | 324 +++++++++
> > libavformat/version.h | 2 +-
> > 8 files changed, 1765 insertions(+), 1 deletion(-)
> > create mode 100644 libavformat/mmtp.c
> > create mode 100644 libavformat/mmtp.h
> > create mode 100644 libavformat/mmttlv.c
> >
> > diff --git a/Changelog b/Changelog
> > index b6f6682904..2483fdd547 100644
> > --- a/Changelog
> > +++ b/Changelog
> > @@ -6,6 +6,7 @@ version <next>:
> > - Playdate video decoder and demuxer
> > - Extend VAAPI support for libva-win32 on Windows
> > - afireqsrc audio source filter
> > +- MMTP parser and MMT/TLV demuxer
> >
> > version 6.0:
> > - Radiance HDR image support
> > diff --git a/doc/demuxers.texi b/doc/demuxers.texi
> > index 2d33b47a56..56aab251b2 100644
> > --- a/doc/demuxers.texi
> > +++ b/doc/demuxers.texi
> > @@ -689,6 +689,10 @@ Set the sample rate for libopenmpt to output.
> > Range is from 1000 to INT_MAX. The value default is 48000.
> > @end table
> >
> > + at section mmttlv
> > +
> > +Demuxer for MMT protocol over TLV packets (MMT/TLV), as defined in ARIB
> STD-B32.
> > +
> > @section mov/mp4/3gp
> >
> > Demuxer for Quicktime File Format & ISO/IEC Base Media File Format
> (ISO/IEC 14496-12 or MPEG-4 Part 12, ISO/IEC 15444-12 or JPEG 2000 Part 12).
> > diff --git a/libavformat/Makefile b/libavformat/Makefile
> > index f8ad7c6a11..e32d6e71a3 100644
> > --- a/libavformat/Makefile
> > +++ b/libavformat/Makefile
> > @@ -354,6 +354,7 @@ OBJS-$(CONFIG_MLV_DEMUXER) += mlvdec.o
> riffdec.o
> > OBJS-$(CONFIG_MM_DEMUXER) += mm.o
> > OBJS-$(CONFIG_MMF_DEMUXER) += mmf.o
> > OBJS-$(CONFIG_MMF_MUXER) += mmf.o rawenc.o
> > +OBJS-$(CONFIG_MMTTLV_DEMUXER) += mmtp.o mmttlv.o
> > OBJS-$(CONFIG_MODS_DEMUXER) += mods.o
> > OBJS-$(CONFIG_MOFLEX_DEMUXER) += moflex.o
> > OBJS-$(CONFIG_MOV_DEMUXER) += mov.o mov_chan.o mov_esds.o
> \
> > diff --git a/libavformat/allformats.c b/libavformat/allformats.c
> > index efdb34e29d..d5f4f5680e 100644
> > --- a/libavformat/allformats.c
> > +++ b/libavformat/allformats.c
> > @@ -270,6 +270,7 @@ extern const AVInputFormat ff_mlv_demuxer;
> > extern const AVInputFormat ff_mm_demuxer;
> > extern const AVInputFormat ff_mmf_demuxer;
> > extern const FFOutputFormat ff_mmf_muxer;
> > +extern const AVInputFormat ff_mmttlv_demuxer;
> > extern const AVInputFormat ff_mods_demuxer;
> > extern const AVInputFormat ff_moflex_demuxer;
> > extern const AVInputFormat ff_mov_demuxer;
> > diff --git a/libavformat/mmtp.c b/libavformat/mmtp.c
> > new file mode 100644
> > index 0000000000..ba1fcab281
> > --- /dev/null
> > +++ b/libavformat/mmtp.c
> > @@ -0,0 +1,1372 @@
> > +/*
> > + * MPEG Media Transport Protocol (MMTP) parser, as defined in ISO/IEC
> 23008-1.
> > + * Copyright (c) 2023 SuperFashi
> > + *
> > + * 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 "libavutil/mem.h"
> > +#include "libavutil/avassert.h"
> > +#include "libavutil/intreadwrite.h"
> > +#include "libavcodec/bytestream.h"
> > +#include "network.h"
> > +#include "mmtp.h"
> > +#include "internal.h"
> > +#include "demux.h"
> > +
> > +#include <stdbool.h>
> > +
>
> > +#define ENSURE_BS_LEFT(bs, size) if (bytestream2_get_bytes_left(bs) <
> (size)) return AVERROR_INVALIDDATA
>
> please dont wrap libavcodec API in another API
> if every file in libavformat did that, noone would be able to
> read code except their own files
>
>
> > +
> > +struct MMTGeneralLocationInfo {
> > + uint8_t location_type;
> > + union {
> > + struct {
> > + uint16_t packet_id;
> > + } type0;
> > + struct {
> > + struct in_addr ipv4_src_addr;
> > + struct in_addr ipv4_dst_addr;
>
> > + in_port_t dst_port;
>
> src/libavformat/mmtp.c:43:13: error: unknown type name ‘in_port_t’
> in_port_t dst_port;
>
>
> [...]
> --
> Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> If the United States is serious about tackling the national security
> threats
> related to an insecure 5G network, it needs to rethink the extent to which
> it
> values corporate profits and government espionage over security.-Bruce
> Schneier
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
>
More information about the ffmpeg-devel
mailing list