/*
* Discworld II BMV demuxer
- * Copyright (c) 2011 Konstantin Shishkov.
+ * Copyright (c) 2011 Konstantin Shishkov
*
* This file is part of Libav.
*
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#include "libavutil/channel_layout.h"
#include "avformat.h"
#include "internal.h"
int64_t audio_pos;
} BMVContext;
-static int bmv_read_header(AVFormatContext *s, AVFormatParameters *ap)
+static int bmv_read_header(AVFormatContext *s)
{
AVStream *st, *ast;
BMVContext *c = s->priv_data;
st = avformat_new_stream(s, 0);
if (!st)
return AVERROR(ENOMEM);
- st->codec->codec_type = AVMEDIA_TYPE_VIDEO;
- st->codec->codec_id = CODEC_ID_BMV_VIDEO;
- st->codec->width = 640;
- st->codec->height = 429;
- st->codec->pix_fmt = PIX_FMT_PAL8;
+ st->codecpar->codec_type = AVMEDIA_TYPE_VIDEO;
+ st->codecpar->codec_id = AV_CODEC_ID_BMV_VIDEO;
+ st->codecpar->width = 640;
+ st->codecpar->height = 429;
+ st->codecpar->format = AV_PIX_FMT_PAL8;
avpriv_set_pts_info(st, 16, 1, 12);
ast = avformat_new_stream(s, 0);
if (!ast)
return AVERROR(ENOMEM);
- ast->codec->codec_type = AVMEDIA_TYPE_AUDIO;
- ast->codec->codec_id = CODEC_ID_BMV_AUDIO;
- ast->codec->channels = 2;
- ast->codec->sample_rate = 22050;
+ ast->codecpar->codec_type = AVMEDIA_TYPE_AUDIO;
+ ast->codecpar->codec_id = AV_CODEC_ID_BMV_AUDIO;
+ ast->codecpar->channels = 2;
+ ast->codecpar->channel_layout = AV_CH_LAYOUT_STEREO;
+ ast->codecpar->sample_rate = 22050;
avpriv_set_pts_info(ast, 16, 1, 22050);
c->get_next = 1;
static int bmv_read_packet(AVFormatContext *s, AVPacket *pkt)
{
BMVContext *c = s->priv_data;
- int type;
- void *tmp;
+ int type, err;
while (c->get_next) {
if (s->pb->eof_reached)
c->size = avio_rl24(s->pb);
if (!c->size)
return AVERROR_INVALIDDATA;
- tmp = av_realloc(c->packet, c->size + 1);
- if (!tmp)
- return AVERROR(ENOMEM);
- c->packet = tmp;
+ if ((err = av_reallocp(&c->packet, c->size + 1)) < 0)
+ return err;
c->packet[0] = type;
if (avio_read(s->pb, c->packet + 1, c->size) != c->size)
return AVERROR(EIO);
.read_header = bmv_read_header,
.read_packet = bmv_read_packet,
.read_close = bmv_read_close,
- .extensions = "bmv"
+ .extensions = "bmv",
};