avio_wb32(pb, 0);
ffio_wfourcc(pb, "vpcC");
- avio_wb32(pb, 0); /* version & flags */
+ avio_w8(pb, 1); /* version */
+ avio_wb24(pb, 0); /* flags */
ff_isom_write_vpcc(s, pb, track->par);
return update_size(pb, pos);
}
return rate;
}
+static int defined_frame_rate(AVFormatContext *s, AVStream *st)
+{
+ AVRational rational_framerate = find_fps(s, st);
+ int rate = 0;
+ if (rational_framerate.den != 0)
+ rate = av_q2d(rational_framerate);
+ return rate;
+}
+
static int mov_get_mpeg2_xdcam_codec_tag(AVFormatContext *s, MOVTrack *track)
{
int tag = track->par->codec_tag;
int interlaced = track->par->field_order > AV_FIELD_PROGRESSIVE;
AVStream *st = track->st;
- int rate = av_q2d(find_fps(s, st));
+ int rate = defined_frame_rate(s, st);
if (!tag)
tag = MKTAG('m', '2', 'v', '1'); //fallback tag
int tag = track->par->codec_tag;
int interlaced = track->par->field_order > AV_FIELD_PROGRESSIVE;
AVStream *st = track->st;
- int rate = av_q2d(find_fps(s, st));
+ int rate = defined_frame_rate(s, st);
if (!tag)
tag = MKTAG('a', 'v', 'c', 'i'); //fallback tag
} else if (track->par->codec_id == AV_CODEC_ID_MPEG2VIDEO && xdcam_res) {
int interlaced = track->par->field_order > AV_FIELD_PROGRESSIVE;
AVStream *st = track->st;
- int rate = av_q2d(find_fps(NULL, st));
+ int rate = defined_frame_rate(NULL, st);
av_strlcatf(compressor_name, len, "XDCAM");
if (track->par->format == AV_PIX_FMT_YUV422P) {
av_strlcatf(compressor_name, len, " HD422");
av_log(s, AV_LOG_ERROR, "VP9 only supported in MP4.\n");
return AVERROR(EINVAL);
}
- if (s->strict_std_compliance > FF_COMPLIANCE_EXPERIMENTAL) {
- av_log(s, AV_LOG_ERROR,
- "VP9 in MP4 support is experimental, add "
- "'-strict %d' if you want to use it.\n",
- FF_COMPLIANCE_EXPERIMENTAL);
- return AVERROR_EXPERIMENTAL;
- }
}
} else if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) {
track->timescale = st->codecpar->sample_rate;