X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fmmf.c;h=47b84e8c90146292a5f6ea7f2a1b91bd04d48a62;hb=0b54f3c0878a3acaa9142e4f24942e762d97e350;hp=87fc00bf3fa126ec09e1150bf711c2f4f133a585;hpb=9d9f4119bd17cdfb3409dfa2d68252c16444431d;p=ffmpeg diff --git a/libavformat/mmf.c b/libavformat/mmf.c index 87fc00bf3fa..47b84e8c901 100644 --- a/libavformat/mmf.c +++ b/libavformat/mmf.c @@ -2,22 +2,24 @@ * Yamaha SMAF format * Copyright (c) 2005 Vidar Madsen * - * This library is free software; you can redistribute it and/or + * 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 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * - * This library is distributed in the hope that it will be useful, + * 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 this library; if not, write to the Free Software + * License along with FFmpeg; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include "avformat.h" -#include "allformats.h" +#include "raw.h" #include "riff.h" typedef struct { @@ -27,6 +29,14 @@ typedef struct { static int mmf_rates[] = { 4000, 8000, 11025, 22050, 44100 }; +static int mmf_rate(int code) +{ + if((code < 0) || (code > 4)) + return -1; + return mmf_rates[code]; +} + +#ifdef CONFIG_MUXERS static int mmf_rate_code(int rate) { int i; @@ -36,14 +46,6 @@ static int mmf_rate_code(int rate) return -1; } -static int mmf_rate(int code) -{ - if((code < 0) || (code > 4)) - return -1; - return mmf_rates[code]; -} - -#ifdef CONFIG_MUXERS /* Copy of end_tag() from avienc.c, but for big-endian chunk size */ static void end_tag_be(ByteIOContext *pb, offset_t start) { @@ -58,7 +60,7 @@ static void end_tag_be(ByteIOContext *pb, offset_t start) static int mmf_write_header(AVFormatContext *s) { MMFContext *mmf = s->priv_data; - ByteIOContext *pb = &s->pb; + ByteIOContext *pb = s->pb; offset_t pos; int rate; @@ -106,7 +108,7 @@ static int mmf_write_header(AVFormatContext *s) static int mmf_write_packet(AVFormatContext *s, AVPacket *pkt) { - ByteIOContext *pb = &s->pb; + ByteIOContext *pb = s->pb; put_buffer(pb, pkt->data, pkt->size); return 0; } @@ -125,12 +127,12 @@ static void put_varlength(ByteIOContext *pb, int val) static int mmf_write_trailer(AVFormatContext *s) { - ByteIOContext *pb = &s->pb; + ByteIOContext *pb = s->pb; MMFContext *mmf = s->priv_data; offset_t pos, size; int gatetime; - if (!url_is_streamed(&s->pb)) { + if (!url_is_streamed(s->pb)) { /* Fill in length fields */ end_tag_be(pb, mmf->awapos); end_tag_be(pb, mmf->atrpos); @@ -166,8 +168,6 @@ static int mmf_write_trailer(AVFormatContext *s) static int mmf_probe(AVProbeData *p) { /* check file header */ - if (p->buf_size <= 32) - return 0; if (p->buf[0] == 'M' && p->buf[1] == 'M' && p->buf[2] == 'M' && p->buf[3] == 'D' && p->buf[8] == 'C' && p->buf[9] == 'N' && @@ -183,7 +183,7 @@ static int mmf_read_header(AVFormatContext *s, { MMFContext *mmf = s->priv_data; unsigned int tag; - ByteIOContext *pb = &s->pb; + ByteIOContext *pb = s->pb; AVStream *st; offset_t file_size, size; int rate, params; @@ -242,7 +242,7 @@ static int mmf_read_header(AVFormatContext *s, st = av_new_stream(s, 0); if (!st) - return AVERROR_NOMEM; + return AVERROR(ENOMEM); st->codec->codec_type = CODEC_TYPE_AUDIO; st->codec->codec_id = CODEC_ID_ADPCM_YAMAHA; @@ -265,8 +265,8 @@ static int mmf_read_packet(AVFormatContext *s, AVStream *st; int ret, size; - if (url_feof(&s->pb)) - return AVERROR_IO; + if (url_feof(s->pb)) + return AVERROR(EIO); st = s->streams[0]; size = MAX_SIZE; @@ -274,13 +274,13 @@ static int mmf_read_packet(AVFormatContext *s, size = mmf->data_size; if(!size) - return AVERROR_IO; + return AVERROR(EIO); if (av_new_packet(pkt, size)) - return AVERROR_IO; + return AVERROR(EIO); pkt->stream_index = 0; - ret = get_buffer(&s->pb, pkt->data, pkt->size); + ret = get_buffer(s->pb, pkt->data, pkt->size); if (ret < 0) av_free_packet(pkt); @@ -295,28 +295,22 @@ static int mmf_read_close(AVFormatContext *s) return 0; } -static int mmf_read_seek(AVFormatContext *s, - int stream_index, int64_t timestamp, int flags) -{ - return pcm_read_seek(s, stream_index, timestamp, flags); -} - #ifdef CONFIG_MMF_DEMUXER AVInputFormat mmf_demuxer = { "mmf", - "mmf format", + NULL_IF_CONFIG_SMALL("mmf format"), sizeof(MMFContext), mmf_probe, mmf_read_header, mmf_read_packet, mmf_read_close, - mmf_read_seek, + pcm_read_seek, }; #endif #ifdef CONFIG_MMF_MUXER AVOutputFormat mmf_muxer = { "mmf", - "mmf format", + NULL_IF_CONFIG_SMALL("mmf format"), "application/vnd.smaf", "mmf", sizeof(MMFContext),