#include "libavutil/intreadwrite.h"
#include "avformat.h"
+#include "internal.h"
#include "riff.h"
#define DXA_EXTRA_SIZE 9
return 0;
}
-static int dxa_read_header(AVFormatContext *s, AVFormatParameters *ap)
+static int dxa_read_header(AVFormatContext *s)
{
AVIOContext *pb = s->pb;
DXAContext *c = s->priv_data;
int w, h;
int num, den;
int flags;
+ int ret;
tag = avio_rl32(pb);
if (tag != MKTAG('D', 'E', 'X', 'A'))
h = avio_rb16(pb);
c->has_sound = 0;
- st = av_new_stream(s, 0);
+ st = avformat_new_stream(s, NULL);
if (!st)
return -1;
avio_skip(pb, 16);
fsize = avio_rl32(pb);
- ast = av_new_stream(s, 0);
+ ast = avformat_new_stream(s, NULL);
if (!ast)
return -1;
- ff_get_wav_header(pb, ast->codec, fsize);
+ ret = ff_get_wav_header(pb, ast->codec, fsize);
+ if (ret < 0)
+ return ret;
+ if (ast->codec->sample_rate > 0)
+ avpriv_set_pts_info(ast, 64, 1, ast->codec->sample_rate);
// find 'data' chunk
while(avio_tell(pb) < c->vidpos && !pb->eof_reached){
tag = avio_rl32(pb);
/* now we are ready: build format streams */
st->codec->codec_type = AVMEDIA_TYPE_VIDEO;
- st->codec->codec_id = CODEC_ID_DXA;
+ st->codec->codec_id = AV_CODEC_ID_DXA;
st->codec->width = w;
st->codec->height = h;
av_reduce(&den, &num, den, num, (1UL<<31)-1);
- av_set_pts_info(st, 33, num, den);
+ avpriv_set_pts_info(st, 33, num, den);
/* flags & 0x80 means that image is interlaced,
* flags & 0x40 means that image has double height
* either way set true height
}
AVInputFormat ff_dxa_demuxer = {
- "dxa",
- NULL_IF_CONFIG_SMALL("DXA"),
- sizeof(DXAContext),
- dxa_probe,
- dxa_read_header,
- dxa_read_packet,
+ .name = "dxa",
+ .long_name = NULL_IF_CONFIG_SMALL("DXA"),
+ .priv_data_size = sizeof(DXAContext),
+ .read_probe = dxa_probe,
+ .read_header = dxa_read_header,
+ .read_packet = dxa_read_packet,
};