best_fps_d = fps_d;
}
}
+ mix->output_geo_changed = TRUE;
GST_OBJECT_UNLOCK (vagg);
if (best_fps_n <= 0 || best_fps_d <= 0 || best_fps == 0.0) {
}
s = gst_caps_get_structure (ret, 0);
- gst_structure_fixate_field_nearest_int (s, "width", best_width);
- gst_structure_fixate_field_nearest_int (s, "height", best_height);
- gst_structure_fixate_field_nearest_fraction (s, "framerate", best_fps_n,
- best_fps_d);
+ if (!gst_structure_fixate_field_nearest_int (s, "width", best_width))
+ gst_structure_set (s, "width", G_TYPE_INT, best_width, NULL);
+ if (!gst_structure_fixate_field_nearest_int (s, "height", best_height))
+ gst_structure_set (s, "height", G_TYPE_INT, best_height, NULL);
+ if (!gst_structure_fixate_field_nearest_fraction (s, "framerate", best_fps_n,
+ best_fps_d))
+ gst_structure_set (s, "framerate", GST_TYPE_FRACTION, best_fps_n,
+ best_fps_d, NULL);
ret = gst_caps_fixate (ret);
return ret;
_init_vbo_indices (video_mixer);
- if (pad->geometry_change || !pad->vertex_buffer) {
+ if (video_mixer->output_geo_changed || pad->geometry_change
+ || !pad->vertex_buffer) {
gint pad_width, pad_height;
gfloat w, h;
walk = g_list_next (walk);
}
+ video_mixer->output_geo_changed = FALSE;
GST_OBJECT_UNLOCK (video_mixer);
gl->DisableVertexAttribArray (attr_position_loc);