Signed-off-by: Paul B Mahol <onemda@gmail.com>tags/n3.3
| @@ -16,6 +16,7 @@ version <next>: | |||||
| - NewTek SpeedHQ decoder | - NewTek SpeedHQ decoder | ||||
| - MIDI Sample Dump Standard demuxer | - MIDI Sample Dump Standard demuxer | ||||
| - readeia608 filter | - readeia608 filter | ||||
| - Sample Dump eXchange demuxer | |||||
| version 3.2: | version 3.2: | ||||
| - libopenmpt demuxer | - libopenmpt demuxer | ||||
| @@ -483,6 +483,7 @@ library: | |||||
| @tab Output is performed by publishing stream to RTMP server | @tab Output is performed by publishing stream to RTMP server | ||||
| @item RTP @tab X @tab X | @item RTP @tab X @tab X | ||||
| @item RTSP @tab X @tab X | @item RTSP @tab X @tab X | ||||
| @item Sample Dump eXchange @tab @tab X | |||||
| @item SAP @tab X @tab X | @item SAP @tab X @tab X | ||||
| @item SBG @tab @tab X | @item SBG @tab @tab X | ||||
| @item SDP @tab @tab X | @item SDP @tab @tab X | ||||
| @@ -437,6 +437,7 @@ OBJS-$(CONFIG_SBG_DEMUXER) += sbgdec.o | |||||
| OBJS-$(CONFIG_SDP_DEMUXER) += rtsp.o | OBJS-$(CONFIG_SDP_DEMUXER) += rtsp.o | ||||
| OBJS-$(CONFIG_SDR2_DEMUXER) += sdr2.o | OBJS-$(CONFIG_SDR2_DEMUXER) += sdr2.o | ||||
| OBJS-$(CONFIG_SDS_DEMUXER) += sdsdec.o | OBJS-$(CONFIG_SDS_DEMUXER) += sdsdec.o | ||||
| OBJS-$(CONFIG_SDX_DEMUXER) += sdxdec.o | |||||
| OBJS-$(CONFIG_SEGAFILM_DEMUXER) += segafilm.o | OBJS-$(CONFIG_SEGAFILM_DEMUXER) += segafilm.o | ||||
| OBJS-$(CONFIG_SEGMENT_MUXER) += segment.o | OBJS-$(CONFIG_SEGMENT_MUXER) += segment.o | ||||
| OBJS-$(CONFIG_SHORTEN_DEMUXER) += shortendec.o rawdec.o | OBJS-$(CONFIG_SHORTEN_DEMUXER) += shortendec.o rawdec.o | ||||
| @@ -276,6 +276,7 @@ void av_register_all(void) | |||||
| REGISTER_DEMUXER (SDP, sdp); | REGISTER_DEMUXER (SDP, sdp); | ||||
| REGISTER_DEMUXER (SDR2, sdr2); | REGISTER_DEMUXER (SDR2, sdr2); | ||||
| REGISTER_DEMUXER (SDS, sds); | REGISTER_DEMUXER (SDS, sds); | ||||
| REGISTER_DEMUXER (SDX, sdx); | |||||
| #if CONFIG_RTPDEC | #if CONFIG_RTPDEC | ||||
| ff_register_rtp_dynamic_payload_handlers(); | ff_register_rtp_dynamic_payload_handlers(); | ||||
| ff_register_rdt_dynamic_payload_handlers(); | ff_register_rdt_dynamic_payload_handlers(); | ||||
| @@ -0,0 +1,90 @@ | |||||
| /* | |||||
| * SDX 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 sdx_probe(AVProbeData *p) | |||||
| { | |||||
| if (AV_RB32(p->buf) == AV_RB32("SDX:")) | |||||
| return AVPROBE_SCORE_EXTENSION; | |||||
| return 0; | |||||
| } | |||||
| static int sdx_read_header(AVFormatContext *s) | |||||
| { | |||||
| AVStream *st; | |||||
| int depth, length; | |||||
| avio_skip(s->pb, 4); | |||||
| while (!avio_feof(s->pb)) { | |||||
| if (avio_r8(s->pb) == 0x1a) | |||||
| break; | |||||
| } | |||||
| if (avio_r8(s->pb) != 1) | |||||
| return AVERROR_INVALIDDATA; | |||||
| length = avio_r8(s->pb); | |||||
| avio_skip(s->pb, length); | |||||
| avio_skip(s->pb, 4); | |||||
| depth = avio_r8(s->pb); | |||||
| st = avformat_new_stream(s, NULL); | |||||
| if (!st) | |||||
| return AVERROR(ENOMEM); | |||||
| st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO; | |||||
| st->codecpar->channels = 1; | |||||
| st->codecpar->sample_rate = avio_rl32(s->pb); | |||||
| switch (depth) { | |||||
| case 8: | |||||
| st->codecpar->codec_id = AV_CODEC_ID_PCM_U8; | |||||
| break; | |||||
| case 16: | |||||
| st->codecpar->codec_id = AV_CODEC_ID_PCM_U16LE; | |||||
| break; | |||||
| case 24: | |||||
| st->codecpar->codec_id = AV_CODEC_ID_PCM_U24LE; | |||||
| break; | |||||
| case 32: | |||||
| st->codecpar->codec_id = AV_CODEC_ID_PCM_U32LE; | |||||
| break; | |||||
| default: | |||||
| return AVERROR_INVALIDDATA; | |||||
| } | |||||
| avio_skip(s->pb, 16); | |||||
| st->codecpar->block_align = depth / 8; | |||||
| return 0; | |||||
| } | |||||
| AVInputFormat ff_sdx_demuxer = { | |||||
| .name = "sdx", | |||||
| .long_name = NULL_IF_CONFIG_SMALL("Sample Dump eXchange"), | |||||
| .read_probe = sdx_probe, | |||||
| .read_header = sdx_read_header, | |||||
| .read_packet = ff_pcm_read_packet, | |||||
| .read_seek = ff_pcm_read_seek, | |||||
| .extensions = "sdx", | |||||
| .flags = AVFMT_GENERIC_INDEX, | |||||
| }; | |||||
| @@ -32,7 +32,7 @@ | |||||
| // Major bumping may affect Ticket5467, 5421, 5451(compatibility with Chromium) | // Major bumping may affect Ticket5467, 5421, 5451(compatibility with Chromium) | ||||
| // Also please add any ticket numbers that you believe might be affected here | // Also please add any ticket numbers that you believe might be affected here | ||||
| #define LIBAVFORMAT_VERSION_MAJOR 57 | #define LIBAVFORMAT_VERSION_MAJOR 57 | ||||
| #define LIBAVFORMAT_VERSION_MINOR 63 | |||||
| #define LIBAVFORMAT_VERSION_MINOR 64 | |||||
| #define LIBAVFORMAT_VERSION_MICRO 100 | #define LIBAVFORMAT_VERSION_MICRO 100 | ||||
| #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ | #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ | ||||