mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-03-29 12:25:37 +00:00
omxh264dec: implement is_format_change
The omxvideodecoder class only checks some of the caps parameters but if other fields change such as h264 profile and/or level it wouldn't trigger a reconfiguration. https://bugzilla.gnome.org/show_bug.cgi?id=752376
This commit is contained in:
parent
d2df0fb032
commit
e0327521f6
1 changed files with 25 additions and 0 deletions
|
@ -83,6 +83,31 @@ static gboolean
|
|||
gst_omx_h264_dec_is_format_change (GstOMXVideoDec * dec,
|
||||
GstOMXPort * port, GstVideoCodecState * state)
|
||||
{
|
||||
GstCaps *old_caps = NULL;
|
||||
GstCaps *new_caps = state->caps;
|
||||
GstStructure *old_structure, *new_structure;
|
||||
const gchar *old_profile, *old_level, *new_profile, *new_level;
|
||||
|
||||
if (dec->input_state) {
|
||||
old_caps = dec->input_state->caps;
|
||||
}
|
||||
|
||||
if (!old_caps) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
old_structure = gst_caps_get_structure (old_caps, 0);
|
||||
new_structure = gst_caps_get_structure (new_caps, 0);
|
||||
old_profile = gst_structure_get_string (old_structure, "profile");
|
||||
old_level = gst_structure_get_string (old_structure, "level");
|
||||
new_profile = gst_structure_get_string (new_structure, "profile");
|
||||
new_level = gst_structure_get_string (new_structure, "level");
|
||||
|
||||
if (g_strcmp0 (old_profile, new_profile) != 0
|
||||
|| g_strcmp0 (old_level, new_level) != 0) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue