/* Calculate width and height if missing from header */
- if(!mtv->img_width)
+ if (!mtv->img_width && mtv->img_height > 0 && mtv->img_bpp >= 8)
mtv->img_width=mtv->img_segment_size / (mtv->img_bpp>>3)
/ mtv->img_height;
- if(!mtv->img_height)
+ if (!mtv->img_height && mtv->img_width > 0 && mtv->img_bpp >= 8)
mtv->img_height=mtv->img_segment_size / (mtv->img_bpp>>3)
/ mtv->img_width;
+ if (!mtv->img_width || !mtv->img_height)
+ return AVERROR_INVALIDDATA;
+
avio_skip(pb, 4);
audio_subsegments = avio_rl16(pb);
return AVERROR(ENOMEM);
avpriv_set_pts_info(st, 64, 1, mtv->video_fps);
- st->codec->codec_type = AVMEDIA_TYPE_VIDEO;
- st->codec->codec_id = AV_CODEC_ID_RAWVIDEO;
- st->codec->pix_fmt = AV_PIX_FMT_RGB565BE;
- st->codec->width = mtv->img_width;
- st->codec->height = mtv->img_height;
- st->codec->extradata = av_strdup("BottomUp");
- st->codec->extradata_size = 9;
+ st->codecpar->codec_type = AVMEDIA_TYPE_VIDEO;
+ st->codecpar->codec_id = AV_CODEC_ID_RAWVIDEO;
+ st->codecpar->format = AV_PIX_FMT_RGB565BE;
+ st->codecpar->width = mtv->img_width;
+ st->codecpar->height = mtv->img_height;
+ st->codecpar->extradata = av_strdup("BottomUp");
+ st->codecpar->extradata_size = 9;
// audio - mp3
return AVERROR(ENOMEM);
avpriv_set_pts_info(st, 64, 1, AUDIO_SAMPLING_RATE);
- st->codec->codec_type = AVMEDIA_TYPE_AUDIO;
- st->codec->codec_id = AV_CODEC_ID_MP3;
- st->codec->bit_rate = mtv->audio_br;
- st->need_parsing = AVSTREAM_PARSE_FULL;
+ st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO;
+ st->codecpar->codec_id = AV_CODEC_ID_MP3;
+ st->codecpar->bit_rate = mtv->audio_br;
+ st->need_parsing = AVSTREAM_PARSE_FULL;
// Jump over header
AVIOContext *pb = s->pb;
int ret;
- if((avio_tell(pb) - s->data_offset + mtv->img_segment_size) % mtv->full_segment_size)
+ if((avio_tell(pb) - s->internal->data_offset + mtv->img_segment_size) % mtv->full_segment_size)
{
avio_skip(pb, MTV_AUDIO_PADDING_SIZE);