On 12/3/17, Carl Eugen Hoyos <ceffm...@gmail.com> wrote: > 2017-12-01 17:26 GMT+01:00 Paul B Mahol <one...@gmail.com>: >> Signed-off-by: Paul B Mahol <one...@gmail.com> >> --- >> libavformat/Makefile | 1 + >> libavformat/allformats.c | 1 + >> libavformat/nspdec.c | 101 >> +++++++++++++++++++++++++++++++++++++++++++++++ >> 3 files changed, 103 insertions(+) >> create mode 100644 libavformat/nspdec.c >> >> diff --git a/libavformat/Makefile b/libavformat/Makefile >> index 4bffdf2205..734b703862 100644 >> --- a/libavformat/Makefile >> +++ b/libavformat/Makefile >> @@ -331,6 +331,7 @@ OBJS-$(CONFIG_MXF_MUXER) += mxfenc.o >> mxf.o audiointerleave.o >> OBJS-$(CONFIG_MXG_DEMUXER) += mxg.o >> OBJS-$(CONFIG_NC_DEMUXER) += ncdec.o >> OBJS-$(CONFIG_NISTSPHERE_DEMUXER) += nistspheredec.o pcm.o >> +OBJS-$(CONFIG_NSP_DEMUXER) += nspdec.o >> OBJS-$(CONFIG_NSV_DEMUXER) += nsvdec.o >> OBJS-$(CONFIG_NULL_MUXER) += nullenc.o >> OBJS-$(CONFIG_NUT_DEMUXER) += nutdec.o nut.o isom.o >> diff --git a/libavformat/allformats.c b/libavformat/allformats.c >> index 9213af9301..6a9b9883c9 100644 >> --- a/libavformat/allformats.c >> +++ b/libavformat/allformats.c >> @@ -224,6 +224,7 @@ static void register_all(void) >> REGISTER_DEMUXER (MXG, mxg); >> REGISTER_DEMUXER (NC, nc); >> REGISTER_DEMUXER (NISTSPHERE, nistsphere); >> + REGISTER_DEMUXER (NSP, nsp); >> REGISTER_DEMUXER (NSV, nsv); >> REGISTER_MUXER (NULL, null); >> REGISTER_MUXDEMUX(NUT, nut); >> diff --git a/libavformat/nspdec.c b/libavformat/nspdec.c >> new file mode 100644 >> index 0000000000..d2ff779732 >> --- /dev/null >> +++ b/libavformat/nspdec.c >> @@ -0,0 +1,101 @@ >> +/* >> + * NSP demuxer >> + * Copyright (c) 2017 Paul B Mahol >> + * >> + * 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/avstring.h" >> +#include "libavutil/intreadwrite.h" >> +#include "avformat.h" >> +#include "internal.h" >> +#include "pcm.h" >> + >> +static int nsp_probe(AVProbeData *p) >> +{ >> + if (AV_RB32(p->buf) == AV_RB32("FORM") && >> + AV_RB32(p->buf + 4) == AV_RB32("DS16")) >> + return AVPROBE_SCORE_MAX; >> + return 0; >> +} >> + >> +static int nsp_read_header(AVFormatContext *s) >> +{ >> + int rate = 0, channels = 0; >> + uint32_t chunk, size; >> + AVStream *st; >> + int64_t pos; >> + >> + avio_skip(s->pb, 12); >> + st = avformat_new_stream(s, NULL); >> + if (!st) >> + return AVERROR(ENOMEM); >> + >> + while (!avio_feof(s->pb)) { >> + chunk = avio_rb32(s->pb); > > Not codec_tag?
No. > >> + size = avio_rl32(s->pb); >> + pos = avio_tell(s->pb); >> + >> + if (chunk == MKBETAG('H', 'D', 'R', '8') || >> + chunk == MKBETAG('H', 'E', 'D', 'R')) { > > It's your code but I suspect a switch() makes this > more readable. Changed. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel