rendered paste body/* SMPTE 421M Table 7 */
static const struct
{
gint par_n, par_d;
} aspect_ratios[] = {
{
0, 0}, {
1, 1}, {
12, 11}, {
10, 11}, {
16, 11}, {
40, 33}, {
24, 11}, {
20, 11}, {
32, 11}, {
80, 33}, {
18, 11}, {
15, 11}, {
64, 33}, {
160, 99}, {
0, 0}, {
0, 0}
};
/* SMPTE 421M Table 8 */
static const guint framerates_n[] = {
0,
24 * 1000,
25 * 1000,
30 * 1000,
50 * 1000,
60 * 1000,
48 * 1000,
72 * 1000
};
/* SMPTE 421M Table 9 */
static const guint framerates_d[] = {
0,
1000,
1001
};
if (vc1parse->seq_hdr.advanced.display_ext) {
/* Only update PAR if not from input caps */
if (!vc1parse->par_from_caps
&& vc1parse->seq_hdr.advanced.aspect_ratio_flag) {
gint par_n, par_d;
if (vc1parse->seq_hdr.advanced.aspect_ratio == 15) {
par_n = vc1parse->seq_hdr.advanced.aspect_horiz_size;
par_d = vc1parse->seq_hdr.advanced.aspect_vert_size;
} else {
par_n = aspect_ratios[vc1parse->seq_hdr.advanced.aspect_ratio].par_n;
par_d = aspect_ratios[vc1parse->seq_hdr.advanced.aspect_ratio].par_d;
}
if (par_n != 0 && par_d != 0 &&
(vc1parse->par_d == 0
|| gst_util_fraction_compare (par_n, par_d, vc1parse->par_n,
vc1parse->par_d) != 0)) {
vc1parse->update_caps = TRUE;
vc1parse->par_n = par_n;
vc1parse->par_d = par_d;
}
}
if (!vc1parse->fps_from_caps && vc1parse->seq_hdr.advanced.framerate_flag) {
gint fps_n = 0, fps_d = 0;
if (!vc1parse->seq_hdr.advanced.framerateind) {
if (vc1parse->seq_hdr.advanced.frameratenr > 0 &&
vc1parse->seq_hdr.advanced.frameratenr < 8 &&
vc1parse->seq_hdr.advanced.frameratedr > 0 &&
vc1parse->seq_hdr.advanced.frameratedr < 3) {
fps_n = framerates_n[vc1parse->seq_hdr.advanced.frameratenr];
fps_d = framerates_d[vc1parse->seq_hdr.advanced.frameratedr];
}
} else {
fps_n = vc1parse->seq_hdr.advanced.framerateexp + 1;
fps_d = 32;
}
if (fps_n != 0 && fps_d != 0 &&
(vc1parse->fps_d == 0
|| gst_util_fraction_compare (fps_n, fps_d, vc1parse->fps_n,
vc1parse->fps_d) != 0)) {
vc1parse->update_caps = TRUE;
vc1parse->fps_n = fps;
vc1parse->fps_d = 1;
}
}
}