X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fmmf.c;h=20570f2812614c97b1ec6446da52154e7afd01ef;hb=3b199d29cd597a3518136d78860e172060b9e83d;hp=d4247544c2ea26ce1bb10fbcefda28c7d8189231;hpb=2912e87a6c9264d556734e2bf94a99c64cf9b102;p=ffmpeg diff --git a/libavformat/mmf.c b/libavformat/mmf.c index d4247544c2e..20570f28126 100644 --- a/libavformat/mmf.c +++ b/libavformat/mmf.c @@ -18,7 +18,10 @@ * License along with Libav; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ + +#include "libavutil/channel_layout.h" #include "avformat.h" +#include "internal.h" #include "avio_internal.h" #include "pcm.h" #include "riff.h" @@ -100,7 +103,7 @@ static int mmf_write_header(AVFormatContext *s) mmf->awapos = ff_start_tag(pb, "Awa\x01"); - av_set_pts_info(s->streams[0], 64, 1, s->streams[0]->codec->sample_rate); + avpriv_set_pts_info(s->streams[0], 64, 1, s->streams[0]->codec->sample_rate); avio_flush(pb); @@ -133,7 +136,7 @@ static int mmf_write_trailer(AVFormatContext *s) int64_t pos, size; int gatetime; - if (!url_is_streamed(s->pb)) { + if (s->pb->seekable) { /* Fill in length fields */ end_tag_be(pb, mmf->awapos); end_tag_be(pb, mmf->atrpos); @@ -179,20 +182,19 @@ static int mmf_probe(AVProbeData *p) } /* mmf input */ -static int mmf_read_header(AVFormatContext *s, - AVFormatParameters *ap) +static int mmf_read_header(AVFormatContext *s) { MMFContext *mmf = s->priv_data; unsigned int tag; AVIOContext *pb = s->pb; AVStream *st; - int64_t file_size, size; + int64_t size; int rate, params; tag = avio_rl32(pb); if (tag != MKTAG('M', 'M', 'M', 'D')) return -1; - file_size = avio_rb32(pb); + avio_skip(pb, 4); /* file_size */ /* Skip some unused chunks that may or may not be present */ for(;; avio_skip(pb, size)) { @@ -241,18 +243,19 @@ static int mmf_read_header(AVFormatContext *s, } mmf->data_size = size; - st = av_new_stream(s, 0); + st = avformat_new_stream(s, NULL); if (!st) return AVERROR(ENOMEM); st->codec->codec_type = AVMEDIA_TYPE_AUDIO; - st->codec->codec_id = CODEC_ID_ADPCM_YAMAHA; + st->codec->codec_id = AV_CODEC_ID_ADPCM_YAMAHA; st->codec->sample_rate = rate; st->codec->channels = 1; + st->codec->channel_layout = AV_CH_LAYOUT_MONO; st->codec->bits_per_coded_sample = 4; st->codec->bit_rate = st->codec->sample_rate * st->codec->bits_per_coded_sample; - av_set_pts_info(st, 64, 1, st->codec->sample_rate); + avpriv_set_pts_info(st, 64, 1, st->codec->sample_rate); return 0; } @@ -263,12 +266,10 @@ static int mmf_read_packet(AVFormatContext *s, AVPacket *pkt) { MMFContext *mmf = s->priv_data; - AVStream *st; int ret, size; if (s->pb->eof_reached) return AVERROR(EIO); - st = s->streams[0]; size = MAX_SIZE; if(size > mmf->data_size) @@ -293,27 +294,26 @@ static int mmf_read_packet(AVFormatContext *s, #if CONFIG_MMF_DEMUXER AVInputFormat ff_mmf_demuxer = { - "mmf", - NULL_IF_CONFIG_SMALL("Yamaha SMAF"), - sizeof(MMFContext), - mmf_probe, - mmf_read_header, - mmf_read_packet, - NULL, - pcm_read_seek, + .name = "mmf", + .long_name = NULL_IF_CONFIG_SMALL("Yamaha SMAF"), + .priv_data_size = sizeof(MMFContext), + .read_probe = mmf_probe, + .read_header = mmf_read_header, + .read_packet = mmf_read_packet, + .read_seek = ff_pcm_read_seek, }; #endif #if CONFIG_MMF_MUXER AVOutputFormat ff_mmf_muxer = { - "mmf", - NULL_IF_CONFIG_SMALL("Yamaha SMAF"), - "application/vnd.smaf", - "mmf", - sizeof(MMFContext), - CODEC_ID_ADPCM_YAMAHA, - CODEC_ID_NONE, - mmf_write_header, - mmf_write_packet, - mmf_write_trailer, + .name = "mmf", + .long_name = NULL_IF_CONFIG_SMALL("Yamaha SMAF"), + .mime_type = "application/vnd.smaf", + .extensions = "mmf", + .priv_data_size = sizeof(MMFContext), + .audio_codec = AV_CODEC_ID_ADPCM_YAMAHA, + .video_codec = AV_CODEC_ID_NONE, + .write_header = mmf_write_header, + .write_packet = mmf_write_packet, + .write_trailer = mmf_write_trailer, }; #endif