summaryrefslogtreecommitdiff
path: root/libavformat/raw.c
diff options
context:
space:
mode:
authorMike Melanson <mike@multimedia.cx>2004-06-19 03:59:34 +0000
committerMike Melanson <mike@multimedia.cx>2004-06-19 03:59:34 +0000
commit0bd586c50dc27ec38ca94e58f50030544d729463 (patch)
treedaa391f5efede8e58b88431b9b453dcbd1e6c2e0 /libavformat/raw.c
parentcbf5374fc0f733cefe304fd4d11c7b0fa21fba61 (diff)
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.c83
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;
}