diff options
author | Mike Melanson <mike@multimedia.cx> | 2004-06-19 03:59:34 +0000 |
---|---|---|
committer | Mike Melanson <mike@multimedia.cx> | 2004-06-19 03:59:34 +0000 |
commit | 0bd586c50dc27ec38ca94e58f50030544d729463 (patch) | |
tree | daa391f5efede8e58b88431b9b453dcbd1e6c2e0 /libavformat/raw.c | |
parent | cbf5374fc0f733cefe304fd4d11c7b0fa21fba61 (diff) | |
download | ffmpeg-0bd586c50dc27ec38ca94e58f50030544d729463.tar.gz |
sweeping change from -EIO -> AVERROR_IO
Originally committed as revision 3239 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/raw.c')
-rw-r--r-- | libavformat/raw.c | 83 |
1 files changed, 77 insertions, 6 deletions
diff --git a/libavformat/raw.c b/libavformat/raw.c index 35b07159b6..adcc2fd161 100644 --- a/libavformat/raw.c +++ b/libavformat/raw.c @@ -87,13 +87,13 @@ static int raw_read_packet(AVFormatContext *s, AVPacket *pkt) size= RAW_PACKET_SIZE; if (av_new_packet(pkt, size) < 0) - return -EIO; + return AVERROR_IO; pkt->stream_index = 0; ret = get_buffer(&s->pb, pkt->data, size); if (ret <= 0) { av_free_packet(pkt); - return -EIO; + return AVERROR_IO; } /* note: we need to modify the packet size here to handle the last packet */ @@ -108,13 +108,13 @@ static int raw_read_partial_packet(AVFormatContext *s, AVPacket *pkt) size = RAW_PACKET_SIZE; if (av_new_packet(pkt, size) < 0) - return -EIO; + return AVERROR_IO; pkt->stream_index = 0; ret = get_partial_buffer(&s->pb, pkt->data, size); if (ret <= 0) { av_free_packet(pkt); - return -EIO; + return AVERROR_IO; } pkt->size = ret; return ret; @@ -532,7 +532,7 @@ static int rawvideo_read_packet(AVFormatContext *s, AVPacket *pkt) av_abort(); if (av_new_packet(pkt, packet_size) < 0) - return -EIO; + return AVERROR_IO; pkt->stream_index = 0; #if 0 @@ -543,7 +543,7 @@ static int rawvideo_read_packet(AVFormatContext *s, AVPacket *pkt) #endif if (ret != pkt->size) { av_free_packet(pkt); - return -EIO; + return AVERROR_IO; } else { return 0; } @@ -601,6 +601,73 @@ AVOutputFormat null_oformat = { }; #endif //CONFIG_ENCODERS +static int adx_probe(AVProbeData *p) +{ + if (is_adx(p->buf,p->buf_size)) + return 100; + return 0; +} + +static int adx_read_header(AVFormatContext *s, + AVFormatParameters *ap) +{ + AVStream *st; + + st = av_new_stream(s, 0); + if (!st) + return AVERROR_NOMEM; + + st->codec.codec_type = CODEC_TYPE_AUDIO; + st->codec.codec_id = CODEC_ID_ADPCM_ADX; + /* the parameters will be extracted from the compressed bitstream */ + return 0; +} + +AVInputFormat adx_iformat = { + "adx", + "SEGA CRI ADX audio", + 0, + adx_probe, + adx_read_header, + raw_read_packet, + raw_read_close, + .extensions = "adx", //FIXME remove after writing mpeg4_probe +}; + +#ifdef CONFIG_ENCODERS + +static int adx_write_trailer(AVFormatContext *s) +{ + ByteIOContext *pb = &s->pb; + offset_t file_size; + + if (!url_is_streamed(&s->pb)) { + /* update file size */ + file_size = url_ftell(pb); + url_fseek(pb, 0, SEEK_SET); + put_be32(pb, (uint32_t)(file_size - 8)); + url_fseek(pb, file_size, SEEK_SET); + + put_flush_packet(pb); + } + return 0; +} + +AVOutputFormat adx_oformat = { + "adx", + "SEGA CRI ADX audio", + NULL, + "adx", + 0, + CODEC_ID_ADPCM_ADX, + 0, + raw_write_header, + raw_write_packet, + raw_write_trailer, +}; +#endif //CONFIG_ENCODERS + + #ifndef CONFIG_ENCODERS #define av_register_output_format(format) #endif @@ -651,5 +718,9 @@ int raw_init(void) av_register_output_format(&rawvideo_oformat); av_register_output_format(&null_oformat); + + av_register_input_format(&adx_iformat); + av_register_output_format(&adx_oformat); + return 0; } |